@kerebron/tree-sitter 0.4.27 → 0.4.29

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 (107) hide show
  1. package/esm/deno-tree-sitter/main/extended/base_node.d.ts +48 -0
  2. package/esm/deno-tree-sitter/main/extended/base_node.d.ts.map +1 -0
  3. package/esm/deno-tree-sitter/main/extended/base_node.js +155 -0
  4. package/esm/deno-tree-sitter/main/extended/base_node.js.map +1 -0
  5. package/esm/deno-tree-sitter/main/extended/node_extended.d.ts +237 -0
  6. package/esm/deno-tree-sitter/main/extended/node_extended.d.ts.map +1 -0
  7. package/esm/deno-tree-sitter/main/extended/node_extended.js +573 -0
  8. package/esm/deno-tree-sitter/main/extended/node_extended.js.map +1 -0
  9. package/esm/deno-tree-sitter/main/extended/parser.d.ts +37 -0
  10. package/esm/deno-tree-sitter/main/extended/parser.d.ts.map +1 -0
  11. package/esm/deno-tree-sitter/main/extended/parser.js +87 -0
  12. package/esm/deno-tree-sitter/main/extended/parser.js.map +1 -0
  13. package/esm/deno-tree-sitter/main/extended/soft_node.d.ts +15 -0
  14. package/esm/deno-tree-sitter/main/extended/soft_node.d.ts.map +1 -0
  15. package/esm/deno-tree-sitter/main/extended/soft_node.js +28 -0
  16. package/esm/deno-tree-sitter/main/extended/soft_node.js.map +1 -0
  17. package/esm/deno-tree-sitter/main/extended/soft_text_node.d.ts +10 -0
  18. package/esm/deno-tree-sitter/main/extended/soft_text_node.d.ts.map +1 -0
  19. package/esm/deno-tree-sitter/main/extended/soft_text_node.js +11 -0
  20. package/esm/deno-tree-sitter/main/extended/soft_text_node.js.map +1 -0
  21. package/esm/deno-tree-sitter/main/extended/whitespace_node.d.ts +10 -0
  22. package/esm/deno-tree-sitter/main/extended/whitespace_node.d.ts.map +1 -0
  23. package/esm/deno-tree-sitter/main/extended/whitespace_node.js +11 -0
  24. package/esm/deno-tree-sitter/main/extended/whitespace_node.js.map +1 -0
  25. package/esm/deno-tree-sitter/main/extras/misc.d.ts +2 -0
  26. package/esm/deno-tree-sitter/main/extras/misc.d.ts.map +1 -0
  27. package/esm/deno-tree-sitter/main/extras/misc.js +14 -0
  28. package/esm/deno-tree-sitter/main/extras/misc.js.map +1 -0
  29. package/esm/deno-tree-sitter/main/tree_sitter/bindings.d.ts +14 -0
  30. package/esm/deno-tree-sitter/main/tree_sitter/bindings.d.ts.map +1 -0
  31. package/esm/deno-tree-sitter/main/tree_sitter/bindings.js +22 -0
  32. package/esm/deno-tree-sitter/main/tree_sitter/bindings.js.map +1 -0
  33. package/esm/deno-tree-sitter/main/tree_sitter/constants.d.ts +60 -0
  34. package/esm/deno-tree-sitter/main/tree_sitter/constants.d.ts.map +1 -0
  35. package/esm/deno-tree-sitter/main/tree_sitter/constants.js +67 -0
  36. package/esm/deno-tree-sitter/main/tree_sitter/constants.js.map +1 -0
  37. package/esm/deno-tree-sitter/main/tree_sitter/language.d.ts +137 -0
  38. package/esm/deno-tree-sitter/main/tree_sitter/language.d.ts.map +1 -0
  39. package/esm/deno-tree-sitter/main/tree_sitter/language.js +265 -0
  40. package/esm/deno-tree-sitter/main/tree_sitter/language.js.map +1 -0
  41. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.d.ts +41 -0
  42. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.d.ts.map +1 -0
  43. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.js +66 -0
  44. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.js.map +1 -0
  45. package/esm/deno-tree-sitter/main/tree_sitter/marshal.d.ts +85 -0
  46. package/esm/deno-tree-sitter/main/tree_sitter/marshal.d.ts.map +1 -0
  47. package/esm/deno-tree-sitter/main/tree_sitter/marshal.js +174 -0
  48. package/esm/deno-tree-sitter/main/tree_sitter/marshal.js.map +1 -0
  49. package/esm/deno-tree-sitter/main/tree_sitter/node.d.ts +260 -0
  50. package/esm/deno-tree-sitter/main/tree_sitter/node.d.ts.map +1 -0
  51. package/esm/deno-tree-sitter/main/tree_sitter/node.js +558 -0
  52. package/esm/deno-tree-sitter/main/tree_sitter/node.js.map +1 -0
  53. package/esm/deno-tree-sitter/main/tree_sitter/parser.d.ts +124 -0
  54. package/esm/deno-tree-sitter/main/tree_sitter/parser.d.ts.map +1 -0
  55. package/esm/deno-tree-sitter/main/tree_sitter/parser.js +253 -0
  56. package/esm/deno-tree-sitter/main/tree_sitter/parser.js.map +1 -0
  57. package/esm/deno-tree-sitter/main/tree_sitter/query.d.ts +134 -0
  58. package/esm/deno-tree-sitter/main/tree_sitter/query.d.ts.map +1 -0
  59. package/esm/deno-tree-sitter/main/tree_sitter/query.js +621 -0
  60. package/esm/deno-tree-sitter/main/tree_sitter/query.js.map +1 -0
  61. package/esm/deno-tree-sitter/main/tree_sitter/tree.d.ts +49 -0
  62. package/esm/deno-tree-sitter/main/tree_sitter/tree.d.ts.map +1 -0
  63. package/esm/deno-tree-sitter/main/tree_sitter/tree.js +131 -0
  64. package/esm/deno-tree-sitter/main/tree_sitter/tree.js.map +1 -0
  65. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.d.ts +165 -0
  66. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.d.ts.map +1 -0
  67. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.js +281 -0
  68. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.js.map +1 -0
  69. package/esm/deno-tree-sitter/main/tree_sitter_wasm.d.ts +3 -0
  70. package/esm/deno-tree-sitter/main/tree_sitter_wasm.d.ts.map +1 -0
  71. package/esm/deno-tree-sitter/main/tree_sitter_wasm.js +0 -0
  72. package/esm/deno-tree-sitter/main/tree_sitter_wasm.js.map +1 -0
  73. package/esm/deno-tree-sitter/main/wasm_loader.d.ts +29 -0
  74. package/esm/deno-tree-sitter/main/wasm_loader.d.ts.map +1 -0
  75. package/esm/deno-tree-sitter/main/wasm_loader.js +1703 -0
  76. package/esm/deno-tree-sitter/main/wasm_loader.js.map +1 -0
  77. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.d.ts +3 -0
  78. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.d.ts.map +1 -0
  79. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.js +9 -0
  80. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.js.map +1 -0
  81. package/esm/mod.d.ts +7 -0
  82. package/esm/mod.d.ts.map +1 -0
  83. package/esm/mod.js +8 -0
  84. package/esm/mod.js.map +1 -0
  85. package/esm/package.json +3 -0
  86. package/package.json +5 -2
  87. package/src/deno-tree-sitter/main/extended/base_node.js +174 -0
  88. package/src/deno-tree-sitter/main/extended/node_extended.js +588 -0
  89. package/src/deno-tree-sitter/main/extended/parser.js +87 -0
  90. package/src/deno-tree-sitter/main/extended/soft_node.js +32 -0
  91. package/src/deno-tree-sitter/main/extended/soft_text_node.js +11 -0
  92. package/src/deno-tree-sitter/main/extended/whitespace_node.js +11 -0
  93. package/src/deno-tree-sitter/main/extras/misc.js +12 -0
  94. package/src/deno-tree-sitter/main/tree_sitter/bindings.js +26 -0
  95. package/src/deno-tree-sitter/main/tree_sitter/constants.js +79 -0
  96. package/src/deno-tree-sitter/main/tree_sitter/language.js +289 -0
  97. package/src/deno-tree-sitter/main/tree_sitter/lookahead_iterator.js +74 -0
  98. package/src/deno-tree-sitter/main/tree_sitter/marshal.js +186 -0
  99. package/src/deno-tree-sitter/main/tree_sitter/node.js +616 -0
  100. package/src/deno-tree-sitter/main/tree_sitter/parser.js +273 -0
  101. package/src/deno-tree-sitter/main/tree_sitter/query.js +705 -0
  102. package/src/deno-tree-sitter/main/tree_sitter/tree.js +145 -0
  103. package/src/deno-tree-sitter/main/tree_sitter/tree_cursor.js +314 -0
  104. package/src/deno-tree-sitter/main/tree_sitter_wasm.js +0 -0
  105. package/src/deno-tree-sitter/main/wasm_loader.js +1702 -0
  106. package/src/deno-tree-sitter/main/wasm_loader_with_defaults.js +9 -0
  107. package/src/mod.ts +8 -0
