emmet serverless

This commit is contained in:
Martin Aeschlimann 2020-07-09 17:23:06 +02:00
parent 33b51eb210
commit 9b1773e013
11 changed files with 162 additions and 96 deletions

View file

@ -0,0 +1,22 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
//@ts-check
'use strict';
const withBrowserDefaults
= require('../shared.webpack.config').browser;
module.exports = withBrowserDefaults({
context: __dirname,
entry: {
extension: './src/browser/emmetBrowserMain.ts'
},
output: {
filename: 'emmetBrowserMain.js'
}
});

View file

@ -7,14 +7,20 @@
'use strict'; 'use strict';
const path = require('path');
const withDefaults = require('../shared.webpack.config'); const withDefaults = require('../shared.webpack.config');
module.exports = withDefaults({ module.exports = withDefaults({
context: __dirname, context: __dirname,
entry: { entry: {
extension: './src/extension.ts', extension: './src/node/emmetNodeMain.ts',
},
output: {
path: path.join(__dirname, 'dist', 'node'),
filename: 'emmetNodeMain.js'
}, },
externals: { externals: {
'vscode-emmet-helper': 'commonjs vscode-emmet-helper', 'vscode-emmet-helper2': 'commonjs vscode-emmet-helper2',
}, },
}); });

View file

