From 4e56ca96ce1de25bd3b16e90c16ebc2e791aff3c Mon Sep 17 00:00:00 2001 From: rvanasa Date: Fri, 25 Aug 2023 21:06:39 -0600 Subject: [PATCH 1/9] Misc improvements --- src/server/server.ts | 5 ++++- src/server/syntax.ts | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/server/server.ts b/src/server/server.ts index 4733da6..7974e9b 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -1060,7 +1060,10 @@ connection.onHover((event) => { } if (docNode.name === 'Prog' && !docNode.doc) { // Get doc comment at top of file - return asNode(docNode.args?.[0])?.doc; + const doc = asNode(docNode.args?.[0])?.doc; + if (doc) { + return doc; + } } return docNode.doc; } diff --git a/src/server/syntax.ts b/src/server/syntax.ts index 5d8e921..65793b1 100644 --- a/src/server/syntax.ts +++ b/src/server/syntax.ts @@ -206,10 +206,10 @@ export function findInPattern( const alias = matchNode( aliasNode, 'VarP', - (alias) => alias, + (alias: string) => alias, field.name, ); - const result = fn(alias, pat); + const result = fn(alias, aliasNode); if (result !== undefined) { return result; } From 4be87b0d865cbb9eb2d95437ef780af13a13c3be Mon Sep 17 00:00:00 2001 From: rvanasa Date: Fri, 25 Aug 2023 21:17:49 -0600 Subject: [PATCH 2/9] Misc --- src/server/navigation.ts | 1 - src/server/server.ts | 32 -------------------------------- src/server/utils.spec.ts | 5 ----- 3 files changed, 38 deletions(-) diff --git a/src/server/navigation.ts b/src/server/navigation.ts index 9eb1bb7..e55c513 100644 --- a/src/server/navigation.ts +++ b/src/server/navigation.ts @@ -107,7 +107,6 @@ export function locationFromDefinition(definition: Definition) { return location; } -// TODO: refactor to use `findInPattern()` function findNameInPattern(search: Search, pat: Node): Node | undefined { return findInPattern(pat, (name, node) => name === search.name ? node : undefined, diff --git a/src/server/server.ts b/src/server/server.ts index 7974e9b..53f6b1a 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -1352,38 +1352,6 @@ connection.onRequest(TEST_FILE_REQUEST, async (event): Promise => { } else { throw new Error(`Invalid test mode: '${mode}'`); } - // else { - // const start = Date.now(); - // const wasiResult = motoko.wasm(virtualPath, 'wasi'); - // console.log('Compile time:', Date.now() - start); - - // const WebAssembly = (global as any).WebAssembly; - // const module = await ( - // WebAssembly.compileStreaming || WebAssembly.compile - // )(wasiResult.wasm); - // const WASI = require('wasi'); - // const wasi = new WASI({}); - // const inst = new WebAssembly.Instance(module, { - // wasi_unstable: wasi.exports, - // }); - // wasi.setMemory(inst.exports.memory); - // inst.exports._start(); - - // // if (exitCode !== 0) { - // // console.log(stdout); - // // console.error(stderr); - // // console.log('Exit code:', exitCode); - // // } - // // return { - // // passed: exitCode === 0, - // // stdout, - // // stderr, - // // }; - - // console.log(Object.keys(inst.exports)); /////// - - // return { passed: true, stdout: '', stderr: '' }; - // } } catch (err) { console.error(err); return { diff --git a/src/server/utils.spec.ts b/src/server/utils.spec.ts index 78e1107..9a91dc9 100644 --- a/src/server/utils.spec.ts +++ b/src/server/utils.spec.ts @@ -2,18 +2,13 @@ import { getAbsoluteUri, getRelativeUri } from './utils'; describe('utils', () => { test('getRelativeUri', () => { - // expect(getRelativeUri('file:a/b/c', 'file:a')).toStrictEqual('..'); - // expect(getRelativeUri('file://a/b/c', 'file://a')).toStrictEqual('..'); expect(getRelativeUri('file:///a/b', 'file:///a')).toStrictEqual('..'); expect(getRelativeUri('mo:a/b', 'mo:a/b/c')).toStrictEqual('c'); expect(getRelativeUri('mo:a/b', 'mo:a/c')).toStrictEqual('c'); }); test('getAbsoluteUri', () => { expect(getAbsoluteUri('mo:a', 'b')).toStrictEqual('mo:a/b'); - // expect(getAbsoluteUri('file:a/b', '..')).toStrictEqual('file:a'); - // expect(getAbsoluteUri('file://a/b', '..')).toStrictEqual('file://a'); expect(getAbsoluteUri('file:///a/b', '..')).toStrictEqual('file:///a'); expect(getAbsoluteUri('mo:a/b', '../c')).toStrictEqual('mo:a/c'); - // expect(getAbsoluteUri('file:///a', 'mo:b')).toStrictEqual('mo:b'); }); }); From 0254c0f92a6d5ea3422ebddc6b7408980508d67a Mon Sep 17 00:00:00 2001 From: rvanasa Date: Fri, 25 Aug 2023 22:10:14 -0600 Subject: [PATCH 3/9] Add 'name' to 'Definition' when possible --- src/server/navigation.ts | 37 ++++++++++++++++++++++++------------- src/server/syntax.spec.ts | 7 +++++++ src/server/syntax.ts | 26 ++++++++++++-------------- 3 files changed, 43 insertions(+), 27 deletions(-) diff --git a/src/server/navigation.ts b/src/server/navigation.ts index e55c513..92fdd3c 100644 --- a/src/server/navigation.ts +++ b/src/server/navigation.ts @@ -13,6 +13,7 @@ interface Definition { uri: string; cursor: Node; body: Node; + name: string | undefined; } interface Search { @@ -107,9 +108,12 @@ export function locationFromDefinition(definition: Definition) { return location; } -function findNameInPattern(search: Search, pat: Node): Node | undefined { - return findInPattern(pat, (name, node) => - name === search.name ? node : undefined, +function findNameInPattern( + search: Search, + pat: Node, +): [string, Node] | undefined { + return findInPattern(pat, (name, alias, node) => + alias === search.name ? [name, node] : undefined, ); } @@ -274,18 +278,18 @@ function followImport( console.log('AST:', status.program.export.ast); return; } - const declaration = { - uri, - cursor: exportNode, - body: exportNode, - }; if (field) { return searchObject( - { uri: declaration.uri, node: declaration.body }, + { uri, node: exportNode }, { type: 'variable', name: field }, - ); // || declaration + ); } - return declaration; + return { + uri, + cursor: exportNode, + body: exportNode, + name: undefined, + }; }); } @@ -348,12 +352,13 @@ function searchDeclaration( ): Definition | undefined { return ( matchNode(dec, 'LetD', (pat: Node, body: Node) => { - const varNode = findNameInPattern(search, pat); + const [name, varNode] = findNameInPattern(search, pat) || []; return ( varNode && { uri: reference.uri, cursor: varNode, body, + name, } ); }) || @@ -363,6 +368,7 @@ function searchDeclaration( uri: reference.uri, cursor: dec, // TODO: cursor on variable name body, + name, } : undefined, ) || @@ -372,6 +378,7 @@ function searchDeclaration( uri: reference.uri, cursor: dec, // TODO: cursor on variable name body: dec, + name, } : undefined, ) @@ -390,6 +397,7 @@ function searchTypeBinding( uri: reference.uri, cursor: typ, // TODO: source location from `name` body: typ, + name, } : undefined, ) || @@ -399,6 +407,7 @@ function searchTypeBinding( uri: reference.uri, cursor: dec, // TODO: cursor on variable name body: dec, + name, } : undefined, ) @@ -429,6 +438,7 @@ function searchObject( uri: reference.uri, cursor: arg, body, + name, }, ) || matchNode(arg, 'DecField', (dec: Node) => @@ -457,12 +467,13 @@ function searchObject( }, ); if (!definition) { - const pat = findNameInPattern(search, arg); // Function parameters + const [name, pat] = findNameInPattern(search, arg) || []; // Function parameters if (pat) { definition = { uri: reference.uri, cursor: pat, body: pat, + name, }; } } diff --git a/src/server/syntax.spec.ts b/src/server/syntax.spec.ts index d216362..b73d8d0 100644 --- a/src/server/syntax.spec.ts +++ b/src/server/syntax.spec.ts @@ -100,4 +100,11 @@ describe('syntax', () => { expectFields(prog.exportFields, [undefined]); expectWithFields(prog.exportFields[0].exp, ['a', 'b']); }); + test('object pattern with alias', () => { + const prog = parse( + 'module { let { a; b = c } = { a = "a"; b = "b" }; }', + ); + expectFields(prog.exportFields, [undefined]); + expectWithFields(prog.exportFields[0].exp, ['a', 'c']); + }); }); diff --git a/src/server/syntax.ts b/src/server/syntax.ts index 65793b1..08982b9 100644 --- a/src/server/syntax.ts +++ b/src/server/syntax.ts @@ -169,8 +169,8 @@ function getFieldsFromAST(ast: AST): Field[] { const [pat, exp] = parts; if (pat) { const fields: [string, Node, Node][] = []; - findInPattern(pat, (name, pat) => { - fields.push([name, pat, exp]); + findInPattern(pat, (_name, alias, pat) => { + fields.push([alias, pat, exp]); }); return fields.map(([name, pat, exp]) => { const field = new Field(ast, fromAST(exp)); @@ -186,30 +186,28 @@ function getFieldsFromAST(ast: AST): Field[] { export function findInPattern( pat: Node, - fn: (name: string, pat: Node) => T | undefined, + fn: (name: string, alias: string, pat: Node) => T | undefined, + fieldName?: string | undefined, ): T | undefined { const matchAny = (...args: Node[]) => { for (const field of args) { - const result = findInPattern(field, fn); + const result = findInPattern(field, fn, fieldName); if (result !== undefined) { return result; } } return; }; - const match = (arg: Node) => findInPattern(arg, fn); + const match = (arg: Node) => findInPattern(arg, fn, fieldName); return ( - matchNode(pat, 'VarP', (name: string) => fn(name, pat)) || + matchNode(pat, 'VarP', (name: string) => + fn(fieldName ?? name, name, pat), + ) || matchNode(pat, 'ObjP', (...args: Node[]) => { for (const field of args) { - const aliasNode = field.args![0] as Node; - const alias = matchNode( - aliasNode, - 'VarP', - (alias: string) => alias, - field.name, - ); - const result = fn(alias, aliasNode); + const fieldName = field.name; + const fieldPat = field.args![0] as Node; + const result = findInPattern(fieldPat, fn, fieldName); if (result !== undefined) { return result; } From 1c20b9d4c0b97053735394ea617b2343779960c3 Mon Sep 17 00:00:00 2001 From: rvanasa Date: Fri, 25 Aug 2023 22:31:05 -0600 Subject: [PATCH 4/9] Improve go-to-definition for object pattern aliases --- src/server/navigation.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/server/navigation.ts b/src/server/navigation.ts index 92fdd3c..0b5ba36 100644 --- a/src/server/navigation.ts +++ b/src/server/navigation.ts @@ -150,7 +150,7 @@ export function findDefinition( if (!node) { return; } - const reference = { uri, node }; + const reference: Reference = { uri, node }; const importDefinition = followImport(context, reference); if (importDefinition) { return importDefinition; @@ -249,8 +249,10 @@ function followImport( return; } // Find the relevant field name - const field = matchNode(reference.node.parent?.parent, 'ObjP', () => - matchNode(reference.node, 'VarP', (name: string) => name), + const field = matchNode( + reference.node.parent?.parent, + 'ObjP', + () => reference.node.parent?.name, ); // Follow the module import return matchNode(importNode, 'ImportE', (path: string) => { From 8fdc2026ba8f58a1900e8bc66cc8a365d2318ae5 Mon Sep 17 00:00:00 2001 From: rvanasa Date: Fri, 25 Aug 2023 22:31:39 -0600 Subject: [PATCH 5/9] Remove commented code --- src/server/navigation.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/server/navigation.ts b/src/server/navigation.ts index 0b5ba36..1daf482 100644 --- a/src/server/navigation.ts +++ b/src/server/navigation.ts @@ -35,7 +35,6 @@ export function findMostSpecificNodeForPosition( node.end && position.line >= node.start[0] - 1 && position.line <= node.end[0] - 1 && - // position.line == node.start[0] - 1 && (position.line !== node.start[0] - 1 || position.character >= node.start[1]) && (position.line !== node.end[0] - 1 || @@ -47,9 +46,6 @@ export function findMostSpecificNodeForPosition( let nodeLines: number; let nodeChars: number; nodes.forEach((n: Node) => { - // if (ignoredAstNodes.includes(n.name)) { - // return; - // } const nLines = n.end![0] - n.start![0]; const nChars = n.end![1] - n.start![1]; if ( From 0289ad5ccb40ecf61454fe98b5e90cc928e1d5f5 Mon Sep 17 00:00:00 2001 From: rvanasa Date: Fri, 25 Aug 2023 22:34:38 -0600 Subject: [PATCH 6/9] Refactor --- src/server/navigation.ts | 4 ++-- src/server/syntax.ts | 18 +++++++----------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/server/navigation.ts b/src/server/navigation.ts index 1daf482..6d28927 100644 --- a/src/server/navigation.ts +++ b/src/server/navigation.ts @@ -108,8 +108,8 @@ function findNameInPattern( search: Search, pat: Node, ): [string, Node] | undefined { - return findInPattern(pat, (name, alias, node) => - alias === search.name ? [name, node] : undefined, + return findInPattern(pat, (name, node) => + name === search.name ? [name, node] : undefined, ); } diff --git a/src/server/syntax.ts b/src/server/syntax.ts index 08982b9..ec645f1 100644 --- a/src/server/syntax.ts +++ b/src/server/syntax.ts @@ -169,8 +169,8 @@ function getFieldsFromAST(ast: AST): Field[] { const [pat, exp] = parts; if (pat) { const fields: [string, Node, Node][] = []; - findInPattern(pat, (_name, alias, pat) => { - fields.push([alias, pat, exp]); + findInPattern(pat, (name, pat) => { + fields.push([name, pat, exp]); }); return fields.map(([name, pat, exp]) => { const field = new Field(ast, fromAST(exp)); @@ -186,28 +186,24 @@ function getFieldsFromAST(ast: AST): Field[] { export function findInPattern( pat: Node, - fn: (name: string, alias: string, pat: Node) => T | undefined, - fieldName?: string | undefined, + fn: (name: string, pat: Node) => T | undefined, ): T | undefined { const matchAny = (...args: Node[]) => { for (const field of args) { - const result = findInPattern(field, fn, fieldName); + const result = findInPattern(field, fn); if (result !== undefined) { return result; } } return; }; - const match = (arg: Node) => findInPattern(arg, fn, fieldName); + const match = (arg: Node) => findInPattern(arg, fn); return ( - matchNode(pat, 'VarP', (name: string) => - fn(fieldName ?? name, name, pat), - ) || + matchNode(pat, 'VarP', (name: string) => fn(name, pat)) || matchNode(pat, 'ObjP', (...args: Node[]) => { for (const field of args) { - const fieldName = field.name; const fieldPat = field.args![0] as Node; - const result = findInPattern(fieldPat, fn, fieldName); + const result = findInPattern(fieldPat, fn); if (result !== undefined) { return result; } From 24a58a8dc6c66d1ac3bc05f6e81a45e876efeb1b Mon Sep 17 00:00:00 2001 From: Ryan Vandersmith Date: Mon, 21 Aug 2023 19:46:40 -0600 Subject: [PATCH 7/9] Improve type checking UX (#239) * Adjust 'processQueue()' logic * Optimize main file type checking * Increase main file type checking debounce * Fix type checker sometimes using outdated file content * 0.13.11 * Refactor for clarity * Cancel checking workspace on file change --- package-lock.json | 4 ++-- package.json | 2 +- src/server/server.ts | 19 +++++++------------ 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 212e70a..5358327 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-motoko", - "version": "0.13.10", + "version": "0.13.11", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-motoko", - "version": "0.13.10", + "version": "0.13.11", "dependencies": { "@wasmer/wasi": "1.2.2", "change-case": "4.1.2", diff --git a/package.json b/package.json index c0dce71..ca6e37b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-motoko", "displayName": "Motoko", "description": "Motoko language support", - "version": "0.13.10", + "version": "0.13.11", "publisher": "dfinity-foundation", "repository": "https://github.com/dfinity/vscode-motoko", "engines": { diff --git a/src/server/server.ts b/src/server/server.ts index 53f6b1a..6709116 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -572,6 +572,7 @@ const checkQueue: string[] = []; let checkTimeout: ReturnType; function processQueue() { clearTimeout(checkTimeout); + clearTimeout(checkWorkspaceTimeout); checkTimeout = setTimeout(() => { const uri = checkQueue.shift(); if (checkQueue.length) { @@ -681,11 +682,6 @@ function checkWorkspace() { }, 1000); } -function validate(uri: string | TextDocument) { - notify(uri); - scheduleCheck(uri); -} - /** * Registers or updates the URI or document in the compiler's virtual file system. */ @@ -1382,20 +1378,19 @@ async function sendDiagnostics(params: { let validatingTimeout: ReturnType; let validatingUri: string | undefined; documents.onDidChangeContent((event) => { - if (packageConfigError) { - // notifyPackageConfigChange(true); - } const document = event.document; const { uri } = document; if (uri === validatingUri) { clearTimeout(validatingTimeout); } + notify(document); validatingUri = uri; validatingTimeout = setTimeout(() => { - validate(document); - const { astResolver } = getContext(uri); - astResolver.update(uri, true); /// TODO: also use for type checking? - }, 100); + notify(document); + scheduleCheck(document); + // const { astResolver } = getContext(uri); + // astResolver.update(uri, true); // TODO: also use for type checking? + }, 500); }); documents.onDidOpen((event) => scheduleCheck(event.document.uri)); From dfb5480ac62d14e6cfd983db5f23c35fbd974c80 Mon Sep 17 00:00:00 2001 From: Ryan Vandersmith Date: Tue, 22 Aug 2023 11:06:11 -0600 Subject: [PATCH 8/9] Add notification on Mops / Vessel package configuration error (#240) * Add notification for error in Mops / Vessel configuration * Add 'View logs' button to error message * Adjust error message detail rendering --- src/common/connectionTypes.ts | 9 +++++++++ src/extension.ts | 10 ++++++++++ src/server/server.ts | 23 +++++++++++++++-------- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/common/connectionTypes.ts b/src/common/connectionTypes.ts index 1bd9c39..a94b29c 100644 --- a/src/common/connectionTypes.ts +++ b/src/common/connectionTypes.ts @@ -36,3 +36,12 @@ export const DEPLOY_PLAYGROUND_MESSAGE = export interface NotifyDeployParams { message: string; } + +export const ERROR_MESSAGE = new NotificationType( + 'vscode-motoko/notify-error', +); + +export interface NotifyErrorParams { + message: string; + detail?: string | undefined; +} diff --git a/src/extension.ts b/src/extension.ts index efe48c6..2de05e8 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -31,6 +31,7 @@ import * as which from 'which'; import { DEPLOY_PLAYGROUND, DEPLOY_PLAYGROUND_MESSAGE, + ERROR_MESSAGE, TEST_FILE_REQUEST, TestParams, TestResult, @@ -326,6 +327,15 @@ function restartLanguageServer( serverOptions, clientOptions, ); + client.onNotification(ERROR_MESSAGE, async ({ message, detail }) => { + const item = await window.showErrorMessage( + detail ? `${message}\n${detail}` : message, + 'View logs', + ); + if (item === 'View logs') { + client.outputChannel.show(); + } + }); client.start().catch((err) => console.error(err.stack || err)); context.subscriptions.push(client); } diff --git a/src/server/server.ts b/src/server/server.ts index 6709116..fd4dbbd 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -37,6 +37,7 @@ import { URI } from 'vscode-uri'; import { DEPLOY_PLAYGROUND, DEPLOY_PLAYGROUND_MESSAGE, + ERROR_MESSAGE, TEST_FILE_REQUEST, TestResult, } from '../common/connectionTypes'; @@ -209,7 +210,6 @@ async function getPackageSources( } let loadingPackages = false; -let packageConfigError = false; let packageConfigChangeTimeout: ReturnType; function notifyPackageConfigChange(reuseCached = false) { if (!reuseCached) { @@ -218,7 +218,6 @@ function notifyPackageConfigChange(reuseCached = false) { loadingPackages = true; clearTimeout(packageConfigChangeTimeout); packageConfigChangeTimeout = setTimeout(async () => { - packageConfigError = false; try { resetContexts(); @@ -278,16 +277,23 @@ function notifyPackageConfigChange(reuseCached = false) { context.motoko.usePackage(name, path); }); } catch (err) { - packageConfigError = true; + connection.sendNotification(ERROR_MESSAGE, { + message: `Error while resolving Motoko packages:`, + detail: String(err).replace(/^Error: /, ''), + }); context.error = String(err); console.warn(err); return; } - } catch (err) { - packageConfigError = true; + } catch (err: any) { + connection.sendNotification(ERROR_MESSAGE, { + message: `Error while loading Motoko packages:`, + detail: String(err).replace(/^Error: /, ''), + }); console.error( `Error while reading packages for directory (${dir}): ${err}`, ); + return; } }), ); @@ -303,10 +309,11 @@ function notifyPackageConfigChange(reuseCached = false) { loadingPackages = false; notifyWorkspace(); // Update virtual file system notifyDfxChange(); // Reload dfx.json - } catch (err) { + } catch (err: any) { loadingPackages = false; - packageConfigError = true; - console.error(`Error while loading packages: ${err}`); + console.error( + `Error while loading packages: ${err?.message || err}`, + ); } }, 1000); } From 4bdaf679738f444e43db8e6d2c1db3c87042b857 Mon Sep 17 00:00:00 2001 From: Ryan Vandersmith Date: Fri, 25 Aug 2023 14:55:56 -0600 Subject: [PATCH 9/9] Bump formatter (#241) * Bump formatter * 0.13.12 --- package-lock.json | 18 +++++++++--------- package.json | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5358327..a6b1c9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-motoko", - "version": "0.13.11", + "version": "0.13.12", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-motoko", - "version": "0.13.11", + "version": "0.13.12", "dependencies": { "@wasmer/wasi": "1.2.2", "change-case": "4.1.2", @@ -15,7 +15,7 @@ "mnemonist": "0.39.5", "motoko": "3.6.6", "prettier": "2.8.0", - "prettier-plugin-motoko": "0.8.0", + "prettier-plugin-motoko": "0.8.1", "url-relative": "1.0.0", "vscode-languageclient": "8.0.2", "vscode-languageserver": "8.0.2", @@ -7672,9 +7672,9 @@ } }, "node_modules/prettier-plugin-motoko": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-motoko/-/prettier-plugin-motoko-0.8.0.tgz", - "integrity": "sha512-XJXjJbJ+hrjvEtfcvEcX1BMKC9iB8QH/lSEg2IlLjjTi29JyFBXVTZApjOuKPpLvju3QvZkyIMhjh85xyuVoHw==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-motoko/-/prettier-plugin-motoko-0.8.1.tgz", + "integrity": "sha512-7baOPPt8Ho/3tbj9/8faW3TGT6xQgftveoK7NPEOY97bRAOg0+mkMM0haIFzXY3U0lOhvbUZdksxxSxRqA0jog==", "dependencies": { "out-of-character": "^1.2.1" }, @@ -15036,9 +15036,9 @@ "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==" }, "prettier-plugin-motoko": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-motoko/-/prettier-plugin-motoko-0.8.0.tgz", - "integrity": "sha512-XJXjJbJ+hrjvEtfcvEcX1BMKC9iB8QH/lSEg2IlLjjTi29JyFBXVTZApjOuKPpLvju3QvZkyIMhjh85xyuVoHw==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-motoko/-/prettier-plugin-motoko-0.8.1.tgz", + "integrity": "sha512-7baOPPt8Ho/3tbj9/8faW3TGT6xQgftveoK7NPEOY97bRAOg0+mkMM0haIFzXY3U0lOhvbUZdksxxSxRqA0jog==", "requires": { "out-of-character": "^1.2.1" } diff --git a/package.json b/package.json index ca6e37b..fde882a 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-motoko", "displayName": "Motoko", "description": "Motoko language support", - "version": "0.13.11", + "version": "0.13.12", "publisher": "dfinity-foundation", "repository": "https://github.com/dfinity/vscode-motoko", "engines": { @@ -169,7 +169,7 @@ "mnemonist": "0.39.5", "motoko": "3.6.6", "prettier": "2.8.0", - "prettier-plugin-motoko": "0.8.0", + "prettier-plugin-motoko": "0.8.1", "url-relative": "1.0.0", "vscode-languageclient": "8.0.2", "vscode-languageserver": "8.0.2",