diff --git a/packages/aura-language-server/package.json b/packages/aura-language-server/package.json index 7e091571..1ed5cc51 100644 --- a/packages/aura-language-server/package.json +++ b/packages/aura-language-server/package.json @@ -82,7 +82,7 @@ "@types/node": "^20.0.0", "@types/shelljs": "^0.8.15", "eslint": "^8.57.0", - "glob": "^7.2.3", + "glob": "^11.0.3", "jest": "^29.7.0", "jest-extended": "^0.11.5", "mock-fs": "^5.5.0", @@ -90,4 +90,4 @@ "ts-jest": "^29.2.6", "typescript": "5.0.4" } -} +} \ No newline at end of file diff --git a/packages/aura-language-server/src/__tests__/package-dependencies.test.ts b/packages/aura-language-server/src/__tests__/package-dependencies.test.ts index 6afc16e3..ef52b783 100644 --- a/packages/aura-language-server/src/__tests__/package-dependencies.test.ts +++ b/packages/aura-language-server/src/__tests__/package-dependencies.test.ts @@ -1,6 +1,6 @@ import path from 'path'; import fs from 'fs'; -import glob from 'glob'; +import { globSync } from 'glob'; // These unit tests check that specified dependencies in package.json do not use // ^ or ~ in the version range, either because those packages do not use semver @@ -28,7 +28,7 @@ if (fs.existsSync(monorepoConfigPath)) { const monorepoConfig = readJsonFile(monorepoConfigPath); if (monorepoConfig.packages && Array.isArray(monorepoConfig.packages)) { monorepoConfig.packages.forEach((packageGlob: string) => { - const matches = glob.sync(packageGlob, { + const matches = globSync(packageGlob, { cwd: monorepoRootPath, }); matches.forEach((match) => { diff --git a/packages/aura-language-server/src/tern/bin/tern b/packages/aura-language-server/src/tern/bin/tern index e5069a00..c6cce1be 100755 --- a/packages/aura-language-server/src/tern/bin/tern +++ b/packages/aura-language-server/src/tern/bin/tern @@ -5,253 +5,318 @@ // Reads .tern-project files, wraps a Tern server in an HTTP wrapper // so that editor plug-ins can talk to it. -var tern = require("../lib/tern"); -var fs = require("fs"), path = require("path"), url = require("url"); -var glob = require("glob"), minimatch = require("minimatch"); -var resolveFrom = require("resolve-from"); +let tern = require('../lib/tern'); +let fs = require('fs'), + path = require('path'), + url = require('url'); +let { globSync } = require('glob'), + minimatch = require('minimatch'); +let resolveFrom = require('resolve-from'); -var projectFileName = ".tern-project", portFileName = ".tern-port"; -var maxIdleTime = 6e4 * 5; // Shut down after five minutes of inactivity +let projectFileName = '.tern-project', + portFileName = '.tern-port'; +let maxIdleTime = 6e4 * 5; // Shut down after five minutes of inactivity -var persistent = process.argv.indexOf("--persistent") > -1; -var stripCRs = process.argv.indexOf("--strip-crs") > -1; -var disableLoadingLocal = process.argv.indexOf("--disable-loading-local") > -1; -var verbose = process.argv.indexOf("--verbose") > -1; -var debug = verbose || process.argv.indexOf("--debug") > -1; -var noPortFile = process.argv.indexOf("--no-port-file") > -1; -var host = "127.0.0.1"; -var hostArg = process.argv.indexOf("--host"); +let persistent = process.argv.indexOf('--persistent') > -1; +let stripCRs = process.argv.indexOf('--strip-crs') > -1; +let disableLoadingLocal = process.argv.indexOf('--disable-loading-local') > -1; +let verbose = process.argv.indexOf('--verbose') > -1; +let debug = verbose || process.argv.indexOf('--debug') > -1; +let noPortFile = process.argv.indexOf('--no-port-file') > -1; +let host = '127.0.0.1'; +let hostArg = process.argv.indexOf('--host'); if (hostArg > -1) { - host = process.argv[hostArg + 1]; - if (host == "null" || host == "any") host = null; + host = process.argv[hostArg + 1]; + if (host == 'null' || host == 'any') { + host = null; + } } -var port = 0; -var portArg = process.argv.indexOf("--port"); +let port = 0; +let portArg = process.argv.indexOf('--port'); if (portArg > -1) { - port = Number(process.argv[portArg + 1]); - if (isNaN(port)) port = 0; + port = Number(process.argv[portArg + 1]); + if (isNaN(port)) { + port = 0; + } } -var ignoreStdin = process.argv.indexOf("--ignore-stdin") > -1; +let ignoreStdin = process.argv.indexOf('--ignore-stdin') > -1; function findProjectDir() { - var dir = process.cwd(); - for (;;) { - try { - if (fs.statSync(path.resolve(dir, projectFileName)).isFile()) return dir; - } catch(e) {} - var shorter = path.dirname(dir); - if (shorter == dir) return null; - dir = shorter; - } + let dir = process.cwd(); + for (;;) { + try { + if (fs.statSync(path.resolve(dir, projectFileName)).isFile()) { + return dir; + } + } catch (e) {} + let shorter = path.dirname(dir); + if (shorter == dir) { + return null; + } + dir = shorter; + } } -var defaultConfig = { - libs: [], - loadEagerly: false, - plugins: {doc_comment: true}, - ecmaScript: true, - ecmaVersion: 9, - dependencyBudget: tern.defaultOptions.dependencyBudget +let defaultConfig = { + libs: [], + loadEagerly: false, + plugins: { doc_comment: true }, + ecmaScript: true, + ecmaVersion: 9, + dependencyBudget: tern.defaultOptions.dependencyBudget, }; -var homeDir = process.env.HOME || process.env.USERPROFILE; -if (homeDir && fs.existsSync(path.resolve(homeDir, ".tern-config"))) - defaultConfig = readProjectFile(path.resolve(homeDir, ".tern-config")); +let homeDir = process.env.HOME || process.env.USERPROFILE; +if (homeDir && fs.existsSync(path.resolve(homeDir, '.tern-config'))) { + defaultConfig = readProjectFile(path.resolve(homeDir, '.tern-config')); +} function readJSON(fileName) { - var file = fs.readFileSync(fileName, "utf8"); - try { - return JSON.parse(file); - } catch (e) { - console.error("Bad JSON in " + fileName + ": " + e.message); - process.exit(1); - } + let file = fs.readFileSync(fileName, 'utf8'); + try { + return JSON.parse(file); + } catch (e) { + console.error('Bad JSON in ' + fileName + ': ' + e.message); + process.exit(1); + } } function readProjectFile(fileName) { - var data = readJSON(fileName), name; - for (var option in defaultConfig) { - if (!data.hasOwnProperty(option)) - data[option] = defaultConfig[option]; - else if (option == "plugins") - for (name in defaultConfig.plugins) - if (!Object.prototype.hasOwnProperty.call(data.plugins, name)) - data.plugins[name] = defaultConfig.plugins[name]; - } - return data; + let data = readJSON(fileName), + name; + for (let option in defaultConfig) { + if (!data.hasOwnProperty(option)) { + data[option] = defaultConfig[option]; + } else if (option == 'plugins') { + for (name in defaultConfig.plugins) { + if (!Object.prototype.hasOwnProperty.call(data.plugins, name)) { + data.plugins[name] = defaultConfig.plugins[name]; + } + } + } + } + return data; } function findFile(file, projectDir, fallbackDir) { - var local = path.resolve(projectDir, file); - if (!disableLoadingLocal && fs.existsSync(local)) return local; - var shared = path.resolve(fallbackDir, file); - if (fs.existsSync(shared)) return shared; + let local = path.resolve(projectDir, file); + if (!disableLoadingLocal && fs.existsSync(local)) { + return local; + } + let shared = path.resolve(fallbackDir, file); + if (fs.existsSync(shared)) { + return shared; + } } -var distDir = path.resolve(__dirname, ".."); +let distDir = path.resolve(__dirname, '..'); function findDefs(projectDir, config) { - var defs = [], src = config.libs.slice(); - if (config.ecmaScript && src.indexOf("ecmascript") == -1) - src.unshift("ecmascript"); - for (var i = 0; i < src.length; ++i) { - var file = src[i]; - if (!/\.json$/.test(file)) file = file + ".json"; - var found = findFile(file, projectDir, path.resolve(distDir, "defs")) - || resolveFrom(projectDir, "tern-" + src[i]); - if (!found) { - try { - found = require.resolve("tern-" + src[i]); - } catch (e) { - process.stderr.write("Failed to find library " + src[i] + ".\n"); - continue; - } + let defs = [], + src = config.libs.slice(); + if (config.ecmaScript && src.indexOf('ecmascript') == -1) { + src.unshift('ecmascript'); } - if (found) defs.push(readJSON(found)); - } - return defs; + for (let i = 0; i < src.length; ++i) { + let file = src[i]; + if (!/\.json$/.test(file)) { + file = file + '.json'; + } + let found = findFile(file, projectDir, path.resolve(distDir, 'defs')) || resolveFrom(projectDir, 'tern-' + src[i]); + if (!found) { + try { + found = require.resolve('tern-' + src[i]); + } catch (e) { + process.stderr.write('Failed to find library ' + src[i] + '.\n'); + continue; + } + } + if (found) { + defs.push(readJSON(found)); + } + } + return defs; } function loadPlugins(projectDir, config) { - var plugins = config.plugins, options = {}; - for (var plugin in plugins) { - var val = plugins[plugin]; - if (!val) continue; - var found = findFile(plugin + ".js", projectDir, path.resolve(distDir, "plugin")) - || resolveFrom(projectDir, "tern-" + plugin); - if (!found) { - try { - found = require.resolve("tern-" + plugin); - } catch (e) { - process.stderr.write("Failed to find plugin " + plugin + ".\n"); - continue; - } + let plugins = config.plugins, + options = {}; + for (let plugin in plugins) { + let val = plugins[plugin]; + if (!val) { + continue; + } + let found = findFile(plugin + '.js', projectDir, path.resolve(distDir, 'plugin')) || resolveFrom(projectDir, 'tern-' + plugin); + if (!found) { + try { + found = require.resolve('tern-' + plugin); + } catch (e) { + process.stderr.write('Failed to find plugin ' + plugin + '.\n'); + continue; + } + } + let mod = require(found); + if (mod.hasOwnProperty('initialize')) { + mod.initialize(distDir); + } + options[path.basename(plugin)] = val; } - var mod = require(found); - if (mod.hasOwnProperty("initialize")) mod.initialize(distDir); - options[path.basename(plugin)] = val; - } - return options; + return options; } -var projectDir = findProjectDir(); +let projectDir = findProjectDir(); if (projectDir) { - var config = readProjectFile(path.resolve(projectDir, projectFileName)); + var config = readProjectFile(path.resolve(projectDir, projectFileName)); } else { - projectDir = process.cwd(); - var config = defaultConfig; + projectDir = process.cwd(); + var config = defaultConfig; } -var httpServer = require("http").createServer(function(req, resp) { - clearTimeout(shutdown); - shutdown = setTimeout(doShutdown, maxIdleTime); +let httpServer = require('http').createServer(function (req, resp) { + clearTimeout(shutdown); + shutdown = setTimeout(doShutdown, maxIdleTime); - var target = url.parse(req.url, true); - if (target.pathname == "/ping") return respondSimple(resp, 200, "pong"); - if (target.pathname != "/") return respondSimple(resp, 404, "No service at " + target.pathname); + let target = url.parse(req.url, true); + if (target.pathname == '/ping') { + return respondSimple(resp, 200, 'pong'); + } + if (target.pathname != '/') { + return respondSimple(resp, 404, 'No service at ' + target.pathname); + } - if (req.method == "POST") { - var body = ""; - req.on("data", function (data) { body += data; }); - req.on("end", function() { respond(resp, body); }); - } else if (req.method == "GET") { - if (target.query.doc) respond(resp, target.query.doc); - else respondSimple(resp, 400, "Missing query document"); - } + if (req.method == 'POST') { + let body = ''; + req.on('data', function (data) { + body += data; + }); + req.on('end', function () { + respond(resp, body); + }); + } else if (req.method == 'GET') { + if (target.query.doc) { + respond(resp, target.query.doc); + } else { + respondSimple(resp, 400, 'Missing query document'); + } + } }); -var server = startServer(projectDir, config, httpServer); +let server = startServer(projectDir, config, httpServer); function startServer(dir, config, httpServer) { - var defs = findDefs(dir, config); - var plugins = loadPlugins(dir, config); - var server = new tern.Server({ - getFile: function(name, c) { - if (config.dontLoad && config.dontLoad.some(function(pat) {return minimatch(name, pat)})) - c(null, ""); - else - fs.readFile(path.resolve(dir, name), "utf8", c); - }, - normalizeFilename: function(name) { - var pt = path.resolve(dir, name); - try { pt = fs.realPathSync(path.resolve(dir, name), true) } - catch(e) {} - return path.relative(dir, pt); - }, - async: true, - defs: defs, - plugins: plugins, - debug: debug, - projectDir: dir, - ecmaVersion: config.ecmaVersion, - dependencyBudget: config.dependencyBudget, - stripCRs: stripCRs, - parent: {httpServer: httpServer} - }); - - if (config.loadEagerly) config.loadEagerly.forEach(function(pat) { - glob.sync(pat, { cwd: dir }).forEach(function(file) { - server.addFile(file); + let defs = findDefs(dir, config); + let plugins = loadPlugins(dir, config); + let server = new tern.Server({ + getFile: function (name, c) { + if ( + config.dontLoad && + config.dontLoad.some(function (pat) { + return minimatch(name, pat); + }) + ) { + c(null, ''); + } else { + fs.readFile(path.resolve(dir, name), 'utf8', c); + } + }, + normalizeFilename: function (name) { + let pt = path.resolve(dir, name); + try { + pt = fs.realPathSync(path.resolve(dir, name), true); + } catch (e) {} + return path.relative(dir, pt); + }, + async: true, + defs: defs, + plugins: plugins, + debug: debug, + projectDir: dir, + ecmaVersion: config.ecmaVersion, + dependencyBudget: config.dependencyBudget, + stripCRs: stripCRs, + parent: { httpServer: httpServer }, }); - }); - server.flush(function(){}); - return server; + + if (config.loadEagerly) { + config.loadEagerly.forEach(function (pat) { + globSync(pat, { cwd: dir }).forEach(function (file) { + server.addFile(file); + }); + }); + } + server.flush(function () {}); + return server; } function doShutdown() { - if (persistent) return; - console.log("Was idle for " + Math.floor(maxIdleTime / 6e4) + " minutes. Shutting down."); - process.exit(); + if (persistent) { + return; + } + console.log('Was idle for ' + Math.floor(maxIdleTime / 6e4) + ' minutes. Shutting down.'); + process.exit(); } var shutdown = setTimeout(doShutdown, maxIdleTime); if (!ignoreStdin) { - process.stdin.on("end", function() { - console.log("stdin pipe closed, killing tern"); - process.exit(); - }); - process.stdin.resume(); + process.stdin.on('end', function () { + console.log('stdin pipe closed, killing tern'); + process.exit(); + }); + process.stdin.resume(); } -httpServer.listen(port, host, function() { - var port = httpServer.address().port; - if (!noPortFile) { - var portFile = path.resolve(projectDir, portFileName); - fs.writeFileSync(portFile, String(port), "utf8"); - process.on("exit", function() { - try { - var cur = Number(fs.readFileSync(portFile, "utf8")); - if (cur == port) fs.unlinkSync(portFile); - } catch(e) {} +httpServer.listen(port, host, function () { + let port = httpServer.address().port; + if (!noPortFile) { + let portFile = path.resolve(projectDir, portFileName); + fs.writeFileSync(portFile, String(port), 'utf8'); + process.on('exit', function () { + try { + let cur = Number(fs.readFileSync(portFile, 'utf8')); + if (cur == port) { + fs.unlinkSync(portFile); + } + } catch (e) {} + }); + } + process.on('SIGINT', function () { + console.log('SIGINT trapped, killing tern'); + process.exit(); }); - } - process.on("SIGINT", function() { - console.log("SIGINT trapped, killing tern"); - process.exit(); - }); - process.on("SIGTERM", function() { - console.log("SIGTERM trapped, killing tern"); - process.exit(); - }); - console.log("Listening on port " + port); + process.on('SIGTERM', function () { + console.log('SIGTERM trapped, killing tern'); + process.exit(); + }); + console.log('Listening on port ' + port); }); function respondSimple(resp, status, text) { - resp.writeHead(status, {"content-type": "text/plain; charset=utf-8"}); - resp.end(text); - if (verbose) console.log("Response: " + status + " " + text); + resp.writeHead(status, { 'content-type': 'text/plain; charset=utf-8' }); + resp.end(text); + if (verbose) { + console.log('Response: ' + status + ' ' + text); + } } function respond(resp, doc) { - try { var doc = JSON.parse(doc); } - catch(e) { return respondSimple(resp, 400, "JSON parse error: " + e.message); } - if (verbose) console.log("Request: " + JSON.stringify(doc, null, 2)); + try { + var doc = JSON.parse(doc); + } catch (e) { + return respondSimple(resp, 400, 'JSON parse error: ' + e.message); + } + if (verbose) { + console.log('Request: ' + JSON.stringify(doc, null, 2)); + } - server.request(doc, function(err, data) { - if (err) return respondSimple(resp, 400, String(err)); - resp.writeHead(200, {"content-type": "application/json; charset=utf-8"}); - if (verbose) console.log("Response: " + JSON.stringify(data, null, 2) + "\n"); - resp.end(JSON.stringify(data)); - }); + server.request(doc, function (err, data) { + if (err) { + return respondSimple(resp, 400, String(err)); + } + resp.writeHead(200, { 'content-type': 'application/json; charset=utf-8' }); + if (verbose) { + console.log('Response: ' + JSON.stringify(data, null, 2) + '\n'); + } + resp.end(JSON.stringify(data)); + }); } diff --git a/packages/aura-language-server/src/tern/package.json b/packages/aura-language-server/src/tern/package.json index ae8766a8..461d5525 100644 --- a/packages/aura-language-server/src/tern/package.json +++ b/packages/aura-language-server/src/tern/package.json @@ -18,12 +18,12 @@ "acorn-walk": "^6.0.0", "acorn-loose": "^6.0.0", "enhanced-resolve": "^2.2.2", - "glob": "^7.1.1", "minimatch": "^3.0.3", "resolve-from": "2.0.0" }, "devDependencies": { - "codemirror": "git://github.com/codemirror/CodeMirror.git" + "codemirror": "git://github.com/codemirror/CodeMirror.git", + "glob": "^11.0.3" }, "blint": { "allowedGlobals": [ @@ -37,4 +37,4 @@ "process" ] } -} +} \ No newline at end of file diff --git a/packages/lightning-lsp-common/package.json b/packages/lightning-lsp-common/package.json index 6968983e..9fabd837 100644 --- a/packages/lightning-lsp-common/package.json +++ b/packages/lightning-lsp-common/package.json @@ -70,7 +70,6 @@ "dependencies": { "deep-equal": "^1.0.1", "ejs": "^3.1.10", - "glob": "^8.0.0", "jsonc-parser": "^2.2.1", "vscode-languageserver": "^5.2.1", "vscode-uri": "^2.1.2" @@ -84,6 +83,7 @@ "@types/mock-fs": "^4.13.4", "@types/tmp": "^0.1.0", "find-node-modules": "^1.0.4", + "glob": "^11.0.3", "jest": "^29.7.0", "jest-extended": "^0.11.5", "lwc": "2.37.3", @@ -93,4 +93,4 @@ "ts-jest": "^29.2.6", "typescript": "5.0.4" } -} +} \ No newline at end of file diff --git a/packages/lightning-lsp-common/src/__tests__/package-dependencies.test.ts b/packages/lightning-lsp-common/src/__tests__/package-dependencies.test.ts index 58eb96c8..e9825255 100644 --- a/packages/lightning-lsp-common/src/__tests__/package-dependencies.test.ts +++ b/packages/lightning-lsp-common/src/__tests__/package-dependencies.test.ts @@ -1,6 +1,6 @@ import path from 'path'; import fs from 'fs'; -import glob from 'glob'; +import { globSync } from 'glob'; // These unit tests check that specified dependencies in package.json do not use // ^ or ~ in the version range, either because those packages do not use semver @@ -28,7 +28,7 @@ if (fs.existsSync(monorepoConfigPath)) { const monorepoConfig = readJsonFile(monorepoConfigPath); if (monorepoConfig.packages && Array.isArray(monorepoConfig.packages)) { monorepoConfig.packages.forEach((packageGlob: string) => { - const matches = glob.sync(packageGlob, { + const matches = globSync(packageGlob, { cwd: monorepoRootPath, }); matches.forEach((match) => { diff --git a/packages/lightning-lsp-common/src/base-context.ts b/packages/lightning-lsp-common/src/base-context.ts index 2858f347..e8de2c79 100644 --- a/packages/lightning-lsp-common/src/base-context.ts +++ b/packages/lightning-lsp-common/src/base-context.ts @@ -365,59 +365,44 @@ export abstract class BaseWorkspaceContext { } private async writeTypings(): Promise { + let typingsDir: string; + switch (this.type) { case 'SFDX': - await this.writeSfdxTypings(); + typingsDir = path.join(this.workspaceRoots[0], '.sfdx', 'typings', 'lwc'); break; - case 'CORE_ALL': case 'CORE_PARTIAL': - await this.writeCoreTypings(); + typingsDir = path.join(this.workspaceRoots[0], '..', '.vscode', 'typings', 'lwc'); break; - default: - // No typings needed for other workspace types + case 'CORE_ALL': + typingsDir = path.join(this.workspaceRoots[0], '.vscode', 'typings', 'lwc'); break; } - } - - private async writeSfdxTypings(): Promise { - const typingsPath = path.join(this.workspaceRoots[0], '.sfdx', 'typings', 'lwc'); - await this.createTypingsFiles(typingsPath); - } - - private async writeCoreTypings(): Promise { - const coreDir = this.type === 'CORE_ALL' ? this.workspaceRoots[0] : path.dirname(this.workspaceRoots[0]); - const typingsPath = path.join(coreDir, '.vscode', 'typings', 'lwc'); - await this.createTypingsFiles(typingsPath); - } - private async createTypingsFiles(typingsPath: string): Promise { - // Create the typings directory - fs.mkdirSync(typingsPath, { recursive: true }); - - // Create basic typings files - const engineTypings = `declare module '@salesforce/resourceUrl/*' { - var url: string; - export = url; -}`; - - const ldsTypings = `declare module '@salesforce/label/*' { - var label: string; - export = label; -}`; - - const apexTypings = `declare module '@salesforce/apex/*' { - var apex: any; - export = apex; -}`; - - const schemaTypings = `declare module '@salesforce/schema' { - export * from './schema'; -}`; - - await fs.promises.writeFile(path.join(typingsPath, 'engine.d.ts'), engineTypings); - await fs.promises.writeFile(path.join(typingsPath, 'lds.d.ts'), ldsTypings); - await fs.promises.writeFile(path.join(typingsPath, 'apex.d.ts'), apexTypings); - await fs.promises.writeFile(path.join(typingsPath, 'schema.d.ts'), schemaTypings); + // TODO should we just be copying every file in this directory rather than hardcoding? + if (typingsDir) { + // copy typings to typingsDir + const resourceTypingsDir = utils.getSfdxResource('typings'); + await fs.promises.mkdir(typingsDir, { recursive: true }); + try { + await fs.promises.copyFile(path.join(resourceTypingsDir, 'lds.d.ts'), path.join(typingsDir, 'lds.d.ts')); + } catch (ignore) { + // ignore + } + try { + await fs.promises.copyFile(path.join(resourceTypingsDir, 'messageservice.d.ts'), path.join(typingsDir, 'messageservice.d.ts')); + } catch (ignore) { + // ignore + } + const dirs = await fs.promises.readdir(path.join(resourceTypingsDir, 'copied')); + for (const file of dirs) { + try { + await fs.promises.copyFile(path.join(resourceTypingsDir, 'copied', file), path.join(typingsDir, file)); + } catch (ignore) { + // ignore + } + } + } } private async getSettings(): Promise { diff --git a/packages/lwc-language-server/package.json b/packages/lwc-language-server/package.json index 18ae5cb1..055f1899 100644 --- a/packages/lwc-language-server/package.json +++ b/packages/lwc-language-server/package.json @@ -114,11 +114,11 @@ "@types/normalize-path": "^3.0.2", "@types/xml2js": "^0.4.14", "babel-types": "^6.26.0", - "glob": "^7.2.3", + "glob": "^11.0.3", "jest": "^29.7.0", "jest-extended": "^0.11.5", "prettier": "^2.0.5", "ts-jest": "^29.2.6", "typescript": "5.0.4" } -} +} \ No newline at end of file diff --git a/packages/lwc-language-server/src/__tests__/package-dependencies.test.ts b/packages/lwc-language-server/src/__tests__/package-dependencies.test.ts index 6afc16e3..ef52b783 100644 --- a/packages/lwc-language-server/src/__tests__/package-dependencies.test.ts +++ b/packages/lwc-language-server/src/__tests__/package-dependencies.test.ts @@ -1,6 +1,6 @@ import path from 'path'; import fs from 'fs'; -import glob from 'glob'; +import { globSync } from 'glob'; // These unit tests check that specified dependencies in package.json do not use // ^ or ~ in the version range, either because those packages do not use semver @@ -28,7 +28,7 @@ if (fs.existsSync(monorepoConfigPath)) { const monorepoConfig = readJsonFile(monorepoConfigPath); if (monorepoConfig.packages && Array.isArray(monorepoConfig.packages)) { monorepoConfig.packages.forEach((packageGlob: string) => { - const matches = glob.sync(packageGlob, { + const matches = globSync(packageGlob, { cwd: monorepoRootPath, }); matches.forEach((match) => { diff --git a/yarn.lock b/yarn.lock index 116880a5..bd863d4a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6310,7 +6310,7 @@ glob@^11.0.3: package-json-from-dist "^1.0.0" path-scurry "^2.0.0" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.2.3: +glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -6322,17 +6322,6 @@ glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.2.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -11653,9 +11642,9 @@ trim-right@^1.0.1: integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== ts-jest@^29.2.6: - version "29.4.3" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.3.tgz#23264489bebb5b3e2c7966dbf6788e960f244f7c" - integrity sha512-KTWbK2Wot8VXargsLoxhSoEQ9OyMdzQXQoUDeIulWu2Tf7gghuBHeg+agZqVLdTOHhQHVKAaeuctBDRkhWE7hg== + version "29.4.4" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.4.tgz#fc6fefe28652ed81b8e1381ef8391901d9f81417" + integrity sha512-ccVcRABct5ZELCT5U0+DZwkXMCcOCLi2doHRrKy1nK/s7J7bch6TzJMsrY09WxgUUIP/ITfmcDS8D2yl63rnXw== dependencies: bs-logger "^0.2.6" fast-json-stable-stringify "^2.1.0"