@spyglassmc/mcdoc 0.1.0 → 0.3.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.
@@ -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,145 @@ 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
+ };
178
268
  is(node: AstNode | undefined): node is EnumNode;
179
- kinds: Set<"string" | "float" | "long" | "short" | "double" | "byte" | "int">;
180
269
  }>;
181
- export declare type EnumKind = typeof EnumNode['kinds'] extends Set<infer V> ? V : never;
182
270
  export interface DocCommentsNode extends AstNode {
183
271
  type: 'mcdoc:doc_comments';
184
272
  children: CommentNode[];
185
273
  }
186
274
  export declare const DocCommentsNode: Readonly<{
275
+ /**
276
+ * @returns The text content of this doc comment block.
277
+ */
278
+ asText(node: DocCommentsNode | undefined): string | undefined;
187
279
  is(node: AstNode | undefined): node is DocCommentsNode;
188
280
  }>;
189
281
  export interface EnumBlockNode extends AstNode {
190
282
  type: 'mcdoc:enum/block';
191
- children: (CommentNode | EnumFieldNode | PrelimNode)[];
283
+ children: (CommentNode | EnumFieldNode)[];
192
284
  }
193
285
  export declare const EnumBlockNode: Readonly<{
286
+ destruct(node: EnumBlockNode): {
287
+ fields: EnumFieldNode[];
288
+ };
194
289
  is(node: AstNode | undefined): node is EnumBlockNode;
195
290
  }>;
