@xsrg2008/web-tree-sitter-cpp 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,35 @@
1
+ import { Parser, Language } from "web-tree-sitter";
2
+
3
+ function getDefaultWasmUrl() {
4
+ return new URL("./tree-sitter-cpp.wasm", import.meta.url).href;
5
+ }
6
+
7
+ function normalizeBrowserInput(wasmLangFile) {
8
+ if (wasmLangFile == null) {
9
+ return getDefaultWasmUrl();
10
+ }
11
+
12
+ if (wasmLangFile instanceof URL) {
13
+ return wasmLangFile.href;
14
+ }
15
+
16
+ if (wasmLangFile instanceof ArrayBuffer) {
17
+ return new Uint8Array(wasmLangFile);
18
+ }
19
+
20
+ return wasmLangFile;
21
+ }
22
+
23
+ /**
24
+ * @param {string | URL | Uint8Array | ArrayBuffer} [wasmLangFile]
25
+ * @returns {Promise<Parser>}
26
+ */
27
+ async function getCppParser(wasmLangFile) {
28
+ await Parser.init();
29
+ const parser = new Parser();
30
+ const lang = await Language.load(normalizeBrowserInput(wasmLangFile));
31
+ parser.setLanguage(lang);
32
+ return parser;
33
+ }
34
+
35
+ export { getCppParser };
package/index.cjs CHANGED
@@ -1,34 +1,34 @@
1
1
  const { Parser, Language } = require("web-tree-sitter");
2
- const fs = require("fs");
2
+ const fs = require("fs/promises");
3
3
  const path = require("path");
4
4
 
5
- function getCppParser() {
6
- const wasmPath = path.join(__dirname, "tree-sitter-cpp.wasm");
7
- return getParser(wasmPath);
5
+ function getDefaultWasmPath() {
6
+ return path.join(__dirname, "tree-sitter-cpp.wasm");
8
7
  }
9
8
 
10
9
  /**
11
- * @param {string} wasmLangFile
10
+ * @param {string | URL | Uint8Array | ArrayBuffer} [wasmLangFile]
12
11
  * @returns {Promise<any>}
13
12
  */
14
- async function getParser(wasmLangFile) {
15
- return new Promise(async (resolve, reject) => {
16
- await Parser.init();
17
- const parser = new Parser();
18
- fs.readFile(wasmLangFile, async (err, data) => {
19
- if (err) {
20
- reject(err);
21
- return;
22
- }
23
- try {
24
- const lang = await Language.load(data);
25
- parser.setLanguage(lang);
26
- resolve(parser);
27
- } catch (err2) {
28
- reject(err2);
29
- }
30
- });
31
- });
13
+ async function getCppParser(wasmLangFile = getDefaultWasmPath()) {
14
+ await Parser.init();
15
+ const parser = new Parser();
16
+ const lang = await loadLanguage(wasmLangFile);
17
+ parser.setLanguage(lang);
18
+ return parser;
19
+ }
20
+
21
+ async function loadLanguage(wasmLangFile) {
22
+ if (typeof wasmLangFile === "string" || wasmLangFile instanceof URL) {
23
+ const data = await fs.readFile(wasmLangFile);
24
+ return Language.load(data);
25
+ }
26
+
27
+ if (wasmLangFile instanceof ArrayBuffer) {
28
+ return Language.load(new Uint8Array(wasmLangFile));
29
+ }
30
+
31
+ return Language.load(wasmLangFile);
32
32
  }
33
33
 
34
34
  module.exports = {
package/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- import type { Parser } from "web-tree-sitter";
2
- export type { Parser };
1
+ import { Parser } from "web-tree-sitter";
2
+ export { Parser };
3
3
 
4
- export declare function getCppParser(): Promise<Parser>;
4
+ export type WasmInput = string | URL | Uint8Array | ArrayBuffer;
5
+
6
+ export declare function getCppParser(wasmLangFile?: WasmInput): Promise<Parser>;
package/index.js CHANGED
@@ -1,34 +1,33 @@
1
- import { Parser } from 'web-tree-sitter';
2
- import { Language } from 'web-tree-sitter';
3
- import fs from "fs";
1
+ import { Parser, Language } from "web-tree-sitter";
2
+ import { readFile } from "node:fs/promises";
4
3
 
5
- function getCppParser() {
6
- const wasmPath = new URL("./tree-sitter-cpp.wasm", import.meta.url);
7
- return getParser(wasmPath);
4
+ function getDefaultWasmPath() {
5
+ return new URL("./tree-sitter-cpp.wasm", import.meta.url);
8
6
  }
7
+
9
8
  /**
10
- * @param {string | URL} wasmLangFile
9
+ * @param {string | URL | Uint8Array | ArrayBuffer} [wasmLangFile]
11
10
  * @returns {Promise<Parser>}
12
11
  */
13
- async function getParser(wasmLangFile) {
14
- return new Promise(async (resolve, reject) => {
15
- await Parser.init();
16
- const parser = new Parser();
17
- fs.readFile(wasmLangFile, async (err, data) => {
18
- if (err) {
19
- reject(err);
20
- }
21
- try {
22
- const lang = await Language.load(data);
23
- parser.setLanguage(lang);
24
- resolve(parser);
25
- } catch (err2) {
26
- reject(err2);
27
- }
28
- });
29
- });
12
+ async function getCppParser(wasmLangFile = getDefaultWasmPath()) {
13
+ await Parser.init();
14
+ const parser = new Parser();
15
+ const lang = await loadLanguage(wasmLangFile);
16
+ parser.setLanguage(lang);
17
+ return parser;
18
+ }
19
+
20
+ async function loadLanguage(wasmLangFile) {
21
+ if (typeof wasmLangFile === "string" || wasmLangFile instanceof URL) {
22
+ const data = await readFile(wasmLangFile);
23
+ return Language.load(data);
24
+ }
25
+
26
+ if (wasmLangFile instanceof ArrayBuffer) {
27
+ return Language.load(new Uint8Array(wasmLangFile));
28
+ }
29
+
30
+ return Language.load(wasmLangFile);
30
31
  }
31
32
 
32
- export {
33
- getCppParser,
34
- };
33
+ export { getCppParser };
package/package.json CHANGED
@@ -1,23 +1,31 @@
1
1
  {
2
2
  "name": "@xsrg2008/web-tree-sitter-cpp",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "tree-sitter-cpp WASM",
5
5
  "main": "index.cjs",
6
6
  "types": "index.d.ts",
7
7
  "exports": {
8
8
  ".": {
9
9
  "types": "./index.d.ts",
10
+ "browser": "./index.browser.js",
11
+ "node": {
12
+ "import": "./index.js",
13
+ "require": "./index.cjs"
14
+ },
10
15
  "import": "./index.js",
11
16
  "require": "./index.cjs",
12
17
  "default": "./index.js"
13
- }
18
+ },
19
+ "./tree-sitter-cpp.wasm": "./tree-sitter-cpp.wasm"
14
20
  },
21
+ "browser": "./index.browser.js",
15
22
  "scripts": {
16
23
  "test": "echo \"Error: no test specified\" && exit 1"
17
24
  },
18
25
  "type": "module",
19
26
  "files": [
20
27
  "index.cjs",
28
+ "index.browser.js",
21
29
  "index.js",
22
30
  "index.d.ts",
23
31
  "tree-sitter-cpp.wasm",