fln 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.
Files changed (95) hide show
  1. package/README.md +24 -13
  2. package/dist/api/fln.d.ts +0 -1
  3. package/dist/api/fln.js +5 -3
  4. package/dist/api/index.d.ts +0 -1
  5. package/dist/api/types.d.ts +2 -2
  6. package/dist/cli/commandLine.d.ts +0 -1
  7. package/dist/cli/commandLine.js +6 -4
  8. package/dist/cli/help.d.ts +0 -1
  9. package/dist/cli/help.js +2 -1
  10. package/dist/cli/index.d.ts +2 -2
  11. package/dist/cli/index.js +13 -1
  12. package/dist/cli/output/components/breakdown.d.ts +0 -1
  13. package/dist/cli/output/components/errors.d.ts +0 -1
  14. package/dist/cli/output/components/index.d.ts +5 -0
  15. package/dist/cli/output/components/index.js +5 -0
  16. package/dist/cli/output/components/progressBar.d.ts +0 -1
  17. package/dist/cli/output/components/summary.d.ts +0 -1
  18. package/dist/cli/output/components/warnings.d.ts +0 -1
  19. package/dist/cli/output/formatter.d.ts +0 -1
  20. package/dist/cli/output/index.d.ts +2 -6
  21. package/dist/cli/output/index.js +2 -2
  22. package/dist/cli/output/renderer.d.ts +3 -4
  23. package/dist/cli/output/renderer.js +1 -5
  24. package/dist/cli/output/styles.d.ts +0 -1
  25. package/dist/config/defaults.d.ts +0 -1
  26. package/dist/config/index.d.ts +0 -1
  27. package/dist/config/loader.d.ts +0 -1
  28. package/dist/config/resolver.d.ts +1 -2
  29. package/dist/config/resolver.js +4 -2
  30. package/dist/config/types.d.ts +3 -2
  31. package/dist/config/utils.d.ts +1 -2
  32. package/dist/config/utils.js +7 -5
  33. package/dist/core/ignoreMatcher.d.ts +1 -2
  34. package/dist/core/index.d.ts +0 -1
  35. package/dist/core/renderOutput.d.ts +1 -2
  36. package/dist/core/renderOutput.js +3 -3
  37. package/dist/core/renderTree.d.ts +0 -1
  38. package/dist/core/scanTree.d.ts +1 -2
  39. package/dist/core/scanTree.js +2 -1
  40. package/dist/core/size.d.ts +0 -1
  41. package/dist/core/statsCollector.d.ts +0 -1
  42. package/dist/core/types.d.ts +0 -1
  43. package/dist/index.d.ts +0 -1
  44. package/dist/infra/countTokens.d.ts +0 -1
  45. package/dist/infra/datetime.d.ts +0 -1
  46. package/dist/infra/index.d.ts +0 -1
  47. package/dist/infra/logger.d.ts +1 -2
  48. package/dist/infra/outputWriter.d.ts +0 -1
  49. package/dist/infra/terminal.d.ts +0 -1
  50. package/dist/infra/terminal.js +2 -2
  51. package/dist/infra/usageTracker.d.ts +0 -1
  52. package/dist/version.d.ts +1 -2
  53. package/dist/version.js +1 -1
  54. package/package.json +4 -4
  55. package/dist/api/fln.d.ts.map +0 -1
  56. package/dist/api/index.d.ts.map +0 -1
  57. package/dist/api/types.d.ts.map +0 -1
  58. package/dist/cli/commandLine.d.ts.map +0 -1
  59. package/dist/cli/help.d.ts.map +0 -1
  60. package/dist/cli/index.d.ts.map +0 -1
  61. package/dist/cli/main.d.ts +0 -3
  62. package/dist/cli/main.d.ts.map +0 -1
  63. package/dist/cli/main.js +0 -9
  64. package/dist/cli/output/components/breakdown.d.ts.map +0 -1
  65. package/dist/cli/output/components/errors.d.ts.map +0 -1
  66. package/dist/cli/output/components/progressBar.d.ts.map +0 -1
  67. package/dist/cli/output/components/summary.d.ts.map +0 -1
  68. package/dist/cli/output/components/warnings.d.ts.map +0 -1
  69. package/dist/cli/output/formatter.d.ts.map +0 -1
  70. package/dist/cli/output/index.d.ts.map +0 -1
  71. package/dist/cli/output/renderer.d.ts.map +0 -1
  72. package/dist/cli/output/styles.d.ts.map +0 -1
  73. package/dist/config/defaults.d.ts.map +0 -1
  74. package/dist/config/index.d.ts.map +0 -1
  75. package/dist/config/loader.d.ts.map +0 -1
  76. package/dist/config/resolver.d.ts.map +0 -1
  77. package/dist/config/types.d.ts.map +0 -1
  78. package/dist/config/utils.d.ts.map +0 -1
  79. package/dist/core/ignoreMatcher.d.ts.map +0 -1
  80. package/dist/core/index.d.ts.map +0 -1
  81. package/dist/core/renderOutput.d.ts.map +0 -1
  82. package/dist/core/renderTree.d.ts.map +0 -1
  83. package/dist/core/scanTree.d.ts.map +0 -1
  84. package/dist/core/size.d.ts.map +0 -1
  85. package/dist/core/statsCollector.d.ts.map +0 -1
  86. package/dist/core/types.d.ts.map +0 -1
  87. package/dist/index.d.ts.map +0 -1
  88. package/dist/infra/countTokens.d.ts.map +0 -1
  89. package/dist/infra/datetime.d.ts.map +0 -1
  90. package/dist/infra/index.d.ts.map +0 -1
  91. package/dist/infra/logger.d.ts.map +0 -1
  92. package/dist/infra/outputWriter.d.ts.map +0 -1
  93. package/dist/infra/terminal.d.ts.map +0 -1
  94. package/dist/infra/usageTracker.d.ts.map +0 -1
  95. package/dist/version.d.ts.map +0 -1
