{"version":3,"sources":["browser/protocol-to-monaco-converter.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACH,UAAU,EACV,4BAA4B,EAC5B,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,QAAQ,EACX,MAAM,6BAA6B,CAAC;AAErC,qBACa,yBAAyB;IAElC,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS;IACpC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK;IACnC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS;IAC3D,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/D,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS;IAiBtG,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS;IAC1C,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ;IAC/C,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,GAAG,SAAS;IACvE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IAClE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS;IAc5G,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ;IACrD,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS;IACtC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS;IAY7E,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ;IACrD,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS;IACtC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS;IAYjD,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC3D,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS;IACxC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,SAAS;IAQnF,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc;IAapD,aAAa,CAAC,WAAW,EAAE,SAAS,GAAG,SAAS;IAChD,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE;IACrE,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,SAAS;IAQ7F,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW;IAe/D,qBAAqB,CAAC,kBAAkB,CAAC,EAAE,4BAA4B,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,GAAG,SAAS;IAO3H,oBAAoB,CAAC,kBAAkB,EAAE,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB;CAW5G","file":"../../src/browser/protocol-to-monaco-converter.d.ts","sourcesContent":["import {injectable} from 'inversify';\r\nimport {RecursivePartial} from '@tartjs/core/lib/common';\r\nimport {\r\n    Diagnostic,\r\n    DiagnosticRelatedInformation,\r\n    Location,\r\n    Position,\r\n    Range,\r\n    TextEdit\r\n} from 'vscode-languageserver-types';\r\n\r\n@injectable()\r\nexport class ProtocolToMonacoConverter {\r\n\r\n    asRange(range: undefined): undefined;\r\n    asRange(range: Range): monaco.Range;\r\n    asRange(range: Range | undefined): monaco.Range | undefined;\r\n    asRange(range: RecursivePartial<Range>): Partial<monaco.IRange>;\r\n    asRange(range: RecursivePartial<Range> | undefined): monaco.Range | Partial<monaco.IRange> | undefined;\r\n    asRange(range: RecursivePartial<Range> | undefined): monaco.Range | Partial<monaco.IRange> | undefined {\r\n        if (range === undefined) {\r\n            return undefined;\r\n        }\r\n        const start = this.asPosition(range.start);\r\n        const end = this.asPosition(range.end);\r\n        if (start instanceof monaco.Position && end instanceof monaco.Position) {\r\n            return new monaco.Range(start.lineNumber, start.column, end.lineNumber, end.column);\r\n        }\r\n        const startLineNumber = !start || start.lineNumber === undefined ? undefined : start.lineNumber;\r\n        const startColumn = !start || start.column === undefined ? undefined : start.column;\r\n        const endLineNumber = !end || end.lineNumber === undefined ? undefined : end.lineNumber;\r\n        const endColumn = !end || end.column === undefined ? undefined : end.column;\r\n        return {startLineNumber, startColumn, endLineNumber, endColumn};\r\n    }\r\n\r\n    asPosition(position: undefined): undefined;\r\n    asPosition(position: Position): monaco.Position;\r\n    asPosition(position: Position | undefined): monaco.Position | undefined;\r\n    asPosition(position: Partial<Position>): Partial<monaco.IPosition>;\r\n    asPosition(position: Partial<Position> | undefined): monaco.Position | Partial<monaco.IPosition> | undefined;\r\n    asPosition(position: Partial<Position> | undefined): monaco.Position | Partial<monaco.IPosition> | undefined {\r\n        if (position === undefined) {\r\n            return undefined;\r\n        }\r\n        const {line, character} = position;\r\n        const lineNumber = line === undefined ? undefined : line + 1;\r\n        const column = character === undefined ? undefined : character + 1;\r\n        if (lineNumber !== undefined && column !== undefined) {\r\n            return new monaco.Position(lineNumber, column);\r\n        }\r\n        return {lineNumber, column};\r\n    }\r\n\r\n    asLocation(item: Location): monaco.languages.Location;\r\n    asLocation(item: undefined): undefined;\r\n    asLocation(item: Location | undefined): monaco.languages.Location | undefined;\r\n    asLocation(item: Location | undefined): monaco.languages.Location | undefined {\r\n        if (!item) {\r\n            return undefined;\r\n        }\r\n        const uri = monaco.Uri.parse(item.uri);\r\n        const range = this.asRange(item.range)!;\r\n        return {\r\n            uri, range\r\n        };\r\n    }\r\n\r\n    asTextEdit(edit: TextEdit): monaco.languages.TextEdit;\r\n    asTextEdit(edit: undefined): undefined;\r\n    asTextEdit(edit: TextEdit | undefined): undefined;\r\n    asTextEdit(edit: TextEdit | undefined): monaco.languages.TextEdit | undefined {\r\n        if (!edit) {\r\n            return undefined;\r\n        }\r\n        const range = this.asRange(edit.range)!;\r\n        return {\r\n            range,\r\n            text: edit.newText\r\n        };\r\n    }\r\n\r\n    asTextEdits(items: TextEdit[]): monaco.languages.TextEdit[];\r\n    asTextEdits(items: undefined): undefined;\r\n    asTextEdits(items: TextEdit[] | undefined): monaco.languages.TextEdit[] | undefined;\r\n    asTextEdits(items: TextEdit[] | undefined): monaco.languages.TextEdit[] | undefined {\r\n        if (!items) {\r\n            return undefined;\r\n        }\r\n        return items.map(item => this.asTextEdit(item));\r\n    }\r\n\r\n    asSeverity(severity?: number): monaco.MarkerSeverity {\r\n        if (severity === 1) {\r\n            return monaco.MarkerSeverity.Error;\r\n        }\r\n        if (severity === 2) {\r\n            return monaco.MarkerSeverity.Warning;\r\n        }\r\n        if (severity === 3) {\r\n            return monaco.MarkerSeverity.Info;\r\n        }\r\n        return monaco.MarkerSeverity.Hint;\r\n    }\r\n\r\n    asDiagnostics(diagnostics: undefined): undefined;\r\n    asDiagnostics(diagnostics: Diagnostic[]): monaco.editor.IMarkerData[];\r\n    asDiagnostics(diagnostics: Diagnostic[] | undefined): monaco.editor.IMarkerData[] | undefined;\r\n    asDiagnostics(diagnostics: Diagnostic[] | undefined): monaco.editor.IMarkerData[] | undefined {\r\n        if (!diagnostics) {\r\n            return undefined;\r\n        }\r\n        return diagnostics.map(diagnostic => this.asDiagnostic(diagnostic));\r\n    }\r\n\r\n    asDiagnostic(diagnostic: Diagnostic): monaco.editor.IMarkerData {\r\n        return {\r\n            code: typeof diagnostic.code === 'number' ? diagnostic.code.toString() : diagnostic.code,\r\n            severity: this.asSeverity(diagnostic.severity),\r\n            message: diagnostic.message,\r\n            source: diagnostic.source,\r\n            startLineNumber: diagnostic.range.start.line + 1,\r\n            startColumn: diagnostic.range.start.character + 1,\r\n            endLineNumber: diagnostic.range.end.line + 1,\r\n            endColumn: diagnostic.range.end.character + 1,\r\n            relatedInformation: this.asRelatedInformations(diagnostic.relatedInformation),\r\n            tags: diagnostic.tags\r\n        };\r\n    }\r\n\r\n    asRelatedInformations(relatedInformation?: DiagnosticRelatedInformation[]): monaco.editor.IRelatedInformation[] | undefined {\r\n        if (!relatedInformation) {\r\n            return undefined;\r\n        }\r\n        return relatedInformation.map(item => this.asRelatedInformation(item));\r\n    }\r\n\r\n    asRelatedInformation(relatedInformation: DiagnosticRelatedInformation): monaco.editor.IRelatedInformation {\r\n        return {\r\n            resource: monaco.Uri.parse(relatedInformation.location.uri),\r\n            startLineNumber: relatedInformation.location.range.start.line + 1,\r\n            startColumn: relatedInformation.location.range.start.character + 1,\r\n            endLineNumber: relatedInformation.location.range.end.line + 1,\r\n            endColumn: relatedInformation.location.range.end.character + 1,\r\n            message: relatedInformation.message\r\n        };\r\n    }\r\n\r\n}\r\n"]}