@@ -0,0 +1,273 @@
1
+ import { C, INTERNAL, SIZE_OF_INT, SIZE_OF_RANGE, setModule } from "./constants.js"
2
+ import { Language } from "./language.js"
3
+ import { marshalRange, unmarshalRange } from "./marshal.js"
4
+ import { checkModule, initializeBinding } from "./bindings.js"
5
+ import { Tree } from "./tree.js"
6
+
7
+ /**
8
+ * Options for parsing
9
+ *
10
+ * The `includedRanges` property is an array of {@link Range} objects that
11
+ * represent the ranges of text that the parser should include when parsing.
12
+ *
13
+ * The `progressCallback` property is a function that is called periodically
14
+ * during parsing to check whether parsing should be cancelled.
15
+ *
16
+ * See {@link Parser#parse} for more information.
17
+ */
18
+ /**
19
+ * A stateful object that is passed into the progress callback {@link ParseOptions#progressCallback}
20
+ * to provide the current state of the parser.
21
+ */
22
+ /**
23
+ * @internal
24
+ *
25
+ * Global variable for transferring data across the FFI boundary
26
+ */
27
+ export let TRANSFER_BUFFER
28
+
29
+ /**
30
+ * The latest ABI version that is supported by the current version of the
31
+ * library.
32
+ *
33
+ * When Languages are generated by the Tree-sitter CLI, they are
34
+ * assigned an ABI version number that corresponds to the current CLI version.
35
+ * The Tree-sitter library is generally backwards-compatible with languages
36
+ * generated using older CLI versions, but is not forwards-compatible.
37
+ */
38
+ export let LANGUAGE_VERSION
39
+
40
+ /**
41
+ * The earliest ABI version that is supported by the current version of the
42
+ * library.
43
+ */
44
+ export let MIN_COMPATIBLE_VERSION
45
+
46
+ /**
47
+ * A stateful object that is used to produce a {@link Tree} based on some
48
+ * source code.
49
+ */
50
+ export class Parser {
51
+ /** @internal */
52
+ [0] = 0; // Internal handle for Wasm
53
+
54
+ /** @internal */
55
+ [1] = 0 // Internal handle for Wasm
56
+
57
+ /** @internal */
58
+ logCallback = null
59
+
60
+ /** The parser's current language. */
61
+ language = null
62
+
63
+ /**
64
+ * This must always be called before creating a Parser.
65
+ *
66
+ * You can optionally pass in options to configure the Wasm module, the most common
67
+ * one being `locateFile` to help the module find the `.wasm` file.
68
+ */
69
+ static async init(moduleOptions) {
70
+ setModule(await initializeBinding(moduleOptions))
71
+ TRANSFER_BUFFER = C._ts_init()
72
+ LANGUAGE_VERSION = C.getValue(TRANSFER_BUFFER, "i32")
73
+ MIN_COMPATIBLE_VERSION = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32")
74
+ }
75
+
76
+ /**
77
+ * Create a new parser.
78
+ */
79
+ constructor() {
80
+ this.initialize()
81
+ }
82
+
83
+ /** @internal */
84
+ initialize() {
85
+ if (!checkModule()) {
86
+ throw new Error("cannot construct a Parser before calling `init()`")
87
+ }
88
+ C._ts_parser_new_wasm()
89
+ this[0] = C.getValue(TRANSFER_BUFFER, "i32")
90
+ this[1] = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32")
91
+ }
92
+
93
+ /** Delete the parser, freeing its resources. */
94
+ delete() {
95
+ C._ts_parser_delete(this[0])
96
+ C._free(this[1])
97
+ this[0] = 0
98
+ this[1] = 0
99
+ }
100
+
101
+ /**
102
+ * Set the language that the parser should use for parsing.
103
+ *
104
+ * If the language was not successfully assigned, an error will be thrown.
105
+ * This happens if the language was generated with an incompatible
106
+ * version of the Tree-sitter CLI. Check the language's version using
107
+ * {@link Language#version} and compare it to this library's
108
+ * {@link LANGUAGE_VERSION} and {@link MIN_COMPATIBLE_VERSION} constants.
109
+ */
110
+ setLanguage(language) {
111
+ let address
112
+ if (!language) {
113
+ address = 0
114
+ this.language = null
115
+ } else if (language.constructor === Language) {
116
+ address = language[0]
117
+ const version = C._ts_language_version(address)
118
+ if (version < MIN_COMPATIBLE_VERSION || LANGUAGE_VERSION < version) {
119
+ throw new Error(`Incompatible language version ${version}. ` + `Compatibility range ${MIN_COMPATIBLE_VERSION} through ${LANGUAGE_VERSION}.`)
120
+ }
121
+ this.language = language
122
+ } else {
123
+ throw new Error("Argument must be a Language")
124
+ }
125
+
126
+ C._ts_parser_set_language(this[0], address)
127
+ return this
128
+ }
129
+
130
+ /**
131
+ * Parse a slice of UTF8 text.
132
+ *
133
+ * @param {string | ParseCallback} callback - The UTF8-encoded text to parse or a callback function.
134
+ *
135
+ * @param {Tree | null} [oldTree] - A previous syntax tree parsed from the same document. If the text of the
136
+ * document has changed since `oldTree` was created, then you must edit `oldTree` to match
137
+ * the new text using {@link Tree#edit}.
138
+ *
139
+ * @param {ParseOptions} [options] - Options for parsing the text.
140
+ * This can be used to set the included ranges, or a progress callback.
141
+ *
142
+ * @returns {Tree | null} A {@link Tree} if parsing succeeded, or `null` if:
143
+ * - The parser has not yet had a language assigned with {@link Parser#setLanguage}.
144
+ * - The progress callback returned true.
145
+ */
146
+ parse(callback, oldTree, options) {
147
+ if (typeof callback === "string") {
148
+ C.currentParseCallback = (index) => callback.slice(index)
149
+ } else if (typeof callback === "function") {
150
+ C.currentParseCallback = callback
151
+ } else {
152
+ throw new Error("Argument must be a string or a function")
153
+ }
154
+
155
+ if (options?.progressCallback) {
156
+ C.currentProgressCallback = options.progressCallback
157
+ } else {
158
+ C.currentProgressCallback = null
159
+ }
160
+
161
+ if (this.logCallback) {
162
+ C.currentLogCallback = this.logCallback
163
+ C._ts_parser_enable_logger_wasm(this[0], 1)
164
+ } else {
165
+ C.currentLogCallback = null
166
+ C._ts_parser_enable_logger_wasm(this[0], 0)
167
+ }
168
+
169
+ let rangeCount = 0
170
+ let rangeAddress = 0
171
+ if (options?.includedRanges) {
172
+ rangeCount = options.includedRanges.length
173
+ rangeAddress = C._calloc(rangeCount, SIZE_OF_RANGE)
174
+ let address = rangeAddress
175
+ for (let i = 0; i < rangeCount; i++) {
176
+ marshalRange(address, options.includedRanges[i])
177
+ address += SIZE_OF_RANGE
178
+ }
179
+ }
180
+
181
+ const treeAddress = C._ts_parser_parse_wasm(this[0], this[1], oldTree ? oldTree[0] : 0, rangeAddress, rangeCount)
182
+
183
+ if (!treeAddress) {
184
+ C.currentParseCallback = null
185
+ C.currentLogCallback = null
186
+ C.currentProgressCallback = null
187
+ return null
188
+ }
189
+
190
+ if (!this.language) {
191
+ throw new Error("Parser must have a language to parse")
192
+ }
193
+
194
+ const result = new Tree(INTERNAL, treeAddress, this.language, C.currentParseCallback)
195
+ C.currentParseCallback = null
196
+ C.currentLogCallback = null
197
+ C.currentProgressCallback = null
198
+ return result
199
+ }
200
+
201
+ /**
202
+ * Instruct the parser to start the next parse from the beginning.
203
+ *
204
+ * If the parser previously failed because of a timeout, cancellation,
205
+ * or callback, then by default, it will resume where it left off on the
206
+ * next call to {@link Parser#parse} or other parsing functions.
207
+ * If you don't want to resume, and instead intend to use this parser to
208
+ * parse some other document, you must call `reset` first.
209
+ */
210
+ reset() {
211
+ C._ts_parser_reset(this[0])
212
+ }
213
+
214
+ /** Get the ranges of text that the parser will include when parsing. */
215
+ getIncludedRanges() {
216
+ C._ts_parser_included_ranges_wasm(this[0])
217
+ const count = C.getValue(TRANSFER_BUFFER, "i32")
218
+ const buffer = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32")
219
+ const result = new Array(count)
220
+
221
+ if (count > 0) {
222
+ let address = buffer
223
+ for (let i = 0; i < count; i++) {
224
+ result[i] = unmarshalRange(address)
225
+ address += SIZE_OF_RANGE
226
+ }
227
+ C._free(buffer)
228
+ }
229
+
230
+ return result
231
+ }
232
+
233
+ /**
234
+ * @deprecated since version 0.25.0, prefer passing a progress callback to {@link Parser#parse}
235
+ *
236
+ * Get the duration in microseconds that parsing is allowed to take.
237
+ *
238
+ * This is set via {@link Parser#setTimeoutMicros}.
239
+ */
240
+ getTimeoutMicros() {
241
+ return C._ts_parser_timeout_micros(this[0])
242
+ }
243
+
244
+ /**
245
+ * @deprecated since version 0.25.0, prefer passing a progress callback to {@link Parser#parse}
246
+ *
247
+ * Set the maximum duration in microseconds that parsing should be allowed
248
+ * to take before halting.
249
+ *
250
+ * If parsing takes longer than this, it will halt early, returning `null`.
251
+ * See {@link Parser#parse} for more information.
252
+ */
253
+ setTimeoutMicros(timeout) {
254
+ C._ts_parser_set_timeout_micros(this[0], 0, timeout)
255
+ }
256
+
257
+ /** Set the logging callback that a parser should use during parsing. */
258
+ setLogger(callback) {
259
+ if (!callback) {
260
+ this.logCallback = null
261
+ } else if (typeof callback !== "function") {
262
+ throw new Error("Logger callback must be a function")
263
+ } else {
264
+ this.logCallback = callback
265
+ }
266
+ return this
267
+ }
268
+
269
+ /** Get the parser's current logger. */
270
+ getLogger() {
271
+ return this.logCallback
272
+ }
273
+ }