@finos/legend-lego 1.2.72 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. package/lib/code-editor/CodeDiffView.d.ts +3 -1
  2. package/lib/code-editor/CodeDiffView.d.ts.map +1 -1
  3. package/lib/code-editor/CodeDiffView.js +6 -2
  4. package/lib/code-editor/CodeDiffView.js.map +1 -1
  5. package/lib/code-editor/CodeEditor.d.ts +8 -2
  6. package/lib/code-editor/CodeEditor.d.ts.map +1 -1
  7. package/lib/code-editor/CodeEditor.js +42 -4
  8. package/lib/code-editor/CodeEditor.js.map +1 -1
  9. package/lib/code-editor/index.d.ts +0 -5
  10. package/lib/code-editor/index.d.ts.map +1 -1
  11. package/lib/code-editor/index.js +0 -5
  12. package/lib/code-editor/index.js.map +1 -1
  13. package/lib/index.css +1 -1
  14. package/package.json +29 -29
  15. package/src/code-editor/CodeDiffView.tsx +10 -3
  16. package/src/code-editor/CodeEditor.tsx +69 -4
  17. package/src/code-editor/index.ts +0 -6
  18. package/tsconfig.json +1 -15
  19. package/lib/code-editor/CodeEditorTheme.d.ts +0 -41
  20. package/lib/code-editor/CodeEditorTheme.d.ts.map +0 -1
  21. package/lib/code-editor/CodeEditorTheme.js +0 -99
  22. package/lib/code-editor/CodeEditorTheme.js.map +0 -1
  23. package/lib/code-editor/CodeEditorUtils.d.ts +0 -74
  24. package/lib/code-editor/CodeEditorUtils.d.ts.map +0 -1
  25. package/lib/code-editor/CodeEditorUtils.js +0 -203
  26. package/lib/code-editor/CodeEditorUtils.js.map +0 -1
  27. package/lib/code-editor/PureLanguage.d.ts +0 -38
  28. package/lib/code-editor/PureLanguage.d.ts.map +0 -1
  29. package/lib/code-editor/PureLanguage.js +0 -39
  30. package/lib/code-editor/PureLanguage.js.map +0 -1
  31. package/lib/code-editor/PureLanguageCodeEditorSupport.d.ts +0 -71
  32. package/lib/code-editor/PureLanguageCodeEditorSupport.d.ts.map +0 -1
  33. package/lib/code-editor/PureLanguageCodeEditorSupport.js +0 -238
  34. package/lib/code-editor/PureLanguageCodeEditorSupport.js.map +0 -1
  35. package/lib/code-editor/PureLanguageService.d.ts +0 -19
  36. package/lib/code-editor/PureLanguageService.d.ts.map +0 -1
  37. package/lib/code-editor/PureLanguageService.js +0 -373
  38. package/lib/code-editor/PureLanguageService.js.map +0 -1
  39. package/lib/code-editor/themes/Github-Theme-dark-dimmed.json +0 -613
  40. package/lib/code-editor/themes/Github-Theme-dark.json +0 -513
  41. package/lib/code-editor/themes/Github-Theme-light.json +0 -598
  42. package/lib/code-editor/themes/Material-Theme-Darker.json +0 -816
  43. package/lib/code-editor/themes/Material-Theme-Default.json +0 -816
  44. package/lib/code-editor/themes/MonacoEditorThemeUtils.d.ts +0 -31
  45. package/lib/code-editor/themes/MonacoEditorThemeUtils.d.ts.map +0 -1
  46. package/lib/code-editor/themes/MonacoEditorThemeUtils.js +0 -88
  47. package/lib/code-editor/themes/MonacoEditorThemeUtils.js.map +0 -1
  48. package/lib/code-editor/themes/OneDark-Pro-darker.json +0 -2061
  49. package/lib/code-editor/themes/OneDark-Pro.json +0 -2090
  50. package/lib/code-editor/themes/solarized-dark-color-theme.json +0 -398
  51. package/src/code-editor/CodeEditorTheme.ts +0 -151
  52. package/src/code-editor/CodeEditorUtils.ts +0 -336
  53. package/src/code-editor/PureLanguage.ts +0 -42
  54. package/src/code-editor/PureLanguageCodeEditorSupport.ts +0 -341
  55. package/src/code-editor/PureLanguageService.ts +0 -416
  56. package/src/code-editor/themes/Github-Theme-dark-dimmed.json +0 -613
  57. package/src/code-editor/themes/Github-Theme-dark.json +0 -513
  58. package/src/code-editor/themes/Github-Theme-light.json +0 -598
  59. package/src/code-editor/themes/Material-Theme-Darker.json +0 -816
  60. package/src/code-editor/themes/Material-Theme-Default.json +0 -816
  61. package/src/code-editor/themes/MonacoEditorThemeUtils.ts +0 -128
  62. package/src/code-editor/themes/OneDark-Pro-darker.json +0 -2061
  63. package/src/code-editor/themes/OneDark-Pro.json +0 -2090
  64. package/src/code-editor/themes/README.md +0 -8
  65. package/src/code-editor/themes/solarized-dark-color-theme.json +0 -423
