@flux-lang/cli-core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/add.d.ts +18 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +49 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/check.d.ts +15 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +40 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/common.d.ts +6 -0
- package/dist/commands/common.d.ts.map +1 -0
- package/dist/commands/common.js +35 -0
- package/dist/commands/common.js.map +1 -0
- package/dist/commands/config.d.ts +19 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +21 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/format.d.ts +9 -0
- package/dist/commands/format.d.ts.map +1 -0
- package/dist/commands/format.js +23 -0
- package/dist/commands/format.js.map +1 -0
- package/dist/commands/new.d.ts +24 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +93 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/parse.d.ts +20 -0
- package/dist/commands/parse.d.ts.map +1 -0
- package/dist/commands/parse.js +37 -0
- package/dist/commands/parse.js.map +1 -0
- package/dist/commands/pdf.d.ts +13 -0
- package/dist/commands/pdf.d.ts.map +1 -0
- package/dist/commands/pdf.js +53 -0
- package/dist/commands/pdf.js.map +1 -0
- package/dist/commands/render.d.ts +14 -0
- package/dist/commands/render.d.ts.map +1 -0
- package/dist/commands/render.js +40 -0
- package/dist/commands/render.js.map +1 -0
- package/dist/commands/step.d.ts +12 -0
- package/dist/commands/step.d.ts.map +1 -0
- package/dist/commands/step.js +29 -0
- package/dist/commands/step.js.map +1 -0
- package/dist/commands/tick.d.ts +12 -0
- package/dist/commands/tick.d.ts.map +1 -0
- package/dist/commands/tick.js +31 -0
- package/dist/commands/tick.js.map +1 -0
- package/dist/commands/view.d.ts +18 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +28 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/config.d.ts +37 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +76 -0
- package/dist/config.js.map +1 -0
- package/dist/file-indexer.d.ts +29 -0
- package/dist/file-indexer.d.ts.map +1 -0
- package/dist/file-indexer.js +59 -0
- package/dist/file-indexer.js.map +1 -0
- package/dist/fs.d.ts +10 -0
- package/dist/fs.d.ts.map +1 -0
- package/dist/fs.js +57 -0
- package/dist/fs.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/last-used-dir.d.ts +9 -0
- package/dist/last-used-dir.d.ts.map +1 -0
- package/dist/last-used-dir.js +23 -0
- package/dist/last-used-dir.js.map +1 -0
- package/dist/new/templates.d.ts +28 -0
- package/dist/new/templates.d.ts.map +1 -0
- package/dist/new/templates.js +679 -0
- package/dist/new/templates.js.map +1 -0
- package/dist/pinned.d.ts +12 -0
- package/dist/pinned.d.ts.map +1 -0
- package/dist/pinned.js +45 -0
- package/dist/pinned.js.map +1 -0
- package/dist/recents.d.ts +13 -0
- package/dist/recents.d.ts.map +1 -0
- package/dist/recents.js +27 -0
- package/dist/recents.js.map +1 -0
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/viewer/manager.d.ts +55 -0
- package/dist/viewer/manager.d.ts.map +1 -0
- package/dist/viewer/manager.js +182 -0
- package/dist/viewer/manager.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { renderDocumentIR } from "@flux-lang/core";
|
|
3
|
+
import { errorResult, okResult } from "../types.js";
|
|
4
|
+
import { formatIoError, formatParseOrLexerError, parseFlux, readSource } from "./common.js";
|
|
5
|
+
export async function renderCommand(options) {
|
|
6
|
+
const file = options.file;
|
|
7
|
+
if (!file) {
|
|
8
|
+
return errorResult("flux render: No input file specified.", "NO_INPUT");
|
|
9
|
+
}
|
|
10
|
+
const format = options.format ?? "ir";
|
|
11
|
+
if (format !== "ir") {
|
|
12
|
+
return errorResult(`flux render: Unsupported format '${format}'.`, "UNSUPPORTED_FORMAT");
|
|
13
|
+
}
|
|
14
|
+
let source;
|
|
15
|
+
try {
|
|
16
|
+
source = await readSource(file);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
return errorResult(formatIoError(file, error), "READ_ERROR", error);
|
|
20
|
+
}
|
|
21
|
+
let doc;
|
|
22
|
+
try {
|
|
23
|
+
doc = parseFlux(source, file);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return errorResult(formatParseOrLexerError(file, error), "PARSE_ERROR", error);
|
|
27
|
+
}
|
|
28
|
+
if (!doc.meta?.target) {
|
|
29
|
+
doc = { ...doc, meta: { ...doc.meta, target: "print" } };
|
|
30
|
+
}
|
|
31
|
+
const dir = file === "-" ? process.cwd() : path.dirname(path.resolve(file));
|
|
32
|
+
const rendered = renderDocumentIR(doc, {
|
|
33
|
+
seed: options.seed,
|
|
34
|
+
time: options.time,
|
|
35
|
+
docstep: options.docstep,
|
|
36
|
+
assetCwd: dir,
|
|
37
|
+
});
|
|
38
|
+
return okResult({ rendered });
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAyB,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAc5F,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,WAAW,CAAC,uCAAuC,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;IACtC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,oCAAoC,MAAM,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,GAAiB,CAAC;IACtB,IAAI,CAAC;QACH,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACtB,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE;QACrC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,GAAG;KACd,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RenderDocumentIR } from "@flux-lang/core";
|
|
2
|
+
import { type CommandResult } from "../types.js";
|
|
3
|
+
export interface StepOptions {
|
|
4
|
+
file: string;
|
|
5
|
+
steps?: number;
|
|
6
|
+
seed?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface StepData {
|
|
9
|
+
rendered: RenderDocumentIR;
|
|
10
|
+
}
|
|
11
|
+
export declare function stepCommand(options: StepOptions): Promise<CommandResult<StepData>>;
|
|
12
|
+
//# sourceMappingURL=step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/commands/step.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGxE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAwBxF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { createDocumentRuntimeIR } from "@flux-lang/core";
|
|
3
|
+
import { errorResult, okResult } from "../types.js";
|
|
4
|
+
import { formatIoError, formatParseOrLexerError, parseFlux, readSource } from "./common.js";
|
|
5
|
+
export async function stepCommand(options) {
|
|
6
|
+
if (!options.file) {
|
|
7
|
+
return errorResult("flux step: No input file specified.", "NO_INPUT");
|
|
8
|
+
}
|
|
9
|
+
const count = options.steps ?? 1;
|
|
10
|
+
let source;
|
|
11
|
+
try {
|
|
12
|
+
source = await readSource(options.file);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
return errorResult(formatIoError(options.file, error), "READ_ERROR", error);
|
|
16
|
+
}
|
|
17
|
+
let doc;
|
|
18
|
+
try {
|
|
19
|
+
doc = parseFlux(source, options.file);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
return errorResult(formatParseOrLexerError(options.file, error), "PARSE_ERROR", error);
|
|
23
|
+
}
|
|
24
|
+
const dir = options.file === "-" ? process.cwd() : path.dirname(path.resolve(options.file));
|
|
25
|
+
const runtime = createDocumentRuntimeIR(doc, { seed: options.seed, assetCwd: dir });
|
|
26
|
+
const rendered = runtime.step(count);
|
|
27
|
+
return okResult({ rendered });
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../src/commands/step.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAY5F,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,WAAW,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IAEjC,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,GAAiB,CAAC;IACtB,IAAI,CAAC;QACH,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RenderDocumentIR } from "@flux-lang/core";
|
|
2
|
+
import { type CommandResult } from "../types.js";
|
|
3
|
+
export interface TickOptions {
|
|
4
|
+
file: string;
|
|
5
|
+
seconds: number;
|
|
6
|
+
seed?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface TickData {
|
|
9
|
+
rendered: RenderDocumentIR;
|
|
10
|
+
}
|
|
11
|
+
export declare function tickCommand(options: TickOptions): Promise<CommandResult<TickData>>;
|
|
12
|
+
//# sourceMappingURL=tick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tick.d.ts","sourceRoot":"","sources":["../../src/commands/tick.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGxE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CA0BxF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { createDocumentRuntimeIR } from "@flux-lang/core";
|
|
3
|
+
import { errorResult, okResult } from "../types.js";
|
|
4
|
+
import { formatIoError, formatParseOrLexerError, parseFlux, readSource } from "./common.js";
|
|
5
|
+
export async function tickCommand(options) {
|
|
6
|
+
if (!options.file) {
|
|
7
|
+
return errorResult("flux tick: No input file specified.", "NO_INPUT");
|
|
8
|
+
}
|
|
9
|
+
if (!Number.isFinite(options.seconds)) {
|
|
10
|
+
return errorResult("flux tick: --seconds is required.", "MISSING_SECONDS");
|
|
11
|
+
}
|
|
12
|
+
let source;
|
|
13
|
+
try {
|
|
14
|
+
source = await readSource(options.file);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
return errorResult(formatIoError(options.file, error), "READ_ERROR", error);
|
|
18
|
+
}
|
|
19
|
+
let doc;
|
|
20
|
+
try {
|
|
21
|
+
doc = parseFlux(source, options.file);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return errorResult(formatParseOrLexerError(options.file, error), "PARSE_ERROR", error);
|
|
25
|
+
}
|
|
26
|
+
const dir = options.file === "-" ? process.cwd() : path.dirname(path.resolve(options.file));
|
|
27
|
+
const runtime = createDocumentRuntimeIR(doc, { seed: options.seed, assetCwd: dir });
|
|
28
|
+
const rendered = runtime.tick(options.seconds);
|
|
29
|
+
return okResult({ rendered });
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=tick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tick.js","sourceRoot":"","sources":["../../src/commands/tick.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAY5F,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,WAAW,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,WAAW,CAAC,mCAAmC,EAAE,iBAAiB,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,GAAiB,CAAC;IACtB,IAAI,CAAC;QACH,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type CommandResult } from "../types.js";
|
|
2
|
+
import { type ViewerSession } from "../viewer/manager.js";
|
|
3
|
+
export interface ViewOptions {
|
|
4
|
+
cwd: string;
|
|
5
|
+
docPath: string;
|
|
6
|
+
port?: number;
|
|
7
|
+
docstepMs?: number;
|
|
8
|
+
seed?: number;
|
|
9
|
+
allowNet?: string[];
|
|
10
|
+
advanceTime?: boolean;
|
|
11
|
+
timeRate?: number;
|
|
12
|
+
editorDist?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ViewData {
|
|
15
|
+
session: ViewerSession;
|
|
16
|
+
}
|
|
17
|
+
export declare function viewCommand(options: ViewOptions): Promise<CommandResult<ViewData>>;
|
|
18
|
+
//# sourceMappingURL=view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAwBxF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { errorResult, okResult } from "../types.js";
|
|
2
|
+
import { attachOrStartViewer } from "../viewer/manager.js";
|
|
3
|
+
export async function viewCommand(options) {
|
|
4
|
+
if (!options.docPath) {
|
|
5
|
+
return errorResult("flux view: No input file specified.", "NO_INPUT");
|
|
6
|
+
}
|
|
7
|
+
if (options.docPath === "-") {
|
|
8
|
+
return errorResult("flux view: stdin input is not supported for the web viewer.", "STDIN_UNSUPPORTED");
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
const session = await attachOrStartViewer({
|
|
12
|
+
cwd: options.cwd,
|
|
13
|
+
docPath: options.docPath,
|
|
14
|
+
port: options.port,
|
|
15
|
+
docstepMs: options.docstepMs,
|
|
16
|
+
seed: options.seed,
|
|
17
|
+
allowNet: options.allowNet,
|
|
18
|
+
advanceTime: options.advanceTime,
|
|
19
|
+
timeRate: options.timeRate,
|
|
20
|
+
editorDist: options.editorDist,
|
|
21
|
+
});
|
|
22
|
+
return okResult({ session });
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
return errorResult(`flux view: ${String(error?.message ?? error)}`, "VIEW_ERROR", error);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,sBAAsB,CAAC;AAkB/E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,WAAW,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;QAC5B,OAAO,WAAW,CAAC,6DAA6D,EAAE,mBAAmB,CAAC,CAAC;IACzG,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;YACxC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,cAAc,MAAM,CAAE,KAAe,EAAE,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IACtG,CAAC;AACH,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type PageSizeOption = "Letter" | "A4";
|
|
2
|
+
export type ThemeOption = "print" | "screen" | "both";
|
|
3
|
+
export type FontsPreset = "tech" | "bookish";
|
|
4
|
+
export type FontFallbackOption = "system" | "none";
|
|
5
|
+
export interface FluxConfig {
|
|
6
|
+
docstepMs: number;
|
|
7
|
+
advanceTime: boolean;
|
|
8
|
+
defaultPageSize: PageSizeOption;
|
|
9
|
+
defaultTheme: ThemeOption;
|
|
10
|
+
defaultFonts: FontsPreset;
|
|
11
|
+
defaultOutputDir: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const DEFAULT_CONFIG: FluxConfig;
|
|
14
|
+
export interface LoadedConfig {
|
|
15
|
+
config: FluxConfig;
|
|
16
|
+
filePath: string | null;
|
|
17
|
+
exists: boolean;
|
|
18
|
+
repoRoot: string | null;
|
|
19
|
+
}
|
|
20
|
+
export interface ResolveConfigOptions {
|
|
21
|
+
cwd: string;
|
|
22
|
+
flags?: Partial<FluxConfig>;
|
|
23
|
+
env?: Record<string, string | undefined>;
|
|
24
|
+
}
|
|
25
|
+
export declare function loadConfigFile(cwd: string): Promise<LoadedConfig>;
|
|
26
|
+
export declare function applyEnvConfig(config: FluxConfig, env: Record<string, string | undefined>): FluxConfig;
|
|
27
|
+
export declare function applyFlagConfig(config: FluxConfig, flags: Partial<FluxConfig>): FluxConfig;
|
|
28
|
+
export declare function resolveConfig(options: ResolveConfigOptions): Promise<LoadedConfig>;
|
|
29
|
+
export interface SetConfigResult {
|
|
30
|
+
ok: boolean;
|
|
31
|
+
message?: string;
|
|
32
|
+
configPath?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function setConfigValue(cwd: string, key: keyof FluxConfig, value: FluxConfig[keyof FluxConfig], options?: {
|
|
35
|
+
init?: boolean;
|
|
36
|
+
}): Promise<SetConfigResult>;
|
|
37
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,IAAI,CAAC;AAC7C,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAC7C,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,cAAc,CAAC;IAChC,YAAY,EAAE,WAAW,CAAC;IAC1B,YAAY,EAAE,WAAW,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,EAAE,UAO5B,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAYvE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,UAAU,CA2BtG;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAE1F;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAKxF;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,UAAU,EACrB,KAAK,EAAE,UAAU,CAAC,MAAM,UAAU,CAAC,EACnC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,eAAe,CAAC,CAY1B"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { findGitRoot, pathExists, readJsonFile, writeJsonFile } from "./fs.js";
|
|
3
|
+
export const DEFAULT_CONFIG = {
|
|
4
|
+
docstepMs: 1000,
|
|
5
|
+
advanceTime: true,
|
|
6
|
+
defaultPageSize: "Letter",
|
|
7
|
+
defaultTheme: "screen",
|
|
8
|
+
defaultFonts: "tech",
|
|
9
|
+
defaultOutputDir: ".",
|
|
10
|
+
};
|
|
11
|
+
export async function loadConfigFile(cwd) {
|
|
12
|
+
const repoRoot = await findGitRoot(cwd);
|
|
13
|
+
if (!repoRoot) {
|
|
14
|
+
return { config: { ...DEFAULT_CONFIG }, filePath: null, exists: false, repoRoot: null };
|
|
15
|
+
}
|
|
16
|
+
const filePath = path.join(repoRoot, "flux.config.json");
|
|
17
|
+
const exists = await pathExists(filePath);
|
|
18
|
+
if (!exists) {
|
|
19
|
+
return { config: { ...DEFAULT_CONFIG }, filePath, exists: false, repoRoot };
|
|
20
|
+
}
|
|
21
|
+
const fileConfig = (await readJsonFile(filePath)) ?? {};
|
|
22
|
+
return { config: { ...DEFAULT_CONFIG, ...fileConfig }, filePath, exists: true, repoRoot };
|
|
23
|
+
}
|
|
24
|
+
export function applyEnvConfig(config, env) {
|
|
25
|
+
const next = { ...config };
|
|
26
|
+
if (env.FLUX_DOCSTEP_MS) {
|
|
27
|
+
const parsed = Number(env.FLUX_DOCSTEP_MS);
|
|
28
|
+
if (Number.isFinite(parsed))
|
|
29
|
+
next.docstepMs = parsed;
|
|
30
|
+
}
|
|
31
|
+
if (env.FLUX_ADVANCE_TIME) {
|
|
32
|
+
next.advanceTime = env.FLUX_ADVANCE_TIME !== "0" && env.FLUX_ADVANCE_TIME !== "false";
|
|
33
|
+
}
|
|
34
|
+
if (env.FLUX_DEFAULT_PAGE) {
|
|
35
|
+
const page = env.FLUX_DEFAULT_PAGE === "A4" ? "A4" : "Letter";
|
|
36
|
+
next.defaultPageSize = page;
|
|
37
|
+
}
|
|
38
|
+
if (env.FLUX_DEFAULT_THEME) {
|
|
39
|
+
const theme = env.FLUX_DEFAULT_THEME;
|
|
40
|
+
if (theme === "print" || theme === "screen" || theme === "both") {
|
|
41
|
+
next.defaultTheme = theme;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (env.FLUX_DEFAULT_FONTS) {
|
|
45
|
+
const fonts = env.FLUX_DEFAULT_FONTS;
|
|
46
|
+
if (fonts === "tech" || fonts === "bookish")
|
|
47
|
+
next.defaultFonts = fonts;
|
|
48
|
+
}
|
|
49
|
+
if (env.FLUX_DEFAULT_OUTPUT_DIR) {
|
|
50
|
+
next.defaultOutputDir = env.FLUX_DEFAULT_OUTPUT_DIR;
|
|
51
|
+
}
|
|
52
|
+
return next;
|
|
53
|
+
}
|
|
54
|
+
export function applyFlagConfig(config, flags) {
|
|
55
|
+
return { ...config, ...flags };
|
|
56
|
+
}
|
|
57
|
+
export async function resolveConfig(options) {
|
|
58
|
+
const { config: base, filePath, exists, repoRoot } = await loadConfigFile(options.cwd);
|
|
59
|
+
const withEnv = applyEnvConfig(base, options.env ?? {});
|
|
60
|
+
const withFlags = applyFlagConfig(withEnv, options.flags ?? {});
|
|
61
|
+
return { config: withFlags, filePath, exists, repoRoot };
|
|
62
|
+
}
|
|
63
|
+
export async function setConfigValue(cwd, key, value, options = {}) {
|
|
64
|
+
const { filePath, exists, repoRoot } = await loadConfigFile(cwd);
|
|
65
|
+
if (!filePath || !repoRoot) {
|
|
66
|
+
return { ok: false, message: "No git repository found; cannot write flux.config.json" };
|
|
67
|
+
}
|
|
68
|
+
if (!exists && !options.init) {
|
|
69
|
+
return { ok: false, message: "flux.config.json does not exist; pass --init to create it" };
|
|
70
|
+
}
|
|
71
|
+
const current = exists ? (await readJsonFile(filePath)) ?? {} : {};
|
|
72
|
+
const next = { ...current, [key]: value };
|
|
73
|
+
await writeJsonFile(filePath, next);
|
|
74
|
+
return { ok: true, configPath: filePath, message: "config updated" };
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type DirentLike = {
|
|
2
|
+
name: string;
|
|
3
|
+
isDirectory(): boolean;
|
|
4
|
+
isFile(): boolean;
|
|
5
|
+
};
|
|
6
|
+
export type WalkFilesOptions = {
|
|
7
|
+
root: string;
|
|
8
|
+
maxDepth: number;
|
|
9
|
+
readdir?: (dir: string) => Promise<DirentLike[]>;
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
yieldEvery?: number;
|
|
12
|
+
shouldEnterDir?: (dirPath: string, dirent: DirentLike) => boolean;
|
|
13
|
+
includeFile?: (filePath: string, dirent: DirentLike) => boolean;
|
|
14
|
+
};
|
|
15
|
+
export declare function walkFilesFromFs(options: WalkFilesOptions): AsyncGenerator<string>;
|
|
16
|
+
export type FileIndexEvent = {
|
|
17
|
+
type: "file";
|
|
18
|
+
path: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: "done";
|
|
21
|
+
indexed: number;
|
|
22
|
+
truncated: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare function indexFiles(options: {
|
|
25
|
+
walker: AsyncIterable<string>;
|
|
26
|
+
maxFiles: number;
|
|
27
|
+
signal?: AbortSignal;
|
|
28
|
+
}): AsyncGenerator<FileIndexEvent>;
|
|
29
|
+
//# sourceMappingURL=file-indexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-indexer.d.ts","sourceRoot":"","sources":["../src/file-indexer.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,IAAI,OAAO,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC;IAClE,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC;CACjE,CAAC;AAEF,wBAAuB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CA4CxF;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1D,wBAAuB,UAAU,CAAC,OAAO,EAAE;IACzC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,cAAc,CAAC,cAAc,CAAC,CAgBjC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export async function* walkFilesFromFs(options) {
|
|
4
|
+
const { root, maxDepth, readdir = (dir) => fs.readdir(dir, { withFileTypes: true, encoding: "utf8" }), signal, yieldEvery = 200, shouldEnterDir, includeFile, } = options;
|
|
5
|
+
const queue = [{ dir: path.resolve(root), depth: maxDepth }];
|
|
6
|
+
let seen = 0;
|
|
7
|
+
while (queue.length > 0) {
|
|
8
|
+
if (signal?.aborted)
|
|
9
|
+
return;
|
|
10
|
+
const next = queue.shift();
|
|
11
|
+
if (!next)
|
|
12
|
+
break;
|
|
13
|
+
if (next.depth < 0)
|
|
14
|
+
continue;
|
|
15
|
+
let entries;
|
|
16
|
+
try {
|
|
17
|
+
entries = await readdir(next.dir);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
for (const entry of entries) {
|
|
23
|
+
if (signal?.aborted)
|
|
24
|
+
return;
|
|
25
|
+
const full = path.join(next.dir, entry.name);
|
|
26
|
+
if (entry.isDirectory()) {
|
|
27
|
+
const allow = shouldEnterDir ? shouldEnterDir(full, entry) : true;
|
|
28
|
+
if (allow)
|
|
29
|
+
queue.push({ dir: full, depth: next.depth - 1 });
|
|
30
|
+
}
|
|
31
|
+
else if (entry.isFile()) {
|
|
32
|
+
if (!includeFile || includeFile(full, entry)) {
|
|
33
|
+
yield full;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
seen += 1;
|
|
37
|
+
if (yieldEvery > 0 && seen % yieldEvery === 0) {
|
|
38
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export async function* indexFiles(options) {
|
|
44
|
+
const { walker, maxFiles, signal } = options;
|
|
45
|
+
let indexed = 0;
|
|
46
|
+
let truncated = false;
|
|
47
|
+
for await (const file of walker) {
|
|
48
|
+
if (signal?.aborted)
|
|
49
|
+
break;
|
|
50
|
+
if (indexed >= maxFiles) {
|
|
51
|
+
truncated = true;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
indexed += 1;
|
|
55
|
+
yield { type: "file", path: file };
|
|
56
|
+
}
|
|
57
|
+
yield { type: "done", indexed, truncated };
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=file-indexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-indexer.js","sourceRoot":"","sources":["../src/file-indexer.ts"],"names":[],"mappings":"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"}
|
package/dist/fs.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function readFileText(filePath: string): Promise<string>;
|
|
2
|
+
export declare function writeFileText(filePath: string, text: string): Promise<void>;
|
|
3
|
+
export declare function readJsonFile<T>(filePath: string): Promise<T | null>;
|
|
4
|
+
export declare function writeJsonFile<T>(filePath: string, value: T): Promise<void>;
|
|
5
|
+
export declare function pathExists(filePath: string): Promise<boolean>;
|
|
6
|
+
export declare function findGitRoot(startDir: string): Promise<string | null>;
|
|
7
|
+
export declare function ensureDir(dir: string): Promise<void>;
|
|
8
|
+
export declare function repoStatePath(repoRoot: string): string;
|
|
9
|
+
export declare function fallbackStatePath(cwd: string): string;
|
|
10
|
+
//# sourceMappingURL=fs.d.ts.map
|
package/dist/fs.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEpE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjF;AAED,wBAAsB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAQzE;AAED,wBAAsB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhF;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAY1E;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD"}
|
package/dist/fs.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export async function readFileText(filePath) {
|
|
4
|
+
return fs.readFile(filePath, "utf8");
|
|
5
|
+
}
|
|
6
|
+
export async function writeFileText(filePath, text) {
|
|
7
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
8
|
+
await fs.writeFile(filePath, text, "utf8");
|
|
9
|
+
}
|
|
10
|
+
export async function readJsonFile(filePath) {
|
|
11
|
+
try {
|
|
12
|
+
const raw = await fs.readFile(filePath, "utf8");
|
|
13
|
+
return JSON.parse(raw);
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
if (err.code === "ENOENT")
|
|
17
|
+
return null;
|
|
18
|
+
throw err;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export async function writeJsonFile(filePath, value) {
|
|
22
|
+
const json = JSON.stringify(value, null, 2) + "\n";
|
|
23
|
+
await writeFileText(filePath, json);
|
|
24
|
+
}
|
|
25
|
+
export async function pathExists(filePath) {
|
|
26
|
+
try {
|
|
27
|
+
await fs.access(filePath);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export async function findGitRoot(startDir) {
|
|
35
|
+
let current = path.resolve(startDir);
|
|
36
|
+
while (true) {
|
|
37
|
+
const gitPath = path.join(current, ".git");
|
|
38
|
+
if (await pathExists(gitPath)) {
|
|
39
|
+
return current;
|
|
40
|
+
}
|
|
41
|
+
const parent = path.dirname(current);
|
|
42
|
+
if (parent === current)
|
|
43
|
+
break;
|
|
44
|
+
current = parent;
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
export async function ensureDir(dir) {
|
|
49
|
+
await fs.mkdir(dir, { recursive: true });
|
|
50
|
+
}
|
|
51
|
+
export function repoStatePath(repoRoot) {
|
|
52
|
+
return path.join(repoRoot, ".git", "flux");
|
|
53
|
+
}
|
|
54
|
+
export function fallbackStatePath(cwd) {
|
|
55
|
+
return path.join(cwd, ".flux");
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=fs.js.map
|
package/dist/fs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAY;IAChE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,QAAgB;IACpD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,QAAgB,EAAE,KAAQ;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACnD,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM;QAC9B,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from "./types.js";
|
|
2
|
+
export * from "./config.js";
|
|
3
|
+
export * from "./recents.js";
|
|
4
|
+
export * from "./pinned.js";
|
|
5
|
+
export * from "./last-used-dir.js";
|
|
6
|
+
export * from "./file-indexer.js";
|
|
7
|
+
export * from "./commands/parse.js";
|
|
8
|
+
export * from "./commands/check.js";
|
|
9
|
+
export * from "./commands/render.js";
|
|
10
|
+
export * from "./commands/tick.js";
|
|
11
|
+
export * from "./commands/step.js";
|
|
12
|
+
export * from "./commands/view.js";
|
|
13
|
+
export * from "./commands/pdf.js";
|
|
14
|
+
export * from "./commands/format.js";
|
|
15
|
+
export * from "./commands/config.js";
|
|
16
|
+
export * from "./commands/new.js";
|
|
17
|
+
export * from "./commands/add.js";
|
|
18
|
+
export * from "./viewer/manager.js";
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from "./types.js";
|
|
2
|
+
export * from "./config.js";
|
|
3
|
+
export * from "./recents.js";
|
|
4
|
+
export * from "./pinned.js";
|
|
5
|
+
export * from "./last-used-dir.js";
|
|
6
|
+
export * from "./file-indexer.js";
|
|
7
|
+
export * from "./commands/parse.js";
|
|
8
|
+
export * from "./commands/check.js";
|
|
9
|
+
export * from "./commands/render.js";
|
|
10
|
+
export * from "./commands/tick.js";
|
|
11
|
+
export * from "./commands/step.js";
|
|
12
|
+
export * from "./commands/view.js";
|
|
13
|
+
export * from "./commands/pdf.js";
|
|
14
|
+
export * from "./commands/format.js";
|
|
15
|
+
export * from "./commands/config.js";
|
|
16
|
+
export * from "./commands/new.js";
|
|
17
|
+
export * from "./commands/add.js";
|
|
18
|
+
export * from "./viewer/manager.js";
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface LastUsedDirStore {
|
|
2
|
+
dir: string | null;
|
|
3
|
+
storePath: string;
|
|
4
|
+
repoRoot: string | null;
|
|
5
|
+
fallback: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function getLastUsedDirStore(cwd: string): Promise<LastUsedDirStore>;
|
|
8
|
+
export declare function setLastUsedDir(cwd: string, dir: string): Promise<LastUsedDirStore>;
|
|
9
|
+
//# sourceMappingURL=last-used-dir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"last-used-dir.d.ts","sourceRoot":"","sources":["../src/last-used-dir.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAYhF;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAMxF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { ensureDir, fallbackStatePath, findGitRoot, readJsonFile, repoStatePath, writeJsonFile } from "./fs.js";
|
|
3
|
+
export async function getLastUsedDirStore(cwd) {
|
|
4
|
+
const repoRoot = await findGitRoot(cwd);
|
|
5
|
+
const baseDir = repoRoot ? repoStatePath(repoRoot) : fallbackStatePath(cwd);
|
|
6
|
+
const storePath = path.join(baseDir, "last-used-dir.json");
|
|
7
|
+
const raw = await readJsonFile(storePath);
|
|
8
|
+
const dir = typeof raw === "string" ? raw : raw?.dir ?? null;
|
|
9
|
+
return {
|
|
10
|
+
dir: dir ? path.resolve(dir) : null,
|
|
11
|
+
storePath,
|
|
12
|
+
repoRoot,
|
|
13
|
+
fallback: !repoRoot,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export async function setLastUsedDir(cwd, dir) {
|
|
17
|
+
const store = await getLastUsedDirStore(cwd);
|
|
18
|
+
const normalized = path.resolve(dir);
|
|
19
|
+
await ensureDir(path.dirname(store.storePath));
|
|
20
|
+
await writeJsonFile(store.storePath, { dir: normalized });
|
|
21
|
+
return { ...store, dir: normalized };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=last-used-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"last-used-dir.js","sourceRoot":"","sources":["../src/last-used-dir.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAShH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW;IACnD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,YAAY,CAA4B,SAAS,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC;IAC7D,OAAO;QACL,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;QACnC,SAAS;QACT,QAAQ;QACR,QAAQ,EAAE,CAAC,QAAQ;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,GAAW;IAC3D,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/C,MAAM,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AACvC,CAAC"}
|