package/README.md CHANGED
@@ -20,7 +20,7 @@ npx fln . -o codebase.md
20
20
 
21
21
  Works with **Claude**, **ChatGPT**, **Gemini**, **Grok**, **Cursor**, **Copilot**, and *any* AI tool.
22
22
 
23
- **`fln`** (short for *flatten*) is **language-agnostic** by design: TypeScript, Python, Java, Go, Rust, Bash, SQL, mixed monorepos — it treats everything as plain text, detects project metadata from common manifests (`package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml`, `CMakeLists.txt`, `vcpkg.json`), respects `.gitignore`, and skips binaries by default.
23
+ **`fln`** (short for *flatten*) is **language-agnostic** by design: TypeScript, Python, Java, Go, Rust, Bash, SQL, mixed monorepos — it treats everything as plain text, detects project metadata from common manifests (`package.json`, `pyproject.toml`, `pom.xml`, `go.mod`, `Cargo.toml`, `CMakeLists.txt`, `vcpkg.json`), respects `.gitignore`, and skips binaries by default.
24
24
 
25
25
  ## Why fln exists
26
26
 
@@ -80,17 +80,23 @@ Zero dependencies on external services. Zero tracking. Just a tool that does its
80
80
 
81
81
  ## Install
82
82
 
83
+ ##### npm
83
84
  ```bash
84
- # npm
85
85
  npm install -g fln
86
+ ```
86
87
 
87
- # one-liner (macOS/Linux)
88
- curl -fsSL "https://raw.githubusercontent.com/nesvet/fln/main/install.sh" | sh
88
+ ##### Linux & macOS ([view install script](./install.sh))
89
+ ```bash
90
+ curl -fsSL https://fln.nesvet.dev/install | sh
91
+ ```
89
92
 
90
- # one-liner (Windows)
91
- irm "https://raw.githubusercontent.com/nesvet/fln/main/install.ps1" | iex
93
+ ##### Windows ([view install script](./install.ps1))
94
+ ```bash
95
+ powershell -c "irm fln.nesvet.dev/install.ps1 | iex"
96
+ ```
92
97
 
93
- # or just run without installing
98
+ ##### Or just run without installing
99
+ ```bash
94
100
  npx fln . -o codebase.md
95
101
  ```
96
102
 
@@ -102,7 +108,7 @@ npx fln . -o codebase.md
102
108
  Pin a version or custom install directory:
103
109
 
104
110
  ```bash
105
- curl -fsSL "https://raw.githubusercontent.com/nesvet/fln/main/install.sh" | FLN_VERSION="<version>" INSTALL_DIR="$HOME/.local/bin" sh
111
+ curl -fsSL "https://fln.nesvet.dev/install" | FLN_VERSION="<version>" INSTALL_DIR="$HOME/.local/bin" sh
106
112
  ```
107
113
 
108
114
  ### One-line installer options (Windows PowerShell)
@@ -110,7 +116,7 @@ curl -fsSL "https://raw.githubusercontent.com/nesvet/fln/main/install.sh" | FLN_
110
116
  ```powershell
111
117
  $env:FLN_VERSION = "<version>"
112
118
  $env:INSTALL_DIR = "$env:LOCALAPPDATA\\fln\\bin"
113
- irm "https://raw.githubusercontent.com/nesvet/fln/main/install.ps1" | iex
119
+ powershell -c "irm fln.nesvet.dev/install.ps1 | iex"
114
120
  ```
115
121
 
116
122
  ### Manual download (GitHub Releases)
@@ -118,7 +124,6 @@ irm "https://raw.githubusercontent.com/nesvet/fln/main/install.ps1" | iex
118
124
  ```bash
119
125
  curl -L "https://github.com/nesvet/fln/releases/latest/download/fln-macos-x64.tar.gz" | tar -xz -C /usr/local/bin
120
126
  chmod +x /usr/local/bin/fln
121
- fln --help
122
127
  ```
123
128
 
124
129
  </details>
@@ -146,12 +151,16 @@ fln . --no-contents --format json
146
151
 
147
152
  # Preview without writing
148
153
  fln . --dry-run
154
+
155
+ # Overwrite output file instead of creating codebase-1.md
156
+ fln . -o codebase.md -w
149
157
  ```
150
158
 
151
159
  <details>
152
160
  <summary>All CLI options</summary>
153
161
 
154
162
  - `-o, --output <path>` Output file or directory
163
+ - `-w, --overwrite` Overwrite output file instead of adding numeric suffix
155
164
  - `-e, --exclude <glob>` Exclude patterns (repeatable)
156
165
  - `-i, --include <glob>` Force include patterns
157
166
  - `--include-hidden` Include hidden files and directories
@@ -165,7 +174,7 @@ fln . --dry-run
165
174
  - `--follow-symlinks` Follow symlinks
166
175
  - `--no-ansi` Disable ANSI colors
167
176
  - `--no-sponsor-message` Hide support message (also: `FLN_NO_SPONSOR=1`)
168
- - `--generated-date <date>` Use this date in the "Generated" header (format: `YYYY-MM-DD HH:mm`)
177
+ - `--generated-date <date>` Use this date in the Generated header (format: `YYYY-MM-DD HH:mm`)
169
178
  - `--banner <text>` Add text at the beginning
170
179
  - `--footer <text>` Add text at the end of the output
171
180
  - `-q, --quiet` Minimal output
@@ -204,7 +213,7 @@ jobs:
204
213
 
205
214
  - name: Generate Snapshot
206
215
  # Generates codebase.md without installing fln globally
207
- run: npx fln . -o codebase.md --no-ansi
216
+ run: npx fln . -o codebase.md -w --no-ansi
208
217
 
209
218
  - name: Upload Artifact
210
219
  uses: actions/upload-artifact@v6
@@ -234,6 +243,7 @@ import { fln } from "fln";
234
243
  const result = await fln({
235
244
  rootDirectory: "./src",
236
245
  outputFile: "output.md",
246
+ overwrite: true,
237
247
  excludePatterns: [ "*.test.ts", "fixtures/" ],
238
248
  format: "md",
239
249
  onProgress: (current, total) => {
@@ -257,6 +267,7 @@ All CLI options are available via `FlnOptions`.
257
267
  ```json
