@codingame/monaco-vscode-api 1.78.3-next.1 → 1.78.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.
Files changed (138) hide show
  1. package/dist/api2.js +4 -69
  2. package/dist/bat.js +9 -0
  3. package/dist/clojure.js +8 -0
  4. package/dist/coffeescript.js +9 -2
  5. package/dist/coffeescript2.js +2 -0
  6. package/dist/cpp.js +16 -2
  7. package/dist/cpp2.js +2 -0
  8. package/dist/csharp.js +9 -2
  9. package/dist/csharp2.js +2 -0
  10. package/dist/css.js +8 -0
  11. package/dist/dart.js +8 -0
  12. package/dist/default-extensions/bat.js +5 -3
  13. package/dist/default-extensions/clojure.js +6 -4
  14. package/dist/default-extensions/coffeescript.js +5 -3
  15. package/dist/default-extensions/cpp.js +7 -3
  16. package/dist/default-extensions/csharp.js +5 -3
  17. package/dist/default-extensions/css.js +6 -4
  18. package/dist/default-extensions/dart.js +6 -4
  19. package/dist/default-extensions/diff.js +6 -4
  20. package/dist/default-extensions/docker.js +6 -4
  21. package/dist/default-extensions/fsharp.js +5 -3
  22. package/dist/default-extensions/go.js +6 -4
  23. package/dist/default-extensions/groovy.js +5 -3
  24. package/dist/default-extensions/handlebars.js +6 -4
  25. package/dist/default-extensions/hlsl.js +6 -4
  26. package/dist/default-extensions/html.js +5 -3
  27. package/dist/default-extensions/ini.js +7 -4
  28. package/dist/default-extensions/java.js +5 -3
  29. package/dist/default-extensions/javascript.js +8 -4
  30. package/dist/default-extensions/json.js +7 -4
  31. package/dist/default-extensions/julia.js +6 -4
  32. package/dist/default-extensions/latex.js +5 -6
  33. package/dist/default-extensions/less.js +6 -4
  34. package/dist/default-extensions/log.js +4 -2
  35. package/dist/default-extensions/lua.js +6 -4
  36. package/dist/default-extensions/make.js +6 -4
  37. package/dist/default-extensions/markdown-basics.js +5 -3
  38. package/dist/default-extensions/objective-c.js +7 -4
  39. package/dist/default-extensions/perl.js +7 -5
  40. package/dist/default-extensions/php.js +5 -3
  41. package/dist/default-extensions/powershell.js +6 -4
  42. package/dist/default-extensions/pug.js +6 -4
  43. package/dist/default-extensions/python.js +6 -4
  44. package/dist/default-extensions/r.js +6 -4
  45. package/dist/default-extensions/razor.js +6 -4
  46. package/dist/default-extensions/ruby.js +6 -4
  47. package/dist/default-extensions/rust.js +6 -4
  48. package/dist/default-extensions/scss.js +6 -4
  49. package/dist/default-extensions/shaderlab.js +6 -4
  50. package/dist/default-extensions/shellscript.js +6 -4
  51. package/dist/default-extensions/sql.js +6 -4
  52. package/dist/default-extensions/swift.js +5 -3
  53. package/dist/default-extensions/theme-abyss.js +4 -2
  54. package/dist/default-extensions/theme-defaults.js +4 -2
  55. package/dist/default-extensions/theme-kimbie-dark.js +4 -2
  56. package/dist/default-extensions/theme-monokai-dimmed.js +4 -2
  57. package/dist/default-extensions/theme-monokai.js +4 -2
  58. package/dist/default-extensions/theme-quietlight.js +4 -2
  59. package/dist/default-extensions/theme-red.js +4 -2
  60. package/dist/default-extensions/theme-seti.js +4 -2
  61. package/dist/default-extensions/theme-solarized-dark.js +4 -2
  62. package/dist/default-extensions/theme-solarized-light.js +4 -2
  63. package/dist/default-extensions/theme-tomorrow-night-blue.js +4 -2
  64. package/dist/default-extensions/typescript-basics.js +7 -3
  65. package/dist/default-extensions/vb.js +5 -3
  66. package/dist/default-extensions/xml.js +7 -5
  67. package/dist/default-extensions/yaml.js +7 -3
  68. package/dist/diff.js +8 -0
  69. package/dist/docker.js +8 -0
  70. package/dist/extensions.d.ts +2 -9
  71. package/dist/fsharp.js +9 -2
  72. package/dist/fsharp2.js +2 -0
  73. package/dist/go.js +8 -0
  74. package/dist/groovy.js +9 -2
  75. package/dist/groovy2.js +2 -0
  76. package/dist/handlebars.js +8 -0
  77. package/dist/hlsl.js +8 -0
  78. package/dist/html.js +10 -2
  79. package/dist/html2.js +2 -0
  80. package/dist/ini.js +10 -0
  81. package/dist/java.js +9 -2
  82. package/dist/java2.js +2 -0
  83. package/dist/javascript.js +14 -2
  84. package/dist/javascript2.js +2 -0
  85. package/dist/json.js +10 -0
  86. package/dist/julia.js +8 -0
  87. package/dist/latex.js +11 -0
  88. package/dist/less.js +8 -0
  89. package/dist/log.js +7 -0
  90. package/dist/lua.js +8 -0
  91. package/dist/make.js +8 -0
  92. package/dist/markdown-basics.js +9 -0
  93. package/dist/modelEditor.d.ts +1398 -136
  94. package/dist/monaco.d.ts +5 -9
  95. package/dist/monaco.js +44 -370
  96. package/dist/objective-c.js +10 -0
  97. package/dist/perl.js +10 -0
  98. package/dist/php.js +10 -2
  99. package/dist/php2.js +2 -0
  100. package/dist/polyfill.js +10 -29
  101. package/dist/powershell.js +8 -0
  102. package/dist/pug.js +8 -0
  103. package/dist/python.js +9 -0
  104. package/dist/r.js +8 -0
  105. package/dist/razor.js +8 -0
  106. package/dist/rollup-vsix-plugin.d.ts +2 -4
  107. package/dist/rollup-vsix-plugin.js +27 -903
  108. package/dist/ruby.js +8 -0
  109. package/dist/rust.js +8 -0
  110. package/dist/scss.js +9 -0
  111. package/dist/shaderlab.js +8 -0
  112. package/dist/shellscript.js +8 -0
  113. package/dist/snippetsService.js +1 -1
  114. package/dist/sql.js +8 -0
  115. package/dist/swift.js +9 -2
  116. package/dist/swift2.js +2 -0
  117. package/dist/theme-abyss.js +7 -0
  118. package/dist/theme-defaults.js +15 -0
  119. package/dist/theme-kimbie-dark.js +7 -0
  120. package/dist/theme-monokai-dimmed.js +7 -0
  121. package/dist/theme-monokai.js +7 -0
  122. package/dist/theme-quietlight.js +7 -0
  123. package/dist/theme-red.js +7 -0
  124. package/dist/theme-seti.js +7 -0
  125. package/dist/theme-solarized-dark.js +7 -0
  126. package/dist/theme-solarized-light.js +7 -0
  127. package/dist/theme-tomorrow-night-blue.js +7 -0
  128. package/dist/typescript-basics.js +14 -0
  129. package/dist/vb.js +9 -2
  130. package/dist/vb2.js +2 -0
  131. package/dist/webpack-loader.cjs +2 -1
  132. package/dist/xml.js +10 -0
  133. package/dist/yaml.js +10 -0
  134. package/package.json +3 -3
  135. package/dist/default-extensions/typescript-language-features.js +0 -7
  136. package/dist/latex-cpp-embedded-language-configuration.js +0 -2
  137. package/dist/latex-language-configuration.js +0 -2
  138. package/dist/markdown-latex-combined-language-configuration.js +0 -2