@@ -1,341 +0,0 @@
1
- /**
2
- * Copyright (c) 2020-present, Goldman Sachs
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
- import type { DocumentationEntry } from '@finos/legend-application';
18
- import { PARSER_SECTION_MARKER, PURE_PARSER } from '@finos/legend-graph';
19
- import {
20
- getNullableFirstEntry,
21
- guaranteeNonNullable,
22
- hasWhiteSpace,
23
- } from '@finos/legend-shared';
24
- import {
25
- type editor as monacoEditorAPI,
26
- languages as monacoLanguagesAPI,
27
- type IPosition,
28
- } from 'monaco-editor';
29
-
30
- /**
31
- * This snippet suggestion is meant for an embedded content of an element
32
- * In other words, it is used to construct element snippet suggestions
33
- *
34
- * Because of that, it is expected that there are text content wrapping around
35
- * this snippet, so the first suggestion might not start from index 1.
36
- */
37
- export interface ElementEmbeddedContentSnippetSuggestion {
38
- /**
39
- * Brief description about the suggestion item to enable the users to quickly
40
- * differentiate between one suggestions from another
41
- */
42
- description?: string | undefined;
43
- /**
44
- * The snippet text to be embedded in the full snippet suggestion text for the element
45
- *
46
- * NOTE: The snippet syntax follows that of `monaco-editor`
47
- * See https://code.visualstudio.com/docs/editor/userdefinedsnippets#_create-your-own-snippets
48
- */
49
- text: string;
50
- }
51
-
52
- /**
53
- * This mirrors `monaco-editor` completion item structure
54
- * See https://microsoft.github.io/monaco-editor/api/interfaces/monaco.languages.CompletionItem.html
55
- */
56
- export interface PureGrammarTextSuggestion {
57
- /**
58
- * The text label of the suggestion.
59
- */
60
- text: string;
61
- /**
62
- * Brief description about the suggestion item to enable the users to quickly
63
- * differentiate between one suggestions from another
64
- */
65
- description?: string | undefined;
66
- /**
67
- * Detailed documentation that explains/elaborates the suggestion item.
68
- */
69
- documentation?: DocumentationEntry | undefined;
70
- /**
71
- * A string or snippet that should be inserted when selecting this suggestion.
72
- *
73
- * NOTE: The snippet syntax follows that of `monaco-editor`
74
- * See https://code.visualstudio.com/docs/editor/userdefinedsnippets#_create-your-own-snippets
75
- */
76
- insertText: string;
77
- }
78
-
79
- export const getParserKeywordSuggestions = (
80
- position: IPosition,
81
- model: monacoEditorAPI.ITextModel,
82
- suggestions: PureGrammarTextSuggestion[],
83
- ): monacoLanguagesAPI.CompletionItem[] => {
84
- const results: monacoLanguagesAPI.CompletionItem[] = [];
85
- const currentWord = model.getWordUntilPosition(position);
86
-
87
- // suggestions for parser keyword
88
- const lineTextIncludingWordRange = {
89
- startLineNumber: position.lineNumber,
90
- startColumn: 1,
91
- endLineNumber: position.lineNumber,
92
- endColumn: currentWord.endColumn,
93
- };
94
- const lineTextIncludingWord = model.getValueInRange(
95
- lineTextIncludingWordRange,
96
- );
97
-
98
- // NOTE: make sure parser keyword suggestions only show up when the current word is the
99
- // the first word of the line since parser section header must not be preceded by anything
100
- if (!hasWhiteSpace(lineTextIncludingWord.trim())) {
101
- suggestions.forEach((suggestion) => {
102
- results.push({
103
- label: {
104
- label: `${PARSER_SECTION_MARKER}${suggestion.text}`,
105
- description: suggestion.description,
106
- },
107
- kind: monacoLanguagesAPI.CompletionItemKind.Keyword,
108
- insertText: `${PARSER_SECTION_MARKER}${suggestion.insertText}\n`,
109
- range: lineTextIncludingWordRange,
110
- documentation: suggestion.documentation
111
- ? suggestion.documentation.markdownText
112
- ? {
113
- value: suggestion.documentation.markdownText.value,
114
- }
115
- : suggestion.documentation.text
116
- : undefined,
117
- } as monacoLanguagesAPI.CompletionItem);
118
- });
119
- }
120
-
121
- return results;
122
- };
123
-
124
- export const getSectionParserNameFromLineText = (
125
- lineText: string,
126
- ): string | undefined => {
127
- if (lineText.startsWith(PARSER_SECTION_MARKER)) {
128
- return lineText.substring(PARSER_SECTION_MARKER.length).split(' ')[0];
129
- }
130
- // NOTE: since leading whitespace to parser name is considered invalid, we will return `undefined`
131
- return undefined;
132
- };
133
-
134
- export const getParserElementSnippetSuggestions = (
135
- position: IPosition,
136
- model: monacoEditorAPI.ITextModel,
137
- suggestionsGetter: (parserName: string) => PureGrammarTextSuggestion[],
138
- ): monacoLanguagesAPI.CompletionItem[] => {
139
- const results: monacoLanguagesAPI.CompletionItem[] = [];
140
- const currentWord = model.getWordUntilPosition(position);
141
-
142
- // suggestions for parser element snippets
143
- const textUntilPosition = model.getValueInRange({
144
- startLineNumber: 1,
145
- startColumn: 1,
146
- endLineNumber: position.lineNumber,
147
- endColumn: position.column,
148
- });
149
- const allParserSectionHeaders =
150
- // NOTE: since `###Pure` is implicitly considered as the first section, we prepend it to the text
151
- `${PARSER_SECTION_MARKER}${PURE_PARSER.PURE}\n${textUntilPosition}`
152
- .split('\n')
153
- .filter((line) => line.startsWith(PARSER_SECTION_MARKER));
154
- const currentParserName = getSectionParserNameFromLineText(
155
- allParserSectionHeaders[allParserSectionHeaders.length - 1] ?? '',
156
- );
157
-
158
- if (currentParserName) {
159
- suggestionsGetter(currentParserName).forEach((snippetSuggestion) => {
160
- results.push({
161
- label: {
162
- label: snippetSuggestion.text,
163
- description: snippetSuggestion.description,
164
- },
165
- kind: monacoLanguagesAPI.CompletionItemKind.Snippet,
166
- insertTextRules:
167
- monacoLanguagesAPI.CompletionItemInsertTextRule.InsertAsSnippet,
168
- insertText: `${snippetSuggestion.insertText}\n`,
169
- range: {
170
- startLineNumber: position.lineNumber,
171
- startColumn: currentWord.startColumn,
172
- endLineNumber: position.lineNumber,
173
- endColumn: currentWord.endColumn,
174
- },
175
- documentation: snippetSuggestion.documentation
176
- ? snippetSuggestion.documentation.markdownText
177
- ? {
178
- value: snippetSuggestion.documentation.markdownText.value,
179
- }
180
- : snippetSuggestion.documentation.text
181
- : undefined,
182
- } as monacoLanguagesAPI.CompletionItem);
183
- });
184
- }
185
-
186
- return results;
187
- };
188
-
189
- export const getInlineSnippetSuggestions = (
190
- position: IPosition,
191
- model: monacoEditorAPI.ITextModel,
192
- extraSnippetSuggestions: PureGrammarTextSuggestion[] = [],
193
- ): monacoLanguagesAPI.CompletionItem[] => {
194
- const currentWord = model.getWordUntilPosition(position);
195
-
196
- return (
197
- [
198
- {
199
- text: 'let',
200
- description: 'new variable',
201
- insertText: `let \${1:} = \${2:};`,
202
- },
203
- {
204
- text: 'let',
205
- description: 'new collection',
206
- insertText: `let \${1:} = [\${2:}];`,
207
- },
208
- {
209
- text: 'cast',
210
- description: 'type casting',
211
- insertText: `cast(@\${1:model::SomeClass})`,
212
- },
213
- // conditionals
214
- {
215
- text: 'if',
216
- description: '(conditional)',
217
- insertText: `if(\${1:'true'}, | \${2:/* if true do this */}, | \${3:/* if false do this */})`,
218
- },
219
- {
220
- text: 'case',
221
- description: '(conditional)',
222
- insertText: `case(\${1:}, \${2:'true'}, \${3:'false'})`,
223
- },
224
- {
225
- text: 'match',
226
- description: '(conditional)',
227
- insertText: `match([x:\${1:String[1]}, \${2:''}])`,
228
- },
229
- // collection
230
- {
231
- text: 'map',
232
- description: '(collection)',
233
- insertText: `map(x|\${1:})`,
234
- },
235
- {
236
- text: 'filter',
237
- description: '(collection)',
238
- insertText: `filter(x|\${1:})`,
239
- },
240
- {
241
- text: 'fold',
242
- description: '(collection)',
243
- insertText: `fold({a, b| \${1:$a + $b}}, \${2:0})`,
244
- },
245
- {
246
- text: 'filter',
247
- description: '(collection)',
248
- insertText: `filter(x|\${1:})`,
249
- },
250
- {
251
- text: 'sort',
252
- description: '(collection)',
253
- insertText: `sort()`,
254
- },
255
- {
256
- text: 'in',
257
- description: '(collection)',
258
- insertText: `in()`,
259
- },
260
- {
261
- text: 'slice',
262
- description: '(collection)',
263
- insertText: `slice(\${1:1},$\{2:2})`,
264
- },
265
- {
266
- text: 'removeDuplicates',
267
- description: '(collection)',
268
- insertText: `removeDuplicates()`,
269
- },
270
- {
271
- text: 'toOne',
272
- description: '(collection)',
273
- insertText: `toOne(\${1:})`,
274
- },
275
- {
276
- text: 'toOneMany',
277
- description: '(collection)',
278
- insertText: `toOneMany(\${1:})`,
279
- },
280
- {
281
- text: 'isEmpty',
282
- description: '(collection)',
283
- insertText: `isEmpty()`,
284
- },
285
- // string
286
- {
287
- text: 'endsWith',
288
- description: '(string)',
289
- insertText: `endsWith()`,
290
- },
291
- {
292
- text: 'startsWith',
293
- description: '(string)',
294
- insertText: `startsWith()`,
295
- },
296
- ...extraSnippetSuggestions,
297
- ] as PureGrammarTextSuggestion[]
298
- ).map(
299
- (snippetSuggestion) =>
300
- ({
301
- label: {
302
- label: snippetSuggestion.text,
303
- description: snippetSuggestion.description,
304
- },
305
- kind: monacoLanguagesAPI.CompletionItemKind.Snippet,
306
- insertTextRules:
307
- monacoLanguagesAPI.CompletionItemInsertTextRule.InsertAsSnippet,
308
- insertText: snippetSuggestion.insertText,
309
- range: {
310
- startLineNumber: position.lineNumber,
311
- startColumn: currentWord.startColumn,
312
- endLineNumber: position.lineNumber,
313
- endColumn: currentWord.endColumn,
314
- },
315
- documentation: snippetSuggestion.documentation
316
- ? snippetSuggestion.documentation.markdownText
317
- ? {
318
- value: snippetSuggestion.documentation.markdownText.value,
319
- }
320
- : snippetSuggestion.documentation.text
321
- : undefined,
322
- }) as monacoLanguagesAPI.CompletionItem,
323
- );
324
- };
325
-
326
- export const isTokenOneOf = (
327
- token: string,
328
- baseTokens: string[],
329
- exact = false,
330
- ): boolean => {
331
- if (exact) {
332
- return baseTokens.map((baseToken) => `${baseToken}.pure`).includes(token);
333
- }
334
- const baseToken = guaranteeNonNullable(
335
- getNullableFirstEntry(token.split('.')),
336
- );
337
- return baseTokens.includes(baseToken);
338
- };
339
-
340
- export const PURE_CODE_EDITOR_WORD_SEPARATORS =
341
- '`~!@#%^&*()-=+[{]}\\|;:\'",.<>/?'; // omit $ from default word separators