Add web-tree-sitter-sfapex package

pull/579/head
Heber 2023-09-13 10:14:45 +07:00
parent 31853f4ca3
commit 58bdaa3557
4 changed files with 84 additions and 0 deletions

@ -0,0 +1,6 @@
type Parser = import("web-tree-sitter");
declare module "web-tree-sitter-sfapex" {
function getApexParser(): Promise<Parser>;
function getSoqlParser(): Promise<Parser>;
function getSoslParser(): Promise<Parser>;
}

@ -0,0 +1,42 @@
const Parser = require("web-tree-sitter");
const fs = require("fs");
function getApexParser() {
return getParser(__dirname + "/tree-sitter-apex.wasm");
}
function getSoqlParser() {
return getParser(__dirname + "/tree-sitter-soql.wasm");
}
function getSoslParser() {
return getParser(__dirname + "/tree-sitter-sosl.wasm");
}
/**
* @param {string} wasmLangFile
* @returns {Promise<Parser>}
*/
async function getParser(wasmLangFile) {
return new Promise(async (resolve, reject) => {
await Parser.init();
// make loadable on NodeJS to enable testing, should be smarter later
const parser = new Parser();
fs.readFile(wasmLangFile, async (err, data) => {
if (err) {
reject(err);
}
try {
const lang = await Parser.Language.load(data);
parser.setLanguage(lang);
resolve(parser);
} catch (err2) {
reject(err2);
}
});
});
}
module.exports = {
getApexParser,
getSoqlParser,
getSoslParser,
};

@ -0,0 +1,21 @@
{
"name": "web-tree-sitter-sfapex",
"version": "0.0.9-beta2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "web-tree-sitter-sfapex",
"version": "0.0.9-beta2",
"license": "ISC",
"dependencies": {
"web-tree-sitter": "^0.20.8"
}
},
"node_modules/web-tree-sitter": {
"version": "0.20.8",
"resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.20.8.tgz",
"integrity": "sha512-weOVgZ3aAARgdnb220GqYuh7+rZU0Ka9k9yfKtGAzEYMa6GgiCzW9JjQRJyCJakvibQW+dfjJdihjInKuuCAUQ=="
}
}
}

@ -0,0 +1,15 @@
{
"name": "web-tree-sitter-sfapex",
"version": "0.0.9",
"description": "tree-sitter-sfapex WASM",
"main": "index.js",
"types": "index.d.ts",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Anthony Heber",
"license": "ISC",
"dependencies": {
"web-tree-sitter": "^0.20.8"
}
}