@kerebron/tree-sitter 0.4.28 → 0.4.30

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 (64) hide show
  1. package/esm/deno-tree-sitter/main/extended/base_node.js +1 -0
  2. package/esm/deno-tree-sitter/main/extended/base_node.js.map +1 -0
  3. package/esm/deno-tree-sitter/main/extended/node_extended.js +1 -0
  4. package/esm/deno-tree-sitter/main/extended/node_extended.js.map +1 -0
  5. package/esm/deno-tree-sitter/main/extended/parser.js +1 -0
  6. package/esm/deno-tree-sitter/main/extended/parser.js.map +1 -0
  7. package/esm/deno-tree-sitter/main/extended/soft_node.js +1 -0
  8. package/esm/deno-tree-sitter/main/extended/soft_node.js.map +1 -0
  9. package/esm/deno-tree-sitter/main/extended/soft_text_node.js +1 -0
  10. package/esm/deno-tree-sitter/main/extended/soft_text_node.js.map +1 -0
  11. package/esm/deno-tree-sitter/main/extended/whitespace_node.js +1 -0
  12. package/esm/deno-tree-sitter/main/extended/whitespace_node.js.map +1 -0
  13. package/esm/deno-tree-sitter/main/extras/misc.js +1 -0
  14. package/esm/deno-tree-sitter/main/extras/misc.js.map +1 -0
  15. package/esm/deno-tree-sitter/main/tree_sitter/bindings.js +1 -0
  16. package/esm/deno-tree-sitter/main/tree_sitter/bindings.js.map +1 -0
  17. package/esm/deno-tree-sitter/main/tree_sitter/constants.js +1 -0
  18. package/esm/deno-tree-sitter/main/tree_sitter/constants.js.map +1 -0
  19. package/esm/deno-tree-sitter/main/tree_sitter/language.js +1 -0
  20. package/esm/deno-tree-sitter/main/tree_sitter/language.js.map +1 -0
  21. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.js +1 -0
  22. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.js.map +1 -0
  23. package/esm/deno-tree-sitter/main/tree_sitter/marshal.js +1 -0
  24. package/esm/deno-tree-sitter/main/tree_sitter/marshal.js.map +1 -0
  25. package/esm/deno-tree-sitter/main/tree_sitter/node.js +1 -0
  26. package/esm/deno-tree-sitter/main/tree_sitter/node.js.map +1 -0
  27. package/esm/deno-tree-sitter/main/tree_sitter/parser.js +1 -0
  28. package/esm/deno-tree-sitter/main/tree_sitter/parser.js.map +1 -0
  29. package/esm/deno-tree-sitter/main/tree_sitter/query.js +1 -0
  30. package/esm/deno-tree-sitter/main/tree_sitter/query.js.map +1 -0
  31. package/esm/deno-tree-sitter/main/tree_sitter/tree.js +1 -0
  32. package/esm/deno-tree-sitter/main/tree_sitter/tree.js.map +1 -0
  33. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.js +1 -0
  34. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.js.map +1 -0
  35. package/esm/deno-tree-sitter/main/tree_sitter_wasm.js +0 -0
  36. package/esm/deno-tree-sitter/main/tree_sitter_wasm.js.map +1 -0
  37. package/esm/deno-tree-sitter/main/wasm_loader.js +1 -0
  38. package/esm/deno-tree-sitter/main/wasm_loader.js.map +1 -0
  39. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.js +1 -0
  40. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.js.map +1 -0
  41. package/esm/mod.js +1 -0
  42. package/esm/mod.js.map +1 -0
  43. package/package.json +5 -1
  44. package/src/deno-tree-sitter/main/extended/base_node.js +174 -0
  45. package/src/deno-tree-sitter/main/extended/node_extended.js +588 -0
  46. package/src/deno-tree-sitter/main/extended/parser.js +87 -0
  47. package/src/deno-tree-sitter/main/extended/soft_node.js +32 -0
  48. package/src/deno-tree-sitter/main/extended/soft_text_node.js +11 -0
  49. package/src/deno-tree-sitter/main/extended/whitespace_node.js +11 -0
  50. package/src/deno-tree-sitter/main/extras/misc.js +12 -0
  51. package/src/deno-tree-sitter/main/tree_sitter/bindings.js +26 -0
  52. package/src/deno-tree-sitter/main/tree_sitter/constants.js +79 -0
  53. package/src/deno-tree-sitter/main/tree_sitter/language.js +289 -0
  54. package/src/deno-tree-sitter/main/tree_sitter/lookahead_iterator.js +74 -0
  55. package/src/deno-tree-sitter/main/tree_sitter/marshal.js +186 -0
  56. package/src/deno-tree-sitter/main/tree_sitter/node.js +616 -0
  57. package/src/deno-tree-sitter/main/tree_sitter/parser.js +273 -0
  58. package/src/deno-tree-sitter/main/tree_sitter/query.js +705 -0
  59. package/src/deno-tree-sitter/main/tree_sitter/tree.js +145 -0
  60. package/src/deno-tree-sitter/main/tree_sitter/tree_cursor.js +314 -0
  61. package/src/deno-tree-sitter/main/tree_sitter_wasm.js +0 -0
  62. package/src/deno-tree-sitter/main/wasm_loader.js +1702 -0
  63. package/src/deno-tree-sitter/main/wasm_loader_with_defaults.js +9 -0
  64. package/src/mod.ts +8 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kerebron/tree-sitter",
