Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
// Generated by AffineScript. Do not edit.
// Node-CJS shim wrapping the compiled .wasm module so VS Code's extension
// host (or any CJS consumer) can require() it directly.
//
// Issue #35 Phase 1 — no vscode API bindings yet (that's Phase 2 via
// stdlib/Vscode.affine). The Wasm module's `activate` and `deactivate`
// exports become exports.activate / exports.deactivate.

"use strict";

const _wasmBase64 = "AGFzbQEAAAABdhVgBH9/f38Bf2ACf38Bf2ABfwF/YAN/f38Bf2AAAX9gBX9/f39/AX9gA39/fwF/YAR/f39/AX9gBX9/f39/AX9gAn9/AX9gAAF/YAABf2AAAX9gAAF/YAABf2ABfwF/YAF/AX9gAX8Bf2AAAX9gAX8Bf2AAAX8CxwkrFndhc2lfc25hcHNob3RfcHJldmlldzEIZmRfd3JpdGUAAAZWc2NvZGUPcmVnaXN0ZXJDb21tYW5kAAEGVnNjb2RlEGdldENvbmZpZ3VyYXRpb24AAgZWc2NvZGUWd29ya3NwYWNlQ29uZmlnR2V0Qm9vbAADBlZzY29kZRh3b3Jrc3BhY2VDb25maWdHZXRTdHJpbmcAAwZWc2NvZGUQc2hvd0Vycm9yTWVzc2FnZQACBlZzY29kZRJzaG93V2FybmluZ01lc3NhZ2UAAgZWc2NvZGUWc2hvd0luZm9ybWF0aW9uTWVzc2FnZQACBlZzY29kZQ5jcmVhdGVUZXJtaW5hbAACBlZzY29kZQx0ZXJtaW5hbFNob3cAAgZWc2NvZGUQdGVybWluYWxTZW5kVGV4dAABBlZzY29kZRBwdXNoU3Vic2NyaXB0aW9uAAEGVnNjb2RlCmNvbnNvbGVMb2cAAgZWc2NvZGUIZXhlY1N5bmMAAgZWc2NvZGUMc3RyaW5nQ29uY2F0AAEGVnNjb2RlDnN0cmluZ0VuZHNXaXRoAAEGVnNjb2RlE3N0cmluZ1JlcGxhY2VTdWZmaXgAAwZWc2NvZGUNc3RyaW5nSXNFbXB0eQACBlZzY29kZRh3b3Jrc3BhY2VGb2xkZXJGaXJzdFBhdGgABAZWc2NvZGULdXJpRnJvbVBhdGgAAgZWc2NvZGULdXJpSm9pblBhdGgAAQZWc2NvZGUHdXJpUGF0aAACBlZzY29kZQtmc1dyaXRlRmlsZQABBlZzY29kZRBvcGVuVGV4dERvY3VtZW50AAIGVnNjb2RlEHNob3dUZXh0RG9jdW1lbnQAAgZWc2NvZGUTY3JlYXRlU3RhdHVzQmFySXRlbQABBlZzY29kZRRzdGF0dXNCYXJJdGVtU2V0VGV4dAABBlZzY29kZRdzdGF0dXNCYXJJdGVtU2V0VG9vbHRpcAABBlZzY29kZRdzdGF0dXNCYXJJdGVtU2V0Q29tbWFuZAABBlZzY29kZSRzdGF0dXNCYXJJdGVtU2V0QmFja2dyb3VuZENvbG9yVGhlbWUAAQZWc2NvZGURc3RhdHVzQmFySXRlbVNob3cAAgZWc2NvZGUZc3RhdHVzQmFySXRlbUFzRGlzcG9zYWJsZQACBlZzY29kZRpjcmVhdGVEaWFnbm9zdGljQ29sbGVjdGlvbgACBlZzY29kZSBkaWFnbm9zdGljQ29sbGVjdGlvbkFzRGlzcG9zYWJsZQACBlZzY29kZRJjcmVhdGVXZWJ2aWV3UGFuZWwAAwZWc2NvZGUTd2Vidmlld1BhbmVsU2V0SHRtbAABBlZzY29kZRJjbGlwYm9hcmRXcml0ZVRleHQAAgZWc2NvZGUVb25EaWRTYXZlVGV4dERvY3VtZW50AAIGVnNjb2RlCHBhdGhKb2luAAEGVnNjb2RlD3Byb2Nlc3NQbGF0Zm9ybQAEBlZzY29kZRVleHRlbnNpb25BYnNvbHV0ZVBhdGgAARRWc2NvZGVMYW5ndWFnZUNsaWVudBFuZXdMYW5ndWFnZUNsaWVudAAFFFZzY29kZUxhbmd1YWdlQ2xpZW50E2xhbmd1YWdlQ2xpZW50U3RhcnQAAgMQDwYHCAkKCwwNDg8QERITFAQBAAUDAQABBgEAB5QBCAZtZW1vcnkCABhoYW5kbGVyX2NoZWNrX2NvbXBsaWFuY2UALxNoYW5kbGVyX2luaXRfY29uZmlnADATaGFuZGxlcl9zaG93X3JlcG9ydAAyFmhhbmRsZXJfZ2VuZXJhdGVfYmFkZ2UAMw9oYW5kbGVyX29uX3NhdmUANwhhY3RpdmF0ZQA4CmRlYWN0aXZhdGUAOQkBAArvBg8QACAAIAEQDiACEA4PGkEACxQAIAAgARAOIAIQDiADEA4PGkEACxgAIAAgARAOIAIQDiADEA4gBBAODxpBAAscAQF/IAAQCCECIAIQCRogAiABEAoaQQAPGkEACzkBAn8QEiEAIAAQEUEBRgR/QYAQEAUaQQEPGkEABUEACxpBnBAgAEGrEBArIQFBsBAgARAuDxpBAAuxAQEPfxASIQAgABARQQFGBH9BgBAQBRpBAQ8aQQAFQQALGkG9EBACIQEgAUHEEEHSEBAEIQJB3BAhA0HIESEEQegRIQVBgxIhBkGzEyEHQb4UIQggBCACIAUQKyEJIAMgCSAGIAcgCBAtIQogABATIQsgC0H2FBAUIQwgDCAKEBYhDSANQQBHBH9BgxUQBRogDQ8aQQAFQQALGiAMEBchDiAOEBgaQaAVEAcaQQAPGkEACxgBAn9ByBUhAEHmGCEBIAAgARAODxpBAAsdAQF/QYIcQY8cQQEQIiEAIAAQMRAjGkEADxpBAAs4AQJ/EBIhACAAEBFBAUYEf0GAEBAFGkEBDxpBAAVBAAsaQagcIQEgARAkGkGJHRAHGkEADxpBAAttAQd/Qb0QEAIhASABQbAdQb4dEAQhAiACEBFBAEYEfyACDxpBAAVBAAsaECchA0HCHSEEQc0dIQVB3B0gBBAmIQZB3B0gBRAmIQcgA0HmHRAPQQFGBH8gACAHECgPGkEABSAAIAYQKA8aQQALC1IBBH8gABA0IQFB7x0gAUGrEBAOEA4hAiACEA0hAyADQQBHBH9B+h0QBhpBAQ8aQQAFQQALGkG1HkHFHiABQb4dQQAQKSEEIAQQKhpBAA8aQQALYQECf0G9EBACIQEgAUHmHkEBEANBAEYEf0EADxpBAAVBAAsaQQFB5AAQGSECIAJB+x4QGhogAkGSHxAbGiACQd8fEBwaIAJBvh0QHRogAhAeGiAAIAIQHxALGkEADxpBAAsIAEEADxpBAAt/AQJ/QfEfEAwaIAAQNhogAEGdIEEAEAEQCxogAEG0IEEBEAEQCxogAEHfH0ECEAEQCxogAEHGIEEDEAEQCxpBvRAQICEBIAAgARAhEAsaIAAQNRpBvRAQAiECIAJB2yBBARADQQBHBH8gAEEEECUQCxpBAAVBAAsaQQAPGkEACwgAQQAPGkEACwvlEikAQYAQCxwYAAAATm8gd29ya3NwYWNlIGZvbGRlciBvcGVuAEGcEAsPCwAAAHJzciBjaGVjayAiAEGrEAsFAQAAACIAQbAQCw0JAAAAUlNSIENoZWNrAEG9EAsHAwAAAHJzcgBBxBALDgoAAAB0YXJnZXRUaWVyAEHSEAsKBgAAAHNpbHZlcgBB3BALbGgAAAAjIFJTUiAoUmhvZGl1bSBTdGFuZGFyZCBSZXBvc2l0b3J5KSBDb25maWd1cmF0aW9uCiMgaHR0cHM6Ly9naXRodWIuY29tL0h5cGVycG9seW1hdGgvZ2l0LXJzci1jZXJ0aWZpZWQKCgBByBELIBwAAABbY29tcGxpYW5jZV0KdGFyZ2V0X3RpZXIgPSAiAEHoEQsbFwAAACIKc3RyaWN0X21vZGUgPSBmYWxzZQoKAEGDEguwAawAAABbY2hlY2tzXQojIExpY2Vuc2UgY29uZmlndXJhdGlvbgpsaWNlbnNlLnJlcXVpcmVkID0gdHJ1ZQpsaWNlbnNlLmFsbG93ZWQgPSBbIk1JVCIsICJBcGFjaGUtMi4wIiwgIkdQTC0zLjAiLCAiQlNELTMtQ2xhdXNlIl0KCiMgUkVBRE1FIHJlcXVpcmVtZW50cwpyZWFkbWUubWluX2xlbmd0aCA9IDEwMAoKAEGzEwuLAYcAAABbaWdub3JlXQojIFBhdGhzIHRvIGV4Y2x1ZGUgZnJvbSBjb21wbGlhbmNlIHNjYW5uaW5nCnBhdGhzID0gWwogICAgInZlbmRvci8iLAogICAgInRoaXJkX3BhcnR5LyIsCiAgICAibm9kZV9tb2R1bGVzLyIsCiAgICAiLmdpdC8iLApdCgoAQb4UCzg0AAAAW2JhZGdlc10Kc3R5bGUgPSAiZmxhdC1zcXVhcmUiCmluY2x1ZGVfc2NvcmUgPSB0cnVlCgBB9hQLDQkAAAAucnNyLnRvbWwAQYMVCx0ZAAAARmFpbGVkIHRvIHdyaXRlIC5yc3IudG9tbABBoBULKCQAAABSU1IgY29uZmlndXJhdGlvbiBjcmVhdGVkOiAucnNyLnRvbWwAQcgVC54DmgEAADwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjxzdHlsZT5ib2R5e2ZvbnQtZmFtaWx5OnZhcigtLXZzY29kZS1mb250LWZhbWlseSk7cGFkZGluZzoyMHB4fWgxe2NvbG9yOnZhcigtLXZzY29kZS1mb3JlZ3JvdW5kKX0udGllcntmb250LXNpemU6MjRweDttYXJnaW46MjBweCAwfS50aWVyLnNpbHZlcntjb2xvcjojQzBDMEMwfS5zY29yZXtmb250LXNpemU6MThweDtjb2xvcjp2YXIoLS12c2NvZGUtZGVzY3JpcHRpb25Gb3JlZ3JvdW5kKX0uY2hlY2tze21hcmdpbi10b3A6MjBweH0uY2hlY2t7cGFkZGluZzoxMHB4O21hcmdpbjo1cHggMDtib3JkZXItcmFkaXVzOjRweH0uY2hlY2sucGxhY2Vob2xkZXJ7YmFja2dyb3VuZDp2YXIoLS12c2NvZGUtdGV4dEJsb2NrUXVvdGUtYmFja2dyb3VuZCl9PC9zdHlsZT48L2hlYWQ+AEHmGAucA5gBAAA8Ym9keT48aDE+UlNSIENvbXBsaWFuY2UgUmVwb3J0PC9oMT48ZGl2IGNsYXNzPSJ0aWVyIHNpbHZlciI+4piGIFNJTFZFUjwvZGl2PjxkaXYgY2xhc3M9InNjb3JlIj5SdW4gPGNvZGU+UlNSOiBDaGVjayBDb21wbGlhbmNlPC9jb2RlPiBpbiBhIHRlcm1pbmFsIGZvciBsaXZlIHJlc3VsdHMuPC9kaXY+PGRpdiBjbGFzcz0iY2hlY2tzIj48aDI+Q2hlY2tzPC9oMj48ZGl2IGNsYXNzPSJjaGVjayBwbGFjZWhvbGRlciI+TGl2ZSBpbi1wYW5lbCByZXN1bHRzIHJlcXVpcmUgYW4gYXN5bmMtZXh0ZXJuIEFCSSAoc2VlIGFmZmluZXNjcmlwdCM2NCkuIFRoZSBDTEkgcGF0aCB2aWEgPGNvZGU+cnNyIGNoZWNrPC9jb2RlPiByZXBvcnRzIGZ1bGwgY29tcGxpYW5jZSBzdGF0dXMuPC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4AQYIcCw0JAAAAcnNyUmVwb3J0AEGPHAsZFQAAAFJTUiBDb21wbGlhbmNlIFJlcG9ydABBqBwLYV0AAABbIVtSU1IgQ2VydGlmaWNhdGlvbl0oaHR0cHM6Ly9yc3ItY2VydGlmaWVkLmRldi9iYWRnZS9zaWx2ZXIuc3ZnKV0oaHR0cHM6Ly9yc3ItY2VydGlmaWVkLmRldikAQYkdCycjAAAAQmFkZ2UgbWFya2Rvd24gY29waWVkIHRvIGNsaXBib2FyZCEAQbAdCw4KAAAAc2VydmVyUGF0aABBvh0LBAAAAAAAQcIdCwsHAAAAcnNyLWxzcABBzR0LDwsAAAByc3ItbHNwLmV4ZQBB3B0LCgYAAABzZXJ2ZXIAQeYdCwkFAAAAd2luMzIAQe8dCwsHAAAAd2hpY2ggIgBB+h0LOzcAAABSU1IgTFNQIHNlcnZlciBub3QgZm91bmQuIFNvbWUgZmVhdHVyZXMgbWF5IGJlIGxpbWl0ZWQuAEG1HgsQDAAAAHJzckNlcnRpZmllZABBxR4LIR0AAABSU1ItQ2VydGlmaWVkIExhbmd1YWdlIFNlcnZlcgBB5h4LFREAAABzaG93U3RhdHVzQmFySXRlbQBB+x4LFxMAAADimIYgUlNSOiBTSUxWRVIgNzUlAEGSHwtNSQAAAFJTUiBDb21wbGlhbmNlOiBzaWx2ZXIgdGllciAoNzUlIHNjb3JlLCBwbGFjZWhvbGRlcikKQ2xpY2sgdG8gdmlldyByZXBvcnQAQd8fCxIOAAAAcnNyLnNob3dSZXBvcnQAQfEfCywoAAAAUlNSLUNlcnRpZmllZCBleHRlbnNpb24gaXMgYWN0aXZhdGluZy4uLgBBnSALFxMAAAByc3IuY2hlY2tDb21wbGlhbmNlAEG0IAsSDgAAAHJzci5pbml0Q29uZmlnAEHGIAsVEQAAAHJzci5nZW5lcmF0ZUJhZGdlAEHbIAsPCwAAAGNoZWNrT25TYXZlAIcBFmFmZmluZXNjcmlwdC5vd25lcnNoaXAPAAAAKwAAAAMAAAAALAAAAAQAAAAAAC0AAAAFAAAAAAAALgAAAAIAAAAvAAAAAAAwAAAAAAAxAAAAAAAyAAAAAAAzAAAAAAA0AAAAAQAANQAAAAEAADYAAAABAAA3AAAAAAA4AAAAAQAAOQAAAAAA";
const _wasmBytes = Buffer.from(_wasmBase64, "base64");

