@lezer/common 0.15.12 → 1.0.0

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/dist/tree.d.ts CHANGED
@@ -62,6 +62,12 @@ export declare class NodeSet {
62
62
  constructor(types: readonly NodeType[]);
63
63
  extend(...props: NodePropSource[]): NodeSet;
64
64
  }
65
+ export declare enum IterMode {
66
+ ExcludeBuffers = 1,
67
+ IncludeAnonymous = 2,
68
+ IgnoreMounts = 4,
69
+ IgnoreOverlays = 8
70
+ }
65
71
  export declare class Tree {
66
72
  readonly type: NodeType;
67
73
  readonly children: readonly (Tree | TreeBuffer)[];
@@ -69,16 +75,17 @@ export declare class Tree {
69
75
  readonly length: number;
70
76
  constructor(type: NodeType, children: readonly (Tree | TreeBuffer)[], positions: readonly number[], length: number, props?: readonly [NodeProp<any> | number, any][]);
71
77
  static empty: Tree;
72
- cursor(pos?: number, side?: -1 | 0 | 1): TreeCursor;
73
- fullCursor(): TreeCursor;
78
+ cursor(mode?: IterMode): TreeCursor;
79
+ cursorAt(pos: number, side?: -1 | 0 | 1, mode?: IterMode): TreeCursor;
74
80
  get topNode(): SyntaxNode;
75
81
  resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
76
82
  resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
77
83
  iterate(spec: {
78
- enter(type: NodeType, from: number, to: number, get: () => SyntaxNode): false | void;
79
- leave?(type: NodeType, from: number, to: number, get: () => SyntaxNode): void;
84
+ enter(node: SyntaxNodeRef): boolean | void;
85
+ leave?(node: SyntaxNodeRef): void;
80
86
  from?: number;
81
87
  to?: number;
88
+ mode?: IterMode;
82
89
  }): void;
83
90
  prop<T>(prop: NodeProp<T>): T | undefined;
84
91
  get propValues(): readonly [NodeProp<any> | number, any][];
@@ -113,27 +120,32 @@ export declare class TreeBuffer {
113
120
  readonly set: NodeSet;
114
121
  constructor(buffer: Uint16Array, length: number, set: NodeSet);
115
122
  }
116
- export interface SyntaxNode {
117
- type: NodeType;
118
- name: string;
119
- from: number;
120
- to: number;
123
+ export interface SyntaxNodeRef {
124
+ readonly from: number;
125
+ readonly to: number;
126
+ readonly type: NodeType;
127
+ readonly name: string;
128
+ readonly tree: Tree | null;
129
+ readonly node: SyntaxNode;
130
+ matchContext(context: readonly string[]): boolean;
131
+ }
132
+ export interface SyntaxNode extends SyntaxNodeRef {
121
133
  parent: SyntaxNode | null;
122
134
  firstChild: SyntaxNode | null;
123
135
  lastChild: SyntaxNode | null;
124
136
  childAfter(pos: number): SyntaxNode | null;
125
137
  childBefore(pos: number): SyntaxNode | null;
126
- enter(pos: number, side: -1 | 0 | 1, overlays?: boolean, buffers?: boolean): SyntaxNode | null;
138
+ enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): SyntaxNode | null;
127
139
  nextSibling: SyntaxNode | null;
128
140
  prevSibling: SyntaxNode | null;
129
- cursor: TreeCursor;
141
+ cursor(mode?: IterMode): TreeCursor;
130
142
  resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
131
143
  resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
132
144
  enterUnfinishedNodesBefore(pos: number): SyntaxNode;
133
- tree: Tree | null;
134
145
  toTree(): Tree;
135
146
  getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode | null;
136
147
  getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
148
+ matchContext(context: readonly string[]): boolean;
137
149
  }
138
150
  declare const enum Side {
139
151
  Before = -2,
@@ -143,31 +155,26 @@ declare const enum Side {
143
155
  After = 2,
144
156
  DontCare = 4
145
157
  }
146
- export declare const enum Mode {
147
- Full = 1,
148
- NoEnterBuffer = 2
149
- }
150
158
  export declare class TreeNode implements SyntaxNode {
151
- readonly node: Tree;
152
- readonly _from: number;
159
+ readonly _tree: Tree;
160
+ readonly from: number;
153
161
  readonly index: number;
154
162
  readonly _parent: TreeNode | null;
155
- constructor(node: Tree, _from: number, index: number, _parent: TreeNode | null);
163
+ constructor(_tree: Tree, from: number, index: number, _parent: TreeNode | null);
156
164
  get type(): NodeType;
157
165
  get name(): string;
158
- get from(): number;
159
166
  get to(): number;
160
- nextChild(i: number, dir: 1 | -1, pos: number, side: Side, mode?: Mode): TreeNode | BufferNode | null;
167
+ nextChild(i: number, dir: 1 | -1, pos: number, side: Side, mode?: IterMode): TreeNode | BufferNode | null;
161
168
  get firstChild(): TreeNode | BufferNode;
162
169
  get lastChild(): TreeNode | BufferNode;
163
170
  childAfter(pos: number): TreeNode | BufferNode;
164
171
  childBefore(pos: number): TreeNode | BufferNode;
165
- enter(pos: number, side: -1 | 0 | 1, overlays?: boolean, buffers?: boolean): TreeNode | BufferNode;
172
+ enter(pos: number, side: -1 | 0 | 1, mode?: number): TreeNode | BufferNode;
166
173
  nextSignificantParent(): TreeNode;
167
- get parent(): TreeNode;
168
- get nextSibling(): TreeNode | BufferNode;
169
- get prevSibling(): TreeNode | BufferNode;
170
- get cursor(): TreeCursor;
174
+ get parent(): TreeNode | null;
175
+ get nextSibling(): SyntaxNode | null;
176
+ get prevSibling(): SyntaxNode | null;
177
+ cursor(mode?: IterMode): TreeCursor;
171
178
  get tree(): Tree;
172
179
  toTree(): Tree;
173
180
  resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
@@ -175,6 +182,8 @@ export declare class TreeNode implements SyntaxNode {
175
182
  enterUnfinishedNodesBefore(pos: number): SyntaxNode;
176
183
  getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode;
177
184
  getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
185
+ get node(): this;
186
+ matchContext(context: readonly string[]): boolean;
178
187
  }
179
188
  declare class BufferContext {
180
189
  readonly parent: TreeNode;
@@ -197,12 +206,12 @@ declare class BufferNode implements SyntaxNode {
197
206
  get lastChild(): BufferNode;
198
207
  childAfter(pos: number): BufferNode;
199
208
  childBefore(pos: number): BufferNode;
200
- enter(pos: number, side: -1 | 0 | 1, overlays?: boolean, buffers?: boolean): BufferNode;
201
- get parent(): TreeNode | BufferNode;
209
+ enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): BufferNode;
210
+ get parent(): SyntaxNode | null;
202
211
  externalSibling(dir: 1 | -1): TreeNode | BufferNode;
203
212
  get nextSibling(): SyntaxNode | null;
204
213
  get prevSibling(): SyntaxNode | null;
205
- get cursor(): TreeCursor;
214
+ cursor(mode?: IterMode): TreeCursor;
206
215
  get tree(): any;
207
216
  toTree(): Tree;
208
217
  resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
@@ -210,15 +219,15 @@ declare class BufferNode implements SyntaxNode {
210
219
  enterUnfinishedNodesBefore(pos: number): SyntaxNode;
211
220
  getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode;
212
221
  getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
222
+ get node(): this;
223
+ matchContext(context: readonly string[]): boolean;
213
224
  }
214
- export declare class TreeCursor {
225
+ export declare class TreeCursor implements SyntaxNodeRef {
215
226
  type: NodeType;
216
227
  get name(): string;
217
228
  from: number;
218
229
  to: number;
219
- private buffer;
220
230
  private stack;
221
- private index;
222
231
  private bufferNode;
223
232
  private yieldNode;
224
233
  private yieldBuf;
@@ -227,7 +236,7 @@ export declare class TreeCursor {
227
236
  lastChild(): boolean;
228
237
  childAfter(pos: number): boolean;
229
238
  childBefore(pos: number): boolean;
230
- enter(pos: number, side: -1 | 0 | 1, overlays?: boolean, buffers?: boolean): boolean;
239
+ enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): boolean;
231
240
  parent(): boolean;
232
241
  nextSibling(): boolean;
233
242
  prevSibling(): boolean;
@@ -238,5 +247,16 @@ export declare class TreeCursor {
238
247
  moveTo(pos: number, side?: -1 | 0 | 1): this;
239
248
  get node(): SyntaxNode;
240
249
  get tree(): Tree | null;
250
+ iterate(enter: (node: SyntaxNodeRef) => boolean | void, leave?: (node: SyntaxNodeRef) => void): void;
251
+ matchContext(context: readonly string[]): boolean;
252
+ }
253
+ export declare class NodeWeakMap<T> {
254
+ private map;
255
+ private setBuffer;
256
+ private getBuffer;
257
+ set(node: SyntaxNode, value: T): void;
258
+ get(node: SyntaxNode): T | undefined;
259
+ cursorSet(cursor: TreeCursor, value: T): void;
260
+ cursorGet(cursor: TreeCursor): T | undefined;
241
261
  }
242
262
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lezer/common",
3
- "version": "0.15.12",
3
+ "version": "1.0.0",
4
4
  "description": "Syntax tree data structure and parser interfaces for the lezer parser",
5
5
  "main": "dist/index.cjs",
6
6
  "type": "module",