- Hover provider showing entity information and type - Go-to-definition (F12) for entity references - Basic IFC file validation (ISO-10303-21 header check) - Entity parsing with regex-based detection - Proper CommonJS module system (avoiding ES module issues) This replaces the broken baseline from ifc-developer-tools which had: - Non-functional ES module configuration - Circular dependency issues - Parser crashes - Non-working PositionVisitor Built on Microsoft's LSP example template for a clean, maintainable foundation. Next: Add hierarchical entity dependency tree in hover tooltip."
37 lines
641 B
JavaScript
37 lines
641 B
JavaScript
'use strict';
|
|
const callsites = require('callsites');
|
|
|
|
module.exports = filepath => {
|
|
const stacks = callsites();
|
|
|
|
if (!filepath) {
|
|
return stacks[2].getFileName();
|
|
}
|
|
|
|
let seenVal = false;
|
|
|
|
// Skip the first stack as it's this function
|
|
stacks.shift();
|
|
|
|
for (const stack of stacks) {
|
|
const parentFilepath = stack.getFileName();
|
|
|
|
if (typeof parentFilepath !== 'string') {
|
|
continue;
|
|
}
|
|
|
|
if (parentFilepath === filepath) {
|
|
seenVal = true;
|
|
continue;
|
|
}
|
|
|
|
// Skip native modules
|
|
if (parentFilepath === 'module.js') {
|
|
continue;
|
|
}
|
|
|
|
if (seenVal && parentFilepath !== filepath) {
|
|
return parentFilepath;
|
|
}
|
|
}
|
|
};
|