@spyglassmc/json 0.1.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 (49) hide show
  1. package/lib/checker/JsonChecker.d.ts +8 -0
  2. package/lib/checker/JsonChecker.js +3 -0
  3. package/lib/checker/index.d.ts +3 -0
  4. package/lib/checker/index.js +15 -0
  5. package/lib/checker/primitives/boolean.d.ts +4 -0
  6. package/lib/checker/primitives/boolean.js +13 -0
  7. package/lib/checker/primitives/index.d.ts +7 -0
  8. package/lib/checker/primitives/index.js +19 -0
  9. package/lib/checker/primitives/list.d.ts +10 -0
  10. package/lib/checker/primitives/list.js +49 -0
  11. package/lib/checker/primitives/number.d.ts +6 -0
  12. package/lib/checker/primitives/number.js +28 -0
  13. package/lib/checker/primitives/object.d.ts +34 -0
  14. package/lib/checker/primitives/object.js +190 -0
  15. package/lib/checker/primitives/string.d.ts +12 -0
  16. package/lib/checker/primitives/string.js +72 -0
  17. package/lib/checker/primitives/util.d.ts +15 -0
  18. package/lib/checker/primitives/util.js +77 -0
  19. package/lib/colorizer/index.d.ts +7 -0
  20. package/lib/colorizer/index.js +55 -0
  21. package/lib/completer/index.d.ts +9 -0
  22. package/lib/completer/index.js +165 -0
  23. package/lib/formatter/index.d.ts +3 -0
  24. package/lib/formatter/index.js +53 -0
  25. package/lib/index.d.ts +9 -0
  26. package/lib/index.js +49 -0
  27. package/lib/node/JsonAstNode.d.ts +97 -0
  28. package/lib/node/JsonAstNode.js +152 -0
  29. package/lib/node/index.d.ts +2 -0
  30. package/lib/node/index.js +14 -0
  31. package/lib/parser/array.d.ts +4 -0
  32. package/lib/parser/array.js +38 -0
  33. package/lib/parser/boolean.d.ts +4 -0
  34. package/lib/parser/boolean.js +44 -0
  35. package/lib/parser/entry.d.ts +5 -0
  36. package/lib/parser/entry.js +49 -0
  37. package/lib/parser/index.d.ts +6 -0
  38. package/lib/parser/index.js +18 -0
  39. package/lib/parser/null.d.ts +4 -0
  40. package/lib/parser/null.js +36 -0
  41. package/lib/parser/number.d.ts +4 -0
  42. package/lib/parser/number.js +34 -0
  43. package/lib/parser/object.d.ts +4 -0
  44. package/lib/parser/object.js +34 -0
  45. package/lib/parser/string.d.ts +5 -0
  46. package/lib/parser/string.js +38 -0
  47. package/lib/util.d.ts +1 -0
  48. package/lib/util.js +2 -0
  49. package/package.json +30 -0
