@spyglassmc/core 0.1.0 → 0.2.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.
Files changed (196) hide show
  1. package/README.md +7 -0
  2. package/lib/browser.d.ts +2 -0
  3. package/lib/browser.js +2 -0
  4. package/lib/common/TwoWayMap.d.ts +21 -0
  5. package/lib/common/TwoWayMap.js +69 -0
  6. package/lib/common/externals/BrowserExternals.d.ts +3 -0
  7. package/lib/common/externals/BrowserExternals.js +191 -0
  8. package/lib/common/externals/NodeJsExternals.d.ts +3 -0
  9. package/lib/common/externals/NodeJsExternals.js +151 -0
  10. package/lib/common/externals/downloader.d.ts +31 -0
  11. package/lib/common/externals/downloader.js +32 -0
  12. package/lib/common/externals/index.d.ts +96 -0
  13. package/lib/common/externals/index.js +2 -0
  14. package/lib/common/index.d.ts +2 -1
  15. package/lib/common/index.js +2 -13
  16. package/lib/common/util.d.ts +17 -34
  17. package/lib/common/util.js +32 -113
  18. package/lib/index.d.ts +7 -7
  19. package/lib/index.js +7 -19
  20. package/lib/node/AstNode.d.ts +3 -3
  21. package/lib/node/AstNode.js +10 -16
  22. package/lib/node/BooleanNode.d.ts +2 -2
  23. package/lib/node/BooleanNode.js +4 -7
  24. package/lib/node/CommentNode.d.ts +1 -1
  25. package/lib/node/CommentNode.js +2 -5
  26. package/lib/node/ErrorNode.d.ts +1 -1
  27. package/lib/node/ErrorNode.js +2 -5
  28. package/lib/node/FileNode.d.ts +3 -3
  29. package/lib/node/FileNode.js +2 -5
  30. package/lib/node/FloatNode.d.ts +2 -2
  31. package/lib/node/FloatNode.js +4 -7
  32. package/lib/node/IntegerNode.d.ts +2 -2
  33. package/lib/node/IntegerNode.js +4 -7
  34. package/lib/node/ListNode.d.ts +2 -2
  35. package/lib/node/ListNode.js +2 -5
  36. package/lib/node/LiteralNode.d.ts +4 -4
  37. package/lib/node/LiteralNode.js +5 -8
  38. package/lib/node/LongNode.d.ts +2 -2
  39. package/lib/node/LongNode.js +4 -7
  40. package/lib/node/RecordNode.d.ts +2 -2
  41. package/lib/node/RecordNode.js +2 -5
  42. package/lib/node/ResourceLocationNode.d.ts +6 -8
  43. package/lib/node/ResourceLocationNode.js +9 -12
  44. package/lib/node/Sequence.d.ts +4 -3
  45. package/lib/node/Sequence.js +4 -6
  46. package/lib/node/StringNode.d.ts +5 -5
  47. package/lib/node/StringNode.js +9 -12
  48. package/lib/node/SymbolNode.d.ts +4 -4
  49. package/lib/node/SymbolNode.js +5 -8
  50. package/lib/node/index.d.ts +15 -15
  51. package/lib/node/index.js +15 -27
  52. package/lib/nodejs.d.ts +2 -0
  53. package/lib/nodejs.js +2 -0
  54. package/lib/parser/Parser.d.ts +3 -3
  55. package/lib/parser/Parser.js +1 -4
  56. package/lib/parser/boolean.d.ts +2 -2
  57. package/lib/parser/boolean.js +3 -6
  58. package/lib/parser/comment.d.ts +2 -2
  59. package/lib/parser/comment.js +5 -9
  60. package/lib/parser/empty.d.ts +1 -1
  61. package/lib/parser/empty.js +1 -5
  62. package/lib/parser/error.d.ts +2 -2
  63. package/lib/parser/error.js +5 -9
  64. package/lib/parser/file.d.ts +3 -3
  65. package/lib/parser/file.js +9 -13
  66. package/lib/parser/float.d.ts +4 -4
  67. package/lib/parser/float.js +12 -16
  68. package/lib/parser/index.d.ts +16 -16
  69. package/lib/parser/index.js +16 -34
  70. package/lib/parser/integer.d.ts +4 -4
  71. package/lib/parser/integer.js +10 -14
  72. package/lib/parser/list.d.ts +2 -2
  73. package/lib/parser/list.js +15 -19
  74. package/lib/parser/literal.d.ts +2 -2
  75. package/lib/parser/literal.js +5 -9
  76. package/lib/parser/long.d.ts +4 -4
  77. package/lib/parser/long.js +10 -14
  78. package/lib/parser/record.d.ts +3 -3
  79. package/lib/parser/record.js +20 -24
  80. package/lib/parser/resourceLocation.d.ts +2 -2
  81. package/lib/parser/resourceLocation.js +14 -18
  82. package/lib/parser/string.d.ts +7 -7
  83. package/lib/parser/string.js +40 -44
  84. package/lib/parser/symbol.d.ts +3 -3
  85. package/lib/parser/symbol.js +3 -7
  86. package/lib/parser/util.d.ts +30 -12
  87. package/lib/parser/util.js +78 -63
  88. package/lib/processor/ColorInfoProvider.d.ts +1 -1
  89. package/lib/processor/ColorInfoProvider.js +6 -9
  90. package/lib/processor/InlayHintProvider.d.ts +2 -2
  91. package/lib/processor/InlayHintProvider.js +1 -2
  92. package/lib/processor/SignatureHelpProvider.d.ts +2 -2
  93. package/lib/processor/SignatureHelpProvider.js +1 -2
  94. package/lib/processor/checker/Checker.d.ts +2 -2
  95. package/lib/processor/checker/Checker.js +1 -5
  96. package/lib/processor/checker/builtin.d.ts +5 -4
  97. package/lib/processor/checker/builtin.js +26 -28
  98. package/lib/processor/checker/index.d.ts +2 -2
  99. package/lib/processor/checker/index.js +2 -27
  100. package/lib/processor/colorizer/Colorizer.d.ts +4 -4
  101. package/lib/processor/colorizer/Colorizer.js +8 -11
  102. package/lib/processor/colorizer/builtin.d.ts +3 -3
  103. package/lib/processor/colorizer/builtin.js +33 -46
  104. package/lib/processor/colorizer/index.d.ts +2 -2
  105. package/lib/processor/colorizer/index.js +2 -27
  106. package/lib/processor/completer/Completer.d.ts +4 -4
  107. package/lib/processor/completer/Completer.js +14 -33
  108. package/lib/processor/completer/builtin.d.ts +7 -7
  109. package/lib/processor/completer/builtin.js +58 -74
  110. package/lib/processor/completer/index.d.ts +2 -2
  111. package/lib/processor/completer/index.js +2 -27
  112. package/lib/processor/formatter/Formatter.d.ts +2 -2
  113. package/lib/processor/formatter/Formatter.js +2 -7
  114. package/lib/processor/formatter/builtin.d.ts +3 -3
  115. package/lib/processor/formatter/builtin.js +22 -36
  116. package/lib/processor/formatter/index.d.ts +2 -2
  117. package/lib/processor/formatter/index.js +2 -27
  118. package/lib/processor/index.d.ts +9 -9
  119. package/lib/processor/index.js +9 -21
  120. package/lib/processor/linter/Linter.d.ts +2 -2
  121. package/lib/processor/linter/Linter.js +1 -2
  122. package/lib/processor/linter/builtin/undeclaredSymbol.d.ts +2 -2
  123. package/lib/processor/linter/builtin/undeclaredSymbol.js +23 -27
  124. package/lib/processor/linter/builtin.d.ts +3 -3
  125. package/lib/processor/linter/builtin.js +19 -31
  126. package/lib/processor/linter/index.d.ts +2 -2
  127. package/lib/processor/linter/index.js +2 -27
  128. package/lib/processor/util.d.ts +2 -2
  129. package/lib/processor/util.js +4 -9
  130. package/lib/service/CacheService.d.ts +6 -6
  131. package/lib/service/CacheService.js +38 -48
  132. package/lib/service/Config.d.ts +17 -16
  133. package/lib/service/Config.js +56 -51
  134. package/lib/service/Context.d.ts +14 -14
  135. package/lib/service/Context.js +30 -32
  136. package/lib/service/Dependency.js +2 -5
  137. package/lib/service/Downloader.d.ts +10 -39
  138. package/lib/service/Downloader.js +37 -106
  139. package/lib/service/ErrorReporter.d.ts +2 -2
  140. package/lib/service/ErrorReporter.js +11 -15
  141. package/lib/service/FileService.d.ts +41 -14
  142. package/lib/service/FileService.js +107 -81
  143. package/lib/service/Hover.d.ts +2 -2
  144. package/lib/service/Hover.js +4 -7
  145. package/lib/service/Logger.js +2 -5
  146. package/lib/service/MetaRegistry.d.ts +12 -12
  147. package/lib/service/MetaRegistry.js +62 -73
  148. package/lib/service/Operations.js +3 -9
  149. package/lib/service/Profiler.d.ts +1 -1
  150. package/lib/service/Profiler.js +25 -41
  151. package/lib/service/Project.d.ts +50 -51
  152. package/lib/service/Project.js +240 -238
  153. package/lib/service/Service.d.ts +19 -29
  154. package/lib/service/Service.js +57 -53
  155. package/lib/service/SymbolLocations.d.ts +3 -3
  156. package/lib/service/SymbolLocations.js +4 -7
  157. package/lib/service/SymbolRegistrar.d.ts +1 -1
  158. package/lib/service/SymbolRegistrar.js +1 -2
  159. package/lib/service/fileUtil.d.ts +21 -41
  160. package/lib/service/fileUtil.js +59 -129
  161. package/lib/service/index.d.ts +17 -17
  162. package/lib/service/index.js +17 -31
  163. package/lib/source/IndexMap.d.ts +1 -1
  164. package/lib/source/IndexMap.js +7 -10
  165. package/lib/source/LanguageError.d.ts +2 -2
  166. package/lib/source/LanguageError.js +3 -6
  167. package/lib/source/Location.d.ts +3 -3
  168. package/lib/source/Location.js +6 -9
  169. package/lib/source/Offset.d.ts +1 -1
  170. package/lib/source/Offset.js +4 -7
  171. package/lib/source/Position.js +2 -5
  172. package/lib/source/PositionRange.d.ts +2 -2
  173. package/lib/source/PositionRange.js +14 -17
  174. package/lib/source/Range.d.ts +1 -1
  175. package/lib/source/Range.js +7 -10
  176. package/lib/source/Source.d.ts +12 -4
  177. package/lib/source/Source.js +84 -29
  178. package/lib/source/index.d.ts +8 -8
  179. package/lib/source/index.js +8 -20
  180. package/lib/symbol/Symbol.d.ts +15 -15
  181. package/lib/symbol/Symbol.js +53 -68
  182. package/lib/symbol/SymbolUtil.d.ts +23 -33
  183. package/lib/symbol/SymbolUtil.js +162 -163
  184. package/lib/symbol/UriBinder.d.ts +1 -1
  185. package/lib/symbol/UriBinder.js +1 -2
  186. package/lib/symbol/index.d.ts +3 -3
  187. package/lib/symbol/index.js +3 -15
  188. package/package.json +7 -4
  189. package/lib/common/Heap.d.ts +0 -1
  190. package/lib/common/Heap.js +0 -2
  191. package/lib/node/TableNode.d.ts +0 -17
  192. package/lib/node/TableNode.js +0 -11
  193. package/lib/parser/table.d.ts +0 -22
  194. package/lib/parser/table.js +0 -97
  195. package/lib/service/CommandExecutor.d.ts +0 -3
  196. package/lib/service/CommandExecutor.js +0 -7