@ -24,7 +24,8 @@
"onLanguage:scss", "onLanguage:scss",
"onLanguage:less" "onLanguage:less"
], ],
"main": "./out/extension", "main": "./out/node/emmetNodeMain",
"browser": "./dist/browser/emmetBrowserMain",
"contributes": { "contributes": {
"configuration": { "configuration": {
"type": "object", "type": "object",
@ -50,7 +51,7 @@
"emmet.includeLanguages": { "emmet.includeLanguages": {
"type": "object", "type": "object",
"additionalProperties": { "additionalProperties": {
"type": "string" "type": "string"
}, },
"default": {}, "default": {},
"markdownDescription": "%emmetIncludeLanguages%" "markdownDescription": "%emmetIncludeLanguages%"
@ -346,96 +347,74 @@
"menus": { "menus": {
"commandPalette": [ "commandPalette": [
{ {
"command": "editor.emmet.action.wrapIndividualLinesWithAbbreviation", "command": "editor.emmet.action.wrapIndividualLinesWithAbbreviation"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.wrapWithAbbreviation", "command": "editor.emmet.action.wrapWithAbbreviation"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.removeTag", "command": "editor.emmet.action.removeTag"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.updateTag", "command": "editor.emmet.action.updateTag"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.matchTag", "command": "editor.emmet.action.matchTag"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.balanceIn", "command": "editor.emmet.action.balanceIn"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.balanceOut", "command": "editor.emmet.action.balanceOut"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.prevEditPoint", "command": "editor.emmet.action.prevEditPoint"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.nextEditPoint", "command": "editor.emmet.action.nextEditPoint"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.mergeLines", "command": "editor.emmet.action.mergeLines"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.selectPrevItem", "command": "editor.emmet.action.selectPrevItem"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.selectNextItem", "command": "editor.emmet.action.selectNextItem"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.splitJoinTag", "command": "editor.emmet.action.splitJoinTag"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.toggleComment", "command": "editor.emmet.action.toggleComment"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.evaluateMathExpression", "command": "editor.emmet.action.evaluateMathExpression"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.updateImageSize", "command": "editor.emmet.action.updateImageSize",
"when": "resourceScheme =~ /^untitled$|^file$/" "when": "resourceScheme =~ /^file$/"
}, },
{ {
"command": "editor.emmet.action.incrementNumberByOneTenth", "command": "editor.emmet.action.incrementNumberByOneTenth"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.incrementNumberByOne", "command": "editor.emmet.action.incrementNumberByOne"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.incrementNumberByTen", "command": "editor.emmet.action.incrementNumberByTen"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.decrementNumberByOneTenth", "command": "editor.emmet.action.decrementNumberByOneTenth"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.decrementNumberByOne", "command": "editor.emmet.action.decrementNumberByOne"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.decrementNumberByTen", "command": "editor.emmet.action.decrementNumberByTen"
"when": "resourceScheme =~ /^untitled$|^file$/"
}, },
{ {
"command": "editor.emmet.action.reflectCSSValue", "command": "editor.emmet.action.reflectCSSValue"
"when": "resourceScheme =~ /^untitled$|^file$/"
} }
] ]
} }
@ -443,7 +422,7 @@
"scripts": { "scripts": {
"watch": "gulp watch-extension:emmet", "watch": "gulp watch-extension:emmet",
"compile": "gulp compile-extension:emmet", "compile": "gulp compile-extension:emmet",
"deps": "yarn add vscode-emmet-helper" "deps": "yarn add vscode-emmet-helper2"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^12.11.7", "@types/node": "^12.11.7",
@ -456,7 +435,7 @@
"@emmetio/html-matcher": "^0.3.3", "@emmetio/html-matcher": "^0.3.3",
"@emmetio/math-expression": "^0.1.1", "@emmetio/math-expression": "^0.1.1",
"image-size": "^0.5.2", "image-size": "^0.5.2",
"vscode-emmet-helper": "^1.2.17", "vscode-emmet-helper2": "^2.0.0-next.0",
"vscode-html-languageservice": "^3.0.3" "vscode-html-languageservice": "^3.0.3"
} }
} }

View file

@ -5,7 +5,7 @@
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { Node, HtmlNode, Rule, Property, Stylesheet } from 'EmmetNode'; import { Node, HtmlNode, Rule, Property, Stylesheet } from 'EmmetNode';
import { getEmmetHelper, getNode, getInnerRange, getMappingForIncludedLanguages, parseDocument, validate, getEmmetConfiguration, isStyleSheet, getEmmetMode, parsePartialStylesheet, isStyleAttribute, getEmbeddedCssNodeIfAny, allowedMimeTypesInScriptTag } from './util'; import { getEmmetHelper, getNode, getInnerRange, getMappingForIncludedLanguages, parseDocument, validate, getEmmetConfiguration, isStyleSheet, getEmmetMode, parsePartialStylesheet, isStyleAttribute, getEmbeddedCssNodeIfAny, allowedMimeTypesInScriptTag, toLSTextDocument } from './util';
const trimRegex = /[\u00a0]*[\d#\-\*\u2022]+\.?/; const trimRegex = /[\u00a0]*[\d#\-\*\u2022]+\.?/;
const hexColorRegex = /^#[\da-fA-F]{0,6}$/; const hexColorRegex = /^#[\da-fA-F]{0,6}$/;
@ -276,6 +276,7 @@ export function expandEmmetAbbreviation(args: any): Thenable<boolean | undefined
const helper = getEmmetHelper(); const helper = getEmmetHelper();
let getAbbreviation = (document: vscode.TextDocument, selection: vscode.Selection, position: vscode.Position, syntax: string): [vscode.Range | null, string, string] => { let getAbbreviation = (document: vscode.TextDocument, selection: vscode.Selection, position: vscode.Position, syntax: string): [vscode.Range | null, string, string] => {
position = document.validatePosition(position);
let rangeToReplace: vscode.Range = selection; let rangeToReplace: vscode.Range = selection;
let abbr = document.getText(rangeToReplace); let abbr = document.getText(rangeToReplace);
if (!rangeToReplace.isEmpty) { if (!rangeToReplace.isEmpty) {
@ -299,7 +300,7 @@ export function expandEmmetAbbreviation(args: any): Thenable<boolean | undefined
return [rangeToReplace, abbr, '']; return [rangeToReplace, abbr, ''];
} }
} }
let extractedResults = helper.extractAbbreviation(editor.document, position, false); let extractedResults = helper.extractAbbreviation(toLSTextDocument(editor.document), position, false);
if (!extractedResults) { if (!extractedResults) {
return [null, '', '']; return [null, '', ''];
} }
@ -608,7 +609,7 @@ function expandAbbreviationInRange(editor: vscode.TextEditor, expandAbbrList: Ex
/** /**
* Expands abbreviation as detailed in given input. * Expands abbreviation as detailed in given input.
*/ */
function expandAbbr(input: ExpandAbbreviationInput): string { function expandAbbr(input: ExpandAbbreviationInput): string | undefined {
const helper = getEmmetHelper(); const helper = getEmmetHelper();
const expandOptions = helper.getExpandOptions(input.syntax, getEmmetConfiguration(input.syntax), input.filter); const expandOptions = helper.getExpandOptions(input.syntax, getEmmetConfiguration(input.syntax), input.filter);

View file

@ -0,0 +1,11 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
import { activateEmmetExtension } from '../emmetCommon';
export function activate(context: vscode.ExtensionContext) {
activateEmmetExtension(context);
}

View file

@ -6,8 +6,8 @@
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { Node, Stylesheet } from 'EmmetNode'; import { Node, Stylesheet } from 'EmmetNode';
import { isValidLocationForEmmetAbbreviation, getSyntaxFromArgs } from './abbreviationActions'; import { isValidLocationForEmmetAbbreviation, getSyntaxFromArgs } from './abbreviationActions';
import { getEmmetHelper, getMappingForIncludedLanguages, parsePartialStylesheet, getEmmetConfiguration, getEmmetMode, isStyleSheet, parseDocument, getNode, allowedMimeTypesInScriptTag, trimQuotes } from './util'; import { getEmmetHelper, getMappingForIncludedLanguages, parsePartialStylesheet, getEmmetConfiguration, getEmmetMode, isStyleSheet, parseDocument, getNode, allowedMimeTypesInScriptTag, trimQuotes, toLSTextDocument } from './util';
import { getLanguageService, TextDocument, TokenType } from 'vscode-html-languageservice'; import { getLanguageService, TokenType, Range as LSRange } from 'vscode-html-languageservice';
export class DefaultCompletionItemProvider implements vscode.CompletionItemProvider { export class DefaultCompletionItemProvider implements vscode.CompletionItemProvider {
@ -50,19 +50,24 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
const mappedLanguages = getMappingForIncludedLanguages(); const mappedLanguages = getMappingForIncludedLanguages();
const isSyntaxMapped = mappedLanguages[document.languageId] ? true : false; const isSyntaxMapped = mappedLanguages[document.languageId] ? true : false;
let syntax = getEmmetMode((isSyntaxMapped ? mappedLanguages[document.languageId] : document.languageId), excludedLanguages); let emmetMode = getEmmetMode((isSyntaxMapped ? mappedLanguages[document.languageId] : document.languageId), excludedLanguages);
if (!syntax if (!emmetMode
|| emmetConfig['showExpandedAbbreviation'] === 'never' || emmetConfig['showExpandedAbbreviation'] === 'never'
|| ((isSyntaxMapped || syntax === 'jsx') && emmetConfig['showExpandedAbbreviation'] !== 'always')) { || ((isSyntaxMapped || emmetMode === 'jsx') && emmetConfig['showExpandedAbbreviation'] !== 'always')) {
return; return;
} }
let syntax = emmetMode;
const helper = getEmmetHelper(); const helper = getEmmetHelper();
let validateLocation = syntax === 'html' || syntax === 'jsx' || syntax === 'xml'; let validateLocation = syntax === 'html' || syntax === 'jsx' || syntax === 'xml';
let rootNode: Node | undefined = undefined; let rootNode: Node | undefined = undefined;
let currentNode: Node | null = null; let currentNode: Node | null = null;
const lsDoc = toLSTextDocument(document);
position = document.validatePosition(position);
if (document.languageId === 'html') { if (document.languageId === 'html') {
if (context.triggerKind === vscode.CompletionTriggerKind.TriggerForIncompleteCompletions) { if (context.triggerKind === vscode.CompletionTriggerKind.TriggerForIncompleteCompletions) {
switch (this.lastCompletionType) { switch (this.lastCompletionType) {
@ -79,7 +84,7 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
} }
if (validateLocation) { if (validateLocation) {
const lsDoc = TextDocument.create(document.uri.toString(), 'html', 0, document.getText());
const parsedLsDoc = this.htmlLS.parseHTMLDocument(lsDoc); const parsedLsDoc = this.htmlLS.parseHTMLDocument(lsDoc);
const positionOffset = document.offsetAt(position); const positionOffset = document.offsetAt(position);
const node = parsedLsDoc.findNodeAt(positionOffset); const node = parsedLsDoc.findNodeAt(positionOffset);
@ -132,7 +137,7 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
} }
} }
const extractAbbreviationResults = helper.extractAbbreviation(document, position, !isStyleSheet(syntax)); const extractAbbreviationResults = helper.extractAbbreviation(lsDoc, position, !isStyleSheet(syntax));
if (!extractAbbreviationResults || !helper.isAbbreviationValid(syntax, extractAbbreviationResults.abbreviation)) { if (!extractAbbreviationResults || !helper.isAbbreviationValid(syntax, extractAbbreviationResults.abbreviation)) {
return; return;
} }
@ -149,7 +154,7 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
if (validateLocation && !isValidLocationForEmmetAbbreviation(document, rootNode, currentNode, syntax, position, extractAbbreviationResults.abbreviationRange)) { if (validateLocation && !isValidLocationForEmmetAbbreviation(document, rootNode, currentNode, syntax, position, toRange(extractAbbreviationResults.abbreviationRange))) {
return; return;
} }
@ -174,7 +179,7 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
return; return;
} }
let result = helper.doComplete(document, position, syntax, getEmmetConfiguration(syntax!)); let result = helper.doComplete(toLSTextDocument(document), position, syntax, getEmmetConfiguration(syntax!));
// https://github.com/microsoft/vscode/issues/86941 // https://github.com/microsoft/vscode/issues/86941
if (result && result.items && result.items.length === 1) { if (result && result.items && result.items.length === 1) {
@ -207,3 +212,7 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
}); });
} }
} }
function toRange(lsRange: LSRange) {
return new vscode.Range(lsRange.start.line, lsRange.start.character, lsRange.end.line, lsRange.end.character);
}

View file

@ -18,10 +18,9 @@ import { fetchSelectItem } from './selectItem';
import { evaluateMathExpression } from './evaluateMathExpression'; import { evaluateMathExpression } from './evaluateMathExpression';
import { incrementDecrement } from './incrementDecrement'; import { incrementDecrement } from './incrementDecrement';
import { LANGUAGE_MODES, getMappingForIncludedLanguages, updateEmmetExtensionsPath } from './util'; import { LANGUAGE_MODES, getMappingForIncludedLanguages, updateEmmetExtensionsPath } from './util';
import { updateImageSize } from './updateImageSize';
import { reflectCssValue } from './reflectCssValue'; import { reflectCssValue } from './reflectCssValue';
export function activate(context: vscode.ExtensionContext) { export function activateEmmetExtension(context: vscode.ExtensionContext) {
registerCompletionProviders(context); registerCompletionProviders(context);
context.subscriptions.push(vscode.commands.registerCommand('editor.emmet.action.wrapWithAbbreviation', (args) => { context.subscriptions.push(vscode.commands.registerCommand('editor.emmet.action.wrapWithAbbreviation', (args) => {
@ -121,10 +120,6 @@ export function activate(context: vscode.ExtensionContext) {
return incrementDecrement(-10); return incrementDecrement(-10);
})); }));
context.subscriptions.push(vscode.commands.registerCommand('editor.emmet.action.updateImageSize', () => {
return updateImageSize();
}));
context.subscriptions.push(vscode.commands.registerCommand('editor.emmet.action.reflectCSSValue', () => { context.subscriptions.push(vscode.commands.registerCommand('editor.emmet.action.reflectCSSValue', () => {
return reflectCssValue(); return reflectCssValue();
})); }));

View file

@ -0,0 +1,19 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
import { homedir } from 'os';
import { activateEmmetExtension } from '../emmetCommon';
import { setHomeDir } from '../util';
export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(vscode.commands.registerCommand('editor.emmet.action.updateImageSize', () => {
return import('../updateImageSize').then(uis => uis.updateImageSize());
}));
setHomeDir(vscode.Uri.file(homedir()));
activateEmmetExtension(context);
}

View file

@ -4,9 +4,8 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { getDeepestNode, findNextWord, findPrevWord, getHtmlNode } from './util'; import { getDeepestNode, findNextWord, findPrevWord, getHtmlNode, isNumber } from './util';
import { HtmlNode } from 'EmmetNode'; import { HtmlNode } from 'EmmetNode';
import { isNumber } from 'util';
export function nextItemHTML(selectionStart: vscode.Position, selectionEnd: vscode.Position, editor: vscode.TextEditor, rootNode: HtmlNode): vscode.Selection | undefined { export function nextItemHTML(selectionStart: vscode.Position, selectionEnd: vscode.Position, editor: vscode.TextEditor, rootNode: HtmlNode): vscode.Selection | undefined {
let currentNode = getHtmlNode(editor.document, rootNode, selectionEnd, false); let currentNode = getHtmlNode(editor.document, rootNode, selectionEnd, false);
@ -209,4 +208,4 @@ function getPrevAttribute(selectionStart: vscode.Position, selectionEnd: vscode.
} }
return; return;
} }

View file

@ -8,15 +8,25 @@ import parse from '@emmetio/html-matcher';
import parseStylesheet from '@emmetio/css-parser'; import parseStylesheet from '@emmetio/css-parser';
import { Node, HtmlNode, CssToken, Property, Rule, Stylesheet } from 'EmmetNode'; import { Node, HtmlNode, CssToken, Property, Rule, Stylesheet } from 'EmmetNode';
import { DocumentStreamReader } from './bufferStream'; import { DocumentStreamReader } from './bufferStream';
import * as EmmetHelper from 'vscode-emmet-helper2';
import { TextDocument as LSTextDocument } from 'vscode-html-languageservice';
let _emmetHelper: any; let _emmetHelper: typeof EmmetHelper;
let _currentExtensionsPath: string | undefined = undefined; let _currentExtensionsPath: string | undefined = undefined;
let _homeDir: vscode.Uri | undefined;
export function setHomeDir(homeDir: vscode.Uri) {
_homeDir = homeDir;
}
export function getEmmetHelper() { export function getEmmetHelper() {
// Lazy load vscode-emmet-helper instead of importing it // Lazy load vscode-emmet-helper instead of importing it
// directly to reduce the start-up time of the extension // directly to reduce the start-up time of the extension
if (!_emmetHelper) { if (!_emmetHelper) {
_emmetHelper = require('vscode-emmet-helper'); _emmetHelper = require('vscode-emmet-helper2');
} }
updateEmmetExtensionsPath(); updateEmmetExtensionsPath();
return _emmetHelper; return _emmetHelper;
@ -32,11 +42,12 @@ export function updateEmmetExtensionsPath() {
let extensionsPath = vscode.workspace.getConfiguration('emmet')['extensionsPath']; let extensionsPath = vscode.workspace.getConfiguration('emmet')['extensionsPath'];
if (_currentExtensionsPath !== extensionsPath) { if (_currentExtensionsPath !== extensionsPath) {
_currentExtensionsPath = extensionsPath; _currentExtensionsPath = extensionsPath;
if (!vscode.workspace.workspaceFolders) { if (!vscode.workspace.workspaceFolders || vscode.workspace.workspaceFolders.length === 0) {
return; return;
} else { } else {
const rootPath = vscode.workspace.workspaceFolders[0].uri.fsPath; const rootPath = vscode.workspace.workspaceFolders[0].uri;
_emmetHelper.updateExtensionsPath(extensionsPath, rootPath).then(null, (err: string) => vscode.window.showErrorMessage(err)); const fileSystem = vscode.workspace.fs;
_emmetHelper.updateExtensionsPath(extensionsPath, fileSystem, rootPath, _homeDir).then(null, (err: string) => vscode.window.showErrorMessage(err));
} }
} }
} }
@ -628,3 +639,11 @@ export function trimQuotes(s: string) {
return s; return s;
} }
export function isNumber(obj: any): obj is number {
return typeof obj === 'number';
}
export function toLSTextDocument(doc: vscode.TextDocument): LSTextDocument {
return LSTextDocument.create(doc.uri.toString(), doc.languageId, doc.version, doc.getText());
}

View file

@ -9,10 +9,10 @@
"@emmetio/stream-reader" "^2.2.0" "@emmetio/stream-reader" "^2.2.0"
"@emmetio/stream-reader-utils" "^0.1.0" "@emmetio/stream-reader-utils" "^0.1.0"
"@emmetio/extract-abbreviation@0.1.6": "@emmetio/extract-abbreviation@^0.2.0":
version "0.1.6" version "0.2.0"
resolved "https://registry.yarnpkg.com/@emmetio/extract-abbreviation/-/extract-abbreviation-0.1.6.tgz#e4a9856c1057f0aff7d443b8536477c243abe28c" resolved "https://registry.yarnpkg.com/@emmetio/extract-abbreviation/-/extract-abbreviation-0.2.0.tgz#0afc2b40c060549b98ea7b18f426e8317df5829e"
integrity sha512-Ce3xE2JvTSEbASFbRbA1gAIcMcZWdS2yUYRaQbeM0nbOzaZrUYfa3ePtcriYRZOZmr+CkKA+zbjhvTpIOAYVcw== integrity sha512-eWIRoybKwQ0LkZw7aSULPFS+r2kp0+HdJlnw0HaE6g3AKbMNL4Ogwm2OTA9gNWZ5zdp6daOAOHFqjDqqhE5y/g==
"@emmetio/html-matcher@^0.3.3": "@emmetio/html-matcher@^0.3.3":
version "0.3.3" version "0.3.3"
@ -1233,10 +1233,10 @@ json-stringify-safe@~5.0.1:
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
jsonc-parser@^1.0.0: jsonc-parser@^2.3.0:
version "1.0.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-1.0.0.tgz#ddcc864ae708e60a7a6dd36daea00172fa8d9272" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.0.tgz#7c7fc988ee1486d35734faaaa866fadb00fa91ee"
integrity sha1-3cyGSucI5gp6bdNtrqABcvqNknI= integrity sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA==
jsonify@~0.0.0: jsonify@~0.0.0:
version "0.0.0" version "0.0.0"
@ -2469,14 +2469,15 @@ vinyl@~2.0.1:
remove-trailing-separator "^1.0.1" remove-trailing-separator "^1.0.1"
replace-ext "^1.0.0" replace-ext "^1.0.0"
vscode-emmet-helper@^1.2.17: vscode-emmet-helper2@^2.0.0-next.0:
version "1.2.17" version "2.0.0-next.0"
resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.17.tgz#f0c6bfcebc4285d081fb2618e6e5b9a08c567afa" resolved "https://registry.yarnpkg.com/vscode-emmet-helper2/-/vscode-emmet-helper2-2.0.0-next.0.tgz#86eb4c2e581a577e7eb56a51f662e72fb1c63b47"
integrity sha512-X4pzcrJ8dE7M3ArFuySF5fgipKDd/EauXkiJwtjBIVRWpVNq0tF9+lNCyuC7iDUwP3Oq7ow/TGssD3GdG96Jow== integrity sha512-ccm6Fb5dkbdEDNLIAebWwVcb8X3AXZDsACLi4KYdCxyFSMV+pOoNokBf4rsu+rSYWNe+fMqxjXZs9z0G2CxPGg==
dependencies: dependencies:
"@emmetio/extract-abbreviation" "0.1.6" "@emmetio/extract-abbreviation" "^0.2.0"
jsonc-parser "^1.0.0" jsonc-parser "^2.3.0"
vscode-languageserver-types "^3.6.0-next.1" vscode-languageserver-types "^3.15.1"
vscode-uri "^2.1.2"
vscode-html-languageservice@^3.0.3: vscode-html-languageservice@^3.0.3:
version "3.0.3" version "3.0.3"
@ -2492,10 +2493,10 @@ vscode-languageserver-types@^3.15.0-next.2:
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.2.tgz#a0601332cdaafac21931f497bb080cfb8d73f254" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.2.tgz#a0601332cdaafac21931f497bb080cfb8d73f254"
integrity sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ== integrity sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ==
vscode-languageserver-types@^3.6.0-next.1: vscode-languageserver-types@^3.15.1:
version "3.6.0-next.1" version "3.15.1"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.6.0-next.1.tgz#98e488d3f87b666b4ee1a3d89f0023e246d358f3" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de"
integrity sha512-n4G+hCgZwAhtcJSCkwJP153TLdcEBWwrIrb3Su/SpOkhmU7KjDgxaQBLA45hf+QbhB8uKQb+TVStPvbuYFHSMA== integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==
vscode-nls@^4.1.1: vscode-nls@^4.1.1:
version "4.1.1" version "4.1.1"
@ -2507,6 +2508,11 @@ vscode-uri@^2.0.3:
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.3.tgz#25e5f37f552fbee3cec7e5f80cef8469cefc6543" resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.3.tgz#25e5f37f552fbee3cec7e5f80cef8469cefc6543"
integrity sha512-4D3DI3F4uRy09WNtDGD93H9q034OHImxiIcSq664Hq1Y1AScehlP3qqZyTkX/RWxeu0MRMHGkrxYqm2qlDF/aw== integrity sha512-4D3DI3F4uRy09WNtDGD93H9q034OHImxiIcSq664Hq1Y1AScehlP3qqZyTkX/RWxeu0MRMHGkrxYqm2qlDF/aw==
vscode-uri@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c"
integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==
vscode@1.0.1: vscode@1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/vscode/-/vscode-1.0.1.tgz#3d161200615fe2af1d92ddc650751159411a513b" resolved "https://registry.yarnpkg.com/vscode/-/vscode-1.0.1.tgz#3d161200615fe2af1d92ddc650751159411a513b"