diff --git a/.gitignore b/.gitignore index 11685a7..be5aae1 100644 --- a/.gitignore +++ b/.gitignore @@ -37,9 +37,15 @@ Thumbs.db *.log target/ node_modules/ -# npm lockfile — not tracked, mirroring the Cargo.lock policy above -# (the only one is vscode-extension/package-lock.json) +# JS lockfiles — not tracked, mirroring the Cargo.lock policy above +# (all under vscode-extension/; the extension is built on a registry-reachable +# host with Deno/bun per the package-manager policy, lockfile regenerated there) package-lock.json +bun.lock +bun.lockb +deno.lock +# Built VS Code extension artefact — distributed via GitHub Release, not git +*.vsix _build/ deps/ .elixir_ls/ diff --git a/vscode-extension/.vscodeignore b/vscode-extension/.vscodeignore new file mode 100644 index 0000000..6c8cf8b --- /dev/null +++ b/vscode-extension/.vscodeignore @@ -0,0 +1,9 @@ +# Build/runtime artefacts that should not ship in the .vsix. +# (node_modules production deps ARE bundled by vsce — do not ignore them.) +deno.lock +bun.lock +bun.lockb +.gitignore +.vscodeignore +package-lock.json +**/.DS_Store diff --git a/vscode-extension/out/extension.cjs b/vscode-extension/out/extension.cjs index 04de210..dbe3dd4 100644 --- a/vscode-extension/out/extension.cjs +++ b/vscode-extension/out/extension.cjs @@ -98,7 +98,7 @@ exports._freeHandle = _freeHandle; // Inserted by --vscode-extension (issue #105): auto-generated glue so this // file is directly loadable as a VS Code extension's `main`. Replaces the // previously hand-written index.cjs + vendored adapter boilerplate. -const _makeVscodeBindings = require("@hyperpolymath/affine-vscode"); +const _makeVscodeBindings = require("../src/affine-vscode-adapter.cjs"); exports.extraImports = function() { return _makeVscodeBindings( require("vscode"), diff --git a/vscode-extension/package.json b/vscode-extension/package.json index 4bcbe1c..9cf7c48 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -17,7 +17,7 @@ "activationEvents": [ "onLanguage:my" ], - "main": "./src/index.cjs", + "main": "./out/extension.cjs", "contributes": { "languages": [ { @@ -76,8 +76,8 @@ ] }, "scripts": { - "vscode:prepublish": "npm run compile", - "compile": "affinescript compile --vscode-extension src/extension.affine -o out/extension.cjs", + "vscode:prepublish": "affinescript compile --vscode-extension --vscode-extension-adapter=../src/affine-vscode-adapter.cjs src/extension.affine -o out/extension.cjs", + "compile": "affinescript compile --vscode-extension --vscode-extension-adapter=../src/affine-vscode-adapter.cjs src/extension.affine -o out/extension.cjs", "package": "vsce package" }, "devDependencies": { diff --git a/vscode-extension/src/index.cjs b/vscode-extension/src/index.cjs deleted file mode 100644 index 5dd30c1..0000000 --- a/vscode-extension/src/index.cjs +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later -// Copyright (c) 2026 Jonathan D.A. Jewell -// -// Runtime entry point — what VS Code loads via package.json `main`. -// -// Pipeline: -// src/extension.affine ──affinescript compile──> out/extension.cjs (wasm shim) -// src/index.cjs ──this file──> exports.{activate,deactivate} -// -// This wrapper bridges the compiled wasm shim to the live vscode/lc modules -// by installing `extraImports` on the shim before activation runs. - -"use strict"; - -const shim = require("../out/extension.cjs"); -const makeVscodeBindings = require("./affine-vscode-adapter.cjs"); - -// Install the Phase-2 binding hook. `_buildImports()` inside the shim calls -// this after the host invokes `exports.activate`, just before -// `WebAssembly.instantiate`. The shim's own `exports._instance` is set -// during init, so the adapter's lazy `getInstance()` resolves correctly -// for callbacks that fire after activation. -shim.extraImports = function extraImports() { - return makeVscodeBindings( - require("vscode"), - require("vscode-languageclient/node"), - shim - ); -}; - -exports.activate = shim.activate; -exports.deactivate = shim.deactivate;