@trim21/personal-pi-extensions 0.0.268 → 0.0.270
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.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trim21/personal-pi-extensions",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.270",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Custom pi coding-agent extensions: bwrap sandbox, workspace guard, opencode edit, and more",
|
|
6
6
|
"keywords": [
|
|
@@ -38,7 +38,6 @@
|
|
|
38
38
|
"@types/node": "^24.13.3",
|
|
39
39
|
"@typescript/native": "npm:typescript@^7.0.2",
|
|
40
40
|
"@vitest/coverage-v8": "^4.1.10",
|
|
41
|
-
"@vscode/tree-sitter-wasm": "^0.3.1",
|
|
42
41
|
"eslint": "^10.8.1",
|
|
43
42
|
"eslint-config-prettier": "10.1.8",
|
|
44
43
|
"eslint-plugin-erasable-syntax-only": "0.4.2",
|
|
@@ -84,6 +83,7 @@
|
|
|
84
83
|
"node": ">=24"
|
|
85
84
|
},
|
|
86
85
|
"dependencies": {
|
|
86
|
+
"@vscode/tree-sitter-wasm": "^0.3.1",
|
|
87
87
|
"web-tree-sitter": "^0.26.12"
|
|
88
88
|
}
|
|
89
89
|
}
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
* - opencode packages/opencode/src/tool/shell.ts(tree-sitter 命令提取)
|
|
12
12
|
*/
|
|
13
13
|
import { readFileSync } from "node:fs";
|
|
14
|
+
import { createRequire } from "node:module";
|
|
14
15
|
|
|
15
|
-
import type
|
|
16
|
+
import { Language, type Node, Parser } from "web-tree-sitter";
|
|
16
17
|
|
|
17
18
|
/** 解析后的单个命令:命令名 + 参数 + 原文 + 嵌套命令(命令替换里的)。 */
|
|
18
19
|
export interface BashCommand {
|
|
@@ -43,23 +44,22 @@ interface BashParser {
|
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
/**
|
|
46
|
-
* 延迟初始化 tree-sitter bash parser
|
|
47
|
-
*
|
|
48
|
-
* bash grammar 的 wasm
|
|
49
|
-
*
|
|
50
|
-
* 本文件(tree-sitter-bash.wasm)来自 @vscode/tree-sitter-wasm
|
|
51
|
-
* (devDependency,MIT):用 `pnpm up @vscode/tree-sitter-wasm` 升级后,
|
|
52
|
-
* 将 node_modules/@vscode/tree-sitter-wasm/wasm/tree-sitter-bash.wasm
|
|
53
|
-
* 覆盖回本文件即可。
|
|
47
|
+
* 延迟初始化 tree-sitter bash parser:web-tree-sitter 是静态 import,
|
|
48
|
+
* 但 wasm 加载与 parser 构造只在首次调用时发生(Parser.init() 开销大)。
|
|
49
|
+
* bash grammar 的 wasm 在模块加载时从 runtime 依赖
|
|
50
|
+
* @vscode/tree-sitter-wasm(MIT)解析并读取一次。
|
|
54
51
|
*/
|
|
52
|
+
const require = createRequire(import.meta.url);
|
|
53
|
+
const BASH_WASM = readFileSync(
|
|
54
|
+
require.resolve("@vscode/tree-sitter-wasm/wasm/tree-sitter-bash.wasm"),
|
|
55
|
+
);
|
|
56
|
+
|
|
55
57
|
function createParserLoader(): () => Promise<BashParser> {
|
|
56
58
|
let parserPromise: Promise<BashParser> | undefined;
|
|
57
59
|
return function loadParser(): Promise<BashParser> {
|
|
58
60
|
parserPromise ??= (async () => {
|
|
59
|
-
const { Language, Parser } = await import("web-tree-sitter");
|
|
60
61
|
await Parser.init();
|
|
61
|
-
const
|
|
62
|
-
const language = await Language.load(bashWasm);
|
|
62
|
+
const language = await Language.load(BASH_WASM);
|
|
63
63
|
const parser = new Parser();
|
|
64
64
|
parser.setLanguage(language);
|
|
65
65
|
return { parse: (source: string) => parser.parse(source) };
|
|
Binary file
|