PT #161550757: Theia extensions dependencies updated. Highlight CodeLenses for spring-boot

This commit is contained in:
BoykoAlex
2018-10-22 18:55:48 -04:00
parent cce0f2abbf
commit 71895ee842
66 changed files with 13052 additions and 6031 deletions

View File

@@ -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",

View File

@@ -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();
});

View File

@@ -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);
}
}

View File

@@ -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);
})
});

View File

@@ -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);
}
}

View File

@@ -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);
})
});

View File

@@ -1,6 +1,7 @@
{
"compilerOptions": {
"strict": true,
"skipLibCheck": true,
"experimentalDecorators": true,
"noUnusedLocals": true,
"emitDecoratorMetadata": true,

View File

@@ -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"

View File

@@ -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"

View File

@@ -1,5 +1,5 @@
{
"lerna": "2.4.0",
"lerna": "2.11.0",
"version": "0.0.0",
"useWorkspaces": true,
"npmClient": "yarn",

View File

@@ -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

View File

@@ -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"

View File

@@ -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",

View File

@@ -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();
});

View File

@@ -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);
}
}

View File

@@ -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);
})
});

View File

@@ -1,6 +1,7 @@
{
"compilerOptions": {
"strict": true,
"skipLibCheck": true,
"experimentalDecorators": true,
"noUnusedLocals": true,
"emitDecoratorMetadata": true,

View File

@@ -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"

View File

@@ -1,5 +1,5 @@
{
"lerna": "2.4.0",
"lerna": "2.11.0",
"version": "0.0.0",
"useWorkspaces": true,
"npmClient": "yarn",

View File

@@ -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"

View File

@@ -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

View File

@@ -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"
}

View 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"
}
]
}
}
}

View File

@@ -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"

View File

@@ -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 {

View File

@@ -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);
}
}

View File

@@ -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() {

View File

@@ -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();
});

View File

@@ -0,0 +1 @@
/// <reference types='@typefox/monaco-editor-core/monaco'/>

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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);
}
}

View File

@@ -0,0 +1,2 @@
export * from './languages';
export * from './utils';

View 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*.*(:|-) ?(&amp;\\w+)?(\\{[^}\"']*|\\([^)\"']*)?$"),
decreaseIndentPattern: new RegExp("^\\s+\\}$")
}
};
export const YAML_TM_GRAMMAR = require('../../data/yaml.tmLanguage.json');

View File

@@ -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 });

View File

@@ -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

View File

@@ -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"

View File

@@ -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",

View File

@@ -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();
});

View File

@@ -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);
}
}

View File

@@ -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);
})
});

View File

@@ -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);
}
}

View File

@@ -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);
})
});

View File

@@ -1,6 +1,7 @@
{
"compilerOptions": {
"strict": true,
"skipLibCheck": true,
"experimentalDecorators": true,
"noUnusedLocals": true,
"emitDecoratorMetadata": true,

View File

@@ -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"

View File

@@ -1,5 +1,5 @@
{
"lerna": "2.4.0",
"lerna": "2.11.0",
"version": "0.0.0",
"useWorkspaces": true,
"npmClient": "yarn",

View File

@@ -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

View File

@@ -1,5 +1,5 @@
{
"lerna": "2.4.0",
"lerna": "2.11.0",
"version": "0.0.1",
"useWorkspaces": true,
"npmClient": "yarn",

View File

@@ -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"

View File

@@ -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",

View File

@@ -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');

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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[];
}

View File

@@ -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();
}
};
}
}

View File

@@ -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);
})
});

View File

@@ -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);
})
});

View File

@@ -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();
});

View File

@@ -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'
];

View File

@@ -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