@spyglassmc/mcfunction 0.2.2 → 0.2.4

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.
@@ -2,7 +2,7 @@ import * as core from '@spyglassmc/core';
2
2
  import type { McfunctionNode } from '../node/index.js';
3
3
  import { CommandNode } from '../node/index.js';
4
4
  import type { ArgumentTreeNode, RootTreeNode } from '../tree/index.js';
5
- export declare type MockNodesGetter = (treeNode: ArgumentTreeNode, range: core.RangeLike) => core.Arrayable<core.AstNode>;
5
+ export type MockNodesGetter = (treeNode: ArgumentTreeNode, range: core.RangeLike) => core.Arrayable<core.AstNode>;
6
6
  /**
7
7
  * @param getMockNodes A function that returns a mock AST Node from given {@link ArgumentTreeNode}. These mock nodes
8
8
  * will be used for completing the argument.
@@ -1,6 +1,6 @@
1
1
  import * as core from '@spyglassmc/core';
2
2
  import { CommandNode } from '../node/index.js';
3
- import { categorizeTreeChildren, CommandTreeRegistry, redirect, resolveParentTreeNode } from '../tree/index.js';
3
+ import { categorizeTreeChildren, CommandTreeRegistry, redirect, resolveParentTreeNode, } from '../tree/index.js';
4
4
  /**
5
5
  * @param getMockNodes A function that returns a mock AST Node from given {@link ArgumentTreeNode}. These mock nodes
6
6
  * will be used for completing the argument.
@@ -26,9 +26,9 @@ export function command(tree, getMockNodes) {
26
26
  }
27
27
  const lastChildNode = core.AstNode.findLastChild(node, ctx.offset);
28
28
  if (!lastChildNode) {
29
- return Object
30
- .keys(tree.children ?? {})
31
- .map(v => core.CompletionItem.create(v, ctx.offset, { kind: 14 /* core.CompletionKind.Keyword */ }));
29
+ return Object.keys(tree.children ?? {}).map((v) => core.CompletionItem.create(v, ctx.offset, {
30
+ kind: 14 /* core.CompletionKind.Keyword */,
31
+ }));
32
32
  }
33
33
  const treePath = lastChildNode.path;
34
34
  const { treeNode: parentTreeNode } = resolveParentTreeNode(redirect(tree, treePath), tree);
@@ -37,9 +37,10 @@ export function command(tree, getMockNodes) {
37
37
  }
38
38
  const { literalTreeNodes, argumentTreeNodes } = categorizeTreeChildren(parentTreeNode.children);
39
39
  return [
40
- ...literalTreeNodes.map(([name]) => core.CompletionItem.create(name, ctx.offset, { kind: 14 /* core.CompletionKind.Keyword */ })),
41
- ...argumentTreeNodes.flatMap(([_name, treeNode]) => core.Arrayable.toArray(getMockNodes(treeNode, ctx.offset))
42
- .flatMap(n => core.completer.dispatch(n, ctx))),
40
+ ...literalTreeNodes.map(([name]) => core.CompletionItem.create(name, ctx.offset, {
41
+ kind: 14 /* core.CompletionKind.Keyword */,
42
+ })),
43
+ ...argumentTreeNodes.flatMap(([_name, treeNode]) => core.Arrayable.toArray(getMockNodes(treeNode, ctx.offset)).flatMap((n) => core.completer.dispatch(n, ctx))),
43
44
  ];
44
45
  };
45
46
  }
@@ -25,7 +25,8 @@ export var CommandChildNode;
25
25
  export var LiteralCommandChildNode;
26
26
  (function (LiteralCommandChildNode) {
27
27
  function is(node) {
28
- return node?.type === 'mcfunction:command_child/literal';
28
+ return (node?.type ===
29
+ 'mcfunction:command_child/literal');
29
30
  }
30
31
  LiteralCommandChildNode.is = is;
31
32
  })(LiteralCommandChildNode || (LiteralCommandChildNode = {}));
@@ -7,6 +7,6 @@ import type { ArgumentTreeNode } from '../tree/index.js';
7
7
  *
8
8
  * @returns The parser corresponding to that tree node, or `undefined` if such parser doesn't exist.
9
9
  */
10
- export declare type ArgumentParserGetter = (treeNode: ArgumentTreeNode) => core.Parser | undefined;
10
+ export type ArgumentParserGetter = (treeNode: ArgumentTreeNode) => core.Parser | undefined;
11
11
  export declare function argumentTreeNodeToString(name: string, treeNode: ArgumentTreeNode): string;
12
12
  //# sourceMappingURL=argument.d.ts.map
