@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.268",
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 { Node } from "web-tree-sitter";
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(wasm 加载开销大,只做一次)。
47
- * Node 环境:主 wasm web-tree-sitter 按自身路径自动加载,
48
- * bash grammar 的 wasm 从仓库内 vendor 的文件读入。
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 bashWasm = readFileSync(new URL("tree-sitter-bash.wasm", import.meta.url));
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