@@ -1,5 +1,5 @@
1
- import type { AstNode } from '../node';
2
- import type { ProcessorContext } from '../service';
1
+ import type { AstNode } from '../node/index.js';
2
+ import type { ProcessorContext } from '../service/index.js';
3
3
  export interface InlayHint {
4
4
  offset: number;
5
5
  text: string;
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=InlayHintProvider.js.map
@@ -1,5 +1,5 @@
1
- import type { AstNode } from '../node';
2
- import type { SignatureHelpProviderContext } from '../service';
1
+ import type { AstNode } from '../node/index.js';
2
+ import type { SignatureHelpProviderContext } from '../service/index.js';
3
3
  export interface SignatureHelp {
4
4
  signatures: SignatureInfo[];
5
5
  activeSignature: number;
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=SignatureHelpProvider.js.map
@@ -1,5 +1,5 @@
1
- import type { AstNode } from '../../node';
2
- import type { CheckerContext } from '../../service';
1
+ import type { AstNode } from '../../node/index.js';
2
+ import type { CheckerContext } from '../../service/index.js';
3
3
  export declare type Checker<N extends AstNode> = (node: N, ctx: CheckerContext) => PromiseLike<void> | void;
4
4
  export declare type SyncChecker<N extends AstNode> = (node: N, ctx: CheckerContext) => void;
5
5
  export declare type AsyncChecker<N extends AstNode> = (node: N, ctx: CheckerContext) => PromiseLike<void>;
@@ -1,7 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FallbackChecker = void 0;
4
1
  /* istanbul ignore next */
5
- const FallbackChecker = () => Promise.resolve();
6
- exports.FallbackChecker = FallbackChecker;
2
+ export const FallbackChecker = () => Promise.resolve();
7
3
  //# sourceMappingURL=Checker.js.map
@@ -1,7 +1,7 @@
1
- import type { AstNode, SymbolBaseNode } from '../../node';
2
- import { ResourceLocationNode } from '../../node';
3
- import type { CheckerContext, MetaRegistry } from '../../service';
4
- import type { Checker, SyncChecker } from './Checker';
1
+ import type { AstNode, SymbolBaseNode } from '../../node/index.js';
2
+ import { ResourceLocationNode } from '../../node/index.js';
3
+ import type { CheckerContext, MetaRegistry } from '../../service/index.js';
4
+ import type { Checker, SyncChecker } from './Checker.js';
5
5
  export declare type AttemptResult = {
6
6
  errorAmount: number;
7
7
  totalErrorSpan: number;
@@ -17,6 +17,7 @@ export declare const noop: SyncChecker<AstNode>;
17
17
  * Use the shallowest children that have their own checker to validate.
18
18
  */
19
19
  export declare const fallback: Checker<AstNode>;
20
+ export declare const dispatchSync: SyncChecker<AstNode>;
20
21
  export declare const resourceLocation: Checker<ResourceLocationNode>;
21
22
  export declare const symbol: Checker<SymbolBaseNode>;
22
23
  export declare function registerCheckers(meta: MetaRegistry): void;
@@ -1,15 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerCheckers = exports.symbol = exports.resourceLocation = exports.fallback = exports.noop = exports.any = exports.attempt = void 0;
4
- const lib_1 = require("../../../../locales/lib");
5
- const node_1 = require("../../node");
6
- const service_1 = require("../../service");
7
- const util_1 = require("../util");
8
- function attempt(checker, node, ctx) {
1
+ import { localize } from '@spyglassmc/locales';
2
+ import { ResourceLocationNode } from '../../node/index.js';
3
+ import { ErrorReporter, Operations } from '../../service/index.js';
4
+ import { traversePreOrder } from '../util.js';
5
+ export function attempt(checker, node, ctx) {
9
6
  const tempCtx = {
10
7
  ...ctx,
11
- err: new service_1.ErrorReporter(),
12
- ops: new service_1.Operations(),
8
+ err: new ErrorReporter(),
9
+ ops: new Operations(),
13
10
  symbols: ctx.symbols.clone(),
14
11
  };
15
12
  // FIXME: await
@@ -28,8 +25,7 @@ function attempt(checker, node, ctx) {
28
25
  },
29
26
  };
30
27
  }
31
- exports.attempt = attempt;
32
- function any(checkers) {
28
+ export function any(checkers) {
33
29
  if (checkers.length === 0) {
34
30
  throw new Error('Expected at least one checker');
35
31
  }
@@ -40,18 +36,16 @@ function any(checkers) {
40
36
  attempts[0].updateNodeAndCtx();
41
37
  };
42
38
  }
43
- exports.any = any;
44
39
  /**
45
40
  * No operation.
46
41
  */
47
- const noop = () => { };
48
- exports.noop = noop;
42
+ export const noop = () => { };
49
43
  /**
50
44
  * Use the shallowest children that have their own checker to validate.
51
45
  */
52
- const fallback = async (node, ctx) => {
46
+ export const fallback = async (node, ctx) => {
53
47
  const promises = [];
54
- (0, util_1.traversePreOrder)(node, node => !ctx.meta.hasChecker(node.type), node => ctx.meta.hasChecker(node.type), node => {
48
+ traversePreOrder(node, node => !ctx.meta.hasChecker(node.type), node => ctx.meta.hasChecker(node.type), node => {
55
49
  const checker = ctx.meta.getChecker(node.type);
56
50
  const result = checker(node, ctx);
57
51
  if (result instanceof Promise) {
@@ -60,24 +54,28 @@ const fallback = async (node, ctx) => {
60
54
  });
61
55
  await Promise.allSettled(promises);
62
56
  };
63
- exports.fallback = fallback;
64
- const resourceLocation = (node, ctx) => {
65
- const full = node_1.ResourceLocationNode.toString(node, 'full');
57
+ export const dispatchSync = (node, ctx) => {
58
+ for (const child of node.children ?? []) {
59
+ if (ctx.meta.hasChecker(child.type)) {
60
+ const checker = ctx.meta.getChecker(child.type);
61
+ checker(child, ctx);
62
+ }
63
+ }
64
+ };
65
+ export const resourceLocation = (node, ctx) => {
66
+ const full = ResourceLocationNode.toString(node, 'full');
66
67
  if (node.options.pool) {
67
68
  if (!node.options.pool.includes(full)) {
68
- ctx.err.report((0, lib_1.localize)('expected', node.options.pool), node, 3 /* Error */);
69
+ ctx.err.report(localize('expected', node.options.pool), node, 3 /* ErrorSeverity.Error */);
69
70
  }
70
71
  return;
71
72
  }
72
73
  };
73
- exports.resourceLocation = resourceLocation;
74
- const symbol = (_node, _ctx) => {
74
+ export const symbol = (_node, _ctx) => {
75
75
  // TODO
76
76
  };
77
- exports.symbol = symbol;
78
- function registerCheckers(meta) {
79
- meta.registerChecker('resource_location', exports.resourceLocation);
80
- meta.registerChecker('symbol', exports.symbol);
77
+ export function registerCheckers(meta) {
78
+ meta.registerChecker('resource_location', resourceLocation);
79
+ meta.registerChecker('symbol', symbol);
81
80
  }
82
- exports.registerCheckers = registerCheckers;
83
81
  //# sourceMappingURL=builtin.js.map
@@ -1,3 +1,3 @@
1
- export * as checker from './builtin';
2
- export * from './Checker';
1
+ export * as checker from './builtin.js';
2
+ export * from './Checker.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,28 +1,3 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.checker = void 0;
26
- exports.checker = __importStar(require("./builtin"));
27
- __exportStar(require("./Checker"), exports);
1
+ export * as checker from './builtin.js';
2
+ export * from './Checker.js';
28
3
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
- import type { AstNode } from '../../node';
2
- import type { ColorizerContext } from '../../service';
3
- import type { RangeLike } from '../../source';
4
- import { Range } from '../../source';
1
+ import type { AstNode } from '../../node/index.js';
2
+ import type { ColorizerContext } from '../../service/index.js';
3
+ import type { RangeLike } from '../../source/index.js';
4
+ import { Range } from '../../source/index.js';
5
5
  export declare type Colorizer<N = AstNode> = (node: N, ctx: ColorizerContext) => readonly ColorToken[];
6
6
  export interface ColorToken {
7
7
  range: Range;
@@ -1,13 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ColorTokenModifiers = exports.ColorTokenTypes = exports.ColorToken = void 0;
4
- const source_1 = require("../../source");
5
- var ColorToken;
1
+ import { Range } from '../../source/index.js';
2
+ export var ColorToken;
6
3
  (function (ColorToken) {
7
4
  /* istanbul ignore next */
8
5
  function create(range, type, modifiers) {
9
6
  return {
10
- range: source_1.Range.get(range),
7
+ range: Range.get(range),
11
8
  type,
12
9
  modifiers,
13
10
  };
@@ -22,20 +19,20 @@ var ColorToken;
22
19
  let nextStart = Math.min(targetRange.start, tokens[0]?.range.start ?? Infinity);
23
20
  for (const t of tokens) {
24
21
  if (t.range.start > nextStart) {
25
- ans.push(ColorToken.create(source_1.Range.create(nextStart, t.range.start), type, modifiers));
22
+ ans.push(ColorToken.create(Range.create(nextStart, t.range.start), type, modifiers));
26
23
  }
27
24
  ans.push(t);
28
25
  nextStart = t.range.end;
29
26
  }
30
27
  if (nextStart < targetRange.end) {
31
- ans.push(ColorToken.create(source_1.Range.create(nextStart, targetRange.end), type, modifiers));
28
+ ans.push(ColorToken.create(Range.create(nextStart, targetRange.end), type, modifiers));
32
29
  }
33
30
  return ans;
34
31
  }
35
32
  ColorToken.fillGap = fillGap;
36
- })(ColorToken = exports.ColorToken || (exports.ColorToken = {}));
33
+ })(ColorToken || (ColorToken = {}));
37
34
  // Built-in LSP semantic tokens: https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/#textDocument_semanticTokens
38
- exports.ColorTokenTypes = Object.freeze([
35
+ export const ColorTokenTypes = Object.freeze([
39
36
  'comment',
40
37
  'enum',
41
38
  'enumMember',
@@ -57,7 +54,7 @@ exports.ColorTokenTypes = Object.freeze([
57
54
  'resourceLocation',
58
55
  'vector',
59
56
  ]);
60
- exports.ColorTokenModifiers = Object.freeze([
57
+ export const ColorTokenModifiers = Object.freeze([
61
58
  'declaration',
62
59
  'defaultLibrary',
63
60
  'definition',
@@ -1,6 +1,6 @@
1
- import type { LiteralBaseNode, ResourceLocationBaseNode, StringBaseNode, SymbolBaseNode } from '../../node';
2
- import type { MetaRegistry } from '../../service';
3
- import type { Colorizer } from './Colorizer';
1
+ import type { LiteralBaseNode, ResourceLocationBaseNode, StringBaseNode, SymbolBaseNode } from '../../node/index.js';
2
+ import type { MetaRegistry } from '../../service/index.js';
3
+ import type { Colorizer } from './Colorizer.js';
4
4
  /**
5
5
  * Use the shallowest children that have their own colorizers to provide the color tokens.
6
6
  */
@@ -1,43 +1,34 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerColorizers = exports.symbol = exports.string = exports.resourceLocation = exports.number = exports.literal = exports.error = exports.comment = exports.boolean = exports.fallback = void 0;
4
- const source_1 = require("../../source");
5
- const util_1 = require("../util");
6
- const Colorizer_1 = require("./Colorizer");
1
+ import { Range } from '../../source/index.js';
2
+ import { traversePreOrder } from '../util.js';
3
+ import { ColorToken } from './Colorizer.js';
7
4
  /**
8
5
  * Use the shallowest children that have their own colorizers to provide the color tokens.
9
6
  */
10
- const fallback = (node, ctx) => {
7
+ export const fallback = (node, ctx) => {
11
8
  const ans = [];
12
- (0, util_1.traversePreOrder)(node, node => !ctx.meta.hasColorizer(node.type) && (!ctx.range || source_1.Range.intersects(node.range, ctx.range)), node => ctx.meta.hasColorizer(node.type), node => {
9
+ traversePreOrder(node, node => !ctx.meta.hasColorizer(node.type) && (!ctx.range || Range.intersects(node.range, ctx.range)), node => ctx.meta.hasColorizer(node.type), node => {
13
10
  const colorizer = ctx.meta.getColorizer(node.type);
14
11
  const result = colorizer(node, ctx);
15
12
  ans.push(...result);
16
13
  });
17
14
  return Object.freeze(ans);
18
15
  };
19
- exports.fallback = fallback;
20
- const boolean = node => {
21
- return [Colorizer_1.ColorToken.create(node, 'literal')];
16
+ export const boolean = node => {
17
+ return [ColorToken.create(node, 'literal')];
22
18
  };
23
- exports.boolean = boolean;
24
- const comment = node => {
25
- return [Colorizer_1.ColorToken.create(node, 'comment')];
19
+ export const comment = node => {
20
+ return [ColorToken.create(node, 'comment')];
26
21
  };
27
- exports.comment = comment;
28
- const error = node => {
29
- return [Colorizer_1.ColorToken.create(node, 'error')];
22
+ export const error = node => {
23
+ return [ColorToken.create(node, 'error')];
30
24
  };
31
- exports.error = error;
32
- const literal = node => {
33
- return [Colorizer_1.ColorToken.create(node, node.options.colorTokenType ?? 'literal')];
25
+ export const literal = node => {
26
+ return [ColorToken.create(node, node.options.colorTokenType ?? 'literal')];
34
27
  };
35
- exports.literal = literal;
36
- const number = node => {
37
- return [Colorizer_1.ColorToken.create(node, 'number')];
28
+ export const number = node => {
29
+ return [ColorToken.create(node, 'number')];
38
30
  };
39
- exports.number = number;
40
- const resourceLocation = (node, _ctx) => {
31
+ export const resourceLocation = (node, _ctx) => {
41
32
  let type;
42
33
  switch (node.options.category) {
43
34
  case 'function':
@@ -48,37 +39,33 @@ const resourceLocation = (node, _ctx) => {
48
39
  type = 'resourceLocation';
49
40
  break;
50
41
  }
51
- return [Colorizer_1.ColorToken.create(node, type)];
42
+ return [ColorToken.create(node, type)];
52
43
  };
53
- exports.resourceLocation = resourceLocation;
54
- const string = (node, ctx) => {
44
+ export const string = (node, ctx) => {
55
45
  if (node.children) {
56
46
  const colorizer = ctx.meta.getColorizer(node.children[0].type);
57
47
  const result = colorizer(node.children[0], ctx);
58
48
  // TODO: Fill the gap between the last token and the ending quote with errors.
59
- return Colorizer_1.ColorToken.fillGap(result, node.range, node.options.colorTokenType ?? 'string');
49
+ return ColorToken.fillGap(result, node.range, node.options.colorTokenType ?? 'string');
60
50
  }
61
51
  else {
62
- return [Colorizer_1.ColorToken.create(node, node.options.colorTokenType ?? 'string')];
52
+ return [ColorToken.create(node, node.options.colorTokenType ?? 'string')];
63
53
  }
64
54
  };
65
- exports.string = string;
66
- const symbol = node => {
55
+ export const symbol = node => {
67
56
  // TODO: Set the modifiers according to `node.symbol`.
68
- return [Colorizer_1.ColorToken.create(node, 'variable')];
57
+ return [ColorToken.create(node, 'variable')];
69
58
  };
70
- exports.symbol = symbol;
71
- function registerColorizers(meta) {
72
- meta.registerColorizer('boolean', exports.boolean);
73
- meta.registerColorizer('comment', exports.comment);
74
- meta.registerColorizer('error', exports.error);
75
- meta.registerColorizer('float', exports.number);
76
- meta.registerColorizer('integer', exports.number);
77
- meta.registerColorizer('long', exports.number);
78
- meta.registerColorizer('literal', exports.literal);
79
- meta.registerColorizer('resource_location', exports.resourceLocation);
80
- meta.registerColorizer('string', exports.string);
81
- meta.registerColorizer('symbol', exports.symbol);
59
+ export function registerColorizers(meta) {
60
+ meta.registerColorizer('boolean', boolean);
61
+ meta.registerColorizer('comment', comment);
62
+ meta.registerColorizer('error', error);
63
+ meta.registerColorizer('float', number);
64
+ meta.registerColorizer('integer', number);
65
+ meta.registerColorizer('long', number);
66
+ meta.registerColorizer('literal', literal);
67
+ meta.registerColorizer('resource_location', resourceLocation);
68
+ meta.registerColorizer('string', string);
69
+ meta.registerColorizer('symbol', symbol);
82
70
  }
83
- exports.registerColorizers = registerColorizers;
84
71
  //# sourceMappingURL=builtin.js.map
@@ -1,3 +1,3 @@
1
- export * as colorizer from './builtin';
2
- export * from './Colorizer';
1
+ export * as colorizer from './builtin.js';
2
+ export * from './Colorizer.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,28 +1,3 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.colorizer = void 0;
26
- exports.colorizer = __importStar(require("./builtin"));
27
- __exportStar(require("./Colorizer"), exports);
1
+ export * as colorizer from './builtin.js';
2
+ export * from './Colorizer.js';
28
3
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
- import type { AstNode } from '../../node';
2
- import type { CompleterContext } from '../../service';
3
- import type { RangeLike } from '../../source';
4
- import { Range } from '../../source';
1
+ import type { AstNode } from '../../node/index.js';
2
+ import type { CompleterContext } from '../../service/index.js';
3
+ import type { RangeLike } from '../../source/index.js';
4
+ import { Range } from '../../source/index.js';
5
5
  export declare type Completer<N = AstNode> = (node: N, ctx: CompleterContext) => CompletionItem[];
6
6
  export declare const enum CompletionKind {
7
7
  Text = 1,
@@ -1,20 +1,5 @@
1
- "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
- if (kind === "m") throw new TypeError("Private method is not writable");
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
- };
13
- var _InsertTextBuilder_ans, _InsertTextBuilder_nextPlaceholder;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.InsertTextBuilder = exports.CompletionItem = void 0;
16
- const source_1 = require("../../source");
17
- var CompletionItem;
1
+ import { Range } from '../../source/index.js';
2
+ export var CompletionItem;
18
3
  (function (CompletionItem) {
19
4
  /* istanbul ignore next */
20
5
  /**
@@ -31,7 +16,7 @@ var CompletionItem;
31
16
  return {
32
17
  ...other,
33
18
  label,
34
- range: source_1.Range.get(range),
19
+ range: Range.get(range),
35
20
  ...shouldEscape ? { insertText: escape(label) } : {},
36
21
  };
37
22
  }
@@ -50,35 +35,33 @@ var CompletionItem;
50
35
  return textToInsert.replace(/([\\$}])/g, '\\$1');
51
36
  }
52
37
  CompletionItem.escape = escape;
53
- })(CompletionItem = exports.CompletionItem || (exports.CompletionItem = {}));
54
- class InsertTextBuilder {
55
- constructor() {
56
- _InsertTextBuilder_ans.set(this, '');
57
- _InsertTextBuilder_nextPlaceholder.set(this, 1);
58
- }
38
+ })(CompletionItem || (CompletionItem = {}));
39
+ export class InsertTextBuilder {
40
+ #ans = '';
41
+ #nextPlaceholder = 1;
59
42
  literal(str) {
60
- __classPrivateFieldSet(this, _InsertTextBuilder_ans, __classPrivateFieldGet(this, _InsertTextBuilder_ans, "f") + CompletionItem.escape(str), "f");
43
+ this.#ans += CompletionItem.escape(str);
61
44
  return this;
62
45
  }
63
46
  placeholder(...defaultValues) {
64
47
  if (defaultValues.length === 0) {
65
- __classPrivateFieldSet(this, _InsertTextBuilder_ans, __classPrivateFieldGet(this, _InsertTextBuilder_ans, "f") + `$\{${__classPrivateFieldGet(this, _InsertTextBuilder_nextPlaceholder, "f")}}`, "f");
48
+ this.#ans += `$\{${this.#nextPlaceholder}}`;
66
49
  }
67
50
  else if (defaultValues.length === 1) {
68
- __classPrivateFieldSet(this, _InsertTextBuilder_ans, __classPrivateFieldGet(this, _InsertTextBuilder_ans, "f") + `$\{${__classPrivateFieldGet(this, _InsertTextBuilder_nextPlaceholder, "f")}:${CompletionItem.escape(defaultValues[0])}}`, "f");
51
+ this.#ans += `$\{${this.#nextPlaceholder}:${CompletionItem.escape(defaultValues[0])}}`;
69
52
  }
70
53
  else {
71
- __classPrivateFieldSet(this, _InsertTextBuilder_ans, __classPrivateFieldGet(this, _InsertTextBuilder_ans, "f") + `$\{${__classPrivateFieldGet(this, _InsertTextBuilder_nextPlaceholder, "f")}|${defaultValues.map(v => v.replace(/([\\$},|])/g, '\\$1')).join(',')}|}`, "f");
54
+ this.#ans += `$\{${this.#nextPlaceholder}|${defaultValues.map(v => v.replace(/([\\$},|])/g, '\\$1')).join(',')}|}`;
72
55
  }
73
- __classPrivateFieldSet(this, _InsertTextBuilder_nextPlaceholder, __classPrivateFieldGet(this, _InsertTextBuilder_nextPlaceholder, "f") + 1, "f");
56
+ this.#nextPlaceholder += 1;
74
57
  return this;
75
58
  }
76
59
  exitPlace() {
77
- __classPrivateFieldSet(this, _InsertTextBuilder_ans, __classPrivateFieldGet(this, _InsertTextBuilder_ans, "f") + '$0', "f");
60
+ this.#ans += '$0';
78
61
  return this;
79
62
  }
80
63
  build() {
81
- return __classPrivateFieldGet(this, _InsertTextBuilder_ans, "f");
64
+ return this.#ans;
82
65
  }
83
66
  if(condition, callback) {
84
67
  if (condition) {
@@ -87,6 +70,4 @@ class InsertTextBuilder {
87
70
  return this;
88
71
  }
89
72
  }
90
- exports.InsertTextBuilder = InsertTextBuilder;
91
- _InsertTextBuilder_ans = new WeakMap(), _InsertTextBuilder_nextPlaceholder = new WeakMap();
92
73
  //# sourceMappingURL=Completer.js.map
@@ -1,10 +1,10 @@
1
- import type { FileNode, LiteralBaseNode, PairNode, RecordBaseNode, ResourceLocationNode, StringBaseNode, SymbolBaseNode } from '../../node';
2
- import { AstNode } from '../../node';
3
- import type { BooleanBaseNode } from '../../node/BooleanNode';
4
- import type { CompleterContext, MetaRegistry } from '../../service';
5
- import type { RangeLike } from '../../source';
6
- import type { Completer } from './Completer';
7
- import { CompletionItem } from './Completer';
1
+ import type { BooleanBaseNode } from '../../node/BooleanNode.js';
2
+ import type { FileNode, LiteralBaseNode, PairNode, RecordBaseNode, ResourceLocationNode, StringBaseNode, SymbolBaseNode } from '../../node/index.js';
3
+ import { AstNode } from '../../node/index.js';
4
+ import type { CompleterContext, MetaRegistry } from '../../service/index.js';
5
+ import type { RangeLike } from '../../source/index.js';
6
+ import type { Completer } from './Completer.js';
7
+ import { CompletionItem } from './Completer.js';
8
8
  /**
9
9
  * Uses the shallowest selected node that has its own completer to provide the completion items.
10
10
  */