// Per-process opaque-handle table for host objects (ExtensionContext,
// Terminal, LanguageClient, ...). Wasm refers to host objects by integer id.
const _handles = new Map();
let _nextHandle = 1;
function _registerHandle(obj) {
const h = _nextHandle++;
_handles.set(h, obj);
return h;
}
function _getHandle(h) { return _handles.get(h); }
function _freeHandle(h) { _handles.delete(h); }

// WASI-style minimal imports — affinescript codegen wires in fd_write on
// every module so we satisfy that even if no IO is exercised.
function _writeFdString(fd, ptr, len, memory) {
const bytes = new Uint8Array(memory.buffer, ptr, len);
const text = new TextDecoder("utf-8").decode(bytes);
if (fd === 1) process.stdout.write(text);
else if (fd === 2) process.stderr.write(text);
}

let _instance = null;
let _memory = null;

function _buildImports() {
const wasi_snapshot_preview1 = {
fd_write: (fd, iovs_ptr, iovs_len, nwritten_ptr) => {
// Minimal fd_write: walk the iovec array and concat to fd.
const view = new DataView(_memory.buffer);
let total = 0;
for (let i = 0; i < iovs_len; i++) {
const ptr = view.getUint32(iovs_ptr + i * 8, true);
const len = view.getUint32(iovs_ptr + i * 8 + 4, true);
_writeFdString(fd, ptr, len, _memory);
total += len;
}
view.setUint32(nwritten_ptr, total, true);
return 0;
},
};
// Phase 2 hook: callers can replace exports.extraImports with a function
// returning a `{ ModuleName: { exportName: fn, ... } }` map of concrete
// host bindings (e.g. the @hyperpolymath/affine-vscode adapter). Default
// is empty so the shim works standalone.
const extras = (typeof exports.extraImports === "function")
? exports.extraImports()
: {};
return { wasi_snapshot_preview1, ...extras };
}