258
268
  {
259
269
  "outputFile": "output.md",
270
+ "overwrite": false,
260
271
  "excludePatterns": [
261
272
  "dist/",
262
273
  "**/*.snap"
@@ -282,7 +293,7 @@ All CLI options are available via `FlnOptions`.
282
293
  <details>
283
294
  <summary>Output naming & formats</summary>
284
295
 
285
- - Uses project name + version if available (`package.json`, `pyproject.toml`, `Cargo.toml`, `vcpkg.json`, `go.mod`, or `CMakeLists.txt`)
296
+ - Uses project name + version if available (`package.json`, `pyproject.toml`, `pom.xml`, `go.mod`, `Cargo.toml`, `CMakeLists.txt` or `vcpkg.json`)
286
297
  - `md` includes tree + contents
287
298
  - `json` includes `rootDirectory`, `tree`, `stats`
288
299
 
package/dist/api/fln.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  import type { FlnOptions, FlnResult } from "./types";
2
2
  export declare function fln(options?: FlnOptions): Promise<FlnResult>;
3
- //# sourceMappingURL=fln.d.ts.map
package/dist/api/fln.js CHANGED
@@ -1,17 +1,19 @@
1
1
  import { relative, resolve, sep } from "node:path";
2
- import { parseByteSize, scanTree, writeOutput } from "$core";
3
- import { createLogger } from "$infra";
4
2
  import { defaultConfigFileName, getProjectMetadata, loadConfigFile, normalizeConfigFile, resolveConfig, resolveOutputPath } from "../config";
3
+ import { parseByteSize, scanTree, writeOutput } from "../core";
4
+ import { createLogger } from "../infra";
5
5
  export async function fln(options = {}) {
6
6
  const rootDirectory = resolve(options.rootDirectory ?? process.cwd());
7
7
  const projectMetadata = await getProjectMetadata(rootDirectory);
8
8
  const configFilePath = resolve(rootDirectory, defaultConfigFileName);
9
9
  const fileConfig = normalizeConfigFile(await loadConfigFile(configFilePath));
10
10
  const format = options.format ?? fileConfig.format ?? "md";
11
+ const overwrite = options.overwrite ?? fileConfig.overwrite ?? false;
11
12
  const outputValue = options.outputFile ?? fileConfig.outputFile;
12
- const outputFile = await resolveOutputPath(outputValue ? resolve(outputValue) : undefined, rootDirectory, format);
13
+ const outputFile = await resolveOutputPath(outputValue ? resolve(outputValue) : undefined, rootDirectory, overwrite, format);
13
14
  const userConfig = {
14
15
  outputFile,
16
+ overwrite: options.overwrite,
15
17
  excludePatterns: options.excludePatterns,
16
18
  includePatterns: options.includePatterns,
17
19
  includeHidden: options.includeHidden,
@@ -1,3 +1,2 @@
1
1
  export * from "./fln";
2
2
  export * from "./types";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,8 @@
1
- import type { LogLevel, ProgressCallback } from "$core";
1
+ import type { LogLevel, ProgressCallback } from "../core";
2
2
  export type FlnOptions = {
3
3
  rootDirectory?: string;
4
4
  outputFile?: string;
5
+ overwrite?: boolean;
5
6
  excludePatterns?: string[];
6
7
  includePatterns?: string[];
7
8
  includeHidden?: boolean;
@@ -31,4 +32,3 @@ export type FlnResult = {
31
32
  outputPath: string;
32
33
  _root?: unknown;
33
34
  };
34
- //# sourceMappingURL=types.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare function runCommandLine(): Promise<void>;
2
- //# sourceMappingURL=commandLine.d.ts.map
@@ -1,9 +1,9 @@
1
1
  import { resolve } from "node:path";
2
2
  import { parseArgs } from "node:util";
3
- import { fln } from "$api";
4
- import { collectExtensionStats, collectProcessedFiles, parseByteSize } from "$core";
5
- import { getTerminalInfo, incrementUsageCount, shouldShowSponsorMessage, shouldUseColors } from "$infra";
6
- import { VERSION } from "$version";
3
+ import { fln } from "../api";
4
+ import { collectExtensionStats, collectProcessedFiles, parseByteSize } from "../core";
5
+ import { getTerminalInfo, incrementUsageCount, shouldShowSponsorMessage, shouldUseColors } from "../infra";
6
+ import { VERSION } from "../version";
7
7
  import { formatHelpMessage } from "./help";
8
8
  import { OutputRenderer } from "./output";
9
9
  function isCI() {
@@ -34,6 +34,7 @@ export async function runCommandLine() {
34
34
  "no-tree": { type: "boolean" },
35
35
  format: { type: "string" },
36
36
  "dry-run": { type: "boolean" },
37
+ overwrite: { type: "boolean", short: "w" },
37
38
  quiet: { type: "boolean", short: "q" },
38
39
  verbose: { type: "boolean", short: "V" },
39
40
  debug: { type: "boolean" },
@@ -77,6 +78,7 @@ export async function runCommandLine() {
77
78
  outputFile: isDryRun ?
78
79
  (process.platform === "win32" ? "nul" : "/dev/null") :
79
80
  (values.output ? resolve(values.output) : undefined),
81
+ overwrite: values.overwrite,
80
82
  excludePatterns: values.exclude,
81
83
  includePatterns: values.include,
82
84
  includeHidden: values["include-hidden"],
@@ -1,2 +1 @@
1
1
  export declare function formatHelpMessage(useAnsi: boolean): string;
2
- //# sourceMappingURL=help.d.ts.map
package/dist/cli/help.js CHANGED
@@ -1,4 +1,4 @@
1
- import { applyColor, colors } from "./output/styles";
1
+ import { applyColor, colors } from "./output";
2
2
  export function formatHelpMessage(useAnsi) {
3
3
  const bold = (text) => applyColor(text, colors.bold, useAnsi);
4
4
  const dim = (text) => applyColor(text, colors.dim, useAnsi);
@@ -10,6 +10,7 @@ ${bold("Usage:")} fln ${cyan("[directory]")} ${dim("[...flags]")}
10
10
 
11
11
  ${bold("Options:")}
12
12
  ${cyan("-o, --output")} ${dim("<path>")} Output file or directory path ${dim("(default: <name>-<version>.<ext>)")}
13
+ ${cyan("-w, --overwrite")} Overwrite output file instead of adding numeric suffix
13
14
  ${cyan("-e, --exclude")} ${dim("<glob>")} Exclude patterns ${dim("(repeatable)")}
14
15
  ${cyan("-i, --include")} ${dim("<glob>")} Force include patterns ${dim("(repeatable)")}
15
16
  ${cyan(" --include-hidden")} Include hidden files and directories
@@ -1,2 +1,2 @@
1
- export * from "./commandLine";
2
- //# sourceMappingURL=index.d.ts.map
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/cli/index.js CHANGED
@@ -1 +1,13 @@
1
- export * from "./commandLine";
1
+ #!/usr/bin/env node
2
+ import { runCommandLine } from "./commandLine";
3
+ try {
4
+ await runCommandLine();
5
+ }
6
+ catch (error) {
7
+ console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
8
+ if (process.env.DEBUG && error instanceof Error && error.stack) {
9
+ console.error("\nStack trace:");
10
+ console.error(error.stack);
11
+ }
12
+ process.exit(1);
13
+ }
@@ -1,2 +1 @@
1
1
  export declare function renderBreakdown(stats: Map<string, number>, useColors: boolean): string;
2
- //# sourceMappingURL=breakdown.d.ts.map
@@ -3,4 +3,3 @@ export type FileError = {
3
3
  reason: string;
4
4
  };
5
5
  export declare function renderErrors(errors: FileError[], useColors: boolean, verbose: boolean): string;
6
- //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1,5 @@
1
+ export * from "./breakdown";
2
+ export * from "./errors";
3
+ export * from "./progressBar";
4
+ export * from "./summary";
5
+ export * from "./warnings";
@@ -0,0 +1,5 @@
1
+ export * from "./breakdown";
2
+ export * from "./errors";
3
+ export * from "./progressBar";
4
+ export * from "./summary";
5
+ export * from "./warnings";
@@ -4,4 +4,3 @@ export declare class ProgressBar {
4
4
  increment(message?: string): void;
5
5
  clear(): void;
6
6
  }
7
- //# sourceMappingURL=progressBar.d.ts.map
@@ -5,4 +5,3 @@ export declare function renderSummary(data: {
5
5
  useColors: boolean;
6
6
  verbose?: boolean;
7
7
  }): string;
8
- //# sourceMappingURL=summary.d.ts.map
@@ -3,4 +3,3 @@ export type Warning = {
3
3
  tokens: number;
4
4
  };
5
5
  export declare function renderWarnings(warnings: Warning[], useColors: boolean): string;
6
- //# sourceMappingURL=warnings.d.ts.map
@@ -2,4 +2,3 @@ export declare function formatTime(ms: number): string;
2
2
  export declare function formatTokenCount(tokens: number): string;
3
3
  export declare function formatFileCount(count: number): string;
4
4
  export declare function formatByteSize(bytes: number): string;
5
- //# sourceMappingURL=formatter.d.ts.map
@@ -1,8 +1,4 @@
1
- export type { FileError } from "./components/errors";
2
- export { ProgressBar } from "./components/progressBar";
3
- export type { Warning } from "./components/warnings";
1
+ export * from "./components";
4
2
  export * from "./formatter";
5
- export { OutputRenderer } from "./renderer";
6
- export type { RendererOptions, SuccessData } from "./renderer";
3
+ export * from "./renderer";
7
4
  export * from "./styles";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- export { ProgressBar } from "./components/progressBar";
1
+ export * from "./components";
2
2
  export * from "./formatter";
3
- export { OutputRenderer } from "./renderer";
3
+ export * from "./renderer";
4
4
  export * from "./styles";
@@ -1,6 +1,6 @@
1
- import type { FlnResult } from "$api";
2
- import type { LogLevel } from "$core";
3
- import { ProgressBar } from "./components/progressBar";
1
+ import type { FlnResult } from "../../api";
2
+ import type { LogLevel } from "../../core";
3
+ import { ProgressBar } from "./components";
4
4
  export type RendererOptions = {
5
5
  logLevel: LogLevel;
6
6
  useAnsi: boolean;
@@ -18,4 +18,3 @@ export declare class OutputRenderer {
18
18
  createProgressBar(total: number): ProgressBar;
19
19
  renderSuccess(data: SuccessData): void;
20
20
  }
21
- //# sourceMappingURL=renderer.d.ts.map
@@ -1,8 +1,4 @@
1
- import { renderBreakdown } from "./components/breakdown";
2
- import { renderErrors } from "./components/errors";
3
- import { ProgressBar } from "./components/progressBar";
4
- import { renderSummary } from "./components/summary";
5
- import { renderWarnings } from "./components/warnings";
1
+ import { ProgressBar, renderBreakdown, renderErrors, renderSummary, renderWarnings } from "./components";
6
2
  import { formatTime } from "./formatter";
7
3
  import { applyColor, colors, symbols } from "./styles";
8
4
  export class OutputRenderer {
@@ -20,4 +20,3 @@ export declare const symbols: {
20
20
  readonly barEmpty: "░";
21
21
  };
22
22
  export declare function applyColor(text: number | string, colorFn: StyleFunction, useColors: boolean): string;
23
- //# sourceMappingURL=styles.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export declare const defaultMaximumFileSizeBytes: number;
2
2
  export declare const defaultConfigFileName = ".fln.json";
3
- //# sourceMappingURL=defaults.d.ts.map
@@ -3,4 +3,3 @@ export * from "./loader";
3
3
  export * from "./resolver";
4
4
  export * from "./types";
5
5
  export * from "./utils";
6
- //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,2 @@
1
1
  import type { RawConfigFile } from "./types";
2
2
  export declare function loadConfigFile(configPath: string): Promise<RawConfigFile>;
3
- //# sourceMappingURL=loader.d.ts.map
@@ -1,8 +1,7 @@
1
1
  import type { FlnConfig, RawConfigFile } from "./types";
2
- type ConfigOverrides = Partial<Pick<FlnConfig, "banner" | "excludePatterns" | "followSymlinks" | "footer" | "generatedDate" | "includeContents" | "includeHidden" | "includePatterns" | "includeTree" | "logLevel" | "maximumFileSizeBytes" | "maximumTotalSizeBytes" | "outputFile" | "useAnsi" | "useGitignore">> & Partial<{
2
+ type ConfigOverrides = Partial<Pick<FlnConfig, "banner" | "excludePatterns" | "followSymlinks" | "footer" | "generatedDate" | "includeContents" | "includeHidden" | "includePatterns" | "includeTree" | "logLevel" | "maximumFileSizeBytes" | "maximumTotalSizeBytes" | "outputFile" | "overwrite" | "useAnsi" | "useGitignore">> & Partial<{
3
3
  format: string;
4
4
  }>;
5
5
  export declare function normalizeConfigFile(fileConfig: RawConfigFile): ConfigOverrides;
6
6
  export declare function resolveConfig(rootDirectory: string, fileConfig: ConfigOverrides, userConfig: ConfigOverrides): FlnConfig;
7
7
  export {};
8
- //# sourceMappingURL=resolver.d.ts.map
@@ -1,5 +1,5 @@
1
- import { parseByteSize } from "$core";
2
- import { parseGeneratedDate } from "$infra";
1
+ import { parseByteSize } from "../core";
2
+ import { parseGeneratedDate } from "../infra";
3
3
  import { defaultMaximumFileSizeBytes } from "./defaults";
4
4
  function parseOptionalSize(value) {
5
5
  if (value === undefined)
@@ -15,6 +15,7 @@ function getDefaultOutputFile(format) {
15
15
  export function normalizeConfigFile(fileConfig) {
16
16
  return {
17
17
  outputFile: fileConfig.outputFile,
18
+ overwrite: fileConfig.overwrite,
18
19
  excludePatterns: fileConfig.excludePatterns,
19
20
  includePatterns: fileConfig.includePatterns,
20
21
  includeHidden: fileConfig.includeHidden,
@@ -40,6 +41,7 @@ export function resolveConfig(rootDirectory, fileConfig, userConfig) {
40
41
  return {
41
42
  rootDirectory,
42
43
  outputFile,
44
+ overwrite: userConfig.overwrite ?? fileConfig.overwrite ?? false,
43
45
  excludePatterns: [
44
46
  ...(fileConfig.excludePatterns ?? []),
45
47
  ...(userConfig.excludePatterns ?? [])
@@ -1,6 +1,7 @@
1
- import type { LogLevel, OutputFormat } from "$core";
1
+ import type { LogLevel, OutputFormat } from "../core";
2
2
  export type RawConfigFile = Partial<{
3
3
  outputFile: string;
4
+ overwrite: boolean;
4
5
  excludePatterns: string[];
5
6
  includePatterns: string[];
6
7
  includeHidden: boolean;
@@ -20,6 +21,7 @@ export type RawConfigFile = Partial<{
20
21
  export type FlnConfig = {
21
22
  rootDirectory: string;
22
23
  outputFile: string;
24
+ overwrite: boolean;
23
25
  excludePatterns: string[];
24
26
  includePatterns: string[];
25
27
  excludedPaths: string[];
@@ -37,4 +39,3 @@ export type FlnConfig = {
37
39
  banner?: string;
38
40
  footer?: string;
39
41
  };
40
- //# sourceMappingURL=types.d.ts.map
@@ -3,5 +3,4 @@ export declare function getProjectMetadata(rootDirectory: string): Promise<{
3
3
  name: string;
4
4
  version?: string;
5
5
  }>;
6
- export declare function resolveOutputPath(outputValue: string | undefined, rootDirectory: string, format: "json" | "md"): Promise<string>;
7
- //# sourceMappingURL=utils.d.ts.map
6
+ export declare function resolveOutputPath(outputValue: string | undefined, rootDirectory: string, overwrite: boolean, format: "json" | "md"): Promise<string>;
@@ -128,7 +128,9 @@ async function tryStat(pathValue) {
128
128
  return undefined;
129
129
  }
130
130
  }
131
- async function resolveUniquePath(filePath) {
131
+ async function resolveUniquePath(filePath, overwrite) {
132
+ if (overwrite)
133
+ return filePath;
132
134
  const existingStats = await tryStat(filePath);
133
135
  if (!existingStats)
134
136
  return filePath;
@@ -142,20 +144,20 @@ async function resolveUniquePath(filePath) {
142
144
  counter += 1;
143
145
  }
144
146
  }
145
- export async function resolveOutputPath(outputValue, rootDirectory, format) {
147
+ export async function resolveOutputPath(outputValue, rootDirectory, overwrite, format) {
146
148
  const projectMeta = await getProjectMetadata(rootDirectory);
147
149
  const baseFileName = projectMeta.version ?
148
150
  `${projectMeta.name}-${projectMeta.version}.${format}` :
149
151
  `${projectMeta.name}.${format}`;
150
152
  if (!outputValue)
151
- return await resolveUniquePath(join(rootDirectory, baseFileName));
153
+ return await resolveUniquePath(join(rootDirectory, baseFileName), overwrite);
152
154
  if (outputValue === "/dev/null" || outputValue === "nul")
153
155
  return outputValue;
154
156
  const hasTrailingSeparator = /[/\\]+$/.test(outputValue);
155
157
  const outputStats = await tryStat(outputValue);
156
158
  if (hasTrailingSeparator || outputStats?.isDirectory()) {
157
159
  const filePath = join(outputValue, baseFileName);
158
- return await resolveUniquePath(filePath);
160
+ return await resolveUniquePath(filePath, overwrite);
159
161
  }
160
- return await resolveUniquePath(outputValue);
162
+ return await resolveUniquePath(outputValue, overwrite);
161
163
  }
@@ -1,4 +1,4 @@
1
- import type { Logger } from "$infra";
1
+ import type { Logger } from "../infra";
2
2
  type IgnoreMatcherOptions = {
3
3
  rootDirectory: string;
4
4
  excludePatterns: string[];
@@ -12,4 +12,3 @@ export declare class IgnoreMatcher {
12
12
  addGitignoreForDirectory(directoryPath: string): Promise<void>;
13
13
  }
14
14
  export {};
15
- //# sourceMappingURL=ignoreMatcher.d.ts.map
@@ -5,4 +5,3 @@ export * from "./scanTree";
5
5
  export * from "./size";
6
6
  export * from "./statsCollector";
7
7
  export * from "./types";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,3 @@
1
- import type { FlnConfig } from "$config";
1
+ import type { FlnConfig } from "../config";
2
2
  import type { ScanResult } from "./types";
3
3
  export declare function writeOutput(result: ScanResult, config: FlnConfig): Promise<void>;
4
- //# sourceMappingURL=renderOutput.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import { createReadStream } from "node:fs";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { extname, join } from "node:path";
4
- import { createOutputWriter, formatDateTime } from "$infra";
5
- import { VERSION } from "$version";
4
+ import { createOutputWriter, formatDateTime } from "../infra";
5
+ import { VERSION } from "../version";
6
6
  import { renderTree } from "./renderTree";
7
7
  import { formatByteSize } from "./size";
8
8
  function getLanguageFromFilename(fileName) {
@@ -75,7 +75,7 @@ async function writeMarkdown(result, config) {
75
75
  await writer.writeLine("");
76
76
  await writer.writeLine(`# Codebase Snapshot: ${result.projectName}`);
77
77
  await writer.writeLine("");
78
- await writer.writeLine(`Generated: ${config.generatedDate ?? formatDateTime()}`);
78
+ await writer.writeLine(`Generated: ${config.generatedDate ?? formatDateTime()} `);
79
79
  await writer.writeLine(`Files: ${result.stats.files} | Directories: ${result.stats.directories}`);
80
80
  await writer.writeLine("");
81
81
  await writer.writeLine("---");
@@ -1,3 +1,2 @@
1
1
  import type { FileNode } from "./types";
2
2
  export declare function renderTree(root: FileNode): string;
3
- //# sourceMappingURL=renderTree.d.ts.map
@@ -1,4 +1,3 @@
1
- import type { Logger } from "$infra";
1
+ import type { Logger } from "../infra";
2
2
  import type { ScanOptions, ScanResult } from "./types";
3
3
  export declare function scanTree(options: ScanOptions, logger: Logger): Promise<ScanResult>;
4
- //# sourceMappingURL=scanTree.d.ts.map
@@ -129,7 +129,8 @@ export async function scanTree(options, logger) {
129
129
  if (normalizedRelativePath !== "" && excludedPathSet.has(normalizedRelativePath))
130
130
  return undefined;
131
131
  const isExplicitlyIncluded = normalizedRelativePath !== "" && includeMatcher.ignores(normalizedRelativePath);
132
- if (!isExplicitlyIncluded && normalizedRelativePath !== "" && ignoreMatcher.ignores(normalizedRelativePath))
132
+ const pathForIgnoreCheck = normalizedRelativePath === "" ? "" : (dirent?.isDirectory() ? `${normalizedRelativePath}/` : normalizedRelativePath);
133
+ if (!isExplicitlyIncluded && pathForIgnoreCheck !== "" && ignoreMatcher.ignores(pathForIgnoreCheck))
133
134
  return undefined;
134
135
  if (!options.includeHidden && name.startsWith(".") && name !== ".")
135
136
  return undefined;
@@ -1,4 +1,3 @@
1
1
  export declare function parseByteSize(input: string): number;
2
2
  export declare function formatByteSize(sizeBytes: number): string;
3
3
  export declare function formatTokenCount(count: number): string;
4
- //# sourceMappingURL=size.d.ts.map
@@ -1,4 +1,3 @@
1
1
  import type { FileNode } from "./types";
2
2
  export declare function collectExtensionStats(root: FileNode): Map<string, number>;
3
3
  export declare function collectProcessedFiles(root: FileNode): string[];
4
- //# sourceMappingURL=statsCollector.d.ts.map
@@ -50,4 +50,3 @@ export type RenderOptions = {
50
50
  banner?: string;
51
51
  footer?: string;
52
52
  };
53
- //# sourceMappingURL=types.d.ts.map
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export * from "./api";
2
2
  export * from "./core";
3
3
  export * from "./version";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare function countTokens(text: string): number;
2
- //# sourceMappingURL=countTokens.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export declare function formatDateTime(): string;
2
2
  export declare function parseGeneratedDate(value: string): string;
3
- //# sourceMappingURL=datetime.d.ts.map
@@ -4,4 +4,3 @@ export * from "./logger";
4
4
  export * from "./outputWriter";
5
5
  export * from "./terminal";
6
6
  export * from "./usageTracker";
7
- //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { LogLevel } from "$core";
1
+ import type { LogLevel } from "../core";
2
2
  type LoggerOptions = {
3
3
  useAnsi: boolean;
4
4
  logLevel: LogLevel;
@@ -16,4 +16,3 @@ export type Logger = {
16
16
  };
17
17
  export declare function createLogger(options: LoggerOptions): Logger;
18
18
  export {};
19
- //# sourceMappingURL=logger.d.ts.map
@@ -12,4 +12,3 @@ type OutputWriter = {
12
12
  };
13
13
  export declare function createOutputWriter(outputFile: string, maxSizeBytes?: number): Promise<OutputWriter>;
14
14
  export {};
15
- //# sourceMappingURL=outputWriter.d.ts.map
@@ -88,4 +88,3 @@ export type ProgressRenderer = {
88
88
  };
89
89
  export declare function createProgressRenderer(label: string, useAnsi: boolean, isQuiet: boolean): ProgressRenderer;
90
90
  export {};
91
- //# sourceMappingURL=terminal.d.ts.map
@@ -1,13 +1,13 @@
1
1
  export function getTerminalInfo() {
2
2
  const width = process.stdout.columns || 80;
3
- const supportsAnsi = process.stdout.isTTY && process.env.TERM !== "dumb";
3
+ const supportsAnsi = process.stdout.isTTY && !process.env.NO_COLOR && process.env.TERM !== "dumb";
4
4
  return { width, supportsAnsi };
5
5
  }
6
6
  export function isTTY() {
7
7
  return Boolean(process.stdout.isTTY);
8
8
  }
9
9
  export function shouldUseColors() {
10
- return isTTY() && process.env.NO_COLOR !== "1" && process.env.TERM !== "dumb";
10
+ return isTTY() && !process.env.NO_COLOR && process.env.TERM !== "dumb";
11
11
  }
12
12
  export const ansi = {
13
13
  cursorHide: "\x1B[?25l",
@@ -1,3 +1,2 @@
1
1
  export declare function incrementUsageCount(): Promise<number>;
2
2
  export declare function shouldShowSponsorMessage(runCount: number): boolean;
3
- //# sourceMappingURL=usageTracker.d.ts.map
package/dist/version.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare const VERSION = "1.0.0";
2
- //# sourceMappingURL=version.d.ts.map
1
+ export declare const VERSION = "1.1.2";
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const VERSION = "1.0.0";
1
+ export const VERSION = "1.1.2";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fln",
3
- "version": "1.0.0",
3
+ "version": "1.1.2",
4
4
  "description": "Feed your entire codebase to any LLM in one shot. No attachment limits, no upload hassles.",
5
5
  "keywords": [
6
6
  "cli",
@@ -40,18 +40,18 @@
40
40
  "main": "./dist/index.js",
41
41
  "types": "./dist/index.d.ts",
42
42
  "bin": {
43
- "fln": "./dist/cli/main.js"
43
+ "fln": "./dist/cli/index.js"
44
44
  },
45
45
  "files": [
46
46
  "dist"
47
47
  ],
48
48
  "scripts": {
49
49
  "prebuild": "bun run generate:version",
50
- "build": "bun build --compile --minify --sourcemap ./src/cli/main.ts --outfile fln",
50
+ "build": "bun build --compile --minify --sourcemap ./src/cli/index.ts --outfile fln",
51
51
  "prebuild:npm": "bun run generate:version",
52
52
  "build:npm": "tsc -p tsconfig.build.json",
53
53
  "clean": "rm -rf fln dist",
54
- "dev": "bun run src/cli/main.ts",
54
+ "dev": "bun run src/cli/index.ts",
55
55
  "generate:examples": "bun run scripts/generate-examples.ts",
56
56
  "generate:version": "bun run scripts/generate-version.ts",
57
57
  "install:system": "bun run build && echo 'Requesting sudo to move binary to /usr/local/bin...' && sudo mv ./fln /usr/local/bin/fln && echo 'Installed successfully. Run \"fln --help\" to test.'",
@@ -1 +0,0 @@
1
- {"version":3,"file":"fln.d.ts","sourceRoot":"","sources":["../../src/api/fln.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAuBrD,wBAAsB,GAAG,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAsFtE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAMxD,MAAM,MAAM,UAAU,GAAG;IAKxB,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,UAAU,CAAC,EAAE,MAAM,CAAC;IAMpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAM3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAM3B,aAAa,CAAC,EAAE,OAAO,CAAC;IAMxB,YAAY,CAAC,EAAE,OAAO,CAAC;IAMvB,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAMvC,qBAAqB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAMxC,eAAe,CAAC,EAAE,OAAO,CAAC;IAM1B,WAAW,CAAC,EAAE,OAAO,CAAC;IAMtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAMvB,cAAc,CAAC,EAAE,OAAO,CAAC;IAKzB,aAAa,CAAC,EAAE,MAAM,CAAC;IAKvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAKhB,MAAM,CAAC,EAAE,MAAM,CAAC;IAOhB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAM9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACpB,CAAC;AAKF,MAAM,MAAM,SAAS,GAAG;IAIvB,WAAW,EAAE,MAAM,CAAC;IAKpB,KAAK,EAAE,MAAM,CAAC;IAKd,WAAW,EAAE,MAAM,CAAC;IAKpB,MAAM,EAAE,MAAM,CAAC;IAKf,OAAO,EAAE,MAAM,CAAC;IAKhB,MAAM,EAAE,MAAM,CAAC;IAKf,cAAc,EAAE,MAAM,CAAC;IAKvB,eAAe,EAAE,MAAM,CAAC;IAKxB,gBAAgB,EAAE,MAAM,CAAC;IAKzB,UAAU,EAAE,MAAM,CAAC;IAMnB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"commandLine.d.ts","sourceRoot":"","sources":["../../src/cli/commandLine.ts"],"names":[],"mappings":"AAwCA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAkHpD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAGA,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAuC1D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":""}
package/dist/cli/main.js DELETED
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env node
2
- import { runCommandLine } from "./commandLine";
3
- try {
4
- await runCommandLine();
5
- }
6
- catch (error) {
7
- console.error(`ERROR ${String(error)}`);
8
- process.exit(1);
9
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"breakdown.d.ts","sourceRoot":"","sources":["../../../../src/cli/output/components/breakdown.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,CAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1B,SAAS,EAAE,OAAO,GAChB,MAAM,CAwBR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/cli/output/components/errors.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,YAAY,CAC3B,MAAM,EAAE,SAAS,EAAE,EACnB,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,OAAO,GACd,MAAM,CAiBR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"progressBar.d.ts","sourceRoot":"","sources":["../../../../src/cli/output/components/progressBar.ts"],"names":[],"mappings":"AAGA,qBAAa,WAAW;;gBAOX,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;IAM7C,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAYjC,KAAK,IAAI,IAAI;CAoCb"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../../src/cli/output/components/summary.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,IAAI,EAAE;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,MAAM,CAWT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../../../src/cli/output/components/warnings.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAY9E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/cli/output/formatter.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAW7C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWpD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/output/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,cAAc,UAAU,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/cli/output/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAOvD,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,qBAAa,cAAc;;gBAId,OAAO,EAAE,eAAe;IAKpC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAI7C,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAsItC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/cli/output/styles.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;AAE9D,eAAO,MAAM,MAAM;;;;;;;;CAQT,CAAC;AAEX,eAAO,MAAM,OAAO;;;;;;;;;;CAUV,CAAC;AAEX,wBAAgB,UAAU,CACzB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,OAAO,GAChB,MAAM,CAKR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,QAAmB,CAAC;AAC5D,eAAO,MAAM,qBAAqB,cAAc,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAS/E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/config/resolver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxD,KAAK,eAAe,GAAG,OAAO,CAAC,IAAI,CAClC,SAAS,EACT,QAAQ,GACR,iBAAiB,GACjB,gBAAgB,GAChB,QAAQ,GACR,eAAe,GACf,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,aAAa,GACb,UAAU,GACV,sBAAsB,GACtB,uBAAuB,GACvB,YAAY,GACZ,SAAS,GACT,cAAc,CACd,CAAC,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAkBjC,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,aAAa,GAAG,eAAe,CAmB9E;AAED,wBAAgB,aAAa,CAC5B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,eAAe,GACzB,SAAS,CAgCX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGpD,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,qBAAqB,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/config/utils.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU3D;AAqCD,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiG3G;AA+BD,wBAAsB,iBAAiB,CACtC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ignoreMatcher.d.ts","sourceRoot":"","sources":["../../src/core/ignoreMatcher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,KAAK,oBAAoB,GAAG;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAmEF,qBAAa,aAAa;;gBAOb,OAAO,EAAE,oBAAoB;IASlC,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAMhC,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA6B3E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderOutput.d.ts","sourceRoot":"","sources":["../../src/core/renderOutput.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,OAAO,KAAK,EAAY,UAAU,EAAE,MAAM,SAAS,CAAC;AAsQpD,wBAAsB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderTree.d.ts","sourceRoot":"","sources":["../../src/core/renderTree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAUxC,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAOjD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"scanTree.d.ts","sourceRoot":"","sources":["../../src/core/scanTree.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAEX,WAAW,EACX,UAAU,EAGV,MAAM,SAAS,CAAC;AAgHjB,wBAAsB,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA4SxF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/core/size.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBnD;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CASxD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"statsCollector.d.ts","sourceRoot":"","sources":["../../src/core/statsCollector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBzE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAkB9D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAEpG,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAExD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjE,MAAM,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"countTokens.d.ts","sourceRoot":"","sources":["../../src/infra/countTokens.ts"],"names":[],"mappings":"AAqEA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuKhD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"datetime.d.ts","sourceRoot":"","sources":["../../src/infra/datetime.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,IAAI,MAAM,CASvC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/infra/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/infra/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAStC,KAAK,aAAa,GAAG;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC;IACzE,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvE,KAAK,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAiH3D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"outputWriter.d.ts","sourceRoot":"","sources":["../../src/infra/outputWriter.ts"],"names":[],"mappings":"AAOA,KAAK,YAAY,GAAG;IACnB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,KAAK,EAAE,MAAM,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE,CAAC;AAEF,wBAAsB,kBAAkB,CACvC,UAAU,EAAE,MAAM,EAClB,YAAY,SAAI,GACd,OAAO,CAAC,YAAY,CAAC,CAoCvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/infra/terminal.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,eAAe,IAAI,YAAY,CAK9C;AAED,wBAAgB,KAAK,IAAI,OAAO,CAE/B;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED,eAAO,MAAM,IAAI;;;sBAGE,MAAM;wBACJ,MAAM;uBACP,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCzB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;CAsBnB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAwBrE;AAED,KAAK,UAAU,GAAG;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CA4CrD;AAMD,MAAM,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAiF1G"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"usageTracker.d.ts","sourceRoot":"","sources":["../../src/infra/usageTracker.ts"],"names":[],"mappings":"AA0CA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAO3D;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAElE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,UAAU,CAAC"}