logicstamp-context 0.2.4 → 0.2.6
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/LLM_CONTEXT.md +2 -2
- package/README.md +28 -19
- package/dist/cli/commands/compare.d.ts.map +1 -1
- package/dist/cli/commands/compare.js +120 -13
- package/dist/cli/commands/compare.js.map +1 -1
- package/dist/cli/commands/context/fileWriter.d.ts.map +1 -1
- package/dist/cli/commands/context/fileWriter.js +68 -6
- package/dist/cli/commands/context/fileWriter.js.map +1 -1
- package/dist/cli/commands/context/tokenEstimator.d.ts.map +1 -1
- package/dist/cli/commands/context/tokenEstimator.js +12 -4
- package/dist/cli/commands/context/tokenEstimator.js.map +1 -1
- package/dist/cli/commands/context.d.ts.map +1 -1
- package/dist/cli/commands/context.js +71 -2
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +84 -8
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/handlers/compareHandler.d.ts.map +1 -1
- package/dist/cli/handlers/compareHandler.js +123 -9
- package/dist/cli/handlers/compareHandler.js.map +1 -1
- package/dist/core/astParser/detectors.d.ts.map +1 -1
- package/dist/core/astParser/detectors.js +130 -57
- package/dist/core/astParser/detectors.js.map +1 -1
- package/dist/core/astParser/extractors/componentExtractor.d.ts.map +1 -1
- package/dist/core/astParser/extractors/componentExtractor.js +89 -20
- package/dist/core/astParser/extractors/componentExtractor.js.map +1 -1
- package/dist/core/astParser/extractors/eventExtractor.d.ts.map +1 -1
- package/dist/core/astParser/extractors/eventExtractor.js +83 -28
- package/dist/core/astParser/extractors/eventExtractor.js.map +1 -1
- package/dist/core/astParser/extractors/propExtractor.d.ts.map +1 -1
- package/dist/core/astParser/extractors/propExtractor.js +142 -51
- package/dist/core/astParser/extractors/propExtractor.js.map +1 -1
- package/dist/core/astParser/extractors/stateExtractor.d.ts.map +1 -1
- package/dist/core/astParser/extractors/stateExtractor.js +95 -44
- package/dist/core/astParser/extractors/stateExtractor.js.map +1 -1
- package/dist/core/astParser.d.ts +4 -1
- package/dist/core/astParser.d.ts.map +1 -1
- package/dist/core/astParser.js +183 -26
- package/dist/core/astParser.js.map +1 -1
- package/dist/core/contractBuilder.d.ts.map +1 -1
- package/dist/core/contractBuilder.js +11 -15
- package/dist/core/contractBuilder.js.map +1 -1
- package/dist/core/manifest.d.ts.map +1 -1
- package/dist/core/manifest.js +82 -4
- package/dist/core/manifest.js.map +1 -1
- package/dist/core/pack/loader.d.ts.map +1 -1
- package/dist/core/pack/loader.js +22 -2
- package/dist/core/pack/loader.js.map +1 -1
- package/dist/core/pack.d.ts.map +1 -1
- package/dist/core/pack.js +57 -1
- package/dist/core/pack.js.map +1 -1
- package/dist/core/styleExtractor/index.d.ts +1 -0
- package/dist/core/styleExtractor/index.d.ts.map +1 -1
- package/dist/core/styleExtractor/index.js +1 -0
- package/dist/core/styleExtractor/index.js.map +1 -1
- package/dist/core/styleExtractor/layout.d.ts +13 -2
- package/dist/core/styleExtractor/layout.d.ts.map +1 -1
- package/dist/core/styleExtractor/layout.js +135 -65
- package/dist/core/styleExtractor/layout.js.map +1 -1
- package/dist/core/styleExtractor/material.d.ts.map +1 -1
- package/dist/core/styleExtractor/material.js +291 -66
- package/dist/core/styleExtractor/material.js.map +1 -1
- package/dist/core/styleExtractor/motion.d.ts +2 -2
- package/dist/core/styleExtractor/motion.d.ts.map +1 -1
- package/dist/core/styleExtractor/motion.js +425 -56
- package/dist/core/styleExtractor/motion.js.map +1 -1
- package/dist/core/styleExtractor/radix.d.ts +29 -0
- package/dist/core/styleExtractor/radix.d.ts.map +1 -0
- package/dist/core/styleExtractor/radix.js +315 -0
- package/dist/core/styleExtractor/radix.js.map +1 -0
- package/dist/core/styleExtractor/scss.d.ts.map +1 -1
- package/dist/core/styleExtractor/scss.js +37 -23
- package/dist/core/styleExtractor/scss.js.map +1 -1
- package/dist/core/styleExtractor/shadcn.d.ts +20 -0
- package/dist/core/styleExtractor/shadcn.d.ts.map +1 -0
- package/dist/core/styleExtractor/shadcn.js +345 -0
- package/dist/core/styleExtractor/shadcn.js.map +1 -0
- package/dist/core/styleExtractor/styleExtractor.d.ts.map +1 -1
- package/dist/core/styleExtractor/styleExtractor.js +267 -89
- package/dist/core/styleExtractor/styleExtractor.js.map +1 -1
- package/dist/core/styleExtractor/styled.d.ts +1 -1
- package/dist/core/styleExtractor/styled.d.ts.map +1 -1
- package/dist/core/styleExtractor/styled.js +308 -23
- package/dist/core/styleExtractor/styled.js.map +1 -1
- package/dist/core/styleExtractor/tailwind.d.ts +21 -3
- package/dist/core/styleExtractor/tailwind.d.ts.map +1 -1
- package/dist/core/styleExtractor/tailwind.js +279 -46
- package/dist/core/styleExtractor/tailwind.js.map +1 -1
- package/dist/types/UIFContract.d.ts +34 -0
- package/dist/types/UIFContract.d.ts.map +1 -1
- package/dist/types/UIFContract.js.map +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +41 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/debug.d.ts +12 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +16 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/fsx.d.ts +2 -1
- package/dist/utils/fsx.d.ts.map +1 -1
- package/dist/utils/fsx.js +99 -28
- package/dist/utils/fsx.js.map +1 -1
- package/dist/utils/gitignore.d.ts.map +1 -1
- package/dist/utils/gitignore.js +28 -1
- package/dist/utils/gitignore.js.map +1 -1
- package/package.json +1 -1
- package/schema/logicstamp.context.schema.json +26 -1
package/dist/core/astParser.js
CHANGED
|
@@ -27,41 +27,94 @@
|
|
|
27
27
|
* Uses ts-morph for robust AST traversal
|
|
28
28
|
*/
|
|
29
29
|
import { Project, SyntaxKind, Node } from 'ts-morph';
|
|
30
|
+
import { debugError } from '../utils/debug.js';
|
|
30
31
|
import { extractComponents, extractHooks } from './astParser/extractors/componentExtractor.js';
|
|
31
32
|
import { extractProps } from './astParser/extractors/propExtractor.js';
|
|
32
33
|
import { extractState, extractVariables } from './astParser/extractors/stateExtractor.js';
|
|
33
34
|
import { extractEvents, extractJsxRoutes } from './astParser/extractors/eventExtractor.js';
|
|
34
35
|
import { detectKind, extractNextJsMetadata } from './astParser/detectors.js';
|
|
36
|
+
/**
|
|
37
|
+
* Safe extraction wrapper that catches errors and logs them
|
|
38
|
+
*/
|
|
39
|
+
function safeExtract(label, filePath, extractor, fallback) {
|
|
40
|
+
try {
|
|
41
|
+
return extractor();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
debugError('astParser', 'safeExtract', {
|
|
45
|
+
filePath,
|
|
46
|
+
error: error instanceof Error ? error.message : String(error),
|
|
47
|
+
context: label,
|
|
48
|
+
});
|
|
49
|
+
return fallback;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
35
52
|
/**
|
|
36
53
|
* Extract all structural information from a TypeScript/React file
|
|
54
|
+
* Returns empty AST on parsing errors to prevent crashes
|
|
37
55
|
*/
|
|
38
56
|
export async function extractFromFile(filePath) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
variables
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
try {
|
|
58
|
+
const project = new Project({
|
|
59
|
+
skipAddingFilesFromTsConfig: true,
|
|
60
|
+
compilerOptions: {
|
|
61
|
+
jsx: 1, // React JSX
|
|
62
|
+
target: 99, // ESNext
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
const source = project.addSourceFileAtPath(filePath);
|
|
66
|
+
const resolvedPath = source.getFilePath?.() ?? filePath;
|
|
67
|
+
// Extract basic data first - wrap each extraction in try-catch for resilience
|
|
68
|
+
const hooks = safeExtract('hooks', resolvedPath, () => extractHooks(source), []);
|
|
69
|
+
const components = safeExtract('components', resolvedPath, () => extractComponents(source), []);
|
|
70
|
+
const imports = safeExtract('imports', resolvedPath, () => extractImports(source), []);
|
|
71
|
+
const nextjs = safeExtract('nextjs', resolvedPath, () => extractNextJsMetadata(source, filePath), undefined);
|
|
72
|
+
const variables = safeExtract('variables', resolvedPath, () => extractVariables(source), []);
|
|
73
|
+
const functions = safeExtract('functions', resolvedPath, () => extractFunctions(source), []);
|
|
74
|
+
const props = safeExtract('props', resolvedPath, () => extractProps(source), {});
|
|
75
|
+
const state = safeExtract('state', resolvedPath, () => extractState(source), {});
|
|
76
|
+
const emits = safeExtract('events', resolvedPath, () => extractEvents(source), {});
|
|
77
|
+
const jsxRoutes = safeExtract('jsxRoutes', resolvedPath, () => extractJsxRoutes(source), []);
|
|
78
|
+
const kind = safeExtract('kind', resolvedPath, () => detectKind(hooks, components, imports, filePath, source), 'ts:module');
|
|
79
|
+
const { exports: exportMetadata, exportedFunctions } = safeExtract('exports', resolvedPath, () => extractExports(source), { exports: undefined, exportedFunctions: [] });
|
|
80
|
+
return {
|
|
81
|
+
kind,
|
|
82
|
+
variables,
|
|
83
|
+
hooks,
|
|
84
|
+
components,
|
|
85
|
+
functions,
|
|
86
|
+
props,
|
|
87
|
+
state,
|
|
88
|
+
emits,
|
|
89
|
+
imports,
|
|
90
|
+
jsxRoutes,
|
|
91
|
+
...(nextjs && { nextjs }),
|
|
92
|
+
...(exportMetadata && { exports: exportMetadata }),
|
|
93
|
+
...(exportedFunctions.length > 0 && { exportedFunctions }),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
debugError('astParser', 'extractFromFile', {
|
|
98
|
+
filePath,
|
|
99
|
+
error: error instanceof Error ? error.message : String(error),
|
|
100
|
+
});
|
|
101
|
+
// Return empty AST on parsing errors instead of crashing
|
|
102
|
+
// Callers should check if the result is meaningful before using it
|
|
103
|
+
return {
|
|
104
|
+
kind: 'ts:module',
|
|
105
|
+
variables: [],
|
|
106
|
+
hooks: [],
|
|
107
|
+
components: [],
|
|
108
|
+
functions: [],
|
|
109
|
+
props: {},
|
|
110
|
+
state: {},
|
|
111
|
+
emits: {},
|
|
112
|
+
imports: [],
|
|
113
|
+
jsxRoutes: [],
|
|
114
|
+
exports: undefined,
|
|
115
|
+
exportedFunctions: [],
|
|
116
|
+
};
|
|
117
|
+
}
|
|
65
118
|
}
|
|
66
119
|
/**
|
|
67
120
|
* Extract all function declarations and arrow functions
|
|
@@ -91,6 +144,110 @@ function extractFunctions(source) {
|
|
|
91
144
|
});
|
|
92
145
|
return Array.from(functions).sort();
|
|
93
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Extract export metadata and exported functions from source file
|
|
149
|
+
* Uses fast AST traversal - optimized single pass through statements
|
|
150
|
+
*/
|
|
151
|
+
function extractExports(source) {
|
|
152
|
+
const exportedFunctions = new Set();
|
|
153
|
+
let hasDefaultExport = false;
|
|
154
|
+
const namedExports = new Set();
|
|
155
|
+
// Fast single-pass AST traversal - check statements directly
|
|
156
|
+
const statements = source.getStatements();
|
|
157
|
+
// Early exit if no statements
|
|
158
|
+
if (statements.length === 0) {
|
|
159
|
+
return { exports: undefined, exportedFunctions: [] };
|
|
160
|
+
}
|
|
161
|
+
// Optimized loop: only process export-related statements
|
|
162
|
+
for (let i = 0; i < statements.length; i++) {
|
|
163
|
+
const stmt = statements[i];
|
|
164
|
+
const kind = stmt.getKind();
|
|
165
|
+
// Handle explicit export declarations first (most common for exports)
|
|
166
|
+
if (kind === SyntaxKind.ExportDeclaration) {
|
|
167
|
+
const exportStmt = stmt;
|
|
168
|
+
const namedExportsFromDecl = exportStmt.getNamedExports();
|
|
169
|
+
for (let j = 0; j < namedExportsFromDecl.length; j++) {
|
|
170
|
+
const name = namedExportsFromDecl[j].getName();
|
|
171
|
+
if (name) {
|
|
172
|
+
namedExports.add(name);
|
|
173
|
+
exportedFunctions.add(name);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
// Skip statements that can't be exports
|
|
179
|
+
if (kind !== SyntaxKind.FunctionDeclaration &&
|
|
180
|
+
kind !== SyntaxKind.ClassDeclaration &&
|
|
181
|
+
kind !== SyntaxKind.VariableStatement) {
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
// Check modifiers once for declarations that can be exported
|
|
185
|
+
const modifiers = stmt.getModifiers?.() || [];
|
|
186
|
+
let hasExport = false;
|
|
187
|
+
let isDefault = false;
|
|
188
|
+
for (let m = 0; m < modifiers.length; m++) {
|
|
189
|
+
const modKind = modifiers[m].getKind();
|
|
190
|
+
if (modKind === SyntaxKind.ExportKeyword)
|
|
191
|
+
hasExport = true;
|
|
192
|
+
if (modKind === SyntaxKind.DefaultKeyword)
|
|
193
|
+
isDefault = true;
|
|
194
|
+
}
|
|
195
|
+
if (!hasExport)
|
|
196
|
+
continue; // Skip non-exported statements
|
|
197
|
+
// Process exported declarations
|
|
198
|
+
if (kind === SyntaxKind.FunctionDeclaration || kind === SyntaxKind.ClassDeclaration) {
|
|
199
|
+
const decl = stmt;
|
|
200
|
+
const name = decl.getName();
|
|
201
|
+
if (isDefault) {
|
|
202
|
+
hasDefaultExport = true;
|
|
203
|
+
if (name)
|
|
204
|
+
exportedFunctions.add(name);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
if (name) {
|
|
208
|
+
namedExports.add(name);
|
|
209
|
+
exportedFunctions.add(name);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
else if (kind === SyntaxKind.VariableStatement) {
|
|
214
|
+
const varStmt = stmt;
|
|
215
|
+
if (isDefault)
|
|
216
|
+
hasDefaultExport = true;
|
|
217
|
+
const declarations = varStmt.getDeclarationList().getDeclarations();
|
|
218
|
+
for (let j = 0; j < declarations.length; j++) {
|
|
219
|
+
const name = declarations[j].getName();
|
|
220
|
+
if (name) {
|
|
221
|
+
if (isDefault) {
|
|
222
|
+
exportedFunctions.add(name);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
namedExports.add(name);
|
|
226
|
+
exportedFunctions.add(name);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// Determine export metadata
|
|
233
|
+
let exports;
|
|
234
|
+
if (hasDefaultExport) {
|
|
235
|
+
exports = 'default';
|
|
236
|
+
}
|
|
237
|
+
else if (namedExports.size > 0) {
|
|
238
|
+
const namedArray = Array.from(namedExports).sort();
|
|
239
|
+
if (namedArray.length === 1) {
|
|
240
|
+
exports = 'named';
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
exports = { named: namedArray };
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return {
|
|
247
|
+
exports,
|
|
248
|
+
exportedFunctions: Array.from(exportedFunctions).sort(),
|
|
249
|
+
};
|
|
250
|
+
}
|
|
94
251
|
/**
|
|
95
252
|
* Extract import module specifiers
|
|
96
253
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astParser.js","sourceRoot":"","sources":["../../src/core/astParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAc,IAAI,
|
|
1
|
+
{"version":3,"file":"astParser.js","sourceRoot":"","sources":["../../src/core/astParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractBuilder.d.ts","sourceRoot":"","sources":["../../src/core/contractBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAWjD,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,yBAAyB,EAAE,aAAa,CAAC;CACjE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"contractBuilder.d.ts","sourceRoot":"","sources":["../../src/core/contractBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAWjD,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,yBAAyB,EAAE,aAAa,CAAC;CACjE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAuBD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,mBAAmB,GAC1B,mBAAmB,CAqDrB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,WAAW,GACnB,WAAW,CAiBb"}
|
|
@@ -29,25 +29,21 @@ import { resolve, relative } from 'node:path';
|
|
|
29
29
|
import { platform } from 'node:os';
|
|
30
30
|
/**
|
|
31
31
|
* Extract export metadata from AST
|
|
32
|
+
* Uses the export metadata extracted directly from the source file
|
|
32
33
|
*/
|
|
33
34
|
function extractExportsMetadata(ast) {
|
|
34
|
-
//
|
|
35
|
-
if (
|
|
36
|
-
return
|
|
35
|
+
// Use the export metadata extracted from the AST if available
|
|
36
|
+
if (ast.exports !== undefined) {
|
|
37
|
+
return ast.exports;
|
|
37
38
|
}
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return
|
|
39
|
+
// Fallback: if no exports metadata but we have exported functions, infer from them
|
|
40
|
+
if (ast.exportedFunctions && ast.exportedFunctions.length > 0) {
|
|
41
|
+
if (ast.exportedFunctions.length === 1) {
|
|
42
|
+
return 'named';
|
|
43
|
+
}
|
|
44
|
+
return { named: ast.exportedFunctions };
|
|
44
45
|
}
|
|
45
|
-
|
|
46
|
-
if (ast.functions.length > 1) {
|
|
47
|
-
return { named: ast.functions };
|
|
48
|
-
}
|
|
49
|
-
// Single named export
|
|
50
|
-
return { named: ast.functions };
|
|
46
|
+
return undefined;
|
|
51
47
|
}
|
|
52
48
|
/**
|
|
53
49
|
* Build a complete UIFContract from extracted AST data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractBuilder.js","sourceRoot":"","sources":["../../src/core/contractBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAenC
|
|
1
|
+
{"version":3,"file":"contractBuilder.js","sourceRoot":"","sources":["../../src/core/contractBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAenC;;;GAGG;AACH,SAAS,sBAAsB,CAAC,GAAe;IAC7C,8DAA8D;IAC9D,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,mFAAmF;IACnF,IAAI,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9D,IAAI,GAAG,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,GAAe,EACf,MAA2B;IAE3B,+CAA+C;IAC/C,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAClF,GAAG,EACH,MAAM,CAAC,MAAM,CACd,CAAC;IAEF,+DAA+D;IAC/D,MAAM,qBAAqB,GAAG,MAAM,CAAC,iBAAiB;QACpD,CAAC,CAAC,6BAA6B,CAAC,GAAG,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC;IAEP,0BAA0B;IAC1B,MAAM,cAAc,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,qBAAqB,CAAC,CAAC;IAExE,sBAAsB;IACtB,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,8BAA8B;IAC/F,MAAM,EAAE,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAEtD,kBAAkB;IAClB,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAE5C,iFAAiF;IACjF,MAAM,QAAQ,GAAgB;QAC5B,IAAI,EAAE,aAAa;QACnB,aAAa,EAAE,KAAK;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;QAClC,YAAY;QACZ,YAAY;QACZ,EAAE;QACF,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC;QACjE,OAAO,EAAE;YACP,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB;QACD,cAAc,EAAE,SAAS;QACzB,OAAO;QACP,UAAU,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;QAClE,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,sCAAsC;QACnE,YAAY,EAAE,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC;QACjD,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;KACtC,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAqB,EACrB,OAAoB;IAEpB,OAAO;QACL,GAAG,OAAO;QACV,2DAA2D;QAC3D,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,8DAA8D;QAC9D,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;QACxD,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;QAC5C,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK;QACtC,qFAAqF;QACrF,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACvB,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;YAC1B,GAAG,OAAO,CAAC,MAAM;SAClB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;QACnB,wDAAwD;QACxD,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAI3D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1C,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACzC,CAAC;CACH;AAuDD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,WAAW,EAAE,EACxB,OAAO,CAAC,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,eAAe,CA+EjB;AA4DD;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B7F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG;IACxD,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAoBA"}
|
package/dist/core/manifest.js
CHANGED
|
@@ -28,6 +28,54 @@
|
|
|
28
28
|
import { writeFile } from 'node:fs/promises';
|
|
29
29
|
import { join } from 'node:path';
|
|
30
30
|
import { structureHash, signatureHash } from '../utils/hash.js';
|
|
31
|
+
import { debugError } from '../utils/debug.js';
|
|
32
|
+
/**
|
|
33
|
+
* Filter out internal components from dependencies
|
|
34
|
+
* Internal components are defined in the same file but not exported
|
|
35
|
+
*/
|
|
36
|
+
function filterInternalComponents(contract) {
|
|
37
|
+
// Get list of exported names from exports field
|
|
38
|
+
const exportedNames = new Set();
|
|
39
|
+
let hasExportsList = false;
|
|
40
|
+
if (contract.exports) {
|
|
41
|
+
if (contract.exports === 'default') {
|
|
42
|
+
// Default export - we can't determine the specific name from exports field alone
|
|
43
|
+
// Be conservative: don't filter anything
|
|
44
|
+
hasExportsList = false;
|
|
45
|
+
}
|
|
46
|
+
else if (contract.exports === 'named') {
|
|
47
|
+
// Single named export - we can't determine the specific name from 'named' alone
|
|
48
|
+
// Be conservative: don't filter anything
|
|
49
|
+
hasExportsList = false;
|
|
50
|
+
}
|
|
51
|
+
else if (typeof contract.exports === 'object' && contract.exports.named) {
|
|
52
|
+
// Multiple named exports - we have the explicit list
|
|
53
|
+
contract.exports.named.forEach(name => exportedNames.add(name));
|
|
54
|
+
hasExportsList = true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Only filter if we have an explicit exports list
|
|
58
|
+
// A component is internal if:
|
|
59
|
+
// 1. It appears in version.functions (defined in this file as a function component), AND
|
|
60
|
+
// 2. It's not in the exported names list
|
|
61
|
+
if (!hasExportsList) {
|
|
62
|
+
// Can't determine internal components without explicit exports list
|
|
63
|
+
return contract.version.components;
|
|
64
|
+
}
|
|
65
|
+
const internalComponents = new Set();
|
|
66
|
+
const functionsSet = new Set(contract.version.functions);
|
|
67
|
+
for (const component of contract.version.components) {
|
|
68
|
+
// If component name matches a function in this file, it's likely a function component
|
|
69
|
+
if (functionsSet.has(component)) {
|
|
70
|
+
// If it's not in the exported names list, it's internal
|
|
71
|
+
if (!exportedNames.has(component)) {
|
|
72
|
+
internalComponents.add(component);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Return only external components (those not in internalComponents)
|
|
77
|
+
return contract.version.components.filter(comp => !internalComponents.has(comp));
|
|
78
|
+
}
|
|
31
79
|
/**
|
|
32
80
|
* Build dependency graph from contracts
|
|
33
81
|
*/
|
|
@@ -40,10 +88,12 @@ export function buildDependencyGraph(contracts, options) {
|
|
|
40
88
|
// Note: structureHash() and signatureHash() already return hashes with uif: prefix
|
|
41
89
|
const structHash = structureHash(contract.version);
|
|
42
90
|
const sigHash = signatureHash(contract.logicSignature);
|
|
91
|
+
// Filter out internal components from dependencies
|
|
92
|
+
const externalDependencies = filterInternalComponents(contract);
|
|
43
93
|
components[contract.entryId] = {
|
|
44
94
|
entryId: contract.entryId,
|
|
45
95
|
description: contract.description,
|
|
46
|
-
dependencies:
|
|
96
|
+
dependencies: externalDependencies,
|
|
47
97
|
usedBy: [],
|
|
48
98
|
imports: contract.version.imports || [],
|
|
49
99
|
routes: contract.usedIn || [],
|
|
@@ -55,8 +105,10 @@ export function buildDependencyGraph(contracts, options) {
|
|
|
55
105
|
// Second pass: build reverse relationships (usedBy)
|
|
56
106
|
for (const contract of contracts) {
|
|
57
107
|
const componentId = contract.entryId;
|
|
58
|
-
//
|
|
59
|
-
|
|
108
|
+
// Use filtered dependencies (excluding internal components) for consistency
|
|
109
|
+
const externalDependencies = filterInternalComponents(contract);
|
|
110
|
+
// For each external component this one uses
|
|
111
|
+
for (const dependency of externalDependencies) {
|
|
60
112
|
// Find the matching component in our graph
|
|
61
113
|
const depNode = findComponentByName(components, dependency);
|
|
62
114
|
if (depNode) {
|
|
@@ -147,7 +199,33 @@ function findComponentByName(components, name) {
|
|
|
147
199
|
export async function writeManifest(manifest, outPath) {
|
|
148
200
|
const manifestPath = join(outPath, 'logicstamp.manifest.json');
|
|
149
201
|
const json = JSON.stringify(manifest, null, 2);
|
|
150
|
-
|
|
202
|
+
try {
|
|
203
|
+
await writeFile(manifestPath, json, 'utf8');
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
const err = error;
|
|
207
|
+
debugError('manifest', 'writeManifest', {
|
|
208
|
+
manifestPath,
|
|
209
|
+
outPath,
|
|
210
|
+
message: err.message,
|
|
211
|
+
code: err.code,
|
|
212
|
+
});
|
|
213
|
+
let userMessage;
|
|
214
|
+
switch (err.code) {
|
|
215
|
+
case 'ENOENT':
|
|
216
|
+
userMessage = `Parent directory not found for: "${manifestPath}"`;
|
|
217
|
+
break;
|
|
218
|
+
case 'EACCES':
|
|
219
|
+
userMessage = `Permission denied writing to: "${manifestPath}"`;
|
|
220
|
+
break;
|
|
221
|
+
case 'ENOSPC':
|
|
222
|
+
userMessage = `No space left on device. Cannot write: "${manifestPath}"`;
|
|
223
|
+
break;
|
|
224
|
+
default:
|
|
225
|
+
userMessage = `Failed to write manifest "${manifestPath}": ${err.message}`;
|
|
226
|
+
}
|
|
227
|
+
throw new Error(userMessage);
|
|
228
|
+
}
|
|
151
229
|
}
|
|
152
230
|
/**
|
|
153
231
|
* Generate component usage statistics
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/pack/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/pack/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA8B7E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAYpG;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAepG;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOjG"}
|
package/dist/core/pack/loader.js
CHANGED
|
@@ -3,17 +3,37 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { readFile } from 'node:fs/promises';
|
|
5
5
|
import { join, resolve, isAbsolute } from 'node:path';
|
|
6
|
+
import { debugError } from '../../utils/debug.js';
|
|
6
7
|
/**
|
|
7
8
|
* Load manifest from file
|
|
8
9
|
*/
|
|
9
10
|
export async function loadManifest(basePath) {
|
|
10
11
|
const manifestPath = join(basePath, 'logicstamp.manifest.json');
|
|
12
|
+
let content;
|
|
13
|
+
try {
|
|
14
|
+
content = await readFile(manifestPath, 'utf8');
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
const err = error;
|
|
18
|
+
debugError('loader', 'loadManifest', {
|
|
19
|
+
manifestPath,
|
|
20
|
+
basePath,
|
|
21
|
+
message: err.message,
|
|
22
|
+
code: err.code,
|
|
23
|
+
});
|
|
24
|
+
throw new Error(`Failed to load manifest at ${manifestPath}: ${err.code === 'ENOENT' ? 'File not found' : err.message}`);
|
|
25
|
+
}
|
|
11
26
|
try {
|
|
12
|
-
const content = await readFile(manifestPath, 'utf8');
|
|
13
27
|
return JSON.parse(content);
|
|
14
28
|
}
|
|
15
29
|
catch (error) {
|
|
16
|
-
|
|
30
|
+
const err = error;
|
|
31
|
+
debugError('loader', 'loadManifest', {
|
|
32
|
+
manifestPath,
|
|
33
|
+
operation: 'JSON.parse',
|
|
34
|
+
message: err.message,
|
|
35
|
+
});
|
|
36
|
+
throw new Error(`Failed to parse manifest at ${manifestPath}: ${err.message}`);
|
|
17
37
|
}
|
|
18
38
|
}
|
|
19
39
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/pack/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/pack/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/core/pack.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../src/core/pack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAMpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../src/core/pack.ts"],"names":[],"mappings":"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"}
|
package/dist/core/pack.js
CHANGED
|
@@ -38,6 +38,58 @@ import { buildEdges, computeBundleHash, stableSort, validateHashLock } from './p
|
|
|
38
38
|
const require = createRequire(import.meta.url);
|
|
39
39
|
const pkg = require('../../package.json');
|
|
40
40
|
const PACKAGE_VERSION = `${pkg.name}@${pkg.version}`;
|
|
41
|
+
/**
|
|
42
|
+
* Check if a component name is an internal component (function defined in the same file)
|
|
43
|
+
* Internal components appear in both version.functions and version.components of a contract
|
|
44
|
+
*/
|
|
45
|
+
function isInternalComponent(contract, componentName) {
|
|
46
|
+
const functionsSet = new Set(contract.version.functions);
|
|
47
|
+
const componentsSet = new Set(contract.version.components);
|
|
48
|
+
// A component is internal if it appears in both functions and components arrays
|
|
49
|
+
// This means it's a function component defined in the same file
|
|
50
|
+
return functionsSet.has(componentName) && componentsSet.has(componentName);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Filter out internal components from missing dependencies
|
|
54
|
+
* Internal components should not appear in meta.missing since they're defined in the same file
|
|
55
|
+
* Only checks contracts that are already loaded to avoid I/O overhead
|
|
56
|
+
*/
|
|
57
|
+
function filterInternalComponentsFromMissing(missing, nodes, contractsMap) {
|
|
58
|
+
// Build a map of entryId -> contract for quick lookup
|
|
59
|
+
// Only use contracts we already have (no I/O to avoid timeouts)
|
|
60
|
+
const contractMap = new Map();
|
|
61
|
+
// Add contracts from nodes (already loaded)
|
|
62
|
+
for (const node of nodes) {
|
|
63
|
+
if (node.contract) {
|
|
64
|
+
contractMap.set(node.entryId, node.contract);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Add contracts from contractsMap (in-memory)
|
|
68
|
+
if (contractsMap) {
|
|
69
|
+
for (const [key, contract] of contractsMap.entries()) {
|
|
70
|
+
contractMap.set(key, contract);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Filter missing dependencies
|
|
74
|
+
const filtered = [];
|
|
75
|
+
for (const dep of missing) {
|
|
76
|
+
// If referencedBy is not set, we can't check if it's internal - keep it
|
|
77
|
+
if (!dep.referencedBy) {
|
|
78
|
+
filtered.push(dep);
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
// Only check contracts we already have loaded (no I/O)
|
|
82
|
+
const contract = contractMap.get(dep.referencedBy);
|
|
83
|
+
// If we have the contract, check if the dependency is an internal component
|
|
84
|
+
if (contract && isInternalComponent(contract, dep.name)) {
|
|
85
|
+
// This is an internal component - skip it (don't add to filtered)
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
// Not an internal component (or contract not available) - keep it
|
|
89
|
+
filtered.push(dep);
|
|
90
|
+
}
|
|
91
|
+
return filtered;
|
|
92
|
+
}
|
|
41
93
|
/**
|
|
42
94
|
* Load manifest from file
|
|
43
95
|
*/
|
|
@@ -177,6 +229,10 @@ export async function pack(entryId, manifest, options, projectRoot) {
|
|
|
177
229
|
`Entry component '${actualEntryId}' was found in manifest, but no contracts could be loaded. ` +
|
|
178
230
|
`Run 'logicstamp compile' to generate sidecar files, or check that path/name matches manifest keys.`);
|
|
179
231
|
}
|
|
232
|
+
// Filter out internal components from missing dependencies
|
|
233
|
+
// Internal components are functions defined in the same file that are used as components
|
|
234
|
+
// Only uses contracts already loaded to avoid I/O overhead
|
|
235
|
+
const filteredMissing = filterInternalComponentsFromMissing(missing, nodes, options.contractsMap);
|
|
180
236
|
// Build edges
|
|
181
237
|
const edges = buildEdges(nodes, manifest);
|
|
182
238
|
// Sort nodes for deterministic output
|
|
@@ -201,7 +257,7 @@ export async function pack(entryId, manifest, options, projectRoot) {
|
|
|
201
257
|
edges: sortedEdges,
|
|
202
258
|
},
|
|
203
259
|
meta: {
|
|
204
|
-
missing,
|
|
260
|
+
missing: filteredMissing,
|
|
205
261
|
source: PACKAGE_VERSION,
|
|
206
262
|
},
|
|
207
263
|
};
|