diff options
Diffstat (limited to 'node_modules/update-browserslist-db')
| -rw-r--r-- | node_modules/update-browserslist-db/LICENSE | 20 | ||||
| -rw-r--r-- | node_modules/update-browserslist-db/README.md | 22 | ||||
| -rw-r--r-- | node_modules/update-browserslist-db/check-npm-version.js | 17 | ||||
| -rwxr-xr-x | node_modules/update-browserslist-db/cli.js | 42 | ||||
| -rw-r--r-- | node_modules/update-browserslist-db/index.d.ts | 6 | ||||
| -rw-r--r-- | node_modules/update-browserslist-db/index.js | 343 | ||||
| -rw-r--r-- | node_modules/update-browserslist-db/package.json | 40 | ||||
| -rw-r--r-- | node_modules/update-browserslist-db/utils.js | 25 |
8 files changed, 0 insertions, 515 deletions
diff --git a/node_modules/update-browserslist-db/LICENSE b/node_modules/update-browserslist-db/LICENSE deleted file mode 100644 index 377ae1be..00000000 --- a/node_modules/update-browserslist-db/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright 2022 Andrey Sitnik <andrey@sitnik.ru> and other contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/update-browserslist-db/README.md b/node_modules/update-browserslist-db/README.md deleted file mode 100644 index c4155c9e..00000000 --- a/node_modules/update-browserslist-db/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Update Browserslist DB - -<img width="120" height="120" alt="Browserslist logo by Anton Popov" - src="https://browsersl.ist/logo.svg" align="right"> - -CLI tool to update `caniuse-lite` with browsers DB -from [Browserslist](https://github.com/browserslist/browserslist/) config. - -Some queries like `last 2 versions` or `>1%` depend on actual data -from `caniuse-lite`. - -```sh -npx update-browserslist-db@latest -``` - -<a href="https://evilmartians.com/?utm_source=update-browserslist-db"> - <img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" - alt="Sponsored by Evil Martians" width="236" height="54"> -</a> - -## Docs -Read full docs **[here](https://github.com/browserslist/update-db#readme)**. diff --git a/node_modules/update-browserslist-db/check-npm-version.js b/node_modules/update-browserslist-db/check-npm-version.js deleted file mode 100644 index b06811a5..00000000 --- a/node_modules/update-browserslist-db/check-npm-version.js +++ /dev/null @@ -1,17 +0,0 @@ -let { execSync } = require('child_process') -let pico = require('picocolors') - -try { - let version = parseInt(execSync('npm -v')) - if (version <= 6) { - process.stderr.write( - pico.red( - 'Update npm or call ' + - pico.yellow('npx browserslist@latest --update-db') + - '\n' - ) - ) - process.exit(1) - } - // eslint-disable-next-line no-unused-vars -} catch (e) {} diff --git a/node_modules/update-browserslist-db/cli.js b/node_modules/update-browserslist-db/cli.js deleted file mode 100755 index 1388e94d..00000000 --- a/node_modules/update-browserslist-db/cli.js +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env node - -let { readFileSync } = require('fs') -let { join } = require('path') - -require('./check-npm-version') -let updateDb = require('./') - -const ROOT = __dirname - -function getPackage() { - return JSON.parse(readFileSync(join(ROOT, 'package.json'))) -} - -let args = process.argv.slice(2) - -let USAGE = 'Usage:\n npx update-browserslist-db\n' - -function isArg(arg) { - return args.some(i => i === arg) -} - -function error(msg) { - process.stderr.write('update-browserslist-db: ' + msg + '\n') - process.exit(1) -} - -if (isArg('--help') || isArg('-h')) { - process.stdout.write(getPackage().description + '.\n\n' + USAGE + '\n') -} else if (isArg('--version') || isArg('-v')) { - process.stdout.write('browserslist-lint ' + getPackage().version + '\n') -} else { - try { - updateDb() - } catch (e) { - if (e.name === 'BrowserslistUpdateError') { - error(e.message) - } else { - throw e - } - } -} diff --git a/node_modules/update-browserslist-db/index.d.ts b/node_modules/update-browserslist-db/index.d.ts deleted file mode 100644 index 05ef411a..00000000 --- a/node_modules/update-browserslist-db/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Run update and print output to terminal. - */ -declare function updateDb(print?: (str: string) => void): Promise<void> - -export = updateDb diff --git a/node_modules/update-browserslist-db/index.js b/node_modules/update-browserslist-db/index.js deleted file mode 100644 index f13c6e66..00000000 --- a/node_modules/update-browserslist-db/index.js +++ /dev/null @@ -1,343 +0,0 @@ -let { existsSync, readFileSync, writeFileSync } = require('fs') -let { execSync } = require('child_process') -let { join } = require('path') -let escalade = require('escalade/sync') -let pico = require('picocolors') - -const { detectEOL, detectIndent } = require('./utils') - -function BrowserslistUpdateError(message) { - this.name = 'BrowserslistUpdateError' - this.message = message - this.browserslist = true - if (Error.captureStackTrace) { - Error.captureStackTrace(this, BrowserslistUpdateError) - } -} - -BrowserslistUpdateError.prototype = Error.prototype - -// Check if HADOOP_HOME is set to determine if this is running in a Hadoop environment -const IsHadoopExists = !!process.env.HADOOP_HOME -const yarnCommand = IsHadoopExists ? 'yarnpkg' : 'yarn' - -/* c8 ignore next 3 */ -function defaultPrint(str) { - process.stdout.write(str) -} - -function detectLockfile() { - let packageDir = escalade('.', (dir, names) => { - return names.indexOf('package.json') !== -1 ? dir : '' - }) - - if (!packageDir) { - throw new BrowserslistUpdateError( - 'Cannot find package.json. ' + - 'Is this the right directory to run `npx update-browserslist-db` in?' - ) - } - - let lockfileNpm = join(packageDir, 'package-lock.json') - let lockfileShrinkwrap = join(packageDir, 'npm-shrinkwrap.json') - let lockfileYarn = join(packageDir, 'yarn.lock') - let lockfilePnpm = join(packageDir, 'pnpm-lock.yaml') - let lockfileBun = join(packageDir, 'bun.lockb') - - if (existsSync(lockfilePnpm)) { - return { file: lockfilePnpm, mode: 'pnpm' } - } else if (existsSync(lockfileBun)) { - return { file: lockfileBun, mode: 'bun' } - } else if (existsSync(lockfileNpm)) { - return { file: lockfileNpm, mode: 'npm' } - } else if (existsSync(lockfileYarn)) { - let lock = { file: lockfileYarn, mode: 'yarn' } - lock.content = readFileSync(lock.file).toString() - lock.version = /# yarn lockfile v1/.test(lock.content) ? 1 : 2 - return lock - } else if (existsSync(lockfileShrinkwrap)) { - return { file: lockfileShrinkwrap, mode: 'npm' } - } - throw new BrowserslistUpdateError( - 'No lockfile found. Run "npm install", "yarn install" or "pnpm install"' - ) -} - -function getLatestInfo(lock) { - if (lock.mode === 'yarn') { - if (lock.version === 1) { - return JSON.parse( - execSync(yarnCommand + ' info caniuse-lite --json').toString() - ).data - } else { - return JSON.parse( - execSync(yarnCommand + ' npm info caniuse-lite --json').toString() - ) - } - } - if (lock.mode === 'pnpm') { - return JSON.parse(execSync('pnpm info caniuse-lite --json').toString()) - } - if (lock.mode === 'bun') { - // TO-DO: No 'bun info' yet. Created issue: https://github.com/oven-sh/bun/issues/12280 - return JSON.parse(execSync(' npm info caniuse-lite --json').toString()) - } - - return JSON.parse(execSync('npm show caniuse-lite --json').toString()) -} - -function getBrowsers() { - let browserslist = require('browserslist') - return browserslist().reduce((result, entry) => { - if (!result[entry[0]]) { - result[entry[0]] = [] - } - result[entry[0]].push(entry[1]) - return result - }, {}) -} - -function diffBrowsers(old, current) { - let browsers = Object.keys(old).concat( - Object.keys(current).filter(browser => old[browser] === undefined) - ) - return browsers - .map(browser => { - let oldVersions = old[browser] || [] - let currentVersions = current[browser] || [] - let common = oldVersions.filter(v => currentVersions.includes(v)) - let added = currentVersions.filter(v => !common.includes(v)) - let removed = oldVersions.filter(v => !common.includes(v)) - return removed - .map(v => pico.red('- ' + browser + ' ' + v)) - .concat(added.map(v => pico.green('+ ' + browser + ' ' + v))) - }) - .reduce((result, array) => result.concat(array), []) - .join('\n') -} - -function updateNpmLockfile(lock, latest) { - let metadata = { latest, versions: [] } - let content = deletePackage(JSON.parse(lock.content), metadata) - metadata.content = JSON.stringify(content, null, detectIndent(lock.content)) - return metadata -} - -function deletePackage(node, metadata) { - if (node.dependencies) { - if (node.dependencies['caniuse-lite']) { - let version = node.dependencies['caniuse-lite'].version - metadata.versions[version] = true - delete node.dependencies['caniuse-lite'] - } - for (let i in node.dependencies) { - node.dependencies[i] = deletePackage(node.dependencies[i], metadata) - } - } - if (node.packages) { - for (let path in node.packages) { - if (path.endsWith('/caniuse-lite')) { - metadata.versions[node.packages[path].version] = true - delete node.packages[path] - } - } - } - return node -} - -let yarnVersionRe = /version "(.*?)"/ - -function updateYarnLockfile(lock, latest) { - let blocks = lock.content.split(/(\n{2,})/).map(block => { - return block.split('\n') - }) - let versions = {} - blocks.forEach(lines => { - if (lines[0].indexOf('caniuse-lite@') !== -1) { - let match = yarnVersionRe.exec(lines[1]) - versions[match[1]] = true - if (match[1] !== latest.version) { - lines[1] = lines[1].replace( - /version "[^"]+"/, - 'version "' + latest.version + '"' - ) - lines[2] = lines[2].replace( - /resolved "[^"]+"/, - 'resolved "' + latest.dist.tarball + '"' - ) - if (lines.length === 4) { - lines[3] = latest.dist.integrity - ? lines[3].replace( - /integrity .+/, - 'integrity ' + latest.dist.integrity - ) - : '' - } - } - } - }) - let content = blocks.map(lines => lines.join('\n')).join('') - return { content, versions } -} - -function updateLockfile(lock, latest) { - if (!lock.content) lock.content = readFileSync(lock.file).toString() - - let updatedLockFile - if (lock.mode === 'yarn') { - updatedLockFile = updateYarnLockfile(lock, latest) - } else { - updatedLockFile = updateNpmLockfile(lock, latest) - } - updatedLockFile.content = updatedLockFile.content.replace( - /\n/g, - detectEOL(lock.content) - ) - return updatedLockFile -} - -function updatePackageManually(print, lock, latest) { - let lockfileData = updateLockfile(lock, latest) - let caniuseVersions = Object.keys(lockfileData.versions).sort() - if (caniuseVersions.length === 1 && caniuseVersions[0] === latest.version) { - print( - 'Installed version: ' + - pico.bold(pico.green(caniuseVersions[0])) + - '\n' + - pico.bold(pico.green('caniuse-lite is up to date')) + - '\n' - ) - return - } - - if (caniuseVersions.length === 0) { - caniuseVersions[0] = 'none' - } - print( - 'Installed version' + - (caniuseVersions.length === 1 ? ': ' : 's: ') + - pico.bold(pico.red(caniuseVersions.join(', '))) + - '\n' + - 'Removing old caniuse-lite from lock file\n' - ) - writeFileSync(lock.file, lockfileData.content) - - let install = - lock.mode === 'yarn' ? yarnCommand + ' add -W' : lock.mode + ' install' - print( - 'Installing new caniuse-lite version\n' + - pico.yellow('$ ' + install + ' caniuse-lite') + - '\n' - ) - try { - execSync(install + ' caniuse-lite') - } catch (e) /* c8 ignore start */ { - print( - pico.red( - '\n' + - e.stack + - '\n\n' + - 'Problem with `' + - install + - ' caniuse-lite` call. ' + - 'Run it manually.\n' - ) - ) - process.exit(1) - } /* c8 ignore end */ - - let del = - lock.mode === 'yarn' ? yarnCommand + ' remove -W' : lock.mode + ' uninstall' - print( - 'Cleaning package.json dependencies from caniuse-lite\n' + - pico.yellow('$ ' + del + ' caniuse-lite') + - '\n' - ) - execSync(del + ' caniuse-lite') -} - -function updateWith(print, cmd) { - print('Updating caniuse-lite version\n' + pico.yellow('$ ' + cmd) + '\n') - try { - execSync(cmd) - } catch (e) /* c8 ignore start */ { - print(pico.red(e.stdout.toString())) - print( - pico.red( - '\n' + - e.stack + - '\n\n' + - 'Problem with `' + - cmd + - '` call. ' + - 'Run it manually.\n' - ) - ) - process.exit(1) - } /* c8 ignore end */ -} - -module.exports = function updateDB(print = defaultPrint) { - let lock = detectLockfile() - let latest = getLatestInfo(lock) - - let listError - let oldList - try { - oldList = getBrowsers() - } catch (e) { - listError = e - } - - print('Latest version: ' + pico.bold(pico.green(latest.version)) + '\n') - - if (lock.mode === 'yarn' && lock.version !== 1) { - updateWith(print, yarnCommand + ' up -R caniuse-lite') - } else if (lock.mode === 'pnpm') { - updateWith(print, 'pnpm up caniuse-lite') - } else if (lock.mode === 'bun') { - updateWith(print, 'bun update caniuse-lite') - } else { - updatePackageManually(print, lock, latest) - } - - print('caniuse-lite has been successfully updated\n') - - let newList - if (!listError) { - try { - newList = getBrowsers() - } catch (e) /* c8 ignore start */ { - listError = e - } /* c8 ignore end */ - } - - if (listError) { - if (listError.message.includes("Cannot find module 'browserslist'")) { - print( - pico.gray( - 'Install `browserslist` to your direct dependencies ' + - 'to see target browser changes\n' - ) - ) - } else { - print( - pico.red( - '\n' + - listError.stack + - '\n\n' + - 'Problem with browser list retrieval.\n' + - 'Target browser changes won’t be shown.\n' - ) - ) - } - } else { - let changes = diffBrowsers(oldList, newList) - if (changes) { - print('\nTarget browser changes:\n') - print(changes + '\n') - } else { - print('\n' + pico.green('No target browser changes') + '\n') - } - } -} diff --git a/node_modules/update-browserslist-db/package.json b/node_modules/update-browserslist-db/package.json deleted file mode 100644 index 6a577f78..00000000 --- a/node_modules/update-browserslist-db/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "update-browserslist-db", - "version": "1.1.0", - "description": "CLI tool to update caniuse-lite to refresh target browsers from Browserslist config", - "keywords": [ - "caniuse", - "browsers", - "target" - ], - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "author": "Andrey Sitnik <andrey@sitnik.ru>", - "license": "MIT", - "repository": "browserslist/update-db", - "types": "./index.d.ts", - "exports": { - ".": "./index.js", - "./package.json": "./package.json" - }, - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - }, - "bin": "cli.js" -} diff --git a/node_modules/update-browserslist-db/utils.js b/node_modules/update-browserslist-db/utils.js deleted file mode 100644 index c63b278c..00000000 --- a/node_modules/update-browserslist-db/utils.js +++ /dev/null @@ -1,25 +0,0 @@ -const { EOL } = require('os') - -const getFirstRegexpMatchOrDefault = (text, regexp, defaultValue) => { - regexp.lastIndex = 0 // https://stackoverflow.com/a/11477448/4536543 - let match = regexp.exec(text) - if (match !== null) { - return match[1] - } else { - return defaultValue - } -} - -const DEFAULT_INDENT = ' ' -const INDENT_REGEXP = /^([ \t]+)[^\s]/m - -module.exports.detectIndent = text => - getFirstRegexpMatchOrDefault(text, INDENT_REGEXP, DEFAULT_INDENT) -module.exports.DEFAULT_INDENT = DEFAULT_INDENT - -const DEFAULT_EOL = EOL -const EOL_REGEXP = /(\r\n|\n|\r)/g - -module.exports.detectEOL = text => - getFirstRegexpMatchOrDefault(text, EOL_REGEXP, DEFAULT_EOL) -module.exports.DEFAULT_EOL = DEFAULT_EOL |
