@spyglassmc/mcdoc 0.1.1 → 0.3.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.
@@ -1,5 +1,5 @@
1
1
  import type { Colorizer, MetaRegistry } from '@spyglassmc/core';
2
- import type { IdentifierNode, LiteralNode } from '../node';
2
+ import type { IdentifierNode, LiteralNode } from '../node/index.js';
3
3
  export declare const identifier: Colorizer<IdentifierNode>;
4
4
  export declare const literal: Colorizer<LiteralNode>;
5
5
  export declare function registerMcdocColorizer(meta: MetaRegistry): void;
@@ -1,18 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerMcdocColorizer = exports.literal = exports.identifier = void 0;
4
- const core_1 = require("@spyglassmc/core");
5
- const identifier = node => {
6
- return [core_1.ColorToken.create(node, 'variable')];
1
+ import { ColorToken } from '@spyglassmc/core';
2
+ export const identifier = node => {
3
+ return [ColorToken.create(node, 'variable')];
7
4
  };
8
- exports.identifier = identifier;
9
- const literal = node => {
10
- return [core_1.ColorToken.create(node, node.colorTokenType ?? 'literal')];
5
+ export const literal = node => {
6
+ return [ColorToken.create(node, node.colorTokenType ?? 'literal')];
11
7
  };
12
- exports.literal = literal;
13
- function registerMcdocColorizer(meta) {
14
- meta.registerColorizer('mcdoc:literal', exports.literal);
15
- meta.registerColorizer('mcdoc:identifier', exports.identifier);
8
+ export function registerMcdocColorizer(meta) {
9
+ meta.registerColorizer('mcdoc:literal', literal);
10
+ meta.registerColorizer('mcdoc:identifier', identifier);
16
11
  }
17
- exports.registerMcdocColorizer = registerMcdocColorizer;
18
12
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,7 @@
1
1
  export declare type Segments = readonly string[];
2
2
  export declare function identifierToSeg(identifier: string): Segments;
3
3
  export declare function segToIdentifier(seg: Segments): string;
4
- //# sourceMappingURL=util.d.ts.map
4
+ export interface AdditionalContext {
5
+ moduleIdentifier: string;
6
+ }
7
+ //# sourceMappingURL=common.d.ts.map
package/lib/common.js ADDED
@@ -0,0 +1,11 @@
1
+ export function identifierToSeg(identifier) {
2
+ const ans = identifier.slice(2).split('::');
3
+ if (ans.length === 1 && ans[0] === '') {
4
+ return [];
5
+ }
6
+ return ans;
7
+ }
8
+ export function segToIdentifier(seg) {
9
+ return `::${seg.join('::')}`;
10
+ }
11
+ //# sourceMappingURL=common.js.map
package/lib/index.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  import type * as core from '@spyglassmc/core';
2
- export * as checker from './checker';
3
- export * as colorizer from './colorizer';
4
- export * from './node';
5
- export * from './parser';
6
- export * from './type';
7
- export declare const initialize: core.ProjectInitializer;
2
+ export * as binder from './binder/index.js';
3
+ export * as colorizer from './colorizer/index.js';
4
+ export * from './node/index.js';
5
+ export * from './parser/index.js';
6
+ export * from './type/index.js';
7
+ export * from './uri_processors.js';
8
+ export declare const initialize: ({ meta }: {
9
+ meta: core.MetaRegistry;
10
+ }) => void;
8
11
  //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -1,50 +1,22 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.initialize = exports.colorizer = exports.checker = void 0;
30
- const binder = __importStar(require("./binder"));
31
- const checker = __importStar(require("./checker"));
32
- const colorizer = __importStar(require("./colorizer"));
33
- const parser = __importStar(require("./parser"));
34
- exports.checker = __importStar(require("./checker"));
35
- exports.colorizer = __importStar(require("./colorizer"));
36
- __exportStar(require("./node"), exports);
37
- __exportStar(require("./parser"), exports);
38
- __exportStar(require("./type"), exports);
1
+ import * as binder from './binder/index.js';
2
+ import * as colorizer from './colorizer/index.js';
3
+ import * as parser from './parser/index.js';
4
+ import * as uri_professors from './uri_processors.js';
5
+ export * as binder from './binder/index.js';
6
+ export * as colorizer from './colorizer/index.js';
7
+ export * from './node/index.js';
8
+ export * from './parser/index.js';
9
+ export * from './type/index.js';
10
+ export * from './uri_processors.js';
39
11
  /* istanbul ignore next */
40
- const initialize = ({ meta }) => {
12
+ export const initialize = ({ meta }) => {
41
13
  meta.registerLanguage('mcdoc', {
42
14
  extensions: ['.mcdoc'],
43
15
  parser: parser.module_,
44
16
  });
45
- meta.registerChecker('mcdoc:module', checker.module_);
46
- meta.registerUriBinder(binder.uriBinder);
17
+ meta.registerUriBinder(uri_professors.uriBinder);
18
+ meta.setUriSorter(uri_professors.uriSorter);
19
+ binder.registerMcdocBinders(meta);
47
20
  colorizer.registerMcdocColorizer(meta);
48
21
  };
49
- exports.initialize = initialize;
50
22
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,5 @@
1
- import type { AstNode, ColorTokenType, FloatNode, IntegerNode, SymbolBaseNode } from '@spyglassmc/core';
2
- import { CommentNode, ResourceLocationNode, StringNode } from '@spyglassmc/core';
3
- import type { McdocType } from '../type';
1
+ import type { AstNode, ColorTokenType, IntegerNode, SymbolBaseNode } from '@spyglassmc/core';
2
+ import { CommentNode, FloatNode, ResourceLocationNode, StringNode } from '@spyglassmc/core';
4
3
  export interface ModuleNode extends AstNode {
5
4
  type: 'mcdoc:module';
6
5
  children: TopLevelNode[];
@@ -17,6 +16,12 @@ export interface DispatchStatementNode extends AstNode {
17
16
  children: (CommentNode | AttributeNode | LiteralNode | ResourceLocationNode | IndexBodyNode | TypeNode)[];
18
17
  }
19
18
  export declare const DispatchStatementNode: Readonly<{
19
+ destruct(node: DispatchStatementNode): {
20
+ attributes: AttributeNode[];
21
+ location?: ResourceLocationNode;
22
+ index?: IndexBodyNode;
23
+ target?: TypeNode;
24
+ };
20
25
  is(node: AstNode | undefined): node is DispatchStatementNode;
21
26
  }>;
22
27
  export interface LiteralNode extends AstNode {
@@ -32,6 +37,9 @@ export interface IndexBodyNode extends AstNode {
32
37
  children: (CommentNode | IndexNode)[];
33
38
  }
34
39
  export declare const IndexBodyNode: Readonly<{
40
+ destruct(node: IndexBodyNode): {
41
+ parallelIndices: IndexNode[];
42
+ };
35
43
  is(node: AstNode | undefined): node is IndexBodyNode;
36
44
  }>;
37
45
  export declare type IndexNode = StaticIndexNode | DynamicIndexNode;
@@ -53,27 +61,38 @@ export interface DynamicIndexNode extends AstNode {
53
61
  children: (CommentNode | AccessorKeyNode)[];
54
62
  }
55
63
  export declare const DynamicIndexNode: Readonly<{
64
+ destruct(node: DynamicIndexNode): {
65
+ keys: AccessorKeyNode[];
66
+ };
56
67
  is(node: AstNode | undefined): node is DynamicIndexNode;
57
68
  }>;
58
69
  export declare type AccessorKeyNode = LiteralNode | IdentifierNode | StringNode;
59
70
  export declare const AccessorKeyNode: Readonly<{
60
71
  is(node: AstNode | undefined): node is AccessorKeyNode;
61
72
  }>;
62
- export declare type TypeNode = AnyTypeNode | BooleanTypeNode | StringTypeNode | LiteralTypeNode | NumericTypeNode | PrimitiveArrayTypeNode | ListTypeNode | TupleTypeNode | EnumNode | StructNode | PathTypeNode | DispatcherTypeNode | UnionTypeNode;
73
+ export declare type TypeNode = AnyTypeNode | BooleanTypeNode | StringTypeNode | LiteralTypeNode | NumericTypeNode | PrimitiveArrayTypeNode | ListTypeNode | TupleTypeNode | EnumNode | StructNode | ReferenceTypeNode | DispatcherTypeNode | UnionTypeNode;
63
74
  export declare const TypeNode: Readonly<{
64
75
  is(node: AstNode | undefined): node is TypeNode;
65
- asType(node: TypeNode): McdocType;
66
76
  }>;
67
77
  export interface TypeBaseNode<CN extends AstNode> extends AstNode {
68
78
  type: `mcdoc:${string}`;
69
79
  children: (CommentNode | AttributeNode | IndexBodyNode | CN)[];
70
80
  }
81
+ export declare const TypeBaseNode: Readonly<{
82
+ destruct(node: TypeBaseNode<any>): {
83
+ attributes: AttributeNode[];
84
+ indices: IndexBodyNode[];
85
+ };
86
+ }>;
71
87
  export interface AttributeNode extends AstNode {
72
88
  type: 'mcdoc:attribute';
73
89
  children: (CommentNode | IdentifierNode | AttributeValueNode)[];
74
- sep?: boolean;
75
90
  }
76
91
  export declare const AttributeNode: Readonly<{
92
+ destruct(node: AttributeNode): {
93
+ name: IdentifierNode;
94
+ value: AttributeValueNode | undefined;
95
+ };
77
96
  is(node: AstNode | undefined): node is AttributeNode;
78
97
  }>;
79
98
  export declare type AttributeValueNode = TypeNode | AttributeTreeNode;
@@ -86,6 +105,10 @@ export interface AttributeTreeNode extends AstNode {
86
105
  delim: '(' | '[' | '{';
87
106
  }
88
107
  export declare const AttributeTreeNode: Readonly<{
108
+ destruct(node: AttributeTreeNode): {
109
+ positional?: AttributeTreePosValuesNode;
110
+ named?: AttributeTreeNamedValuesNode;
111
+ };
89
112
  is(node: AstNode | undefined): node is AttributeTreeNode;
90
113
  }>;
91
114
  export interface AttributeTreePosValuesNode extends AstNode {
@@ -93,6 +116,9 @@ export interface AttributeTreePosValuesNode extends AstNode {
93
116
  children: (CommentNode | AttributeValueNode)[];
94
117
  }
95
118
  export declare const AttributeTreePosValuesNode: Readonly<{
119
+ destruct(node: AttributeTreePosValuesNode): {
120
+ values: AttributeValueNode[];
121
+ };
96
122
  is(node: AstNode | undefined): node is AttributeTreePosValuesNode;
97
123
  }>;
98
124
  export interface AttributeTreeNamedValuesNode extends AstNode {
@@ -100,8 +126,15 @@ export interface AttributeTreeNamedValuesNode extends AstNode {
100
126
  children: (CommentNode | IdentifierNode | StringNode | AttributeValueNode)[];
101
127
  }
102
128
  export declare const AttributeTreeNamedValuesNode: Readonly<{
129
+ destruct(node: AttributeTreeNamedValuesNode): {
130
+ values: AttributeTreeNamedKeyValuePair[];
131
+ };
103
132
  is(node: AstNode | undefined): node is AttributeTreeNamedValuesNode;
104
133
  }>;
134
+ export interface AttributeTreeNamedKeyValuePair {
135
+ key: IdentifierNode | StringNode;
136
+ value: AttributeValueNode;
137
+ }
105
138
  export interface AnyTypeNode extends TypeBaseNode<LiteralNode> {
106
139
  type: 'mcdoc:type/any';
107
140
  }
@@ -114,83 +147,146 @@ export interface BooleanTypeNode extends TypeBaseNode<LiteralNode> {
114
147
  export declare const BooleanTypeNode: Readonly<{
115
148
  is(node: AstNode | undefined): node is BooleanTypeNode;
116
149
  }>;
117
- export interface StringTypeNode extends TypeBaseNode<LiteralNode | IntRangeNode> {
118
- type: 'mcdoc:type/string';
119
- }
120
- export declare const StringTypeNode: Readonly<{
121
- is(node: AstNode | undefined): node is StringTypeNode;
122
- }>;
123
150
  export interface IntRangeNode extends AstNode {
124
151
  type: 'mcdoc:int_range';
125
- children: IntegerNode[];
152
+ children: (IntegerNode | LiteralNode)[];
126
153
  }
127
154
  export declare const IntRangeNode: Readonly<{
155
+ destruct(node: IntRangeNode): {
156
+ kind: RangeKind;
157
+ min?: IntegerNode;
158
+ max?: IntegerNode;
159
+ };
128
160
  is(node: AstNode | undefined): node is IntRangeNode;
129
161
  }>;
130
- export interface LiteralTypeNode extends TypeBaseNode<LiteralNode | TypedNumberNode | StringNode> {
162
+ export interface LiteralTypeNode extends TypeBaseNode<LiteralTypeValueNode> {
131
163
  type: 'mcdoc:type/literal';
132
164
  }
133
165
  export declare const LiteralTypeNode: Readonly<{
166
+ destruct(node: LiteralTypeNode): {
167
+ value: LiteralTypeValueNode;
168
+ };
134
169
  is(node: AstNode | undefined): node is LiteralTypeNode;
135
170
  }>;
171
+ export declare type LiteralTypeValueNode = LiteralNode | TypedNumberNode | StringNode;
172
+ export declare const LiteralTypeValueNode: Readonly<{
173
+ is(node: AstNode | undefined): node is LiteralTypeValueNode;
174
+ }>;
136
175
  export interface TypedNumberNode extends AstNode {
137
176
  type: 'mcdoc:typed_number';
138
177
  children: (FloatNode | LiteralNode)[];
139
178
  }
140
179
  export declare const TypedNumberNode: Readonly<{
180
+ destruct(node: TypedNumberNode): {
181
+ value: FloatNode;
182
+ suffix?: LiteralNode;
183
+ };
141
184
  is(node: AstNode | undefined): node is TypedNumberNode;
142
185
  }>;
143
186
  export interface NumericTypeNode extends TypeBaseNode<LiteralNode | FloatRangeNode | IntRangeNode> {
144
187
  type: 'mcdoc:type/numeric_type';
145
188
  }
146
189
  export declare const NumericTypeNode: Readonly<{
190
+ destruct(node: NumericTypeNode): {
191
+ numericKind: LiteralNode;
192
+ valueRange?: FloatRangeNode | IntRangeNode;
193
+ };
147
194
  is(node: AstNode | undefined): node is NumericTypeNode;
148
195
  }>;
196
+ export declare const RangeExclusiveChar = "<";
197
+ /**
198
+ * A 2-bit binary number is used to represent the kind of range.
199
+ * The first bit from the left represents the start, the second bit from the left represents the end.
200
+ * The bit is turned on if the range is exclusive on that end.
201
+ */
202
+ export declare type RangeKind = 0b00 | 0b01 | 0b10 | 0b11;
203
+ export declare function getRangeDelimiter(kind: RangeKind): string;
149
204
  export interface FloatRangeNode extends AstNode {
150
205
  type: 'mcdoc:float_range';
151
- children: FloatNode[];
206
+ children: (FloatNode | LiteralNode)[];
152
207
  }
153
208
  export declare const FloatRangeNode: Readonly<{
209
+ destruct(node: FloatRangeNode): {
210
+ kind: RangeKind;
211
+ min?: FloatNode;
212
+ max?: FloatNode;
213
+ };
154
214
  is(node: AstNode | undefined): node is FloatRangeNode;
155
215
  }>;
156
- export interface PrimitiveArrayTypeNode extends TypeBaseNode<LiteralNode | IntRangeNode | FloatRangeNode> {
216
+ export interface PrimitiveArrayTypeNode extends TypeBaseNode<LiteralNode | IntRangeNode> {
157
217
  type: 'mcdoc:type/primitive_array';
158
218
  }
159
219
  export declare const PrimitiveArrayTypeNode: Readonly<{
220
+ destruct(node: PrimitiveArrayTypeNode): {
221
+ arrayKind: LiteralNode;
222
+ lengthRange?: IntRangeNode | undefined;
223
+ valueRange?: IntRangeNode | undefined;
224
+ };
160
225
  is(node: AstNode | undefined): node is PrimitiveArrayTypeNode;
161
226
  }>;
162
227
  export interface ListTypeNode extends TypeBaseNode<TypeNode | IntRangeNode> {
163
228
  type: 'mcdoc:type/list';
164
229
  }
165
230
  export declare const ListTypeNode: Readonly<{
231
+ destruct(node: ListTypeNode): {
232
+ item: TypeNode;
233
+ lengthRange?: IntRangeNode;
234
+ };
166
235
  is(node: AstNode | undefined): node is ListTypeNode;
167
236
  }>;
237
+ export interface StringTypeNode extends TypeBaseNode<LiteralNode | IntRangeNode> {
238
+ type: 'mcdoc:type/string';
239
+ }
240
+ export declare const StringTypeNode: Readonly<{
241
+ destruct(node: StringTypeNode): {
242
+ lengthRange?: IntRangeNode;
243
+ };
244
+ is(node: AstNode | undefined): node is StringTypeNode;
245
+ }>;
168
246
  export interface TupleTypeNode extends TypeBaseNode<TypeNode> {
169
247
  type: 'mcdoc:type/tuple';
170
248
  }
171
249
  export declare const TupleTypeNode: Readonly<{
250
+ destruct(node: TupleTypeNode): {
251
+ items: TypeNode[];
252
+ };
172
253
  is(node: AstNode | undefined): node is TupleTypeNode;
173
254
  }>;
174
255
  export interface EnumNode extends TypeBaseNode<DocCommentsNode | LiteralNode | IdentifierNode | EnumBlockNode> {
175
256
  type: 'mcdoc:enum';
176
257
  }
258
+ declare const EnumKinds: Set<"string" | "float" | "byte" | "short" | "int" | "long" | "double">;
259
+ export declare type EnumKind = typeof EnumKinds extends Set<infer V> ? V : never;
177
260
  export declare const EnumNode: Readonly<{
261
+ kinds: Set<"string" | "float" | "byte" | "short" | "int" | "long" | "double">;
262
+ destruct(node: EnumNode): {
263
+ block: EnumBlockNode;
264
+ docComments?: DocCommentsNode;
265
+ enumKind?: EnumKind;
266
+ identifier?: IdentifierNode;
267
+ keyword: LiteralNode;
268
+ };
178
269
  is(node: AstNode | undefined): node is EnumNode;
179
- kinds: Set<"string" | "float" | "long" | "short" | "double" | "byte" | "int">;
180
270
  }>;
181
- export declare type EnumKind = typeof EnumNode['kinds'] extends Set<infer V> ? V : never;
182
271
  export interface DocCommentsNode extends AstNode {
183
272
  type: 'mcdoc:doc_comments';
184
273
  children: CommentNode[];
185
274
  }
186
275
  export declare const DocCommentsNode: Readonly<{
276
+ /**
277
+ * @returns The text content of this doc comment block.
278
+ */
279
+ asText(node: DocCommentsNode | undefined): string | undefined;
187
280
  is(node: AstNode | undefined): node is DocCommentsNode;
188
281
  }>;
189
282
  export interface EnumBlockNode extends AstNode {
190
283
  type: 'mcdoc:enum/block';
191
- children: (CommentNode | EnumFieldNode | PrelimNode)[];
284
+ children: (CommentNode | EnumFieldNode)[];
192
285
  }
193
286
  export declare const EnumBlockNode: Readonly<{
287
+ destruct(node: EnumBlockNode): {
288
+ fields: EnumFieldNode[];
289
+ };
194
290
  is(node: AstNode | undefined): node is EnumBlockNode;
195
291
  }>;
196
292
  export interface EnumFieldNode extends AstNode {
@@ -198,6 +294,11 @@ export interface EnumFieldNode extends AstNode {
198
294
  children: (CommentNode | PrelimNode | IdentifierNode | EnumValueNode)[];
199
295
  }
200
296
  export declare const EnumFieldNode: Readonly<{
297
+ destruct(node: EnumFieldNode): {
298
+ attributes: AttributeNode[];
299
+ identifier: IdentifierNode;
300
+ value: EnumValueNode;
301
+ };
201
302
  is(node: AstNode | undefined): node is EnumFieldNode;
202
303
  }>;
203
304
  export declare type EnumValueNode = TypedNumberNode | StringNode;
@@ -208,27 +309,46 @@ export declare type PrelimNode = AttributeNode | DocCommentsNode;
208
309
  export declare const PrelimNode: Readonly<{
209
310
  is(node: AstNode | undefined): node is PrelimNode;
210
311
  }>;
211
- export interface StructNode extends TypeBaseNode<DocCommentsNode | LiteralNode | IdentifierNode | TypeParamBlockNode | StructBlockNode> {
312
+ export interface StructNode extends TypeBaseNode<DocCommentsNode | LiteralNode | IdentifierNode | StructBlockNode> {
212
313
  type: 'mcdoc:struct';
213
314
  }
214
315
  export declare const StructNode: Readonly<{
316
+ destruct(node: StructNode): {
317
+ block: StructBlockNode;
318
+ docComments?: DocCommentsNode;
319
+ identifier?: IdentifierNode;
320
+ keyword: LiteralNode;
321
+ };
215
322
  is(node: AstNode | undefined): node is StructNode;
216
323
  }>;
217
- export interface PathTypeNode extends TypeBaseNode<PathNode | TypeNode> {
218
- type: 'mcdoc:type/path';
324
+ export interface ReferenceTypeNode extends TypeBaseNode<PathNode | TypeNode> {
325
+ type: 'mcdoc:type/reference';
219
326
  }
327
+ export declare const ReferenceTypeNode: Readonly<{
328
+ destruct(node: ReferenceTypeNode): {
329
+ path: PathNode;
330
+ typeParameters: TypeNode[];
331
+ };
332
+ is(node: AstNode | undefined): node is ReferenceTypeNode;
333
+ }>;
220
334
  export interface TypeParamBlockNode extends AstNode {
221
335
  type: 'mcdoc:type_param_block';
222
336
  children: (CommentNode | TypeParamNode)[];
223
337
  }
224
338
  export declare const TypeParamBlockNode: Readonly<{
339
+ destruct(node: TypeParamBlockNode): {
340
+ params: TypeParamNode[];
341
+ };
225
342
  is(node: AstNode | undefined): node is TypeParamBlockNode;
226
343
  }>;
227
344
  export interface TypeParamNode extends AstNode {
228
345
  type: 'mcdoc:type_param';
229
- children: (CommentNode | IdentifierNode | LiteralNode | PathNode)[];
346
+ children: (CommentNode | IdentifierNode | LiteralNode)[];
230
347
  }
231
348
  export declare const TypeParamNode: Readonly<{
349
+ destruct(node: TypeParamNode): {
350
+ identifier: IdentifierNode;
351
+ };
232
352
  is(node: AstNode | undefined): node is TypeParamNode;
233
353
  }>;
234
354
  export interface PathNode extends AstNode {
@@ -237,13 +357,21 @@ export interface PathNode extends AstNode {
237
357
  isAbsolute?: boolean;
238
358
  }
239
359
  export declare const PathNode: Readonly<{
360
+ destruct(node: PathNode | undefined): {
361
+ children: (LiteralNode | IdentifierNode)[];
362
+ isAbsolute?: boolean;
363
+ lastIdentifier?: IdentifierNode;
364
+ };
240
365
  is(node: AstNode | undefined): node is PathNode;
241
366
  }>;
242
367
  export interface StructBlockNode extends AstNode {
243
368
  type: 'mcdoc:struct/block';
244
- children: (CommentNode | StructFieldNode | PrelimNode)[];
369
+ children: (CommentNode | StructFieldNode)[];
245
370
  }
246
371
  export declare const StructBlockNode: Readonly<{
372
+ destruct(node: StructBlockNode): {
373
+ fields: StructFieldNode[];
374
+ };
247
375
  is(node: AstNode | undefined): node is StructBlockNode;
248
376
  }>;
249
377
  export declare type StructFieldNode = StructPairFieldNode | StructSpreadFieldNode;
@@ -256,6 +384,12 @@ export interface StructPairFieldNode extends AstNode {
256
384
  isOptional?: boolean;
257
385
  }
258
386
  export declare const StructPairFieldNode: Readonly<{
387
+ destruct(node: StructPairFieldNode): {
388
+ attributes: AttributeNode[];
389
+ key: StructKeyNode;
390
+ type: TypeNode;
391
+ isOptional?: boolean;
392
+ };
259
393
  is(node: AstNode | undefined): node is StructPairFieldNode;
260
394
  }>;
261
395
  export declare type StructKeyNode = StringNode | IdentifierNode | StructMapKeyNode;
@@ -267,6 +401,9 @@ export interface StructMapKeyNode extends AstNode {
267
401
  children: (CommentNode | TypeNode)[];
268
402
  }
269
403
  export declare const StructMapKeyNode: Readonly<{
404
+ destruct(node: StructMapKeyNode): {
405
+ type: TypeNode;
406
+ };
270
407
  is(node: AstNode | undefined): node is StructMapKeyNode;
271
408
  }>;
272
409
  export interface StructSpreadFieldNode extends AstNode {
@@ -274,27 +411,45 @@ export interface StructSpreadFieldNode extends AstNode {
274
411
  children: (CommentNode | AttributeNode | TypeNode)[];
275
412
  }
276
413
  export declare const StructSpreadFieldNode: Readonly<{
414
+ destruct(node: StructSpreadFieldNode): {
415
+ attributes: AttributeNode[];
416
+ type: TypeNode;
417
+ };
277
418
  is(node: AstNode | undefined): node is StructSpreadFieldNode;
278
419
  }>;
279
420
  export interface DispatcherTypeNode extends TypeBaseNode<ResourceLocationNode | IndexBodyNode> {
280
421
  type: 'mcdoc:type/dispatcher';
281
422
  }
282
423
  export declare const DispatcherTypeNode: Readonly<{
424
+ destruct(node: DispatcherTypeNode): {
425
+ location: ResourceLocationNode;
426
+ index: IndexBodyNode;
427
+ };
283
428
  is(node: AstNode | undefined): node is DispatcherTypeNode;
284
429
  }>;
285
430
  export interface UnionTypeNode extends TypeBaseNode<TypeNode> {
286
431
  type: 'mcdoc:type/union';
287
432
  }
288
433
  export declare const UnionTypeNode: Readonly<{
434
+ destruct(node: UnionTypeNode): {
435
+ members: TypeNode[];
436
+ };
289
437
  is(node: AstNode | undefined): node is UnionTypeNode;
290
438
  }>;
291
439
  export interface InjectionNode extends AstNode {
292
440
  type: 'mcdoc:injection';
293
- children: (CommentNode | LiteralNode | EnumInjectionNode | StructInjectionNode)[];
441
+ children: (CommentNode | LiteralNode | InjectionContentNode)[];
294
442
  }
295
443
  export declare const InjectionNode: Readonly<{
444
+ destruct(node: InjectionNode): {
445
+ injection: InjectionContentNode;
446
+ };
296
447
  is(node: AstNode | undefined): node is InjectionNode;
297
448
  }>;
449
+ export declare type InjectionContentNode = EnumInjectionNode | StructInjectionNode;
450
+ export declare const InjectionContentNode: Readonly<{
451
+ is(node: AstNode | undefined): node is InjectionContentNode;
452
+ }>;
298
453
  export interface EnumInjectionNode extends AstNode {
299
454
  type: 'mcdoc:injection/enum';
300
455
  children: (CommentNode | LiteralNode | PathNode | EnumBlockNode)[];
@@ -304,16 +459,23 @@ export declare const EnumInjectionNode: Readonly<{
304
459
  }>;
305
460
  export interface StructInjectionNode extends AstNode {
306
461
  type: 'mcdoc:injection/struct';
307
- children: (CommentNode | LiteralNode | PathNode | TypeParamBlockNode | StructBlockNode)[];
462
+ children: (CommentNode | LiteralNode | PathNode | StructBlockNode)[];
308
463
  }
309
464
  export declare const StructInjectionNode: Readonly<{
310
465
  is(node: AstNode | undefined): node is StructInjectionNode;
311
466
  }>;
312
467
  export interface TypeAliasNode extends AstNode {
313
468
  type: 'mcdoc:type_alias';
314
- children: (CommentNode | PrelimNode | LiteralNode | IdentifierNode | TypeParamBlockNode | TypeNode)[];
469
+ children: (CommentNode | DocCommentsNode | LiteralNode | IdentifierNode | TypeParamBlockNode | TypeNode)[];
315
470
  }
316
471
  export declare const TypeAliasNode: Readonly<{
472
+ destruct(node: TypeAliasNode): {
473
+ docComments?: DocCommentsNode;
474
+ identifier?: IdentifierNode;
475
+ keyword: LiteralNode;
476
+ typeParams?: TypeParamBlockNode;
477
+ rhs?: TypeNode;
478
+ };
317
479
  is(node: AstNode | undefined): node is TypeAliasNode;
318
480
  }>;
319
481
  export interface UseStatementNode extends AstNode {
@@ -321,6 +483,11 @@ export interface UseStatementNode extends AstNode {
321
483
  children: (CommentNode | LiteralNode | PathNode | IdentifierNode)[];
322
484
  }
323
485
  export declare const UseStatementNode: Readonly<{
486
+ destruct(node: UseStatementNode): {
487
+ binding?: IdentifierNode;
488
+ path?: PathNode;
489
+ };
324
490
  is(node: AstNode | undefined): node is UseStatementNode;
325
491
  }>;
492
+ export {};
326
493
  //# sourceMappingURL=index.d.ts.map