faf-cli 4.3.2 → 4.4.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/cli.d.ts.map +1 -1
- package/dist/cli.js +25 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/compile.d.ts +19 -0
- package/dist/commands/compile.d.ts.map +1 -0
- package/dist/commands/compile.js +114 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/decompile.d.ts +13 -0
- package/dist/commands/decompile.d.ts.map +1 -0
- package/dist/commands/decompile.js +77 -0
- package/dist/commands/decompile.js.map +1 -0
- package/dist/core-extraction-fixes.d.ts +92 -0
- package/dist/core-extraction-fixes.d.ts.map +1 -0
- package/dist/core-extraction-fixes.js +261 -0
- package/dist/core-extraction-fixes.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +36 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/fafb-compiler.d.ts +61 -0
- package/dist/utils/fafb-compiler.d.ts.map +1 -0
- package/dist/utils/fafb-compiler.js +260 -0
- package/dist/utils/fafb-compiler.js.map +1 -0
- package/dist/utils/fafb-detector.d.ts +26 -0
- package/dist/utils/fafb-detector.d.ts.map +1 -0
- package/dist/utils/fafb-detector.js +180 -0
- package/dist/utils/fafb-detector.js.map +1 -0
- package/package.json +4 -4
- package/project.faf +4 -4
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🏁 PREVENTIVE FIXES for @faf/core Extraction
|
|
4
|
+
* These adapters prevent breakage BEFORE we extract
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.ScoreCache = exports.ScoreCommand = exports.ChalkFormatter = exports.PlainFormatter = exports.FafContext = void 0;
|
|
41
|
+
exports.calculateFafScoreOLD = calculateFafScoreOLD;
|
|
42
|
+
exports.calculateScorePure = calculateScorePure;
|
|
43
|
+
exports.calculateScoreCLI = calculateScoreCLI;
|
|
44
|
+
exports.parseFafCore = parseFafCore;
|
|
45
|
+
exports.parseFafCLI = parseFafCLI;
|
|
46
|
+
exports.validateFaf = validateFaf;
|
|
47
|
+
exports.getDefaultFafPath = getDefaultFafPath;
|
|
48
|
+
exports.getCachedScore = getCachedScore;
|
|
49
|
+
// ===============================================
|
|
50
|
+
// PROBLEM 1: Score calculation uses file I/O
|
|
51
|
+
// WHY IT BREAKS: calculateFafScore() reads files directly
|
|
52
|
+
// FIX: Create pure function that takes data, not paths
|
|
53
|
+
// ===============================================
|
|
54
|
+
const fs = __importStar(require("fs/promises"));
|
|
55
|
+
const path = __importStar(require("path"));
|
|
56
|
+
const colors_1 = require("./fix-once/colors");
|
|
57
|
+
const YAML = __importStar(require("yaml"));
|
|
58
|
+
// OLD WAY (will break in core):
|
|
59
|
+
async function calculateFafScoreOLD(fafPath) {
|
|
60
|
+
const content = await fs.readFile(fafPath, 'utf-8'); // ❌ File I/O
|
|
61
|
+
console.log(colors_1.chalk.cyan('Calculating...')); // ❌ Console output
|
|
62
|
+
const homeDir = process.env.HOME; // ❌ Environment dependency
|
|
63
|
+
// ... calculation
|
|
64
|
+
}
|
|
65
|
+
function calculateScorePure(input) {
|
|
66
|
+
// Pure calculation - no I/O, no console, no env
|
|
67
|
+
let score = 0;
|
|
68
|
+
// Handle null/undefined input
|
|
69
|
+
if (!input || !input.fafData) {
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
if (input.fafData.version)
|
|
73
|
+
score += 10;
|
|
74
|
+
if (input.fafData.project?.name)
|
|
75
|
+
score += 10;
|
|
76
|
+
if (input.fafData.project?.description)
|
|
77
|
+
score += 15;
|
|
78
|
+
if (input.projectStats?.hasTests)
|
|
79
|
+
score += 20;
|
|
80
|
+
return Math.min(score, 100);
|
|
81
|
+
}
|
|
82
|
+
// CLI Adapter (stays in CLI package):
|
|
83
|
+
async function calculateScoreCLI(fafPath) {
|
|
84
|
+
// CLI handles all I/O
|
|
85
|
+
const content = await fs.readFile(fafPath, 'utf-8');
|
|
86
|
+
const fafData = parseFaf(content);
|
|
87
|
+
// CLI handles console output
|
|
88
|
+
console.log(colors_1.chalk.cyan('Calculating score...'));
|
|
89
|
+
// Call pure function
|
|
90
|
+
const score = calculateScorePure({ fafData });
|
|
91
|
+
// CLI handles display
|
|
92
|
+
console.log(colors_1.chalk.green(`Score: ${score}%`));
|
|
93
|
+
return score;
|
|
94
|
+
}
|
|
95
|
+
// ===============================================
|
|
96
|
+
// PROBLEM 2: findFafFile() will break imports
|
|
97
|
+
// WHY: Deep imports like require('faf-cli/dist/utils/file-utils')
|
|
98
|
+
// FIX: Create public API surface
|
|
99
|
+
// ===============================================
|
|
100
|
+
// Before extraction - add to src/index.ts:
|
|
101
|
+
// export { findFafFile } from './utils/file-utils';
|
|
102
|
+
// export { calculateFafScore } from './scoring/score-calculator';
|
|
103
|
+
// export { FafData, ProjectInfo } from './schema/faf-schema';
|
|
104
|
+
// So users can migrate from:
|
|
105
|
+
// const { findFafFile } = require('faf-cli/dist/utils/file-utils');
|
|
106
|
+
// To:
|
|
107
|
+
// const { findFafFile } = require('faf-cli');
|
|
108
|
+
// ===============================================
|
|
109
|
+
// PROBLEM 3: Commands will lose shared context
|
|
110
|
+
// WHY: They share state through imports
|
|
111
|
+
// FIX: Create context manager
|
|
112
|
+
// ===============================================
|
|
113
|
+
class FafContext {
|
|
114
|
+
static instance;
|
|
115
|
+
fafPath;
|
|
116
|
+
fafData;
|
|
117
|
+
score;
|
|
118
|
+
static getInstance() {
|
|
119
|
+
if (!this.instance) {
|
|
120
|
+
this.instance = new FafContext();
|
|
121
|
+
}
|
|
122
|
+
return this.instance;
|
|
123
|
+
}
|
|
124
|
+
// Shared state that commands need
|
|
125
|
+
setCurrentFaf(path, data) {
|
|
126
|
+
this.fafPath = path;
|
|
127
|
+
this.fafData = data;
|
|
128
|
+
}
|
|
129
|
+
getCachedScore() {
|
|
130
|
+
return this.score;
|
|
131
|
+
}
|
|
132
|
+
setCachedScore(score) {
|
|
133
|
+
this.score = score;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
exports.FafContext = FafContext;
|
|
137
|
+
// Core version (no chalk):
|
|
138
|
+
function parseFafCore(content) {
|
|
139
|
+
try {
|
|
140
|
+
const data = YAML.parse(content);
|
|
141
|
+
return { success: true, data };
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
145
|
+
return {
|
|
146
|
+
success: false,
|
|
147
|
+
error: {
|
|
148
|
+
code: 'INVALID_YAML',
|
|
149
|
+
line: extractLineNumber(error),
|
|
150
|
+
message: errorMessage
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// CLI version (with chalk):
|
|
156
|
+
function parseFafCLI(content) {
|
|
157
|
+
const result = parseFafCore(content);
|
|
158
|
+
if (!result.success && result.error) {
|
|
159
|
+
const errorMsg = result.error.line
|
|
160
|
+
? colors_1.chalk.red(`❌ Invalid YAML at line ${result.error.line}`)
|
|
161
|
+
: colors_1.chalk.red(`❌ Invalid YAML: ${result.error.message}`);
|
|
162
|
+
throw new Error(errorMsg);
|
|
163
|
+
}
|
|
164
|
+
return result.data;
|
|
165
|
+
}
|
|
166
|
+
// Core version (no formatting):
|
|
167
|
+
class PlainFormatter {
|
|
168
|
+
success(msg) { return `✓ ${msg}`; }
|
|
169
|
+
error(msg) { return `✗ ${msg}`; }
|
|
170
|
+
info(msg) { return `ℹ ${msg}`; }
|
|
171
|
+
}
|
|
172
|
+
exports.PlainFormatter = PlainFormatter;
|
|
173
|
+
// CLI version (with chalk):
|
|
174
|
+
class ChalkFormatter {
|
|
175
|
+
success(msg) { return colors_1.chalk.green(`✓ ${msg}`); }
|
|
176
|
+
error(msg) { return colors_1.chalk.red(`✗ ${msg}`); }
|
|
177
|
+
info(msg) { return colors_1.chalk.cyan(`ℹ ${msg}`); }
|
|
178
|
+
}
|
|
179
|
+
exports.ChalkFormatter = ChalkFormatter;
|
|
180
|
+
// Injectable formatting:
|
|
181
|
+
function validateFaf(data, formatter = new PlainFormatter()) {
|
|
182
|
+
if (!data.version) {
|
|
183
|
+
return formatter.error('Missing version field');
|
|
184
|
+
}
|
|
185
|
+
return formatter.success('Valid .faf file');
|
|
186
|
+
}
|
|
187
|
+
// ===============================================
|
|
188
|
+
// PROBLEM 7: Path resolution will break
|
|
189
|
+
// WHY: Core can't use process.cwd() or __dirname
|
|
190
|
+
// FIX: Pass paths explicitly
|
|
191
|
+
// ===============================================
|
|
192
|
+
// OLD (breaks in core):
|
|
193
|
+
function getDefaultFafPathOLD() {
|
|
194
|
+
return path.join(process.cwd(), '.faf'); // ❌ process.cwd()
|
|
195
|
+
}
|
|
196
|
+
// NEW (extraction-ready):
|
|
197
|
+
function getDefaultFafPath(projectDir) {
|
|
198
|
+
return path.join(projectDir, '.faf'); // ✅ Explicit path
|
|
199
|
+
}
|
|
200
|
+
// Commands depend on interfaces, not implementations
|
|
201
|
+
class ScoreCommand {
|
|
202
|
+
scoreProvider;
|
|
203
|
+
fileProvider;
|
|
204
|
+
constructor(scoreProvider, fileProvider) {
|
|
205
|
+
this.scoreProvider = scoreProvider;
|
|
206
|
+
this.fileProvider = fileProvider;
|
|
207
|
+
}
|
|
208
|
+
async execute(filePath) {
|
|
209
|
+
const fafPath = filePath || await this.fileProvider.findFaf('.');
|
|
210
|
+
if (!fafPath) {
|
|
211
|
+
throw new Error('No .faf file found');
|
|
212
|
+
}
|
|
213
|
+
const data = await this.fileProvider.readFaf(fafPath);
|
|
214
|
+
return this.scoreProvider.calculateScore(data);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
exports.ScoreCommand = ScoreCommand;
|
|
218
|
+
// ===============================================
|
|
219
|
+
// PROBLEM 9: Global state in utilities
|
|
220
|
+
// WHY: Some utils use module-level variables
|
|
221
|
+
// FIX: Make everything functional or class-based
|
|
222
|
+
// ===============================================
|
|
223
|
+
// OLD (stateful):
|
|
224
|
+
let cachedScore = null;
|
|
225
|
+
function getCachedScore() {
|
|
226
|
+
return cachedScore; // ❌ Global state
|
|
227
|
+
}
|
|
228
|
+
// NEW (stateless):
|
|
229
|
+
class ScoreCache {
|
|
230
|
+
cache = new Map();
|
|
231
|
+
get(path) {
|
|
232
|
+
return this.cache.get(path);
|
|
233
|
+
}
|
|
234
|
+
set(path, score) {
|
|
235
|
+
this.cache.set(path, score);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
exports.ScoreCache = ScoreCache;
|
|
239
|
+
// ===============================================
|
|
240
|
+
// PROBLEM 10: Import paths will change
|
|
241
|
+
// WHY: @faf/core vs faf-cli imports
|
|
242
|
+
// FIX: Create compatibility layer
|
|
243
|
+
// ===============================================
|
|
244
|
+
// In faf-cli after extraction, re-export everything:
|
|
245
|
+
// src/compat.ts
|
|
246
|
+
// export * from '@faf/core';
|
|
247
|
+
// export * from '@faf/core/types';
|
|
248
|
+
// Old code can still do:
|
|
249
|
+
// import { FafData } from 'faf-cli/compat';
|
|
250
|
+
// Instead of breaking with:
|
|
251
|
+
// import { FafData } from '@faf/core';
|
|
252
|
+
function extractLineNumber(error) {
|
|
253
|
+
// Extract line number from YAML error
|
|
254
|
+
const match = error.message?.match(/line (\d+)/);
|
|
255
|
+
return match ? parseInt(match[1]) : undefined;
|
|
256
|
+
}
|
|
257
|
+
function parseFaf(content) {
|
|
258
|
+
// Parse YAML content
|
|
259
|
+
return YAML.parse(content);
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=core-extraction-fixes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-extraction-fixes.js","sourceRoot":"","sources":["../src/core-extraction-fixes.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,4 +15,6 @@ export { generateFafFromProject } from './generators/faf-generator-championship'
|
|
|
15
15
|
export { FafCompiler } from './compiler/faf-compiler';
|
|
16
16
|
export type { CompilationResult } from './compiler/faf-compiler';
|
|
17
17
|
export type { FafSchema, ValidationResult } from './schema/faf-schema';
|
|
18
|
+
export type { FafData, ProjectInfo, InstantContext, KeyFileInfo, ScoreInput } from './types';
|
|
19
|
+
export { calculateScorePure, parseFafCore, parseFafCLI, FafContext, PlainFormatter, ChalkFormatter, ScoreCache, ScoreCommand, validateFaf } from './core-extraction-fixes';
|
|
18
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAGjF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGjE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAGjF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGjE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG7F,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Universal AI Context Format Tooling
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.FafCompiler = exports.generateFafFromProject = exports.validateSchema = exports.detectProjectType = exports.findFafFile = exports.lintFafFile = exports.auditFafFile = exports.syncFafFile = exports.scoreFafFile = exports.initFafFile = exports.validateFafFile = exports.program = void 0;
|
|
7
|
+
exports.validateFaf = exports.ScoreCommand = exports.ScoreCache = exports.ChalkFormatter = exports.PlainFormatter = exports.FafContext = exports.parseFafCLI = exports.parseFafCore = exports.calculateScorePure = exports.FafCompiler = exports.generateFafFromProject = exports.validateSchema = exports.detectProjectType = exports.findFafFile = exports.lintFafFile = exports.auditFafFile = exports.syncFafFile = exports.scoreFafFile = exports.initFafFile = exports.validateFafFile = exports.program = void 0;
|
|
8
8
|
// Export main CLI function
|
|
9
9
|
var cli_1 = require("./cli");
|
|
10
10
|
Object.defineProperty(exports, "program", { enumerable: true, get: function () { return cli_1.program; } });
|
|
@@ -32,4 +32,15 @@ Object.defineProperty(exports, "generateFafFromProject", { enumerable: true, get
|
|
|
32
32
|
// Export compiler (Mk3)
|
|
33
33
|
var faf_compiler_1 = require("./compiler/faf-compiler");
|
|
34
34
|
Object.defineProperty(exports, "FafCompiler", { enumerable: true, get: function () { return faf_compiler_1.FafCompiler; } });
|
|
35
|
+
// Export core extraction fixes (for prevention tests)
|
|
36
|
+
var core_extraction_fixes_1 = require("./core-extraction-fixes");
|
|
37
|
+
Object.defineProperty(exports, "calculateScorePure", { enumerable: true, get: function () { return core_extraction_fixes_1.calculateScorePure; } });
|
|
38
|
+
Object.defineProperty(exports, "parseFafCore", { enumerable: true, get: function () { return core_extraction_fixes_1.parseFafCore; } });
|
|
39
|
+
Object.defineProperty(exports, "parseFafCLI", { enumerable: true, get: function () { return core_extraction_fixes_1.parseFafCLI; } });
|
|
40
|
+
Object.defineProperty(exports, "FafContext", { enumerable: true, get: function () { return core_extraction_fixes_1.FafContext; } });
|
|
41
|
+
Object.defineProperty(exports, "PlainFormatter", { enumerable: true, get: function () { return core_extraction_fixes_1.PlainFormatter; } });
|
|
42
|
+
Object.defineProperty(exports, "ChalkFormatter", { enumerable: true, get: function () { return core_extraction_fixes_1.ChalkFormatter; } });
|
|
43
|
+
Object.defineProperty(exports, "ScoreCache", { enumerable: true, get: function () { return core_extraction_fixes_1.ScoreCache; } });
|
|
44
|
+
Object.defineProperty(exports, "ScoreCommand", { enumerable: true, get: function () { return core_extraction_fixes_1.ScoreCommand; } });
|
|
45
|
+
Object.defineProperty(exports, "validateFaf", { enumerable: true, get: function () { return core_extraction_fixes_1.validateFaf; } });
|
|
35
46
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2BAA2B;AAC3B,6BAAgC;AAAvB,8FAAA,OAAO,OAAA;AAEhB,iDAAiD;AACjD,gDAAsD;AAA7C,2GAAA,eAAe,OAAA;AACxB,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,0CAAgD;AAAvC,qGAAA,YAAY,OAAA;AACrB,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,0CAAgD;AAAvC,qGAAA,YAAY,OAAA;AACrB,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AAEpB,mBAAmB;AACnB,iDAAoE;AAA3D,yGAAA,WAAW,OAAA;AAAE,+GAAA,iBAAiB,OAAA;AACvC,kDAAqD;AAA5C,4GAAA,cAAc,OAAA;AACvB,sFAAiF;AAAxE,oIAAA,sBAAsB,OAAA;AAE/B,wBAAwB;AACxB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2BAA2B;AAC3B,6BAAgC;AAAvB,8FAAA,OAAO,OAAA;AAEhB,iDAAiD;AACjD,gDAAsD;AAA7C,2GAAA,eAAe,OAAA;AACxB,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,0CAAgD;AAAvC,qGAAA,YAAY,OAAA;AACrB,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,0CAAgD;AAAvC,qGAAA,YAAY,OAAA;AACrB,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AAEpB,mBAAmB;AACnB,iDAAoE;AAA3D,yGAAA,WAAW,OAAA;AAAE,+GAAA,iBAAiB,OAAA;AACvC,kDAAqD;AAA5C,4GAAA,cAAc,OAAA;AACvB,sFAAiF;AAAxE,oIAAA,sBAAsB,OAAA;AAE/B,wBAAwB;AACxB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AAOpB,sDAAsD;AACtD,iEAUiC;AAT/B,2HAAA,kBAAkB,OAAA;AAClB,qHAAA,YAAY,OAAA;AACZ,oHAAA,WAAW,OAAA;AACX,mHAAA,UAAU,OAAA;AACV,uHAAA,cAAc,OAAA;AACd,uHAAA,cAAc,OAAA;AACd,mHAAA,UAAU,OAAA;AACV,qHAAA,YAAY,OAAA;AACZ,oHAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central type exports for @faf/core extraction
|
|
3
|
+
* All types available from one location
|
|
4
|
+
*/
|
|
5
|
+
export interface FafData {
|
|
6
|
+
version: string;
|
|
7
|
+
project: ProjectInfo;
|
|
8
|
+
instant_context?: InstantContext;
|
|
9
|
+
key_files?: KeyFileInfo[];
|
|
10
|
+
faf_score?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ProjectInfo {
|
|
13
|
+
name: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
type?: string;
|
|
16
|
+
goal?: string;
|
|
17
|
+
main_language?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface InstantContext {
|
|
20
|
+
what_building?: string;
|
|
21
|
+
main_language?: string;
|
|
22
|
+
key_files?: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface KeyFileInfo {
|
|
25
|
+
path: string;
|
|
26
|
+
purpose?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ScoreInput {
|
|
29
|
+
fafData: any;
|
|
30
|
+
projectStats?: {
|
|
31
|
+
fileCount?: number;
|
|
32
|
+
hasTests?: boolean;
|
|
33
|
+
hasCI?: boolean;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,GAAG,CAAC;IACb,YAAY,CAAC,EAAE;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🏎️ FAFb Compiler Wrapper
|
|
3
|
+
* Wraps xai-faf-rust compiler for .faf → .fafb compilation
|
|
4
|
+
*/
|
|
5
|
+
export interface CompileOptions {
|
|
6
|
+
input?: string;
|
|
7
|
+
output?: string;
|
|
8
|
+
verbose?: boolean;
|
|
9
|
+
watch?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface CompileResult {
|
|
12
|
+
success: boolean;
|
|
13
|
+
input: string;
|
|
14
|
+
output: string;
|
|
15
|
+
size: number;
|
|
16
|
+
compressionRatio: number;
|
|
17
|
+
time: number;
|
|
18
|
+
error?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface BenchmarkResult {
|
|
21
|
+
fafParseTime: number;
|
|
22
|
+
fafbParseTime: number;
|
|
23
|
+
speedup: number;
|
|
24
|
+
fafSize: number;
|
|
25
|
+
fafbSize: number;
|
|
26
|
+
compressionRatio: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check if xai-faf-rust compiler is available
|
|
30
|
+
*/
|
|
31
|
+
export declare function checkCompilerAvailable(): Promise<{
|
|
32
|
+
available: boolean;
|
|
33
|
+
path?: string;
|
|
34
|
+
error?: string;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Compile .faf to .fafb
|
|
38
|
+
*/
|
|
39
|
+
export declare function compileFAF(options?: CompileOptions): Promise<CompileResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Decompile .fafb to .faf (for debugging)
|
|
42
|
+
*/
|
|
43
|
+
export declare function decompileFAFb(input: string, output?: string): Promise<CompileResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Benchmark .faf vs .fafb parsing speed
|
|
46
|
+
*/
|
|
47
|
+
export declare function benchmarkParsing(fafPath?: string, fafbPath?: string): Promise<BenchmarkResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Watch .faf file and auto-recompile on changes
|
|
50
|
+
*/
|
|
51
|
+
export declare function watchAndCompile(input: string, output?: string): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Auto-compile after .faf generation
|
|
54
|
+
* Used by init, auto, go, sync commands
|
|
55
|
+
*/
|
|
56
|
+
export declare function autoCompile(fafPath: string, quiet?: boolean): Promise<boolean>;
|
|
57
|
+
/**
|
|
58
|
+
* Detect if file is .faf or .fafb
|
|
59
|
+
*/
|
|
60
|
+
export declare function detectFormat(filePath: string): Promise<'faf' | 'fafb' | 'unknown'>;
|
|
61
|
+
//# sourceMappingURL=fafb-compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fafb-compiler.d.ts","sourceRoot":"","sources":["../../src/utils/fafb-compiler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB7G;AAaD;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAqDrF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAiD1F;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAyBpG;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BnF;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAwB3F;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC,CAuBxF"}
|