196
291
  export interface EnumFieldNode extends AstNode {
@@ -198,6 +293,11 @@ export interface EnumFieldNode extends AstNode {
198
293
  children: (CommentNode | PrelimNode | IdentifierNode | EnumValueNode)[];
199
294
  }
200
295
  export declare const EnumFieldNode: Readonly<{
296
+ destruct(node: EnumFieldNode): {
297
+ attributes: AttributeNode[];
298
+ identifier: IdentifierNode;
299
+ value: EnumValueNode;
300
+ };
201
301
  is(node: AstNode | undefined): node is EnumFieldNode;
202
302
  }>;
203
303
  export declare type EnumValueNode = TypedNumberNode | StringNode;
@@ -208,27 +308,45 @@ export declare type PrelimNode = AttributeNode | DocCommentsNode;
208
308
  export declare const PrelimNode: Readonly<{
209
309
  is(node: AstNode | undefined): node is PrelimNode;
210
310
  }>;
211
- export interface StructNode extends TypeBaseNode<DocCommentsNode | LiteralNode | IdentifierNode | TypeParamBlockNode | StructBlockNode> {
311
+ export interface StructNode extends TypeBaseNode<DocCommentsNode | LiteralNode | IdentifierNode | StructBlockNode> {
212
312
  type: 'mcdoc:struct';
213
313
  }
214
314
  export declare const StructNode: Readonly<{
315
+ destruct(node: StructNode): {
316
+ block: StructBlockNode;
317
+ docComments?: DocCommentsNode;
318
+ identifier?: IdentifierNode;
319
+ };
215
320
  is(node: AstNode | undefined): node is StructNode;
216
321
  }>;
217
- export interface PathTypeNode extends TypeBaseNode<PathNode | TypeNode> {
218
- type: 'mcdoc:type/path';
322
+ export interface ReferenceTypeNode extends TypeBaseNode<PathNode | TypeNode> {
323
+ type: 'mcdoc:type/reference';
219
324
  }
325
+ export declare const ReferenceTypeNode: Readonly<{
326
+ destruct(node: ReferenceTypeNode): {
327
+ path: PathNode;
328
+ typeParameters: TypeNode[];
329
+ };
330
+ is(node: AstNode | undefined): node is ReferenceTypeNode;
331
+ }>;
220
332
  export interface TypeParamBlockNode extends AstNode {
221
333
  type: 'mcdoc:type_param_block';
222
334
  children: (CommentNode | TypeParamNode)[];
223
335
  }
224
336
  export declare const TypeParamBlockNode: Readonly<{
337
+ destruct(node: TypeParamBlockNode): {
338
+ params: TypeParamNode[];
339
+ };
225
340
  is(node: AstNode | undefined): node is TypeParamBlockNode;
226
341
  }>;
227
342
  export interface TypeParamNode extends AstNode {
228
343
  type: 'mcdoc:type_param';
229
- children: (CommentNode | IdentifierNode | LiteralNode | PathNode)[];
344
+ children: (CommentNode | IdentifierNode | LiteralNode)[];
230
345
  }
231
346
  export declare const TypeParamNode: Readonly<{
347
+ destruct(node: TypeParamNode): {
348
+ identifier: IdentifierNode;
349
+ };
232
350
  is(node: AstNode | undefined): node is TypeParamNode;
233
351
  }>;
234
352
  export interface PathNode extends AstNode {
@@ -237,13 +355,21 @@ export interface PathNode extends AstNode {
237
355
  isAbsolute?: boolean;
238
356
  }
239
357
  export declare const PathNode: Readonly<{
358
+ destruct(node: PathNode | undefined): {
359
+ children: (LiteralNode | IdentifierNode)[];
360
+ isAbsolute?: boolean;
361
+ lastIdentifier?: IdentifierNode;
362
+ };
240
363
  is(node: AstNode | undefined): node is PathNode;
241
364
  }>;
242
365
  export interface StructBlockNode extends AstNode {
243
366
  type: 'mcdoc:struct/block';
244
- children: (CommentNode | StructFieldNode | PrelimNode)[];
367
+ children: (CommentNode | StructFieldNode)[];
245
368
  }
246
369
  export declare const StructBlockNode: Readonly<{
370
+ destruct(node: StructBlockNode): {
371
+ fields: StructFieldNode[];
372
+ };
247
373
  is(node: AstNode | undefined): node is StructBlockNode;
248
374
  }>;
249
375
  export declare type StructFieldNode = StructPairFieldNode | StructSpreadFieldNode;
@@ -256,6 +382,12 @@ export interface StructPairFieldNode extends AstNode {
256
382
  isOptional?: boolean;
257
383
  }
258
384
  export declare const StructPairFieldNode: Readonly<{
385
+ destruct(node: StructPairFieldNode): {
386
+ attributes: AttributeNode[];
387
+ key: StructKeyNode;
388
+ type: TypeNode;
389
+ isOptional?: boolean;
390
+ };
259
391
  is(node: AstNode | undefined): node is StructPairFieldNode;
260
392
  }>;
261
393
  export declare type StructKeyNode = StringNode | IdentifierNode | StructMapKeyNode;
@@ -267,6 +399,9 @@ export interface StructMapKeyNode extends AstNode {
267
399
  children: (CommentNode | TypeNode)[];
268
400
  }
269
401
  export declare const StructMapKeyNode: Readonly<{
402
+ destruct(node: StructMapKeyNode): {
403
+ type: TypeNode;
404
+ };
270
405
  is(node: AstNode | undefined): node is StructMapKeyNode;
271
406
  }>;
272
407
  export interface StructSpreadFieldNode extends AstNode {
@@ -274,27 +409,45 @@ export interface StructSpreadFieldNode extends AstNode {
274
409
  children: (CommentNode | AttributeNode | TypeNode)[];
275
410
  }
276
411
  export declare const StructSpreadFieldNode: Readonly<{
412
+ destruct(node: StructSpreadFieldNode): {
413
+ attributes: AttributeNode[];
414
+ type: TypeNode;
415
+ };
277
416
  is(node: AstNode | undefined): node is StructSpreadFieldNode;
278
417
  }>;
279
418
  export interface DispatcherTypeNode extends TypeBaseNode<ResourceLocationNode | IndexBodyNode> {
280
419
  type: 'mcdoc:type/dispatcher';
281
420
  }
282
421
  export declare const DispatcherTypeNode: Readonly<{
422
+ destruct(node: DispatcherTypeNode): {
423
+ location: ResourceLocationNode;
424
+ index: IndexBodyNode;
425
+ };
283
426
  is(node: AstNode | undefined): node is DispatcherTypeNode;
284
427
  }>;
285
428
  export interface UnionTypeNode extends TypeBaseNode<TypeNode> {
286
429
  type: 'mcdoc:type/union';
287
430
  }
288
431
  export declare const UnionTypeNode: Readonly<{
432
+ destruct(node: UnionTypeNode): {
433
+ members: TypeNode[];
434
+ };
289
435
  is(node: AstNode | undefined): node is UnionTypeNode;
290
436
  }>;
291
437
  export interface InjectionNode extends AstNode {
292
438
  type: 'mcdoc:injection';
293
- children: (CommentNode | LiteralNode | EnumInjectionNode | StructInjectionNode)[];
439
+ children: (CommentNode | LiteralNode | InjectionContentNode)[];
294
440
  }
295
441
  export declare const InjectionNode: Readonly<{
442
+ destruct(node: InjectionNode): {
443
+ injection: InjectionContentNode;
444
+ };
296
445
  is(node: AstNode | undefined): node is InjectionNode;
297
446
  }>;
447
+ export declare type InjectionContentNode = EnumInjectionNode | StructInjectionNode;
448
+ export declare const InjectionContentNode: Readonly<{
449
+ is(node: AstNode | undefined): node is InjectionContentNode;
450
+ }>;
298
451
  export interface EnumInjectionNode extends AstNode {
299
452
  type: 'mcdoc:injection/enum';
300
453
  children: (CommentNode | LiteralNode | PathNode | EnumBlockNode)[];
@@ -304,16 +457,22 @@ export declare const EnumInjectionNode: Readonly<{
304
457
  }>;
305
458
  export interface StructInjectionNode extends AstNode {
306
459
  type: 'mcdoc:injection/struct';
307
- children: (CommentNode | LiteralNode | PathNode | TypeParamBlockNode | StructBlockNode)[];
460
+ children: (CommentNode | LiteralNode | PathNode | StructBlockNode)[];
308
461
  }
309
462
  export declare const StructInjectionNode: Readonly<{
310
463
  is(node: AstNode | undefined): node is StructInjectionNode;
311
464
  }>;
312
465
  export interface TypeAliasNode extends AstNode {
313
466
  type: 'mcdoc:type_alias';
314
- children: (CommentNode | PrelimNode | LiteralNode | IdentifierNode | TypeParamBlockNode | TypeNode)[];
467
+ children: (CommentNode | DocCommentsNode | LiteralNode | IdentifierNode | TypeParamBlockNode | TypeNode)[];
315
468
  }
316
469
  export declare const TypeAliasNode: Readonly<{
470
+ destruct(node: TypeAliasNode): {
471
+ docComments?: DocCommentsNode;
472
+ identifier?: IdentifierNode;
473
+ typeParams?: TypeParamBlockNode;
474
+ rhs?: TypeNode;
475
+ };
317
476
  is(node: AstNode | undefined): node is TypeAliasNode;
318
477
  }>;
319
478
  export interface UseStatementNode extends AstNode {
@@ -321,6 +480,11 @@ export interface UseStatementNode extends AstNode {
321
480
  children: (CommentNode | LiteralNode | PathNode | IdentifierNode)[];
322
481
  }
323
482
  export declare const UseStatementNode: Readonly<{
483
+ destruct(node: UseStatementNode): {
484
+ binding?: IdentifierNode;
485
+ path?: PathNode;
486
+ };
324
487
  is(node: AstNode | undefined): node is UseStatementNode;
325
488
  }>;
489
+ export {};
326
490
  //# sourceMappingURL=index.d.ts.map