async function _init() {
if (_instance) return _instance;
const { instance } = await WebAssembly.instantiate(_wasmBytes, _buildImports());
_instance = instance;
_memory = instance.exports.memory;
// Phase 2 hook: the active instance + memory must be reachable from
// bindings adapters that need to read string args / call back into the
// wasm table. Surface them on the exports object as soon as init finishes.
exports._instance = instance;
exports._memory = instance.exports.memory;
return _instance;
}

exports.activate = async function activate(context) {
const inst = await _init();
if (typeof inst.exports.activate === "function") {
const ctxHandle = _registerHandle(context);
return inst.exports.activate(ctxHandle);
}
};

exports.deactivate = async function deactivate() {
if (!_instance) return;
if (typeof _instance.exports.deactivate === "function") {
return _instance.exports.deactivate();
}
};

// Surfaced for Phase 2 binding modules to register concrete vscode-API
// implementations before the Wasm is instantiated.
exports._registerHandle = _registerHandle;
exports._getHandle = _getHandle;
exports._freeHandle = _freeHandle;
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "rsr-certified",
"displayName": "RSR-Certified",
"description": "Rhodium Standard Repository compliance checking for VS Code",
"version": "0.1.0",
"version": "0.2.0",
"publisher": "rsr-certified",
"license": "MIT",
"repository": {
Expand All @@ -27,7 +27,7 @@
"workspaceContains:.git",
"workspaceContains:.rsr.toml"
],
"main": "./out/extension.js",
"main": "./src/index.cjs",
"contributes": {
"commands": [
{
Expand Down Expand Up @@ -104,20 +104,9 @@
},
"scripts": {
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"lint": "eslint src --ext ts",
"test": "node ./out/test/runTest.js"
"compile": "affinescript compile src/extension.affine -o out/extension.cjs"
},
"dependencies": {
"vscode-languageclient": "^9.0.1"
},
"devDependencies": {
"@types/node": "^20.10.0",
"@types/vscode": "^1.85.0",
"@typescript-eslint/eslint-plugin": "^6.13.0",
"@typescript-eslint/parser": "^6.13.0",
"eslint": "^8.54.0",
"typescript": "^5.3.0"
}
}
Loading
Loading