@spyglassmc/core 0.4.2 → 0.4.3
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/lib/common/Dev.d.ts +7 -7
- package/lib/common/Dev.js +18 -12
- package/lib/common/ReadonlyProxy.d.ts +8 -5
- package/lib/common/ReadonlyProxy.js +6 -4
- package/lib/common/StateProxy.d.ts +9 -9
- package/lib/common/StateProxy.js +21 -14
- package/lib/common/externals/NodeJsExternals.js +7 -2
- package/lib/common/externals/downloader.d.ts +6 -6
- package/lib/common/externals/downloader.js +12 -8
- package/lib/common/externals/index.d.ts +1 -1
- package/lib/common/util.d.ts +18 -16
- package/lib/common/util.js +11 -0
- package/lib/node/CommentNode.d.ts +4 -4
- package/lib/node/CommentNode.js +6 -4
- package/lib/parser/resourceLocation.js +1 -1
- package/lib/parser/util.d.ts +4 -0
- package/lib/parser/util.js +10 -0
- package/lib/processor/InlayHintProvider.d.ts +3 -1
- package/lib/processor/binder/Binder.d.ts +8 -8
- package/lib/processor/binder/Binder.js +18 -12
- package/lib/service/Config.js +15 -4
- package/lib/service/FileService.d.ts +2 -2
- package/lib/service/FileService.js +36 -32
- package/lib/service/Project.js +3 -4
- package/lib/service/fileUtil.d.ts +1 -0
- package/lib/service/fileUtil.js +4 -0
- package/lib/source/IndexMap.js +7 -7
- package/lib/source/LanguageError.d.ts +4 -4
- package/lib/source/LanguageError.js +9 -6
- package/lib/source/Source.d.ts +8 -6
- package/lib/source/Source.js +16 -9
- package/lib/symbol/Symbol.d.ts +4 -4
- package/lib/symbol/Symbol.js +6 -2
- package/package.json +5 -3
package/lib/common/Dev.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
assertDefined<T>(value: T): asserts value is Exclude<T, undefined>;
|
|
3
|
-
assertNever(value: never): never;
|
|
4
|
-
assertTrue(value: boolean, message: string): void;
|
|
1
|
+
export declare namespace Dev {
|
|
2
|
+
function assertDefined<T>(value: T): asserts value is Exclude<T, undefined>;
|
|
3
|
+
function assertNever(value: never): never;
|
|
4
|
+
function assertTrue(value: boolean, message: string): void;
|
|
5
5
|
/**
|
|
6
6
|
* @returns An estimate of the memory taken by the given value, assuming objects are stored as array-like structures instead of dictionaries in the V8 engine.
|
|
7
7
|
*/
|
|
8
|
-
estimateMemoryUsage(value: unknown): number;
|
|
9
|
-
stringify(value: unknown): string;
|
|
10
|
-
}
|
|
8
|
+
function estimateMemoryUsage(value: unknown): number;
|
|
9
|
+
function stringify(value: unknown): string;
|
|
10
|
+
}
|
|
11
11
|
//# sourceMappingURL=Dev.d.ts.map
|
package/lib/common/Dev.js
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export var Dev;
|
|
2
|
+
(function (Dev) {
|
|
3
|
+
function assertDefined(value) {
|
|
3
4
|
if (value === undefined) {
|
|
4
5
|
throw new Error(`'${Dev.stringify(value)}' is 'undefined'`);
|
|
5
6
|
}
|
|
6
|
-
}
|
|
7
|
-
|
|
7
|
+
}
|
|
8
|
+
Dev.assertDefined = assertDefined;
|
|
9
|
+
function assertNever(value) {
|
|
8
10
|
throw new Error(`'${Dev.stringify(value)}' is not of type 'never'`);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
+
}
|
|
12
|
+
Dev.assertNever = assertNever;
|
|
13
|
+
function assertTrue(value, message) {
|
|
11
14
|
if (!value) {
|
|
12
15
|
throw new Error(`Assertion failed: ${message}. '${Dev.stringify(value)}' should be true.`);
|
|
13
16
|
}
|
|
14
|
-
}
|
|
17
|
+
}
|
|
18
|
+
Dev.assertTrue = assertTrue;
|
|
15
19
|
/**
|
|
16
20
|
* @returns An estimate of the memory taken by the given value, assuming objects are stored as array-like structures instead of dictionaries in the V8 engine.
|
|
17
21
|
*/
|
|
18
|
-
estimateMemoryUsage(value) {
|
|
22
|
+
function estimateMemoryUsage(value) {
|
|
19
23
|
const ByteToBits = 8;
|
|
20
24
|
const PointerSize = 8;
|
|
21
25
|
let ans = 0;
|
|
@@ -59,8 +63,9 @@ export const Dev = Object.freeze({
|
|
|
59
63
|
}
|
|
60
64
|
}
|
|
61
65
|
return ans;
|
|
62
|
-
}
|
|
63
|
-
|
|
66
|
+
}
|
|
67
|
+
Dev.estimateMemoryUsage = estimateMemoryUsage;
|
|
68
|
+
function stringify(value) {
|
|
64
69
|
if (value && typeof value === 'object') {
|
|
65
70
|
try {
|
|
66
71
|
const seen = new Set();
|
|
@@ -88,6 +93,7 @@ export const Dev = Object.freeze({
|
|
|
88
93
|
else {
|
|
89
94
|
return `${value}`;
|
|
90
95
|
}
|
|
91
|
-
}
|
|
92
|
-
|
|
96
|
+
}
|
|
97
|
+
Dev.stringify = stringify;
|
|
98
|
+
})(Dev || (Dev = {}));
|
|
93
99
|
//# sourceMappingURL=Dev.js.map
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
type
|
|
1
|
+
type DeepReadonlyValue<T> = T extends object ? DeepReadonly<T> : T;
|
|
2
2
|
export type DeepReadonly<T extends object> = {
|
|
3
|
-
readonly [K in keyof T]:
|
|
3
|
+
readonly [K in keyof T]: DeepReadonlyValue<T[K]>;
|
|
4
4
|
};
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
}
|
|
5
|
+
export type ReadWrite<T extends object> = {
|
|
6
|
+
-readonly [K in keyof T]: T[K];
|
|
7
|
+
};
|
|
8
|
+
export declare namespace ReadonlyProxy {
|
|
9
|
+
function create<T extends object>(obj: T): DeepReadonly<T>;
|
|
10
|
+
}
|
|
8
11
|
export {};
|
|
9
12
|
//# sourceMappingURL=ReadonlyProxy.d.ts.map
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { emplaceMap, isObject } from './util.js';
|
|
2
|
-
export
|
|
3
|
-
|
|
2
|
+
export var ReadonlyProxy;
|
|
3
|
+
(function (ReadonlyProxy) {
|
|
4
|
+
function create(obj) {
|
|
4
5
|
return new Proxy(obj, new ReadonlyProxyHandler());
|
|
5
|
-
}
|
|
6
|
-
|
|
6
|
+
}
|
|
7
|
+
ReadonlyProxy.create = create;
|
|
8
|
+
})(ReadonlyProxy || (ReadonlyProxy = {}));
|
|
7
9
|
class ReadonlyProxyHandler {
|
|
8
10
|
map = new Map();
|
|
9
11
|
get(target, p, receiver) {
|
|
@@ -21,15 +21,15 @@ export type StateProxy<T extends object> = {
|
|
|
21
21
|
[Redo]: () => void;
|
|
22
22
|
[Undo]: () => void;
|
|
23
23
|
};
|
|
24
|
-
export declare
|
|
25
|
-
branchOff<T extends object>(proxy: StateProxy<T>): StateProxy<T>;
|
|
26
|
-
create<
|
|
24
|
+
export declare namespace StateProxy {
|
|
25
|
+
function branchOff<T extends object>(proxy: StateProxy<T>): StateProxy<T>;
|
|
26
|
+
function create<T extends object>(obj: T): T extends StateProxy<any> ? void & {
|
|
27
27
|
_cannotCreateProxyFromProxy: never;
|
|
28
|
-
} : StateProxy<
|
|
29
|
-
dereference<
|
|
30
|
-
is(obj: any): obj is StateProxy<object>;
|
|
31
|
-
redoChanges(proxy: StateProxy<object>): void;
|
|
32
|
-
undoChanges(proxy: StateProxy<object>): void;
|
|
33
|
-
}
|
|
28
|
+
} : StateProxy<T>;
|
|
29
|
+
function dereference<T extends object>(value: StateProxy<T> | T): T;
|
|
30
|
+
function is(obj: any): obj is StateProxy<object>;
|
|
31
|
+
function redoChanges(proxy: StateProxy<object>): void;
|
|
32
|
+
function undoChanges(proxy: StateProxy<object>): void;
|
|
33
|
+
}
|
|
34
34
|
export {};
|
|
35
35
|
//# sourceMappingURL=StateProxy.d.ts.map
|
package/lib/common/StateProxy.js
CHANGED
|
@@ -5,29 +5,36 @@ const Is = Symbol('IsStateProxy');
|
|
|
5
5
|
const Origin = Symbol('OriginState');
|
|
6
6
|
const Redo = Symbol('RedoStateChanges');
|
|
7
7
|
const Undo = Symbol('UndoStateChanges');
|
|
8
|
-
export
|
|
9
|
-
|
|
8
|
+
export var StateProxy;
|
|
9
|
+
(function (StateProxy) {
|
|
10
|
+
function branchOff(proxy) {
|
|
10
11
|
return proxy[BranchOff]();
|
|
11
|
-
}
|
|
12
|
-
|
|
12
|
+
}
|
|
13
|
+
StateProxy.branchOff = branchOff;
|
|
14
|
+
function create(obj) {
|
|
13
15
|
if (StateProxy.is(obj)) {
|
|
14
16
|
throw new TypeError('Cannot create a proxy over a proxy. You might want to use branchOff instead.');
|
|
15
17
|
}
|
|
16
18
|
return _createStateProxy(obj, new Operations());
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
+
}
|
|
20
|
+
StateProxy.create = create;
|
|
21
|
+
function dereference(value) {
|
|
19
22
|
return StateProxy.is(value) ? value[Origin] : value;
|
|
20
|
-
}
|
|
21
|
-
|
|
23
|
+
}
|
|
24
|
+
StateProxy.dereference = dereference;
|
|
25
|
+
function is(obj) {
|
|
22
26
|
return obj?.[Is];
|
|
23
|
-
}
|
|
24
|
-
|
|
27
|
+
}
|
|
28
|
+
StateProxy.is = is;
|
|
29
|
+
function redoChanges(proxy) {
|
|
25
30
|
proxy[Redo]();
|
|
26
|
-
}
|
|
27
|
-
|
|
31
|
+
}
|
|
32
|
+
StateProxy.redoChanges = redoChanges;
|
|
33
|
+
function undoChanges(proxy) {
|
|
28
34
|
proxy[Undo]();
|
|
29
|
-
}
|
|
30
|
-
|
|
35
|
+
}
|
|
36
|
+
StateProxy.undoChanges = undoChanges;
|
|
37
|
+
})(StateProxy || (StateProxy = {}));
|
|
31
38
|
class StateProxyHandler {
|
|
32
39
|
rootOps;
|
|
33
40
|
map = new Map();
|
|
@@ -114,8 +114,13 @@ Object.freeze(NodeJsExternals);
|
|
|
114
114
|
* @returns A {@link fs.PathLike}.
|
|
115
115
|
*/
|
|
116
116
|
function toFsPathLike(path) {
|
|
117
|
+
if (path instanceof Uri) {
|
|
118
|
+
// Convert WHATWG URL to string so that it will be converted
|
|
119
|
+
// to Node.js URL by the next if-block.
|
|
120
|
+
path = path.toString();
|
|
121
|
+
}
|
|
117
122
|
if (typeof path === 'string' && path.startsWith('file:')) {
|
|
118
|
-
return new
|
|
123
|
+
return new url.URL(path);
|
|
119
124
|
}
|
|
120
125
|
return path;
|
|
121
126
|
}
|
|
@@ -125,7 +130,7 @@ function toPath(path) {
|
|
|
125
130
|
}
|
|
126
131
|
return uriToPath(path);
|
|
127
132
|
}
|
|
128
|
-
const uriToPath = (uri) => url.fileURLToPath(uri);
|
|
133
|
+
const uriToPath = (uri) => url.fileURLToPath(uri instanceof Uri ? new url.URL(uri.toString()) : uri);
|
|
129
134
|
const uriFromPath = (path) => url.pathToFileURL(path).toString();
|
|
130
135
|
class ChokidarWatcherWrapper extends EventEmitter {
|
|
131
136
|
#watcher;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
type RemoteUriProtocol = 'http:' | 'https:';
|
|
2
2
|
export type RemoteUriString = `${RemoteUriProtocol}${string}`;
|
|
3
|
-
export declare
|
|
4
|
-
is(value: string): value is
|
|
5
|
-
}
|
|
3
|
+
export declare namespace RemoteUriString {
|
|
4
|
+
function is(value: string): value is RemoteUriString;
|
|
5
|
+
}
|
|
6
6
|
export interface ExternalDownloaderOptions {
|
|
7
7
|
/**
|
|
8
8
|
* Use an string array to set multiple values to the header.
|
|
@@ -16,9 +16,9 @@ export interface ExternalDownloader {
|
|
|
16
16
|
*/
|
|
17
17
|
get(uri: RemoteUriString, options?: ExternalDownloaderOptions): Promise<Uint8Array>;
|
|
18
18
|
}
|
|
19
|
-
export declare
|
|
20
|
-
mock(options: ExternalDownloaderMockOptions): ExternalDownloader;
|
|
21
|
-
}
|
|
19
|
+
export declare namespace ExternalDownloader {
|
|
20
|
+
function mock(options: ExternalDownloaderMockOptions): ExternalDownloader;
|
|
21
|
+
}
|
|
22
22
|
interface ExternalDownloaderMockOptions {
|
|
23
23
|
/**
|
|
24
24
|
* A record from URIs to fixture data. The {@link ExternalDownloader.get} only returns a {@link Uint8Array},
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export var RemoteUriString;
|
|
2
|
+
(function (RemoteUriString) {
|
|
3
|
+
function is(value) {
|
|
3
4
|
return value.startsWith('http:') || value.startsWith('https:');
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
}
|
|
6
|
+
RemoteUriString.is = is;
|
|
7
|
+
})(RemoteUriString || (RemoteUriString = {}));
|
|
8
|
+
export var ExternalDownloader;
|
|
9
|
+
(function (ExternalDownloader) {
|
|
10
|
+
function mock(options) {
|
|
8
11
|
return new ExternalDownloaderMock(options);
|
|
9
|
-
}
|
|
10
|
-
|
|
12
|
+
}
|
|
13
|
+
ExternalDownloader.mock = mock;
|
|
14
|
+
})(ExternalDownloader || (ExternalDownloader = {}));
|
|
11
15
|
class ExternalDownloaderMock {
|
|
12
16
|
options;
|
|
13
17
|
constructor(options) {
|
package/lib/common/util.d.ts
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import externalBinarySearch from 'binary-search';
|
|
2
|
+
import { URL } from 'whatwg-url';
|
|
2
3
|
import type { AstNode } from '../node/index.js';
|
|
3
4
|
import type { ProcessorContext } from '../service/index.js';
|
|
4
5
|
import type { Externals } from './externals/index.js';
|
|
5
|
-
import type { DeepReadonly } from './ReadonlyProxy.js';
|
|
6
|
-
export declare const Uri:
|
|
7
|
-
new (url: string | URL, base?: string | URL | undefined): URL;
|
|
8
|
-
prototype: URL;
|
|
9
|
-
createObjectURL(obj: Blob | MediaSource): string;
|
|
10
|
-
revokeObjectURL(url: string): void;
|
|
11
|
-
};
|
|
6
|
+
import type { DeepReadonly, ReadWrite } from './ReadonlyProxy.js';
|
|
7
|
+
export declare const Uri: typeof URL;
|
|
12
8
|
export type Uri = URL;
|
|
13
9
|
/**
|
|
14
10
|
* `NodeJS.Timeout` on Node.js and `number` on browser.
|
|
@@ -116,17 +112,23 @@ export declare function emplaceMap<K, V>(map: Map<K, V>, key: K, handler: {
|
|
|
116
112
|
export declare function isObject(val: unknown): val is object;
|
|
117
113
|
export declare function normalizeUri(uri: string): string;
|
|
118
114
|
/**
|
|
115
|
+
* Return a read-write TARGET type if the INPUT type is read-write, and a
|
|
116
|
+
* readonly TARGET type if the INPUT type is readonly, and `never` if the INPUT
|
|
117
|
+
* type is `undefined`.
|
|
118
|
+
*
|
|
119
|
+
* It is used in the return type of an AST node
|
|
120
|
+
* [user-defined type guard](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates).
|
|
121
|
+
*
|
|
119
122
|
* @example
|
|
120
123
|
* ```ts
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
* function isCommentNode<T extends DeepReadonly<AstNode> | undefined>(node: T): node is NodeIsHelper<CommentNode, T>
|
|
124
|
+
* export namespace CommentNode {
|
|
125
|
+
* export function is<T extends DeepReadonly<AstNode> | undefined>(
|
|
126
|
+
* obj: T,
|
|
127
|
+
* ): obj is InheritReadonly<CommentNode, T> {
|
|
128
|
+
* return (obj as CommentNode | undefined)?.type === 'comment'
|
|
129
|
+
* }
|
|
130
|
+
* }
|
|
129
131
|
* ```
|
|
130
132
|
*/
|
|
131
|
-
export type
|
|
133
|
+
export type InheritReadonly<TARGET extends AstNode, INPUT extends DeepReadonly<AstNode> | undefined> = INPUT & (INPUT extends ReadWrite<AstNode> ? TARGET : DeepReadonly<TARGET>);
|
|
132
134
|
//# sourceMappingURL=util.d.ts.map
|
package/lib/common/util.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import externalBinarySearch from 'binary-search';
|
|
2
2
|
import rfdc from 'rfdc';
|
|
3
|
+
import { URL } from 'whatwg-url';
|
|
4
|
+
// Spyglass uses the URL class provided by the
|
|
5
|
+
// [spec](https://url.spec.whatwg.org/)-compliant `whatwg-url` package instead
|
|
6
|
+
// of the broken one shipped with browsers that do not parse non-special scheme
|
|
7
|
+
// URLs with hosts properly.
|
|
8
|
+
//
|
|
9
|
+
// * [Chromium bug](https://issues.chromium.org/issues/40587286)
|
|
10
|
+
// * [FireFox bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1374505)
|
|
11
|
+
//
|
|
12
|
+
// We use the name "URI" instead of "URL" when possible, since it is what
|
|
13
|
+
// LSP has chosen to use for the string that uniquely identifies a file.
|
|
3
14
|
export const Uri = URL;
|
|
4
15
|
/**
|
|
5
16
|
* @param getKey A function that takes the actual arguments being passed into the decorated method, and returns anything.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DeepReadonly,
|
|
1
|
+
import type { DeepReadonly, InheritReadonly } from '../common/index.js';
|
|
2
2
|
import type { AstNode } from './AstNode.js';
|
|
3
3
|
export interface CommentNode extends AstNode {
|
|
4
4
|
readonly type: 'comment';
|
|
@@ -7,7 +7,7 @@ export interface CommentNode extends AstNode {
|
|
|
7
7
|
*/
|
|
8
8
|
comment: string;
|
|
9
9
|
}
|
|
10
|
-
export declare
|
|
11
|
-
is<T extends DeepReadonly<AstNode> | undefined>(obj: T): obj is
|
|
12
|
-
}
|
|
10
|
+
export declare namespace CommentNode {
|
|
11
|
+
function is<T extends DeepReadonly<AstNode> | undefined>(obj: T): obj is InheritReadonly<CommentNode, T>;
|
|
12
|
+
}
|
|
13
13
|
//# sourceMappingURL=CommentNode.d.ts.map
|
package/lib/node/CommentNode.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export var CommentNode;
|
|
2
|
+
(function (CommentNode) {
|
|
3
|
+
function is(obj) {
|
|
3
4
|
return obj?.type === 'comment';
|
|
4
|
-
}
|
|
5
|
-
|
|
5
|
+
}
|
|
6
|
+
CommentNode.is = is;
|
|
7
|
+
})(CommentNode || (CommentNode = {}));
|
|
6
8
|
//# sourceMappingURL=CommentNode.js.map
|
|
@@ -96,7 +96,7 @@ export function resourceLocation(options) {
|
|
|
96
96
|
ctx.err.report(localize('parser.resource-location.illegal', arrayToMessage(illegalChars, true, 'and')), ans);
|
|
97
97
|
}
|
|
98
98
|
if (ans.isTag && !options.allowTag) {
|
|
99
|
-
ctx.err.report(localize('parser.resource-location.tag-
|
|
99
|
+
ctx.err.report(localize('parser.resource-location.tag-disallowed'), ans);
|
|
100
100
|
}
|
|
101
101
|
if (!ans.namespace && options.isPredicate) {
|
|
102
102
|
ctx.err.report(localize('parser.resource-location.namespace-expected'), ans);
|
package/lib/parser/util.d.ts
CHANGED
|
@@ -149,5 +149,9 @@ export declare function stopBefore<N extends Returnable>(parser: Parser<N>, ...t
|
|
|
149
149
|
export declare function acceptOnly<N extends Returnable>(parser: InfallibleParser<N>, ...characters: (string | readonly string[])[]): InfallibleParser<N>;
|
|
150
150
|
export declare function acceptOnly<N extends Returnable>(parser: Parser<N>, ...characters: (string | readonly string[])[]): Parser<N>;
|
|
151
151
|
export declare function acceptIf<P extends Parser<AstNode>>(parser: P, predicate: (this: void, char: string) => boolean): P extends InfallibleParser<infer N> ? InfallibleParser<N> : P extends Parser<infer N> ? Parser<N> : never;
|
|
152
|
+
/**
|
|
153
|
+
* @returns A parser that dumps any parser errors after it finishes parsing.
|
|
154
|
+
*/
|
|
155
|
+
export declare function dumpErrors<P extends Parser<AstNode>>(parser: P): P;
|
|
152
156
|
export {};
|
|
153
157
|
//# sourceMappingURL=util.d.ts.map
|
package/lib/parser/util.js
CHANGED
|
@@ -243,4 +243,14 @@ export function acceptIf(parser, predicate) {
|
|
|
243
243
|
return ans;
|
|
244
244
|
});
|
|
245
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* @returns A parser that dumps any parser errors after it finishes parsing.
|
|
248
|
+
*/
|
|
249
|
+
export function dumpErrors(parser) {
|
|
250
|
+
return ((src, ctx) => {
|
|
251
|
+
const ans = parser(src, ctx);
|
|
252
|
+
ctx.err.dump();
|
|
253
|
+
return ans;
|
|
254
|
+
});
|
|
255
|
+
}
|
|
246
256
|
//# sourceMappingURL=util.js.map
|
|
@@ -2,8 +2,10 @@ import type { DeepReadonly } from '../common/index.js';
|
|
|
2
2
|
import type { AstNode } from '../node/index.js';
|
|
3
3
|
import type { ProcessorContext } from '../service/index.js';
|
|
4
4
|
export interface InlayHint {
|
|
5
|
+
label: string;
|
|
5
6
|
offset: number;
|
|
6
|
-
|
|
7
|
+
paddingLeft?: boolean;
|
|
8
|
+
paddingRight?: boolean;
|
|
7
9
|
}
|
|
8
10
|
export type InlayHintProvider<N extends AstNode = AstNode> = (node: DeepReadonly<N>, ctx: ProcessorContext) => readonly InlayHint[];
|
|
9
11
|
//# sourceMappingURL=InlayHintProvider.d.ts.map
|
|
@@ -8,19 +8,19 @@ export interface SyncBinderInitializer<N extends AstNode> {
|
|
|
8
8
|
export interface SyncBinder<N extends AstNode> extends SyncBinderInitializer<N> {
|
|
9
9
|
[IsAsync]?: never;
|
|
10
10
|
}
|
|
11
|
-
export declare
|
|
12
|
-
create<N extends AstNode>(binder: SyncBinderInitializer<N>): SyncBinder<N>;
|
|
13
|
-
is(binder: Binder<any>): binder is SyncBinder<any>;
|
|
14
|
-
}
|
|
11
|
+
export declare namespace SyncBinder {
|
|
12
|
+
function create<N extends AstNode>(binder: SyncBinderInitializer<N>): SyncBinder<N>;
|
|
13
|
+
function is(binder: Binder<any>): binder is SyncBinder<any>;
|
|
14
|
+
}
|
|
15
15
|
interface AsyncBinderInitializer<N extends AstNode> {
|
|
16
16
|
(node: N, ctx: BinderContext): Promise<void>;
|
|
17
17
|
}
|
|
18
18
|
export interface AsyncBinder<N extends AstNode> extends AsyncBinderInitializer<N> {
|
|
19
19
|
[IsAsync]: true;
|
|
20
20
|
}
|
|
21
|
-
export declare
|
|
22
|
-
create<N extends AstNode>(binder: AsyncBinderInitializer<N>): AsyncBinder<N>;
|
|
23
|
-
is(binder: Binder<any>): binder is AsyncBinder<any>;
|
|
24
|
-
}
|
|
21
|
+
export declare namespace AsyncBinder {
|
|
22
|
+
function create<N extends AstNode>(binder: AsyncBinderInitializer<N>): AsyncBinder<N>;
|
|
23
|
+
function is(binder: Binder<any>): binder is AsyncBinder<any>;
|
|
24
|
+
}
|
|
25
25
|
export {};
|
|
26
26
|
//# sourceMappingURL=Binder.d.ts.map
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
const IsAsync = Symbol('IsAsyncBinder');
|
|
2
|
-
export
|
|
3
|
-
|
|
2
|
+
export var SyncBinder;
|
|
3
|
+
(function (SyncBinder) {
|
|
4
|
+
function create(binder) {
|
|
4
5
|
return binder;
|
|
5
|
-
}
|
|
6
|
-
|
|
6
|
+
}
|
|
7
|
+
SyncBinder.create = create;
|
|
8
|
+
function is(binder) {
|
|
7
9
|
return !binder[IsAsync];
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
}
|
|
11
|
+
SyncBinder.is = is;
|
|
12
|
+
})(SyncBinder || (SyncBinder = {}));
|
|
13
|
+
export var AsyncBinder;
|
|
14
|
+
(function (AsyncBinder) {
|
|
15
|
+
function create(binder) {
|
|
12
16
|
return Object.assign(binder, { [IsAsync]: true });
|
|
13
|
-
}
|
|
14
|
-
|
|
17
|
+
}
|
|
18
|
+
AsyncBinder.create = create;
|
|
19
|
+
function is(binder) {
|
|
15
20
|
return binder[IsAsync];
|
|
16
|
-
}
|
|
17
|
-
|
|
21
|
+
}
|
|
22
|
+
AsyncBinder.is = is;
|
|
23
|
+
})(AsyncBinder || (AsyncBinder = {}));
|
|
18
24
|
//# sourceMappingURL=Binder.js.map
|
package/lib/service/Config.js
CHANGED
|
@@ -117,7 +117,10 @@ export var SymbolLinterConfig;
|
|
|
117
117
|
export const VanillaConfig = {
|
|
118
118
|
env: {
|
|
119
119
|
dataSource: 'GitHub',
|
|
120
|
-
dependencies: [
|
|
120
|
+
dependencies: [
|
|
121
|
+
'@vanilla-datapack',
|
|
122
|
+
'@vanilla-mcdoc',
|
|
123
|
+
],
|
|
121
124
|
feature: {
|
|
122
125
|
codeActions: true,
|
|
123
126
|
colors: true,
|
|
@@ -128,7 +131,16 @@ export const VanillaConfig = {
|
|
|
128
131
|
formatting: true,
|
|
129
132
|
hover: true,
|
|
130
133
|
inlayHint: {
|
|
131
|
-
enabledNodes: [
|
|
134
|
+
enabledNodes: [
|
|
135
|
+
'boolean',
|
|
136
|
+
'double',
|
|
137
|
+
'float',
|
|
138
|
+
'integer',
|
|
139
|
+
'long',
|
|
140
|
+
'mcfunction:coordinate',
|
|
141
|
+
'mcfunction:vector',
|
|
142
|
+
'mcfunction:command_child/unknown',
|
|
143
|
+
],
|
|
132
144
|
},
|
|
133
145
|
semanticColoring: true,
|
|
134
146
|
selectionRanges: true,
|
|
@@ -208,7 +220,7 @@ export const VanillaConfig = {
|
|
|
208
220
|
summonAec: 'summon minecraft:area_effect_cloud ~ ~ ~ {Age: -2147483648, Duration: -1, WaitTime: -2147483648, Tags: ["${1:tag}"]}',
|
|
209
221
|
},
|
|
210
222
|
};
|
|
211
|
-
class ConfigService {
|
|
223
|
+
export class ConfigService {
|
|
212
224
|
project;
|
|
213
225
|
defaultConfig;
|
|
214
226
|
static ConfigFileNames = Object.freeze([
|
|
@@ -272,5 +284,4 @@ class ConfigService {
|
|
|
272
284
|
return ans;
|
|
273
285
|
}
|
|
274
286
|
}
|
|
275
|
-
export { ConfigService };
|
|
276
287
|
//# sourceMappingURL=Config.js.map
|
|
@@ -100,7 +100,7 @@ export declare class ArchiveUriSupporter implements UriProtocolSupporter {
|
|
|
100
100
|
private static readonly SupportedArchiveExtnames;
|
|
101
101
|
readonly protocol = "archive:";
|
|
102
102
|
/**
|
|
103
|
-
* @param entries A map from archive
|
|
103
|
+
* @param entries A map from archive names to unzipped entries.
|
|
104
104
|
*/
|
|
105
105
|
private constructor();
|
|
106
106
|
hash(uri: string): Promise<string>;
|
|
@@ -116,7 +116,7 @@ export declare class ArchiveUriSupporter implements UriProtocolSupporter {
|
|
|
116
116
|
* @throws When `uri` has the wrong protocol or hostname.
|
|
117
117
|
*/
|
|
118
118
|
private static decodeUri;
|
|
119
|
-
static create(dependencies: readonly Dependency[], externals: Externals, logger: Logger
|
|
119
|
+
static create(dependencies: readonly Dependency[], externals: Externals, logger: Logger): Promise<ArchiveUriSupporter>;
|
|
120
120
|
}
|
|
121
121
|
export {};
|
|
122
122
|
//# sourceMappingURL=FileService.d.ts.map
|