From f33900367846b86bbd02360fe185ee8211a207c4 Mon Sep 17 00:00:00 2001 From: James Birtles Date: Thu, 11 Jul 2019 20:58:19 +0100 Subject: [PATCH] update deps --- package.json | 16 ++-- src/modules.d.ts | 139 ---------------------------- src/plugins/SveltePlugin.ts | 47 +++++----- src/plugins/svelte/sveltePackage.ts | 3 +- src/utils.ts | 6 +- yarn.lock | 97 ++++++++++++------- 6 files changed, 102 insertions(+), 206 deletions(-) delete mode 100644 src/modules.d.ts diff --git a/package.json b/package.json index 22858cd..bb9b48a 100644 --- a/package.json +++ b/package.json @@ -43,18 +43,20 @@ }, "dependencies": { "cosmiconfig": "^4.0.0", + "estree-walker": "^0.6.1", "lodash": "^4.17.10", - "prettier": "1.17.0", - "prettier-plugin-svelte": "0.5.1", + "magic-string": "^0.25.3", + "prettier": "1.18.2", + "prettier-plugin-svelte": "0.7.0", "sinon": "^4.5.0", "source-map": "^0.7.3", - "svelte": "3.2.0", - "typescript": "3.4.5", - "vscode-css-languageservice": "3.0.13", + "svelte": "3.6.7", + "typescript": "3.5.3", + "vscode-css-languageservice": "4.0.2", "vscode-emmet-helper": "1.2.15", - "vscode-html-languageservice": "2.1.12", + "vscode-html-languageservice": "3.0.2", "vscode-languageserver": "5.2.1", "vscode-languageserver-types": "3.14.0", - "vscode-uri": "1.0.6" + "vscode-uri": "2.0.3" } } diff --git a/src/modules.d.ts b/src/modules.d.ts deleted file mode 100644 index 600bf8e..0000000 --- a/src/modules.d.ts +++ /dev/null @@ -1,139 +0,0 @@ -declare module 'svelte/compiler' { - export type SourceMap = any; - - export interface CodeMap { - code: string; - map?: SourceMap | string; - } - - export type PreprocessorOutput = CodeMap | void | Promise; - - export interface PreprocessOptions { - markup?: (options: { content: string; filename?: string }) => PreprocessorOutput; - style?: Preprocessor; - script?: Preprocessor; - filename?: string; - } - - export type Preprocessor = ( - options: { - content: string; - attributes: Record; - filename?: string; - }, - ) => PreprocessorOutput; - - export interface Processed { - toString(): string; - } - - export function preprocess(source: string, config: PreprocessOptions): Promise; - - export interface Warning { - start?: { line: number; column: number; character: number }; - end?: { line: number; column: number; character: number }; - pos?: number; - message: string; - code: string; - filename?: string; - frame?: string; - toString: () => string; - } - - export interface CustomElementOptions { - tag?: string; - props?: string[]; - } - - export type ModuleFormat = 'es' | 'amd' | 'cjs' | 'iife' | 'umd' | 'eval'; - - export class CompileError extends Error { - frame: string; - loc?: { line: number; column: number }; - end?: { line: number; column: number }; - pos: number; - filename: string; - } - - export interface CompileOptions { - format?: ModuleFormat; - name?: string; - filename?: string; - generate?: 'dom' | 'ssr' | false; - globals?: ((id: string) => string) | object; - amd?: { - id?: string; - }; - - outputFilename?: string; - cssOutputFilename?: string; - - dev?: boolean; - immutable?: boolean; - shared?: boolean | string; - cascade?: boolean; - hydratable?: boolean; - legacy?: boolean; - customElement?: CustomElementOptions | true; - css?: boolean; - store?: boolean; - - onerror?: (error: CompileError) => void; - onwarn?: (warning: Warning) => void; - } - - export function compile(source: string, config: CompileOptions): any; - - export interface Node { - start: number; - end: number; - type: string; - [propName: string]: any; - } - - export interface Parsed { - hash: number; - html: Node; - css: Node; - js: Node; - errors: CompileError[]; - } - - export interface ParserOptions { - filename?: string; - bind?: boolean; - } - - export function parse(template: string, options?: ParserOptions): Parsed; - - export class Stylesheet { - source: string; - parsed: Parsed; - cascade: boolean; - filename: string; - dev: boolean; - - hasStyles: boolean; - id: string; - - // children: (Rule | Atrule)[]; - keyframes: Map; - - nodesWithCssClass: Set; - - constructor( - source: string, - parsed: Parsed, - filename: string, - cascade: boolean, - dev: boolean, - ); - } - - export function validate( - parsed: Parsed, - source: string, - stylesheet: Stylesheet, - options: CompileOptions, - ): void; -} diff --git a/src/plugins/SveltePlugin.ts b/src/plugins/SveltePlugin.ts index 2a05c2d..c34afb1 100644 --- a/src/plugins/SveltePlugin.ts +++ b/src/plugins/SveltePlugin.ts @@ -14,11 +14,12 @@ import { } from '../api'; import { SvelteDocument } from '../lib/documents/SvelteDocument'; import { RawSourceMap, RawIndexMap, SourceMapConsumer } from 'source-map'; -import { PreprocessOptions, CompileOptions, Warning } from 'svelte/compiler'; +import { CompileOptions, Warning } from 'svelte/types/compiler/interfaces'; import { importSvelte, getSveltePackageInfo } from './svelte/sveltePackage'; +import { PreprocessorGroup } from 'svelte/types/compiler/preprocess'; interface SvelteConfig extends CompileOptions { - preprocess?: PreprocessOptions; + preprocess?: PreprocessorGroup; } const DEFAULT_OPTIONS: CompileOptions = { @@ -47,10 +48,12 @@ export class SveltePlugin implements DiagnosticsProvider, FormattingProvider { let source = document.getText(); const config = await this.loadConfig(document.getFilePath()!); - const svelte = importSvelte(document.getFilePath()!) as any; + const svelte = importSvelte(document.getFilePath()!); const preprocessor = makePreprocessor(document as SvelteDocument, config.preprocess); - source = (await svelte.preprocess(source, preprocessor, {filename: document.getFilePath()})).toString(); + source = (await svelte.preprocess(source, preprocessor, { + filename: document.getFilePath()!, + })).toString(); preprocessor.transpiledDocument.setText(source); let diagnostics: Diagnostic[]; @@ -58,17 +61,19 @@ export class SveltePlugin implements DiagnosticsProvider, FormattingProvider { delete config.preprocess; const res = svelte.compile(source, config); - diagnostics = ((res.stats.warnings || res.warnings || []) as Warning[]).map(warning => { - const start = warning.start || { line: 1, column: 0 }; - const end = warning.end || start; - return { - range: Range.create(start.line - 1, start.column, end.line - 1, end.column), - message: warning.message, - severity: DiagnosticSeverity.Warning, - source: 'svelte', - code: warning.code, - }; - }); + diagnostics = (((res.stats as any).warnings || res.warnings || []) as Warning[]).map( + warning => { + const start = warning.start || { line: 1, column: 0 }; + const end = warning.end || start; + return { + range: Range.create(start.line - 1, start.column, end.line - 1, end.column), + message: warning.message, + severity: DiagnosticSeverity.Warning, + source: 'svelte', + code: warning.code, + }; + }, + ); } catch (err) { const start = err.start || { line: 1, column: 0 }; const end = err.end || start; @@ -120,7 +125,7 @@ export class SveltePlugin implements DiagnosticsProvider, FormattingProvider { } } -interface Preprocessor extends PreprocessOptions { +interface Preprocessor extends PreprocessorGroup { fragments: { source: Fragment; transpiled: Fragment; @@ -130,14 +135,14 @@ interface Preprocessor extends PreprocessOptions { transpiledDocument: SvelteDocument; } -function makePreprocessor(document: SvelteDocument, preprocessors: PreprocessOptions = {}) { +function makePreprocessor(document: SvelteDocument, preprocessors: PreprocessorGroup = {}) { const preprocessor: Preprocessor = { fragments: [], transpiledDocument: new SvelteDocument(document.getURL(), document.getText()), }; if (preprocessors.script) { - preprocessor.script = async args => { + preprocessor.script = (async (args: any) => { const res = await preprocessors.script!(args); if (res && res.map) { preprocessor.fragments.push({ @@ -148,11 +153,11 @@ function makePreprocessor(document: SvelteDocument, preprocessors: PreprocessOpt }); } return res; - }; + }) as any; } if (preprocessors.style) { - preprocessor.style = async args => { + preprocessor.style = (async (args: any) => { const res = await preprocessors.style!(args); if (res && res.map) { preprocessor.fragments.push({ @@ -163,7 +168,7 @@ function makePreprocessor(document: SvelteDocument, preprocessors: PreprocessOpt }); } return res; - }; + }) as any; } return preprocessor; diff --git a/src/plugins/svelte/sveltePackage.ts b/src/plugins/svelte/sveltePackage.ts index 2d1f126..5a08098 100644 --- a/src/plugins/svelte/sveltePackage.ts +++ b/src/plugins/svelte/sveltePackage.ts @@ -1,4 +1,5 @@ import { dirname, resolve } from 'path'; +import * as svelte from 'svelte/compiler'; export function getSveltePackageInfo(fromPath: string) { const packageJSONPath = require.resolve('svelte/package.json', { @@ -18,7 +19,7 @@ export function getSveltePackageInfo(fromPath: string) { }; } -export function importSvelte(fromPath: string) { +export function importSvelte(fromPath: string): typeof svelte { const pkg = getSveltePackageInfo(fromPath); let main = pkg.path; diff --git a/src/utils.ts b/src/utils.ts index 0ae44ae..4ff9594 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,11 +1,11 @@ -import URL from 'vscode-uri'; +import { URI } from 'vscode-uri'; export function clamp(num: number, min: number, max: number): number { return Math.max(min, Math.min(max, num)); } export function urlToPath(stringUrl: string): string | null { - const url = URL.parse(stringUrl); + const url = URI.parse(stringUrl); if (url.scheme !== 'file') { return null; } @@ -13,7 +13,7 @@ export function urlToPath(stringUrl: string): string | null { } export function pathToUrl(path: string) { - return URL.file(path).toString(); + return URI.file(path).toString(); } export function flatten(arr: T[][]): T[] { diff --git a/yarn.lock b/yarn.lock index 7bbbed5..506119a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -188,6 +188,11 @@ esprima@^4.0.0: resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -296,6 +301,13 @@ lolex@^2.2.0, lolex@^2.3.2: resolved "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz#113001d56bfc7e02d56e36291cc5c413d1aa0733" integrity sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q== +magic-string@^0.25.3: + version "0.25.3" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz#34b8d2a2c7fec9d9bdf9929a3fd81d271ef35be9" + integrity sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA== + dependencies: + sourcemap-codec "^1.4.4" + make-error@^1.1.1: version "1.3.5" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" @@ -395,17 +407,17 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" -prettier-plugin-svelte@0.5.1: - version "0.5.1" - resolved "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-0.5.1.tgz#f5e25ee40f01eee7d1207c4a1d6c8e68bc0c455f" - integrity sha512-jVfONo45FrDJ1jy2R0mqAtXGlgi2fLNW2Zo+BGWFV7q/gUbXkJovz8ISK+QCPRXkk55uM8LTXq9ovrX+Ix2J1w== +prettier-plugin-svelte@0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-0.7.0.tgz#5ac0b9f194e0450c88ff1e167cbf3b32d2642df2" + integrity sha512-SuZSeMh48rx42kCFEpI/xE1XgjxQcS3r22Yo7jIhBYRhwbAa8laNxiIHsfeWWkX8BdyELkEayaTQp4ricckwTQ== dependencies: tslib "^1.9.3" -prettier@1.17.0: - version "1.17.0" - resolved "https://registry.npmjs.org/prettier/-/prettier-1.17.0.tgz#53b303676eed22cc14a9f0cec09b477b3026c008" - integrity sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw== +prettier@1.18.2: + version "1.18.2" + resolved "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" + integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== require-from-string@^2.0.1: version "2.0.2" @@ -465,6 +477,11 @@ source-map@^0.6.0: resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sourcemap-codec@^1.4.4: + version "1.4.6" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9" + integrity sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -484,10 +501,10 @@ supports-color@^5.1.0: dependencies: has-flag "^3.0.0" -svelte@3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/svelte/-/svelte-3.2.0.tgz#92e4208178ccd9ecfd7ca931a9c38e64434f0f73" - integrity sha512-i/FSWUcqVw9JBo9bY69/ZI89WCCpyhdWjvAroOroI4qnQboh0WGlgjnFOEKOTvlv1XONd8cVpRGbOYYE3Ec6TQ== +svelte@3.6.7: + version "3.6.7" + resolved "https://registry.npmjs.org/svelte/-/svelte-3.6.7.tgz#20e814b79aac4009d4bc1ecf0c9287a6bf7e96fb" + integrity sha512-9HzhPxWNLi+ZBhxL3HJ8jwwu+u+XfHtVF3uEJ2m8/JOdnaTC9D2qiEwOncgI7z/pN+VumgKQtZoHtvYCW6fHqg== ts-node@^7.0.1: version "7.0.1" @@ -513,18 +530,18 @@ type-detect@4.0.8, type-detect@^4.0.5: resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -typescript@3.4.5: - version "3.4.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz#2d2618d10bb566572b8d7aad5180d84257d70a99" - integrity sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw== +typescript@3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" + integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== -vscode-css-languageservice@3.0.13: - version "3.0.13" - resolved "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-3.0.13.tgz#1788735b65fde54181ea458e6a52cc2bd6dd9126" - integrity sha512-RWkO/c/A7iXhHEy3OuEqkCqavDjpD4NF2Ca8vjai+ZtEYNeHrm1ybTnBYLP4Ft1uXvvaaVtYA9HrDjD6+CUONg== +vscode-css-languageservice@4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-4.0.2.tgz#7496e538b0c151feac16d5888cc0b1b104f4c736" + integrity sha512-pTnfXbsME3pl+yDfhUp/mtvPyIJk0Le4zqJxDn56s9GY9LqY0RmkSEh0oHH6D0HXR3Ni6wKosIaqu8a2G0+jdw== dependencies: - vscode-languageserver-types "^3.13.0" - vscode-nls "^4.0.0" + vscode-languageserver-types "^3.15.0-next.2" + vscode-nls "^4.1.1" vscode-emmet-helper@1.2.15: version "1.2.15" @@ -535,14 +552,14 @@ vscode-emmet-helper@1.2.15: jsonc-parser "^1.0.0" vscode-languageserver-types "^3.6.0-next.1" -vscode-html-languageservice@2.1.12: - version "2.1.12" - resolved "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-2.1.12.tgz#b4f9e23cac6fea74d4c9825fb4a4ef9bf313785e" - integrity sha512-mIb5VMXM5jI97HzCk2eadI1K//rCEZXte0wBqA7PGXsyJH4KTyJUaYk9MR+mbfpUl2vMi3HZw9GUOLGYLc6l5w== +vscode-html-languageservice@3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-3.0.2.tgz#1fb9f1bf25094ad10c5b64931083d841ce6e6e0c" + integrity sha512-MP9al7nk1SqQwW4GdDy6Ec3UU1GKy0Wf4pzo3nQ5lgdScb2pajV7iyXZIGJk7jQbifkZWnG0jB7CKecTNFynJw== dependencies: - vscode-languageserver-types "^3.13.0" - vscode-nls "^4.0.0" - vscode-uri "^1.0.6" + vscode-languageserver-types "^3.15.0-next.2" + vscode-nls "^4.1.1" + vscode-uri "^2.0.1" vscode-jsonrpc@^4.0.0: version "4.0.0" @@ -557,11 +574,16 @@ vscode-languageserver-protocol@3.14.1: vscode-jsonrpc "^4.0.0" vscode-languageserver-types "3.14.0" -vscode-languageserver-types@3.14.0, vscode-languageserver-types@^3.13.0, vscode-languageserver-types@^3.6.0-next.1: +vscode-languageserver-types@3.14.0, vscode-languageserver-types@^3.6.0-next.1: version "3.14.0" resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz#d3b5952246d30e5241592b6dde8280e03942e743" integrity sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A== +vscode-languageserver-types@^3.15.0-next.2: + version "3.15.0-next.2" + resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.2.tgz#a0601332cdaafac21931f497bb080cfb8d73f254" + integrity sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ== + vscode-languageserver@5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz#0d2feddd33f92aadf5da32450df498d52f6f14eb" @@ -570,12 +592,17 @@ vscode-languageserver@5.2.1: vscode-languageserver-protocol "3.14.1" vscode-uri "^1.0.6" -vscode-nls@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.0.tgz#d9b4afb9477c2101517d6a6aac22f4d9ff066dda" - integrity sha512-zKsFWVzL1wlCezgaI3XiN42IT8DIPM1Qr+G+RBhiU3U0bJCdC8pPELakRCtuVT4wF3gBZjBrUDQ8mowL7hmgwA== +vscode-nls@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.1.tgz#f9916b64e4947b20322defb1e676a495861f133c" + integrity sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A== + +vscode-uri@2.0.3, vscode-uri@^2.0.1: + version "2.0.3" + resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.0.3.tgz#25e5f37f552fbee3cec7e5f80cef8469cefc6543" + integrity sha512-4D3DI3F4uRy09WNtDGD93H9q034OHImxiIcSq664Hq1Y1AScehlP3qqZyTkX/RWxeu0MRMHGkrxYqm2qlDF/aw== -vscode-uri@1.0.6, vscode-uri@^1.0.6: +vscode-uri@^1.0.6: version "1.0.6" resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.6.tgz#6b8f141b0bbc44ad7b07e94f82f168ac7608ad4d" integrity sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww==