@kerebron/tree-sitter 0.5.5 → 0.6.1

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.
Files changed (133) hide show
  1. package/README.md +1 -2
  2. package/esm/{deno-tree-sitter/main/extended → extended}/base_node.d.ts +9 -12
  3. package/esm/extended/base_node.d.ts.map +1 -0
  4. package/esm/{deno-tree-sitter/main/extended → extended}/base_node.js +14 -14
  5. package/esm/extended/base_node.js.map +1 -0
  6. package/esm/extended/node_extended.d.ts +243 -0
  7. package/esm/extended/node_extended.d.ts.map +1 -0
  8. package/esm/{deno-tree-sitter/main/extended → extended}/node_extended.js +196 -186
  9. package/esm/extended/node_extended.js.map +1 -0
  10. package/esm/{deno-tree-sitter/main/extended → extended}/parser.d.ts +19 -17
  11. package/esm/extended/parser.d.ts.map +1 -0
  12. package/esm/extended/parser.js +61 -0
  13. package/esm/extended/parser.js.map +1 -0
  14. package/esm/{deno-tree-sitter/main/extended → extended}/soft_node.d.ts +4 -3
  15. package/esm/extended/soft_node.d.ts.map +1 -0
  16. package/esm/{deno-tree-sitter/main/extended → extended}/soft_node.js +1 -1
  17. package/esm/extended/soft_node.js.map +1 -0
  18. package/esm/extended/soft_text_node.d.ts +9 -0
  19. package/esm/extended/soft_text_node.d.ts.map +1 -0
  20. package/esm/{deno-tree-sitter/main/extended → extended}/soft_text_node.js +2 -2
  21. package/esm/extended/soft_text_node.js.map +1 -0
  22. package/esm/extended/whitespace_node.d.ts +9 -0
  23. package/esm/extended/whitespace_node.d.ts.map +1 -0
  24. package/esm/{deno-tree-sitter/main/extended → extended}/whitespace_node.js +2 -2
  25. package/esm/extended/whitespace_node.js.map +1 -0
  26. package/esm/extras/misc.d.ts +2 -0
  27. package/esm/extras/misc.d.ts.map +1 -0
  28. package/esm/{deno-tree-sitter/main/extras → extras}/misc.js +2 -2
  29. package/esm/extras/misc.js.map +1 -0
  30. package/esm/mod.d.ts +1 -6
  31. package/esm/mod.d.ts.map +1 -1
  32. package/esm/mod.js +1 -7
  33. package/esm/mod.js.map +1 -1
  34. package/package.json +4 -1
  35. package/src/extended/base_node.ts +175 -0
  36. package/src/extended/node_extended.ts +651 -0
  37. package/src/extended/parser.ts +96 -0
  38. package/src/extended/soft_node.ts +32 -0
  39. package/src/extended/soft_text_node.ts +11 -0
  40. package/src/extended/whitespace_node.ts +11 -0
  41. package/src/extras/misc.ts +15 -0
  42. package/src/mod.ts +1 -8
  43. package/esm/deno-tree-sitter/main/extended/base_node.d.ts.map +0 -1
  44. package/esm/deno-tree-sitter/main/extended/base_node.js.map +0 -1
  45. package/esm/deno-tree-sitter/main/extended/node_extended.d.ts +0 -237
  46. package/esm/deno-tree-sitter/main/extended/node_extended.d.ts.map +0 -1
  47. package/esm/deno-tree-sitter/main/extended/node_extended.js.map +0 -1
  48. package/esm/deno-tree-sitter/main/extended/parser.d.ts.map +0 -1
  49. package/esm/deno-tree-sitter/main/extended/parser.js +0 -87
  50. package/esm/deno-tree-sitter/main/extended/parser.js.map +0 -1
  51. package/esm/deno-tree-sitter/main/extended/soft_node.d.ts.map +0 -1
  52. package/esm/deno-tree-sitter/main/extended/soft_node.js.map +0 -1
  53. package/esm/deno-tree-sitter/main/extended/soft_text_node.d.ts +0 -10
  54. package/esm/deno-tree-sitter/main/extended/soft_text_node.d.ts.map +0 -1
  55. package/esm/deno-tree-sitter/main/extended/soft_text_node.js.map +0 -1
  56. package/esm/deno-tree-sitter/main/extended/whitespace_node.d.ts +0 -10
  57. package/esm/deno-tree-sitter/main/extended/whitespace_node.d.ts.map +0 -1
  58. package/esm/deno-tree-sitter/main/extended/whitespace_node.js.map +0 -1
  59. package/esm/deno-tree-sitter/main/extras/misc.d.ts +0 -2
  60. package/esm/deno-tree-sitter/main/extras/misc.d.ts.map +0 -1
  61. package/esm/deno-tree-sitter/main/extras/misc.js.map +0 -1
  62. package/esm/deno-tree-sitter/main/tree_sitter/bindings.d.ts +0 -14
  63. package/esm/deno-tree-sitter/main/tree_sitter/bindings.d.ts.map +0 -1
  64. package/esm/deno-tree-sitter/main/tree_sitter/bindings.js +0 -22
  65. package/esm/deno-tree-sitter/main/tree_sitter/bindings.js.map +0 -1
  66. package/esm/deno-tree-sitter/main/tree_sitter/constants.d.ts +0 -60
  67. package/esm/deno-tree-sitter/main/tree_sitter/constants.d.ts.map +0 -1
  68. package/esm/deno-tree-sitter/main/tree_sitter/constants.js +0 -67
  69. package/esm/deno-tree-sitter/main/tree_sitter/constants.js.map +0 -1
  70. package/esm/deno-tree-sitter/main/tree_sitter/language.d.ts +0 -137
  71. package/esm/deno-tree-sitter/main/tree_sitter/language.d.ts.map +0 -1
  72. package/esm/deno-tree-sitter/main/tree_sitter/language.js +0 -265
  73. package/esm/deno-tree-sitter/main/tree_sitter/language.js.map +0 -1
  74. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.d.ts +0 -41
  75. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.d.ts.map +0 -1
  76. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.js +0 -66
  77. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.js.map +0 -1
  78. package/esm/deno-tree-sitter/main/tree_sitter/marshal.d.ts +0 -85
  79. package/esm/deno-tree-sitter/main/tree_sitter/marshal.d.ts.map +0 -1
  80. package/esm/deno-tree-sitter/main/tree_sitter/marshal.js +0 -174
  81. package/esm/deno-tree-sitter/main/tree_sitter/marshal.js.map +0 -1
  82. package/esm/deno-tree-sitter/main/tree_sitter/node.d.ts +0 -260
  83. package/esm/deno-tree-sitter/main/tree_sitter/node.d.ts.map +0 -1
  84. package/esm/deno-tree-sitter/main/tree_sitter/node.js +0 -558
  85. package/esm/deno-tree-sitter/main/tree_sitter/node.js.map +0 -1
  86. package/esm/deno-tree-sitter/main/tree_sitter/parser.d.ts +0 -124
  87. package/esm/deno-tree-sitter/main/tree_sitter/parser.d.ts.map +0 -1
  88. package/esm/deno-tree-sitter/main/tree_sitter/parser.js +0 -253
  89. package/esm/deno-tree-sitter/main/tree_sitter/parser.js.map +0 -1
  90. package/esm/deno-tree-sitter/main/tree_sitter/query.d.ts +0 -134
  91. package/esm/deno-tree-sitter/main/tree_sitter/query.d.ts.map +0 -1
  92. package/esm/deno-tree-sitter/main/tree_sitter/query.js +0 -621
  93. package/esm/deno-tree-sitter/main/tree_sitter/query.js.map +0 -1
  94. package/esm/deno-tree-sitter/main/tree_sitter/tree.d.ts +0 -49
  95. package/esm/deno-tree-sitter/main/tree_sitter/tree.d.ts.map +0 -1
  96. package/esm/deno-tree-sitter/main/tree_sitter/tree.js +0 -131
  97. package/esm/deno-tree-sitter/main/tree_sitter/tree.js.map +0 -1
  98. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.d.ts +0 -165
  99. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.d.ts.map +0 -1
  100. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.js +0 -281
  101. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.js.map +0 -1
  102. package/esm/deno-tree-sitter/main/tree_sitter_wasm.d.ts +0 -3
  103. package/esm/deno-tree-sitter/main/tree_sitter_wasm.d.ts.map +0 -1
  104. package/esm/deno-tree-sitter/main/tree_sitter_wasm.js +0 -0
  105. package/esm/deno-tree-sitter/main/tree_sitter_wasm.js.map +0 -1
  106. package/esm/deno-tree-sitter/main/wasm_loader.d.ts +0 -29
  107. package/esm/deno-tree-sitter/main/wasm_loader.d.ts.map +0 -1
  108. package/esm/deno-tree-sitter/main/wasm_loader.js +0 -1703
  109. package/esm/deno-tree-sitter/main/wasm_loader.js.map +0 -1
  110. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.d.ts +0 -3
  111. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.d.ts.map +0 -1
  112. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.js +0 -9
  113. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.js.map +0 -1
  114. package/src/deno-tree-sitter/main/extended/base_node.js +0 -174
  115. package/src/deno-tree-sitter/main/extended/node_extended.js +0 -588
  116. package/src/deno-tree-sitter/main/extended/parser.js +0 -87
  117. package/src/deno-tree-sitter/main/extended/soft_node.js +0 -32
  118. package/src/deno-tree-sitter/main/extended/soft_text_node.js +0 -11
  119. package/src/deno-tree-sitter/main/extended/whitespace_node.js +0 -11
  120. package/src/deno-tree-sitter/main/extras/misc.js +0 -12
  121. package/src/deno-tree-sitter/main/tree_sitter/bindings.js +0 -26
  122. package/src/deno-tree-sitter/main/tree_sitter/constants.js +0 -79
  123. package/src/deno-tree-sitter/main/tree_sitter/language.js +0 -289
  124. package/src/deno-tree-sitter/main/tree_sitter/lookahead_iterator.js +0 -74
  125. package/src/deno-tree-sitter/main/tree_sitter/marshal.js +0 -186
  126. package/src/deno-tree-sitter/main/tree_sitter/node.js +0 -616
  127. package/src/deno-tree-sitter/main/tree_sitter/parser.js +0 -273
  128. package/src/deno-tree-sitter/main/tree_sitter/query.js +0 -705
  129. package/src/deno-tree-sitter/main/tree_sitter/tree.js +0 -145
  130. package/src/deno-tree-sitter/main/tree_sitter/tree_cursor.js +0 -314
  131. package/src/deno-tree-sitter/main/tree_sitter_wasm.js +0 -0
  132. package/src/deno-tree-sitter/main/wasm_loader.js +0 -1702
  133. package/src/deno-tree-sitter/main/wasm_loader_with_defaults.js +0 -9
@@ -0,0 +1,61 @@
1
+ // import { Tree } from "../web-tree-sitter/src/tree.ts"
2
+ // import { ParseOptions, Parser } from "../web-tree-sitter/src/parser.ts"
3
+ // import { Language } from "../web-tree-sitter/src/language.ts"
4
+ // import { ParseCallback } from "../web-tree-sitter/src/index.ts";
5
+ // import { setModule } from '../web-tree-sitter/src/constants.ts';
6
+ // import { MainModule } from '../web-tree-sitter/lib/web-tree-sitter.d.ts';
7
+ import './node_extended.js';
8
+ import { Language, Parser, } from 'web-tree-sitter';
9
+ // this only exists to help with type hints
10
+ class ExtendedParser extends Parser {
11
+ disableSoftNodes = false;
12
+ /**
13
+ * Parse a slice of UTF8 text.
14
+ *
15
+ * @param {string | ParseCallback} callback - Source code to parse
16
+ *
17
+ * @param {Tree | null} [oldTree] - A previous syntax tree parsed from the same document. If the text of the
18
+ * document has changed since `oldTree` was created, then you must edit `oldTree` to match
19
+ * the new text using {@link Tree#edit}.
20
+ *
21
+ * @param {ParseOptions} [options] - Options for parsing the text.
22
+ * This can be used to set the included ranges, or a progress callback.
23
+ *
24
+ * @returns {ExtendedTree | null} A {@link Tree} if parsing succeeded, or `null` if:
25
+ * - The parser has not yet had a language assigned with {@link Parser#setLanguage}.
26
+ * - The progress callback returned true.
27
+ */
28
+ parse(code, oldTree, options) {
29
+ if (typeof code == 'function') {
30
+ console.warn("When calling .parse() the source code was a function instead of a string. The original tree sitter supports giving a function as a means of supporting edits (see: https://github.com/tree-sitter/tree-sitter/discussions/2553 ).\nHowever, this library supports edits directly (use node.replaceInnards(``))\nThe downside of making edits easy is that .parse() doesn't really accept a function argument. I'm just going to evaluate that function to grab the string once at the beginning. Use tree.codeString if you want to get the full string after a .replaceInnards() call.");
31
+ code = code(0, { row: 0, column: 0 }) || '';
32
+ }
33
+ // if (!checkModule()) {
34
+ // throw new Error("cannot construct a Parser before calling `init()`");
35
+ // }
36
+ let tree = null;
37
+ tree = super.parse.apply(this, [
38
+ (index) => (tree?.codeString ?? code).slice(index),
39
+ oldTree,
40
+ options,
41
+ ]);
42
+ tree.codeString = code;
43
+ tree._enableSoftNodes = !this.disableSoftNodes;
44
+ return tree;
45
+ }
46
+ }
47
+ const langCache = new Map();
48
+ let hasBeenLoaded = false;
49
+ export async function createParser(wasmUint8Array, { disableSoftNodes = false, moduleOptions } = {}) {
50
+ await Parser.init();
51
+ if (!hasBeenLoaded) {
52
+ hasBeenLoaded = true;
53
+ await Parser.init(moduleOptions);
54
+ }
55
+ const parser = new ExtendedParser();
56
+ const language = await Language.load(wasmUint8Array);
57
+ parser.setLanguage(language);
58
+ parser.disableSoftNodes = disableSoftNodes;
59
+ return parser;
60
+ }
61
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/extended/parser.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,0EAA0E;AAC1E,gEAAgE;AAChE,mEAAmE;AACnE,mEAAmE;AACnE,4EAA4E;AAC5E,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EACL,QAAQ,EAGR,MAAM,GAEP,MAAM,iBAAiB,CAAC;AAEzB,2CAA2C;AAC3C,MAAM,cAAe,SAAQ,MAAM;IACjC,gBAAgB,GAAG,KAAK,CAAC;IAEzB;;;;;;;;;;;;;;;OAeG;IACM,KAAK,CACZ,IAA4B,EAC5B,OAAoB,EACpB,OAAqB;QAErB,IAAI,OAAO,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CACV,yjBAAyjB,CAC1jB,CAAC;YACF,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9C,CAAC;QACD,wBAAwB;QACxB,0EAA0E;QAC1E,IAAI;QAEJ,IAAI,IAAI,GAAgB,IAAI,CAAC;QAC7B,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;YAC7B,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1D,OAAO;YACP,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,IAAI,aAAa,GAAG,KAAK,CAAC;AAgB1B,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,cAA0B,EAC1B,EAAE,gBAAgB,GAAG,KAAK,EAAE,aAAa,KAAc,EAAE;IAEzD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IAEpB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,IAAI,CAAC;QACrB,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,5 +1,7 @@
1
- export class SoftNode extends BaseNode {
2
- children: any[];
1
+ import { BaseNode } from './base_node.js';
2
+ export declare class SoftNode extends BaseNode {
3
+ children: never[];
4
+ constructor(data: any);
3
5
  get startIndex(): any;
4
6
  get startPosition(): {
5
7
  row: any;
@@ -11,5 +13,4 @@ export class SoftNode extends BaseNode {
11
13
  column: any;
12
14
  };
13
15
  }
14
- import { BaseNode } from "./base_node.js";
15
16
  //# sourceMappingURL=soft_node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soft_node.d.ts","sourceRoot":"","sources":["../../src/extended/soft_node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,qBAAa,QAAS,SAAQ,QAAQ;IACpC,QAAQ,UAAM;gBACF,IAAI,KAAA;IAKhB,IAAI,UAAU,QAEb;IAED,IAAI,aAAa;;;MAKhB;IAED,IAAI,QAAQ,QAEX;IAED,IAAI,WAAW;;;MAKd;CACF"}
@@ -1,4 +1,4 @@
1
- import { BaseNode } from "./base_node.js";
1
+ import { BaseNode } from './base_node.js';
2
2
  // HardNode extends BaseNode as well (indirectly)
3
3
  export class SoftNode extends BaseNode {
4
4
  children = [];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soft_node.js","sourceRoot":"","sources":["../../src/extended/soft_node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,iDAAiD;AACjD,MAAM,OAAO,QAAS,SAAQ,QAAQ;IACpC,QAAQ,GAAG,EAAE,CAAC;IACd,YAAY,IAAI;QACd,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,uKAAuK;IACvK,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC;IACjE,CAAC;IAED,IAAI,aAAa;QACf,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,GAAG;YACjE,MAAM,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,MAAM;SACxE,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC;IAC/D,CAAC;IAED,IAAI,WAAW;QACb,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,GAAG;YAC/D,MAAM,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,MAAM;SACtE,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { SoftNode } from './soft_node.js';
2
+ export declare class SoftTextNode extends SoftNode {
3
+ constructor({ parent, ...data }: {
4
+ [x: string]: any;
5
+ parent: any;
6
+ });
7
+ get parent(): any;
8
+ }
9
+ //# sourceMappingURL=soft_text_node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soft_text_node.d.ts","sourceRoot":"","sources":["../../src/extended/soft_text_node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE;;;KAAA;IAI/B,IAAI,MAAM,QAET;CACF"}
@@ -1,7 +1,7 @@
1
- import { SoftNode } from "./soft_node.js";
1
+ import { SoftNode } from './soft_node.js';
2
2
  export class SoftTextNode extends SoftNode {
3
3
  constructor({ parent, ...data }) {
4
- super({ ...data, type: "text", typeId: -2 });
4
+ super({ ...data, type: 'text', typeId: -2 });
5
5
  this._parent = parent;
6
6
  }
7
7
  get parent() {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soft_text_node.js","sourceRoot":"","sources":["../../src/extended/soft_text_node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE;QAC7B,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { SoftNode } from './soft_node.js';
2
+ export declare class WhitespaceNode extends SoftNode {
3
+ constructor({ parent, ...data }: {
4
+ [x: string]: any;
5
+ parent: any;
6
+ });
7
+ get parent(): any;
8
+ }
9
+ //# sourceMappingURL=whitespace_node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whitespace_node.d.ts","sourceRoot":"","sources":["../../src/extended/whitespace_node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE;;;KAAA;IAI/B,IAAI,MAAM,QAET;CACF"}
@@ -1,7 +1,7 @@
1
- import { SoftNode } from "./soft_node.js";
1
+ import { SoftNode } from './soft_node.js';
2
2
  export class WhitespaceNode extends SoftNode {
3
3
  constructor({ parent, ...data }) {
4
- super({ ...data, type: "whitespace", typeId: -1 });
4
+ super({ ...data, type: 'whitespace', typeId: -1 });
5
5
  this._parent = parent;
6
6
  }
7
7
  get parent() {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whitespace_node.js","sourceRoot":"","sources":["../../src/extended/whitespace_node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE;QAC7B,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare function _getQueryCaptureTargets(queryString: any): any;
2
+ //# sourceMappingURL=misc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/extras/misc.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,CAAC,WAAW,KAAA,OAclD"}
@@ -1,11 +1,11 @@
1
1
  export function _getQueryCaptureTargets(queryString) {
2
- if (!queryString.includes("@")) {
2
+ if (!queryString.includes('@')) {
3
3
  return [];
4
4
  }
5
5
  else { // need a rigorous check
6
6
  // remove all strings from within the query (the only place a false capture target could appear)
7
7
  // NOTE: this is based exactly on the language spec, its not a hack: https://github.com/tree-sitter-grammars/tree-sitter-query/blob/3a9808b22742d5bd906ef5d1a562f2f1ae57406d/src/grammar.json#L140
8
- const safeSearchableQuery = queryString.replace(/"(?:\\(?:[^xu0-7]|[0-7]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]+})|[^\"\\])*"/g, "");
8
+ const safeSearchableQuery = queryString.replace(/"(?:\\(?:[^xu0-7]|[0-7]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]+})|[^\"\\])*"/g, '');
9
9
  // now check if there is a capture target
10
10
  // NOTE: also based on the language spec: https://github.com/tree-sitter-grammars/tree-sitter-query/blob/3a9808b22742d5bd906ef5d1a562f2f1ae57406d/src/grammar.json#L204
11
11
  return safeSearchableQuery.match(/(?<=@)([a-zA-Z0-9.\-_\$]+)/g);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/extras/misc.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,uBAAuB,CAAC,WAAW;IACjD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,CAAC,CAAC,wBAAwB;QAC/B,gGAAgG;QAChG,kMAAkM;QAClM,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,CAC7C,2FAA2F,EAC3F,EAAE,CACH,CAAC;QACF,yCAAyC;QACzC,uKAAuK;QACvK,OAAO,mBAAmB,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
package/esm/mod.d.ts CHANGED
@@ -1,7 +1,2 @@
1
- export { createParser } from './deno-tree-sitter/main/extended/parser.js';
2
- export { Parser } from './deno-tree-sitter/main/tree_sitter/parser.js';
3
- export { Language } from './deno-tree-sitter/main/tree_sitter/language.js';
4
- export { Query } from './deno-tree-sitter/main/tree_sitter/query.js';
5
- export { Node } from './deno-tree-sitter/main/tree_sitter/node.js';
6
- export { Tree } from './deno-tree-sitter/main/tree_sitter/tree.js';
1
+ export { createParser } from './extended/parser.js';
7
2
  //# sourceMappingURL=mod.d.ts.map
package/esm/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,iDAAiD,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,6CAA6C,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,6CAA6C,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
package/esm/mod.js CHANGED
@@ -1,8 +1,2 @@
1
- // JS files exported because of sloppy-imports
2
- export { createParser } from './deno-tree-sitter/main/extended/parser.js';
3
- export { Parser } from './deno-tree-sitter/main/tree_sitter/parser.js';
4
- export { Language } from './deno-tree-sitter/main/tree_sitter/language.js';
5
- export { Query } from './deno-tree-sitter/main/tree_sitter/query.js';
6
- export { Node } from './deno-tree-sitter/main/tree_sitter/node.js';
7
- export { Tree } from './deno-tree-sitter/main/tree_sitter/tree.js';
1
+ export { createParser } from './extended/parser.js';
8
2
  //# sourceMappingURL=mod.js.map
package/esm/mod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,iDAAiD,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,6CAA6C,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,6CAA6C,CAAC"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kerebron/tree-sitter",
3
- "version": "0.5.5",
3
+ "version": "0.6.1",
4
4
  "license": "MIT",
5
5
  "module": "./esm/mod.js",
6
6
  "exports": {
@@ -13,6 +13,9 @@
13
13
  "esm",
14
14
  "src"
15
15
  ],
16
+ "dependencies": {
17
+ "web-tree-sitter": "0.26.6"
18
+ },
16
19
  "devDependencies": {
17
20
  "@types/node": "^20.9.0"
18
21
  },
@@ -0,0 +1,175 @@
1
+ import { Node } from 'web-tree-sitter';
2
+
3
+ export const _shadows = {};
4
+ export class BaseNode {
5
+ // type = ""
6
+ // typeId = 0
7
+ // startPosition = 0
8
+ // startIndex = 0
9
+ // endPosition = 0
10
+ // startIndex = 0
11
+ // endIndex = 0
12
+ // indent = ""
13
+
14
+ constructor(data) {
15
+ Object.assign(this, data);
16
+ }
17
+
18
+ /** @type {number} */
19
+ get depth() {
20
+ if (this._depth == null) {
21
+ if (this.parent == null) {
22
+ this._depth = 0;
23
+ } else {
24
+ this._depth = this.parent.depth + 1;
25
+ }
26
+ }
27
+ return this._depth;
28
+ }
29
+
30
+ /** @type {number} */
31
+ get length() {
32
+ return this.children?.length || 0;
33
+ }
34
+
35
+ *[Symbol.iterator]() {
36
+ yield* this.children || [];
37
+ }
38
+
39
+ get hasChildren() {
40
+ return (this.children?.length || 0) > 0;
41
+ }
42
+
43
+ get hardChildren() {
44
+ return (this.children || []).filter((each) => each instanceof Node);
45
+ }
46
+
47
+ get fields() {
48
+ return {};
49
+ }
50
+
51
+ get fieldNames() {
52
+ return [];
53
+ }
54
+
55
+ /** @type {string} */
56
+ get indent() {
57
+ return this.tree.codeString.match(
58
+ new RegExp(`^(?:.*\\r?\\n){${this.startPosition.row}}(\\s*)`),
59
+ )[1];
60
+ // equivalent but usually faster than:
61
+ // return this.tree.codeString.split("\n")[this.startPosition.row].match(/^\s*/)[0]
62
+ }
63
+
64
+ /** @type {Object} */
65
+ toJSON() {
66
+ const optionalData = {};
67
+ if (this.children?.length) {
68
+ return {
69
+ type: this.type,
70
+ typeId: this.typeId,
71
+ fieldNames: this.fieldNames,
72
+ startPosition: this.startPosition,
73
+ startIndex: this.startIndex,
74
+ endPosition: this.endPosition,
75
+ indent: this.indent,
76
+ ...optionalData,
77
+ children: this.children.map((each) => each.toJSON()),
78
+ };
79
+ } else {
80
+ return {
81
+ type: this.type,
82
+ typeId: this.typeId,
83
+ fieldNames: this.fieldNames,
84
+ startPosition: this.startPosition,
85
+ startIndex: this.startIndex,
86
+ endPosition: this.endPosition,
87
+ indent: this.indent,
88
+ ...optionalData,
89
+ text: this.text,
90
+ children: [],
91
+ };
92
+ }
93
+ }
94
+
95
+ [Symbol.for('Deno.customInspect')](inspect, options) {
96
+ const optional = {};
97
+ let text;
98
+ try {
99
+ text = this.text;
100
+ } catch (error) {
101
+ text = undefined;
102
+ }
103
+ if (text == undefined) {
104
+ return this;
105
+ }
106
+ return inspect(
107
+ {
108
+ '': text.length < 60
109
+ ? text
110
+ : text.slice(0, 30) + '...' + text.slice(-27),
111
+ type: this.type,
112
+ typeId: this.typeId,
113
+ fieldNames: this.fieldNames,
114
+ startPosition: this.startPosition,
115
+ startIndex: this.startIndex,
116
+ endPosition: this.endPosition,
117
+ indent: this.indent,
118
+ ...optional,
119
+ hasChildren: this.hasChildren,
120
+ children: [...(this.children || [])],
121
+ },
122
+ options,
123
+ );
124
+ }
125
+ *iterFlattened() {
126
+ }
127
+ flattened() {
128
+ return [];
129
+ }
130
+
131
+ /**
132
+ * Destroy the children of this node and replace the .text of this node with the given string.
133
+ *
134
+ * @param {string} replacement - description
135
+ */
136
+ replaceInnards(replacement) {
137
+ const tree = this.tree;
138
+ const sourceCode = this.tree.codeString;
139
+ const node = _shadows[this.id] || this;
140
+ // clear out children (innards) because of replacement
141
+ node._children = [];
142
+ node._fields = {};
143
+ // get the node position info
144
+ const {
145
+ startPosition: originalStart,
146
+ endPosition: originalEnd,
147
+ startIndex: originalStartIndex,
148
+ endIndex: originalEndIndex,
149
+ } = node;
150
+
151
+ // compute what the new row-column will be
152
+ const newNumberOfLines = replacement.match(/\n/g)?.length || 0;
153
+ let newEndCol = originalStart.column;
154
+ if (newNumberOfLines == 0) {
155
+ newEndCol = originalStart.column + replacement.length;
156
+ } else {
157
+ newEndCol = replacement.split('\n').slice(-1)[0].length;
158
+ }
159
+ // updates all the indices of all the nodes
160
+ tree.edit({
161
+ startIndex: originalStartIndex,
162
+ oldEndIndex: originalEndIndex,
163
+ newEndIndex: originalStartIndex + replacement.length,
164
+ startPosition: originalStart,
165
+ oldEndPosition: originalEnd,
166
+ newEndPosition: {
167
+ row: originalStart.row + newNumberOfLines,
168
+ column: newEndCol,
169
+ },
170
+ });
171
+
172
+ this.tree.codeString = sourceCode.slice(0, originalStartIndex) +
173
+ replacement + sourceCode.slice(originalEndIndex);
174
+ }
175
+ }