- 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."
39 lines
No EOL
1.1 KiB
JavaScript
39 lines
No EOL
1.1 KiB
JavaScript
"use strict";
|
|
function noop() { }
|
|
function once(emitter, name) {
|
|
const o = once.spread(emitter, name);
|
|
const r = o.then((args) => args[0]);
|
|
r.cancel = o.cancel;
|
|
return r;
|
|
}
|
|
(function (once) {
|
|
function spread(emitter, name) {
|
|
let c = null;
|
|
const p = new Promise((resolve, reject) => {
|
|
function cancel() {
|
|
emitter.removeListener(name, onEvent);
|
|
emitter.removeListener('error', onError);
|
|
p.cancel = noop;
|
|
}
|
|
function onEvent(...args) {
|
|
cancel();
|
|
resolve(args);
|
|
}
|
|
function onError(err) {
|
|
cancel();
|
|
reject(err);
|
|
}
|
|
c = cancel;
|
|
emitter.on(name, onEvent);
|
|
emitter.on('error', onError);
|
|
});
|
|
if (!c) {
|
|
throw new TypeError('Could not get `cancel()` function');
|
|
}
|
|
p.cancel = c;
|
|
return p;
|
|
}
|
|
once.spread = spread;
|
|
})(once || (once = {}));
|
|
module.exports = once;
|
|
//# sourceMappingURL=index.js.map
|