@@ -0,0 +1,9 @@
1
+ import type { Completer, MetaRegistry } from '@spyglassmc/core';
2
+ import type { JsonArrayNode, JsonBooleanNode, JsonNode, JsonObjectNode } from '../node';
3
+ export declare const JsonTriggerCharacters: string[];
4
+ export declare const entry: Completer<JsonNode>;
5
+ export declare const object: Completer<JsonObjectNode>;
6
+ export declare const array: Completer<JsonArrayNode>;
7
+ export declare const boolean: Completer<JsonBooleanNode>;
8
+ export declare function register(meta: MetaRegistry): void;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,165 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.register = exports.boolean = exports.array = exports.object = exports.entry = exports.JsonTriggerCharacters = void 0;
23
+ const core = __importStar(require("@spyglassmc/core"));
24
+ const core_1 = require("@spyglassmc/core");
25
+ const node_1 = require("../node");
26
+ exports.JsonTriggerCharacters = ['\n', ':', '"'];
27
+ const SIMPLE_SNIPPETS = {
28
+ 'json:object': '{$1}',
29
+ 'json:array': '[$1]',
30
+ 'json:string': '"$1"',
31
+ 'json:boolean': '${1|false,true|}',
32
+ 'json:number': '${1:0}',
33
+ };
34
+ const entry = (node, ctx) => {
35
+ return core.completer.dispatch(node, ctx);
36
+ };
37
+ exports.entry = entry;
38
+ exports.object = core.completer.record({
39
+ key: (record, pair, ctx, range, insertValue, insertComma) => {
40
+ if (record.expectation) {
41
+ return unique(record.expectation.filter(node_1.JsonExpectation.isObject)
42
+ .flatMap(e => objectCompletion(range, record, e, ctx, insertValue, insertComma, pair?.key?.value)));
43
+ }
44
+ return [];
45
+ },
46
+ value: (record, pair, ctx) => {
47
+ if (pair.value && !core_1.Range.isEmpty(pair.value)) {
48
+ return core.completer.dispatch(pair.value, ctx);
49
+ }
50
+ if (record.expectation) {
51
+ return unique(record.expectation.filter(node_1.JsonExpectation.isObject)
52
+ .filter(e => e.fields)
53
+ .map(e => e.fields.find(f => f.key === pair.key?.value))
54
+ .flatMap(f => valueCompletion(ctx.offset, f.value, ctx)));
55
+ }
56
+ return [];
57
+ },
58
+ });
59
+ const array = (node, ctx) => {
60
+ const index = core.binarySearch(node.children, ctx.offset, (n, o) => n.sep
61
+ ? core_1.Range.compareOffset(core_1.Range.translate(n, 0, -1), o, true)
62
+ : core_1.Range.compareOffset(n.range, o, true));
63
+ const item = index >= 0 ? node.children[index] : undefined;
64
+ if (item?.value) {
65
+ return core.completer.dispatch(item.value, ctx);
66
+ }
67
+ if (node.expectation && core_1.Range.contains(core_1.Range.translate(node, 1, -1), ctx.offset, true)) {
68
+ return unique(node.expectation.filter(node_1.JsonExpectation.isArray)
69
+ .filter(e => e.items)
70
+ .flatMap(e => valueCompletion(ctx.offset, e.items, ctx)));
71
+ }
72
+ return [];
73
+ };
74
+ exports.array = array;
75
+ const boolean = (node) => {
76
+ return ['false', 'true'].map(v => simpleCompletion(node, v));
77
+ };
78
+ exports.boolean = boolean;
79
+ const string = (node, ctx) => {
80
+ if (node.children?.length) {
81
+ return core.completer.string(node, ctx);
82
+ }
83
+ if (node.expectation) {
84
+ return unique(node.expectation.filter(node_1.JsonExpectation.isString)
85
+ .flatMap(e => stringCompletion(node, e, ctx)));
86
+ }
87
+ return [];
88
+ };
89
+ function objectCompletion(range, node, expectation, ctx, insertValue, insertComma, selectedKey) {
90
+ if (expectation.fields) {
91
+ return expectation.fields
92
+ .filter(f => f.key === selectedKey || !node.children.find(p => f.key === p.key?.value))
93
+ .map(f => fieldCompletion(range, f, insertValue, insertComma));
94
+ }
95
+ else if (expectation.keys) {
96
+ return expectation.keys.flatMap(e => stringCompletion(range, e, ctx)
97
+ .map(c => ({
98
+ ...c,
99
+ ...insertValue ? { insertText: `${c.insertText}: ${insertComma ? ',' : ''}` } : {},
100
+ })));
101
+ }
102
+ return [];
103
+ }
104
+ function fieldCompletion(range, field, insertValue, insertComma) {
105
+ const value = field.value?.[0] ? SIMPLE_SNIPPETS[field.value[0].type] : '';
106
+ return core_1.CompletionItem.create(field.key, range, {
107
+ kind: 10 /* Property */,
108
+ detail: field.value?.map(e => e.typedoc).join(' | '),
109
+ sortText: `${field.deprecated ? 2 : field.opt ? 1 : 0}${field.key}`,
110
+ deprecated: field.deprecated,
111
+ filterText: `"${field.key}"`,
112
+ insertText: `"${field.key}"${insertValue ? `: ${value}` : ''}${insertComma ? ',' : ''}`,
113
+ });
114
+ }
115
+ function valueCompletion(range, expectation, ctx) {
116
+ return unique(expectation.flatMap(e => {
117
+ switch (e.type) {
118
+ case 'json:object':
119
+ case 'json:array':
120
+ return [simpleCompletion(range, SIMPLE_SNIPPETS[e.type])];
121
+ case 'json:string':
122
+ return stringCompletion(ctx.offset, e, ctx);
123
+ case 'json:boolean':
124
+ return ['false', 'true'].map(v => simpleCompletion(range, v));
125
+ case 'json:number':
126
+ return [simpleCompletion(range, '0')];
127
+ }
128
+ }));
129
+ }
130
+ function stringCompletion(range, expectation, ctx) {
131
+ if (Array.isArray(expectation.pool)) {
132
+ return expectation.pool.map(v => core_1.CompletionItem.create(v, range, {
133
+ kind: 12 /* Value */,
134
+ filterText: `"${v}"`,
135
+ insertText: `"${v}"`,
136
+ }));
137
+ }
138
+ return [simpleCompletion(range, SIMPLE_SNIPPETS[expectation.type])];
139
+ }
140
+ function simpleCompletion(range, value) {
141
+ return core_1.CompletionItem.create(value.replace('$1', ''), range, {
142
+ kind: 12 /* Value */,
143
+ insertText: value,
144
+ });
145
+ }
146
+ function unique(completions) {
147
+ const ans = [];
148
+ const labels = new Set();
149
+ completions.forEach(c => {
150
+ if (!labels.has(c.label)) {
151
+ labels.add(c.label);
152
+ ans.push(c);
153
+ }
154
+ });
155
+ return ans;
156
+ }
157
+ function register(meta) {
158
+ meta.registerCompleter('json:entry', exports.entry);
159
+ meta.registerCompleter('json:array', exports.array);
160
+ meta.registerCompleter('json:boolean', exports.boolean);
161
+ meta.registerCompleter('json:object', exports.object);
162
+ meta.registerCompleter('json:string', string);
163
+ }
164
+ exports.register = register;
165
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ import type { MetaRegistry } from '../../../core/lib';
2
+ export declare function register(meta: MetaRegistry): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,53 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.register = void 0;
23
+ const core = __importStar(require("@spyglassmc/core"));
24
+ const lib_1 = require("../../../core/lib");
25
+ const array = (node, ctx) => {
26
+ if (node.children.length === 0)
27
+ return '[]';
28
+ const values = node.children.map(child => {
29
+ const value = child.value && ctx.meta.getFormatter(child.value.type)(child.value, (0, lib_1.indentFormatter)(ctx));
30
+ return `${ctx.indent(1)}${value ?? ''}`;
31
+ });
32
+ return `[\n${values.join(',\n')}\n${ctx.indent()}]`;
33
+ };
34
+ const object = (node, ctx) => {
35
+ if (node.children.length === 0)
36
+ return '{}';
37
+ const fields = node.children.map(child => {
38
+ const key = child.key && core.formatter.string(child.key, ctx);
39
+ const value = child.value && ctx.meta.getFormatter(child.value.type)(child.value, (0, lib_1.indentFormatter)(ctx));
40
+ return `${ctx.indent(1)}${key ?? ''}: ${value ?? ''}`;
41
+ });
42
+ return `{\n${fields.join(',\n')}\n${ctx.indent()}}`;
43
+ };
44
+ function register(meta) {
45
+ meta.registerFormatter('json:array', array);
46
+ meta.registerFormatter('json:boolean', core.formatter.boolean);
47
+ meta.registerFormatter('json:null', () => 'null');
48
+ meta.registerFormatter('json:number', core.formatter.float);
49
+ meta.registerFormatter('json:object', object);
50
+ meta.registerFormatter('json:string', core.formatter.string);
51
+ }
52
+ exports.register = register;
53
+ //# sourceMappingURL=index.js.map
package/lib/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type * as core from '@spyglassmc/core';
2
+ export * as checker from './checker';
3
+ export * as colorizer from './colorizer';
4
+ export * as completer from './completer';
5
+ export * as formatter from './formatter';
6
+ export * from './node';
7
+ export * as parser from './parser';
8
+ export declare const initialize: core.ProjectInitializer;
9
+ //# sourceMappingURL=index.d.ts.map
package/lib/index.js ADDED
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /* istanbul ignore file */
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
6
+ }) : (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ o[k2] = m[k];
9
+ }));
10
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
11
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
12
+ }) : function(o, v) {
13
+ o["default"] = v;
14
+ });
15
+ var __importStar = (this && this.__importStar) || function (mod) {
16
+ if (mod && mod.__esModule) return mod;
17
+ var result = {};
18
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
19
+ __setModuleDefault(result, mod);
20
+ return result;
21
+ };
22
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
23
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.initialize = exports.parser = exports.formatter = exports.completer = exports.colorizer = exports.checker = void 0;
27
+ const colorizer = __importStar(require("./colorizer"));
28
+ const completer = __importStar(require("./completer"));
29
+ const formatter = __importStar(require("./formatter"));
30
+ const parser = __importStar(require("./parser"));
31
+ exports.checker = __importStar(require("./checker"));
32
+ exports.colorizer = __importStar(require("./colorizer"));
33
+ exports.completer = __importStar(require("./completer"));
34
+ exports.formatter = __importStar(require("./formatter"));
35
+ __exportStar(require("./node"), exports);
36
+ exports.parser = __importStar(require("./parser"));
37
+ const initialize = ({ meta }) => {
38
+ meta.registerLanguage('json', {
39
+ extensions: ['.json', '.mcmeta'],
40
+ triggerCharacters: completer.JsonTriggerCharacters,
41
+ parser: parser.entry,
42
+ });
43
+ meta.registerParser('json:entry', parser.entry);
44
+ colorizer.register(meta);
45
+ completer.register(meta);
46
+ formatter.register(meta);
47
+ };
48
+ exports.initialize = initialize;
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,97 @@
1
+ import type { ItemNode, PairNode } from '@spyglassmc/core';
2
+ import * as core from '@spyglassmc/core';
3
+ export declare type JsonNode = JsonObjectNode | JsonArrayNode | JsonStringNode | JsonNumberNode | JsonBooleanNode | JsonNullNode;
4
+ export declare type JsonRelatedNode = JsonNode | JsonPairNode | JsonItemNode;
5
+ export declare namespace JsonNode {
6
+ function is(node: core.AstNode): node is JsonNode;
7
+ function isRelated(node: core.AstNode): node is JsonRelatedNode;
8
+ }
9
+ interface JsonBaseAstNode {
10
+ expectation?: JsonExpectation[];
11
+ }
12
+ export declare type JsonExpectation = JsonObjectExpectation | JsonArrayExpectation | JsonStringExpectation | JsonNumberExpectation | JsonBooleanExpectation;
13
+ export declare namespace JsonExpectation {
14
+ function isArray(e: JsonExpectation): e is JsonArrayExpectation;
15
+ function isObject(e: JsonExpectation): e is JsonObjectExpectation;
16
+ function isString(e: JsonExpectation): e is JsonStringExpectation;
17
+ }
18
+ interface JsonBaseExpectation {
19
+ typedoc: string;
20
+ }
21
+ export interface JsonObjectExpectation extends JsonBaseExpectation {
22
+ readonly type: 'json:object';
23
+ fields?: {
24
+ key: string;
25
+ value?: JsonExpectation[];
26
+ opt?: boolean;
27
+ deprecated?: boolean;
28
+ }[];
29
+ keys?: JsonStringExpectation[];
30
+ }
31
+ export interface JsonObjectNode extends core.RecordBaseNode<JsonStringNode, JsonNode>, JsonBaseAstNode {
32
+ readonly type: 'json:object';
33
+ }
34
+ export declare namespace JsonObjectNode {
35
+ function is(obj: object | undefined): obj is JsonObjectNode;
36
+ function mock(range: core.RangeLike): JsonObjectNode;
37
+ }
38
+ export declare type JsonPairNode = PairNode<JsonStringNode, JsonNode>;
39
+ export declare namespace JsonPairNode {
40
+ function is(obj: object): obj is JsonPairNode;
41
+ }
42
+ export interface JsonArrayExpectation extends JsonBaseExpectation {
43
+ readonly type: 'json:array';
44
+ items?: JsonExpectation[];
45
+ }
46
+ export interface JsonArrayNode extends core.ListNode<JsonNode>, JsonBaseAstNode {
47
+ readonly type: 'json:array';
48
+ }
49
+ export declare namespace JsonArrayNode {
50
+ function is(obj: object | undefined): obj is JsonArrayNode;
51
+ function mock(range: core.RangeLike): JsonArrayNode;
52
+ }
53
+ export declare type JsonItemNode = ItemNode<JsonNode>;
54
+ export declare namespace JsonItemNode {
55
+ function is(obj: object): obj is JsonItemNode;
56
+ }
57
+ export interface JsonStringExpectation extends JsonBaseExpectation {
58
+ readonly type: 'json:string';
59
+ pool?: string[];
60
+ }
61
+ export declare namespace JsonStringExpectation {
62
+ function is(obj: object): obj is JsonStringExpectation;
63
+ }
64
+ export interface JsonStringNode extends core.StringBaseNode, JsonBaseAstNode {
65
+ readonly type: 'json:string';
66
+ }
67
+ export declare namespace JsonStringNode {
68
+ function is(obj: object | undefined): obj is JsonStringNode;
69
+ function mock(range: core.RangeLike): JsonStringNode;
70
+ }
71
+ export interface JsonNumberExpectation extends JsonBaseExpectation {
72
+ readonly type: 'json:number';
73
+ }
74
+ export interface JsonNumberNode extends core.FloatBaseNode, JsonBaseAstNode {
75
+ readonly type: 'json:number';
76
+ readonly value: number;
77
+ }
78
+ export declare namespace JsonNumberNode {
79
+ function is(obj: object): obj is JsonNumberNode;
80
+ }
81
+ export interface JsonBooleanExpectation extends JsonBaseExpectation {
82
+ readonly type: 'json:boolean';
83
+ }
84
+ export interface JsonBooleanNode extends core.BooleanBaseNode, JsonBaseAstNode {
85
+ readonly type: 'json:boolean';
86
+ }
87
+ export declare namespace JsonBooleanNode {
88
+ function is(obj: object): obj is JsonBooleanNode;
89
+ }
90
+ export interface JsonNullNode extends core.AstNode, JsonBaseAstNode {
91
+ readonly type: 'json:null';
92
+ }
93
+ export declare namespace JsonNullNode {
94
+ function is(obj: object): obj is JsonNullNode;
95
+ }
96
+ export {};
97
+ //# sourceMappingURL=JsonAstNode.d.ts.map
@@ -0,0 +1,152 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.JsonNullNode = exports.JsonBooleanNode = exports.JsonNumberNode = exports.JsonStringNode = exports.JsonStringExpectation = exports.JsonItemNode = exports.JsonArrayNode = exports.JsonPairNode = exports.JsonObjectNode = exports.JsonExpectation = exports.JsonNode = void 0;
23
+ const core = __importStar(require("@spyglassmc/core"));
24
+ const parser_1 = require("../parser");
25
+ var JsonNode;
26
+ (function (JsonNode) {
27
+ function is(node) {
28
+ return (JsonObjectNode.is(node) ||
29
+ JsonArrayNode.is(node) ||
30
+ JsonStringNode.is(node) ||
31
+ JsonNumberNode.is(node) ||
32
+ JsonBooleanNode.is(node) ||
33
+ JsonNullNode.is(node));
34
+ }
35
+ JsonNode.is = is;
36
+ function isRelated(node) {
37
+ return (JsonNode.is(node) ||
38
+ JsonPairNode.is(node) ||
39
+ JsonItemNode.is(node));
40
+ }
41
+ JsonNode.isRelated = isRelated;
42
+ })(JsonNode = exports.JsonNode || (exports.JsonNode = {}));
43
+ var JsonExpectation;
44
+ (function (JsonExpectation) {
45
+ function isArray(e) {
46
+ return e.type === 'json:array';
47
+ }
48
+ JsonExpectation.isArray = isArray;
49
+ function isObject(e) {
50
+ return e.type === 'json:object';
51
+ }
52
+ JsonExpectation.isObject = isObject;
53
+ function isString(e) {
54
+ return e.type === 'json:string';
55
+ }
56
+ JsonExpectation.isString = isString;
57
+ })(JsonExpectation = exports.JsonExpectation || (exports.JsonExpectation = {}));
58
+ var JsonObjectNode;
59
+ (function (JsonObjectNode) {
60
+ /* istanbul ignore next */
61
+ function is(obj) {
62
+ return obj?.type === 'json:object';
63
+ }
64
+ JsonObjectNode.is = is;
65
+ function mock(range) {
66
+ return {
67
+ type: 'json:object',
68
+ range: core.Range.get(range),
69
+ children: [],
70
+ };
71
+ }
72
+ JsonObjectNode.mock = mock;
73
+ })(JsonObjectNode = exports.JsonObjectNode || (exports.JsonObjectNode = {}));
74
+ var JsonPairNode;
75
+ (function (JsonPairNode) {
76
+ /* istanbul ignore next */
77
+ function is(obj) {
78
+ return obj.type === 'pair';
79
+ }
80
+ JsonPairNode.is = is;
81
+ })(JsonPairNode = exports.JsonPairNode || (exports.JsonPairNode = {}));
82
+ var JsonArrayNode;
83
+ (function (JsonArrayNode) {
84
+ function is(obj) {
85
+ return obj?.type === 'json:array';
86
+ }
87
+ JsonArrayNode.is = is;
88
+ function mock(range) {
89
+ return {
90
+ type: 'json:array',
91
+ range: core.Range.get(range),
92
+ children: [],
93
+ };
94
+ }
95
+ JsonArrayNode.mock = mock;
96
+ })(JsonArrayNode = exports.JsonArrayNode || (exports.JsonArrayNode = {}));
97
+ var JsonItemNode;
98
+ (function (JsonItemNode) {
99
+ /* istanbul ignore next */
100
+ function is(obj) {
101
+ return obj.type === 'item';
102
+ }
103
+ JsonItemNode.is = is;
104
+ })(JsonItemNode = exports.JsonItemNode || (exports.JsonItemNode = {}));
105
+ var JsonStringExpectation;
106
+ (function (JsonStringExpectation) {
107
+ /* istanbul ignore next */
108
+ function is(obj) {
109
+ return obj.type === 'json:string';
110
+ }
111
+ JsonStringExpectation.is = is;
112
+ })(JsonStringExpectation = exports.JsonStringExpectation || (exports.JsonStringExpectation = {}));
113
+ var JsonStringNode;
114
+ (function (JsonStringNode) {
115
+ /* istanbul ignore next */
116
+ function is(obj) {
117
+ return obj?.type === 'json:string';
118
+ }
119
+ JsonStringNode.is = is;
120
+ function mock(range) {
121
+ return {
122
+ ...core.StringNode.mock(range, parser_1.JsonStringOptions),
123
+ type: 'json:string',
124
+ };
125
+ }
126
+ JsonStringNode.mock = mock;
127
+ })(JsonStringNode = exports.JsonStringNode || (exports.JsonStringNode = {}));
128
+ var JsonNumberNode;
129
+ (function (JsonNumberNode) {
130
+ /* istanbul ignore next */
131
+ function is(obj) {
132
+ return obj.type === 'json:number';
133
+ }
134
+ JsonNumberNode.is = is;
135
+ })(JsonNumberNode = exports.JsonNumberNode || (exports.JsonNumberNode = {}));
136
+ var JsonBooleanNode;
137
+ (function (JsonBooleanNode) {
138
+ /* istanbul ignore next */
139
+ function is(obj) {
140
+ return obj.type === 'json:boolean';
141
+ }
142
+ JsonBooleanNode.is = is;
143
+ })(JsonBooleanNode = exports.JsonBooleanNode || (exports.JsonBooleanNode = {}));
144
+ var JsonNullNode;
145
+ (function (JsonNullNode) {
146
+ /* istanbul ignore next */
147
+ function is(obj) {
148
+ return obj.type === 'json:null';
149
+ }
150
+ JsonNullNode.is = is;
151
+ })(JsonNullNode = exports.JsonNullNode || (exports.JsonNullNode = {}));
152
+ //# sourceMappingURL=JsonAstNode.js.map
@@ -0,0 +1,2 @@
1
+ export * from './JsonAstNode';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,14 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./JsonAstNode"), exports);
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,4 @@
1
+ import * as core from '@spyglassmc/core';
2
+ import type { JsonArrayNode } from '../node';
3
+ export declare const array: core.Parser<JsonArrayNode>;
4
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1,38 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.array = void 0;
23
+ const core = __importStar(require("@spyglassmc/core"));
24
+ const entry_1 = require("./entry");
25
+ const array = (src, ctx) => {
26
+ const parser = core.list({
27
+ start: '[',
28
+ value: entry_1.entry,
29
+ sep: ',',
30
+ trailingSep: false,
31
+ end: ']',
32
+ });
33
+ const ans = parser(src, ctx);
34
+ ans.type = 'json:array';
35
+ return ans;
36
+ };
37
+ exports.array = array;
38
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1,4 @@
1
+ import * as core from '@spyglassmc/core';
2
+ import type { JsonBooleanNode } from '../node';
3
+ export declare const boolean: core.Parser<JsonBooleanNode>;
4
+ //# sourceMappingURL=boolean.d.ts.map
@@ -0,0 +1,44 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.boolean = void 0;
23
+ const core = __importStar(require("@spyglassmc/core"));
24
+ const core_1 = require("@spyglassmc/core");
25
+ const boolean = (src, ctx) => {
26
+ const start = src.cursor;
27
+ if (src.trySkip('false')) {
28
+ return {
29
+ type: 'json:boolean',
30
+ range: core_1.Range.create(start, src),
31
+ value: false,
32
+ };
33
+ }
34
+ if (src.trySkip('true')) {
35
+ return {
36
+ type: 'json:boolean',
37
+ range: core_1.Range.create(start, src),
38
+ value: true,
39
+ };
40
+ }
41
+ return core.Failure;
42
+ };
43
+ exports.boolean = boolean;
44
+ //# sourceMappingURL=boolean.js.map
@@ -0,0 +1,5 @@
1
+ import * as core from '@spyglassmc/core';
2
+ import type { JsonNode } from '../node';
3
+ export declare function json(dumpErrors?: boolean): core.Parser<JsonNode>;
4
+ export declare const entry: core.Parser<JsonNode>;
5
+ //# sourceMappingURL=entry.d.ts.map