@grafema/util 0.3.18 → 0.3.21
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/core/FileOverview.d.ts.map +1 -1
- package/dist/core/FileOverview.js +16 -12
- package/dist/core/FileOverview.js.map +1 -1
- package/dist/federation/FederatedRouter.d.ts +124 -0
- package/dist/federation/FederatedRouter.d.ts.map +1 -0
- package/dist/federation/FederatedRouter.js +297 -0
- package/dist/federation/FederatedRouter.js.map +1 -0
- package/dist/federation/ShardDiscovery.d.ts +56 -0
- package/dist/federation/ShardDiscovery.d.ts.map +1 -0
- package/dist/federation/ShardDiscovery.js +100 -0
- package/dist/federation/ShardDiscovery.js.map +1 -0
- package/dist/federation/index.d.ts +28 -0
- package/dist/federation/index.d.ts.map +1 -0
- package/dist/federation/index.js +26 -0
- package/dist/federation/index.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest/generator.d.ts.map +1 -1
- package/dist/manifest/generator.js +38 -5
- package/dist/manifest/generator.js.map +1 -1
- package/dist/manifest/index.d.ts +2 -0
- package/dist/manifest/index.d.ts.map +1 -1
- package/dist/manifest/index.js +1 -0
- package/dist/manifest/index.js.map +1 -1
- package/dist/manifest/registry.d.ts +116 -0
- package/dist/manifest/registry.d.ts.map +1 -0
- package/dist/manifest/registry.js +638 -0
- package/dist/manifest/registry.js.map +1 -0
- package/dist/manifest/resolver.d.ts +9 -0
- package/dist/manifest/resolver.d.ts.map +1 -1
- package/dist/manifest/resolver.js +31 -0
- package/dist/manifest/resolver.js.map +1 -1
- package/dist/notation/traceRenderer.d.ts +2 -0
- package/dist/notation/traceRenderer.d.ts.map +1 -1
- package/dist/notation/traceRenderer.js +6 -5
- package/dist/notation/traceRenderer.js.map +1 -1
- package/package.json +3 -3
- package/src/core/FileOverview.ts +16 -11
- package/src/federation/FederatedRouter.ts +440 -0
- package/src/federation/ShardDiscovery.ts +130 -0
- package/src/federation/index.ts +35 -0
- package/src/index.ts +16 -1
- package/src/manifest/generator.ts +37 -5
- package/src/manifest/index.ts +2 -0
- package/src/manifest/registry.ts +769 -0
- package/src/manifest/resolver.ts +33 -0
- package/src/notation/traceRenderer.ts +8 -5
|
@@ -174,9 +174,13 @@ export class ManifestGenerator {
|
|
|
174
174
|
// Graph-based approach:
|
|
175
175
|
// EXPORT(named) --EXPORTS--> EXPORT_BINDING(name, source) --> definition in source file
|
|
176
176
|
await this.collectExportsViaBindings(entryFile, exports, seen, new Set());
|
|
177
|
-
}
|
|
178
|
-
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Fallback: if entry-file mode found 0 exports (e.g., CJS barrel,
|
|
180
|
+
// broken re-export chain in compiled_js), scan all exported definitions
|
|
181
|
+
if (exports.length === 0) {
|
|
179
182
|
const prefix = this.options.packagePrefix ?? '';
|
|
183
|
+
// Check standard definition types (FUNCTION, CLASS, CONSTANT, INTERFACE)
|
|
180
184
|
for (const type of ManifestGenerator.DEF_TYPES) {
|
|
181
185
|
for await (const node of this.backend.queryNodes({ type: type as never })) {
|
|
182
186
|
if (prefix && !node.file?.startsWith(prefix)) continue;
|
|
@@ -187,10 +191,28 @@ export class ManifestGenerator {
|
|
|
187
191
|
await this.addExportFromDefinition(node, exports);
|
|
188
192
|
}
|
|
189
193
|
}
|
|
194
|
+
// Also check EXPORT_BINDING nodes (from CJS exports.foo = ...)
|
|
195
|
+
if (exports.length === 0) {
|
|
196
|
+
for await (const node of this.backend.queryNodes({ type: 'EXPORT_BINDING' as never })) {
|
|
197
|
+
if (prefix && !node.file?.startsWith(prefix)) continue;
|
|
198
|
+
if (!node.name || node.name === 'named' || node.name === 'default') continue;
|
|
199
|
+
if (seen.has(node.name)) continue;
|
|
200
|
+
seen.add(node.name);
|
|
201
|
+
exports.push({
|
|
202
|
+
name: node.name,
|
|
203
|
+
kind: 'VARIABLE',
|
|
204
|
+
semanticId: node.id,
|
|
205
|
+
effects: ['UNKNOWN'],
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
190
209
|
}
|
|
191
210
|
|
|
192
211
|
exports.sort((a, b) => a.name.localeCompare(b.name));
|
|
193
|
-
|
|
212
|
+
|
|
213
|
+
// Filter minified single-character exports (signal of internal bundler code)
|
|
214
|
+
const filtered = exports.filter(e => e.name.length > 1);
|
|
215
|
+
return filtered;
|
|
194
216
|
}
|
|
195
217
|
|
|
196
218
|
/** Collect exports by traversing EXPORT → EXPORT_BINDING graph edges from entry file */
|
|
@@ -258,6 +280,14 @@ export class ManifestGenerator {
|
|
|
258
280
|
const def = await this.findDefinitionInFile(name, resolved);
|
|
259
281
|
if (def) return def;
|
|
260
282
|
|
|
283
|
+
// Try common extensions if no match found (compiled_js often omits extensions in source fields)
|
|
284
|
+
for (const ext of ['.js', '.mjs', '.cjs', '/index.js', '/index.mjs']) {
|
|
285
|
+
const withExt = resolved.endsWith(ext) ? null : resolved + ext;
|
|
286
|
+
if (!withExt) continue;
|
|
287
|
+
const defWithExt = await this.findDefinitionInFile(name, withExt);
|
|
288
|
+
if (defWithExt) return defWithExt;
|
|
289
|
+
}
|
|
290
|
+
|
|
261
291
|
// Follow barrel re-export chain via EXPORT_BINDING
|
|
262
292
|
for await (const binding of this.backend.queryNodes({
|
|
263
293
|
type: 'EXPORT_BINDING' as never, name, file: resolved,
|
|
@@ -276,7 +306,8 @@ export class ManifestGenerator {
|
|
|
276
306
|
const dir = fromFile.substring(0, fromFile.lastIndexOf('/'));
|
|
277
307
|
let resolved = source.startsWith('.') ? `${dir}/${source}` : source;
|
|
278
308
|
resolved = resolved.replace(/\/\.\//g, '/');
|
|
279
|
-
|
|
309
|
+
// Only replace .js → .ts for source TypeScript code, not compiled_js
|
|
310
|
+
if (this.options.sourceType !== 'compiled_js' && resolved.endsWith('.js')) {
|
|
280
311
|
resolved = resolved.replace(/\.js$/, '.ts');
|
|
281
312
|
}
|
|
282
313
|
return resolved;
|
|
@@ -330,7 +361,8 @@ export class ManifestGenerator {
|
|
|
330
361
|
/** Enrich all exports with computed effects (transitive call graph analysis) */
|
|
331
362
|
private async enrichEffects(exports: ManifestExport[]): Promise<void> {
|
|
332
363
|
for (const entry of exports) {
|
|
333
|
-
|
|
364
|
+
// Enrich FUNCTION, CLASS, and VARIABLE (CJS exports may be VARIABLE kind)
|
|
365
|
+
if (entry.kind !== 'FUNCTION' && entry.kind !== 'CLASS' && entry.kind !== 'VARIABLE') continue;
|
|
334
366
|
|
|
335
367
|
const effects = new Set<EffectType>();
|
|
336
368
|
const visited = new Set<string>();
|
package/src/manifest/index.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { ManifestGenerator } from './generator.js';
|
|
2
2
|
export { ManifestResolver } from './resolver.js';
|
|
3
3
|
export type { ResolveResult, ManifestSummary } from './resolver.js';
|
|
4
|
+
export { RegistryBuilder, resolvePackageDir, detectSourceType, resolveEntryPoint } from './registry.js';
|
|
5
|
+
export type { RegistryEntry, RegistryIndex, RegistryBuilderOptions, BuildResult } from './registry.js';
|
|
4
6
|
export type {
|
|
5
7
|
Manifest,
|
|
6
8
|
ManifestExport,
|