@@ -1,878 +1,6 @@
1
- import { createFilter, dataToEsm } from '@rollup/pluginutils';
1
+ import { createFilter } from '@rollup/pluginutils';
2
2
  import * as yauzl from 'yauzl';
3
3
  import * as path from 'path';
4
-
5
- function extractCommandPaths(command) {
6
- if (Array.isArray(command)) {
7
- return command.flatMap(extractCommandPaths);
8
- }
9
- if (command.icon != null) {
10
- if (typeof command.icon === 'object') {
11
- return [command.icon.light, command.icon.dark];
12
- }
13
- else {
14
- return [command.icon];
15
- }
16
- }
17
- return [];
18
- }
19
- function extractGrammarPaths(grammar) {
20
- return [grammar.path];
21
- }
22
- function extractLanguagePaths(language) {
23
- const paths = [];
24
- if (language.icon != null) {
25
- paths.push(language.icon.dark, language.icon.light);
26
- }
27
- if (language.configuration != null) {
28
- paths.push(language.configuration);
29
- }
30
- return paths;
31
- }
32
- function extractSnippetsPaths(snippet) {
33
- return [snippet.path];
34
- }
35
- function extractThemePaths(theme) {
36
- return [theme.path];
37
- }
38
- function extractPathsFromExtensionManifestContribute(contribute) {
39
- const paths = [];
40
- if (contribute.commands != null)
41
- paths.push(...extractCommandPaths(contribute.commands));
42
- if (contribute.grammars != null)
43
- paths.push(...contribute.grammars.flatMap(extractGrammarPaths));
44
- if (contribute.languages != null)
45
- paths.push(...contribute.languages.flatMap(extractLanguagePaths));
46
- if (contribute.snippets != null)
47
- paths.push(...contribute.snippets.flatMap(extractSnippetsPaths));
48
- if (contribute.themes != null)
49
- paths.push(...contribute.themes.flatMap(extractThemePaths));
50
- if (contribute.iconThemes != null)
51
- paths.push(...contribute.iconThemes.flatMap(extractThemePaths));
52
- if (contribute.productIconThemes != null)
53
- paths.push(...contribute.productIconThemes.flatMap(extractThemePaths));
54
- return Array.from(new Set(paths));
55
- }
56
- function extractPathsFromExtensionManifest(manifest) {
57
- return manifest.contributes != null ? extractPathsFromExtensionManifestContribute(manifest.contributes) : [];
58
- }
59
-
60
- /*---------------------------------------------------------------------------------------------
61
- * Copyright (c) Microsoft Corporation. All rights reserved.
62
- * Licensed under the MIT License. See License.txt in the project root for license information.
63
- *--------------------------------------------------------------------------------------------*/
64
- var ScanError;
65
- (function (ScanError) {
66
- ScanError[ScanError["None"] = 0] = "None";
67
- ScanError[ScanError["UnexpectedEndOfComment"] = 1] = "UnexpectedEndOfComment";
68
- ScanError[ScanError["UnexpectedEndOfString"] = 2] = "UnexpectedEndOfString";
69
- ScanError[ScanError["UnexpectedEndOfNumber"] = 3] = "UnexpectedEndOfNumber";
70
- ScanError[ScanError["InvalidUnicode"] = 4] = "InvalidUnicode";
71
- ScanError[ScanError["InvalidEscapeCharacter"] = 5] = "InvalidEscapeCharacter";
72
- ScanError[ScanError["InvalidCharacter"] = 6] = "InvalidCharacter";
73
- })(ScanError || (ScanError = {}));
74
- var SyntaxKind;
75
- (function (SyntaxKind) {
76
- SyntaxKind[SyntaxKind["OpenBraceToken"] = 1] = "OpenBraceToken";
77
- SyntaxKind[SyntaxKind["CloseBraceToken"] = 2] = "CloseBraceToken";
78
- SyntaxKind[SyntaxKind["OpenBracketToken"] = 3] = "OpenBracketToken";
79
- SyntaxKind[SyntaxKind["CloseBracketToken"] = 4] = "CloseBracketToken";
80
- SyntaxKind[SyntaxKind["CommaToken"] = 5] = "CommaToken";
81
- SyntaxKind[SyntaxKind["ColonToken"] = 6] = "ColonToken";
82
- SyntaxKind[SyntaxKind["NullKeyword"] = 7] = "NullKeyword";
83
- SyntaxKind[SyntaxKind["TrueKeyword"] = 8] = "TrueKeyword";
84
- SyntaxKind[SyntaxKind["FalseKeyword"] = 9] = "FalseKeyword";
85
- SyntaxKind[SyntaxKind["StringLiteral"] = 10] = "StringLiteral";
86
- SyntaxKind[SyntaxKind["NumericLiteral"] = 11] = "NumericLiteral";
87
- SyntaxKind[SyntaxKind["LineCommentTrivia"] = 12] = "LineCommentTrivia";
88
- SyntaxKind[SyntaxKind["BlockCommentTrivia"] = 13] = "BlockCommentTrivia";
89
- SyntaxKind[SyntaxKind["LineBreakTrivia"] = 14] = "LineBreakTrivia";
90
- SyntaxKind[SyntaxKind["Trivia"] = 15] = "Trivia";
91
- SyntaxKind[SyntaxKind["Unknown"] = 16] = "Unknown";
92
- SyntaxKind[SyntaxKind["EOF"] = 17] = "EOF";
93
- })(SyntaxKind || (SyntaxKind = {}));
94
- var ParseErrorCode;
95
- (function (ParseErrorCode) {
96
- ParseErrorCode[ParseErrorCode["InvalidSymbol"] = 1] = "InvalidSymbol";
97
- ParseErrorCode[ParseErrorCode["InvalidNumberFormat"] = 2] = "InvalidNumberFormat";
98
- ParseErrorCode[ParseErrorCode["PropertyNameExpected"] = 3] = "PropertyNameExpected";
99
- ParseErrorCode[ParseErrorCode["ValueExpected"] = 4] = "ValueExpected";
100
- ParseErrorCode[ParseErrorCode["ColonExpected"] = 5] = "ColonExpected";
101
- ParseErrorCode[ParseErrorCode["CommaExpected"] = 6] = "CommaExpected";
102
- ParseErrorCode[ParseErrorCode["CloseBraceExpected"] = 7] = "CloseBraceExpected";
103
- ParseErrorCode[ParseErrorCode["CloseBracketExpected"] = 8] = "CloseBracketExpected";
104
- ParseErrorCode[ParseErrorCode["EndOfFileExpected"] = 9] = "EndOfFileExpected";
105
- ParseErrorCode[ParseErrorCode["InvalidCommentToken"] = 10] = "InvalidCommentToken";
106
- ParseErrorCode[ParseErrorCode["UnexpectedEndOfComment"] = 11] = "UnexpectedEndOfComment";
107
- ParseErrorCode[ParseErrorCode["UnexpectedEndOfString"] = 12] = "UnexpectedEndOfString";
108
- ParseErrorCode[ParseErrorCode["UnexpectedEndOfNumber"] = 13] = "UnexpectedEndOfNumber";
109
- ParseErrorCode[ParseErrorCode["InvalidUnicode"] = 14] = "InvalidUnicode";
110
- ParseErrorCode[ParseErrorCode["InvalidEscapeCharacter"] = 15] = "InvalidEscapeCharacter";
111
- ParseErrorCode[ParseErrorCode["InvalidCharacter"] = 16] = "InvalidCharacter";
112
- })(ParseErrorCode || (ParseErrorCode = {}));
113
- var ParseOptions;
114
- (function (ParseOptions) {
115
- ParseOptions.DEFAULT = {
116
- allowTrailingComma: true
117
- };
118
- })(ParseOptions || (ParseOptions = {}));
119
- /**
120
- * Creates a JSON scanner on the given text.
121
- * If ignoreTrivia is set, whitespaces or comments are ignored.
122
- */
123
- function createScanner(text, ignoreTrivia = false) {
124
- let pos = 0;
125
- const len = text.length;
126
- let value = '';
127
- let tokenOffset = 0;
128
- let token = 16 /* SyntaxKind.Unknown */;
129
- let scanError = 0 /* ScanError.None */;
130
- function scanHexDigits(count) {
131
- let digits = 0;
132
- let hexValue = 0;
133
- while (digits < count) {
134
- const ch = text.charCodeAt(pos);
135
- if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) {
136
- hexValue = hexValue * 16 + ch - 48 /* CharacterCodes._0 */;
137
- }
138
- else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) {
139
- hexValue = hexValue * 16 + ch - 65 /* CharacterCodes.A */ + 10;
140
- }
141
- else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) {
142
- hexValue = hexValue * 16 + ch - 97 /* CharacterCodes.a */ + 10;
143
- }
144
- else {
145
- break;
146
- }
147
- pos++;
148
- digits++;
149
- }
150
- if (digits < count) {
151
- hexValue = -1;
152
- }
153
- return hexValue;
154
- }
155
- function setPosition(newPosition) {
156
- pos = newPosition;
157
- value = '';
158
- tokenOffset = 0;
159
- token = 16 /* SyntaxKind.Unknown */;
160
- scanError = 0 /* ScanError.None */;
161
- }
162
- function scanNumber() {
163
- const start = pos;
164
- if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) {
165
- pos++;
166
- }
167
- else {
168
- pos++;
169
- while (pos < text.length && isDigit(text.charCodeAt(pos))) {
170
- pos++;
171
- }
172
- }
173
- if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) {
174
- pos++;
175
- if (pos < text.length && isDigit(text.charCodeAt(pos))) {
176
- pos++;
177
- while (pos < text.length && isDigit(text.charCodeAt(pos))) {
178
- pos++;
179
- }
180
- }
181
- else {
182
- scanError = 3 /* ScanError.UnexpectedEndOfNumber */;
183
- return text.substring(start, pos);
184
- }
185
- }
186
- let end = pos;
187
- if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) {
188
- pos++;
189
- if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) {
190
- pos++;
191
- }
192
- if (pos < text.length && isDigit(text.charCodeAt(pos))) {
193
- pos++;
194
- while (pos < text.length && isDigit(text.charCodeAt(pos))) {
195
- pos++;
196
- }
197
- end = pos;
198
- }
199
- else {
200
- scanError = 3 /* ScanError.UnexpectedEndOfNumber */;
201
- }
202
- }
203
- return text.substring(start, end);
204
- }
205
- function scanString() {
206
- let result = '', start = pos;
207
- while (true) {
208
- if (pos >= len) {
209
- result += text.substring(start, pos);
210
- scanError = 2 /* ScanError.UnexpectedEndOfString */;
211
- break;
212
- }
213
- const ch = text.charCodeAt(pos);
214
- if (ch === 34 /* CharacterCodes.doubleQuote */) {
215
- result += text.substring(start, pos);
216
- pos++;
217
- break;
218
- }
219
- if (ch === 92 /* CharacterCodes.backslash */) {
220
- result += text.substring(start, pos);
221
- pos++;
222
- if (pos >= len) {
223
- scanError = 2 /* ScanError.UnexpectedEndOfString */;
224
- break;
225
- }
226
- const ch2 = text.charCodeAt(pos++);
227
- switch (ch2) {
228
- case 34 /* CharacterCodes.doubleQuote */:
229
- result += '\"';
230
- break;
231
- case 92 /* CharacterCodes.backslash */:
232
- result += '\\';
233
- break;
234
- case 47 /* CharacterCodes.slash */:
235
- result += '/';
236
- break;
237
- case 98 /* CharacterCodes.b */:
238
- result += '\b';
239
- break;
240
- case 102 /* CharacterCodes.f */:
241
- result += '\f';
242
- break;
243
- case 110 /* CharacterCodes.n */:
244
- result += '\n';
245
- break;
246
- case 114 /* CharacterCodes.r */:
247
- result += '\r';
248
- break;
249
- case 116 /* CharacterCodes.t */:
250
- result += '\t';
251
- break;
252
- case 117 /* CharacterCodes.u */: {
253
- const ch3 = scanHexDigits(4);
254
- if (ch3 >= 0) {
255
- result += String.fromCharCode(ch3);
256
- }
257
- else {
258
- scanError = 4 /* ScanError.InvalidUnicode */;
259
- }
260
- break;
261
- }
262
- default:
263
- scanError = 5 /* ScanError.InvalidEscapeCharacter */;
264
- }
265
- start = pos;
266
- continue;
267
- }
268
- if (ch >= 0 && ch <= 0x1F) {
269
- if (isLineBreak(ch)) {
270
- result += text.substring(start, pos);
271
- scanError = 2 /* ScanError.UnexpectedEndOfString */;
272
- break;
273
- }
274
- else {
275
- scanError = 6 /* ScanError.InvalidCharacter */;
276
- // mark as error but continue with string
277
- }
278
- }
279
- pos++;
280
- }
281
- return result;
282
- }
283
- function scanNext() {
284
- value = '';
285
- scanError = 0 /* ScanError.None */;
286
- tokenOffset = pos;
287
- if (pos >= len) {
288
- // at the end
289
- tokenOffset = len;
290
- return token = 17 /* SyntaxKind.EOF */;
291
- }
292
- let code = text.charCodeAt(pos);
293
- // trivia: whitespace
294
- if (isWhitespace(code)) {
295
- do {
296
- pos++;
297
- value += String.fromCharCode(code);
298
- code = text.charCodeAt(pos);
299
- } while (isWhitespace(code));
300
- return token = 15 /* SyntaxKind.Trivia */;
301
- }
302
- // trivia: newlines
303
- if (isLineBreak(code)) {
304
- pos++;
305
- value += String.fromCharCode(code);
306
- if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {
307
- pos++;
308
- value += '\n';
309
- }
310
- return token = 14 /* SyntaxKind.LineBreakTrivia */;
311
- }
312
- switch (code) {
313
- // tokens: []{}:,
314
- case 123 /* CharacterCodes.openBrace */:
315
- pos++;
316
- return token = 1 /* SyntaxKind.OpenBraceToken */;
317
- case 125 /* CharacterCodes.closeBrace */:
318
- pos++;
319
- return token = 2 /* SyntaxKind.CloseBraceToken */;
320
- case 91 /* CharacterCodes.openBracket */:
321
- pos++;
322
- return token = 3 /* SyntaxKind.OpenBracketToken */;
323
- case 93 /* CharacterCodes.closeBracket */:
324
- pos++;
325
- return token = 4 /* SyntaxKind.CloseBracketToken */;
326
- case 58 /* CharacterCodes.colon */:
327
- pos++;
328
- return token = 6 /* SyntaxKind.ColonToken */;
329
- case 44 /* CharacterCodes.comma */:
330
- pos++;
331
- return token = 5 /* SyntaxKind.CommaToken */;
332
- // strings
333
- case 34 /* CharacterCodes.doubleQuote */:
334
- pos++;
335
- value = scanString();
336
- return token = 10 /* SyntaxKind.StringLiteral */;
337
- // comments
338
- case 47 /* CharacterCodes.slash */: {
339
- const start = pos - 1;
340
- // Single-line comment
341
- if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {
342
- pos += 2;
343
- while (pos < len) {
344
- if (isLineBreak(text.charCodeAt(pos))) {
345
- break;
346
- }
347
- pos++;
348
- }
349
- value = text.substring(start, pos);
350
- return token = 12 /* SyntaxKind.LineCommentTrivia */;
351
- }
352
- // Multi-line comment
353
- if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) {
354
- pos += 2;
355
- const safeLength = len - 1; // For lookahead.
356
- let commentClosed = false;
357
- while (pos < safeLength) {
358
- const ch = text.charCodeAt(pos);
359
- if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {
360
- pos += 2;
361
- commentClosed = true;
362
- break;
363
- }
364
- pos++;
365
- }
366
- if (!commentClosed) {
367
- pos++;
368
- scanError = 1 /* ScanError.UnexpectedEndOfComment */;
369
- }
370
- value = text.substring(start, pos);
371
- return token = 13 /* SyntaxKind.BlockCommentTrivia */;
372
- }
373
- // just a single slash
374
- value += String.fromCharCode(code);
375
- pos++;
376
- return token = 16 /* SyntaxKind.Unknown */;
377
- }
378
- // numbers
379
- case 45 /* CharacterCodes.minus */:
380
- value += String.fromCharCode(code);
381
- pos++;
382
- if (pos === len || !isDigit(text.charCodeAt(pos))) {
383
- return token = 16 /* SyntaxKind.Unknown */;
384
- }
385
- // found a minus, followed by a number so
386
- // we fall through to proceed with scanning
387
- // numbers
388
- case 48 /* CharacterCodes._0 */:
389
- case 49 /* CharacterCodes._1 */:
390
- case 50 /* CharacterCodes._2 */:
391
- case 51 /* CharacterCodes._3 */:
392
- case 52 /* CharacterCodes._4 */:
393
- case 53 /* CharacterCodes._5 */:
394
- case 54 /* CharacterCodes._6 */:
395
- case 55 /* CharacterCodes._7 */:
396
- case 56 /* CharacterCodes._8 */:
397
- case 57 /* CharacterCodes._9 */:
398
- value += scanNumber();
399
- return token = 11 /* SyntaxKind.NumericLiteral */;
400
- // literals and unknown symbols
401
- default:
402
- // is a literal? Read the full word.
403
- while (pos < len && isUnknownContentCharacter(code)) {
404
- pos++;
405
- code = text.charCodeAt(pos);
406
- }
407
- if (tokenOffset !== pos) {
408
- value = text.substring(tokenOffset, pos);
409
- // keywords: true, false, null
410
- switch (value) {
411
- case 'true': return token = 8 /* SyntaxKind.TrueKeyword */;
412
- case 'false': return token = 9 /* SyntaxKind.FalseKeyword */;
413
- case 'null': return token = 7 /* SyntaxKind.NullKeyword */;
414
- }
415
- return token = 16 /* SyntaxKind.Unknown */;
416
- }
417
- // some
418
- value += String.fromCharCode(code);
419
- pos++;
420
- return token = 16 /* SyntaxKind.Unknown */;
421
- }
422
- }
423
- function isUnknownContentCharacter(code) {
424
- if (isWhitespace(code) || isLineBreak(code)) {
425
- return false;
426
- }
427
- switch (code) {
428
- case 125 /* CharacterCodes.closeBrace */:
429
- case 93 /* CharacterCodes.closeBracket */:
430
- case 123 /* CharacterCodes.openBrace */:
431
- case 91 /* CharacterCodes.openBracket */:
432
- case 34 /* CharacterCodes.doubleQuote */:
433
- case 58 /* CharacterCodes.colon */:
434
- case 44 /* CharacterCodes.comma */:
435
- case 47 /* CharacterCodes.slash */:
436
- return false;
437
- }
438
- return true;
439
- }
440
- function scanNextNonTrivia() {
441
- let result;
442
- do {
443
- result = scanNext();
444
- } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */);
445
- return result;
446
- }
447
- return {
448
- setPosition: setPosition,
449
- getPosition: () => pos,
450
- scan: ignoreTrivia ? scanNextNonTrivia : scanNext,
451
- getToken: () => token,
452
- getTokenValue: () => value,
453
- getTokenOffset: () => tokenOffset,
454
- getTokenLength: () => pos - tokenOffset,
455
- getTokenError: () => scanError
456
- };
457
- }
458
- function isWhitespace(ch) {
459
- return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */ || ch === 11 /* CharacterCodes.verticalTab */ || ch === 12 /* CharacterCodes.formFeed */ ||
460
- ch === 160 /* CharacterCodes.nonBreakingSpace */ || ch === 5760 /* CharacterCodes.ogham */ || ch >= 8192 /* CharacterCodes.enQuad */ && ch <= 8203 /* CharacterCodes.zeroWidthSpace */ ||
461
- ch === 8239 /* CharacterCodes.narrowNoBreakSpace */ || ch === 8287 /* CharacterCodes.mathematicalSpace */ || ch === 12288 /* CharacterCodes.ideographicSpace */ || ch === 65279 /* CharacterCodes.byteOrderMark */;
462
- }
463
- function isLineBreak(ch) {
464
- return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */ || ch === 8232 /* CharacterCodes.lineSeparator */ || ch === 8233 /* CharacterCodes.paragraphSeparator */;
465
- }
466
- function isDigit(ch) {
467
- return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */;
468
- }
469
- var CharacterCodes;
470
- (function (CharacterCodes) {
471
- CharacterCodes[CharacterCodes["nullCharacter"] = 0] = "nullCharacter";
472
- CharacterCodes[CharacterCodes["maxAsciiCharacter"] = 127] = "maxAsciiCharacter";
473
- CharacterCodes[CharacterCodes["lineFeed"] = 10] = "lineFeed";
474
- CharacterCodes[CharacterCodes["carriageReturn"] = 13] = "carriageReturn";
475
- CharacterCodes[CharacterCodes["lineSeparator"] = 8232] = "lineSeparator";
476
- CharacterCodes[CharacterCodes["paragraphSeparator"] = 8233] = "paragraphSeparator";
477
- // REVIEW: do we need to support this? The scanner doesn't, but our IText does. This seems
478
- // like an odd disparity? (Or maybe it's completely fine for them to be different).
479
- CharacterCodes[CharacterCodes["nextLine"] = 133] = "nextLine";
480
- // Unicode 3.0 space characters
481
- CharacterCodes[CharacterCodes["space"] = 32] = "space";
482
- CharacterCodes[CharacterCodes["nonBreakingSpace"] = 160] = "nonBreakingSpace";
483
- CharacterCodes[CharacterCodes["enQuad"] = 8192] = "enQuad";
484
- CharacterCodes[CharacterCodes["emQuad"] = 8193] = "emQuad";
485
- CharacterCodes[CharacterCodes["enSpace"] = 8194] = "enSpace";
486
- CharacterCodes[CharacterCodes["emSpace"] = 8195] = "emSpace";
487
- CharacterCodes[CharacterCodes["threePerEmSpace"] = 8196] = "threePerEmSpace";
488
- CharacterCodes[CharacterCodes["fourPerEmSpace"] = 8197] = "fourPerEmSpace";
489
- CharacterCodes[CharacterCodes["sixPerEmSpace"] = 8198] = "sixPerEmSpace";
490
- CharacterCodes[CharacterCodes["figureSpace"] = 8199] = "figureSpace";
491
- CharacterCodes[CharacterCodes["punctuationSpace"] = 8200] = "punctuationSpace";
492
- CharacterCodes[CharacterCodes["thinSpace"] = 8201] = "thinSpace";
493
- CharacterCodes[CharacterCodes["hairSpace"] = 8202] = "hairSpace";
494
- CharacterCodes[CharacterCodes["zeroWidthSpace"] = 8203] = "zeroWidthSpace";
495
- CharacterCodes[CharacterCodes["narrowNoBreakSpace"] = 8239] = "narrowNoBreakSpace";
496
- CharacterCodes[CharacterCodes["ideographicSpace"] = 12288] = "ideographicSpace";
497
- CharacterCodes[CharacterCodes["mathematicalSpace"] = 8287] = "mathematicalSpace";
498
- CharacterCodes[CharacterCodes["ogham"] = 5760] = "ogham";
499
- CharacterCodes[CharacterCodes["_"] = 95] = "_";
500
- CharacterCodes[CharacterCodes["$"] = 36] = "$";
501
- CharacterCodes[CharacterCodes["_0"] = 48] = "_0";
502
- CharacterCodes[CharacterCodes["_1"] = 49] = "_1";
503
- CharacterCodes[CharacterCodes["_2"] = 50] = "_2";
504
- CharacterCodes[CharacterCodes["_3"] = 51] = "_3";
505
- CharacterCodes[CharacterCodes["_4"] = 52] = "_4";
506
- CharacterCodes[CharacterCodes["_5"] = 53] = "_5";
507
- CharacterCodes[CharacterCodes["_6"] = 54] = "_6";
508
- CharacterCodes[CharacterCodes["_7"] = 55] = "_7";
509
- CharacterCodes[CharacterCodes["_8"] = 56] = "_8";
510
- CharacterCodes[CharacterCodes["_9"] = 57] = "_9";
511
- CharacterCodes[CharacterCodes["a"] = 97] = "a";
512
- CharacterCodes[CharacterCodes["b"] = 98] = "b";
513
- CharacterCodes[CharacterCodes["c"] = 99] = "c";
514
- CharacterCodes[CharacterCodes["d"] = 100] = "d";
515
- CharacterCodes[CharacterCodes["e"] = 101] = "e";
516
- CharacterCodes[CharacterCodes["f"] = 102] = "f";
517
- CharacterCodes[CharacterCodes["g"] = 103] = "g";
518
- CharacterCodes[CharacterCodes["h"] = 104] = "h";
519
- CharacterCodes[CharacterCodes["i"] = 105] = "i";
520
- CharacterCodes[CharacterCodes["j"] = 106] = "j";
521
- CharacterCodes[CharacterCodes["k"] = 107] = "k";
522
- CharacterCodes[CharacterCodes["l"] = 108] = "l";
523
- CharacterCodes[CharacterCodes["m"] = 109] = "m";
524
- CharacterCodes[CharacterCodes["n"] = 110] = "n";
525
- CharacterCodes[CharacterCodes["o"] = 111] = "o";
526
- CharacterCodes[CharacterCodes["p"] = 112] = "p";
527
- CharacterCodes[CharacterCodes["q"] = 113] = "q";
528
- CharacterCodes[CharacterCodes["r"] = 114] = "r";
529
- CharacterCodes[CharacterCodes["s"] = 115] = "s";
530
- CharacterCodes[CharacterCodes["t"] = 116] = "t";
531
- CharacterCodes[CharacterCodes["u"] = 117] = "u";
532
- CharacterCodes[CharacterCodes["v"] = 118] = "v";
533
- CharacterCodes[CharacterCodes["w"] = 119] = "w";
534
- CharacterCodes[CharacterCodes["x"] = 120] = "x";
535
- CharacterCodes[CharacterCodes["y"] = 121] = "y";
536
- CharacterCodes[CharacterCodes["z"] = 122] = "z";
537
- CharacterCodes[CharacterCodes["A"] = 65] = "A";
538
- CharacterCodes[CharacterCodes["B"] = 66] = "B";
539
- CharacterCodes[CharacterCodes["C"] = 67] = "C";
540
- CharacterCodes[CharacterCodes["D"] = 68] = "D";
541
- CharacterCodes[CharacterCodes["E"] = 69] = "E";
542
- CharacterCodes[CharacterCodes["F"] = 70] = "F";
543
- CharacterCodes[CharacterCodes["G"] = 71] = "G";
544
- CharacterCodes[CharacterCodes["H"] = 72] = "H";
545
- CharacterCodes[CharacterCodes["I"] = 73] = "I";
546
- CharacterCodes[CharacterCodes["J"] = 74] = "J";
547
- CharacterCodes[CharacterCodes["K"] = 75] = "K";
548
- CharacterCodes[CharacterCodes["L"] = 76] = "L";
549
- CharacterCodes[CharacterCodes["M"] = 77] = "M";
550
- CharacterCodes[CharacterCodes["N"] = 78] = "N";
551
- CharacterCodes[CharacterCodes["O"] = 79] = "O";
552
- CharacterCodes[CharacterCodes["P"] = 80] = "P";
553
- CharacterCodes[CharacterCodes["Q"] = 81] = "Q";
554
- CharacterCodes[CharacterCodes["R"] = 82] = "R";
555
- CharacterCodes[CharacterCodes["S"] = 83] = "S";
556
- CharacterCodes[CharacterCodes["T"] = 84] = "T";
557
- CharacterCodes[CharacterCodes["U"] = 85] = "U";
558
- CharacterCodes[CharacterCodes["V"] = 86] = "V";
559
- CharacterCodes[CharacterCodes["W"] = 87] = "W";
560
- CharacterCodes[CharacterCodes["X"] = 88] = "X";
561
- CharacterCodes[CharacterCodes["Y"] = 89] = "Y";
562
- CharacterCodes[CharacterCodes["Z"] = 90] = "Z";
563
- CharacterCodes[CharacterCodes["ampersand"] = 38] = "ampersand";
564
- CharacterCodes[CharacterCodes["asterisk"] = 42] = "asterisk";
565
- CharacterCodes[CharacterCodes["at"] = 64] = "at";
566
- CharacterCodes[CharacterCodes["backslash"] = 92] = "backslash";
567
- CharacterCodes[CharacterCodes["bar"] = 124] = "bar";
568
- CharacterCodes[CharacterCodes["caret"] = 94] = "caret";
569
- CharacterCodes[CharacterCodes["closeBrace"] = 125] = "closeBrace";
570
- CharacterCodes[CharacterCodes["closeBracket"] = 93] = "closeBracket";
571
- CharacterCodes[CharacterCodes["closeParen"] = 41] = "closeParen";
572
- CharacterCodes[CharacterCodes["colon"] = 58] = "colon";
573
- CharacterCodes[CharacterCodes["comma"] = 44] = "comma";
574
- CharacterCodes[CharacterCodes["dot"] = 46] = "dot";
575
- CharacterCodes[CharacterCodes["doubleQuote"] = 34] = "doubleQuote";
576
- CharacterCodes[CharacterCodes["equals"] = 61] = "equals";
577
- CharacterCodes[CharacterCodes["exclamation"] = 33] = "exclamation";
578
- CharacterCodes[CharacterCodes["greaterThan"] = 62] = "greaterThan";
579
- CharacterCodes[CharacterCodes["lessThan"] = 60] = "lessThan";
580
- CharacterCodes[CharacterCodes["minus"] = 45] = "minus";
581
- CharacterCodes[CharacterCodes["openBrace"] = 123] = "openBrace";
582
- CharacterCodes[CharacterCodes["openBracket"] = 91] = "openBracket";
583
- CharacterCodes[CharacterCodes["openParen"] = 40] = "openParen";
584
- CharacterCodes[CharacterCodes["percent"] = 37] = "percent";
585
- CharacterCodes[CharacterCodes["plus"] = 43] = "plus";
586
- CharacterCodes[CharacterCodes["question"] = 63] = "question";
587
- CharacterCodes[CharacterCodes["semicolon"] = 59] = "semicolon";
588
- CharacterCodes[CharacterCodes["singleQuote"] = 39] = "singleQuote";
589
- CharacterCodes[CharacterCodes["slash"] = 47] = "slash";
590
- CharacterCodes[CharacterCodes["tilde"] = 126] = "tilde";
591
- CharacterCodes[CharacterCodes["backspace"] = 8] = "backspace";
592
- CharacterCodes[CharacterCodes["formFeed"] = 12] = "formFeed";
593
- CharacterCodes[CharacterCodes["byteOrderMark"] = 65279] = "byteOrderMark";
594
- CharacterCodes[CharacterCodes["tab"] = 9] = "tab";
595
- CharacterCodes[CharacterCodes["verticalTab"] = 11] = "verticalTab";
596
- })(CharacterCodes || (CharacterCodes = {}));
597
- /**
598
- * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
599
- * Therefore always check the errors list to find out if the input was valid.
600
- */
601
- function parse(text, errors = [], options = ParseOptions.DEFAULT) {
602
- let currentProperty = null;
603
- let currentParent = [];
604
- const previousParents = [];
605
- function onValue(value) {
606
- if (Array.isArray(currentParent)) {
607
- currentParent.push(value);
608
- }
609
- else if (currentProperty !== null) {
610
- currentParent[currentProperty] = value;
611
- }
612
- }
613
- const visitor = {
614
- onObjectBegin: () => {
615
- const object = {};
616
- onValue(object);
617
- previousParents.push(currentParent);
618
- currentParent = object;
619
- currentProperty = null;
620
- },
621
- onObjectProperty: (name) => {
622
- currentProperty = name;
623
- },
624
- onObjectEnd: () => {
625
- currentParent = previousParents.pop();
626
- },
627
- onArrayBegin: () => {
628
- const array = [];
629
- onValue(array);
630
- previousParents.push(currentParent);
631
- currentParent = array;
632
- currentProperty = null;
633
- },
634
- onArrayEnd: () => {
635
- currentParent = previousParents.pop();
636
- },
637
- onLiteralValue: onValue,
638
- onError: (error, offset, length) => {
639
- errors.push({ error, offset, length });
640
- }
641
- };
642
- visit(text, visitor, options);
643
- return currentParent[0];
644
- }
645
- /**
646
- * Parses the given text and invokes the visitor functions for each object, array and literal reached.
647
- */
648
- function visit(text, visitor, options = ParseOptions.DEFAULT) {
649
- const _scanner = createScanner(text, false);
650
- function toNoArgVisit(visitFunction) {
651
- return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength()) : () => true;
652
- }
653
- function toOneArgVisit(visitFunction) {
654
- return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength()) : () => true;
655
- }
656
- const onObjectBegin = toNoArgVisit(visitor.onObjectBegin), onObjectProperty = toOneArgVisit(visitor.onObjectProperty), onObjectEnd = toNoArgVisit(visitor.onObjectEnd), onArrayBegin = toNoArgVisit(visitor.onArrayBegin), onArrayEnd = toNoArgVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisit(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);
657
- const disallowComments = options && options.disallowComments;
658
- const allowTrailingComma = options && options.allowTrailingComma;
659
- function scanNext() {
660
- while (true) {
661
- const token = _scanner.scan();
662
- switch (_scanner.getTokenError()) {
663
- case 4 /* ScanError.InvalidUnicode */:
664
- handleError(14 /* ParseErrorCode.InvalidUnicode */);
665
- break;
666
- case 5 /* ScanError.InvalidEscapeCharacter */:
667
- handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);
668
- break;
669
- case 3 /* ScanError.UnexpectedEndOfNumber */:
670
- handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);
671
- break;
672
- case 1 /* ScanError.UnexpectedEndOfComment */:
673
- if (!disallowComments) {
674
- handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);
675
- }
676
- break;
677
- case 2 /* ScanError.UnexpectedEndOfString */:
678
- handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);
679
- break;
680
- case 6 /* ScanError.InvalidCharacter */:
681
- handleError(16 /* ParseErrorCode.InvalidCharacter */);
682
- break;
683
- }
684
- switch (token) {
685
- case 12 /* SyntaxKind.LineCommentTrivia */:
686
- case 13 /* SyntaxKind.BlockCommentTrivia */:
687
- if (disallowComments) {
688
- handleError(10 /* ParseErrorCode.InvalidCommentToken */);
689
- }
690
- else {
691
- onComment();
692
- }
693
- break;
694
- case 16 /* SyntaxKind.Unknown */:
695
- handleError(1 /* ParseErrorCode.InvalidSymbol */);
696
- break;
697
- case 15 /* SyntaxKind.Trivia */:
698
- case 14 /* SyntaxKind.LineBreakTrivia */:
699
- break;
700
- default:
701
- return token;
702
- }
703
- }
704
- }
705
- function handleError(error, skipUntilAfter = [], skipUntil = []) {
706
- onError(error);
707
- if (skipUntilAfter.length + skipUntil.length > 0) {
708
- let token = _scanner.getToken();
709
- while (token !== 17 /* SyntaxKind.EOF */) {
710
- if (skipUntilAfter.indexOf(token) !== -1) {
711
- scanNext();
712
- break;
713
- }
714
- else if (skipUntil.indexOf(token) !== -1) {
715
- break;
716
- }
717
- token = scanNext();
718
- }
719
- }
720
- }
721
- function parseString(isValue) {
722
- const value = _scanner.getTokenValue();
723
- if (isValue) {
724
- onLiteralValue(value);
725
- }
726
- else {
727
- onObjectProperty(value);
728
- }
729
- scanNext();
730
- return true;
731
- }
732
- function parseLiteral() {
733
- switch (_scanner.getToken()) {
734
- case 11 /* SyntaxKind.NumericLiteral */: {
735
- let value = 0;
736
- try {
737
- value = JSON.parse(_scanner.getTokenValue());
738
- if (typeof value !== 'number') {
739
- handleError(2 /* ParseErrorCode.InvalidNumberFormat */);
740
- value = 0;
741
- }
742
- }
743
- catch (e) {
744
- handleError(2 /* ParseErrorCode.InvalidNumberFormat */);
745
- }
746
- onLiteralValue(value);
747
- break;
748
- }
749
- case 7 /* SyntaxKind.NullKeyword */:
750
- onLiteralValue(null);
751
- break;
752
- case 8 /* SyntaxKind.TrueKeyword */:
753
- onLiteralValue(true);
754
- break;
755
- case 9 /* SyntaxKind.FalseKeyword */:
756
- onLiteralValue(false);
757
- break;
758
- default:
759
- return false;
760
- }
761
- scanNext();
762
- return true;
763
- }
764
- function parseProperty() {
765
- if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {
766
- handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
767
- return false;
768
- }
769
- parseString(false);
770
- if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {
771
- onSeparator(':');
772
- scanNext(); // consume colon
773
- if (!parseValue()) {
774
- handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
775
- }
776
- }
777
- else {
778
- handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
779
- }
780
- return true;
781
- }
782
- function parseObject() {
783
- onObjectBegin();
784
- scanNext(); // consume open brace
785
- let needsComma = false;
786
- while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
787
- if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {
788
- if (!needsComma) {
789
- handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
790
- }
791
- onSeparator(',');
792
- scanNext(); // consume comma
793
- if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {
794
- break;
795
- }
796
- }
797
- else if (needsComma) {
798
- handleError(6 /* ParseErrorCode.CommaExpected */, [], []);
799
- }
800
- if (!parseProperty()) {
801
- handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
802
- }
803
- needsComma = true;
804
- }
805
- onObjectEnd();
806
- if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {
807
- handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);
808
- }
809
- else {
810
- scanNext(); // consume close brace
811
- }
812
- return true;
813
- }
814
- function parseArray() {
815
- onArrayBegin();
816
- scanNext(); // consume open bracket
817
- let needsComma = false;
818
- while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
819
- if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {
820
- if (!needsComma) {
821
- handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
822
- }
823
- onSeparator(',');
824
- scanNext(); // consume comma
825
- if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {
826
- break;
827
- }
828
- }
829
- else if (needsComma) {
830
- handleError(6 /* ParseErrorCode.CommaExpected */, [], []);
831
- }
832
- if (!parseValue()) {
833
- handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);
834
- }
835
- needsComma = true;
836
- }
837
- onArrayEnd();
838
- if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {
839
- handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);
840
- }
841
- else {
842
- scanNext(); // consume close bracket
843
- }
844
- return true;
845
- }
846
- function parseValue() {
847
- switch (_scanner.getToken()) {
848
- case 3 /* SyntaxKind.OpenBracketToken */:
849
- return parseArray();
850
- case 1 /* SyntaxKind.OpenBraceToken */:
851
- return parseObject();
852
- case 10 /* SyntaxKind.StringLiteral */:
853
- return parseString(true);
854
- default:
855
- return parseLiteral();
856
- }
857
- }
858
- scanNext();
859
- if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {
860
- if (options.allowEmptyContent) {
861
- return true;
862
- }
863
- handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
864
- return false;
865
- }
866
- if (!parseValue()) {
867
- handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
868
- return false;
869
- }
870
- if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
871
- handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);
872
- }
873
- return true;
874
- }
875
-
876
4
  function read(stream) {
877
5
  const bufs = [];
878
6
  return new Promise((resolve) => {
@@ -912,10 +40,23 @@ async function readVsix(file) {
912
40
  });
913
41
  });
