PT #161550757: Theia extensions dependencies updated. Highlight CodeLenses for spring-boot
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@theia/bosh",
|
||||
"name": "@pivotal-tools/theia-bosh",
|
||||
"keywords": [
|
||||
"theia-extension"
|
||||
],
|
||||
@@ -12,11 +12,12 @@
|
||||
"dependencies": {
|
||||
"@theia/core": "latest",
|
||||
"@theia/languages": "latest",
|
||||
"@pivotal-tools/theia-languageclient": "0.0.2"
|
||||
"@theia/monaco": "latest",
|
||||
"@pivotal-tools/theia-languageclient": "0.0.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"rimraf": "latest",
|
||||
"typescript": "latest"
|
||||
"rimraf": "^2.6.2",
|
||||
"typescript": "^3.1.3"
|
||||
},
|
||||
"scripts": {
|
||||
"prepare": "yarn run clean && yarn run build",
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import { ContainerModule } from 'inversify';
|
||||
import { LanguageClientContribution } from '@theia/languages/lib/browser';
|
||||
import {LanguageGrammarDefinitionContribution} from '@theia/monaco/lib/browser/textmate';
|
||||
import { BoshClientContribution } from './language-client-contribution';
|
||||
import { bindBoshPreferences } from './bosh-preferences';
|
||||
|
||||
// Contribute monaco-editor languages for deployment and cloud-config yaml
|
||||
import './deployment-yaml-monaco-contribution';
|
||||
import './cloudconfig-yaml-monaco-contribution';
|
||||
import {DeploymentYamlGrammarContribution} from './deployment-yaml-grammar-contribution';
|
||||
import {CloudConfigYamlGrammarContribution} from './cloudconfig-yaml-grammar-contribution';
|
||||
|
||||
export default new ContainerModule(bind => {
|
||||
// add your contribution bindings here
|
||||
bindBoshPreferences(bind);
|
||||
bind(LanguageClientContribution).to(BoshClientContribution).inSingletonScope();
|
||||
bind(LanguageGrammarDefinitionContribution).to(DeploymentYamlGrammarContribution).inSingletonScope();
|
||||
bind(LanguageGrammarDefinitionContribution).to(CloudConfigYamlGrammarContribution).inSingletonScope();
|
||||
});
|
||||
@@ -0,0 +1,23 @@
|
||||
import {
|
||||
BOSH_CLOUDCONFIG_YAML_LANGUAGE_ID,
|
||||
BOSH_CLOUDCONFIG__YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
import {LanguageGrammarDefinitionContribution, TextmateRegistry} from '@theia/monaco/lib/browser/textmate';
|
||||
import {injectable} from 'inversify';
|
||||
import {YAML_LANGUAGE_GRAMMAR_SCOPE, YAML_CONFIG} from '@pivotal-tools/theia-languageclient/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class CloudConfigYamlGrammarContribution implements LanguageGrammarDefinitionContribution {
|
||||
|
||||
registerTextmateLanguage(registry: TextmateRegistry) {
|
||||
monaco.languages.register({
|
||||
id: BOSH_CLOUDCONFIG_YAML_LANGUAGE_ID,
|
||||
aliases: [ BOSH_CLOUDCONFIG__YAML_LANGUAGE_NAME ],
|
||||
filenamePatterns: [ '*cloud-config*.yml' ]
|
||||
});
|
||||
|
||||
monaco.languages.setLanguageConfiguration(BOSH_CLOUDCONFIG_YAML_LANGUAGE_ID, YAML_CONFIG);
|
||||
|
||||
registry.mapLanguageIdToTextmateGrammar(BOSH_CLOUDCONFIG_YAML_LANGUAGE_ID, YAML_LANGUAGE_GRAMMAR_SCOPE);
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
/// <reference types='monaco-editor-core/monaco'/>
|
||||
import {
|
||||
BOSH_CLOUDCONFIG_YAML_LANGUAGE_ID,
|
||||
BOSH_CLOUDCONFIG__YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
|
||||
// Task .yml file language registration
|
||||
|
||||
let YAML_LANG_MODULE_PROMISE: monaco.Promise<any>;
|
||||
|
||||
monaco.languages.register({
|
||||
id: BOSH_CLOUDCONFIG_YAML_LANGUAGE_ID,
|
||||
filenamePatterns: ['*cloud-config*.yml'],
|
||||
aliases: [BOSH_CLOUDCONFIG__YAML_LANGUAGE_NAME]
|
||||
});
|
||||
|
||||
monaco.languages.onLanguage(BOSH_CLOUDCONFIG_YAML_LANGUAGE_ID, () => {
|
||||
if (!YAML_LANG_MODULE_PROMISE) {
|
||||
YAML_LANG_MODULE_PROMISE = (<any>monaco.languages.getLanguages().find(ext => ext.id === 'yaml')).loader();
|
||||
}
|
||||
return YAML_LANG_MODULE_PROMISE.then(mod => {
|
||||
monaco.languages.setLanguageConfiguration(BOSH_CLOUDCONFIG_YAML_LANGUAGE_ID, mod.conf);
|
||||
monaco.languages.setMonarchTokensProvider(BOSH_CLOUDCONFIG_YAML_LANGUAGE_ID, mod.language);
|
||||
})
|
||||
});
|
||||
@@ -0,0 +1,23 @@
|
||||
import {
|
||||
BOSH_DEPLOYMENT_YAML_LANGUAGE_ID,
|
||||
BOSH_DEPLOYMENT_YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
import {LanguageGrammarDefinitionContribution, TextmateRegistry} from '@theia/monaco/lib/browser/textmate';
|
||||
import {injectable} from 'inversify';
|
||||
import {YAML_LANGUAGE_GRAMMAR_SCOPE, YAML_CONFIG} from '@pivotal-tools/theia-languageclient/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class DeploymentYamlGrammarContribution implements LanguageGrammarDefinitionContribution {
|
||||
|
||||
registerTextmateLanguage(registry: TextmateRegistry) {
|
||||
monaco.languages.register({
|
||||
id: BOSH_DEPLOYMENT_YAML_LANGUAGE_ID,
|
||||
aliases: [ BOSH_DEPLOYMENT_YAML_LANGUAGE_NAME ],
|
||||
filenamePatterns: [ '*deployment*.yml' ]
|
||||
});
|
||||
|
||||
monaco.languages.setLanguageConfiguration(BOSH_DEPLOYMENT_YAML_LANGUAGE_ID, YAML_CONFIG);
|
||||
|
||||
registry.mapLanguageIdToTextmateGrammar(BOSH_DEPLOYMENT_YAML_LANGUAGE_ID, YAML_LANGUAGE_GRAMMAR_SCOPE);
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
/// <reference types='monaco-editor-core/monaco'/>
|
||||
import {
|
||||
BOSH_DEPLOYMENT_YAML_LANGUAGE_ID,
|
||||
BOSH_DEPLOYMENT_YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
|
||||
// Deployment .yml file language registration
|
||||
|
||||
let YAML_LANG_MODULE_PROMISE: monaco.Promise<any>;
|
||||
|
||||
monaco.languages.register({
|
||||
id: BOSH_DEPLOYMENT_YAML_LANGUAGE_ID,
|
||||
filenamePatterns: ['*deployment*.yml'],
|
||||
aliases: [BOSH_DEPLOYMENT_YAML_LANGUAGE_NAME]
|
||||
});
|
||||
|
||||
monaco.languages.onLanguage(BOSH_DEPLOYMENT_YAML_LANGUAGE_ID, () => {
|
||||
if (!YAML_LANG_MODULE_PROMISE) {
|
||||
YAML_LANG_MODULE_PROMISE = (<any>monaco.languages.getLanguages().find(ext => ext.id === 'yaml')).loader();
|
||||
}
|
||||
return YAML_LANG_MODULE_PROMISE.then(mod => {
|
||||
monaco.languages.setLanguageConfiguration(BOSH_DEPLOYMENT_YAML_LANGUAGE_ID, mod.conf);
|
||||
monaco.languages.setMonarchTokensProvider(BOSH_DEPLOYMENT_YAML_LANGUAGE_ID, mod.language);
|
||||
})
|
||||
});
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"experimentalDecorators": true,
|
||||
"noUnusedLocals": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"@theia/monaco": "latest",
|
||||
"@theia/typescript": "latest",
|
||||
"@theia/messages": "latest",
|
||||
"@theia/bosh": "0.0.0"
|
||||
"@pivotal-tools/theia-bosh": "0.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "latest"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"@theia/monaco": "latest",
|
||||
"@theia/typescript": "latest",
|
||||
"@theia/messages": "latest",
|
||||
"@theia/bosh": "0.0.0"
|
||||
"@pivotal-tools/theia-bosh": "^0.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "latest"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"lerna": "2.4.0",
|
||||
"lerna": "2.11.0",
|
||||
"version": "0.0.0",
|
||||
"useWorkspaces": true,
|
||||
"npmClient": "yarn",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"rebuild:electron": "theia rebuild:electron"
|
||||
},
|
||||
"devDependencies": {
|
||||
"lerna": "2.4.0"
|
||||
"lerna": "2.11.0"
|
||||
},
|
||||
"workspaces": [
|
||||
"bosh", "browser-app", "electron-app"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -16,7 +16,7 @@
|
||||
"@theia/monaco": "latest",
|
||||
"@theia/typescript": "latest",
|
||||
"@theia/messages": "latest",
|
||||
"@theia/cf-manifest-yaml": "0.0.1"
|
||||
"@pivotal-tools/theia-cf-manifest-yaml": "^0.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "latest"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"name": "@theia/cf-manifest-yaml",
|
||||
"name": "@pivotal-tools/theia-cf-manifest-yaml",
|
||||
"keywords": [
|
||||
"theia-extension"
|
||||
],
|
||||
"version": "0.0.1",
|
||||
"version": "0.0.0",
|
||||
"files": [
|
||||
"lib",
|
||||
"src",
|
||||
@@ -14,11 +14,11 @@
|
||||
"@theia/languages": "latest",
|
||||
"@theia/monaco": "latest",
|
||||
"@pivotal-tools/jvm-launch-utils": "0.0.11",
|
||||
"@pivotal-tools/theia-languageclient": "0.0.2"
|
||||
"@pivotal-tools/theia-languageclient": "0.0.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"rimraf": "latest",
|
||||
"typescript": "latest"
|
||||
"rimraf": "^2.6.2",
|
||||
"typescript": "^3.1.3"
|
||||
},
|
||||
"scripts": {
|
||||
"prepare": "yarn run clean && yarn run build",
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
import { CfManifestYamlClientContribution } from './language-client-contribution';
|
||||
import { LanguageClientContribution } from '@theia/languages/lib/browser';
|
||||
import { ContainerModule } from 'inversify';
|
||||
|
||||
import './monaco-contribution';
|
||||
import {ManifestYamlGrammarContribution} from './manifest-yaml-grammar-contribution';
|
||||
import {LanguageGrammarDefinitionContribution} from '@theia/monaco/lib/browser/textmate';
|
||||
|
||||
export default new ContainerModule(bind => {
|
||||
// add your contribution bindings here
|
||||
bind(LanguageClientContribution).to(CfManifestYamlClientContribution).inSingletonScope();
|
||||
bind(LanguageGrammarDefinitionContribution).to(ManifestYamlGrammarContribution).inSingletonScope();
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
import {
|
||||
CF_MANIFEST_YAML_LANGUAGE_ID,
|
||||
CF_MANIFEST_YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
import {LanguageGrammarDefinitionContribution, TextmateRegistry} from '@theia/monaco/lib/browser/textmate';
|
||||
import {injectable} from 'inversify';
|
||||
import {YAML_LANGUAGE_GRAMMAR_SCOPE, YAML_CONFIG} from '@pivotal-tools/theia-languageclient/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class ManifestYamlGrammarContribution implements LanguageGrammarDefinitionContribution {
|
||||
|
||||
registerTextmateLanguage(registry: TextmateRegistry) {
|
||||
monaco.languages.register({
|
||||
id: CF_MANIFEST_YAML_LANGUAGE_ID,
|
||||
aliases: [
|
||||
CF_MANIFEST_YAML_LANGUAGE_NAME
|
||||
],
|
||||
filenamePatterns: ['*manifest*.yml']
|
||||
});
|
||||
|
||||
monaco.languages.setLanguageConfiguration(CF_MANIFEST_YAML_LANGUAGE_ID, YAML_CONFIG);
|
||||
|
||||
registry.mapLanguageIdToTextmateGrammar(CF_MANIFEST_YAML_LANGUAGE_ID, YAML_LANGUAGE_GRAMMAR_SCOPE);
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
/// <reference types='monaco-editor-core/monaco'/>
|
||||
import {
|
||||
CF_MANIFEST_YAML_LANGUAGE_ID,
|
||||
CF_MANIFEST_YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
|
||||
let YAML_LANG_MODULE_PROMISE: monaco.Promise<any>;
|
||||
|
||||
monaco.languages.register({
|
||||
id: CF_MANIFEST_YAML_LANGUAGE_ID,
|
||||
filenamePatterns: ['*manifest*.yml'],
|
||||
aliases: [CF_MANIFEST_YAML_LANGUAGE_NAME],
|
||||
});
|
||||
|
||||
monaco.languages.onLanguage(CF_MANIFEST_YAML_LANGUAGE_ID, () => {
|
||||
if (!YAML_LANG_MODULE_PROMISE) {
|
||||
YAML_LANG_MODULE_PROMISE = (<any>monaco.languages.getLanguages().find(ext => ext.id === 'yaml')).loader();
|
||||
}
|
||||
return YAML_LANG_MODULE_PROMISE.then(mod => {
|
||||
monaco.languages.setLanguageConfiguration(CF_MANIFEST_YAML_LANGUAGE_ID, mod.conf);
|
||||
monaco.languages.setMonarchTokensProvider(CF_MANIFEST_YAML_LANGUAGE_ID, mod.language);
|
||||
})
|
||||
});
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"experimentalDecorators": true,
|
||||
"noUnusedLocals": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"@theia/monaco": "latest",
|
||||
"@theia/typescript": "latest",
|
||||
"@theia/messages": "latest",
|
||||
"@theia/cf-manifest-yaml": "0.0.1"
|
||||
"@pivotal-tools/theia-cf-manifest-yaml": "^0.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "latest"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"lerna": "2.4.0",
|
||||
"lerna": "2.11.0",
|
||||
"version": "0.0.0",
|
||||
"useWorkspaces": true,
|
||||
"npmClient": "yarn",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"rebuild:electron": "theia rebuild:electron"
|
||||
},
|
||||
"devDependencies": {
|
||||
"lerna": "2.4.0"
|
||||
"lerna": "2.11.0"
|
||||
},
|
||||
"workspaces": [
|
||||
"cf-manifest-yaml", "browser-app", "electron-app"
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"extends": "../configs/base.tsconfig",
|
||||
"compilerOptions": {
|
||||
"rootDir": "src",
|
||||
"outDir": "lib"
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"fileTypes": [
|
||||
"properties"
|
||||
],
|
||||
"foldingStartMarker": "^[a-zA-Z0-9.-_]+=.*\\\n",
|
||||
"foldingStopMarker": "^(.*(?<!\\)\n)",
|
||||
"keyEquivalent": "^~J",
|
||||
"name": "Java Properties",
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "Ignore blank lines",
|
||||
"match": "^\\s*$"
|
||||
},
|
||||
{
|
||||
"include": "#comment-line"
|
||||
},
|
||||
{
|
||||
"include": "#property-name"
|
||||
},
|
||||
{
|
||||
"include": "#property-definition"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"comment-line": {
|
||||
"captures": {
|
||||
"1": {
|
||||
"name": "punctuation.whitespace.comment.leading.java-properties"
|
||||
},
|
||||
"2": {
|
||||
"name": "punctuation.definition.comment.java-properties"
|
||||
}
|
||||
},
|
||||
"match": "^(\\s*)([#!])(.+)?$\\n?",
|
||||
"name": "comment.line.java-properties"
|
||||
},
|
||||
"property-definition": {
|
||||
"begin": "^(\\s*)((?:\\\\[ \\t]|\\\\:|\\\\=|[^:=\\s])+)(?:\\s*([:=]))?\\s*",
|
||||
"beginCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.whitespace.leading.java-properties"
|
||||
},
|
||||
"2": {
|
||||
"name": "support.constant.java-properties",
|
||||
"patterns": [
|
||||
{
|
||||
"match": "\\\\(?:[ \\t:=\\\\ntfr\\\"']|u[0-9A-Fa-f]{4})",
|
||||
"name": "constant.character.escape.java-properties"
|
||||
}
|
||||
]
|
||||
},
|
||||
"3": {
|
||||
"name": "punctuation.separator.key-value.java-properties"
|
||||
}
|
||||
},
|
||||
"contentName": "string.unquoted.java-properties",
|
||||
"end": "(?<!\\\\{1})$\\n",
|
||||
"name": "meta.key-value.java-properties",
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "Leading space on a continued line is ignored",
|
||||
"match": "^\\s*",
|
||||
"name": "punctuation.whitespace.leading.java-properties"
|
||||
},
|
||||
{
|
||||
"match": "(\\\\{1})(?=$\\n)",
|
||||
"name": "punctuation.separator.continuation.java-properties"
|
||||
},
|
||||
{
|
||||
"match": "\\\\(?:[\\\\ntfr\\\"']|u[0-9A-Fa-f]{4})",
|
||||
"name": "constant.character.escape.java-properties"
|
||||
}
|
||||
]
|
||||
},
|
||||
"property-name": {
|
||||
"captures": {
|
||||
"1": {
|
||||
"name": "punctuation.whitespace.comment.leading.java-properties"
|
||||
},
|
||||
"2": {
|
||||
"name": "support.constant.java-properties",
|
||||
"patterns": [
|
||||
{
|
||||
"match": "\\\\(?:[ \\t:=\\\\ntfr\\\"']|u[0-9A-Fa-f]{4})",
|
||||
"name": "constant.character.escape.java-properties"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"comment": "A property name with no value",
|
||||
"match": "^(\\s*)((?:\\\\[ \\t]|\\\\:|\\\\=|[^:=\\s])+)(?:\\s*([:=]))?\\s*$\\n",
|
||||
"name": "meta.key-value.java-properties"
|
||||
}
|
||||
},
|
||||
"scopeName": "source.java-properties",
|
||||
"uuid": "D364E829-7643-4AFF-948D-3C0D6B4EA8A4"
|
||||
}
|
||||
622
theia-extensions/theia-commons/data/yaml.tmLanguage.json
Normal file
622
theia-extensions/theia-commons/data/yaml.tmLanguage.json
Normal file
@@ -0,0 +1,622 @@
|
||||
{
|
||||
"information_for_contributors": [
|
||||
"This file has been converted from https://github.com/textmate/yaml.tmbundle/blob/master/Syntaxes/YAML.tmLanguage",
|
||||
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
|
||||
"Once accepted there, we are happy to receive an update request."
|
||||
],
|
||||
"version": "https://github.com/textmate/yaml.tmbundle/commit/efc96efafe5e48480cf55a2ed124b388cbea4440",
|
||||
"name": "YAML",
|
||||
"scopeName": "source.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#comment"
|
||||
},
|
||||
{
|
||||
"include": "#property"
|
||||
},
|
||||
{
|
||||
"include": "#directive"
|
||||
},
|
||||
{
|
||||
"match": "^---",
|
||||
"name": "entity.other.document.begin.yaml"
|
||||
},
|
||||
{
|
||||
"match": "^\\.{3}",
|
||||
"name": "entity.other.document.end.yaml"
|
||||
},
|
||||
{
|
||||
"include": "#node"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"block-collection": {
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#block-sequence"
|
||||
},
|
||||
{
|
||||
"include": "#block-mapping"
|
||||
}
|
||||
]
|
||||
},
|
||||
"block-mapping": {
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#block-pair"
|
||||
}
|
||||
]
|
||||
},
|
||||
"block-node": {
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#prototype"
|
||||
},
|
||||
{
|
||||
"include": "#block-scalar"
|
||||
},
|
||||
{
|
||||
"include": "#block-collection"
|
||||
},
|
||||
{
|
||||
"include": "#flow-scalar-plain-out"
|
||||
},
|
||||
{
|
||||
"include": "#flow-node"
|
||||
}
|
||||
]
|
||||
},
|
||||
"block-pair": {
|
||||
"patterns": [
|
||||
{
|
||||
"begin": "\\?",
|
||||
"beginCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.definition.key-value.begin.yaml"
|
||||
}
|
||||
},
|
||||
"end": "(?=\\?)|^ *(:)|(:)",
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.separator.key-value.mapping.yaml"
|
||||
},
|
||||
"2": {
|
||||
"name": "invalid.illegal.expected-newline.yaml"
|
||||
}
|
||||
},
|
||||
"name": "meta.block-mapping.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#block-node"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"begin": "(?x)\n (?=\n (?x:\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] \\S\n )\n (\n [^\\s:]\n | : \\S\n | \\s+ (?![#\\s])\n )*\n \\s*\n :\n\t\t\t\t\t\t\t(\\s|$)\n )\n ",
|
||||
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n )\n ",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#flow-scalar-plain-out-implicit-type"
|
||||
},
|
||||
{
|
||||
"begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] \\S\n ",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "entity.name.tag.yaml"
|
||||
}
|
||||
},
|
||||
"contentName": "entity.name.tag.yaml",
|
||||
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n )\n ",
|
||||
"name": "string.unquoted.plain.out.yaml"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"match": ":(?=\\s|$)",
|
||||
"name": "punctuation.separator.key-value.mapping.yaml"
|
||||
}
|
||||
]
|
||||
},
|
||||
"block-scalar": {
|
||||
"begin": "(?:(\\|)|(>))([1-9])?([-+])?(.*\\n?)",
|
||||
"beginCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.definition.block.scalar.literal.yaml"
|
||||
},
|
||||
"2": {
|
||||
"name": "punctuation.definition.block.scalar.folded.yaml"
|
||||
},
|
||||
"3": {
|
||||
"name": "constant.numeric.indentation-indicator.yaml"
|
||||
},
|
||||
"4": {
|
||||
"name": "support.other.chomping-indicator.yaml"
|
||||
},
|
||||
"5": {
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#comment"
|
||||
},
|
||||
{
|
||||
"match": ".+",
|
||||
"name": "invalid.illegal.expected-comment-or-newline.yaml"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"end": "^(?=\\S)|(?!\\G)",
|
||||
"patterns": [
|
||||
{
|
||||
"begin": "^([ ]+)(?! )",
|
||||
"end": "^(?!\\1|\\s*$)",
|
||||
"name": "string.unquoted.block.yaml"
|
||||
}
|
||||
]
|
||||
},
|
||||
"block-sequence": {
|
||||
"match": "(-)( |\\t|$)",
|
||||
"name": "punctuation.definition.block.sequence.item.yaml"
|
||||
},
|
||||
"comment": {
|
||||
"begin": "(?:(^[ \\t]*)|[ \\t]+)(?=#\\p{Print}*$)",
|
||||
"beginCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.whitespace.comment.leading.yaml"
|
||||
}
|
||||
},
|
||||
"end": "(?!\\G)",
|
||||
"patterns": [
|
||||
{
|
||||
"begin": "#",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.comment.yaml"
|
||||
}
|
||||
},
|
||||
"end": "\\n",
|
||||
"name": "comment.line.number-sign.yaml"
|
||||
}
|
||||
]
|
||||
},
|
||||
"directive": {
|
||||
"begin": "^%",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.directive.begin.yaml"
|
||||
}
|
||||
},
|
||||
"end": "(?=$|[ \\t]+($|#))",
|
||||
"name": "meta.directive.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"captures": {
|
||||
"1": {
|
||||
"name": "keyword.other.directive.yaml.yaml"
|
||||
},
|
||||
"2": {
|
||||
"name": "constant.numeric.yaml-version.yaml"
|
||||
}
|
||||
},
|
||||
"match": "\\G(YAML)[ \\t]+(\\d+\\.\\d+)"
|
||||
},
|
||||
{
|
||||
"captures": {
|
||||
"1": {
|
||||
"name": "keyword.other.directive.tag.yaml"
|
||||
},
|
||||
"2": {
|
||||
"name": "storage.type.tag-handle.yaml"
|
||||
},
|
||||
"3": {
|
||||
"name": "support.type.tag-prefix.yaml"
|
||||
}
|
||||
},
|
||||
"match": "(?x)\n \\G\n (TAG)\n (?:[ \\t]+\n ((?:!(?:[0-9A-Za-z\\-]*!)?))\n (?:[ \\t]+ (\n ! (?x: %\\p{XDigit}{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )*\n | (?![,!\\[\\]{}]) (?x: %\\p{XDigit}{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+\n )\n )?\n )?\n "
|
||||
},
|
||||
{
|
||||
"captures": {
|
||||
"1": {
|
||||
"name": "support.other.directive.reserved.yaml"
|
||||
},
|
||||
"2": {
|
||||
"name": "string.unquoted.directive-name.yaml"
|
||||
},
|
||||
"3": {
|
||||
"name": "string.unquoted.directive-parameter.yaml"
|
||||
}
|
||||
},
|
||||
"match": "(?x) \\G (\\w+) (?:[ \\t]+ (\\w+) (?:[ \\t]+ (\\w+))? )?"
|
||||
},
|
||||
{
|
||||
"match": "\\S+",
|
||||
"name": "invalid.illegal.unrecognized.yaml"
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-alias": {
|
||||
"captures": {
|
||||
"1": {
|
||||
"name": "keyword.control.flow.alias.yaml"
|
||||
},
|
||||
"2": {
|
||||
"name": "punctuation.definition.alias.yaml"
|
||||
},
|
||||
"3": {
|
||||
"name": "variable.other.alias.yaml"
|
||||
},
|
||||
"4": {
|
||||
"name": "invalid.illegal.character.anchor.yaml"
|
||||
}
|
||||
},
|
||||
"match": "((\\*))([^\\s\\[\\]/{/},]+)([^\\s\\]},]\\S*)?"
|
||||
},
|
||||
"flow-collection": {
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#flow-sequence"
|
||||
},
|
||||
{
|
||||
"include": "#flow-mapping"
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-mapping": {
|
||||
"begin": "\\{",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.mapping.begin.yaml"
|
||||
}
|
||||
},
|
||||
"end": "\\}",
|
||||
"endCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.mapping.end.yaml"
|
||||
}
|
||||
},
|
||||
"name": "meta.flow-mapping.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#prototype"
|
||||
},
|
||||
{
|
||||
"match": ",",
|
||||
"name": "punctuation.separator.mapping.yaml"
|
||||
},
|
||||
{
|
||||
"include": "#flow-pair"
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-node": {
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#prototype"
|
||||
},
|
||||
{
|
||||
"include": "#flow-alias"
|
||||
},
|
||||
{
|
||||
"include": "#flow-collection"
|
||||
},
|
||||
{
|
||||
"include": "#flow-scalar"
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-pair": {
|
||||
"patterns": [
|
||||
{
|
||||
"begin": "\\?",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.key-value.begin.yaml"
|
||||
}
|
||||
},
|
||||
"end": "(?=[},\\]])",
|
||||
"name": "meta.flow-pair.explicit.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#prototype"
|
||||
},
|
||||
{
|
||||
"include": "#flow-pair"
|
||||
},
|
||||
{
|
||||
"include": "#flow-node"
|
||||
},
|
||||
{
|
||||
"begin": ":(?=\\s|$|[\\[\\]{},])",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.separator.key-value.mapping.yaml"
|
||||
}
|
||||
},
|
||||
"end": "(?=[},\\]])",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#flow-value"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"begin": "(?x)\n (?=\n (?:\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] [^\\s[\\[\\]{},]]\n )\n (\n [^\\s:[\\[\\]{},]]\n | : [^\\s[\\[\\]{},]]\n | \\s+ (?![#\\s])\n )*\n \\s*\n :\n\t\t\t\t\t\t\t(\\s|$)\n )\n ",
|
||||
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n | \\s* : [\\[\\]{},]\n | \\s* [\\[\\]{},]\n )\n ",
|
||||
"name": "meta.flow-pair.key.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#flow-scalar-plain-in-implicit-type"
|
||||
},
|
||||
{
|
||||
"begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] [^\\s[\\[\\]{},]]\n ",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "entity.name.tag.yaml"
|
||||
}
|
||||
},
|
||||
"contentName": "entity.name.tag.yaml",
|
||||
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n | \\s* : [\\[\\]{},]\n | \\s* [\\[\\]{},]\n )\n ",
|
||||
"name": "string.unquoted.plain.in.yaml"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"include": "#flow-node"
|
||||
},
|
||||
{
|
||||
"begin": ":(?=\\s|$|[\\[\\]{},])",
|
||||
"captures": {
|
||||
"0": {
|
||||
"name": "punctuation.separator.key-value.mapping.yaml"
|
||||
}
|
||||
},
|
||||
"end": "(?=[},\\]])",
|
||||
"name": "meta.flow-pair.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#flow-value"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-scalar": {
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#flow-scalar-double-quoted"
|
||||
},
|
||||
{
|
||||
"include": "#flow-scalar-single-quoted"
|
||||
},
|
||||
{
|
||||
"include": "#flow-scalar-plain-in"
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-scalar-double-quoted": {
|
||||
"begin": "\"",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.string.begin.yaml"
|
||||
}
|
||||
},
|
||||
"end": "\"",
|
||||
"endCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.string.end.yaml"
|
||||
}
|
||||
},
|
||||
"name": "string.quoted.double.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"match": "\\\\([0abtnvfre \"/\\\\N_Lp]|x\\d\\d|u\\d{4}|U\\d{8})",
|
||||
"name": "constant.character.escape.yaml"
|
||||
},
|
||||
{
|
||||
"match": "\\\\\\n",
|
||||
"name": "constant.character.escape.double-quoted.newline.yaml"
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-scalar-plain-in": {
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#flow-scalar-plain-in-implicit-type"
|
||||
},
|
||||
{
|
||||
"begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] [^\\s[\\[\\]{},]]\n ",
|
||||
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n | \\s* : [\\[\\]{},]\n | \\s* [\\[\\]{},]\n )\n ",
|
||||
"name": "string.unquoted.plain.in.yaml"
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-scalar-plain-in-implicit-type": {
|
||||
"patterns": [
|
||||
{
|
||||
"captures": {
|
||||
"1": {
|
||||
"name": "constant.language.null.yaml"
|
||||
},
|
||||
"2": {
|
||||
"name": "constant.language.boolean.yaml"
|
||||
},
|
||||
"3": {
|
||||
"name": "constant.numeric.integer.yaml"
|
||||
},
|
||||
"4": {
|
||||
"name": "constant.numeric.float.yaml"
|
||||
},
|
||||
"5": {
|
||||
"name": "constant.other.timestamp.yaml"
|
||||
},
|
||||
"6": {
|
||||
"name": "constant.language.value.yaml"
|
||||
},
|
||||
"7": {
|
||||
"name": "constant.language.merge.yaml"
|
||||
}
|
||||
},
|
||||
"match": "(?x)\n (?x:\n (null|Null|NULL|~)\n | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n | (\n (?:\n [-+]? 0b [0-1_]+ # (base 2)\n | [-+]? 0 [0-7_]+ # (base 8)\n | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n )\n )\n | (\n (?x:\n [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n | \\. (?: nan|NaN|NAN) # (not a number)\n )\n )\n | (\n (?x:\n \\d{4} - \\d{2} - \\d{2} # (y-m-d)\n | \\d{4} # (year)\n - \\d{1,2} # (month)\n - \\d{1,2} # (day)\n (?: [Tt] | [ \\t]+) \\d{1,2} # (hour)\n : \\d{2} # (minute)\n : \\d{2} # (second)\n (?: \\.\\d*)? # (fraction)\n (?:\n (?:[ \\t]*) Z\n | [-+] \\d{1,2} (?: :\\d{1,2})?\n )? # (time zone)\n )\n )\n | (=)\n | (<<)\n )\n (?:\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n | \\s* : [\\[\\]{},]\n | \\s* [\\[\\]{},]\n )\n )\n "
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-scalar-plain-out": {
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#flow-scalar-plain-out-implicit-type"
|
||||
},
|
||||
{
|
||||
"begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] \\S\n ",
|
||||
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n )\n ",
|
||||
"name": "string.unquoted.plain.out.yaml"
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-scalar-plain-out-implicit-type": {
|
||||
"patterns": [
|
||||
{
|
||||
"captures": {
|
||||
"1": {
|
||||
"name": "constant.language.null.yaml"
|
||||
},
|
||||
"2": {
|
||||
"name": "constant.language.boolean.yaml"
|
||||
},
|
||||
"3": {
|
||||
"name": "constant.numeric.integer.yaml"
|
||||
},
|
||||
"4": {
|
||||
"name": "constant.numeric.float.yaml"
|
||||
},
|
||||
"5": {
|
||||
"name": "constant.other.timestamp.yaml"
|
||||
},
|
||||
"6": {
|
||||
"name": "constant.language.value.yaml"
|
||||
},
|
||||
"7": {
|
||||
"name": "constant.language.merge.yaml"
|
||||
}
|
||||
},
|
||||
"match": "(?x)\n (?x:\n (null|Null|NULL|~)\n | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n | (\n (?:\n [-+]? 0b [0-1_]+ # (base 2)\n | [-+]? 0 [0-7_]+ # (base 8)\n | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n )\n )\n | (\n (?x:\n [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n | \\. (?: nan|NaN|NAN) # (not a number)\n )\n )\n | (\n (?x:\n \\d{4} - \\d{2} - \\d{2} # (y-m-d)\n | \\d{4} # (year)\n - \\d{1,2} # (month)\n - \\d{1,2} # (day)\n (?: [Tt] | [ \\t]+) \\d{1,2} # (hour)\n : \\d{2} # (minute)\n : \\d{2} # (second)\n (?: \\.\\d*)? # (fraction)\n (?:\n (?:[ \\t]*) Z\n | [-+] \\d{1,2} (?: :\\d{1,2})?\n )? # (time zone)\n )\n )\n | (=)\n | (<<)\n )\n (?x:\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n )\n )\n "
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-scalar-single-quoted": {
|
||||
"begin": "'",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.string.begin.yaml"
|
||||
}
|
||||
},
|
||||
"end": "'(?!')",
|
||||
"endCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.string.end.yaml"
|
||||
}
|
||||
},
|
||||
"name": "string.quoted.single.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"match": "''",
|
||||
"name": "constant.character.escape.single-quoted.yaml"
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-sequence": {
|
||||
"begin": "\\[",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.sequence.begin.yaml"
|
||||
}
|
||||
},
|
||||
"end": "\\]",
|
||||
"endCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.sequence.end.yaml"
|
||||
}
|
||||
},
|
||||
"name": "meta.flow-sequence.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#prototype"
|
||||
},
|
||||
{
|
||||
"match": ",",
|
||||
"name": "punctuation.separator.sequence.yaml"
|
||||
},
|
||||
{
|
||||
"include": "#flow-pair"
|
||||
},
|
||||
{
|
||||
"include": "#flow-node"
|
||||
}
|
||||
]
|
||||
},
|
||||
"flow-value": {
|
||||
"patterns": [
|
||||
{
|
||||
"begin": "\\G(?![},\\]])",
|
||||
"end": "(?=[},\\]])",
|
||||
"name": "meta.flow-pair.value.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#flow-node"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"node": {
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#block-node"
|
||||
}
|
||||
]
|
||||
},
|
||||
"property": {
|
||||
"begin": "(?=!|&)",
|
||||
"end": "(?!\\G)",
|
||||
"name": "meta.property.yaml",
|
||||
"patterns": [
|
||||
{
|
||||
"captures": {
|
||||
"1": {
|
||||
"name": "keyword.control.property.anchor.yaml"
|
||||
},
|
||||
"2": {
|
||||
"name": "punctuation.definition.anchor.yaml"
|
||||
},
|
||||
"3": {
|
||||
"name": "entity.name.type.anchor.yaml"
|
||||
},
|
||||
"4": {
|
||||
"name": "invalid.illegal.character.anchor.yaml"
|
||||
}
|
||||
},
|
||||
"match": "\\G((&))([^\\s\\[\\]/{/},]+)(\\S+)?"
|
||||
},
|
||||
{
|
||||
"match": "(?x)\n \\G\n (?:\n ! < (?: %\\p{XDigit}{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+ >\n | (?:!(?:[0-9A-Za-z\\-]*!)?) (?: %\\p{XDigit}{2} | [0-9A-Za-z\\-#;/?:@&=+$_.~*'()] )+\n | !\n )\n (?=\\ |\\t|$)\n ",
|
||||
"name": "storage.type.tag-handle.yaml"
|
||||
},
|
||||
{
|
||||
"match": "\\S+",
|
||||
"name": "invalid.illegal.tag-handle.yaml"
|
||||
}
|
||||
]
|
||||
},
|
||||
"prototype": {
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#comment"
|
||||
},
|
||||
{
|
||||
"include": "#property"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@pivotal-tools/theia-languageclient",
|
||||
"version": "0.0.2",
|
||||
"version": "0.0.5",
|
||||
"description": "Theia IDE language client for STS4 language servers",
|
||||
"repository": "https://github.com/spring-projects/sts4",
|
||||
"license": "MIT",
|
||||
@@ -9,22 +9,28 @@
|
||||
],
|
||||
"files": [
|
||||
"lib",
|
||||
"src"
|
||||
"src",
|
||||
"data"
|
||||
],
|
||||
"engines": {
|
||||
"npm": "^5.0.0",
|
||||
"vscode": "^1.25.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@pivotal-tools/jvm-launch-utils": "0.0.11",
|
||||
"@theia/core": "latest",
|
||||
"@theia/editor": "latest",
|
||||
"@theia/languages": "latest",
|
||||
"@theia/monaco": "latest",
|
||||
"@types/glob": "^5.0.30",
|
||||
"glob": "^7.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"rimraf": "latest",
|
||||
"typescript": "latest"
|
||||
"rimraf": "^2.6.2",
|
||||
"typescript": "^3.1.3"
|
||||
},
|
||||
"scripts": {
|
||||
"prepublish": "yarn run clean && yarn run build",
|
||||
"prepare": "yarn run clean && yarn run build",
|
||||
"clean": "rimraf lib",
|
||||
"build": "tsc",
|
||||
"watch": "tsc -w"
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import { injectable, inject } from 'inversify';
|
||||
import { RequestType } from 'vscode-jsonrpc';
|
||||
import { CommandRegistry } from '@theia/core/lib/common';
|
||||
import { ILanguageClient } from '@theia/languages/lib/common';
|
||||
import { ILanguageClient } from '@theia/languages/lib/browser';
|
||||
|
||||
export const ADD_LISTENER_REQUEST_TYPE = new RequestType<ClasspathListenerParams, ClasspathListenerResponse, void, void>("sts/addClasspathListener");
|
||||
export const REMOVE_LISTENER_REQUEST_TYPE = new RequestType<ClasspathListenerParams, ClasspathListenerResponse, void, void>("sts/removeClasspathListener");
|
||||
export const ADD_LISTENER_REQUEST_TYPE = 'sts/addClasspathListener';
|
||||
export const REMOVE_LISTENER_REQUEST_TYPE ='sts/removeClasspathListener';
|
||||
|
||||
@injectable()
|
||||
export class ClasspathService {
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
import {
|
||||
JAVA_PROPERTIES_LANGUAGE_ID,
|
||||
JAVA_PROPERTIES_LANGUAGE_GRAMMAR_SCOPE,
|
||||
JAVA_PROPERTIES_CONFIG,
|
||||
JAVA_PROPERTIES_TM_GRAMMAR
|
||||
} from '../common';
|
||||
import {LanguageGrammarDefinitionContribution, TextmateRegistry} from '@theia/monaco/lib/browser/textmate';
|
||||
import {injectable} from 'inversify';
|
||||
|
||||
// Java .properties file language registration
|
||||
|
||||
@injectable()
|
||||
export class JavaPropertiesGrammarContribution implements LanguageGrammarDefinitionContribution {
|
||||
|
||||
registerTextmateLanguage(registry: TextmateRegistry) {
|
||||
monaco.languages.register({
|
||||
id: JAVA_PROPERTIES_LANGUAGE_ID,
|
||||
aliases: [
|
||||
"Java Properties"
|
||||
],
|
||||
extensions: [
|
||||
".properties"
|
||||
],
|
||||
filenames: []
|
||||
});
|
||||
|
||||
monaco.languages.setLanguageConfiguration(JAVA_PROPERTIES_LANGUAGE_ID, JAVA_PROPERTIES_CONFIG);
|
||||
|
||||
registry.registerTextmateGrammarScope(JAVA_PROPERTIES_LANGUAGE_GRAMMAR_SCOPE, {
|
||||
async getGrammarDefinition() {
|
||||
return {
|
||||
format: 'json',
|
||||
content: JAVA_PROPERTIES_TM_GRAMMAR
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
registry.mapLanguageIdToTextmateGrammar(JAVA_PROPERTIES_LANGUAGE_ID, JAVA_PROPERTIES_LANGUAGE_GRAMMAR_SCOPE);
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,11 @@
|
||||
import { injectable, inject, postConstruct } from 'inversify';
|
||||
import { NotificationType } from 'vscode-jsonrpc';
|
||||
import { DidChangeConfigurationParams } from 'vscode-base-languageclient/lib/base';
|
||||
import { BaseLanguageClientContribution, Workspace, Languages, LanguageClientFactory } from '@theia/languages/lib/browser';
|
||||
import { PreferenceProxy } from '@theia/core/lib/browser';
|
||||
import { ProgressService } from './progress-service';
|
||||
import { MoveCursorService } from './move-cursor-service';
|
||||
import { Utils } from '../common/utils';
|
||||
|
||||
const CONFIG_CHANGED_NOTIFICATION_TYPE = new NotificationType<DidChangeConfigurationParams,void>('workspace/didChangeConfiguration');
|
||||
const CONFIG_CHANGED_NOTIFICATION_TYPE = 'workspace/didChangeConfiguration';
|
||||
|
||||
@injectable()
|
||||
export abstract class StsLanguageClientContribution<P> extends BaseLanguageClientContribution {
|
||||
@@ -30,14 +28,13 @@ export abstract class StsLanguageClientContribution<P> extends BaseLanguageClien
|
||||
this.sendConfig();
|
||||
this.preferences.onPreferenceChanged(() => this.sendConfig());
|
||||
}
|
||||
this.attachMessageHandlers();
|
||||
return this.attachMessageHandlers();
|
||||
}
|
||||
|
||||
protected attachMessageHandlers() {
|
||||
this.languageClient.then(client => {
|
||||
this.progressService.attach(client);
|
||||
this.moveCursorService.attach(client);
|
||||
});
|
||||
protected async attachMessageHandlers() {
|
||||
const client = await this.languageClient;
|
||||
this.progressService.attach(client);
|
||||
this.moveCursorService.attach(client);
|
||||
}
|
||||
|
||||
private sendConfig() {
|
||||
|
||||
@@ -2,10 +2,15 @@ import { ContainerModule } from 'inversify';
|
||||
import { ClasspathService } from './classpath-service';
|
||||
import { ProgressService } from './progress-service';
|
||||
import { MoveCursorService } from './move-cursor-service';
|
||||
import {LanguageGrammarDefinitionContribution} from '@theia/monaco/lib/browser/textmate';
|
||||
import {JavaPropertiesGrammarContribution} from './java-properties-grammar-contribution';
|
||||
import {YamlGrammarContribution} from './yaml-grammar-contribution';
|
||||
|
||||
export default new ContainerModule(bind => {
|
||||
// add your contribution bindings here
|
||||
bind(ClasspathService).toSelf().inSingletonScope();
|
||||
bind(ProgressService).toSelf().inSingletonScope();
|
||||
bind(MoveCursorService).toSelf().inSingletonScope();
|
||||
bind(LanguageGrammarDefinitionContribution).to(JavaPropertiesGrammarContribution).inSingletonScope();
|
||||
bind(LanguageGrammarDefinitionContribution).to(YamlGrammarContribution).inSingletonScope();
|
||||
});
|
||||
1
theia-extensions/theia-commons/src/browser/monaco.d.ts
vendored
Normal file
1
theia-extensions/theia-commons/src/browser/monaco.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/// <reference types='@typefox/monaco-editor-core/monaco'/>
|
||||
@@ -1,12 +1,11 @@
|
||||
import { injectable, inject } from 'inversify';
|
||||
import { RequestType } from 'vscode-jsonrpc';
|
||||
import { Position } from 'vscode-base-languageclient/lib/base';
|
||||
import { Position } from 'vscode-languageserver-types';
|
||||
import { CommandRegistry } from '@theia/core/lib/common';
|
||||
import { ILanguageClient } from '@theia/languages/lib/common';
|
||||
import { ILanguageClient } from '@theia/languages/lib/browser';
|
||||
import {IdeHelper} from './ide-helper';
|
||||
import {EditorManager} from '@theia/editor/lib/browser';
|
||||
|
||||
export const MOVE_CURSOR_REQUEST_TYPE = new RequestType<CursorMovementParams, {}, void, void>('sts/moveCursorr');
|
||||
export const MOVE_CURSOR_REQUEST_TYPE = 'sts/moveCursorr';
|
||||
|
||||
@injectable()
|
||||
export class MoveCursorService {
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import { injectable, inject } from 'inversify';
|
||||
import { NotificationType } from 'vscode-jsonrpc';
|
||||
import { CommandRegistry } from '@theia/core/lib/common';
|
||||
import { ILanguageClient } from '@theia/languages/lib/common';
|
||||
import { ILanguageClient } from '@theia/languages/lib/browser';
|
||||
|
||||
const PROGRESS_NOTIFICATION_TYPE = new NotificationType<ProgressParams,void>('sts/progress');
|
||||
const PROGRESS_NOTIFICATION_TYPE = 'sts/progress';
|
||||
|
||||
@injectable()
|
||||
export class ProgressService {
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
import {LanguageGrammarDefinitionContribution, TextmateRegistry} from '@theia/monaco/lib/browser/textmate';
|
||||
import {injectable} from 'inversify';
|
||||
import {YAML_LANGUAGE_ID, YAML_LANGUAGE_GRAMMAR_SCOPE, YAML_CONFIG, YAML_TM_GRAMMAR} from '../common';
|
||||
|
||||
@injectable()
|
||||
export class YamlGrammarContribution implements LanguageGrammarDefinitionContribution {
|
||||
|
||||
registerTextmateLanguage(registry: TextmateRegistry) {
|
||||
monaco.languages.register({
|
||||
id: YAML_LANGUAGE_ID,
|
||||
"aliases": [
|
||||
"YAML",
|
||||
"yaml"
|
||||
],
|
||||
"extensions": [
|
||||
".yml",
|
||||
".eyaml",
|
||||
".eyml",
|
||||
".yaml"
|
||||
],
|
||||
"filenames": []
|
||||
});
|
||||
|
||||
monaco.languages.setLanguageConfiguration(YAML_LANGUAGE_ID, YAML_CONFIG);
|
||||
|
||||
registry.registerTextmateGrammarScope(YAML_LANGUAGE_GRAMMAR_SCOPE, {
|
||||
async getGrammarDefinition() {
|
||||
return {
|
||||
format: 'json',
|
||||
content: YAML_TM_GRAMMAR
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
registry.mapLanguageIdToTextmateGrammar(YAML_LANGUAGE_ID, YAML_LANGUAGE_GRAMMAR_SCOPE);
|
||||
}
|
||||
}
|
||||
2
theia-extensions/theia-commons/src/common/index.ts
Normal file
2
theia-extensions/theia-commons/src/common/index.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
export * from './languages';
|
||||
export * from './utils';
|
||||
49
theia-extensions/theia-commons/src/common/languages.ts
Normal file
49
theia-extensions/theia-commons/src/common/languages.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
export const JAVA_PROPERTIES_LANGUAGE_ID = 'java-properties';
|
||||
export const JAVA_PROPERTIES_LANGUAGE_GRAMMAR_SCOPE = 'source.java-properties';
|
||||
|
||||
export const YAML_LANGUAGE_ID = 'yaml';
|
||||
export const YAML_LANGUAGE_GRAMMAR_SCOPE = 'source.yaml';
|
||||
|
||||
// Java Properties file format config and grammar
|
||||
|
||||
export const JAVA_PROPERTIES_CONFIG: monaco.languages.LanguageConfiguration = {
|
||||
comments: {
|
||||
lineComment: "#"
|
||||
}
|
||||
};
|
||||
|
||||
export const JAVA_PROPERTIES_TM_GRAMMAR = require('../../data/java-properties.tmLanguage.json');
|
||||
|
||||
|
||||
// YAML file format config and grammar
|
||||
|
||||
export const YAML_CONFIG: monaco.languages.LanguageConfiguration = {
|
||||
comments: {
|
||||
lineComment: "#"
|
||||
},
|
||||
brackets: [
|
||||
["{", "}"],
|
||||
["[", "]"],
|
||||
["(", ")"]
|
||||
],
|
||||
autoClosingPairs: [
|
||||
{ open: "{", close: "}" },
|
||||
{ open: "[", close: "]" },
|
||||
{ open: "(", close: ")" },
|
||||
{ open: "\"", close: "\"" },
|
||||
{ open: "'", close: "'" }
|
||||
],
|
||||
surroundingPairs: [
|
||||
{ open: "{", close: "}" },
|
||||
{ open: "[", close: "]" },
|
||||
{ open: "(", close: ")" },
|
||||
{ open: "\"", close: "\"" },
|
||||
{ open: "'", close: "'" }
|
||||
],
|
||||
indentationRules: {
|
||||
increaseIndentPattern: new RegExp("^\\s*.*(:|-) ?(&\\w+)?(\\{[^}\"']*|\\([^)\"']*)?$"),
|
||||
decreaseIndentPattern: new RegExp("^\\s+\\}$")
|
||||
}
|
||||
};
|
||||
|
||||
export const YAML_TM_GRAMMAR = require('../../data/yaml.tmLanguage.json');
|
||||
@@ -8,13 +8,13 @@ import {findJdk, findJvm, JVM} from '@pivotal-tools/jvm-launch-utils';
|
||||
@injectable()
|
||||
export abstract class StsLanguageServerContribution extends BaseLanguageServerContribution {
|
||||
|
||||
protected readonly preferJdk = false;
|
||||
protected readonly preferJdk: boolean = false;
|
||||
|
||||
protected readonly lsJarContainerFolder = path.resolve(__dirname, '../../jars');
|
||||
protected readonly lsJarContainerFolder: string = path.resolve(__dirname, '../../jars');
|
||||
|
||||
protected readonly lsJarGlob = 'language-server*.jar';
|
||||
protected readonly lsJarGlob: string = 'language-server*.jar';
|
||||
|
||||
protected readonly jvmArguments = [];
|
||||
protected readonly jvmArguments: string[] = [];
|
||||
|
||||
protected getJarPath() {
|
||||
const jarPaths = glob.sync(this.lsJarGlob, { cwd: this.lsJarContainerFolder });
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": false,
|
||||
"declaration": true,
|
||||
"skipLibCheck": true,
|
||||
"experimentalDecorators": true,
|
||||
"noUnusedLocals": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
"downlevelIteration": true,
|
||||
"module": "commonjs",
|
||||
"moduleResolution": "node",
|
||||
"target": "es5",
|
||||
@@ -19,5 +18,8 @@
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
],
|
||||
"files": [
|
||||
"./node_modules/@theia/monaco/src/typings/monaco/index.d.ts"
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -16,7 +16,7 @@
|
||||
"@theia/monaco": "latest",
|
||||
"@theia/typescript": "latest",
|
||||
"@theia/messages": "latest",
|
||||
"@theia/concourse": "0.0.0"
|
||||
"@pivotal-tools/theia-concourse": "^0.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "latest"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@theia/concourse",
|
||||
"name": "@pivotal-tools/theia-concourse",
|
||||
"keywords": [
|
||||
"theia-extension"
|
||||
],
|
||||
@@ -12,11 +12,11 @@
|
||||
"dependencies": {
|
||||
"@theia/core": "latest",
|
||||
"@theia/languages": "latest",
|
||||
"@pivotal-tools/theia-languageclient": "0.0.2"
|
||||
"@pivotal-tools/theia-languageclient": "0.0.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"rimraf": "latest",
|
||||
"typescript": "latest"
|
||||
"rimraf": "^2.6.2",
|
||||
"typescript": "^3.1.3"
|
||||
},
|
||||
"scripts": {
|
||||
"prepare": "yarn run clean && yarn run build",
|
||||
|
||||
@@ -5,12 +5,13 @@
|
||||
import { ContainerModule } from "inversify";
|
||||
import { ConcourseClientContribution } from './language-client-contribution';
|
||||
import { LanguageClientContribution } from '@theia/languages/lib/browser';
|
||||
|
||||
// Contribute monaco-editor languages for pipeline and task yaml
|
||||
import './pipeline-yaml-monaco-contribution';
|
||||
import './task-yaml-monaco-contribution';
|
||||
import {PipelineYamlGrammarContribution} from './pipeline-yaml-grammar-contribution';
|
||||
import {TaskYamlGrammarContribution} from './task-yaml-grammar-contribution';
|
||||
import {LanguageGrammarDefinitionContribution} from '@theia/monaco/lib/browser/textmate';
|
||||
|
||||
export default new ContainerModule(bind => {
|
||||
// add your contribution bindings here
|
||||
bind(LanguageClientContribution).to(ConcourseClientContribution).inSingletonScope();
|
||||
bind(LanguageGrammarDefinitionContribution).to(PipelineYamlGrammarContribution).inSingletonScope();
|
||||
bind(LanguageGrammarDefinitionContribution).to(TaskYamlGrammarContribution).inSingletonScope();
|
||||
});
|
||||
@@ -0,0 +1,26 @@
|
||||
import {
|
||||
CONCOURSE_PIPELINE_YAML_LANGUAGE_ID,
|
||||
CONCOURSE_PIPELINE_YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
import {LanguageGrammarDefinitionContribution, TextmateRegistry} from '@theia/monaco/lib/browser/textmate';
|
||||
import {injectable} from 'inversify';
|
||||
import {YAML_LANGUAGE_GRAMMAR_SCOPE, YAML_CONFIG} from '@pivotal-tools/theia-languageclient/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class PipelineYamlGrammarContribution implements LanguageGrammarDefinitionContribution {
|
||||
|
||||
registerTextmateLanguage(registry: TextmateRegistry) {
|
||||
monaco.languages.register({
|
||||
id: CONCOURSE_PIPELINE_YAML_LANGUAGE_ID,
|
||||
aliases: [
|
||||
CONCOURSE_PIPELINE_YAML_LANGUAGE_NAME
|
||||
],
|
||||
filenamePatterns: ['*pipeline*.yml'],
|
||||
firstLine: '^#(\\s)*pipeline(\\s)*',
|
||||
});
|
||||
|
||||
monaco.languages.setLanguageConfiguration(CONCOURSE_PIPELINE_YAML_LANGUAGE_ID, YAML_CONFIG);
|
||||
|
||||
registry.mapLanguageIdToTextmateGrammar(CONCOURSE_PIPELINE_YAML_LANGUAGE_ID, YAML_LANGUAGE_GRAMMAR_SCOPE);
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
/// <reference types='monaco-editor-core/monaco'/>
|
||||
import {
|
||||
CONCOURSE_PIPELINE_YAML_LANGUAGE_ID,
|
||||
CONCOURSE_PIPELINE_YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
|
||||
// Pipeline .yml file language registration
|
||||
|
||||
let YAML_LANG_MODULE_PROMISE: monaco.Promise<any>;
|
||||
|
||||
monaco.languages.register({
|
||||
id: CONCOURSE_PIPELINE_YAML_LANGUAGE_ID,
|
||||
filenamePatterns: ['*pipeline*.yml'],
|
||||
aliases: [CONCOURSE_PIPELINE_YAML_LANGUAGE_NAME, CONCOURSE_PIPELINE_YAML_LANGUAGE_ID],
|
||||
firstLine: '^#(\\s)*pipeline(\\s)*',
|
||||
});
|
||||
|
||||
monaco.languages.onLanguage(CONCOURSE_PIPELINE_YAML_LANGUAGE_ID, () => {
|
||||
if (!YAML_LANG_MODULE_PROMISE) {
|
||||
YAML_LANG_MODULE_PROMISE = (<any>monaco.languages.getLanguages().find(ext => ext.id === 'yaml')).loader();
|
||||
}
|
||||
return YAML_LANG_MODULE_PROMISE.then(mod => {
|
||||
monaco.languages.setLanguageConfiguration(CONCOURSE_PIPELINE_YAML_LANGUAGE_ID, mod.conf);
|
||||
monaco.languages.setMonarchTokensProvider(CONCOURSE_PIPELINE_YAML_LANGUAGE_ID, mod.language);
|
||||
})
|
||||
});
|
||||
@@ -0,0 +1,26 @@
|
||||
import {
|
||||
CONCOURSE_TASK_YAML_LANGUAGE_ID,
|
||||
CONCOURSE_TASK_YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
import {LanguageGrammarDefinitionContribution, TextmateRegistry} from '@theia/monaco/lib/browser/textmate';
|
||||
import {injectable} from 'inversify';
|
||||
import {YAML_LANGUAGE_GRAMMAR_SCOPE, YAML_CONFIG} from '@pivotal-tools/theia-languageclient/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class TaskYamlGrammarContribution implements LanguageGrammarDefinitionContribution {
|
||||
|
||||
registerTextmateLanguage(registry: TextmateRegistry) {
|
||||
monaco.languages.register({
|
||||
id: CONCOURSE_TASK_YAML_LANGUAGE_ID,
|
||||
aliases: [
|
||||
CONCOURSE_TASK_YAML_LANGUAGE_NAME
|
||||
],
|
||||
filenamePatterns: ['*task.yml', '**/tasks/*.yml'],
|
||||
firstLine: '^#(\\\\s)*task(\\\\s)*',
|
||||
});
|
||||
|
||||
monaco.languages.setLanguageConfiguration(CONCOURSE_TASK_YAML_LANGUAGE_ID, YAML_CONFIG);
|
||||
|
||||
registry.mapLanguageIdToTextmateGrammar(CONCOURSE_TASK_YAML_LANGUAGE_ID, YAML_LANGUAGE_GRAMMAR_SCOPE);
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
/// <reference types='monaco-editor-core/monaco'/>
|
||||
import {
|
||||
CONCOURSE_TASK_YAML_LANGUAGE_ID,
|
||||
CONCOURSE_TASK_YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
|
||||
// Task .yml file language registration
|
||||
|
||||
let YAML_LANG_MODULE_PROMISE: monaco.Promise<any>;
|
||||
|
||||
monaco.languages.register({
|
||||
id: CONCOURSE_TASK_YAML_LANGUAGE_ID,
|
||||
filenamePatterns: ['*task.yml', '**/tasks/*.yml'],
|
||||
aliases: [CONCOURSE_TASK_YAML_LANGUAGE_NAME, CONCOURSE_TASK_YAML_LANGUAGE_ID],
|
||||
firstLine: '^#(\\\\s)*task(\\\\s)*',
|
||||
});
|
||||
|
||||
monaco.languages.onLanguage(CONCOURSE_TASK_YAML_LANGUAGE_ID, () => {
|
||||
if (!YAML_LANG_MODULE_PROMISE) {
|
||||
YAML_LANG_MODULE_PROMISE = (<any>monaco.languages.getLanguages().find(ext => ext.id === 'yaml')).loader();
|
||||
}
|
||||
return YAML_LANG_MODULE_PROMISE.then(mod => {
|
||||
monaco.languages.setLanguageConfiguration(CONCOURSE_TASK_YAML_LANGUAGE_ID, mod.conf);
|
||||
monaco.languages.setMonarchTokensProvider(CONCOURSE_TASK_YAML_LANGUAGE_ID, mod.language);
|
||||
})
|
||||
});
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"experimentalDecorators": true,
|
||||
"noUnusedLocals": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"@theia/monaco": "latest",
|
||||
"@theia/typescript": "latest",
|
||||
"@theia/messages": "latest",
|
||||
"@theia/concourse": "0.0.0"
|
||||
"@pivotal-tools/theia-concourse": "^0.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "latest"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"lerna": "2.4.0",
|
||||
"lerna": "2.11.0",
|
||||
"version": "0.0.0",
|
||||
"useWorkspaces": true,
|
||||
"npmClient": "yarn",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"rebuild:electron": "theia rebuild:electron"
|
||||
},
|
||||
"devDependencies": {
|
||||
"lerna": "2.4.0"
|
||||
"lerna": "2.11.0"
|
||||
},
|
||||
"workspaces": [
|
||||
"concourse", "browser-app", "electron-app"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"lerna": "2.4.0",
|
||||
"lerna": "2.11.0",
|
||||
"version": "0.0.1",
|
||||
"useWorkspaces": true,
|
||||
"npmClient": "yarn",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"rebuild:electron": "theia rebuild:electron"
|
||||
},
|
||||
"devDependencies": {
|
||||
"lerna": "2.4.0"
|
||||
"lerna": "2.11.0"
|
||||
},
|
||||
"workspaces": [
|
||||
"spring-boot", "browser-app", "electron-app"
|
||||
|
||||
@@ -12,17 +12,18 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@pivotal-tools/jvm-launch-utils": "0.0.11",
|
||||
"@pivotal-tools/theia-languageclient": "0.0.2",
|
||||
"@pivotal-tools/theia-languageclient": "0.0.5",
|
||||
"@theia/core": "latest",
|
||||
"@theia/editor": "latest",
|
||||
"@theia/java": "latest",
|
||||
"@theia/languages": "latest",
|
||||
"@theia/monaco": "latest",
|
||||
"@theia/preferences": "latest"
|
||||
"@theia/preferences": "latest",
|
||||
"deep-equal": "1.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"rimraf": "latest",
|
||||
"typescript": "latest"
|
||||
"rimraf": "^2.6.2",
|
||||
"typescript": "^3.1.3"
|
||||
},
|
||||
"scripts": {
|
||||
"prepare": "yarn run clean && yarn run build",
|
||||
|
||||
@@ -3,6 +3,9 @@ import { createPreferenceProxy, PreferenceProxy, PreferenceService, PreferenceCo
|
||||
|
||||
// tslint:disable:max-line-length
|
||||
|
||||
export const HIGHLIGHTS_PREF_NAME = 'boot-java.boot-hints.on';
|
||||
export const CODELENS_PREF_NAME = 'boot-java.highlight-codelens.on';
|
||||
|
||||
export const BootConfigSchema: PreferenceSchema = {
|
||||
'type': 'object',
|
||||
'title': 'Spring Boot Java Configuration',
|
||||
@@ -16,6 +19,11 @@ export const BootConfigSchema: PreferenceSchema = {
|
||||
type: 'boolean',
|
||||
description: 'Enable/Disable detecting changes of running Spring Boot applications.',
|
||||
default: false
|
||||
},
|
||||
'boot-java.highlight-codelens.on': {
|
||||
type: 'boolean',
|
||||
default: true,
|
||||
description: 'Enable/Disable Spring running Boot application Code Lenses'
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -23,6 +31,7 @@ export const BootConfigSchema: PreferenceSchema = {
|
||||
export interface BootConfiguration {
|
||||
'boot-java.boot-hints.on': boolean;
|
||||
'boot-java.change-detection.on': boolean;
|
||||
'boot-java.highlight-codelens.on': boolean;
|
||||
}
|
||||
|
||||
export const BootPreferences = Symbol('BootPreferences');
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import {
|
||||
BOOT_PROPERTIES_LANGUAGE_ID,
|
||||
BOOT_PROPERTIES_LANGUAGE_NAME,
|
||||
} from '../common';
|
||||
import {LanguageGrammarDefinitionContribution, TextmateRegistry} from '@theia/monaco/lib/browser/textmate';
|
||||
import {injectable} from 'inversify';
|
||||
import {
|
||||
JAVA_PROPERTIES_LANGUAGE_GRAMMAR_SCOPE,
|
||||
JAVA_PROPERTIES_CONFIG
|
||||
} from '@pivotal-tools/theia-languageclient/lib/common';
|
||||
|
||||
|
||||
// Boot .properties file language registration
|
||||
|
||||
@injectable()
|
||||
export class BootPropertiesGrammarContribution implements LanguageGrammarDefinitionContribution {
|
||||
|
||||
registerTextmateLanguage(registry: TextmateRegistry) {
|
||||
monaco.languages.register({
|
||||
id: BOOT_PROPERTIES_LANGUAGE_ID,
|
||||
aliases: [
|
||||
BOOT_PROPERTIES_LANGUAGE_NAME
|
||||
],
|
||||
filenamePatterns: ['application*.properties', 'bootstrap*.properties']
|
||||
});
|
||||
|
||||
monaco.languages.setLanguageConfiguration(BOOT_PROPERTIES_LANGUAGE_ID, JAVA_PROPERTIES_CONFIG);
|
||||
registry.mapLanguageIdToTextmateGrammar(BOOT_PROPERTIES_LANGUAGE_ID, JAVA_PROPERTIES_LANGUAGE_GRAMMAR_SCOPE);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
import {
|
||||
BOOT_PROPERTIES_YAML_LANGUAGE_ID,
|
||||
BOOT_PROPERTIES_YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
import {LanguageGrammarDefinitionContribution, TextmateRegistry} from '@theia/monaco/lib/browser/textmate';
|
||||
import {injectable} from 'inversify';
|
||||
import {YAML_LANGUAGE_GRAMMAR_SCOPE, YAML_CONFIG} from '@pivotal-tools/theia-languageclient/lib/common';
|
||||
|
||||
|
||||
// Boot .yml file language registration
|
||||
|
||||
@injectable()
|
||||
export class BootYamlGrammarContribution implements LanguageGrammarDefinitionContribution {
|
||||
|
||||
registerTextmateLanguage(registry: TextmateRegistry) {
|
||||
monaco.languages.register({
|
||||
id: BOOT_PROPERTIES_YAML_LANGUAGE_ID,
|
||||
aliases: [
|
||||
BOOT_PROPERTIES_YAML_LANGUAGE_NAME
|
||||
],
|
||||
filenamePatterns: ['application*.yml', 'bootstrap*.yml']
|
||||
});
|
||||
|
||||
monaco.languages.setLanguageConfiguration(BOOT_PROPERTIES_YAML_LANGUAGE_ID, YAML_CONFIG);
|
||||
|
||||
registry.mapLanguageIdToTextmateGrammar(BOOT_PROPERTIES_YAML_LANGUAGE_ID, YAML_LANGUAGE_GRAMMAR_SCOPE);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
import { injectable } from 'inversify';
|
||||
import * as deepEqual from 'deep-equal';
|
||||
import {HighlightParams} from './highlight-service';
|
||||
import * as Lsp from 'vscode-languageserver-types';
|
||||
|
||||
@injectable()
|
||||
export class HighlightCodeLensService implements monaco.languages.CodeLensProvider {
|
||||
|
||||
private highlights : Map<string, HighlightParams> = new Map<string, HighlightParams>();
|
||||
|
||||
private _onDidChangeCodeLenses = new monaco.Emitter<this>();
|
||||
|
||||
public get onDidChange(): monaco.IEvent<this> {
|
||||
return this._onDidChangeCodeLenses.event;
|
||||
}
|
||||
|
||||
handle(highlghtParams: HighlightParams) {
|
||||
if (!deepEqual(this.highlights.get(highlghtParams.doc.uri), highlghtParams)) {
|
||||
this.highlights.set(highlghtParams.doc.uri, highlghtParams);
|
||||
this._onDidChangeCodeLenses.fire();
|
||||
}
|
||||
}
|
||||
|
||||
static toMonacoCodeLens(cl: Lsp.CodeLens): monaco.languages.ICodeLensSymbol {
|
||||
const codeLens: monaco.languages.ICodeLensSymbol = {
|
||||
range: {
|
||||
startLineNumber: cl.range.start.line + 1,
|
||||
startColumn: cl.range.start.character,
|
||||
endLineNumber: cl.range.end.line + 1,
|
||||
endColumn: cl.range.end.character
|
||||
},
|
||||
command: {
|
||||
id: cl.command.command,
|
||||
title: cl.command.title,
|
||||
arguments: cl.command.arguments
|
||||
}
|
||||
};
|
||||
return codeLens;
|
||||
}
|
||||
|
||||
provideCodeLenses(document: monaco.editor.ITextModel, token: monaco.CancellationToken) {
|
||||
const activeUri = document.uri.toString();
|
||||
const activeVersion = document.getVersionId();
|
||||
const highlightParams = this.highlights.get(activeUri);
|
||||
if (highlightParams && highlightParams.doc.version === activeVersion) {
|
||||
const codeLenses = highlightParams.codeLenses || [];
|
||||
return codeLenses.filter(cl => cl.command).map(cl => HighlightCodeLensService.toMonacoCodeLens(cl));
|
||||
}
|
||||
return [];
|
||||
};
|
||||
|
||||
resolveCodeLens(model: monaco.editor.ITextModel, codeLens: monaco.languages.ICodeLensSymbol, token: monaco.CancellationToken) {
|
||||
return codeLens;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,14 +1,10 @@
|
||||
import { injectable, inject } from 'inversify';
|
||||
import { NotificationType } from 'vscode-jsonrpc';
|
||||
import { TextDocumentIdentifier, Range, CodeLens } from 'vscode-base-languageclient/lib/base';
|
||||
import { SetDecorationParams, EditorDecorationStyle, TextEditor, DeltaDecorationParams, EditorManager } from '@theia/editor/lib/browser';
|
||||
import { ILanguageClient } from '@theia/languages/lib/common';
|
||||
import { VersionedTextDocumentIdentifier, Range, CodeLens } from 'vscode-languageserver-types';
|
||||
import { EditorDecorationStyle, TextEditor, DeltaDecorationParams, EditorManager } from '@theia/editor/lib/browser';
|
||||
import { DiffUris } from '@theia/core/lib/browser/diff-uris';
|
||||
import URI from '@theia/core/lib/common/uri';
|
||||
|
||||
const HIGHLIGHTS_NOTIFICATION_TYPE = new NotificationType<HighlightParams,void>("sts/highlight");
|
||||
|
||||
const BOOT_LIVE_HINTS = 'Boot-Live-Hints';
|
||||
// const BOOT_LIVE_HINTS = 'Boot-Live-Hints';
|
||||
|
||||
const INLINE_BOOT_HINT_DECORATION_STYLE = new EditorDecorationStyle('inline-boot-hint-decoration', style => {
|
||||
style.backgroundColor = 'rgba(109,179,63,0.25)',
|
||||
@@ -27,16 +23,14 @@ export class HighlightService {
|
||||
@inject(EditorManager) protected readonly editorManager: EditorManager
|
||||
) {}
|
||||
|
||||
attach(client: ILanguageClient) {
|
||||
client.onNotification(HIGHLIGHTS_NOTIFICATION_TYPE, (params) => this.highlight(params));
|
||||
}
|
||||
|
||||
async highlight(params: HighlightParams) {
|
||||
async handle(params: HighlightParams) {
|
||||
const editor = await this.findEditorByUri(params.doc.uri);
|
||||
if (editor) {
|
||||
const decorationParams: SetDecorationParams = {
|
||||
uri: params.doc.uri,
|
||||
kind: BOOT_LIVE_HINTS,
|
||||
const key = `${params.doc.uri}`;
|
||||
const decorationParams: DeltaDecorationParams = {
|
||||
// uri: params.doc.uri,
|
||||
// kind: BOOT_LIVE_HINTS,
|
||||
oldDecorations: this.appliedDecorations.get(key) || [],
|
||||
newDecorations: params.codeLenses.map(cl => {
|
||||
return {
|
||||
range: Range.create(cl.range.start.line, cl.range.start.character, cl.range.end.line, cl.range.end.character),
|
||||
@@ -47,9 +41,7 @@ export class HighlightService {
|
||||
}
|
||||
})
|
||||
};
|
||||
const key = `${params.doc.uri}`;
|
||||
const oldDecorations = this.appliedDecorations.get(key) || [];
|
||||
const appliedDecorations = editor.deltaDecorations(<DeltaDecorationParams & SetDecorationParams>{oldDecorations, ...decorationParams});
|
||||
const appliedDecorations = editor.deltaDecorations(decorationParams);
|
||||
this.appliedDecorations.set(key, appliedDecorations);
|
||||
}
|
||||
}
|
||||
@@ -67,11 +59,10 @@ export class HighlightService {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
export interface HighlightParams {
|
||||
doc: TextDocumentIdentifier
|
||||
codeLenses: CodeLens[]
|
||||
doc: VersionedTextDocumentIdentifier;
|
||||
codeLenses: CodeLens[];
|
||||
}
|
||||
|
||||
|
||||
@@ -6,13 +6,18 @@ import {
|
||||
BOOT_PROPERTIES_YAML_LANGUAGE_ID,
|
||||
BOOT_PROPERTIES_LANGUAGE_ID
|
||||
} from '../common';
|
||||
import { DocumentSelector } from '@theia/languages/lib/common';
|
||||
import { DocumentSelector } from '@theia/languages/lib/browser';
|
||||
import { JAVA_LANGUAGE_ID } from '@theia/java/lib/common';
|
||||
import { HighlightService} from './highlight-service';
|
||||
import { BootConfiguration, BootPreferences } from './boot-preferences';
|
||||
import { StsLanguageClientContribution } from "@pivotal-tools/theia-languageclient/lib/browser/language-client-contribution";
|
||||
import {BootConfiguration, BootPreferences, CODELENS_PREF_NAME, HIGHLIGHTS_PREF_NAME} from './boot-preferences';
|
||||
import { StsLanguageClientContribution } from '@pivotal-tools/theia-languageclient/lib/browser/language-client-contribution';
|
||||
import { ClasspathService } from '@pivotal-tools/theia-languageclient/lib/browser/classpath-service';
|
||||
import { HighlightCodeLensService } from './codelens-service';
|
||||
import {Disposable} from '@theia/core';
|
||||
import {OpenerService} from '@theia/core/lib/browser';
|
||||
import URI from '@theia/core/lib/common/uri';
|
||||
|
||||
const HIGHLIGHTS_NOTIFICATION_TYPE = 'sts/highlight';
|
||||
|
||||
@injectable()
|
||||
export class SpringBootClientContribution extends StsLanguageClientContribution<BootConfiguration> {
|
||||
@@ -20,23 +25,52 @@ export class SpringBootClientContribution extends StsLanguageClientContribution<
|
||||
readonly id = SPRING_BOOT_SERVER_ID;
|
||||
readonly name = SPRING_BOOT_SERVER_NAME;
|
||||
|
||||
private codeLensProviderRegistration: Disposable = null;
|
||||
|
||||
constructor(
|
||||
@inject(Workspace) workspace: Workspace,
|
||||
@inject(Languages) languages: Languages,
|
||||
@inject(LanguageClientFactory) languageClientFactory: LanguageClientFactory,
|
||||
@inject(HighlightService) protected readonly highlightService: HighlightService,
|
||||
@inject(HighlightCodeLensService) protected readonly highlightCodeLensService,
|
||||
@inject(ClasspathService) protected readonly classpathService: ClasspathService,
|
||||
@inject(BootPreferences) protected readonly preferences: BootPreferences
|
||||
@inject(BootPreferences) protected readonly preferences: BootPreferences,
|
||||
@inject(OpenerService) private readonly openerService: OpenerService
|
||||
) {
|
||||
super(workspace, languages, languageClientFactory);
|
||||
}
|
||||
|
||||
protected attachMessageHandlers() {
|
||||
protected async attachMessageHandlers() {
|
||||
super.attachMessageHandlers();
|
||||
this.languageClient.then(client => {
|
||||
this.highlightService.attach(client);
|
||||
const client = await this.languageClient;
|
||||
client.onNotification(HIGHLIGHTS_NOTIFICATION_TYPE, (params) => {
|
||||
this.highlightService.handle(params);
|
||||
if (this.preferences[CODELENS_PREF_NAME]) {
|
||||
this.highlightCodeLensService.handle(params);
|
||||
}
|
||||
});
|
||||
// this.classpathService.attach(client);
|
||||
});
|
||||
|
||||
this.preferences.onPreferenceChanged(event => {
|
||||
if (event.preferenceName === CODELENS_PREF_NAME
|
||||
|| event.preferenceName === HIGHLIGHTS_PREF_NAME) {
|
||||
this.toggleHighlightCodeLenses();
|
||||
}
|
||||
});
|
||||
this.toggleHighlightCodeLenses();
|
||||
}
|
||||
|
||||
private toggleHighlightCodeLenses() {
|
||||
if (this.preferences[CODELENS_PREF_NAME] && this.preferences[HIGHLIGHTS_PREF_NAME]) {
|
||||
if (!this.codeLensProviderRegistration) {
|
||||
this.codeLensProviderRegistration = monaco.languages.registerCodeLensProvider(JAVA_LANGUAGE_ID, this.highlightCodeLensService);
|
||||
}
|
||||
} else {
|
||||
if (this.codeLensProviderRegistration) {
|
||||
this.codeLensProviderRegistration.dispose();
|
||||
this.codeLensProviderRegistration = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected get documentSelector(): DocumentSelector | undefined {
|
||||
@@ -53,4 +87,33 @@ export class SpringBootClientContribution extends StsLanguageClientContribution<
|
||||
];
|
||||
}
|
||||
|
||||
activate(): Disposable {
|
||||
const disposable = super.activate();
|
||||
|
||||
const commandRegistration = this.registry.registerCommand({
|
||||
id: 'sts.open.url'
|
||||
}, {
|
||||
execute: (url: string) => {
|
||||
if (url) {
|
||||
const uri = new URI(url);
|
||||
if (uri) {
|
||||
this.openerService.getOpener(uri).then(handler => handler.open(uri));
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
dispose: () => {
|
||||
if (this.codeLensProviderRegistration) {
|
||||
this.codeLensProviderRegistration.dispose();
|
||||
}
|
||||
commandRegistration.dispose();
|
||||
disposable.dispose();
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
/// <reference types='monaco-editor-core/monaco'/>
|
||||
import {
|
||||
BOOT_PROPERTIES_LANGUAGE_ID,
|
||||
BOOT_PROPERTIES_LANGUAGE_NAME,
|
||||
} from '../common';
|
||||
|
||||
// Boot .properties file language registration
|
||||
|
||||
let PROPERTIES_LANG_MODULE_PROMISE: monaco.Promise<any>;
|
||||
|
||||
monaco.languages.register({
|
||||
id: BOOT_PROPERTIES_LANGUAGE_ID,
|
||||
filenamePatterns: ['application*.properties', 'bootstrap*.properties'],
|
||||
aliases: [BOOT_PROPERTIES_LANGUAGE_NAME, BOOT_PROPERTIES_LANGUAGE_ID],
|
||||
});
|
||||
|
||||
monaco.languages.onLanguage(BOOT_PROPERTIES_LANGUAGE_ID, () => {
|
||||
if (!PROPERTIES_LANG_MODULE_PROMISE) {
|
||||
PROPERTIES_LANG_MODULE_PROMISE = (<any>monaco.languages.getLanguages().find(ext => ext.id === 'ini')).loader();
|
||||
}
|
||||
return PROPERTIES_LANG_MODULE_PROMISE.then(mod => {
|
||||
monaco.languages.setLanguageConfiguration(BOOT_PROPERTIES_LANGUAGE_ID, mod.conf);
|
||||
monaco.languages.setMonarchTokensProvider(BOOT_PROPERTIES_LANGUAGE_ID, mod.language);
|
||||
})
|
||||
});
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
/// <reference types='monaco-editor-core/monaco'/>
|
||||
import {
|
||||
BOOT_PROPERTIES_YAML_LANGUAGE_ID,
|
||||
BOOT_PROPERTIES_YAML_LANGUAGE_NAME
|
||||
} from '../common';
|
||||
|
||||
// Boot .yml file language registration
|
||||
|
||||
let YAML_LANG_MODULE_PROMISE: monaco.Promise<any>;
|
||||
|
||||
monaco.languages.register({
|
||||
id: BOOT_PROPERTIES_YAML_LANGUAGE_ID,
|
||||
filenamePatterns: ['application*.yml', 'bootstrap*.yml'],
|
||||
aliases: [BOOT_PROPERTIES_YAML_LANGUAGE_NAME, BOOT_PROPERTIES_YAML_LANGUAGE_ID],
|
||||
});
|
||||
|
||||
monaco.languages.onLanguage(BOOT_PROPERTIES_YAML_LANGUAGE_ID, () => {
|
||||
if (!YAML_LANG_MODULE_PROMISE) {
|
||||
YAML_LANG_MODULE_PROMISE = (<any>monaco.languages.getLanguages().find(ext => ext.id === 'yaml')).loader();
|
||||
}
|
||||
return YAML_LANG_MODULE_PROMISE.then(mod => {
|
||||
monaco.languages.setLanguageConfiguration(BOOT_PROPERTIES_YAML_LANGUAGE_ID, mod.conf);
|
||||
monaco.languages.setMonarchTokensProvider(BOOT_PROPERTIES_YAML_LANGUAGE_ID, mod.language);
|
||||
})
|
||||
});
|
||||
@@ -2,14 +2,19 @@ import '../../images/boot-icon.png';
|
||||
import { SpringBootClientContribution} from './language-client-contribution';
|
||||
import { LanguageClientContribution } from '@theia/languages/lib/browser';
|
||||
import { ContainerModule } from 'inversify';
|
||||
import './monaco-yaml-contribution';
|
||||
import './monaco-properties-contribution';
|
||||
import { HighlightService } from './highlight-service';
|
||||
import { bindBootPreferences } from './boot-preferences';
|
||||
import { HighlightCodeLensService } from './codelens-service';
|
||||
import { LanguageGrammarDefinitionContribution } from '@theia/monaco/lib/browser/textmate';
|
||||
import { BootPropertiesGrammarContribution } from './boot-properties-grammar-contribution';
|
||||
import { BootYamlGrammarContribution } from './boot-yaml-grammar-contribution';
|
||||
|
||||
export default new ContainerModule(bind => {
|
||||
// add your contribution bindings here
|
||||
bindBootPreferences(bind);
|
||||
bind(LanguageClientContribution).to(SpringBootClientContribution).inSingletonScope();
|
||||
bind(LanguageGrammarDefinitionContribution).to(BootPropertiesGrammarContribution).inSingletonScope();
|
||||
bind(LanguageGrammarDefinitionContribution).to(BootYamlGrammarContribution).inSingletonScope();
|
||||
bind(HighlightService).toSelf().inSingletonScope();
|
||||
bind(HighlightCodeLensService).toSelf().inSingletonScope();
|
||||
});
|
||||
@@ -14,7 +14,7 @@ export class SpringBootLsContribution extends StsLanguageServerContribution {
|
||||
protected readonly lsJarGlob = 'spring-boot-language-server*.jar';
|
||||
protected readonly jvmArguments = [
|
||||
// '-Xdebug',
|
||||
// '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7999',
|
||||
// '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=7999',
|
||||
// '-Dlog.level=ALL',
|
||||
'-Dorg.slf4j.simpleLogger.logFile=boot-java.log'
|
||||
];
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": false,
|
||||
"skipLibCheck": true,
|
||||
"experimentalDecorators": true,
|
||||
"noUnusedLocals": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user