Code reference detail
esbuild.mjs
packages/extension/esbuild.mjs
| Idea | Status | Tags | Summary | Katz |
|---|---|---|---|---|
| extension_bundle | The extension host ( `src/extension/main.ts` ) and language server ( `src/language/main.ts` ) are bundled with esbuild per [extension_esbuild]. The host-matching core engine `.node` is staged under `native/` by [extension_host_native_stage] for F5 and for per-target VSIX packaging; it is not inlined into `main.cjs`. Output: CommonJS `.cjs` files under `packages/extension/out/`. `vscode` remains external; a small `Object.groupBy` polyfill is injected for older Node runtimes. | 0.046 | ||
| extension_startup_reliability | done | Reqlan startup must make the activity-bar shell and contributed commands available before optional indexing, parser construction, database initialization, or language-client startup can monopolize the extension host. The implementation contract is [first_paint_contract], [webview_claim_race], [deferred_startup_sequence], [lazy_runtime_dependencies], and [development_bundle_freshness]. Operational diagnosis follows [startup_diagnostics]. [activation.activation_sequence] [activitybar.loading_state] [indexer.nonblocking_index] [build.extension_bundle] | 0.046 | |
| invalid_url_activation_failure | done | The concrete incident failed while requiring `out/extension/main.cjs`, before `activate()` ran: `TypeError: Invalid URL` in `embedPhysicsCoreSource`. Runtime `readFileSync(new URL(..., import.meta.url))` is unsafe when esbuild emits CommonJS for an ES2017 target: `import.meta.url` is unavailable / empty and source-relative assets do not exist beside the bundled entry. The HTML export used to embed physics via `html-export-assets.ts` `embedPhysicsCoreSource`. That writer is gone; export now inlines assets from ["../../../crates/reqlan-export/assets/app.js"]. Code that still needs a module directory or `createRequire` ( core engine loader and parse worker ) must not mention `import.meta` statically in a way that esbuild CJS empties: prefer CJS `__dirname` / `__filename` when those exist ( extension host bundle ), and `import.meta.url` on the Node ESM path ( CLI / MCP ). The host esbuild step defines `import.meta.url` as `import_meta_url` from this file's `__filename` so the CJS bundle stays valid and does not warn `empty-import-meta`. CLI / MCP keep the TypeScript `import.meta.url` emit. Do not eval `import.meta.url` — Node 24 treats that as a script eval and throws `Cannot use 'import.meta' outside a module`. ["../../../packages/analytical/src/native/load-native.ts"] ["../../../packages/language/src/reqlan-async-parser.ts"] ["../../../packages/extension/esbuild.mjs"] | 0.040 | |
| lazy_runtime_dependencies | done | Base discovery must be cheap: - Constructing `WorkspaceIndex` does not construct Langium / Chevrotain services; index sync uses the core native engine ( rusqlite ). - The host-matching `reqlan_napi` `.node` is required at activate; there is no sql. js vendor bundle in the extension host. - Export / physics source is generated at build time rather than read via extension-runtime URLs. ["../../../packages/analytical/src/index-store/workspace-index.ts"] ["../../../packages/analytical/src/index-store/sqlite-store.ts"] ["../../../packages/analytical/src/index-store/index-diagnostics-store.ts"] ["../../../packages/extension/esbuild.mjs"] | 0.046 |
Reference labels
"../../../packages/extension/esbuild.mjs", ../../../packages/extension/esbuild.mjs, ../../packages/extension/esbuild.mjs