914
42
  }
43
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+ function extractPathsFromExtensionManifest(manifest) {
45
+ const paths = [];
46
+ for (const [key, value] of Object.entries(manifest)) {
47
+ if (typeof value === 'string' && (key === 'path' || value.startsWith('./'))) {
48
+ paths.push(value);
49
+ }
50
+ if (value != null && typeof value === 'object') {
51
+ paths.push(...extractPathsFromExtensionManifest(value));
52
+ }
53
+ }
54
+ return paths;
55
+ }
915
56
  const defaultOptions = {
916
57
  include: '**/*.vsix'
917
58
  };
918
- function plugin(options = defaultOptions) {
59
+ export default function plugin(options = defaultOptions) {
919
60
  const filter = createFilter(options.include, options.exclude);
920
61
  const vsixFiles = {};
921
62
  return {
@@ -930,51 +71,34 @@ function plugin(options = defaultOptions) {
930
71
  return undefined;
931
72
  },
932
73
  async load(id) {
933
- const rawMatch = /vsix:(.*):(.*)\.raw/.exec(id);
74
+ const rawMatch = /vsix:(.*):(.*).raw/.exec(id);
934
75
  if (rawMatch != null) {
935
76
  const content = vsixFiles[rawMatch[1]][rawMatch[2]].toString('utf8');
936
77
  return `export default ${JSON.stringify(content)};`;
937
78
  }
938
- const match = /vsix:(.*):(.*)\.vsjson/.exec(id);
79
+ const match = /vsix:(.*):(.*)/.exec(id);
939
80
  if (match != null) {
940
- const parsed = parse(vsixFiles[match[1]][match[2]].toString('utf8'));
941
- return {
942
- code: dataToEsm(parsed, {
943
- compact: true,
944
- namedExports: false,
945
- preferConst: false
946
- })
947
- };
81
+ return vsixFiles[match[1]][match[2]].toString('utf8');
948
82
  }
949
83
  if (!filter(id))
950
84
  return null;
951
85
  const files = await readVsix(id);
952
- const manifest = parse(files['package.json'].toString('utf8'));
953
- function getVsixPath(file) {
954
- return path.relative('/', path.resolve('/', file));
955
- }
956
- const usedFiles = extractPathsFromExtensionManifest(manifest).filter(file => getVsixPath(file) in files);
957
- const allFiles = ['package.json', 'package.nls.json', ...usedFiles];
958
- const nlsExists = files['package.nls.json'] != null;
959
- const vsixFile = allFiles.reduce((acc, usedFile) => {
960
- return ({
961
- ...acc,
962
- [usedFile]: files[getVsixPath(usedFile)]
963
- });
964
- }, {});
86
+ const manifest = JSON.parse(files['package.json'].toString('utf8'));
87
+ const usedFiles = ['package.json', ...extractPathsFromExtensionManifest(manifest.contributes)];
88
+ const vsixFile = usedFiles.reduce((acc, usedFile) => ({
89
+ ...acc,
90
+ [usedFile]: files[path.relative('/', path.resolve('/', usedFile))]
91
+ }), {});
965
92
  vsixFiles[id] = vsixFile;
966
93
  return `
967
- import manifest from 'vsix:${id}:package.json.vsjson'
968
- ${nlsExists ? `import nls from 'vsix:${id}:package.nls.json.vsjson'` : ''}
94
+ import manifest from 'vsix:${id}:package.json'
969
95
  import { registerExtension, onExtHostInitialized } from 'vscode/extensions'
970
96
  onExtHostInitialized(() => {
971
- const { registerFile } = registerExtension(manifest${nlsExists ? ', nls' : ''})
972
- ${usedFiles.map((filePath) => (`
97
+ const { registerFile } = registerExtension(manifest)
98
+ ${Object.keys(vsixFile).map((filePath) => (`
973
99
  registerFile('${filePath}', async () => (await import('vsix:${id}:${filePath}.raw')).default)`))}
974
100
  })
975
101
  `;
976
102
  }
977
103
  };
978
104
  }
979
-
980
- export { plugin as default };