3
- "version": "0.4.28",
3
+ "version": "0.4.30",
4
4
  "license": "MIT",
5
5
  "module": "./esm/mod.js",
6
6
  "exports": {
@@ -9,6 +9,10 @@
9
9
  }
10
10
  },
11
11
  "scripts": {},
12
+ "files": [
13
+ "esm",
14
+ "src"
15
+ ],
12
16
  "devDependencies": {
13
17
  "@types/node": "^20.9.0"
14
18
  },
@@ -0,0 +1,174 @@
1
+ import { Node } from "../tree_sitter/node.js"
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(new RegExp(`^(?:.*\\r?\\n){${this.startPosition.row}}(\\s*)`))[1]
58
+ // equivalent but usually faster than:
59
+ // return this.tree.codeString.split("\n")[this.startPosition.row].match(/^\s*/)[0]
60
+ }
61
+
62
+ /** @type {Object} */
63
+ toJSON() {
64
+ const optionalData = {}
65
+ if (this.children?.length) {
66
+ return {
67
+ type: this.type,
68
+ typeId: this.typeId,
69
+ fieldNames: this.fieldNames,
70
+ startPosition: this.startPosition,
71
+ startIndex: this.startIndex,
72
+ endPosition: this.endPosition,
73
+ startIndex: this.startIndex,
74
+ endIndex: this.endIndex,
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
+ startIndex: this.startIndex,
88
+ endIndex: this.endIndex,
89
+ indent: this.indent,
90
+ ...optionalData,
91
+ text: this.text,
92
+ children: [],
93
+ }
94
+ }
95
+ }
96
+
97
+ [Symbol.for("Deno.customInspect")](inspect, options) {
98
+ const optional = {}
99
+ let text
100
+ try {
101
+ text = this.text
102
+ } catch (error) {
103
+ text = undefined
104
+ }
105
+ if (text == undefined) {
106
+ return this
107
+ }
108
+ return inspect(
109
+ {
110
+ '': text.length < 60 ? text : 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
+ startIndex: this.startIndex,
118
+ endIndex: this.endIndex,
119
+ indent: this.indent,
120
+ ...optional,
121
+ hasChildren: this.hasChildren,
122
+ children: [...(this.children || [])],
123
+ },
124
+ options
125
+ )
126
+ }
127
+ *iterFlattened() {
128
+
129
+ }
130
+ flattened() {
131
+ return []
132
+ }
133
+
134
+ /**
135
+ * Destroy the children of this node and replace the .text of this node with the given string.
136
+ *
137
+ * @param {string} replacement - description
138
+ */
139
+ replaceInnards(replacement) {
140
+ const tree = this.tree
141
+ const sourceCode = this.tree.codeString
142
+ const node = _shadows[this.id] || this
143
+ // clear out children (innards) because of replacement
144
+ node._children = []
145
+ node._fields = {}
146
+ // get the node position info
147
+ const {
148
+ startPosition: originalStart,
149
+ endPosition: originalEnd,
150
+ startIndex: originalStartIndex,
151
+ endIndex: originalEndIndex,
152
+ } = node
153
+
154
+ // compute what the new row-column will be
155
+ const newNumberOfLines = replacement.match(/\n/g)?.length || 0
156
+ let newEndCol = originalStart.column;
157
+ if (newNumberOfLines == 0) {
158
+ newEndCol = originalStart.column + replacement.length
159
+ } else {
160
+ newEndCol = replacement.split("\n").slice(-1)[0].length
161
+ }
162
+ // updates all the indices of all the nodes
163
+ tree.edit({
164
+ startIndex: originalStartIndex,
165
+ oldEndIndex: originalEndIndex,
166
+ newEndIndex: originalStartIndex + replacement.length,
167
+ startPosition: originalStart,
168
+ oldEndPosition: originalEnd,
169
+ newEndPosition: { row: originalStart.row + newNumberOfLines, column: newEndCol },
170
+ })
171
+
172
+ this.tree.codeString = sourceCode.slice(0, originalStartIndex) + replacement + sourceCode.slice(originalEndIndex)
173
+ }
174
+ }