@@ -56,14 +56,15 @@ function dispatch(ans, src, ctx, path, rootTreeNode, parentTreeNode, argument) {
56
56
  ? literal(literalTreeNodes.map(([name, _treeNode]) => name), parent.type === 'root')
57
57
  : undefined;
58
58
  const parsers = [
59
- ...literalParser ? [literalParser] : [],
60
- ...argumentParsers.map(v => v.parser),
59
+ ...(literalParser ? [literalParser] : []),
60
+ ...argumentParsers.map((v) => v.parser),
61
61
  ];
62
62
  const out = { index: 0 };
63
63
  const parser = parsers.length > 1 ? core.any(parsers, out) : parsers[0];
64
64
  const result = parser(src, ctx);
65
65
  if (result !== core.Failure) {
66
- const takenName = argumentParsers[out.index - (literalParser ? 1 : 0)]?.name ?? result.value;
66
+ const takenName = argumentParsers[out.index - (literalParser ? 1 : 0)]?.name ??
67
+ result.value;
67
68
  const childPath = [...path, takenName];
68
69
  ans.push({
69
70
  type: 'mcfunction:command_child',
@@ -79,7 +80,8 @@ function dispatch(ans, src, ctx, path, rootTreeNode, parentTreeNode, argument) {
79
80
  if (ctx.config.env.permissionLevel < requiredPermissionLevel) {
80
81
  ctx.err.report(localize('mcfunction.parser.no-permission', requiredPermissionLevel, ctx.config.env.permissionLevel), result);
81
82
  }
82
- if (result.type === 'mcfunction:command_child/unknown') {
83
+ if (result.type ===
84
+ 'mcfunction:command_child/unknown') {
83
85
  // Encountered an unsupported parser. Stop parsing this command.
84
86
  return false;
85
87
  }
@@ -134,8 +136,7 @@ function wrapWithBrackets(syntax, executable) {
134
136
  return executable ? `[${syntax}]` : syntax;
135
137
  }
136
138
  export function treeNodeChildrenToStringArray(children, executable = false) {
137
- const entries = Object.entries(children)
138
- .map(([name, treeNode]) => wrapWithBrackets(treeNodeToString(name, treeNode), executable));
139
+ const entries = Object.entries(children).map(([name, treeNode]) => wrapWithBrackets(treeNodeToString(name, treeNode), executable));
139
140
  return entries;
140
141
  }
141
142
  export function treeNodeChildrenToString(children) {
@@ -22,11 +22,11 @@ export interface LiteralTreeNode extends BaseTreeNode {
22
22
  export interface RootTreeNode extends BaseTreeNode {
23
23
  type: 'root';
24
24
  }
25
- export declare type TreeNode = ArgumentTreeNode | LiteralTreeNode | RootTreeNode;
26
- declare type RecursivePartial<T> = T extends object ? {
25
+ export type TreeNode = ArgumentTreeNode | LiteralTreeNode | RootTreeNode;
26
+ type RecursivePartial<T> = T extends object ? {
27
27
  [K in keyof T]?: RecursivePartial<T[K]>;
28
28
  } : T;
29
- export declare type PartialTreeNode = RecursivePartial<TreeNode>;
30
- export declare type PartialRootTreeNode = RecursivePartial<RootTreeNode>;
29
+ export type PartialTreeNode = RecursivePartial<TreeNode>;
30
+ export type PartialRootTreeNode = RecursivePartial<RootTreeNode>;
31
31
  export {};
32
32
  //# sourceMappingURL=type.d.ts.map
package/lib/tree/util.js CHANGED
@@ -3,9 +3,14 @@ export function redirect(rootTreeNode, path) {
3
3
  }
4
4
  export function resolveParentTreeNode(parentTreeNode, rootTreeNode, parentPath) {
5
5
  if (parentTreeNode?.redirect) {
6
- return { treeNode: redirect(rootTreeNode, parentTreeNode.redirect), path: [...parentTreeNode.redirect] };
6
+ return {
7
+ treeNode: redirect(rootTreeNode, parentTreeNode.redirect),
8
+ path: [...parentTreeNode.redirect],
9
+ };
7
10
  }
8
- else if (parentTreeNode && !parentTreeNode.children && !parentTreeNode.executable) {
11
+ else if (parentTreeNode &&
12
+ !parentTreeNode.children &&
13
+ !parentTreeNode.executable) {
9
14
  // The `execute.run` literal tree node doesn't have any property.
10
15
  // We should use children from the root tree node in this case.
11
16
  return { treeNode: rootTreeNode, path: [] };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spyglassmc/mcfunction",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "type": "module",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -25,7 +25,7 @@
25
25
  "url": "https://github.com/SpyglassMC/Spyglass/issues"
26
26
  },
27
27
  "dependencies": {
28
- "@spyglassmc/core": "0.4.0",
29
- "@spyglassmc/locales": "0.3.0"
28
+ "@spyglassmc/core": "0.4.2",
29
+ "@spyglassmc/locales": "0.3.2"
30
30
  }
31
31
  }