20230730
This commit is contained in:
parent
c2fed67fe3
commit
2974b866c5
2616 changed files with 331928 additions and 47 deletions
66
index.html
66
index.html
|
@ -1,36 +1,29 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<head>
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="og:site_name" content="Limbo">
|
||||||
|
<meta name="og:title" content="Limbo">
|
||||||
|
<meta name="og:description" content="A space between.">
|
||||||
|
<meta name="og:type" content="website">
|
||||||
|
<meta name="og:image" content="assets/branding/limboicon.svg">
|
||||||
|
<meta name="theme-color" content="#8bd5ca">
|
||||||
|
<!--<link rel = "icon" href = "assets/branding/limboicon.svg">-->
|
||||||
|
<title>Ouroboros</title>
|
||||||
|
<link rel="stylesheet" href="mybulma/css/mystyles.css">
|
||||||
<style>
|
<style>
|
||||||
.ascii-art {
|
.ascii-art {
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
}
|
}
|
||||||
body {
|
|
||||||
background-color: #24273a;
|
|
||||||
color: #cad3f5;
|
|
||||||
}
|
|
||||||
a:link {
|
|
||||||
color: #8bd5ca;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:visited {
|
|
||||||
color: #8aadf4;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
color: #91d7e3;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:active {
|
|
||||||
color: #7dc4e4;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<center>
|
<section class="section">
|
||||||
<!--<h1>Welcome to Ouroboros!</h1>-->
|
<div class="container">
|
||||||
<br>
|
<center>
|
||||||
<div class="ascii-art">
|
<div class="ascii-art"><a href="https://ouroboros.group">
|
||||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣄⣀⠀⠀⠀⠀⠀⠀⠀
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣄⣀⠀⠀⠀⠀⠀⠀⠀
|
||||||
⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⡶⢿⣟⡛⣿⢉⣿⠛⢿⣯⡈⠙⣿⣦⡀⠀⠀⠀⠀
|
⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⡶⢿⣟⡛⣿⢉⣿⠛⢿⣯⡈⠙⣿⣦⡀⠀⠀⠀⠀
|
||||||
⠀⠀⠀⠀⠀⠀⣠⡾⠻⣧⣬⣿⣿⣿⣿⣿⡟⠉⣠⣾⣿⠿⠿⠿⢿⣿⣦⠀⠀⠀
|
⠀⠀⠀⠀⠀⠀⣠⡾⠻⣧⣬⣿⣿⣿⣿⣿⡟⠉⣠⣾⣿⠿⠿⠿⢿⣿⣦⠀⠀⠀
|
||||||
|
@ -46,18 +39,9 @@
|
||||||
⠀⠀⠀⠀⠀⠈⠻⣯⣤⣿⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⣷⣴⡿⠋⠀⠀⠀⠀⠀
|
⠀⠀⠀⠀⠀⠈⠻⣯⣤⣿⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⣷⣴⡿⠋⠀⠀⠀⠀⠀
|
||||||
⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠾⣧⣼⣟⣉⣿⣉⣻⣧⡿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀
|
⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠾⣧⣼⣟⣉⣿⣉⣻⣧⡿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀
|
||||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
</div>
|
</a></div>
|
||||||
<br>
|
</center>
|
||||||
<p>brain genuinely not working with me so instead of thinking of a design, im just gonna write the links down for now:</p>
|
</div>
|
||||||
<br>
|
</section>
|
||||||
<a href="https://git.ouroboros.group">ForgeJo</a>
|
</body>
|
||||||
<br>
|
</html>
|
||||||
<a href="https://ouroboros.gay">Ouroboros.Gay - Fediverse</a>
|
|
||||||
<br>
|
|
||||||
<a href="https://ak.ouroboros.gay">Ouroboros.Gay - Fediverse (Akkoma Version)</a>
|
|
||||||
<br>
|
|
||||||
<a href="https://up.ouroboros.group">Uptime Kuma</a>
|
|
||||||
<br>
|
|
||||||
<a href="https://limepot.xyz">limepot.xyz - Personal Website</a>
|
|
||||||
</center>
|
|
||||||
</body>
|
|
3415
mybulma/css/mystyles.css
Normal file
3415
mybulma/css/mystyles.css
Normal file
File diff suppressed because it is too large
Load diff
3
mybulma/node_modules/.bin/color-support
generated
vendored
Normal file
3
mybulma/node_modules/.bin/color-support
generated
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
var colorSupport = require('./')({alwaysReturn: true })
|
||||||
|
console.log(JSON.stringify(colorSupport, null, 2))
|
68
mybulma/node_modules/.bin/mkdirp
generated
vendored
Normal file
68
mybulma/node_modules/.bin/mkdirp
generated
vendored
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const usage = () => `
|
||||||
|
usage: mkdirp [DIR1,DIR2..] {OPTIONS}
|
||||||
|
|
||||||
|
Create each supplied directory including any necessary parent directories
|
||||||
|
that don't yet exist.
|
||||||
|
|
||||||
|
If the directory already exists, do nothing.
|
||||||
|
|
||||||
|
OPTIONS are:
|
||||||
|
|
||||||
|
-m<mode> If a directory needs to be created, set the mode as an octal
|
||||||
|
--mode=<mode> permission string.
|
||||||
|
|
||||||
|
-v --version Print the mkdirp version number
|
||||||
|
|
||||||
|
-h --help Print this helpful banner
|
||||||
|
|
||||||
|
-p --print Print the first directories created for each path provided
|
||||||
|
|
||||||
|
--manual Use manual implementation, even if native is available
|
||||||
|
`
|
||||||
|
|
||||||
|
const dirs = []
|
||||||
|
const opts = {}
|
||||||
|
let print = false
|
||||||
|
let dashdash = false
|
||||||
|
let manual = false
|
||||||
|
for (const arg of process.argv.slice(2)) {
|
||||||
|
if (dashdash)
|
||||||
|
dirs.push(arg)
|
||||||
|
else if (arg === '--')
|
||||||
|
dashdash = true
|
||||||
|
else if (arg === '--manual')
|
||||||
|
manual = true
|
||||||
|
else if (/^-h/.test(arg) || /^--help/.test(arg)) {
|
||||||
|
console.log(usage())
|
||||||
|
process.exit(0)
|
||||||
|
} else if (arg === '-v' || arg === '--version') {
|
||||||
|
console.log(require('../package.json').version)
|
||||||
|
process.exit(0)
|
||||||
|
} else if (arg === '-p' || arg === '--print') {
|
||||||
|
print = true
|
||||||
|
} else if (/^-m/.test(arg) || /^--mode=/.test(arg)) {
|
||||||
|
const mode = parseInt(arg.replace(/^(-m|--mode=)/, ''), 8)
|
||||||
|
if (isNaN(mode)) {
|
||||||
|
console.error(`invalid mode argument: ${arg}\nMust be an octal number.`)
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
|
opts.mode = mode
|
||||||
|
} else
|
||||||
|
dirs.push(arg)
|
||||||
|
}
|
||||||
|
|
||||||
|
const mkdirp = require('../')
|
||||||
|
const impl = manual ? mkdirp.manual : mkdirp
|
||||||
|
if (dirs.length === 0)
|
||||||
|
console.error(usage())
|
||||||
|
|
||||||
|
Promise.all(dirs.map(dir => impl(dir, opts)))
|
||||||
|
.then(made => print ? made.forEach(m => m && console.log(m)) : null)
|
||||||
|
.catch(er => {
|
||||||
|
console.error(er.message)
|
||||||
|
if (er.code)
|
||||||
|
console.error(' code: ' + er.code)
|
||||||
|
process.exit(1)
|
||||||
|
})
|
140
mybulma/node_modules/.bin/node-gyp
generated
vendored
Normal file
140
mybulma/node_modules/.bin/node-gyp
generated
vendored
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
process.title = 'node-gyp'
|
||||||
|
|
||||||
|
const envPaths = require('env-paths')
|
||||||
|
const gyp = require('../')
|
||||||
|
const log = require('npmlog')
|
||||||
|
const os = require('os')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process and execute the selected commands.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const prog = gyp()
|
||||||
|
var completed = false
|
||||||
|
prog.parseArgv(process.argv)
|
||||||
|
prog.devDir = prog.opts.devdir
|
||||||
|
|
||||||
|
var homeDir = os.homedir()
|
||||||
|
if (prog.devDir) {
|
||||||
|
prog.devDir = prog.devDir.replace(/^~/, homeDir)
|
||||||
|
} else if (homeDir) {
|
||||||
|
prog.devDir = envPaths('node-gyp', { suffix: '' }).cache
|
||||||
|
} else {
|
||||||
|
throw new Error(
|
||||||
|
"node-gyp requires that the user's home directory is specified " +
|
||||||
|
'in either of the environmental variables HOME or USERPROFILE. ' +
|
||||||
|
'Overide with: --devdir /path/to/.node-gyp')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prog.todo.length === 0) {
|
||||||
|
if (~process.argv.indexOf('-v') || ~process.argv.indexOf('--version')) {
|
||||||
|
console.log('v%s', prog.version)
|
||||||
|
} else {
|
||||||
|
console.log('%s', prog.usage())
|
||||||
|
}
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info('it worked if it ends with', 'ok')
|
||||||
|
log.verbose('cli', process.argv)
|
||||||
|
log.info('using', 'node-gyp@%s', prog.version)
|
||||||
|
log.info('using', 'node@%s | %s | %s', process.versions.node, process.platform, process.arch)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change dir if -C/--directory was passed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var dir = prog.opts.directory
|
||||||
|
if (dir) {
|
||||||
|
var fs = require('fs')
|
||||||
|
try {
|
||||||
|
var stat = fs.statSync(dir)
|
||||||
|
if (stat.isDirectory()) {
|
||||||
|
log.info('chdir', dir)
|
||||||
|
process.chdir(dir)
|
||||||
|
} else {
|
||||||
|
log.warn('chdir', dir + ' is not a directory')
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
if (e.code === 'ENOENT') {
|
||||||
|
log.warn('chdir', dir + ' is not a directory')
|
||||||
|
} else {
|
||||||
|
log.warn('chdir', 'error during chdir() "%s"', e.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function run () {
|
||||||
|
var command = prog.todo.shift()
|
||||||
|
if (!command) {
|
||||||
|
// done!
|
||||||
|
completed = true
|
||||||
|
log.info('ok')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
prog.commands[command.name](command.args, function (err) {
|
||||||
|
if (err) {
|
||||||
|
log.error(command.name + ' error')
|
||||||
|
log.error('stack', err.stack)
|
||||||
|
errorMessage()
|
||||||
|
log.error('not ok')
|
||||||
|
return process.exit(1)
|
||||||
|
}
|
||||||
|
if (command.name === 'list') {
|
||||||
|
var versions = arguments[1]
|
||||||
|
if (versions.length > 0) {
|
||||||
|
versions.forEach(function (version) {
|
||||||
|
console.log(version)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
console.log('No node development files installed. Use `node-gyp install` to install a version.')
|
||||||
|
}
|
||||||
|
} else if (arguments.length >= 2) {
|
||||||
|
console.log.apply(console, [].slice.call(arguments, 1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// now run the next command in the queue
|
||||||
|
process.nextTick(run)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
process.on('exit', function (code) {
|
||||||
|
if (!completed && !code) {
|
||||||
|
log.error('Completion callback never invoked!')
|
||||||
|
issueMessage()
|
||||||
|
process.exit(6)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
process.on('uncaughtException', function (err) {
|
||||||
|
log.error('UNCAUGHT EXCEPTION')
|
||||||
|
log.error('stack', err.stack)
|
||||||
|
issueMessage()
|
||||||
|
process.exit(7)
|
||||||
|
})
|
||||||
|
|
||||||
|
function errorMessage () {
|
||||||
|
// copied from npm's lib/utils/error-handler.js
|
||||||
|
var os = require('os')
|
||||||
|
log.error('System', os.type() + ' ' + os.release())
|
||||||
|
log.error('command', process.argv
|
||||||
|
.map(JSON.stringify).join(' '))
|
||||||
|
log.error('cwd', process.cwd())
|
||||||
|
log.error('node -v', process.version)
|
||||||
|
log.error('node-gyp -v', 'v' + prog.package.version)
|
||||||
|
}
|
||||||
|
|
||||||
|
function issueMessage () {
|
||||||
|
errorMessage()
|
||||||
|
log.error('', ['Node-gyp failed to build your package.',
|
||||||
|
'Try to update npm and/or node-gyp and if it does not help file an issue with the package author.'
|
||||||
|
].join('\n'))
|
||||||
|
}
|
||||||
|
|
||||||
|
// start running the given commands!
|
||||||
|
run()
|
444
mybulma/node_modules/.bin/node-sass
generated
vendored
Normal file
444
mybulma/node_modules/.bin/node-sass
generated
vendored
Normal file
|
@ -0,0 +1,444 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
var Emitter = require('events').EventEmitter,
|
||||||
|
forEach = require('async-foreach').forEach,
|
||||||
|
Gaze = require('gaze'),
|
||||||
|
meow = require('meow'),
|
||||||
|
util = require('util'),
|
||||||
|
path = require('path'),
|
||||||
|
glob = require('glob'),
|
||||||
|
sass = require('../lib'),
|
||||||
|
render = require('../lib/render'),
|
||||||
|
watcher = require('../lib/watcher'),
|
||||||
|
stdout = require('stdout-stream'),
|
||||||
|
stdin = require('get-stdin'),
|
||||||
|
fs = require('fs');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize CLI
|
||||||
|
*/
|
||||||
|
|
||||||
|
var cli = meow(`
|
||||||
|
Usage:
|
||||||
|
node-sass [options] <input.scss>
|
||||||
|
cat <input.scss> | node-sass [options] > output.css
|
||||||
|
|
||||||
|
Example: Compile foobar.scss to foobar.css
|
||||||
|
node-sass --output-style compressed foobar.scss > foobar.css
|
||||||
|
cat foobar.scss | node-sass --output-style compressed > foobar.css
|
||||||
|
|
||||||
|
Example: Watch the sass directory for changes, compile with sourcemaps to the css directory
|
||||||
|
node-sass --watch --recursive --output css
|
||||||
|
--source-map true --source-map-contents sass
|
||||||
|
|
||||||
|
Options
|
||||||
|
-w, --watch Watch a directory or file
|
||||||
|
-r, --recursive Recursively watch directories or files
|
||||||
|
-o, --output Output directory
|
||||||
|
-x, --omit-source-map-url Omit source map URL comment from output
|
||||||
|
-i, --indented-syntax Treat data from stdin as sass code (versus scss)
|
||||||
|
-q, --quiet Suppress log output except on error
|
||||||
|
-v, --version Prints version info
|
||||||
|
--output-style CSS output style (nested | expanded | compact | compressed)
|
||||||
|
--indent-type Indent type for output CSS (space | tab)
|
||||||
|
--indent-width Indent width; number of spaces or tabs (maximum value: 10)
|
||||||
|
--linefeed Linefeed style (cr | crlf | lf | lfcr)
|
||||||
|
--source-comments Include debug info in output
|
||||||
|
--source-map Emit source map (boolean, or path to output .map file)
|
||||||
|
--source-map-contents Embed include contents in map
|
||||||
|
--source-map-embed Embed sourceMappingUrl as data URI
|
||||||
|
--source-map-root Base path, will be emitted in source-map as is
|
||||||
|
--include-path Path to look for imported files
|
||||||
|
--follow Follow symlinked directories
|
||||||
|
--precision The amount of precision allowed in decimal numbers
|
||||||
|
--error-bell Output a bell character on errors
|
||||||
|
--importer Path to .js file containing custom importer
|
||||||
|
--functions Path to .js file containing custom functions
|
||||||
|
--help Print usage info
|
||||||
|
`, {
|
||||||
|
version: sass.info,
|
||||||
|
flags: {
|
||||||
|
errorBell: {
|
||||||
|
type: 'boolean',
|
||||||
|
},
|
||||||
|
functions: {
|
||||||
|
type: 'string',
|
||||||
|
},
|
||||||
|
follow: {
|
||||||
|
type: 'boolean',
|
||||||
|
},
|
||||||
|
importer: {
|
||||||
|
type: 'string',
|
||||||
|
},
|
||||||
|
includePath: {
|
||||||
|
type: 'string',
|
||||||
|
default: [process.cwd()],
|
||||||
|
isMultiple: true,
|
||||||
|
},
|
||||||
|
indentType: {
|
||||||
|
type: 'string',
|
||||||
|
default: 'space',
|
||||||
|
},
|
||||||
|
indentWidth: {
|
||||||
|
type: 'number',
|
||||||
|
default: 2,
|
||||||
|
},
|
||||||
|
indentedSyntax: {
|
||||||
|
type: 'boolean',
|
||||||
|
alias: 'i',
|
||||||
|
},
|
||||||
|
linefeed: {
|
||||||
|
type: 'string',
|
||||||
|
default: 'lf',
|
||||||
|
},
|
||||||
|
omitSourceMapUrl: {
|
||||||
|
type: 'boolean',
|
||||||
|
alias: 'x',
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
type: 'string',
|
||||||
|
alias: 'o',
|
||||||
|
},
|
||||||
|
outputStyle: {
|
||||||
|
type: 'string',
|
||||||
|
default: 'nested',
|
||||||
|
},
|
||||||
|
precision: {
|
||||||
|
type: 'number',
|
||||||
|
default: 5,
|
||||||
|
},
|
||||||
|
quiet: {
|
||||||
|
type: 'boolean',
|
||||||
|
default: false,
|
||||||
|
alias: 'q',
|
||||||
|
},
|
||||||
|
recursive: {
|
||||||
|
type: 'boolean',
|
||||||
|
default: true,
|
||||||
|
alias: 'r',
|
||||||
|
},
|
||||||
|
sourceMapContents: {
|
||||||
|
type: 'boolean',
|
||||||
|
},
|
||||||
|
sourceMapEmbed: {
|
||||||
|
type: 'boolean',
|
||||||
|
},
|
||||||
|
sourceMapRoot: {
|
||||||
|
type: 'string',
|
||||||
|
},
|
||||||
|
sourceComments: {
|
||||||
|
type: 'boolean',
|
||||||
|
alias: 'c',
|
||||||
|
},
|
||||||
|
version: {
|
||||||
|
type: 'boolean',
|
||||||
|
alias: 'v',
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
type: 'boolean',
|
||||||
|
alias: 'w',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is a Directory
|
||||||
|
*
|
||||||
|
* @param {String} filePath
|
||||||
|
* @returns {Boolean}
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function isDirectory(filePath) {
|
||||||
|
var isDir = false;
|
||||||
|
try {
|
||||||
|
var absolutePath = path.resolve(filePath);
|
||||||
|
isDir = fs.statSync(absolutePath).isDirectory();
|
||||||
|
} catch (e) {
|
||||||
|
isDir = e.code === 'ENOENT';
|
||||||
|
}
|
||||||
|
return isDir;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get correct glob pattern
|
||||||
|
*
|
||||||
|
* @param {Object} options
|
||||||
|
* @returns {String}
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function globPattern(options) {
|
||||||
|
return options.recursive ? '**/*.{sass,scss}' : '*.{sass,scss}';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create emitter
|
||||||
|
*
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function getEmitter() {
|
||||||
|
var emitter = new Emitter();
|
||||||
|
|
||||||
|
emitter.on('error', function(err) {
|
||||||
|
if (options.errorBell) {
|
||||||
|
err += '\x07';
|
||||||
|
}
|
||||||
|
console.error(err);
|
||||||
|
if (!options.watch) {
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
emitter.on('warn', function(data) {
|
||||||
|
if (!options.quiet) {
|
||||||
|
console.warn(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
emitter.on('info', function(data) {
|
||||||
|
if (!options.quiet) {
|
||||||
|
console.info(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
emitter.on('log', stdout.write.bind(stdout));
|
||||||
|
|
||||||
|
return emitter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct options
|
||||||
|
*
|
||||||
|
* @param {Array} arguments
|
||||||
|
* @param {Object} options
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function getOptions(args, options) {
|
||||||
|
var cssDir, sassDir, file, mapDir;
|
||||||
|
options.src = args[0];
|
||||||
|
|
||||||
|
if (args[1]) {
|
||||||
|
options.dest = path.resolve(args[1]);
|
||||||
|
} else if (options.output) {
|
||||||
|
options.dest = path.join(
|
||||||
|
path.resolve(options.output),
|
||||||
|
[path.basename(options.src, path.extname(options.src)), '.css'].join('')); // replace ext.
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.directory) {
|
||||||
|
sassDir = path.resolve(options.directory);
|
||||||
|
file = path.relative(sassDir, args[0]);
|
||||||
|
cssDir = path.resolve(options.output);
|
||||||
|
options.dest = path.join(cssDir, file).replace(path.extname(file), '.css');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.sourceMap) {
|
||||||
|
if(!options.sourceMapOriginal) {
|
||||||
|
options.sourceMapOriginal = options.sourceMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.sourceMapOriginal === 'true') {
|
||||||
|
options.sourceMap = options.dest + '.map';
|
||||||
|
} else {
|
||||||
|
// check if sourceMap path ends with .map to avoid isDirectory false-positive
|
||||||
|
var sourceMapIsDirectory = options.sourceMapOriginal.indexOf('.map', options.sourceMapOriginal.length - 4) === -1 && isDirectory(options.sourceMapOriginal);
|
||||||
|
|
||||||
|
if (!sourceMapIsDirectory) {
|
||||||
|
options.sourceMap = path.resolve(options.sourceMapOriginal);
|
||||||
|
} else if (!options.directory) {
|
||||||
|
options.sourceMap = path.resolve(options.sourceMapOriginal, path.basename(options.dest) + '.map');
|
||||||
|
} else {
|
||||||
|
sassDir = path.resolve(options.directory);
|
||||||
|
file = path.relative(sassDir, args[0]);
|
||||||
|
mapDir = path.resolve(options.sourceMapOriginal);
|
||||||
|
options.sourceMap = path.join(mapDir, file).replace(path.extname(file), '.css.map');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Watch
|
||||||
|
*
|
||||||
|
* @param {Object} options
|
||||||
|
* @param {Object} emitter
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function watch(options, emitter) {
|
||||||
|
var handler = function(files) {
|
||||||
|
files.added.forEach(function(file) {
|
||||||
|
var watch = gaze.watched();
|
||||||
|
Object.keys(watch).forEach(function (dir) {
|
||||||
|
if (watch[dir].indexOf(file) !== -1) {
|
||||||
|
gaze.add(file);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
files.changed.forEach(function(file) {
|
||||||
|
if (path.basename(file)[0] !== '_') {
|
||||||
|
renderFile(file, options, emitter);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
files.removed.forEach(function(file) {
|
||||||
|
gaze.remove(file);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var gaze = new Gaze();
|
||||||
|
gaze.add(watcher.reset(options));
|
||||||
|
gaze.on('error', emitter.emit.bind(emitter, 'error'));
|
||||||
|
|
||||||
|
gaze.on('changed', function(file) {
|
||||||
|
handler(watcher.changed(file));
|
||||||
|
});
|
||||||
|
|
||||||
|
gaze.on('added', function(file) {
|
||||||
|
handler(watcher.added(file));
|
||||||
|
});
|
||||||
|
|
||||||
|
gaze.on('deleted', function(file) {
|
||||||
|
handler(watcher.removed(file));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run
|
||||||
|
*
|
||||||
|
* @param {Object} options
|
||||||
|
* @param {Object} emitter
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function run(options, emitter) {
|
||||||
|
if (options.directory) {
|
||||||
|
if (!options.output) {
|
||||||
|
emitter.emit('error', 'An output directory must be specified when compiling a directory');
|
||||||
|
}
|
||||||
|
if (!isDirectory(options.output)) {
|
||||||
|
emitter.emit('error', 'An output directory must be specified when compiling a directory');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.sourceMapOriginal && options.directory && !isDirectory(options.sourceMapOriginal) && options.sourceMapOriginal !== 'true') {
|
||||||
|
emitter.emit('error', 'The --source-map option must be either a boolean or directory when compiling a directory');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.importer) {
|
||||||
|
if ((path.resolve(options.importer) === path.normalize(options.importer).replace(/(.+)([/|\\])$/, '$1'))) {
|
||||||
|
options.importer = require(options.importer);
|
||||||
|
} else {
|
||||||
|
options.importer = require(path.resolve(options.importer));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.functions) {
|
||||||
|
if ((path.resolve(options.functions) === path.normalize(options.functions).replace(/(.+)([/|\\])$/, '$1'))) {
|
||||||
|
options.functions = require(options.functions);
|
||||||
|
} else {
|
||||||
|
options.functions = require(path.resolve(options.functions));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.watch) {
|
||||||
|
watch(options, emitter);
|
||||||
|
} else if (options.directory) {
|
||||||
|
renderDir(options, emitter);
|
||||||
|
} else {
|
||||||
|
render(options, emitter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render a file
|
||||||
|
*
|
||||||
|
* @param {String} file
|
||||||
|
* @param {Object} options
|
||||||
|
* @param {Object} emitter
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
function renderFile(file, options, emitter) {
|
||||||
|
options = getOptions([path.resolve(file)], options);
|
||||||
|
if (options.watch && !options.quiet) {
|
||||||
|
emitter.emit('info', util.format('=> changed: %s', file));
|
||||||
|
}
|
||||||
|
render(options, emitter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render all sass files in a directory
|
||||||
|
*
|
||||||
|
* @param {Object} options
|
||||||
|
* @param {Object} emitter
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
function renderDir(options, emitter) {
|
||||||
|
var globPath = path.resolve(options.directory, globPattern(options));
|
||||||
|
glob(globPath, { ignore: '**/_*', follow: options.follow }, function(err, files) {
|
||||||
|
if (err) {
|
||||||
|
return emitter.emit('error', util.format('You do not have permission to access this path: %s.', err.path));
|
||||||
|
} else if (!files.length) {
|
||||||
|
return emitter.emit('error', 'No input file was found.');
|
||||||
|
}
|
||||||
|
|
||||||
|
forEach(files, function(subject) {
|
||||||
|
emitter.once('done', this.async());
|
||||||
|
renderFile(subject, options, emitter);
|
||||||
|
}, function(successful, arr) {
|
||||||
|
var outputDir = path.join(process.cwd(), options.output);
|
||||||
|
if (!options.quiet) {
|
||||||
|
emitter.emit('info', util.format('Wrote %s CSS files to %s', arr.length, outputDir));
|
||||||
|
}
|
||||||
|
process.exit();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Arguments and options
|
||||||
|
*/
|
||||||
|
|
||||||
|
var options = getOptions(cli.input, cli.flags);
|
||||||
|
var emitter = getEmitter();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show usage if no arguments are supplied
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!options.src && process.stdin.isTTY) {
|
||||||
|
emitter.emit('error', [
|
||||||
|
'Provide a Sass file to render',
|
||||||
|
'',
|
||||||
|
'Example: Compile foobar.scss to foobar.css',
|
||||||
|
' node-sass --output-style compressed foobar.scss > foobar.css',
|
||||||
|
' cat foobar.scss | node-sass --output-style compressed > foobar.css',
|
||||||
|
'',
|
||||||
|
'Example: Watch the sass directory for changes, compile with sourcemaps to the css directory',
|
||||||
|
' node-sass --watch --recursive --output css',
|
||||||
|
' --source-map true --source-map-contents sass',
|
||||||
|
].join('\n'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply arguments
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (options.src) {
|
||||||
|
if (isDirectory(options.src)) {
|
||||||
|
options.directory = options.src;
|
||||||
|
}
|
||||||
|
run(options, emitter);
|
||||||
|
} else if (!process.stdin.isTTY) {
|
||||||
|
stdin(function(data) {
|
||||||
|
options.data = data;
|
||||||
|
options.stdin = true;
|
||||||
|
run(options, emitter);
|
||||||
|
});
|
||||||
|
}
|
52
mybulma/node_modules/.bin/node-which
generated
vendored
Normal file
52
mybulma/node_modules/.bin/node-which
generated
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
var which = require("../")
|
||||||
|
if (process.argv.length < 3)
|
||||||
|
usage()
|
||||||
|
|
||||||
|
function usage () {
|
||||||
|
console.error('usage: which [-as] program ...')
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
var all = false
|
||||||
|
var silent = false
|
||||||
|
var dashdash = false
|
||||||
|
var args = process.argv.slice(2).filter(function (arg) {
|
||||||
|
if (dashdash || !/^-/.test(arg))
|
||||||
|
return true
|
||||||
|
|
||||||
|
if (arg === '--') {
|
||||||
|
dashdash = true
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var flags = arg.substr(1).split('')
|
||||||
|
for (var f = 0; f < flags.length; f++) {
|
||||||
|
var flag = flags[f]
|
||||||
|
switch (flag) {
|
||||||
|
case 's':
|
||||||
|
silent = true
|
||||||
|
break
|
||||||
|
case 'a':
|
||||||
|
all = true
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
console.error('which: illegal option -- ' + flag)
|
||||||
|
usage()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
|
||||||
|
process.exit(args.reduce(function (pv, current) {
|
||||||
|
try {
|
||||||
|
var f = which.sync(current, { all: all })
|
||||||
|
if (all)
|
||||||
|
f = f.join('\n')
|
||||||
|
if (!silent)
|
||||||
|
console.log(f)
|
||||||
|
return pv;
|
||||||
|
} catch (e) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}, 0))
|
54
mybulma/node_modules/.bin/nopt
generated
vendored
Normal file
54
mybulma/node_modules/.bin/nopt
generated
vendored
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
var nopt = require("../lib/nopt")
|
||||||
|
, path = require("path")
|
||||||
|
, types = { num: Number
|
||||||
|
, bool: Boolean
|
||||||
|
, help: Boolean
|
||||||
|
, list: Array
|
||||||
|
, "num-list": [Number, Array]
|
||||||
|
, "str-list": [String, Array]
|
||||||
|
, "bool-list": [Boolean, Array]
|
||||||
|
, str: String
|
||||||
|
, clear: Boolean
|
||||||
|
, config: Boolean
|
||||||
|
, length: Number
|
||||||
|
, file: path
|
||||||
|
}
|
||||||
|
, shorthands = { s: [ "--str", "astring" ]
|
||||||
|
, b: [ "--bool" ]
|
||||||
|
, nb: [ "--no-bool" ]
|
||||||
|
, tft: [ "--bool-list", "--no-bool-list", "--bool-list", "true" ]
|
||||||
|
, "?": ["--help"]
|
||||||
|
, h: ["--help"]
|
||||||
|
, H: ["--help"]
|
||||||
|
, n: [ "--num", "125" ]
|
||||||
|
, c: ["--config"]
|
||||||
|
, l: ["--length"]
|
||||||
|
, f: ["--file"]
|
||||||
|
}
|
||||||
|
, parsed = nopt( types
|
||||||
|
, shorthands
|
||||||
|
, process.argv
|
||||||
|
, 2 )
|
||||||
|
|
||||||
|
console.log("parsed", parsed)
|
||||||
|
|
||||||
|
if (parsed.help) {
|
||||||
|
console.log("")
|
||||||
|
console.log("nopt cli tester")
|
||||||
|
console.log("")
|
||||||
|
console.log("types")
|
||||||
|
console.log(Object.keys(types).map(function M (t) {
|
||||||
|
var type = types[t]
|
||||||
|
if (Array.isArray(type)) {
|
||||||
|
return [t, type.map(function (type) { return type.name })]
|
||||||
|
}
|
||||||
|
return [t, type && type.name]
|
||||||
|
}).reduce(function (s, i) {
|
||||||
|
s[i[0]] = i[1]
|
||||||
|
return s
|
||||||
|
}, {}))
|
||||||
|
console.log("")
|
||||||
|
console.log("shorthands")
|
||||||
|
console.log(shorthands)
|
||||||
|
}
|
50
mybulma/node_modules/.bin/resolve
generated
vendored
Normal file
50
mybulma/node_modules/.bin/resolve
generated
vendored
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
|
||||||
|
if (
|
||||||
|
String(process.env.npm_lifecycle_script).slice(0, 8) !== 'resolve '
|
||||||
|
&& (
|
||||||
|
!process.argv
|
||||||
|
|| process.argv.length < 2
|
||||||
|
|| (process.argv[1] !== __filename && fs.statSync(process.argv[1]).ino !== fs.statSync(__filename).ino)
|
||||||
|
|| (process.env._ && path.resolve(process.env._) !== __filename)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
console.error('Error: `resolve` must be run directly as an executable');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var supportsPreserveSymlinkFlag = require('supports-preserve-symlinks-flag');
|
||||||
|
|
||||||
|
var preserveSymlinks = false;
|
||||||
|
for (var i = 2; i < process.argv.length; i += 1) {
|
||||||
|
if (process.argv[i].slice(0, 2) === '--') {
|
||||||
|
if (supportsPreserveSymlinkFlag && process.argv[i] === '--preserve-symlinks') {
|
||||||
|
preserveSymlinks = true;
|
||||||
|
} else if (process.argv[i].length > 2) {
|
||||||
|
console.error('Unknown argument ' + process.argv[i].replace(/[=].*$/, ''));
|
||||||
|
process.exit(2);
|
||||||
|
}
|
||||||
|
process.argv.splice(i, 1);
|
||||||
|
i -= 1;
|
||||||
|
if (process.argv[i] === '--') { break; } // eslint-disable-line no-restricted-syntax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.argv.length < 3) {
|
||||||
|
console.error('Error: `resolve` expects a specifier');
|
||||||
|
process.exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
var resolve = require('../');
|
||||||
|
|
||||||
|
var result = resolve.sync(process.argv[2], {
|
||||||
|
basedir: process.cwd(),
|
||||||
|
preserveSymlinks: preserveSymlinks
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(result);
|
68
mybulma/node_modules/.bin/rimraf
generated
vendored
Normal file
68
mybulma/node_modules/.bin/rimraf
generated
vendored
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const rimraf = require('./')
|
||||||
|
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
const isRoot = arg => /^(\/|[a-zA-Z]:\\)$/.test(path.resolve(arg))
|
||||||
|
const filterOutRoot = arg => {
|
||||||
|
const ok = preserveRoot === false || !isRoot(arg)
|
||||||
|
if (!ok) {
|
||||||
|
console.error(`refusing to remove ${arg}`)
|
||||||
|
console.error('Set --no-preserve-root to allow this')
|
||||||
|
}
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
let help = false
|
||||||
|
let dashdash = false
|
||||||
|
let noglob = false
|
||||||
|
let preserveRoot = true
|
||||||
|
const args = process.argv.slice(2).filter(arg => {
|
||||||
|
if (dashdash)
|
||||||
|
return !!arg
|
||||||
|
else if (arg === '--')
|
||||||
|
dashdash = true
|
||||||
|
else if (arg === '--no-glob' || arg === '-G')
|
||||||
|
noglob = true
|
||||||
|
else if (arg === '--glob' || arg === '-g')
|
||||||
|
noglob = false
|
||||||
|
else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/))
|
||||||
|
help = true
|
||||||
|
else if (arg === '--preserve-root')
|
||||||
|
preserveRoot = true
|
||||||
|
else if (arg === '--no-preserve-root')
|
||||||
|
preserveRoot = false
|
||||||
|
else
|
||||||
|
return !!arg
|
||||||
|
}).filter(arg => !preserveRoot || filterOutRoot(arg))
|
||||||
|
|
||||||
|
const go = n => {
|
||||||
|
if (n >= args.length)
|
||||||
|
return
|
||||||
|
const options = noglob ? { glob: false } : {}
|
||||||
|
rimraf(args[n], options, er => {
|
||||||
|
if (er)
|
||||||
|
throw er
|
||||||
|
go(n+1)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (help || args.length === 0) {
|
||||||
|
// If they didn't ask for help, then this is not a "success"
|
||||||
|
const log = help ? console.log : console.error
|
||||||
|
log('Usage: rimraf <path> [<path> ...]')
|
||||||
|
log('')
|
||||||
|
log(' Deletes all files and folders at "path" recursively.')
|
||||||
|
log('')
|
||||||
|
log('Options:')
|
||||||
|
log('')
|
||||||
|
log(' -h, --help Display this usage info')
|
||||||
|
log(' -G, --no-glob Do not expand glob patterns in arguments')
|
||||||
|
log(' -g, --glob Expand glob patterns in arguments (default)')
|
||||||
|
log(' --preserve-root Do not remove \'/\' (default)')
|
||||||
|
log(' --no-preserve-root Do not treat \'/\' specially')
|
||||||
|
log(' -- Stop parsing flags')
|
||||||
|
process.exit(help ? 0 : 1)
|
||||||
|
} else
|
||||||
|
go(0)
|
122
mybulma/node_modules/.bin/sassgraph
generated
vendored
Normal file
122
mybulma/node_modules/.bin/sassgraph
generated
vendored
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
var fs = require('fs');
|
||||||
|
var path = require('path');
|
||||||
|
|
||||||
|
var command, directory, file;
|
||||||
|
|
||||||
|
var yargs = require('yargs')
|
||||||
|
.usage('Usage: $0 <command> [options] <dir> [file]')
|
||||||
|
// .demand(1)
|
||||||
|
|
||||||
|
.command('ancestors', 'Output the ancestors')
|
||||||
|
.command('descendents', 'Output the descendents')
|
||||||
|
|
||||||
|
.example('$0 ancestors -I src src/ src/_footer.scss', 'outputs the ancestors of src/_footer.scss')
|
||||||
|
|
||||||
|
.option('I', {
|
||||||
|
alias: 'load-path',
|
||||||
|
default: [process.cwd()],
|
||||||
|
describe: 'Add directories to the sass load path',
|
||||||
|
type: 'array',
|
||||||
|
})
|
||||||
|
|
||||||
|
.option('e', {
|
||||||
|
alias: 'extensions',
|
||||||
|
default: ['scss', 'sass'],
|
||||||
|
describe: 'File extensions to include in the graph',
|
||||||
|
type: 'array',
|
||||||
|
})
|
||||||
|
|
||||||
|
.option('f', {
|
||||||
|
alias: 'follow',
|
||||||
|
default: false,
|
||||||
|
describe: 'Follow symbolic links',
|
||||||
|
type: 'bool',
|
||||||
|
})
|
||||||
|
|
||||||
|
.option('j', {
|
||||||
|
alias: 'json',
|
||||||
|
default: false,
|
||||||
|
describe: 'Output the index in json',
|
||||||
|
type: 'bool',
|
||||||
|
})
|
||||||
|
|
||||||
|
.version()
|
||||||
|
.alias('v', 'version')
|
||||||
|
|
||||||
|
.help('h')
|
||||||
|
.alias('h', 'help');
|
||||||
|
|
||||||
|
var argv = yargs.argv;
|
||||||
|
|
||||||
|
if (argv._.length === 0) {
|
||||||
|
yargs.showHelp();
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (['ancestors', 'descendents'].indexOf(argv._[0]) !== -1) {
|
||||||
|
command = argv._.shift();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argv._.length && path.extname(argv._[0]) === '') {
|
||||||
|
directory = argv._.shift();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argv._.length && path.extname(argv._[0])) {
|
||||||
|
file = argv._.shift();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!directory) {
|
||||||
|
throw new Error('Missing directory');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!command && !argv.json) {
|
||||||
|
throw new Error('Missing command');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!file && (command === 'ancestors' || command === 'descendents')) {
|
||||||
|
throw new Error(command + ' command requires a file');
|
||||||
|
}
|
||||||
|
|
||||||
|
var loadPaths = argv.loadPath;
|
||||||
|
if(process.env.SASS_PATH) {
|
||||||
|
loadPaths = loadPaths.concat(process.env.SASS_PATH.split(/:/).map(function(f) {
|
||||||
|
return path.resolve(f);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
var graph = require('../').parseDir(directory, {
|
||||||
|
extensions: argv.extensions,
|
||||||
|
loadPaths: loadPaths,
|
||||||
|
follow: argv.follow,
|
||||||
|
});
|
||||||
|
|
||||||
|
if(argv.json) {
|
||||||
|
console.log(JSON.stringify(graph.index, null, 4));
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (command === 'ancestors') {
|
||||||
|
graph.visitAncestors(path.resolve(file), function(f) {
|
||||||
|
console.log(f);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (command === 'descendents') {
|
||||||
|
graph.visitDescendents(path.resolve(file), function(f) {
|
||||||
|
console.log(f);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
if (e.code === 'ENOENT') {
|
||||||
|
console.error('Error: no such file or directory "' + e.path + '"');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log('Error: ' + e.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log(e.stack);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
183
mybulma/node_modules/.bin/semver
generated
vendored
Normal file
183
mybulma/node_modules/.bin/semver
generated
vendored
Normal file
|
@ -0,0 +1,183 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
// Standalone semver comparison program.
|
||||||
|
// Exits successfully and prints matching version(s) if
|
||||||
|
// any supplied version is valid and passes all tests.
|
||||||
|
|
||||||
|
const argv = process.argv.slice(2)
|
||||||
|
|
||||||
|
let versions = []
|
||||||
|
|
||||||
|
const range = []
|
||||||
|
|
||||||
|
let inc = null
|
||||||
|
|
||||||
|
const version = require('../package.json').version
|
||||||
|
|
||||||
|
let loose = false
|
||||||
|
|
||||||
|
let includePrerelease = false
|
||||||
|
|
||||||
|
let coerce = false
|
||||||
|
|
||||||
|
let rtl = false
|
||||||
|
|
||||||
|
let identifier
|
||||||
|
|
||||||
|
const semver = require('../')
|
||||||
|
|
||||||
|
let reverse = false
|
||||||
|
|
||||||
|
let options = {}
|
||||||
|
|
||||||
|
const main = () => {
|
||||||
|
if (!argv.length) {
|
||||||
|
return help()
|
||||||
|
}
|
||||||
|
while (argv.length) {
|
||||||
|
let a = argv.shift()
|
||||||
|
const indexOfEqualSign = a.indexOf('=')
|
||||||
|
if (indexOfEqualSign !== -1) {
|
||||||
|
const value = a.slice(indexOfEqualSign + 1)
|
||||||
|
a = a.slice(0, indexOfEqualSign)
|
||||||
|
argv.unshift(value)
|
||||||
|
}
|
||||||
|
switch (a) {
|
||||||
|
case '-rv': case '-rev': case '--rev': case '--reverse':
|
||||||
|
reverse = true
|
||||||
|
break
|
||||||
|
case '-l': case '--loose':
|
||||||
|
loose = true
|
||||||
|
break
|
||||||
|
case '-p': case '--include-prerelease':
|
||||||
|
includePrerelease = true
|
||||||
|
break
|
||||||
|
case '-v': case '--version':
|
||||||
|
versions.push(argv.shift())
|
||||||
|
break
|
||||||
|
case '-i': case '--inc': case '--increment':
|
||||||
|
switch (argv[0]) {
|
||||||
|
case 'major': case 'minor': case 'patch': case 'prerelease':
|
||||||
|
case 'premajor': case 'preminor': case 'prepatch':
|
||||||
|
inc = argv.shift()
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
inc = 'patch'
|
||||||
|
break
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case '--preid':
|
||||||
|
identifier = argv.shift()
|
||||||
|
break
|
||||||
|
case '-r': case '--range':
|
||||||
|
range.push(argv.shift())
|
||||||
|
break
|
||||||
|
case '-c': case '--coerce':
|
||||||
|
coerce = true
|
||||||
|
break
|
||||||
|
case '--rtl':
|
||||||
|
rtl = true
|
||||||
|
break
|
||||||
|
case '--ltr':
|
||||||
|
rtl = false
|
||||||
|
break
|
||||||
|
case '-h': case '--help': case '-?':
|
||||||
|
return help()
|
||||||
|
default:
|
||||||
|
versions.push(a)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
|
||||||
|
|
||||||
|
versions = versions.map((v) => {
|
||||||
|
return coerce ? (semver.coerce(v, options) || { version: v }).version : v
|
||||||
|
}).filter((v) => {
|
||||||
|
return semver.valid(v)
|
||||||
|
})
|
||||||
|
if (!versions.length) {
|
||||||
|
return fail()
|
||||||
|
}
|
||||||
|
if (inc && (versions.length !== 1 || range.length)) {
|
||||||
|
return failInc()
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0, l = range.length; i < l; i++) {
|
||||||
|
versions = versions.filter((v) => {
|
||||||
|
return semver.satisfies(v, range[i], options)
|
||||||
|
})
|
||||||
|
if (!versions.length) {
|
||||||
|
return fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return success(versions)
|
||||||
|
}
|
||||||
|
|
||||||
|
const failInc = () => {
|
||||||
|
console.error('--inc can only be used on a single version with no range')
|
||||||
|
fail()
|
||||||
|
}
|
||||||
|
|
||||||
|
const fail = () => process.exit(1)
|
||||||
|
|
||||||
|
const success = () => {
|
||||||
|
const compare = reverse ? 'rcompare' : 'compare'
|
||||||
|
versions.sort((a, b) => {
|
||||||
|
return semver[compare](a, b, options)
|
||||||
|
}).map((v) => {
|
||||||
|
return semver.clean(v, options)
|
||||||
|
}).map((v) => {
|
||||||
|
return inc ? semver.inc(v, inc, options, identifier) : v
|
||||||
|
}).forEach((v, i, _) => {
|
||||||
|
console.log(v)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const help = () => console.log(
|
||||||
|
`SemVer ${version}
|
||||||
|
|
||||||
|
A JavaScript implementation of the https://semver.org/ specification
|
||||||
|
Copyright Isaac Z. Schlueter
|
||||||
|
|
||||||
|
Usage: semver [options] <version> [<version> [...]]
|
||||||
|
Prints valid versions sorted by SemVer precedence
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-r --range <range>
|
||||||
|
Print versions that match the specified range.
|
||||||
|
|
||||||
|
-i --increment [<level>]
|
||||||
|
Increment a version by the specified level. Level can
|
||||||
|
be one of: major, minor, patch, premajor, preminor,
|
||||||
|
prepatch, or prerelease. Default level is 'patch'.
|
||||||
|
Only one version may be specified.
|
||||||
|
|
||||||
|
--preid <identifier>
|
||||||
|
Identifier to be used to prefix premajor, preminor,
|
||||||
|
prepatch or prerelease version increments.
|
||||||
|
|
||||||
|
-l --loose
|
||||||
|
Interpret versions and ranges loosely
|
||||||
|
|
||||||
|
-p --include-prerelease
|
||||||
|
Always include prerelease versions in range matching
|
||||||
|
|
||||||
|
-c --coerce
|
||||||
|
Coerce a string into SemVer if possible
|
||||||
|
(does not imply --loose)
|
||||||
|
|
||||||
|
--rtl
|
||||||
|
Coerce version strings right to left
|
||||||
|
|
||||||
|
--ltr
|
||||||
|
Coerce version strings left to right (default)
|
||||||
|
|
||||||
|
Program exits successfully if any valid version satisfies
|
||||||
|
all supplied ranges, and prints all satisfying versions.
|
||||||
|
|
||||||
|
If no satisfying versions are found, then exits failure.
|
||||||
|
|
||||||
|
Versions are printed in ascending order, so supplying
|
||||||
|
multiple versions to the utility will just sort them.`)
|
||||||
|
|
||||||
|
main()
|
2357
mybulma/node_modules/.package-lock.json
generated
vendored
Normal file
2357
mybulma/node_modules/.package-lock.json
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
22
mybulma/node_modules/@babel/code-frame/LICENSE
generated
vendored
Normal file
22
mybulma/node_modules/@babel/code-frame/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2014-present Sebastian McKenzie 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.
|
19
mybulma/node_modules/@babel/code-frame/README.md
generated
vendored
Normal file
19
mybulma/node_modules/@babel/code-frame/README.md
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# @babel/code-frame
|
||||||
|
|
||||||
|
> Generate errors that contain a code frame that point to source locations.
|
||||||
|
|
||||||
|
See our website [@babel/code-frame](https://babeljs.io/docs/en/babel-code-frame) for more information.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Using npm:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save-dev @babel/code-frame
|
||||||
|
```
|
||||||
|
|
||||||
|
or using yarn:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn add @babel/code-frame --dev
|
||||||
|
```
|
163
mybulma/node_modules/@babel/code-frame/lib/index.js
generated
vendored
Normal file
163
mybulma/node_modules/@babel/code-frame/lib/index.js
generated
vendored
Normal file
|
@ -0,0 +1,163 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.codeFrameColumns = codeFrameColumns;
|
||||||
|
exports.default = _default;
|
||||||
|
|
||||||
|
var _highlight = require("@babel/highlight");
|
||||||
|
|
||||||
|
let deprecationWarningShown = false;
|
||||||
|
|
||||||
|
function getDefs(chalk) {
|
||||||
|
return {
|
||||||
|
gutter: chalk.grey,
|
||||||
|
marker: chalk.red.bold,
|
||||||
|
message: chalk.red.bold
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
|
||||||
|
|
||||||
|
function getMarkerLines(loc, source, opts) {
|
||||||
|
const startLoc = Object.assign({
|
||||||
|
column: 0,
|
||||||
|
line: -1
|
||||||
|
}, loc.start);
|
||||||
|
const endLoc = Object.assign({}, startLoc, loc.end);
|
||||||
|
const {
|
||||||
|
linesAbove = 2,
|
||||||
|
linesBelow = 3
|
||||||
|
} = opts || {};
|
||||||
|
const startLine = startLoc.line;
|
||||||
|
const startColumn = startLoc.column;
|
||||||
|
const endLine = endLoc.line;
|
||||||
|
const endColumn = endLoc.column;
|
||||||
|
let start = Math.max(startLine - (linesAbove + 1), 0);
|
||||||
|
let end = Math.min(source.length, endLine + linesBelow);
|
||||||
|
|
||||||
|
if (startLine === -1) {
|
||||||
|
start = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (endLine === -1) {
|
||||||
|
end = source.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
const lineDiff = endLine - startLine;
|
||||||
|
const markerLines = {};
|
||||||
|
|
||||||
|
if (lineDiff) {
|
||||||
|
for (let i = 0; i <= lineDiff; i++) {
|
||||||
|
const lineNumber = i + startLine;
|
||||||
|
|
||||||
|
if (!startColumn) {
|
||||||
|
markerLines[lineNumber] = true;
|
||||||
|
} else if (i === 0) {
|
||||||
|
const sourceLength = source[lineNumber - 1].length;
|
||||||
|
markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
|
||||||
|
} else if (i === lineDiff) {
|
||||||
|
markerLines[lineNumber] = [0, endColumn];
|
||||||
|
} else {
|
||||||
|
const sourceLength = source[lineNumber - i].length;
|
||||||
|
markerLines[lineNumber] = [0, sourceLength];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (startColumn === endColumn) {
|
||||||
|
if (startColumn) {
|
||||||
|
markerLines[startLine] = [startColumn, 0];
|
||||||
|
} else {
|
||||||
|
markerLines[startLine] = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
markerLines[startLine] = [startColumn, endColumn - startColumn];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
start,
|
||||||
|
end,
|
||||||
|
markerLines
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function codeFrameColumns(rawLines, loc, opts = {}) {
|
||||||
|
const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);
|
||||||
|
const chalk = (0, _highlight.getChalk)(opts);
|
||||||
|
const defs = getDefs(chalk);
|
||||||
|
|
||||||
|
const maybeHighlight = (chalkFn, string) => {
|
||||||
|
return highlighted ? chalkFn(string) : string;
|
||||||
|
};
|
||||||
|
|
||||||
|
const lines = rawLines.split(NEWLINE);
|
||||||
|
const {
|
||||||
|
start,
|
||||||
|
end,
|
||||||
|
markerLines
|
||||||
|
} = getMarkerLines(loc, lines, opts);
|
||||||
|
const hasColumns = loc.start && typeof loc.start.column === "number";
|
||||||
|
const numberMaxWidth = String(end).length;
|
||||||
|
const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;
|
||||||
|
let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
|
||||||
|
const number = start + 1 + index;
|
||||||
|
const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
|
||||||
|
const gutter = ` ${paddedNumber} |`;
|
||||||
|
const hasMarker = markerLines[number];
|
||||||
|
const lastMarkerLine = !markerLines[number + 1];
|
||||||
|
|
||||||
|
if (hasMarker) {
|
||||||
|
let markerLine = "";
|
||||||
|
|
||||||
|
if (Array.isArray(hasMarker)) {
|
||||||
|
const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
|
||||||
|
const numberOfMarkers = hasMarker[1] || 1;
|
||||||
|
markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
|
||||||
|
|
||||||
|
if (lastMarkerLine && opts.message) {
|
||||||
|
markerLine += " " + maybeHighlight(defs.message, opts.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
|
||||||
|
} else {
|
||||||
|
return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`;
|
||||||
|
}
|
||||||
|
}).join("\n");
|
||||||
|
|
||||||
|
if (opts.message && !hasColumns) {
|
||||||
|
frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (highlighted) {
|
||||||
|
return chalk.reset(frame);
|
||||||
|
} else {
|
||||||
|
return frame;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _default(rawLines, lineNumber, colNumber, opts = {}) {
|
||||||
|
if (!deprecationWarningShown) {
|
||||||
|
deprecationWarningShown = true;
|
||||||
|
const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
|
||||||
|
|
||||||
|
if (process.emitWarning) {
|
||||||
|
process.emitWarning(message, "DeprecationWarning");
|
||||||
|
} else {
|
||||||
|
const deprecationError = new Error(message);
|
||||||
|
deprecationError.name = "DeprecationWarning";
|
||||||
|
console.warn(new Error(message));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
colNumber = Math.max(colNumber, 0);
|
||||||
|
const location = {
|
||||||
|
start: {
|
||||||
|
column: colNumber,
|
||||||
|
line: lineNumber
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return codeFrameColumns(rawLines, location, opts);
|
||||||
|
}
|
30
mybulma/node_modules/@babel/code-frame/package.json
generated
vendored
Normal file
30
mybulma/node_modules/@babel/code-frame/package.json
generated
vendored
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"name": "@babel/code-frame",
|
||||||
|
"version": "7.18.6",
|
||||||
|
"description": "Generate errors that contain a code frame that point to source locations.",
|
||||||
|
"author": "The Babel Team (https://babel.dev/team)",
|
||||||
|
"homepage": "https://babel.dev/docs/en/next/babel-code-frame",
|
||||||
|
"bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen",
|
||||||
|
"license": "MIT",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/babel/babel.git",
|
||||||
|
"directory": "packages/babel-code-frame"
|
||||||
|
},
|
||||||
|
"main": "./lib/index.js",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/highlight": "^7.18.6"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/chalk": "^2.0.0",
|
||||||
|
"chalk": "^2.0.0",
|
||||||
|
"strip-ansi": "^4.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
},
|
||||||
|
"type": "commonjs"
|
||||||
|
}
|
22
mybulma/node_modules/@babel/helper-validator-identifier/LICENSE
generated
vendored
Normal file
22
mybulma/node_modules/@babel/helper-validator-identifier/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2014-present Sebastian McKenzie 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.
|
19
mybulma/node_modules/@babel/helper-validator-identifier/README.md
generated
vendored
Normal file
19
mybulma/node_modules/@babel/helper-validator-identifier/README.md
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# @babel/helper-validator-identifier
|
||||||
|
|
||||||
|
> Validate identifier/keywords name
|
||||||
|
|
||||||
|
See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/en/babel-helper-validator-identifier) for more information.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Using npm:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save @babel/helper-validator-identifier
|
||||||
|
```
|
||||||
|
|
||||||
|
or using yarn:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn add @babel/helper-validator-identifier
|
||||||
|
```
|
86
mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js
generated
vendored
Normal file
86
mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js
generated
vendored
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.isIdentifierChar = isIdentifierChar;
|
||||||
|
exports.isIdentifierName = isIdentifierName;
|
||||||
|
exports.isIdentifierStart = isIdentifierStart;
|
||||||
|
let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
|
||||||
|
let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
|
||||||
|
const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
|
||||||
|
const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
|
||||||
|
nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
|
||||||
|
const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938, 6, 4191];
|
||||||
|
const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
|
||||||
|
|
||||||
|
function isInAstralSet(code, set) {
|
||||||
|
let pos = 0x10000;
|
||||||
|
|
||||||
|
for (let i = 0, length = set.length; i < length; i += 2) {
|
||||||
|
pos += set[i];
|
||||||
|
if (pos > code) return false;
|
||||||
|
pos += set[i + 1];
|
||||||
|
if (pos >= code) return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isIdentifierStart(code) {
|
||||||
|
if (code < 65) return code === 36;
|
||||||
|
if (code <= 90) return true;
|
||||||
|
if (code < 97) return code === 95;
|
||||||
|
if (code <= 122) return true;
|
||||||
|
|
||||||
|
if (code <= 0xffff) {
|
||||||
|
return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
|
||||||
|
}
|
||||||
|
|
||||||
|
return isInAstralSet(code, astralIdentifierStartCodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isIdentifierChar(code) {
|
||||||
|
if (code < 48) return code === 36;
|
||||||
|
if (code < 58) return true;
|
||||||
|
if (code < 65) return false;
|
||||||
|
if (code <= 90) return true;
|
||||||
|
if (code < 97) return code === 95;
|
||||||
|
if (code <= 122) return true;
|
||||||
|
|
||||||
|
if (code <= 0xffff) {
|
||||||
|
return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
|
||||||
|
}
|
||||||
|
|
||||||
|
return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isIdentifierName(name) {
|
||||||
|
let isFirst = true;
|
||||||
|
|
||||||
|
for (let i = 0; i < name.length; i++) {
|
||||||
|
let cp = name.charCodeAt(i);
|
||||||
|
|
||||||
|
if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
|
||||||
|
const trail = name.charCodeAt(++i);
|
||||||
|
|
||||||
|
if ((trail & 0xfc00) === 0xdc00) {
|
||||||
|
cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isFirst) {
|
||||||
|
isFirst = false;
|
||||||
|
|
||||||
|
if (!isIdentifierStart(cp)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else if (!isIdentifierChar(cp)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return !isFirst;
|
||||||
|
}
|
||||||
|
|
||||||
|
//# sourceMappingURL=identifier.js.map
|
1
mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
generated
vendored
Normal file
1
mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
59
mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js
generated
vendored
Normal file
59
mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js
generated
vendored
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isIdentifierChar", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _identifier.isIdentifierChar;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isIdentifierName", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _identifier.isIdentifierName;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isIdentifierStart", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _identifier.isIdentifierStart;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isKeyword", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _keyword.isKeyword;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isReservedWord", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _keyword.isReservedWord;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _keyword.isStrictBindOnlyReservedWord;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isStrictBindReservedWord", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _keyword.isStrictBindReservedWord;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isStrictReservedWord", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _keyword.isStrictReservedWord;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var _identifier = require("./identifier");
|
||||||
|
|
||||||
|
var _keyword = require("./keyword");
|
||||||
|
|
||||||
|
//# sourceMappingURL=index.js.map
|
1
mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js.map
generated
vendored
Normal file
1
mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js.map
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"names":[],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAKA"}
|
40
mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js
generated
vendored
Normal file
40
mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js
generated
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.isKeyword = isKeyword;
|
||||||
|
exports.isReservedWord = isReservedWord;
|
||||||
|
exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
|
||||||
|
exports.isStrictBindReservedWord = isStrictBindReservedWord;
|
||||||
|
exports.isStrictReservedWord = isStrictReservedWord;
|
||||||
|
const reservedWords = {
|
||||||
|
keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
|
||||||
|
strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
|
||||||
|
strictBind: ["eval", "arguments"]
|
||||||
|
};
|
||||||
|
const keywords = new Set(reservedWords.keyword);
|
||||||
|
const reservedWordsStrictSet = new Set(reservedWords.strict);
|
||||||
|
const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
|
||||||
|
|
||||||
|
function isReservedWord(word, inModule) {
|
||||||
|
return inModule && word === "await" || word === "enum";
|
||||||
|
}
|
||||||
|
|
||||||
|
function isStrictReservedWord(word, inModule) {
|
||||||
|
return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isStrictBindOnlyReservedWord(word) {
|
||||||
|
return reservedWordsStrictBindSet.has(word);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isStrictBindReservedWord(word, inModule) {
|
||||||
|
return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isKeyword(word) {
|
||||||
|
return keywords.has(word);
|
||||||
|
}
|
||||||
|
|
||||||
|
//# sourceMappingURL=keyword.js.map
|
1
mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
generated
vendored
Normal file
1
mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OADO,EAEP,MAFO,EAGP,OAHO,EAIP,UAJO,EAKP,UALO,EAMP,SANO,EAOP,IAPO,EAQP,MARO,EASP,SATO,EAUP,KAVO,EAWP,UAXO,EAYP,IAZO,EAaP,QAbO,EAcP,QAdO,EAeP,OAfO,EAgBP,KAhBO,EAiBP,KAjBO,EAkBP,OAlBO,EAmBP,OAnBO,EAoBP,MApBO,EAqBP,KArBO,EAsBP,MAtBO,EAuBP,OAvBO,EAwBP,OAxBO,EAyBP,SAzBO,EA0BP,QA1BO,EA2BP,QA3BO,EA4BP,MA5BO,EA6BP,MA7BO,EA8BP,OA9BO,EA+BP,IA/BO,EAgCP,YAhCO,EAiCP,QAjCO,EAkCP,MAlCO,EAmCP,QAnCO,CADW;EAsCpBC,MAAM,EAAE,CACN,YADM,EAEN,WAFM,EAGN,KAHM,EAIN,SAJM,EAKN,SALM,EAMN,WANM,EAON,QAPM,EAQN,QARM,EASN,OATM,CAtCY;EAiDpBC,UAAU,EAAE,CAAC,MAAD,EAAS,WAAT;AAjDQ,CAAtB;AAmDA,MAAMC,QAAQ,GAAG,IAAIC,GAAJ,CAAQL,aAAa,CAACC,OAAtB,CAAjB;AACA,MAAMK,sBAAsB,GAAG,IAAID,GAAJ,CAAQL,aAAa,CAACE,MAAtB,CAA/B;AACA,MAAMK,0BAA0B,GAAG,IAAIF,GAAJ,CAAQL,aAAa,CAACG,UAAtB,CAAnC;;AAKO,SAASK,cAAT,CAAwBC,IAAxB,EAAsCC,QAAtC,EAAkE;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAtB,IAAkCA,IAAI,KAAK,MAAlD;AACD;;AAOM,SAASE,oBAAT,CAA8BF,IAA9B,EAA4CC,QAA5C,EAAwE;EAC7E,OAAOF,cAAc,CAACC,IAAD,EAAOC,QAAP,CAAd,IAAkCJ,sBAAsB,CAACM,GAAvB,CAA2BH,IAA3B,CAAzC;AACD;;AAMM,SAASI,4BAAT,CAAsCJ,IAAtC,EAA6D;EAClE,OAAOF,0BAA0B,CAACK,GAA3B,CAA+BH,IAA/B,CAAP;AACD;;AAOM,SAASK,wBAAT,CACLL,IADK,EAELC,QAFK,EAGI;EACT,OACEC,oBAAoB,CAACF,IAAD,EAAOC,QAAP,CAApB,IAAwCG,4BAA4B,CAACJ,IAAD,CADtE;AAGD;;AAEM,SAASM,SAAT,CAAmBN,IAAnB,EAA0C;EAC/C,OAAOL,QAAQ,CAACQ,GAAT,CAAaH,IAAb,CAAP;AACD"}
|
28
mybulma/node_modules/@babel/helper-validator-identifier/package.json
generated
vendored
Normal file
28
mybulma/node_modules/@babel/helper-validator-identifier/package.json
generated
vendored
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"name": "@babel/helper-validator-identifier",
|
||||||
|
"version": "7.19.1",
|
||||||
|
"description": "Validate identifier/keywords name",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/babel/babel.git",
|
||||||
|
"directory": "packages/babel-helper-validator-identifier"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"main": "./lib/index.js",
|
||||||
|
"exports": {
|
||||||
|
".": "./lib/index.js",
|
||||||
|
"./package.json": "./package.json"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@unicode/unicode-15.0.0": "^1.3.1",
|
||||||
|
"charcodes": "^0.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
},
|
||||||
|
"author": "The Babel Team (https://babel.dev/team)",
|
||||||
|
"type": "commonjs"
|
||||||
|
}
|
75
mybulma/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js
generated
vendored
Normal file
75
mybulma/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js
generated
vendored
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// Always use the latest available version of Unicode!
|
||||||
|
// https://tc39.github.io/ecma262/#sec-conformance
|
||||||
|
const version = "15.0.0";
|
||||||
|
|
||||||
|
const start = require("@unicode/unicode-" +
|
||||||
|
version +
|
||||||
|
"/Binary_Property/ID_Start/code-points.js").filter(function (ch) {
|
||||||
|
return ch > 0x7f;
|
||||||
|
});
|
||||||
|
let last = -1;
|
||||||
|
const cont = [0x200c, 0x200d].concat(
|
||||||
|
require("@unicode/unicode-" +
|
||||||
|
version +
|
||||||
|
"/Binary_Property/ID_Continue/code-points.js").filter(function (ch) {
|
||||||
|
return ch > 0x7f && search(start, ch, last + 1) == -1;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
function search(arr, ch, starting) {
|
||||||
|
for (let i = starting; arr[i] <= ch && i < arr.length; last = i++) {
|
||||||
|
if (arr[i] === ch) return i;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function pad(str, width) {
|
||||||
|
while (str.length < width) str = "0" + str;
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function esc(code) {
|
||||||
|
const hex = code.toString(16);
|
||||||
|
if (hex.length <= 2) return "\\x" + pad(hex, 2);
|
||||||
|
else return "\\u" + pad(hex, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
function generate(chars) {
|
||||||
|
const astral = [];
|
||||||
|
let re = "";
|
||||||
|
for (let i = 0, at = 0x10000; i < chars.length; i++) {
|
||||||
|
const from = chars[i];
|
||||||
|
let to = from;
|
||||||
|
while (i < chars.length - 1 && chars[i + 1] == to + 1) {
|
||||||
|
i++;
|
||||||
|
to++;
|
||||||
|
}
|
||||||
|
if (to <= 0xffff) {
|
||||||
|
if (from == to) re += esc(from);
|
||||||
|
else if (from + 1 == to) re += esc(from) + esc(to);
|
||||||
|
else re += esc(from) + "-" + esc(to);
|
||||||
|
} else {
|
||||||
|
astral.push(from - at, to - from);
|
||||||
|
at = to;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return { nonASCII: re, astral: astral };
|
||||||
|
}
|
||||||
|
|
||||||
|
const startData = generate(start);
|
||||||
|
const contData = generate(cont);
|
||||||
|
|
||||||
|
console.log("/* prettier-ignore */");
|
||||||
|
console.log('let nonASCIIidentifierStartChars = "' + startData.nonASCII + '";');
|
||||||
|
console.log("/* prettier-ignore */");
|
||||||
|
console.log('let nonASCIIidentifierChars = "' + contData.nonASCII + '";');
|
||||||
|
console.log("/* prettier-ignore */");
|
||||||
|
console.log(
|
||||||
|
"const astralIdentifierStartCodes = " + JSON.stringify(startData.astral) + ";"
|
||||||
|
);
|
||||||
|
console.log("/* prettier-ignore */");
|
||||||
|
console.log(
|
||||||
|
"const astralIdentifierCodes = " + JSON.stringify(contData.astral) + ";"
|
||||||
|
);
|
22
mybulma/node_modules/@babel/highlight/LICENSE
generated
vendored
Normal file
22
mybulma/node_modules/@babel/highlight/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2014-present Sebastian McKenzie 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.
|
19
mybulma/node_modules/@babel/highlight/README.md
generated
vendored
Normal file
19
mybulma/node_modules/@babel/highlight/README.md
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# @babel/highlight
|
||||||
|
|
||||||
|
> Syntax highlight JavaScript strings for output in terminals.
|
||||||
|
|
||||||
|
See our website [@babel/highlight](https://babeljs.io/docs/en/babel-highlight) for more information.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Using npm:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save-dev @babel/highlight
|
||||||
|
```
|
||||||
|
|
||||||
|
or using yarn:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn add @babel/highlight --dev
|
||||||
|
```
|
116
mybulma/node_modules/@babel/highlight/lib/index.js
generated
vendored
Normal file
116
mybulma/node_modules/@babel/highlight/lib/index.js
generated
vendored
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.default = highlight;
|
||||||
|
exports.getChalk = getChalk;
|
||||||
|
exports.shouldHighlight = shouldHighlight;
|
||||||
|
|
||||||
|
var _jsTokens = require("js-tokens");
|
||||||
|
|
||||||
|
var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
|
||||||
|
|
||||||
|
var _chalk = require("chalk");
|
||||||
|
|
||||||
|
const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
|
||||||
|
|
||||||
|
function getDefs(chalk) {
|
||||||
|
return {
|
||||||
|
keyword: chalk.cyan,
|
||||||
|
capitalized: chalk.yellow,
|
||||||
|
jsxIdentifier: chalk.yellow,
|
||||||
|
punctuator: chalk.yellow,
|
||||||
|
number: chalk.magenta,
|
||||||
|
string: chalk.green,
|
||||||
|
regex: chalk.magenta,
|
||||||
|
comment: chalk.grey,
|
||||||
|
invalid: chalk.white.bgRed.bold
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
|
||||||
|
const BRACKET = /^[()[\]{}]$/;
|
||||||
|
let tokenize;
|
||||||
|
{
|
||||||
|
const JSX_TAG = /^[a-z][\w-]*$/i;
|
||||||
|
|
||||||
|
const getTokenType = function (token, offset, text) {
|
||||||
|
if (token.type === "name") {
|
||||||
|
if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) {
|
||||||
|
return "keyword";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) == "</")) {
|
||||||
|
return "jsxIdentifier";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (token.value[0] !== token.value[0].toLowerCase()) {
|
||||||
|
return "capitalized";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (token.type === "punctuator" && BRACKET.test(token.value)) {
|
||||||
|
return "bracket";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
|
||||||
|
return "punctuator";
|
||||||
|
}
|
||||||
|
|
||||||
|
return token.type;
|
||||||
|
};
|
||||||
|
|
||||||
|
tokenize = function* (text) {
|
||||||
|
let match;
|
||||||
|
|
||||||
|
while (match = _jsTokens.default.exec(text)) {
|
||||||
|
const token = _jsTokens.matchToToken(match);
|
||||||
|
|
||||||
|
yield {
|
||||||
|
type: getTokenType(token, match.index, text),
|
||||||
|
value: token.value
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function highlightTokens(defs, text) {
|
||||||
|
let highlighted = "";
|
||||||
|
|
||||||
|
for (const {
|
||||||
|
type,
|
||||||
|
value
|
||||||
|
} of tokenize(text)) {
|
||||||
|
const colorize = defs[type];
|
||||||
|
|
||||||
|
if (colorize) {
|
||||||
|
highlighted += value.split(NEWLINE).map(str => colorize(str)).join("\n");
|
||||||
|
} else {
|
||||||
|
highlighted += value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return highlighted;
|
||||||
|
}
|
||||||
|
|
||||||
|
function shouldHighlight(options) {
|
||||||
|
return !!_chalk.supportsColor || options.forceColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getChalk(options) {
|
||||||
|
return options.forceColor ? new _chalk.constructor({
|
||||||
|
enabled: true,
|
||||||
|
level: 1
|
||||||
|
}) : _chalk;
|
||||||
|
}
|
||||||
|
|
||||||
|
function highlight(code, options = {}) {
|
||||||
|
if (code !== "" && shouldHighlight(options)) {
|
||||||
|
const chalk = getChalk(options);
|
||||||
|
const defs = getDefs(chalk);
|
||||||
|
return highlightTokens(defs, code);
|
||||||
|
} else {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
}
|
165
mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/index.js
generated
vendored
Normal file
165
mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/index.js
generated
vendored
Normal file
|
@ -0,0 +1,165 @@
|
||||||
|
'use strict';
|
||||||
|
const colorConvert = require('color-convert');
|
||||||
|
|
||||||
|
const wrapAnsi16 = (fn, offset) => function () {
|
||||||
|
const code = fn.apply(colorConvert, arguments);
|
||||||
|
return `\u001B[${code + offset}m`;
|
||||||
|
};
|
||||||
|
|
||||||
|
const wrapAnsi256 = (fn, offset) => function () {
|
||||||
|
const code = fn.apply(colorConvert, arguments);
|
||||||
|
return `\u001B[${38 + offset};5;${code}m`;
|
||||||
|
};
|
||||||
|
|
||||||
|
const wrapAnsi16m = (fn, offset) => function () {
|
||||||
|
const rgb = fn.apply(colorConvert, arguments);
|
||||||
|
return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
|
||||||
|
};
|
||||||
|
|
||||||
|
function assembleStyles() {
|
||||||
|
const codes = new Map();
|
||||||
|
const styles = {
|
||||||
|
modifier: {
|
||||||
|
reset: [0, 0],
|
||||||
|
// 21 isn't widely supported and 22 does the same thing
|
||||||
|
bold: [1, 22],
|
||||||
|
dim: [2, 22],
|
||||||
|
italic: [3, 23],
|
||||||
|
underline: [4, 24],
|
||||||
|
inverse: [7, 27],
|
||||||
|
hidden: [8, 28],
|
||||||
|
strikethrough: [9, 29]
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
black: [30, 39],
|
||||||
|
red: [31, 39],
|
||||||
|
green: [32, 39],
|
||||||
|
yellow: [33, 39],
|
||||||
|
blue: [34, 39],
|
||||||
|
magenta: [35, 39],
|
||||||
|
cyan: [36, 39],
|
||||||
|
white: [37, 39],
|
||||||
|
gray: [90, 39],
|
||||||
|
|
||||||
|
// Bright color
|
||||||
|
redBright: [91, 39],
|
||||||
|
greenBright: [92, 39],
|
||||||
|
yellowBright: [93, 39],
|
||||||
|
blueBright: [94, 39],
|
||||||
|
magentaBright: [95, 39],
|
||||||
|
cyanBright: [96, 39],
|
||||||
|
whiteBright: [97, 39]
|
||||||
|
},
|
||||||
|
bgColor: {
|
||||||
|
bgBlack: [40, 49],
|
||||||
|
bgRed: [41, 49],
|
||||||
|
bgGreen: [42, 49],
|
||||||
|
bgYellow: [43, 49],
|
||||||
|
bgBlue: [44, 49],
|
||||||
|
bgMagenta: [45, 49],
|
||||||
|
bgCyan: [46, 49],
|
||||||
|
bgWhite: [47, 49],
|
||||||
|
|
||||||
|
// Bright color
|
||||||
|
bgBlackBright: [100, 49],
|
||||||
|
bgRedBright: [101, 49],
|
||||||
|
bgGreenBright: [102, 49],
|
||||||
|
bgYellowBright: [103, 49],
|
||||||
|
bgBlueBright: [104, 49],
|
||||||
|
bgMagentaBright: [105, 49],
|
||||||
|
bgCyanBright: [106, 49],
|
||||||
|
bgWhiteBright: [107, 49]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Fix humans
|
||||||
|
styles.color.grey = styles.color.gray;
|
||||||
|
|
||||||
|
for (const groupName of Object.keys(styles)) {
|
||||||
|
const group = styles[groupName];
|
||||||
|
|
||||||
|
for (const styleName of Object.keys(group)) {
|
||||||
|
const style = group[styleName];
|
||||||
|
|
||||||
|
styles[styleName] = {
|
||||||
|
open: `\u001B[${style[0]}m`,
|
||||||
|
close: `\u001B[${style[1]}m`
|
||||||
|
};
|
||||||
|
|
||||||
|
group[styleName] = styles[styleName];
|
||||||
|
|
||||||
|
codes.set(style[0], style[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(styles, groupName, {
|
||||||
|
value: group,
|
||||||
|
enumerable: false
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(styles, 'codes', {
|
||||||
|
value: codes,
|
||||||
|
enumerable: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const ansi2ansi = n => n;
|
||||||
|
const rgb2rgb = (r, g, b) => [r, g, b];
|
||||||
|
|
||||||
|
styles.color.close = '\u001B[39m';
|
||||||
|
styles.bgColor.close = '\u001B[49m';
|
||||||
|
|
||||||
|
styles.color.ansi = {
|
||||||
|
ansi: wrapAnsi16(ansi2ansi, 0)
|
||||||
|
};
|
||||||
|
styles.color.ansi256 = {
|
||||||
|
ansi256: wrapAnsi256(ansi2ansi, 0)
|
||||||
|
};
|
||||||
|
styles.color.ansi16m = {
|
||||||
|
rgb: wrapAnsi16m(rgb2rgb, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
styles.bgColor.ansi = {
|
||||||
|
ansi: wrapAnsi16(ansi2ansi, 10)
|
||||||
|
};
|
||||||
|
styles.bgColor.ansi256 = {
|
||||||
|
ansi256: wrapAnsi256(ansi2ansi, 10)
|
||||||
|
};
|
||||||
|
styles.bgColor.ansi16m = {
|
||||||
|
rgb: wrapAnsi16m(rgb2rgb, 10)
|
||||||
|
};
|
||||||
|
|
||||||
|
for (let key of Object.keys(colorConvert)) {
|
||||||
|
if (typeof colorConvert[key] !== 'object') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const suite = colorConvert[key];
|
||||||
|
|
||||||
|
if (key === 'ansi16') {
|
||||||
|
key = 'ansi';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('ansi16' in suite) {
|
||||||
|
styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
|
||||||
|
styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('ansi256' in suite) {
|
||||||
|
styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
|
||||||
|
styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('rgb' in suite) {
|
||||||
|
styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
|
||||||
|
styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return styles;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make the export immutable
|
||||||
|
Object.defineProperty(module, 'exports', {
|
||||||
|
enumerable: true,
|
||||||
|
get: assembleStyles
|
||||||
|
});
|
9
mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/license
generated
vendored
Normal file
9
mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/license
generated
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
|
||||||
|
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.
|
56
mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/package.json
generated
vendored
Normal file
56
mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/package.json
generated
vendored
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
{
|
||||||
|
"name": "ansi-styles",
|
||||||
|
"version": "3.2.1",
|
||||||
|
"description": "ANSI escape codes for styling strings in the terminal",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": "chalk/ansi-styles",
|
||||||
|
"author": {
|
||||||
|
"name": "Sindre Sorhus",
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"url": "sindresorhus.com"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "xo && ava",
|
||||||
|
"screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"ansi",
|
||||||
|
"styles",
|
||||||
|
"color",
|
||||||
|
"colour",
|
||||||
|
"colors",
|
||||||
|
"terminal",
|
||||||
|
"console",
|
||||||
|
"cli",
|
||||||
|
"string",
|
||||||
|
"tty",
|
||||||
|
"escape",
|
||||||
|
"formatting",
|
||||||
|
"rgb",
|
||||||
|
"256",
|
||||||
|
"shell",
|
||||||
|
"xterm",
|
||||||
|
"log",
|
||||||
|
"logging",
|
||||||
|
"command-line",
|
||||||
|
"text"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"color-convert": "^1.9.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"ava": "*",
|
||||||
|
"babel-polyfill": "^6.23.0",
|
||||||
|
"svg-term-cli": "^2.1.1",
|
||||||
|
"xo": "*"
|
||||||
|
},
|
||||||
|
"ava": {
|
||||||
|
"require": "babel-polyfill"
|
||||||
|
}
|
||||||
|
}
|
147
mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md
generated
vendored
Normal file
147
mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md
generated
vendored
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
|
||||||
|
|
||||||
|
> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
|
||||||
|
|
||||||
|
You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
|
||||||
|
|
||||||
|
<img src="https://cdn.rawgit.com/chalk/ansi-styles/8261697c95bf34b6c7767e2cbe9941a851d59385/screenshot.svg" width="900">
|
||||||
|
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```
|
||||||
|
$ npm install ansi-styles
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
const style = require('ansi-styles');
|
||||||
|
|
||||||
|
console.log(`${style.green.open}Hello world!${style.green.close}`);
|
||||||
|
|
||||||
|
|
||||||
|
// Color conversion between 16/256/truecolor
|
||||||
|
// NOTE: If conversion goes to 16 colors or 256 colors, the original color
|
||||||
|
// may be degraded to fit that color palette. This means terminals
|
||||||
|
// that do not support 16 million colors will best-match the
|
||||||
|
// original color.
|
||||||
|
console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close);
|
||||||
|
console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close);
|
||||||
|
console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.close);
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
Each style has an `open` and `close` property.
|
||||||
|
|
||||||
|
|
||||||
|
## Styles
|
||||||
|
|
||||||
|
### Modifiers
|
||||||
|
|
||||||
|
- `reset`
|
||||||
|
- `bold`
|
||||||
|
- `dim`
|
||||||
|
- `italic` *(Not widely supported)*
|
||||||
|
- `underline`
|
||||||
|
- `inverse`
|
||||||
|
- `hidden`
|
||||||
|
- `strikethrough` *(Not widely supported)*
|
||||||
|
|
||||||
|
### Colors
|
||||||
|
|
||||||
|
- `black`
|
||||||
|
- `red`
|
||||||
|
- `green`
|
||||||
|
- `yellow`
|
||||||
|
- `blue`
|
||||||
|
- `magenta`
|
||||||
|
- `cyan`
|
||||||
|
- `white`
|
||||||
|
- `gray` ("bright black")
|
||||||
|
- `redBright`
|
||||||
|
- `greenBright`
|
||||||
|
- `yellowBright`
|
||||||
|
- `blueBright`
|
||||||
|
- `magentaBright`
|
||||||
|
- `cyanBright`
|
||||||
|
- `whiteBright`
|
||||||
|
|
||||||
|
### Background colors
|
||||||
|
|
||||||
|
- `bgBlack`
|
||||||
|
- `bgRed`
|
||||||
|
- `bgGreen`
|
||||||
|
- `bgYellow`
|
||||||
|
- `bgBlue`
|
||||||
|
- `bgMagenta`
|
||||||
|
- `bgCyan`
|
||||||
|
- `bgWhite`
|
||||||
|
- `bgBlackBright`
|
||||||
|
- `bgRedBright`
|
||||||
|
- `bgGreenBright`
|
||||||
|
- `bgYellowBright`
|
||||||
|
- `bgBlueBright`
|
||||||
|
- `bgMagentaBright`
|
||||||
|
- `bgCyanBright`
|
||||||
|
- `bgWhiteBright`
|
||||||
|
|
||||||
|
|
||||||
|
## Advanced usage
|
||||||
|
|
||||||
|
By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
|
||||||
|
|
||||||
|
- `style.modifier`
|
||||||
|
- `style.color`
|
||||||
|
- `style.bgColor`
|
||||||
|
|
||||||
|
###### Example
|
||||||
|
|
||||||
|
```js
|
||||||
|
console.log(style.color.green.open);
|
||||||
|
```
|
||||||
|
|
||||||
|
Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values.
|
||||||
|
|
||||||
|
###### Example
|
||||||
|
|
||||||
|
```js
|
||||||
|
console.log(style.codes.get(36));
|
||||||
|
//=> 39
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728)
|
||||||
|
|
||||||
|
`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors.
|
||||||
|
|
||||||
|
To use these, call the associated conversion function with the intended output, for example:
|
||||||
|
|
||||||
|
```js
|
||||||
|
style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code
|
||||||
|
style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code
|
||||||
|
|
||||||
|
style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
|
||||||
|
style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
|
||||||
|
|
||||||
|
style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code
|
||||||
|
style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Related
|
||||||
|
|
||||||
|
- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal
|
||||||
|
|
||||||
|
|
||||||
|
## Maintainers
|
||||||
|
|
||||||
|
- [Sindre Sorhus](https://github.com/sindresorhus)
|
||||||
|
- [Josh Junon](https://github.com/qix-)
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
228
mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js
generated
vendored
Normal file
228
mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js
generated
vendored
Normal file
|
@ -0,0 +1,228 @@
|
||||||
|
'use strict';
|
||||||
|
const escapeStringRegexp = require('escape-string-regexp');
|
||||||
|
const ansiStyles = require('ansi-styles');
|
||||||
|
const stdoutColor = require('supports-color').stdout;
|
||||||
|
|
||||||
|
const template = require('./templates.js');
|
||||||
|
|
||||||
|
const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');
|
||||||
|
|
||||||
|
// `supportsColor.level` → `ansiStyles.color[name]` mapping
|
||||||
|
const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];
|
||||||
|
|
||||||
|
// `color-convert` models to exclude from the Chalk API due to conflicts and such
|
||||||
|
const skipModels = new Set(['gray']);
|
||||||
|
|
||||||
|
const styles = Object.create(null);
|
||||||
|
|
||||||
|
function applyOptions(obj, options) {
|
||||||
|
options = options || {};
|
||||||
|
|
||||||
|
// Detect level if not set manually
|
||||||
|
const scLevel = stdoutColor ? stdoutColor.level : 0;
|
||||||
|
obj.level = options.level === undefined ? scLevel : options.level;
|
||||||
|
obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Chalk(options) {
|
||||||
|
// We check for this.template here since calling `chalk.constructor()`
|
||||||
|
// by itself will have a `this` of a previously constructed chalk object
|
||||||
|
if (!this || !(this instanceof Chalk) || this.template) {
|
||||||
|
const chalk = {};
|
||||||
|
applyOptions(chalk, options);
|
||||||
|
|
||||||
|
chalk.template = function () {
|
||||||
|
const args = [].slice.call(arguments);
|
||||||
|
return chalkTag.apply(null, [chalk.template].concat(args));
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.setPrototypeOf(chalk, Chalk.prototype);
|
||||||
|
Object.setPrototypeOf(chalk.template, chalk);
|
||||||
|
|
||||||
|
chalk.template.constructor = Chalk;
|
||||||
|
|
||||||
|
return chalk.template;
|
||||||
|
}
|
||||||
|
|
||||||
|
applyOptions(this, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use bright blue on Windows as the normal blue color is illegible
|
||||||
|
if (isSimpleWindowsTerm) {
|
||||||
|
ansiStyles.blue.open = '\u001B[94m';
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const key of Object.keys(ansiStyles)) {
|
||||||
|
ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
|
||||||
|
|
||||||
|
styles[key] = {
|
||||||
|
get() {
|
||||||
|
const codes = ansiStyles[key];
|
||||||
|
return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
styles.visible = {
|
||||||
|
get() {
|
||||||
|
return build.call(this, this._styles || [], true, 'visible');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');
|
||||||
|
for (const model of Object.keys(ansiStyles.color.ansi)) {
|
||||||
|
if (skipModels.has(model)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
styles[model] = {
|
||||||
|
get() {
|
||||||
|
const level = this.level;
|
||||||
|
return function () {
|
||||||
|
const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);
|
||||||
|
const codes = {
|
||||||
|
open,
|
||||||
|
close: ansiStyles.color.close,
|
||||||
|
closeRe: ansiStyles.color.closeRe
|
||||||
|
};
|
||||||
|
return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');
|
||||||
|
for (const model of Object.keys(ansiStyles.bgColor.ansi)) {
|
||||||
|
if (skipModels.has(model)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
|
||||||
|
styles[bgModel] = {
|
||||||
|
get() {
|
||||||
|
const level = this.level;
|
||||||
|
return function () {
|
||||||
|
const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);
|
||||||
|
const codes = {
|
||||||
|
open,
|
||||||
|
close: ansiStyles.bgColor.close,
|
||||||
|
closeRe: ansiStyles.bgColor.closeRe
|
||||||
|
};
|
||||||
|
return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const proto = Object.defineProperties(() => {}, styles);
|
||||||
|
|
||||||
|
function build(_styles, _empty, key) {
|
||||||
|
const builder = function () {
|
||||||
|
return applyStyle.apply(builder, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
builder._styles = _styles;
|
||||||
|
builder._empty = _empty;
|
||||||
|
|
||||||
|
const self = this;
|
||||||
|
|
||||||
|
Object.defineProperty(builder, 'level', {
|
||||||
|
enumerable: true,
|
||||||
|
get() {
|
||||||
|
return self.level;
|
||||||
|
},
|
||||||
|
set(level) {
|
||||||
|
self.level = level;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(builder, 'enabled', {
|
||||||
|
enumerable: true,
|
||||||
|
get() {
|
||||||
|
return self.enabled;
|
||||||
|
},
|
||||||
|
set(enabled) {
|
||||||
|
self.enabled = enabled;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// See below for fix regarding invisible grey/dim combination on Windows
|
||||||
|
builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';
|
||||||
|
|
||||||
|
// `__proto__` is used because we must return a function, but there is
|
||||||
|
// no way to create a function with a different prototype
|
||||||
|
builder.__proto__ = proto; // eslint-disable-line no-proto
|
||||||
|
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
function applyStyle() {
|
||||||
|
// Support varags, but simply cast to string in case there's only one arg
|
||||||
|
const args = arguments;
|
||||||
|
const argsLen = args.length;
|
||||||
|
let str = String(arguments[0]);
|
||||||
|
|
||||||
|
if (argsLen === 0) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argsLen > 1) {
|
||||||
|
// Don't slice `arguments`, it prevents V8 optimizations
|
||||||
|
for (let a = 1; a < argsLen; a++) {
|
||||||
|
str += ' ' + args[a];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.enabled || this.level <= 0 || !str) {
|
||||||
|
return this._empty ? '' : str;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
|
||||||
|
// see https://github.com/chalk/chalk/issues/58
|
||||||
|
// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
|
||||||
|
const originalDim = ansiStyles.dim.open;
|
||||||
|
if (isSimpleWindowsTerm && this.hasGrey) {
|
||||||
|
ansiStyles.dim.open = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const code of this._styles.slice().reverse()) {
|
||||||
|
// Replace any instances already present with a re-opening code
|
||||||
|
// otherwise only the part of the string until said closing code
|
||||||
|
// will be colored, and the rest will simply be 'plain'.
|
||||||
|
str = code.open + str.replace(code.closeRe, code.open) + code.close;
|
||||||
|
|
||||||
|
// Close the styling before a linebreak and reopen
|
||||||
|
// after next line to fix a bleed issue on macOS
|
||||||
|
// https://github.com/chalk/chalk/pull/92
|
||||||
|
str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue
|
||||||
|
ansiStyles.dim.open = originalDim;
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function chalkTag(chalk, strings) {
|
||||||
|
if (!Array.isArray(strings)) {
|
||||||
|
// If chalk() was called by itself or with a string,
|
||||||
|
// return the string itself as a string.
|
||||||
|
return [].slice.call(arguments, 1).join(' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
const args = [].slice.call(arguments, 2);
|
||||||
|
const parts = [strings.raw[0]];
|
||||||
|
|
||||||
|
for (let i = 1; i < strings.length; i++) {
|
||||||
|
parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&'));
|
||||||
|
parts.push(String(strings.raw[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return template(chalk, parts.join(''));
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperties(Chalk.prototype, styles);
|
||||||
|
|
||||||
|
module.exports = Chalk(); // eslint-disable-line new-cap
|
||||||
|
module.exports.supportsColor = stdoutColor;
|
||||||
|
module.exports.default = module.exports; // For TypeScript
|
93
mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js.flow
generated
vendored
Normal file
93
mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js.flow
generated
vendored
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
// @flow strict
|
||||||
|
|
||||||
|
type TemplateStringsArray = $ReadOnlyArray<string>;
|
||||||
|
|
||||||
|
export type Level = $Values<{
|
||||||
|
None: 0,
|
||||||
|
Basic: 1,
|
||||||
|
Ansi256: 2,
|
||||||
|
TrueColor: 3
|
||||||
|
}>;
|
||||||
|
|
||||||
|
export type ChalkOptions = {|
|
||||||
|
enabled?: boolean,
|
||||||
|
level?: Level
|
||||||
|
|};
|
||||||
|
|
||||||
|
export type ColorSupport = {|
|
||||||
|
level: Level,
|
||||||
|
hasBasic: boolean,
|
||||||
|
has256: boolean,
|
||||||
|
has16m: boolean
|
||||||
|
|};
|
||||||
|
|
||||||
|
export interface Chalk {
|
||||||
|
(...text: string[]): string,
|
||||||
|
(text: TemplateStringsArray, ...placeholders: string[]): string,
|
||||||
|
constructor(options?: ChalkOptions): Chalk,
|
||||||
|
enabled: boolean,
|
||||||
|
level: Level,
|
||||||
|
rgb(r: number, g: number, b: number): Chalk,
|
||||||
|
hsl(h: number, s: number, l: number): Chalk,
|
||||||
|
hsv(h: number, s: number, v: number): Chalk,
|
||||||
|
hwb(h: number, w: number, b: number): Chalk,
|
||||||
|
bgHex(color: string): Chalk,
|
||||||
|
bgKeyword(color: string): Chalk,
|
||||||
|
bgRgb(r: number, g: number, b: number): Chalk,
|
||||||
|
bgHsl(h: number, s: number, l: number): Chalk,
|
||||||
|
bgHsv(h: number, s: number, v: number): Chalk,
|
||||||
|
bgHwb(h: number, w: number, b: number): Chalk,
|
||||||
|
hex(color: string): Chalk,
|
||||||
|
keyword(color: string): Chalk,
|
||||||
|
|
||||||
|
+reset: Chalk,
|
||||||
|
+bold: Chalk,
|
||||||
|
+dim: Chalk,
|
||||||
|
+italic: Chalk,
|
||||||
|
+underline: Chalk,
|
||||||
|
+inverse: Chalk,
|
||||||
|
+hidden: Chalk,
|
||||||
|
+strikethrough: Chalk,
|
||||||
|
|
||||||
|
+visible: Chalk,
|
||||||
|
|
||||||
|
+black: Chalk,
|
||||||
|
+red: Chalk,
|
||||||
|
+green: Chalk,
|
||||||
|
+yellow: Chalk,
|
||||||
|
+blue: Chalk,
|
||||||
|
+magenta: Chalk,
|
||||||
|
+cyan: Chalk,
|
||||||
|
+white: Chalk,
|
||||||
|
+gray: Chalk,
|
||||||
|
+grey: Chalk,
|
||||||
|
+blackBright: Chalk,
|
||||||
|
+redBright: Chalk,
|
||||||
|
+greenBright: Chalk,
|
||||||
|
+yellowBright: Chalk,
|
||||||
|
+blueBright: Chalk,
|
||||||
|
+magentaBright: Chalk,
|
||||||
|
+cyanBright: Chalk,
|
||||||
|
+whiteBright: Chalk,
|
||||||
|
|
||||||
|
+bgBlack: Chalk,
|
||||||
|
+bgRed: Chalk,
|
||||||
|
+bgGreen: Chalk,
|
||||||
|
+bgYellow: Chalk,
|
||||||
|
+bgBlue: Chalk,
|
||||||
|
+bgMagenta: Chalk,
|
||||||
|
+bgCyan: Chalk,
|
||||||
|
+bgWhite: Chalk,
|
||||||
|
+bgBlackBright: Chalk,
|
||||||
|
+bgRedBright: Chalk,
|
||||||
|
+bgGreenBright: Chalk,
|
||||||
|
+bgYellowBright: Chalk,
|
||||||
|
+bgBlueBright: Chalk,
|
||||||
|
+bgMagentaBright: Chalk,
|
||||||
|
+bgCyanBright: Chalk,
|
||||||
|
+bgWhiteBrigh: Chalk,
|
||||||
|
|
||||||
|
supportsColor: ColorSupport
|
||||||
|
};
|
||||||
|
|
||||||
|
declare module.exports: Chalk;
|
9
mybulma/node_modules/@babel/highlight/node_modules/chalk/license
generated
vendored
Normal file
9
mybulma/node_modules/@babel/highlight/node_modules/chalk/license
generated
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
|
||||||
|
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.
|
71
mybulma/node_modules/@babel/highlight/node_modules/chalk/package.json
generated
vendored
Normal file
71
mybulma/node_modules/@babel/highlight/node_modules/chalk/package.json
generated
vendored
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
{
|
||||||
|
"name": "chalk",
|
||||||
|
"version": "2.4.2",
|
||||||
|
"description": "Terminal string styling done right",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": "chalk/chalk",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "xo && tsc --project types && flow --max-warnings=0 && nyc ava",
|
||||||
|
"bench": "matcha benchmark.js",
|
||||||
|
"coveralls": "nyc report --reporter=text-lcov | coveralls"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js",
|
||||||
|
"templates.js",
|
||||||
|
"types/index.d.ts",
|
||||||
|
"index.js.flow"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"color",
|
||||||
|
"colour",
|
||||||
|
"colors",
|
||||||
|
"terminal",
|
||||||
|
"console",
|
||||||
|
"cli",
|
||||||
|
"string",
|
||||||
|
"str",
|
||||||
|
"ansi",
|
||||||
|
"style",
|
||||||
|
"styles",
|
||||||
|
"tty",
|
||||||
|
"formatting",
|
||||||
|
"rgb",
|
||||||
|
"256",
|
||||||
|
"shell",
|
||||||
|
"xterm",
|
||||||
|
"log",
|
||||||
|
"logging",
|
||||||
|
"command-line",
|
||||||
|
"text"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": "^3.2.1",
|
||||||
|
"escape-string-regexp": "^1.0.5",
|
||||||
|
"supports-color": "^5.3.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"ava": "*",
|
||||||
|
"coveralls": "^3.0.0",
|
||||||
|
"execa": "^0.9.0",
|
||||||
|
"flow-bin": "^0.68.0",
|
||||||
|
"import-fresh": "^2.0.0",
|
||||||
|
"matcha": "^0.7.0",
|
||||||
|
"nyc": "^11.0.2",
|
||||||
|
"resolve-from": "^4.0.0",
|
||||||
|
"typescript": "^2.5.3",
|
||||||
|
"xo": "*"
|
||||||
|
},
|
||||||
|
"types": "types/index.d.ts",
|
||||||
|
"xo": {
|
||||||
|
"envs": [
|
||||||
|
"node",
|
||||||
|
"mocha"
|
||||||
|
],
|
||||||
|
"ignores": [
|
||||||
|
"test/_flow.js"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
314
mybulma/node_modules/@babel/highlight/node_modules/chalk/readme.md
generated
vendored
Normal file
314
mybulma/node_modules/@babel/highlight/node_modules/chalk/readme.md
generated
vendored
Normal file
|
@ -0,0 +1,314 @@
|
||||||
|
<h1 align="center">
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<img width="320" src="media/logo.svg" alt="Chalk">
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
> Terminal string styling done right
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) [![Mentioned in Awesome Node.js](https://awesome.re/mentioned-badge.svg)](https://github.com/sindresorhus/awesome-nodejs)
|
||||||
|
|
||||||
|
### [See what's new in Chalk 2](https://github.com/chalk/chalk/releases/tag/v2.0.0)
|
||||||
|
|
||||||
|
<img src="https://cdn.rawgit.com/chalk/ansi-styles/8261697c95bf34b6c7767e2cbe9941a851d59385/screenshot.svg" alt="" width="900">
|
||||||
|
|
||||||
|
|
||||||
|
## Highlights
|
||||||
|
|
||||||
|
- Expressive API
|
||||||
|
- Highly performant
|
||||||
|
- Ability to nest styles
|
||||||
|
- [256/Truecolor color support](#256-and-truecolor-color-support)
|
||||||
|
- Auto-detects color support
|
||||||
|
- Doesn't extend `String.prototype`
|
||||||
|
- Clean and focused
|
||||||
|
- Actively maintained
|
||||||
|
- [Used by ~23,000 packages](https://www.npmjs.com/browse/depended/chalk) as of December 31, 2017
|
||||||
|
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ npm install chalk
|
||||||
|
```
|
||||||
|
|
||||||
|
<a href="https://www.patreon.com/sindresorhus">
|
||||||
|
<img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" width="160">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
const chalk = require('chalk');
|
||||||
|
|
||||||
|
console.log(chalk.blue('Hello world!'));
|
||||||
|
```
|
||||||
|
|
||||||
|
Chalk comes with an easy to use composable API where you just chain and nest the styles you want.
|
||||||
|
|
||||||
|
```js
|
||||||
|
const chalk = require('chalk');
|
||||||
|
const log = console.log;
|
||||||
|
|
||||||
|
// Combine styled and normal strings
|
||||||
|
log(chalk.blue('Hello') + ' World' + chalk.red('!'));
|
||||||
|
|
||||||
|
// Compose multiple styles using the chainable API
|
||||||
|
log(chalk.blue.bgRed.bold('Hello world!'));
|
||||||
|
|
||||||
|
// Pass in multiple arguments
|
||||||
|
log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'));
|
||||||
|
|
||||||
|
// Nest styles
|
||||||
|
log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!'));
|
||||||
|
|
||||||
|
// Nest styles of the same type even (color, underline, background)
|
||||||
|
log(chalk.green(
|
||||||
|
'I am a green line ' +
|
||||||
|
chalk.blue.underline.bold('with a blue substring') +
|
||||||
|
' that becomes green again!'
|
||||||
|
));
|
||||||
|
|
||||||
|
// ES2015 template literal
|
||||||
|
log(`
|
||||||
|
CPU: ${chalk.red('90%')}
|
||||||
|
RAM: ${chalk.green('40%')}
|
||||||
|
DISK: ${chalk.yellow('70%')}
|
||||||
|
`);
|
||||||
|
|
||||||
|
// ES2015 tagged template literal
|
||||||
|
log(chalk`
|
||||||
|
CPU: {red ${cpu.totalPercent}%}
|
||||||
|
RAM: {green ${ram.used / ram.total * 100}%}
|
||||||
|
DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%}
|
||||||
|
`);
|
||||||
|
|
||||||
|
// Use RGB colors in terminal emulators that support it.
|
||||||
|
log(chalk.keyword('orange')('Yay for orange colored text!'));
|
||||||
|
log(chalk.rgb(123, 45, 67).underline('Underlined reddish color'));
|
||||||
|
log(chalk.hex('#DEADED').bold('Bold gray!'));
|
||||||
|
```
|
||||||
|
|
||||||
|
Easily define your own themes:
|
||||||
|
|
||||||
|
```js
|
||||||
|
const chalk = require('chalk');
|
||||||
|
|
||||||
|
const error = chalk.bold.red;
|
||||||
|
const warning = chalk.keyword('orange');
|
||||||
|
|
||||||
|
console.log(error('Error!'));
|
||||||
|
console.log(warning('Warning!'));
|
||||||
|
```
|
||||||
|
|
||||||
|
Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args):
|
||||||
|
|
||||||
|
```js
|
||||||
|
const name = 'Sindre';
|
||||||
|
console.log(chalk.green('Hello %s'), name);
|
||||||
|
//=> 'Hello Sindre'
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
### chalk.`<style>[.<style>...](string, [string...])`
|
||||||
|
|
||||||
|
Example: `chalk.red.bold.underline('Hello', 'world');`
|
||||||
|
|
||||||
|
Chain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter, and later styles take precedent in case of a conflict. This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`.
|
||||||
|
|
||||||
|
Multiple arguments will be separated by space.
|
||||||
|
|
||||||
|
### chalk.enabled
|
||||||
|
|
||||||
|
Color support is automatically detected, as is the level (see `chalk.level`). However, if you'd like to simply enable/disable Chalk, you can do so via the `.enabled` property.
|
||||||
|
|
||||||
|
Chalk is enabled by default unless explicitly disabled via the constructor or `chalk.level` is `0`.
|
||||||
|
|
||||||
|
If you need to change this in a reusable module, create a new instance:
|
||||||
|
|
||||||
|
```js
|
||||||
|
const ctx = new chalk.constructor({enabled: false});
|
||||||
|
```
|
||||||
|
|
||||||
|
### chalk.level
|
||||||
|
|
||||||
|
Color support is automatically detected, but you can override it by setting the `level` property. You should however only do this in your own code as it applies globally to all Chalk consumers.
|
||||||
|
|
||||||
|
If you need to change this in a reusable module, create a new instance:
|
||||||
|
|
||||||
|
```js
|
||||||
|
const ctx = new chalk.constructor({level: 0});
|
||||||
|
```
|
||||||
|
|
||||||
|
Levels are as follows:
|
||||||
|
|
||||||
|
0. All colors disabled
|
||||||
|
1. Basic color support (16 colors)
|
||||||
|
2. 256 color support
|
||||||
|
3. Truecolor support (16 million colors)
|
||||||
|
|
||||||
|
### chalk.supportsColor
|
||||||
|
|
||||||
|
Detect whether the terminal [supports color](https://github.com/chalk/supports-color). Used internally and handled for you, but exposed for convenience.
|
||||||
|
|
||||||
|
Can be overridden by the user with the flags `--color` and `--no-color`. For situations where using `--color` is not possible, add the environment variable `FORCE_COLOR=1` to forcefully enable color or `FORCE_COLOR=0` to forcefully disable. The use of `FORCE_COLOR` overrides all other color support checks.
|
||||||
|
|
||||||
|
Explicit 256/Truecolor mode can be enabled using the `--color=256` and `--color=16m` flags, respectively.
|
||||||
|
|
||||||
|
|
||||||
|
## Styles
|
||||||
|
|
||||||
|
### Modifiers
|
||||||
|
|
||||||
|
- `reset`
|
||||||
|
- `bold`
|
||||||
|
- `dim`
|
||||||
|
- `italic` *(Not widely supported)*
|
||||||
|
- `underline`
|
||||||
|
- `inverse`
|
||||||
|
- `hidden`
|
||||||
|
- `strikethrough` *(Not widely supported)*
|
||||||
|
- `visible` (Text is emitted only if enabled)
|
||||||
|
|
||||||
|
### Colors
|
||||||
|
|
||||||
|
- `black`
|
||||||
|
- `red`
|
||||||
|
- `green`
|
||||||
|
- `yellow`
|
||||||
|
- `blue` *(On Windows the bright version is used since normal blue is illegible)*
|
||||||
|
- `magenta`
|
||||||
|
- `cyan`
|
||||||
|
- `white`
|
||||||
|
- `gray` ("bright black")
|
||||||
|
- `redBright`
|
||||||
|
- `greenBright`
|
||||||
|
- `yellowBright`
|
||||||
|
- `blueBright`
|
||||||
|
- `magentaBright`
|
||||||
|
- `cyanBright`
|
||||||
|
- `whiteBright`
|
||||||
|
|
||||||
|
### Background colors
|
||||||
|
|
||||||
|
- `bgBlack`
|
||||||
|
- `bgRed`
|
||||||
|
- `bgGreen`
|
||||||
|
- `bgYellow`
|
||||||
|
- `bgBlue`
|
||||||
|
- `bgMagenta`
|
||||||
|
- `bgCyan`
|
||||||
|
- `bgWhite`
|
||||||
|
- `bgBlackBright`
|
||||||
|
- `bgRedBright`
|
||||||
|
- `bgGreenBright`
|
||||||
|
- `bgYellowBright`
|
||||||
|
- `bgBlueBright`
|
||||||
|
- `bgMagentaBright`
|
||||||
|
- `bgCyanBright`
|
||||||
|
- `bgWhiteBright`
|
||||||
|
|
||||||
|
|
||||||
|
## Tagged template literal
|
||||||
|
|
||||||
|
Chalk can be used as a [tagged template literal](http://exploringjs.com/es6/ch_template-literals.html#_tagged-template-literals).
|
||||||
|
|
||||||
|
```js
|
||||||
|
const chalk = require('chalk');
|
||||||
|
|
||||||
|
const miles = 18;
|
||||||
|
const calculateFeet = miles => miles * 5280;
|
||||||
|
|
||||||
|
console.log(chalk`
|
||||||
|
There are {bold 5280 feet} in a mile.
|
||||||
|
In {bold ${miles} miles}, there are {green.bold ${calculateFeet(miles)} feet}.
|
||||||
|
`);
|
||||||
|
```
|
||||||
|
|
||||||
|
Blocks are delimited by an opening curly brace (`{`), a style, some content, and a closing curly brace (`}`).
|
||||||
|
|
||||||
|
Template styles are chained exactly like normal Chalk styles. The following two statements are equivalent:
|
||||||
|
|
||||||
|
```js
|
||||||
|
console.log(chalk.bold.rgb(10, 100, 200)('Hello!'));
|
||||||
|
console.log(chalk`{bold.rgb(10,100,200) Hello!}`);
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that function styles (`rgb()`, `hsl()`, `keyword()`, etc.) may not contain spaces between parameters.
|
||||||
|
|
||||||
|
All interpolated values (`` chalk`${foo}` ``) are converted to strings via the `.toString()` method. All curly braces (`{` and `}`) in interpolated value strings are escaped.
|
||||||
|
|
||||||
|
|
||||||
|
## 256 and Truecolor color support
|
||||||
|
|
||||||
|
Chalk supports 256 colors and [Truecolor](https://gist.github.com/XVilka/8346728) (16 million colors) on supported terminal apps.
|
||||||
|
|
||||||
|
Colors are downsampled from 16 million RGB values to an ANSI color format that is supported by the terminal emulator (or by specifying `{level: n}` as a Chalk option). For example, Chalk configured to run at level 1 (basic color support) will downsample an RGB value of #FF0000 (red) to 31 (ANSI escape for red).
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
- `chalk.hex('#DEADED').underline('Hello, world!')`
|
||||||
|
- `chalk.keyword('orange')('Some orange text')`
|
||||||
|
- `chalk.rgb(15, 100, 204).inverse('Hello!')`
|
||||||
|
|
||||||
|
Background versions of these models are prefixed with `bg` and the first level of the module capitalized (e.g. `keyword` for foreground colors and `bgKeyword` for background colors).
|
||||||
|
|
||||||
|
- `chalk.bgHex('#DEADED').underline('Hello, world!')`
|
||||||
|
- `chalk.bgKeyword('orange')('Some orange text')`
|
||||||
|
- `chalk.bgRgb(15, 100, 204).inverse('Hello!')`
|
||||||
|
|
||||||
|
The following color models can be used:
|
||||||
|
|
||||||
|
- [`rgb`](https://en.wikipedia.org/wiki/RGB_color_model) - Example: `chalk.rgb(255, 136, 0).bold('Orange!')`
|
||||||
|
- [`hex`](https://en.wikipedia.org/wiki/Web_colors#Hex_triplet) - Example: `chalk.hex('#FF8800').bold('Orange!')`
|
||||||
|
- [`keyword`](https://www.w3.org/wiki/CSS/Properties/color/keywords) (CSS keywords) - Example: `chalk.keyword('orange').bold('Orange!')`
|
||||||
|
- [`hsl`](https://en.wikipedia.org/wiki/HSL_and_HSV) - Example: `chalk.hsl(32, 100, 50).bold('Orange!')`
|
||||||
|
- [`hsv`](https://en.wikipedia.org/wiki/HSL_and_HSV) - Example: `chalk.hsv(32, 100, 100).bold('Orange!')`
|
||||||
|
- [`hwb`](https://en.wikipedia.org/wiki/HWB_color_model) - Example: `chalk.hwb(32, 0, 50).bold('Orange!')`
|
||||||
|
- `ansi16`
|
||||||
|
- `ansi256`
|
||||||
|
|
||||||
|
|
||||||
|
## Windows
|
||||||
|
|
||||||
|
If you're on Windows, do yourself a favor and use [`cmder`](http://cmder.net/) instead of `cmd.exe`.
|
||||||
|
|
||||||
|
|
||||||
|
## Origin story
|
||||||
|
|
||||||
|
[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68) and the package is unmaintained. Although there are other packages, they either do too much or not enough. Chalk is a clean and focused alternative.
|
||||||
|
|
||||||
|
|
||||||
|
## Related
|
||||||
|
|
||||||
|
- [chalk-cli](https://github.com/chalk/chalk-cli) - CLI for this module
|
||||||
|
- [ansi-styles](https://github.com/chalk/ansi-styles) - ANSI escape codes for styling strings in the terminal
|
||||||
|
- [supports-color](https://github.com/chalk/supports-color) - Detect whether a terminal supports color
|
||||||
|
- [strip-ansi](https://github.com/chalk/strip-ansi) - Strip ANSI escape codes
|
||||||
|
- [strip-ansi-stream](https://github.com/chalk/strip-ansi-stream) - Strip ANSI escape codes from a stream
|
||||||
|
- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
|
||||||
|
- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
|
||||||
|
- [wrap-ansi](https://github.com/chalk/wrap-ansi) - Wordwrap a string with ANSI escape codes
|
||||||
|
- [slice-ansi](https://github.com/chalk/slice-ansi) - Slice a string with ANSI escape codes
|
||||||
|
- [color-convert](https://github.com/qix-/color-convert) - Converts colors between different models
|
||||||
|
- [chalk-animation](https://github.com/bokub/chalk-animation) - Animate strings in the terminal
|
||||||
|
- [gradient-string](https://github.com/bokub/gradient-string) - Apply color gradients to strings
|
||||||
|
- [chalk-pipe](https://github.com/LitoMore/chalk-pipe) - Create chalk style schemes with simpler style strings
|
||||||
|
- [terminal-link](https://github.com/sindresorhus/terminal-link) - Create clickable links in the terminal
|
||||||
|
|
||||||
|
|
||||||
|
## Maintainers
|
||||||
|
|
||||||
|
- [Sindre Sorhus](https://github.com/sindresorhus)
|
||||||
|
- [Josh Junon](https://github.com/qix-)
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
128
mybulma/node_modules/@babel/highlight/node_modules/chalk/templates.js
generated
vendored
Normal file
128
mybulma/node_modules/@babel/highlight/node_modules/chalk/templates.js
generated
vendored
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
'use strict';
|
||||||
|
const TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
|
||||||
|
const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
|
||||||
|
const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
|
||||||
|
const ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi;
|
||||||
|
|
||||||
|
const ESCAPES = new Map([
|
||||||
|
['n', '\n'],
|
||||||
|
['r', '\r'],
|
||||||
|
['t', '\t'],
|
||||||
|
['b', '\b'],
|
||||||
|
['f', '\f'],
|
||||||
|
['v', '\v'],
|
||||||
|
['0', '\0'],
|
||||||
|
['\\', '\\'],
|
||||||
|
['e', '\u001B'],
|
||||||
|
['a', '\u0007']
|
||||||
|
]);
|
||||||
|
|
||||||
|
function unescape(c) {
|
||||||
|
if ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {
|
||||||
|
return String.fromCharCode(parseInt(c.slice(1), 16));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ESCAPES.get(c) || c;
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseArguments(name, args) {
|
||||||
|
const results = [];
|
||||||
|
const chunks = args.trim().split(/\s*,\s*/g);
|
||||||
|
let matches;
|
||||||
|
|
||||||
|
for (const chunk of chunks) {
|
||||||
|
if (!isNaN(chunk)) {
|
||||||
|
results.push(Number(chunk));
|
||||||
|
} else if ((matches = chunk.match(STRING_REGEX))) {
|
||||||
|
results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));
|
||||||
|
} else {
|
||||||
|
throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseStyle(style) {
|
||||||
|
STYLE_REGEX.lastIndex = 0;
|
||||||
|
|
||||||
|
const results = [];
|
||||||
|
let matches;
|
||||||
|
|
||||||
|
while ((matches = STYLE_REGEX.exec(style)) !== null) {
|
||||||
|
const name = matches[1];
|
||||||
|
|
||||||
|
if (matches[2]) {
|
||||||
|
const args = parseArguments(name, matches[2]);
|
||||||
|
results.push([name].concat(args));
|
||||||
|
} else {
|
||||||
|
results.push([name]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildStyle(chalk, styles) {
|
||||||
|
const enabled = {};
|
||||||
|
|
||||||
|
for (const layer of styles) {
|
||||||
|
for (const style of layer.styles) {
|
||||||
|
enabled[style[0]] = layer.inverse ? null : style.slice(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let current = chalk;
|
||||||
|
for (const styleName of Object.keys(enabled)) {
|
||||||
|
if (Array.isArray(enabled[styleName])) {
|
||||||
|
if (!(styleName in current)) {
|
||||||
|
throw new Error(`Unknown Chalk style: ${styleName}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (enabled[styleName].length > 0) {
|
||||||
|
current = current[styleName].apply(current, enabled[styleName]);
|
||||||
|
} else {
|
||||||
|
current = current[styleName];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = (chalk, tmp) => {
|
||||||
|
const styles = [];
|
||||||
|
const chunks = [];
|
||||||
|
let chunk = [];
|
||||||
|
|
||||||
|
// eslint-disable-next-line max-params
|
||||||
|
tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {
|
||||||
|
if (escapeChar) {
|
||||||
|
chunk.push(unescape(escapeChar));
|
||||||
|
} else if (style) {
|
||||||
|
const str = chunk.join('');
|
||||||
|
chunk = [];
|
||||||
|
chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));
|
||||||
|
styles.push({inverse, styles: parseStyle(style)});
|
||||||
|
} else if (close) {
|
||||||
|
if (styles.length === 0) {
|
||||||
|
throw new Error('Found extraneous } in Chalk template literal');
|
||||||
|
}
|
||||||
|
|
||||||
|
chunks.push(buildStyle(chalk, styles)(chunk.join('')));
|
||||||
|
chunk = [];
|
||||||
|
styles.pop();
|
||||||
|
} else {
|
||||||
|
chunk.push(chr);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
chunks.push(chunk.join(''));
|
||||||
|
|
||||||
|
if (styles.length > 0) {
|
||||||
|
const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`;
|
||||||
|
throw new Error(errMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
return chunks.join('');
|
||||||
|
};
|
97
mybulma/node_modules/@babel/highlight/node_modules/chalk/types/index.d.ts
generated
vendored
Normal file
97
mybulma/node_modules/@babel/highlight/node_modules/chalk/types/index.d.ts
generated
vendored
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
// Type definitions for Chalk
|
||||||
|
// Definitions by: Thomas Sauer <https://github.com/t-sauer>
|
||||||
|
|
||||||
|
export const enum Level {
|
||||||
|
None = 0,
|
||||||
|
Basic = 1,
|
||||||
|
Ansi256 = 2,
|
||||||
|
TrueColor = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ChalkOptions {
|
||||||
|
enabled?: boolean;
|
||||||
|
level?: Level;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ChalkConstructor {
|
||||||
|
new (options?: ChalkOptions): Chalk;
|
||||||
|
(options?: ChalkOptions): Chalk;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ColorSupport {
|
||||||
|
level: Level;
|
||||||
|
hasBasic: boolean;
|
||||||
|
has256: boolean;
|
||||||
|
has16m: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Chalk {
|
||||||
|
(...text: string[]): string;
|
||||||
|
(text: TemplateStringsArray, ...placeholders: string[]): string;
|
||||||
|
constructor: ChalkConstructor;
|
||||||
|
enabled: boolean;
|
||||||
|
level: Level;
|
||||||
|
rgb(r: number, g: number, b: number): this;
|
||||||
|
hsl(h: number, s: number, l: number): this;
|
||||||
|
hsv(h: number, s: number, v: number): this;
|
||||||
|
hwb(h: number, w: number, b: number): this;
|
||||||
|
bgHex(color: string): this;
|
||||||
|
bgKeyword(color: string): this;
|
||||||
|
bgRgb(r: number, g: number, b: number): this;
|
||||||
|
bgHsl(h: number, s: number, l: number): this;
|
||||||
|
bgHsv(h: number, s: number, v: number): this;
|
||||||
|
bgHwb(h: number, w: number, b: number): this;
|
||||||
|
hex(color: string): this;
|
||||||
|
keyword(color: string): this;
|
||||||
|
|
||||||
|
readonly reset: this;
|
||||||
|
readonly bold: this;
|
||||||
|
readonly dim: this;
|
||||||
|
readonly italic: this;
|
||||||
|
readonly underline: this;
|
||||||
|
readonly inverse: this;
|
||||||
|
readonly hidden: this;
|
||||||
|
readonly strikethrough: this;
|
||||||
|
|
||||||
|
readonly visible: this;
|
||||||
|
|
||||||
|
readonly black: this;
|
||||||
|
readonly red: this;
|
||||||
|
readonly green: this;
|
||||||
|
readonly yellow: this;
|
||||||
|
readonly blue: this;
|
||||||
|
readonly magenta: this;
|
||||||
|
readonly cyan: this;
|
||||||
|
readonly white: this;
|
||||||
|
readonly gray: this;
|
||||||
|
readonly grey: this;
|
||||||
|
readonly blackBright: this;
|
||||||
|
readonly redBright: this;
|
||||||
|
readonly greenBright: this;
|
||||||
|
readonly yellowBright: this;
|
||||||
|
readonly blueBright: this;
|
||||||
|
readonly magentaBright: this;
|
||||||
|
readonly cyanBright: this;
|
||||||
|
readonly whiteBright: this;
|
||||||
|
|
||||||
|
readonly bgBlack: this;
|
||||||
|
readonly bgRed: this;
|
||||||
|
readonly bgGreen: this;
|
||||||
|
readonly bgYellow: this;
|
||||||
|
readonly bgBlue: this;
|
||||||
|
readonly bgMagenta: this;
|
||||||
|
readonly bgCyan: this;
|
||||||
|
readonly bgWhite: this;
|
||||||
|
readonly bgBlackBright: this;
|
||||||
|
readonly bgRedBright: this;
|
||||||
|
readonly bgGreenBright: this;
|
||||||
|
readonly bgYellowBright: this;
|
||||||
|
readonly bgBlueBright: this;
|
||||||
|
readonly bgMagentaBright: this;
|
||||||
|
readonly bgCyanBright: this;
|
||||||
|
readonly bgWhiteBright: this;
|
||||||
|
}
|
||||||
|
|
||||||
|
declare const chalk: Chalk & { supportsColor: ColorSupport };
|
||||||
|
|
||||||
|
export default chalk
|
54
mybulma/node_modules/@babel/highlight/node_modules/color-convert/CHANGELOG.md
generated
vendored
Normal file
54
mybulma/node_modules/@babel/highlight/node_modules/color-convert/CHANGELOG.md
generated
vendored
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
# 1.0.0 - 2016-01-07
|
||||||
|
|
||||||
|
- Removed: unused speed test
|
||||||
|
- Added: Automatic routing between previously unsupported conversions
|
||||||
|
([#27](https://github.com/Qix-/color-convert/pull/27))
|
||||||
|
- Removed: `xxx2xxx()` and `xxx2xxxRaw()` functions
|
||||||
|
([#27](https://github.com/Qix-/color-convert/pull/27))
|
||||||
|
- Removed: `convert()` class
|
||||||
|
([#27](https://github.com/Qix-/color-convert/pull/27))
|
||||||
|
- Changed: all functions to lookup dictionary
|
||||||
|
([#27](https://github.com/Qix-/color-convert/pull/27))
|
||||||
|
- Changed: `ansi` to `ansi256`
|
||||||
|
([#27](https://github.com/Qix-/color-convert/pull/27))
|
||||||
|
- Fixed: argument grouping for functions requiring only one argument
|
||||||
|
([#27](https://github.com/Qix-/color-convert/pull/27))
|
||||||
|
|
||||||
|
# 0.6.0 - 2015-07-23
|
||||||
|
|
||||||
|
- Added: methods to handle
|
||||||
|
[ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) 16/256 colors:
|
||||||
|
- rgb2ansi16
|
||||||
|
- rgb2ansi
|
||||||
|
- hsl2ansi16
|
||||||
|
- hsl2ansi
|
||||||
|
- hsv2ansi16
|
||||||
|
- hsv2ansi
|
||||||
|
- hwb2ansi16
|
||||||
|
- hwb2ansi
|
||||||
|
- cmyk2ansi16
|
||||||
|
- cmyk2ansi
|
||||||
|
- keyword2ansi16
|
||||||
|
- keyword2ansi
|
||||||
|
- ansi162rgb
|
||||||
|
- ansi162hsl
|
||||||
|
- ansi162hsv
|
||||||
|
- ansi162hwb
|
||||||
|
- ansi162cmyk
|
||||||
|
- ansi162keyword
|
||||||
|
- ansi2rgb
|
||||||
|
- ansi2hsl
|
||||||
|
- ansi2hsv
|
||||||
|
- ansi2hwb
|
||||||
|
- ansi2cmyk
|
||||||
|
- ansi2keyword
|
||||||
|
([#18](https://github.com/harthur/color-convert/pull/18))
|
||||||
|
|
||||||
|
# 0.5.3 - 2015-06-02
|
||||||
|
|
||||||
|
- Fixed: hsl2hsv does not return `NaN` anymore when using `[0,0,0]`
|
||||||
|
([#15](https://github.com/harthur/color-convert/issues/15))
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Check out commit logs for older releases
|
21
mybulma/node_modules/@babel/highlight/node_modules/color-convert/LICENSE
generated
vendored
Normal file
21
mybulma/node_modules/@babel/highlight/node_modules/color-convert/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
Copyright (c) 2011-2016 Heather Arthur <fayearthur@gmail.com>
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
68
mybulma/node_modules/@babel/highlight/node_modules/color-convert/README.md
generated
vendored
Normal file
68
mybulma/node_modules/@babel/highlight/node_modules/color-convert/README.md
generated
vendored
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
# color-convert
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/Qix-/color-convert.svg?branch=master)](https://travis-ci.org/Qix-/color-convert)
|
||||||
|
|
||||||
|
Color-convert is a color conversion library for JavaScript and node.
|
||||||
|
It converts all ways between `rgb`, `hsl`, `hsv`, `hwb`, `cmyk`, `ansi`, `ansi16`, `hex` strings, and CSS `keyword`s (will round to closest):
|
||||||
|
|
||||||
|
```js
|
||||||
|
var convert = require('color-convert');
|
||||||
|
|
||||||
|
convert.rgb.hsl(140, 200, 100); // [96, 48, 59]
|
||||||
|
convert.keyword.rgb('blue'); // [0, 0, 255]
|
||||||
|
|
||||||
|
var rgbChannels = convert.rgb.channels; // 3
|
||||||
|
var cmykChannels = convert.cmyk.channels; // 4
|
||||||
|
var ansiChannels = convert.ansi16.channels; // 1
|
||||||
|
```
|
||||||
|
|
||||||
|
# Install
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ npm install color-convert
|
||||||
|
```
|
||||||
|
|
||||||
|
# API
|
||||||
|
|
||||||
|
Simply get the property of the _from_ and _to_ conversion that you're looking for.
|
||||||
|
|
||||||
|
All functions have a rounded and unrounded variant. By default, return values are rounded. To get the unrounded (raw) results, simply tack on `.raw` to the function.
|
||||||
|
|
||||||
|
All 'from' functions have a hidden property called `.channels` that indicates the number of channels the function expects (not including alpha).
|
||||||
|
|
||||||
|
```js
|
||||||
|
var convert = require('color-convert');
|
||||||
|
|
||||||
|
// Hex to LAB
|
||||||
|
convert.hex.lab('DEADBF'); // [ 76, 21, -2 ]
|
||||||
|
convert.hex.lab.raw('DEADBF'); // [ 75.56213190997677, 20.653827952644754, -2.290532499330533 ]
|
||||||
|
|
||||||
|
// RGB to CMYK
|
||||||
|
convert.rgb.cmyk(167, 255, 4); // [ 35, 0, 98, 0 ]
|
||||||
|
convert.rgb.cmyk.raw(167, 255, 4); // [ 34.509803921568626, 0, 98.43137254901961, 0 ]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Arrays
|
||||||
|
All functions that accept multiple arguments also support passing an array.
|
||||||
|
|
||||||
|
Note that this does **not** apply to functions that convert from a color that only requires one value (e.g. `keyword`, `ansi256`, `hex`, etc.)
|
||||||
|
|
||||||
|
```js
|
||||||
|
var convert = require('color-convert');
|
||||||
|
|
||||||
|
convert.rgb.hex(123, 45, 67); // '7B2D43'
|
||||||
|
convert.rgb.hex([123, 45, 67]); // '7B2D43'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Routing
|
||||||
|
|
||||||
|
Conversions that don't have an _explicitly_ defined conversion (in [conversions.js](conversions.js)), but can be converted by means of sub-conversions (e.g. XYZ -> **RGB** -> CMYK), are automatically routed together. This allows just about any color model supported by `color-convert` to be converted to any other model, so long as a sub-conversion path exists. This is also true for conversions requiring more than one step in between (e.g. LCH -> **LAB** -> **XYZ** -> **RGB** -> Hex).
|
||||||
|
|
||||||
|
Keep in mind that extensive conversions _may_ result in a loss of precision, and exist only to be complete. For a list of "direct" (single-step) conversions, see [conversions.js](conversions.js).
|
||||||
|
|
||||||
|
# Contribute
|
||||||
|
|
||||||
|
If there is a new model you would like to support, or want to add a direct conversion between two existing models, please send us a pull request.
|
||||||
|
|
||||||
|
# License
|
||||||
|
Copyright © 2011-2016, Heather Arthur and Josh Junon. Licensed under the [MIT License](LICENSE).
|
868
mybulma/node_modules/@babel/highlight/node_modules/color-convert/conversions.js
generated
vendored
Normal file
868
mybulma/node_modules/@babel/highlight/node_modules/color-convert/conversions.js
generated
vendored
Normal file
|
@ -0,0 +1,868 @@
|
||||||
|
/* MIT license */
|
||||||
|
var cssKeywords = require('color-name');
|
||||||
|
|
||||||
|
// NOTE: conversions should only return primitive values (i.e. arrays, or
|
||||||
|
// values that give correct `typeof` results).
|
||||||
|
// do not use box values types (i.e. Number(), String(), etc.)
|
||||||
|
|
||||||
|
var reverseKeywords = {};
|
||||||
|
for (var key in cssKeywords) {
|
||||||
|
if (cssKeywords.hasOwnProperty(key)) {
|
||||||
|
reverseKeywords[cssKeywords[key]] = key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var convert = module.exports = {
|
||||||
|
rgb: {channels: 3, labels: 'rgb'},
|
||||||
|
hsl: {channels: 3, labels: 'hsl'},
|
||||||
|
hsv: {channels: 3, labels: 'hsv'},
|
||||||
|
hwb: {channels: 3, labels: 'hwb'},
|
||||||
|
cmyk: {channels: 4, labels: 'cmyk'},
|
||||||
|
xyz: {channels: 3, labels: 'xyz'},
|
||||||
|
lab: {channels: 3, labels: 'lab'},
|
||||||
|
lch: {channels: 3, labels: 'lch'},
|
||||||
|
hex: {channels: 1, labels: ['hex']},
|
||||||
|
keyword: {channels: 1, labels: ['keyword']},
|
||||||
|
ansi16: {channels: 1, labels: ['ansi16']},
|
||||||
|
ansi256: {channels: 1, labels: ['ansi256']},
|
||||||
|
hcg: {channels: 3, labels: ['h', 'c', 'g']},
|
||||||
|
apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
|
||||||
|
gray: {channels: 1, labels: ['gray']}
|
||||||
|
};
|
||||||
|
|
||||||
|
// hide .channels and .labels properties
|
||||||
|
for (var model in convert) {
|
||||||
|
if (convert.hasOwnProperty(model)) {
|
||||||
|
if (!('channels' in convert[model])) {
|
||||||
|
throw new Error('missing channels property: ' + model);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!('labels' in convert[model])) {
|
||||||
|
throw new Error('missing channel labels property: ' + model);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (convert[model].labels.length !== convert[model].channels) {
|
||||||
|
throw new Error('channel and label counts mismatch: ' + model);
|
||||||
|
}
|
||||||
|
|
||||||
|
var channels = convert[model].channels;
|
||||||
|
var labels = convert[model].labels;
|
||||||
|
delete convert[model].channels;
|
||||||
|
delete convert[model].labels;
|
||||||
|
Object.defineProperty(convert[model], 'channels', {value: channels});
|
||||||
|
Object.defineProperty(convert[model], 'labels', {value: labels});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
convert.rgb.hsl = function (rgb) {
|
||||||
|
var r = rgb[0] / 255;
|
||||||
|
var g = rgb[1] / 255;
|
||||||
|
var b = rgb[2] / 255;
|
||||||
|
var min = Math.min(r, g, b);
|
||||||
|
var max = Math.max(r, g, b);
|
||||||
|
var delta = max - min;
|
||||||
|
var h;
|
||||||
|
var s;
|
||||||
|
var l;
|
||||||
|
|
||||||
|
if (max === min) {
|
||||||
|
h = 0;
|
||||||
|
} else if (r === max) {
|
||||||
|
h = (g - b) / delta;
|
||||||
|
} else if (g === max) {
|
||||||
|
h = 2 + (b - r) / delta;
|
||||||
|
} else if (b === max) {
|
||||||
|
h = 4 + (r - g) / delta;
|
||||||
|
}
|
||||||
|
|
||||||
|
h = Math.min(h * 60, 360);
|
||||||
|
|
||||||
|
if (h < 0) {
|
||||||
|
h += 360;
|
||||||
|
}
|
||||||
|
|
||||||
|
l = (min + max) / 2;
|
||||||
|
|
||||||
|
if (max === min) {
|
||||||
|
s = 0;
|
||||||
|
} else if (l <= 0.5) {
|
||||||
|
s = delta / (max + min);
|
||||||
|
} else {
|
||||||
|
s = delta / (2 - max - min);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [h, s * 100, l * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.rgb.hsv = function (rgb) {
|
||||||
|
var rdif;
|
||||||
|
var gdif;
|
||||||
|
var bdif;
|
||||||
|
var h;
|
||||||
|
var s;
|
||||||
|
|
||||||
|
var r = rgb[0] / 255;
|
||||||
|
var g = rgb[1] / 255;
|
||||||
|
var b = rgb[2] / 255;
|
||||||
|
var v = Math.max(r, g, b);
|
||||||
|
var diff = v - Math.min(r, g, b);
|
||||||
|
var diffc = function (c) {
|
||||||
|
return (v - c) / 6 / diff + 1 / 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (diff === 0) {
|
||||||
|
h = s = 0;
|
||||||
|
} else {
|
||||||
|
s = diff / v;
|
||||||
|
rdif = diffc(r);
|
||||||
|
gdif = diffc(g);
|
||||||
|
bdif = diffc(b);
|
||||||
|
|
||||||
|
if (r === v) {
|
||||||
|
h = bdif - gdif;
|
||||||
|
} else if (g === v) {
|
||||||
|
h = (1 / 3) + rdif - bdif;
|
||||||
|
} else if (b === v) {
|
||||||
|
h = (2 / 3) + gdif - rdif;
|
||||||
|
}
|
||||||
|
if (h < 0) {
|
||||||
|
h += 1;
|
||||||
|
} else if (h > 1) {
|
||||||
|
h -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
h * 360,
|
||||||
|
s * 100,
|
||||||
|
v * 100
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.rgb.hwb = function (rgb) {
|
||||||
|
var r = rgb[0];
|
||||||
|
var g = rgb[1];
|
||||||
|
var b = rgb[2];
|
||||||
|
var h = convert.rgb.hsl(rgb)[0];
|
||||||
|
var w = 1 / 255 * Math.min(r, Math.min(g, b));
|
||||||
|
|
||||||
|
b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
|
||||||
|
|
||||||
|
return [h, w * 100, b * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.rgb.cmyk = function (rgb) {
|
||||||
|
var r = rgb[0] / 255;
|
||||||
|
var g = rgb[1] / 255;
|
||||||
|
var b = rgb[2] / 255;
|
||||||
|
var c;
|
||||||
|
var m;
|
||||||
|
var y;
|
||||||
|
var k;
|
||||||
|
|
||||||
|
k = Math.min(1 - r, 1 - g, 1 - b);
|
||||||
|
c = (1 - r - k) / (1 - k) || 0;
|
||||||
|
m = (1 - g - k) / (1 - k) || 0;
|
||||||
|
y = (1 - b - k) / (1 - k) || 0;
|
||||||
|
|
||||||
|
return [c * 100, m * 100, y * 100, k * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
|
||||||
|
* */
|
||||||
|
function comparativeDistance(x, y) {
|
||||||
|
return (
|
||||||
|
Math.pow(x[0] - y[0], 2) +
|
||||||
|
Math.pow(x[1] - y[1], 2) +
|
||||||
|
Math.pow(x[2] - y[2], 2)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
convert.rgb.keyword = function (rgb) {
|
||||||
|
var reversed = reverseKeywords[rgb];
|
||||||
|
if (reversed) {
|
||||||
|
return reversed;
|
||||||
|
}
|
||||||
|
|
||||||
|
var currentClosestDistance = Infinity;
|
||||||
|
var currentClosestKeyword;
|
||||||
|
|
||||||
|
for (var keyword in cssKeywords) {
|
||||||
|
if (cssKeywords.hasOwnProperty(keyword)) {
|
||||||
|
var value = cssKeywords[keyword];
|
||||||
|
|
||||||
|
// Compute comparative distance
|
||||||
|
var distance = comparativeDistance(rgb, value);
|
||||||
|
|
||||||
|
// Check if its less, if so set as closest
|
||||||
|
if (distance < currentClosestDistance) {
|
||||||
|
currentClosestDistance = distance;
|
||||||
|
currentClosestKeyword = keyword;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return currentClosestKeyword;
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.keyword.rgb = function (keyword) {
|
||||||
|
return cssKeywords[keyword];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.rgb.xyz = function (rgb) {
|
||||||
|
var r = rgb[0] / 255;
|
||||||
|
var g = rgb[1] / 255;
|
||||||
|
var b = rgb[2] / 255;
|
||||||
|
|
||||||
|
// assume sRGB
|
||||||
|
r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);
|
||||||
|
g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);
|
||||||
|
b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);
|
||||||
|
|
||||||
|
var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
|
||||||
|
var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
|
||||||
|
var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
|
||||||
|
|
||||||
|
return [x * 100, y * 100, z * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.rgb.lab = function (rgb) {
|
||||||
|
var xyz = convert.rgb.xyz(rgb);
|
||||||
|
var x = xyz[0];
|
||||||
|
var y = xyz[1];
|
||||||
|
var z = xyz[2];
|
||||||
|
var l;
|
||||||
|
var a;
|
||||||
|
var b;
|
||||||
|
|
||||||
|
x /= 95.047;
|
||||||
|
y /= 100;
|
||||||
|
z /= 108.883;
|
||||||
|
|
||||||
|
x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
|
||||||
|
y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
|
||||||
|
z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
|
||||||
|
|
||||||
|
l = (116 * y) - 16;
|
||||||
|
a = 500 * (x - y);
|
||||||
|
b = 200 * (y - z);
|
||||||
|
|
||||||
|
return [l, a, b];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hsl.rgb = function (hsl) {
|
||||||
|
var h = hsl[0] / 360;
|
||||||
|
var s = hsl[1] / 100;
|
||||||
|
var l = hsl[2] / 100;
|
||||||
|
var t1;
|
||||||
|
var t2;
|
||||||
|
var t3;
|
||||||
|
var rgb;
|
||||||
|
var val;
|
||||||
|
|
||||||
|
if (s === 0) {
|
||||||
|
val = l * 255;
|
||||||
|
return [val, val, val];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (l < 0.5) {
|
||||||
|
t2 = l * (1 + s);
|
||||||
|
} else {
|
||||||
|
t2 = l + s - l * s;
|
||||||
|
}
|
||||||
|
|
||||||
|
t1 = 2 * l - t2;
|
||||||
|
|
||||||
|
rgb = [0, 0, 0];
|
||||||
|
for (var i = 0; i < 3; i++) {
|
||||||
|
t3 = h + 1 / 3 * -(i - 1);
|
||||||
|
if (t3 < 0) {
|
||||||
|
t3++;
|
||||||
|
}
|
||||||
|
if (t3 > 1) {
|
||||||
|
t3--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (6 * t3 < 1) {
|
||||||
|
val = t1 + (t2 - t1) * 6 * t3;
|
||||||
|
} else if (2 * t3 < 1) {
|
||||||
|
val = t2;
|
||||||
|
} else if (3 * t3 < 2) {
|
||||||
|
val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
|
||||||
|
} else {
|
||||||
|
val = t1;
|
||||||
|
}
|
||||||
|
|
||||||
|
rgb[i] = val * 255;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rgb;
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hsl.hsv = function (hsl) {
|
||||||
|
var h = hsl[0];
|
||||||
|
var s = hsl[1] / 100;
|
||||||
|
var l = hsl[2] / 100;
|
||||||
|
var smin = s;
|
||||||
|
var lmin = Math.max(l, 0.01);
|
||||||
|
var sv;
|
||||||
|
var v;
|
||||||
|
|
||||||
|
l *= 2;
|
||||||
|
s *= (l <= 1) ? l : 2 - l;
|
||||||
|
smin *= lmin <= 1 ? lmin : 2 - lmin;
|
||||||
|
v = (l + s) / 2;
|
||||||
|
sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
|
||||||
|
|
||||||
|
return [h, sv * 100, v * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hsv.rgb = function (hsv) {
|
||||||
|
var h = hsv[0] / 60;
|
||||||
|
var s = hsv[1] / 100;
|
||||||
|
var v = hsv[2] / 100;
|
||||||
|
var hi = Math.floor(h) % 6;
|
||||||
|
|
||||||
|
var f = h - Math.floor(h);
|
||||||
|
var p = 255 * v * (1 - s);
|
||||||
|
var q = 255 * v * (1 - (s * f));
|
||||||
|
var t = 255 * v * (1 - (s * (1 - f)));
|
||||||
|
v *= 255;
|
||||||
|
|
||||||
|
switch (hi) {
|
||||||
|
case 0:
|
||||||
|
return [v, t, p];
|
||||||
|
case 1:
|
||||||
|
return [q, v, p];
|
||||||
|
case 2:
|
||||||
|
return [p, v, t];
|
||||||
|
case 3:
|
||||||
|
return [p, q, v];
|
||||||
|
case 4:
|
||||||
|
return [t, p, v];
|
||||||
|
case 5:
|
||||||
|
return [v, p, q];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hsv.hsl = function (hsv) {
|
||||||
|
var h = hsv[0];
|
||||||
|
var s = hsv[1] / 100;
|
||||||
|
var v = hsv[2] / 100;
|
||||||
|
var vmin = Math.max(v, 0.01);
|
||||||
|
var lmin;
|
||||||
|
var sl;
|
||||||
|
var l;
|
||||||
|
|
||||||
|
l = (2 - s) * v;
|
||||||
|
lmin = (2 - s) * vmin;
|
||||||
|
sl = s * vmin;
|
||||||
|
sl /= (lmin <= 1) ? lmin : 2 - lmin;
|
||||||
|
sl = sl || 0;
|
||||||
|
l /= 2;
|
||||||
|
|
||||||
|
return [h, sl * 100, l * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
// http://dev.w3.org/csswg/css-color/#hwb-to-rgb
|
||||||
|
convert.hwb.rgb = function (hwb) {
|
||||||
|
var h = hwb[0] / 360;
|
||||||
|
var wh = hwb[1] / 100;
|
||||||
|
var bl = hwb[2] / 100;
|
||||||
|
var ratio = wh + bl;
|
||||||
|
var i;
|
||||||
|
var v;
|
||||||
|
var f;
|
||||||
|
var n;
|
||||||
|
|
||||||
|
// wh + bl cant be > 1
|
||||||
|
if (ratio > 1) {
|
||||||
|
wh /= ratio;
|
||||||
|
bl /= ratio;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = Math.floor(6 * h);
|
||||||
|
v = 1 - bl;
|
||||||
|
f = 6 * h - i;
|
||||||
|
|
||||||
|
if ((i & 0x01) !== 0) {
|
||||||
|
f = 1 - f;
|
||||||
|
}
|
||||||
|
|
||||||
|
n = wh + f * (v - wh); // linear interpolation
|
||||||
|
|
||||||
|
var r;
|
||||||
|
var g;
|
||||||
|
var b;
|
||||||
|
switch (i) {
|
||||||
|
default:
|
||||||
|
case 6:
|
||||||
|
case 0: r = v; g = n; b = wh; break;
|
||||||
|
case 1: r = n; g = v; b = wh; break;
|
||||||
|
case 2: r = wh; g = v; b = n; break;
|
||||||
|
case 3: r = wh; g = n; b = v; break;
|
||||||
|
case 4: r = n; g = wh; b = v; break;
|
||||||
|
case 5: r = v; g = wh; b = n; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [r * 255, g * 255, b * 255];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.cmyk.rgb = function (cmyk) {
|
||||||
|
var c = cmyk[0] / 100;
|
||||||
|
var m = cmyk[1] / 100;
|
||||||
|
var y = cmyk[2] / 100;
|
||||||
|
var k = cmyk[3] / 100;
|
||||||
|
var r;
|
||||||
|
var g;
|
||||||
|
var b;
|
||||||
|
|
||||||
|
r = 1 - Math.min(1, c * (1 - k) + k);
|
||||||
|
g = 1 - Math.min(1, m * (1 - k) + k);
|
||||||
|
b = 1 - Math.min(1, y * (1 - k) + k);
|
||||||
|
|
||||||
|
return [r * 255, g * 255, b * 255];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.xyz.rgb = function (xyz) {
|
||||||
|
var x = xyz[0] / 100;
|
||||||
|
var y = xyz[1] / 100;
|
||||||
|
var z = xyz[2] / 100;
|
||||||
|
var r;
|
||||||
|
var g;
|
||||||
|
var b;
|
||||||
|
|
||||||
|
r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
|
||||||
|
g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
|
||||||
|
b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
|
||||||
|
|
||||||
|
// assume sRGB
|
||||||
|
r = r > 0.0031308
|
||||||
|
? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)
|
||||||
|
: r * 12.92;
|
||||||
|
|
||||||
|
g = g > 0.0031308
|
||||||
|
? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)
|
||||||
|
: g * 12.92;
|
||||||
|
|
||||||
|
b = b > 0.0031308
|
||||||
|
? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)
|
||||||
|
: b * 12.92;
|
||||||
|
|
||||||
|
r = Math.min(Math.max(0, r), 1);
|
||||||
|
g = Math.min(Math.max(0, g), 1);
|
||||||
|
b = Math.min(Math.max(0, b), 1);
|
||||||
|
|
||||||
|
return [r * 255, g * 255, b * 255];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.xyz.lab = function (xyz) {
|
||||||
|
var x = xyz[0];
|
||||||
|
var y = xyz[1];
|
||||||
|
var z = xyz[2];
|
||||||
|
var l;
|
||||||
|
var a;
|
||||||
|
var b;
|
||||||
|
|
||||||
|
x /= 95.047;
|
||||||
|
y /= 100;
|
||||||
|
z /= 108.883;
|
||||||
|
|
||||||
|
x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
|
||||||
|
y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
|
||||||
|
z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
|
||||||
|
|
||||||
|
l = (116 * y) - 16;
|
||||||
|
a = 500 * (x - y);
|
||||||
|
b = 200 * (y - z);
|
||||||
|
|
||||||
|
return [l, a, b];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.lab.xyz = function (lab) {
|
||||||
|
var l = lab[0];
|
||||||
|
var a = lab[1];
|
||||||
|
var b = lab[2];
|
||||||
|
var x;
|
||||||
|
var y;
|
||||||
|
var z;
|
||||||
|
|
||||||
|
y = (l + 16) / 116;
|
||||||
|
x = a / 500 + y;
|
||||||
|
z = y - b / 200;
|
||||||
|
|
||||||
|
var y2 = Math.pow(y, 3);
|
||||||
|
var x2 = Math.pow(x, 3);
|
||||||
|
var z2 = Math.pow(z, 3);
|
||||||
|
y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
|
||||||
|
x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
|
||||||
|
z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
|
||||||
|
|
||||||
|
x *= 95.047;
|
||||||
|
y *= 100;
|
||||||
|
z *= 108.883;
|
||||||
|
|
||||||
|
return [x, y, z];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.lab.lch = function (lab) {
|
||||||
|
var l = lab[0];
|
||||||
|
var a = lab[1];
|
||||||
|
var b = lab[2];
|
||||||
|
var hr;
|
||||||
|
var h;
|
||||||
|
var c;
|
||||||
|
|
||||||
|
hr = Math.atan2(b, a);
|
||||||
|
h = hr * 360 / 2 / Math.PI;
|
||||||
|
|
||||||
|
if (h < 0) {
|
||||||
|
h += 360;
|
||||||
|
}
|
||||||
|
|
||||||
|
c = Math.sqrt(a * a + b * b);
|
||||||
|
|
||||||
|
return [l, c, h];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.lch.lab = function (lch) {
|
||||||
|
var l = lch[0];
|
||||||
|
var c = lch[1];
|
||||||
|
var h = lch[2];
|
||||||
|
var a;
|
||||||
|
var b;
|
||||||
|
var hr;
|
||||||
|
|
||||||
|
hr = h / 360 * 2 * Math.PI;
|
||||||
|
a = c * Math.cos(hr);
|
||||||
|
b = c * Math.sin(hr);
|
||||||
|
|
||||||
|
return [l, a, b];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.rgb.ansi16 = function (args) {
|
||||||
|
var r = args[0];
|
||||||
|
var g = args[1];
|
||||||
|
var b = args[2];
|
||||||
|
var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization
|
||||||
|
|
||||||
|
value = Math.round(value / 50);
|
||||||
|
|
||||||
|
if (value === 0) {
|
||||||
|
return 30;
|
||||||
|
}
|
||||||
|
|
||||||
|
var ansi = 30
|
||||||
|
+ ((Math.round(b / 255) << 2)
|
||||||
|
| (Math.round(g / 255) << 1)
|
||||||
|
| Math.round(r / 255));
|
||||||
|
|
||||||
|
if (value === 2) {
|
||||||
|
ansi += 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ansi;
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hsv.ansi16 = function (args) {
|
||||||
|
// optimization here; we already know the value and don't need to get
|
||||||
|
// it converted for us.
|
||||||
|
return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.rgb.ansi256 = function (args) {
|
||||||
|
var r = args[0];
|
||||||
|
var g = args[1];
|
||||||
|
var b = args[2];
|
||||||
|
|
||||||
|
// we use the extended greyscale palette here, with the exception of
|
||||||
|
// black and white. normal palette only has 4 greyscale shades.
|
||||||
|
if (r === g && g === b) {
|
||||||
|
if (r < 8) {
|
||||||
|
return 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r > 248) {
|
||||||
|
return 231;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.round(((r - 8) / 247) * 24) + 232;
|
||||||
|
}
|
||||||
|
|
||||||
|
var ansi = 16
|
||||||
|
+ (36 * Math.round(r / 255 * 5))
|
||||||
|
+ (6 * Math.round(g / 255 * 5))
|
||||||
|
+ Math.round(b / 255 * 5);
|
||||||
|
|
||||||
|
return ansi;
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.ansi16.rgb = function (args) {
|
||||||
|
var color = args % 10;
|
||||||
|
|
||||||
|
// handle greyscale
|
||||||
|
if (color === 0 || color === 7) {
|
||||||
|
if (args > 50) {
|
||||||
|
color += 3.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
color = color / 10.5 * 255;
|
||||||
|
|
||||||
|
return [color, color, color];
|
||||||
|
}
|
||||||
|
|
||||||
|
var mult = (~~(args > 50) + 1) * 0.5;
|
||||||
|
var r = ((color & 1) * mult) * 255;
|
||||||
|
var g = (((color >> 1) & 1) * mult) * 255;
|
||||||
|
var b = (((color >> 2) & 1) * mult) * 255;
|
||||||
|
|
||||||
|
return [r, g, b];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.ansi256.rgb = function (args) {
|
||||||
|
// handle greyscale
|
||||||
|
if (args >= 232) {
|
||||||
|
var c = (args - 232) * 10 + 8;
|
||||||
|
return [c, c, c];
|
||||||
|
}
|
||||||
|
|
||||||
|
args -= 16;
|
||||||
|
|
||||||
|
var rem;
|
||||||
|
var r = Math.floor(args / 36) / 5 * 255;
|
||||||
|
var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
|
||||||
|
var b = (rem % 6) / 5 * 255;
|
||||||
|
|
||||||
|
return [r, g, b];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.rgb.hex = function (args) {
|
||||||
|
var integer = ((Math.round(args[0]) & 0xFF) << 16)
|
||||||
|
+ ((Math.round(args[1]) & 0xFF) << 8)
|
||||||
|
+ (Math.round(args[2]) & 0xFF);
|
||||||
|
|
||||||
|
var string = integer.toString(16).toUpperCase();
|
||||||
|
return '000000'.substring(string.length) + string;
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hex.rgb = function (args) {
|
||||||
|
var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
|
||||||
|
if (!match) {
|
||||||
|
return [0, 0, 0];
|
||||||
|
}
|
||||||
|
|
||||||
|
var colorString = match[0];
|
||||||
|
|
||||||
|
if (match[0].length === 3) {
|
||||||
|
colorString = colorString.split('').map(function (char) {
|
||||||
|
return char + char;
|
||||||
|
}).join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
var integer = parseInt(colorString, 16);
|
||||||
|
var r = (integer >> 16) & 0xFF;
|
||||||
|
var g = (integer >> 8) & 0xFF;
|
||||||
|
var b = integer & 0xFF;
|
||||||
|
|
||||||
|
return [r, g, b];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.rgb.hcg = function (rgb) {
|
||||||
|
var r = rgb[0] / 255;
|
||||||
|
var g = rgb[1] / 255;
|
||||||
|
var b = rgb[2] / 255;
|
||||||
|
var max = Math.max(Math.max(r, g), b);
|
||||||
|
var min = Math.min(Math.min(r, g), b);
|
||||||
|
var chroma = (max - min);
|
||||||
|
var grayscale;
|
||||||
|
var hue;
|
||||||
|
|
||||||
|
if (chroma < 1) {
|
||||||
|
grayscale = min / (1 - chroma);
|
||||||
|
} else {
|
||||||
|
grayscale = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chroma <= 0) {
|
||||||
|
hue = 0;
|
||||||
|
} else
|
||||||
|
if (max === r) {
|
||||||
|
hue = ((g - b) / chroma) % 6;
|
||||||
|
} else
|
||||||
|
if (max === g) {
|
||||||
|
hue = 2 + (b - r) / chroma;
|
||||||
|
} else {
|
||||||
|
hue = 4 + (r - g) / chroma + 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
hue /= 6;
|
||||||
|
hue %= 1;
|
||||||
|
|
||||||
|
return [hue * 360, chroma * 100, grayscale * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hsl.hcg = function (hsl) {
|
||||||
|
var s = hsl[1] / 100;
|
||||||
|
var l = hsl[2] / 100;
|
||||||
|
var c = 1;
|
||||||
|
var f = 0;
|
||||||
|
|
||||||
|
if (l < 0.5) {
|
||||||
|
c = 2.0 * s * l;
|
||||||
|
} else {
|
||||||
|
c = 2.0 * s * (1.0 - l);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c < 1.0) {
|
||||||
|
f = (l - 0.5 * c) / (1.0 - c);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [hsl[0], c * 100, f * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hsv.hcg = function (hsv) {
|
||||||
|
var s = hsv[1] / 100;
|
||||||
|
var v = hsv[2] / 100;
|
||||||
|
|
||||||
|
var c = s * v;
|
||||||
|
var f = 0;
|
||||||
|
|
||||||
|
if (c < 1.0) {
|
||||||
|
f = (v - c) / (1 - c);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [hsv[0], c * 100, f * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hcg.rgb = function (hcg) {
|
||||||
|
var h = hcg[0] / 360;
|
||||||
|
var c = hcg[1] / 100;
|
||||||
|
var g = hcg[2] / 100;
|
||||||
|
|
||||||
|
if (c === 0.0) {
|
||||||
|
return [g * 255, g * 255, g * 255];
|
||||||
|
}
|
||||||
|
|
||||||
|
var pure = [0, 0, 0];
|
||||||
|
var hi = (h % 1) * 6;
|
||||||
|
var v = hi % 1;
|
||||||
|
var w = 1 - v;
|
||||||
|
var mg = 0;
|
||||||
|
|
||||||
|
switch (Math.floor(hi)) {
|
||||||
|
case 0:
|
||||||
|
pure[0] = 1; pure[1] = v; pure[2] = 0; break;
|
||||||
|
case 1:
|
||||||
|
pure[0] = w; pure[1] = 1; pure[2] = 0; break;
|
||||||
|
case 2:
|
||||||
|
pure[0] = 0; pure[1] = 1; pure[2] = v; break;
|
||||||
|
case 3:
|
||||||
|
pure[0] = 0; pure[1] = w; pure[2] = 1; break;
|
||||||
|
case 4:
|
||||||
|
pure[0] = v; pure[1] = 0; pure[2] = 1; break;
|
||||||
|
default:
|
||||||
|
pure[0] = 1; pure[1] = 0; pure[2] = w;
|
||||||
|
}
|
||||||
|
|
||||||
|
mg = (1.0 - c) * g;
|
||||||
|
|
||||||
|
return [
|
||||||
|
(c * pure[0] + mg) * 255,
|
||||||
|
(c * pure[1] + mg) * 255,
|
||||||
|
(c * pure[2] + mg) * 255
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hcg.hsv = function (hcg) {
|
||||||
|
var c = hcg[1] / 100;
|
||||||
|
var g = hcg[2] / 100;
|
||||||
|
|
||||||
|
var v = c + g * (1.0 - c);
|
||||||
|
var f = 0;
|
||||||
|
|
||||||
|
if (v > 0.0) {
|
||||||
|
f = c / v;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [hcg[0], f * 100, v * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hcg.hsl = function (hcg) {
|
||||||
|
var c = hcg[1] / 100;
|
||||||
|
var g = hcg[2] / 100;
|
||||||
|
|
||||||
|
var l = g * (1.0 - c) + 0.5 * c;
|
||||||
|
var s = 0;
|
||||||
|
|
||||||
|
if (l > 0.0 && l < 0.5) {
|
||||||
|
s = c / (2 * l);
|
||||||
|
} else
|
||||||
|
if (l >= 0.5 && l < 1.0) {
|
||||||
|
s = c / (2 * (1 - l));
|
||||||
|
}
|
||||||
|
|
||||||
|
return [hcg[0], s * 100, l * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hcg.hwb = function (hcg) {
|
||||||
|
var c = hcg[1] / 100;
|
||||||
|
var g = hcg[2] / 100;
|
||||||
|
var v = c + g * (1.0 - c);
|
||||||
|
return [hcg[0], (v - c) * 100, (1 - v) * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.hwb.hcg = function (hwb) {
|
||||||
|
var w = hwb[1] / 100;
|
||||||
|
var b = hwb[2] / 100;
|
||||||
|
var v = 1 - b;
|
||||||
|
var c = v - w;
|
||||||
|
var g = 0;
|
||||||
|
|
||||||
|
if (c < 1) {
|
||||||
|
g = (v - c) / (1 - c);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [hwb[0], c * 100, g * 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.apple.rgb = function (apple) {
|
||||||
|
return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.rgb.apple = function (rgb) {
|
||||||
|
return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.gray.rgb = function (args) {
|
||||||
|
return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.gray.hsl = convert.gray.hsv = function (args) {
|
||||||
|
return [0, 0, args[0]];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.gray.hwb = function (gray) {
|
||||||
|
return [0, 100, gray[0]];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.gray.cmyk = function (gray) {
|
||||||
|
return [0, 0, 0, gray[0]];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.gray.lab = function (gray) {
|
||||||
|
return [gray[0], 0, 0];
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.gray.hex = function (gray) {
|
||||||
|
var val = Math.round(gray[0] / 100 * 255) & 0xFF;
|
||||||
|
var integer = (val << 16) + (val << 8) + val;
|
||||||
|
|
||||||
|
var string = integer.toString(16).toUpperCase();
|
||||||
|
return '000000'.substring(string.length) + string;
|
||||||
|
};
|
||||||
|
|
||||||
|
convert.rgb.gray = function (rgb) {
|
||||||
|
var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
|
||||||
|
return [val / 255 * 100];
|
||||||
|
};
|
78
mybulma/node_modules/@babel/highlight/node_modules/color-convert/index.js
generated
vendored
Normal file
78
mybulma/node_modules/@babel/highlight/node_modules/color-convert/index.js
generated
vendored
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
var conversions = require('./conversions');
|
||||||
|
var route = require('./route');
|
||||||
|
|
||||||
|
var convert = {};
|
||||||
|
|
||||||
|
var models = Object.keys(conversions);
|
||||||
|
|
||||||
|
function wrapRaw(fn) {
|
||||||
|
var wrappedFn = function (args) {
|
||||||
|
if (args === undefined || args === null) {
|
||||||
|
return args;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (arguments.length > 1) {
|
||||||
|
args = Array.prototype.slice.call(arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
return fn(args);
|
||||||
|
};
|
||||||
|
|
||||||
|
// preserve .conversion property if there is one
|
||||||
|
if ('conversion' in fn) {
|
||||||
|
wrappedFn.conversion = fn.conversion;
|
||||||
|
}
|
||||||
|
|
||||||
|
return wrappedFn;
|
||||||
|
}
|
||||||
|
|
||||||
|
function wrapRounded(fn) {
|
||||||
|
var wrappedFn = function (args) {
|
||||||
|
if (args === undefined || args === null) {
|
||||||
|
return args;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (arguments.length > 1) {
|
||||||
|
args = Array.prototype.slice.call(arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = fn(args);
|
||||||
|
|
||||||
|
// we're assuming the result is an array here.
|
||||||
|
// see notice in conversions.js; don't use box types
|
||||||
|
// in conversion functions.
|
||||||
|
if (typeof result === 'object') {
|
||||||
|
for (var len = result.length, i = 0; i < len; i++) {
|
||||||
|
result[i] = Math.round(result[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
// preserve .conversion property if there is one
|
||||||
|
if ('conversion' in fn) {
|
||||||
|
wrappedFn.conversion = fn.conversion;
|
||||||
|
}
|
||||||
|
|
||||||
|
return wrappedFn;
|
||||||
|
}
|
||||||
|
|
||||||
|
models.forEach(function (fromModel) {
|
||||||
|
convert[fromModel] = {};
|
||||||
|
|
||||||
|
Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
|
||||||
|
Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
|
||||||
|
|
||||||
|
var routes = route(fromModel);
|
||||||
|
var routeModels = Object.keys(routes);
|
||||||
|
|
||||||
|
routeModels.forEach(function (toModel) {
|
||||||
|
var fn = routes[toModel];
|
||||||
|
|
||||||
|
convert[fromModel][toModel] = wrapRounded(fn);
|
||||||
|
convert[fromModel][toModel].raw = wrapRaw(fn);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = convert;
|
46
mybulma/node_modules/@babel/highlight/node_modules/color-convert/package.json
generated
vendored
Normal file
46
mybulma/node_modules/@babel/highlight/node_modules/color-convert/package.json
generated
vendored
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
{
|
||||||
|
"name": "color-convert",
|
||||||
|
"description": "Plain color conversion functions",
|
||||||
|
"version": "1.9.3",
|
||||||
|
"author": "Heather Arthur <fayearthur@gmail.com>",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": "Qix-/color-convert",
|
||||||
|
"scripts": {
|
||||||
|
"pretest": "xo",
|
||||||
|
"test": "node test/basic.js"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"color",
|
||||||
|
"colour",
|
||||||
|
"convert",
|
||||||
|
"converter",
|
||||||
|
"conversion",
|
||||||
|
"rgb",
|
||||||
|
"hsl",
|
||||||
|
"hsv",
|
||||||
|
"hwb",
|
||||||
|
"cmyk",
|
||||||
|
"ansi",
|
||||||
|
"ansi16"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
"index.js",
|
||||||
|
"conversions.js",
|
||||||
|
"css-keywords.js",
|
||||||
|
"route.js"
|
||||||
|
],
|
||||||
|
"xo": {
|
||||||
|
"rules": {
|
||||||
|
"default-case": 0,
|
||||||
|
"no-inline-comments": 0,
|
||||||
|
"operator-linebreak": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"chalk": "1.1.1",
|
||||||
|
"xo": "0.11.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"color-name": "1.1.3"
|
||||||
|
}
|
||||||
|
}
|
97
mybulma/node_modules/@babel/highlight/node_modules/color-convert/route.js
generated
vendored
Normal file
97
mybulma/node_modules/@babel/highlight/node_modules/color-convert/route.js
generated
vendored
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
var conversions = require('./conversions');
|
||||||
|
|
||||||
|
/*
|
||||||
|
this function routes a model to all other models.
|
||||||
|
|
||||||
|
all functions that are routed have a property `.conversion` attached
|
||||||
|
to the returned synthetic function. This property is an array
|
||||||
|
of strings, each with the steps in between the 'from' and 'to'
|
||||||
|
color models (inclusive).
|
||||||
|
|
||||||
|
conversions that are not possible simply are not included.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function buildGraph() {
|
||||||
|
var graph = {};
|
||||||
|
// https://jsperf.com/object-keys-vs-for-in-with-closure/3
|
||||||
|
var models = Object.keys(conversions);
|
||||||
|
|
||||||
|
for (var len = models.length, i = 0; i < len; i++) {
|
||||||
|
graph[models[i]] = {
|
||||||
|
// http://jsperf.com/1-vs-infinity
|
||||||
|
// micro-opt, but this is simple.
|
||||||
|
distance: -1,
|
||||||
|
parent: null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return graph;
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://en.wikipedia.org/wiki/Breadth-first_search
|
||||||
|
function deriveBFS(fromModel) {
|
||||||
|
var graph = buildGraph();
|
||||||
|
var queue = [fromModel]; // unshift -> queue -> pop
|
||||||
|
|
||||||
|
graph[fromModel].distance = 0;
|
||||||
|
|
||||||
|
while (queue.length) {
|
||||||
|
var current = queue.pop();
|
||||||
|
var adjacents = Object.keys(conversions[current]);
|
||||||
|
|
||||||
|
for (var len = adjacents.length, i = 0; i < len; i++) {
|
||||||
|
var adjacent = adjacents[i];
|
||||||
|
var node = graph[adjacent];
|
||||||
|
|
||||||
|
if (node.distance === -1) {
|
||||||
|
node.distance = graph[current].distance + 1;
|
||||||
|
node.parent = current;
|
||||||
|
queue.unshift(adjacent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return graph;
|
||||||
|
}
|
||||||
|
|
||||||
|
function link(from, to) {
|
||||||
|
return function (args) {
|
||||||
|
return to(from(args));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function wrapConversion(toModel, graph) {
|
||||||
|
var path = [graph[toModel].parent, toModel];
|
||||||
|
var fn = conversions[graph[toModel].parent][toModel];
|
||||||
|
|
||||||
|
var cur = graph[toModel].parent;
|
||||||
|
while (graph[cur].parent) {
|
||||||
|
path.unshift(graph[cur].parent);
|
||||||
|
fn = link(conversions[graph[cur].parent][cur], fn);
|
||||||
|
cur = graph[cur].parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn.conversion = path;
|
||||||
|
return fn;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = function (fromModel) {
|
||||||
|
var graph = deriveBFS(fromModel);
|
||||||
|
var conversion = {};
|
||||||
|
|
||||||
|
var models = Object.keys(graph);
|
||||||
|
for (var len = models.length, i = 0; i < len; i++) {
|
||||||
|
var toModel = models[i];
|
||||||
|
var node = graph[toModel];
|
||||||
|
|
||||||
|
if (node.parent === null) {
|
||||||
|
// no possible conversion, or this node is the source model.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
conversion[toModel] = wrapConversion(toModel, graph);
|
||||||
|
}
|
||||||
|
|
||||||
|
return conversion;
|
||||||
|
};
|
||||||
|
|
43
mybulma/node_modules/@babel/highlight/node_modules/color-name/.eslintrc.json
generated
vendored
Normal file
43
mybulma/node_modules/@babel/highlight/node_modules/color-name/.eslintrc.json
generated
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"node": true,
|
||||||
|
"commonjs": true,
|
||||||
|
"es6": true
|
||||||
|
},
|
||||||
|
"extends": "eslint:recommended",
|
||||||
|
"rules": {
|
||||||
|
"strict": 2,
|
||||||
|
"indent": 0,
|
||||||
|
"linebreak-style": 0,
|
||||||
|
"quotes": 0,
|
||||||
|
"semi": 0,
|
||||||
|
"no-cond-assign": 1,
|
||||||
|
"no-constant-condition": 1,
|
||||||
|
"no-duplicate-case": 1,
|
||||||
|
"no-empty": 1,
|
||||||
|
"no-ex-assign": 1,
|
||||||
|
"no-extra-boolean-cast": 1,
|
||||||
|
"no-extra-semi": 1,
|
||||||
|
"no-fallthrough": 1,
|
||||||
|
"no-func-assign": 1,
|
||||||
|
"no-global-assign": 1,
|
||||||
|
"no-implicit-globals": 2,
|
||||||
|
"no-inner-declarations": ["error", "functions"],
|
||||||
|
"no-irregular-whitespace": 2,
|
||||||
|
"no-loop-func": 1,
|
||||||
|
"no-multi-str": 1,
|
||||||
|
"no-mixed-spaces-and-tabs": 1,
|
||||||
|
"no-proto": 1,
|
||||||
|
"no-sequences": 1,
|
||||||
|
"no-throw-literal": 1,
|
||||||
|
"no-unmodified-loop-condition": 1,
|
||||||
|
"no-useless-call": 1,
|
||||||
|
"no-void": 1,
|
||||||
|
"no-with": 2,
|
||||||
|
"wrap-iife": 1,
|
||||||
|
"no-redeclare": 1,
|
||||||
|
"no-unused-vars": ["error", { "vars": "all", "args": "none" }],
|
||||||
|
"no-sparse-arrays": 1
|
||||||
|
}
|
||||||
|
}
|
107
mybulma/node_modules/@babel/highlight/node_modules/color-name/.npmignore
generated
vendored
Normal file
107
mybulma/node_modules/@babel/highlight/node_modules/color-name/.npmignore
generated
vendored
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
//this will affect all the git repos
|
||||||
|
git config --global core.excludesfile ~/.gitignore
|
||||||
|
|
||||||
|
|
||||||
|
//update files since .ignore won't if already tracked
|
||||||
|
git rm --cached <file>
|
||||||
|
|
||||||
|
# Compiled source #
|
||||||
|
###################
|
||||||
|
*.com
|
||||||
|
*.class
|
||||||
|
*.dll
|
||||||
|
*.exe
|
||||||
|
*.o
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Packages #
|
||||||
|
############
|
||||||
|
# it's better to unpack these files and commit the raw source
|
||||||
|
# git has its own built in compression methods
|
||||||
|
*.7z
|
||||||
|
*.dmg
|
||||||
|
*.gz
|
||||||
|
*.iso
|
||||||
|
*.jar
|
||||||
|
*.rar
|
||||||
|
*.tar
|
||||||
|
*.zip
|
||||||
|
|
||||||
|
# Logs and databases #
|
||||||
|
######################
|
||||||
|
*.log
|
||||||
|
*.sql
|
||||||
|
*.sqlite
|
||||||
|
|
||||||
|
# OS generated files #
|
||||||
|
######################
|
||||||
|
.DS_Store
|
||||||
|
.DS_Store?
|
||||||
|
._*
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
# Icon?
|
||||||
|
ehthumbs.db
|
||||||
|
Thumbs.db
|
||||||
|
.cache
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.tmproj
|
||||||
|
*.esproj
|
||||||
|
nbproject
|
||||||
|
|
||||||
|
# Numerous always-ignore extensions #
|
||||||
|
#####################################
|
||||||
|
*.diff
|
||||||
|
*.err
|
||||||
|
*.orig
|
||||||
|
*.rej
|
||||||
|
*.swn
|
||||||
|
*.swo
|
||||||
|
*.swp
|
||||||
|
*.vi
|
||||||
|
*~
|
||||||
|
*.sass-cache
|
||||||
|
*.grunt
|
||||||
|
*.tmp
|
||||||
|
|
||||||
|
# Dreamweaver added files #
|
||||||
|
###########################
|
||||||
|
_notes
|
||||||
|
dwsync.xml
|
||||||
|
|
||||||
|
# Komodo #
|
||||||
|
###########################
|
||||||
|
*.komodoproject
|
||||||
|
.komodotools
|
||||||
|
|
||||||
|
# Node #
|
||||||
|
#####################
|
||||||
|
node_modules
|
||||||
|
|
||||||
|
# Bower #
|
||||||
|
#####################
|
||||||
|
bower_components
|
||||||
|
|
||||||
|
# Folders to ignore #
|
||||||
|
#####################
|
||||||
|
.hg
|
||||||
|
.svn
|
||||||
|
.CVS
|
||||||
|
intermediate
|
||||||
|
publish
|
||||||
|
.idea
|
||||||
|
.graphics
|
||||||
|
_test
|
||||||
|
_archive
|
||||||
|
uploads
|
||||||
|
tmp
|
||||||
|
|
||||||
|
# Vim files to ignore #
|
||||||
|
#######################
|
||||||
|
.VimballRecord
|
||||||
|
.netrwhist
|
||||||
|
|
||||||
|
bundle.*
|
||||||
|
|
||||||
|
_demo
|
8
mybulma/node_modules/@babel/highlight/node_modules/color-name/LICENSE
generated
vendored
Normal file
8
mybulma/node_modules/@babel/highlight/node_modules/color-name/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
Copyright (c) 2015 Dmitry Ivanov
|
||||||
|
|
||||||
|
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.
|
11
mybulma/node_modules/@babel/highlight/node_modules/color-name/README.md
generated
vendored
Normal file
11
mybulma/node_modules/@babel/highlight/node_modules/color-name/README.md
generated
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors.
|
||||||
|
|
||||||
|
[![NPM](https://nodei.co/npm/color-name.png?mini=true)](https://nodei.co/npm/color-name/)
|
||||||
|
|
||||||
|
|
||||||
|
```js
|
||||||
|
var colors = require('color-name');
|
||||||
|
colors.red //[255,0,0]
|
||||||
|
```
|
||||||
|
|
||||||
|
<a href="LICENSE"><img src="https://upload.wikimedia.org/wikipedia/commons/0/0c/MIT_logo.svg" width="120"/></a>
|
152
mybulma/node_modules/@babel/highlight/node_modules/color-name/index.js
generated
vendored
Normal file
152
mybulma/node_modules/@babel/highlight/node_modules/color-name/index.js
generated
vendored
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
"aliceblue": [240, 248, 255],
|
||||||
|
"antiquewhite": [250, 235, 215],
|
||||||
|
"aqua": [0, 255, 255],
|
||||||
|
"aquamarine": [127, 255, 212],
|
||||||
|
"azure": [240, 255, 255],
|
||||||
|
"beige": [245, 245, 220],
|
||||||
|
"bisque": [255, 228, 196],
|
||||||
|
"black": [0, 0, 0],
|
||||||
|
"blanchedalmond": [255, 235, 205],
|
||||||
|
"blue": [0, 0, 255],
|
||||||
|
"blueviolet": [138, 43, 226],
|
||||||
|
"brown": [165, 42, 42],
|
||||||
|
"burlywood": [222, 184, 135],
|
||||||
|
"cadetblue": [95, 158, 160],
|
||||||
|
"chartreuse": [127, 255, 0],
|
||||||
|
"chocolate": [210, 105, 30],
|
||||||
|
"coral": [255, 127, 80],
|
||||||
|
"cornflowerblue": [100, 149, 237],
|
||||||
|
"cornsilk": [255, 248, 220],
|
||||||
|
"crimson": [220, 20, 60],
|
||||||
|
"cyan": [0, 255, 255],
|
||||||
|
"darkblue": [0, 0, 139],
|
||||||
|
"darkcyan": [0, 139, 139],
|
||||||
|
"darkgoldenrod": [184, 134, 11],
|
||||||
|
"darkgray": [169, 169, 169],
|
||||||
|
"darkgreen": [0, 100, 0],
|
||||||
|
"darkgrey": [169, 169, 169],
|
||||||
|
"darkkhaki": [189, 183, 107],
|
||||||
|
"darkmagenta": [139, 0, 139],
|
||||||
|
"darkolivegreen": [85, 107, 47],
|
||||||
|
"darkorange": [255, 140, 0],
|
||||||
|
"darkorchid": [153, 50, 204],
|
||||||
|
"darkred": [139, 0, 0],
|
||||||
|
"darksalmon": [233, 150, 122],
|
||||||
|
"darkseagreen": [143, 188, 143],
|
||||||
|
"darkslateblue": [72, 61, 139],
|
||||||
|
"darkslategray": [47, 79, 79],
|
||||||
|
"darkslategrey": [47, 79, 79],
|
||||||
|
"darkturquoise": [0, 206, 209],
|
||||||
|
"darkviolet": [148, 0, 211],
|
||||||
|
"deeppink": [255, 20, 147],
|
||||||
|
"deepskyblue": [0, 191, 255],
|
||||||
|
"dimgray": [105, 105, 105],
|
||||||
|
"dimgrey": [105, 105, 105],
|
||||||
|
"dodgerblue": [30, 144, 255],
|
||||||
|
"firebrick": [178, 34, 34],
|
||||||
|
"floralwhite": [255, 250, 240],
|
||||||
|
"forestgreen": [34, 139, 34],
|
||||||
|
"fuchsia": [255, 0, 255],
|
||||||
|
"gainsboro": [220, 220, 220],
|
||||||
|
"ghostwhite": [248, 248, 255],
|
||||||
|
"gold": [255, 215, 0],
|
||||||
|
"goldenrod": [218, 165, 32],
|
||||||
|
"gray": [128, 128, 128],
|
||||||
|
"green": [0, 128, 0],
|
||||||
|
"greenyellow": [173, 255, 47],
|
||||||
|
"grey": [128, 128, 128],
|
||||||
|
"honeydew": [240, 255, 240],
|
||||||
|
"hotpink": [255, 105, 180],
|
||||||
|
"indianred": [205, 92, 92],
|
||||||
|
"indigo": [75, 0, 130],
|
||||||
|
"ivory": [255, 255, 240],
|
||||||
|
"khaki": [240, 230, 140],
|
||||||
|
"lavender": [230, 230, 250],
|
||||||
|
"lavenderblush": [255, 240, 245],
|
||||||
|
"lawngreen": [124, 252, 0],
|
||||||
|
"lemonchiffon": [255, 250, 205],
|
||||||
|
"lightblue": [173, 216, 230],
|
||||||
|
"lightcoral": [240, 128, 128],
|
||||||
|
"lightcyan": [224, 255, 255],
|
||||||
|
"lightgoldenrodyellow": [250, 250, 210],
|
||||||
|
"lightgray": [211, 211, 211],
|
||||||
|
"lightgreen": [144, 238, 144],
|
||||||
|
"lightgrey": [211, 211, 211],
|
||||||
|
"lightpink": [255, 182, 193],
|
||||||
|
"lightsalmon": [255, 160, 122],
|
||||||
|
"lightseagreen": [32, 178, 170],
|
||||||
|
"lightskyblue": [135, 206, 250],
|
||||||
|
"lightslategray": [119, 136, 153],
|
||||||
|
"lightslategrey": [119, 136, 153],
|
||||||
|
"lightsteelblue": [176, 196, 222],
|
||||||
|
"lightyellow": [255, 255, 224],
|
||||||
|
"lime": [0, 255, 0],
|
||||||
|
"limegreen": [50, 205, 50],
|
||||||
|
"linen": [250, 240, 230],
|
||||||
|
"magenta": [255, 0, 255],
|
||||||
|
"maroon": [128, 0, 0],
|
||||||
|
"mediumaquamarine": [102, 205, 170],
|
||||||
|
"mediumblue": [0, 0, 205],
|
||||||
|
"mediumorchid": [186, 85, 211],
|
||||||
|
"mediumpurple": [147, 112, 219],
|
||||||
|
"mediumseagreen": [60, 179, 113],
|
||||||
|
"mediumslateblue": [123, 104, 238],
|
||||||
|
"mediumspringgreen": [0, 250, 154],
|
||||||
|
"mediumturquoise": [72, 209, 204],
|
||||||
|
"mediumvioletred": [199, 21, 133],
|
||||||
|
"midnightblue": [25, 25, 112],
|
||||||
|
"mintcream": [245, 255, 250],
|
||||||
|
"mistyrose": [255, 228, 225],
|
||||||
|
"moccasin": [255, 228, 181],
|
||||||
|
"navajowhite": [255, 222, 173],
|
||||||
|
"navy": [0, 0, 128],
|
||||||
|
"oldlace": [253, 245, 230],
|
||||||
|
"olive": [128, 128, 0],
|
||||||
|
"olivedrab": [107, 142, 35],
|
||||||
|
"orange": [255, 165, 0],
|
||||||
|
"orangered": [255, 69, 0],
|
||||||
|
"orchid": [218, 112, 214],
|
||||||
|
"palegoldenrod": [238, 232, 170],
|
||||||
|
"palegreen": [152, 251, 152],
|
||||||
|
"paleturquoise": [175, 238, 238],
|
||||||
|
"palevioletred": [219, 112, 147],
|
||||||
|
"papayawhip": [255, 239, 213],
|
||||||
|
"peachpuff": [255, 218, 185],
|
||||||
|
"peru": [205, 133, 63],
|
||||||
|
"pink": [255, 192, 203],
|
||||||
|
"plum": [221, 160, 221],
|
||||||
|
"powderblue": [176, 224, 230],
|
||||||
|
"purple": [128, 0, 128],
|
||||||
|
"rebeccapurple": [102, 51, 153],
|
||||||
|
"red": [255, 0, 0],
|
||||||
|
"rosybrown": [188, 143, 143],
|
||||||
|
"royalblue": [65, 105, 225],
|
||||||
|
"saddlebrown": [139, 69, 19],
|
||||||
|
"salmon": [250, 128, 114],
|
||||||
|
"sandybrown": [244, 164, 96],
|
||||||
|
"seagreen": [46, 139, 87],
|
||||||
|
"seashell": [255, 245, 238],
|
||||||
|
"sienna": [160, 82, 45],
|
||||||
|
"silver": [192, 192, 192],
|
||||||
|
"skyblue": [135, 206, 235],
|
||||||
|
"slateblue": [106, 90, 205],
|
||||||
|
"slategray": [112, 128, 144],
|
||||||
|
"slategrey": [112, 128, 144],
|
||||||
|
"snow": [255, 250, 250],
|
||||||
|
"springgreen": [0, 255, 127],
|
||||||
|
"steelblue": [70, 130, 180],
|
||||||
|
"tan": [210, 180, 140],
|
||||||
|
"teal": [0, 128, 128],
|
||||||
|
"thistle": [216, 191, 216],
|
||||||
|
"tomato": [255, 99, 71],
|
||||||
|
"turquoise": [64, 224, 208],
|
||||||
|
"violet": [238, 130, 238],
|
||||||
|
"wheat": [245, 222, 179],
|
||||||
|
"white": [255, 255, 255],
|
||||||
|
"whitesmoke": [245, 245, 245],
|
||||||
|
"yellow": [255, 255, 0],
|
||||||
|
"yellowgreen": [154, 205, 50]
|
||||||
|
};
|
25
mybulma/node_modules/@babel/highlight/node_modules/color-name/package.json
generated
vendored
Normal file
25
mybulma/node_modules/@babel/highlight/node_modules/color-name/package.json
generated
vendored
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"name": "color-name",
|
||||||
|
"version": "1.1.3",
|
||||||
|
"description": "A list of color names and its values",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "node test.js"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git@github.com:dfcreative/color-name.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"color-name",
|
||||||
|
"color",
|
||||||
|
"color-keyword",
|
||||||
|
"keyword"
|
||||||
|
],
|
||||||
|
"author": "DY <dfcreative@gmail.com>",
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/dfcreative/color-name/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/dfcreative/color-name"
|
||||||
|
}
|
7
mybulma/node_modules/@babel/highlight/node_modules/color-name/test.js
generated
vendored
Normal file
7
mybulma/node_modules/@babel/highlight/node_modules/color-name/test.js
generated
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
var names = require('./');
|
||||||
|
var assert = require('assert');
|
||||||
|
|
||||||
|
assert.deepEqual(names.red, [255,0,0]);
|
||||||
|
assert.deepEqual(names.aliceblue, [240,248,255]);
|
8
mybulma/node_modules/@babel/highlight/node_modules/has-flag/index.js
generated
vendored
Normal file
8
mybulma/node_modules/@babel/highlight/node_modules/has-flag/index.js
generated
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
'use strict';
|
||||||
|
module.exports = (flag, argv) => {
|
||||||
|
argv = argv || process.argv;
|
||||||
|
const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');
|
||||||
|
const pos = argv.indexOf(prefix + flag);
|
||||||
|
const terminatorPos = argv.indexOf('--');
|
||||||
|
return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
|
||||||
|
};
|
9
mybulma/node_modules/@babel/highlight/node_modules/has-flag/license
generated
vendored
Normal file
9
mybulma/node_modules/@babel/highlight/node_modules/has-flag/license
generated
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
|
||||||
|
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.
|
44
mybulma/node_modules/@babel/highlight/node_modules/has-flag/package.json
generated
vendored
Normal file
44
mybulma/node_modules/@babel/highlight/node_modules/has-flag/package.json
generated
vendored
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
{
|
||||||
|
"name": "has-flag",
|
||||||
|
"version": "3.0.0",
|
||||||
|
"description": "Check if argv has a specific flag",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": "sindresorhus/has-flag",
|
||||||
|
"author": {
|
||||||
|
"name": "Sindre Sorhus",
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"url": "sindresorhus.com"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "xo && ava"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"has",
|
||||||
|
"check",
|
||||||
|
"detect",
|
||||||
|
"contains",
|
||||||
|
"find",
|
||||||
|
"flag",
|
||||||
|
"cli",
|
||||||
|
"command-line",
|
||||||
|
"argv",
|
||||||
|
"process",
|
||||||
|
"arg",
|
||||||
|
"args",
|
||||||
|
"argument",
|
||||||
|
"arguments",
|
||||||
|
"getopt",
|
||||||
|
"minimist",
|
||||||
|
"optimist"
|
||||||
|
],
|
||||||
|
"devDependencies": {
|
||||||
|
"ava": "*",
|
||||||
|
"xo": "*"
|
||||||
|
}
|
||||||
|
}
|
70
mybulma/node_modules/@babel/highlight/node_modules/has-flag/readme.md
generated
vendored
Normal file
70
mybulma/node_modules/@babel/highlight/node_modules/has-flag/readme.md
generated
vendored
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
# has-flag [![Build Status](https://travis-ci.org/sindresorhus/has-flag.svg?branch=master)](https://travis-ci.org/sindresorhus/has-flag)
|
||||||
|
|
||||||
|
> Check if [`argv`](https://nodejs.org/docs/latest/api/process.html#process_process_argv) has a specific flag
|
||||||
|
|
||||||
|
Correctly stops looking after an `--` argument terminator.
|
||||||
|
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```
|
||||||
|
$ npm install has-flag
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
// foo.js
|
||||||
|
const hasFlag = require('has-flag');
|
||||||
|
|
||||||
|
hasFlag('unicorn');
|
||||||
|
//=> true
|
||||||
|
|
||||||
|
hasFlag('--unicorn');
|
||||||
|
//=> true
|
||||||
|
|
||||||
|
hasFlag('f');
|
||||||
|
//=> true
|
||||||
|
|
||||||
|
hasFlag('-f');
|
||||||
|
//=> true
|
||||||
|
|
||||||
|
hasFlag('foo=bar');
|
||||||
|
//=> true
|
||||||
|
|
||||||
|
hasFlag('foo');
|
||||||
|
//=> false
|
||||||
|
|
||||||
|
hasFlag('rainbow');
|
||||||
|
//=> false
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
$ node foo.js -f --unicorn --foo=bar -- --rainbow
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
### hasFlag(flag, [argv])
|
||||||
|
|
||||||
|
Returns a boolean for whether the flag exists.
|
||||||
|
|
||||||
|
#### flag
|
||||||
|
|
||||||
|
Type: `string`
|
||||||
|
|
||||||
|
CLI flag to look for. The `--` prefix is optional.
|
||||||
|
|
||||||
|
#### argv
|
||||||
|
|
||||||
|
Type: `string[]`<br>
|
||||||
|
Default: `process.argv`
|
||||||
|
|
||||||
|
CLI arguments.
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT © [Sindre Sorhus](https://sindresorhus.com)
|
5
mybulma/node_modules/@babel/highlight/node_modules/supports-color/browser.js
generated
vendored
Normal file
5
mybulma/node_modules/@babel/highlight/node_modules/supports-color/browser.js
generated
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
'use strict';
|
||||||
|
module.exports = {
|
||||||
|
stdout: false,
|
||||||
|
stderr: false
|
||||||
|
};
|
131
mybulma/node_modules/@babel/highlight/node_modules/supports-color/index.js
generated
vendored
Normal file
131
mybulma/node_modules/@babel/highlight/node_modules/supports-color/index.js
generated
vendored
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
'use strict';
|
||||||
|
const os = require('os');
|
||||||
|
const hasFlag = require('has-flag');
|
||||||
|
|
||||||
|
const env = process.env;
|
||||||
|
|
||||||
|
let forceColor;
|
||||||
|
if (hasFlag('no-color') ||
|
||||||
|
hasFlag('no-colors') ||
|
||||||
|
hasFlag('color=false')) {
|
||||||
|
forceColor = false;
|
||||||
|
} else if (hasFlag('color') ||
|
||||||
|
hasFlag('colors') ||
|
||||||
|
hasFlag('color=true') ||
|
||||||
|
hasFlag('color=always')) {
|
||||||
|
forceColor = true;
|
||||||
|
}
|
||||||
|
if ('FORCE_COLOR' in env) {
|
||||||
|
forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function translateLevel(level) {
|
||||||
|
if (level === 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
level,
|
||||||
|
hasBasic: true,
|
||||||
|
has256: level >= 2,
|
||||||
|
has16m: level >= 3
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function supportsColor(stream) {
|
||||||
|
if (forceColor === false) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasFlag('color=16m') ||
|
||||||
|
hasFlag('color=full') ||
|
||||||
|
hasFlag('color=truecolor')) {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasFlag('color=256')) {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stream && !stream.isTTY && forceColor !== true) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const min = forceColor ? 1 : 0;
|
||||||
|
|
||||||
|
if (process.platform === 'win32') {
|
||||||
|
// Node.js 7.5.0 is the first version of Node.js to include a patch to
|
||||||
|
// libuv that enables 256 color output on Windows. Anything earlier and it
|
||||||
|
// won't work. However, here we target Node.js 8 at minimum as it is an LTS
|
||||||
|
// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows
|
||||||
|
// release that supports 256 colors. Windows 10 build 14931 is the first release
|
||||||
|
// that supports 16m/TrueColor.
|
||||||
|
const osRelease = os.release().split('.');
|
||||||
|
if (
|
||||||
|
Number(process.versions.node.split('.')[0]) >= 8 &&
|
||||||
|
Number(osRelease[0]) >= 10 &&
|
||||||
|
Number(osRelease[2]) >= 10586
|
||||||
|
) {
|
||||||
|
return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('CI' in env) {
|
||||||
|
if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return min;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('TEAMCITY_VERSION' in env) {
|
||||||
|
return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (env.COLORTERM === 'truecolor') {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('TERM_PROGRAM' in env) {
|
||||||
|
const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
|
||||||
|
|
||||||
|
switch (env.TERM_PROGRAM) {
|
||||||
|
case 'iTerm.app':
|
||||||
|
return version >= 3 ? 3 : 2;
|
||||||
|
case 'Apple_Terminal':
|
||||||
|
return 2;
|
||||||
|
// No default
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/-256(color)?$/i.test(env.TERM)) {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('COLORTERM' in env) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (env.TERM === 'dumb') {
|
||||||
|
return min;
|
||||||
|
}
|
||||||
|
|
||||||
|
return min;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSupportLevel(stream) {
|
||||||
|
const level = supportsColor(stream);
|
||||||
|
return translateLevel(level);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
supportsColor: getSupportLevel,
|
||||||
|
stdout: getSupportLevel(process.stdout),
|
||||||
|
stderr: getSupportLevel(process.stderr)
|
||||||
|
};
|
9
mybulma/node_modules/@babel/highlight/node_modules/supports-color/license
generated
vendored
Normal file
9
mybulma/node_modules/@babel/highlight/node_modules/supports-color/license
generated
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
|
||||||
|
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.
|
53
mybulma/node_modules/@babel/highlight/node_modules/supports-color/package.json
generated
vendored
Normal file
53
mybulma/node_modules/@babel/highlight/node_modules/supports-color/package.json
generated
vendored
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
"name": "supports-color",
|
||||||
|
"version": "5.5.0",
|
||||||
|
"description": "Detect whether a terminal supports color",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": "chalk/supports-color",
|
||||||
|
"author": {
|
||||||
|
"name": "Sindre Sorhus",
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"url": "sindresorhus.com"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "xo && ava"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js",
|
||||||
|
"browser.js"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"color",
|
||||||
|
"colour",
|
||||||
|
"colors",
|
||||||
|
"terminal",
|
||||||
|
"console",
|
||||||
|
"cli",
|
||||||
|
"ansi",
|
||||||
|
"styles",
|
||||||
|
"tty",
|
||||||
|
"rgb",
|
||||||
|
"256",
|
||||||
|
"shell",
|
||||||
|
"xterm",
|
||||||
|
"command-line",
|
||||||
|
"support",
|
||||||
|
"supports",
|
||||||
|
"capability",
|
||||||
|
"detect",
|
||||||
|
"truecolor",
|
||||||
|
"16m"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"has-flag": "^3.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"ava": "^0.25.0",
|
||||||
|
"import-fresh": "^2.0.0",
|
||||||
|
"xo": "^0.20.0"
|
||||||
|
},
|
||||||
|
"browser": "browser.js"
|
||||||
|
}
|
66
mybulma/node_modules/@babel/highlight/node_modules/supports-color/readme.md
generated
vendored
Normal file
66
mybulma/node_modules/@babel/highlight/node_modules/supports-color/readme.md
generated
vendored
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
# supports-color [![Build Status](https://travis-ci.org/chalk/supports-color.svg?branch=master)](https://travis-ci.org/chalk/supports-color)
|
||||||
|
|
||||||
|
> Detect whether a terminal supports color
|
||||||
|
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```
|
||||||
|
$ npm install supports-color
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
const supportsColor = require('supports-color');
|
||||||
|
|
||||||
|
if (supportsColor.stdout) {
|
||||||
|
console.log('Terminal stdout supports color');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (supportsColor.stdout.has256) {
|
||||||
|
console.log('Terminal stdout supports 256 colors');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (supportsColor.stderr.has16m) {
|
||||||
|
console.log('Terminal stderr supports 16 million colors (truecolor)');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
Returns an `Object` with a `stdout` and `stderr` property for testing either streams. Each property is an `Object`, or `false` if color is not supported.
|
||||||
|
|
||||||
|
The `stdout`/`stderr` objects specifies a level of support for color through a `.level` property and a corresponding flag:
|
||||||
|
|
||||||
|
- `.level = 1` and `.hasBasic = true`: Basic color support (16 colors)
|
||||||
|
- `.level = 2` and `.has256 = true`: 256 color support
|
||||||
|
- `.level = 3` and `.has16m = true`: Truecolor support (16 million colors)
|
||||||
|
|
||||||
|
|
||||||
|
## Info
|
||||||
|
|
||||||
|
It obeys the `--color` and `--no-color` CLI flags.
|
||||||
|
|
||||||
|
Can be overridden by the user with the flags `--color` and `--no-color`. For situations where using `--color` is not possible, add the environment variable `FORCE_COLOR=1` to forcefully enable color or `FORCE_COLOR=0` to forcefully disable. The use of `FORCE_COLOR` overrides all other color support checks.
|
||||||
|
|
||||||
|
Explicit 256/Truecolor mode can be enabled using the `--color=256` and `--color=16m` flags, respectively.
|
||||||
|
|
||||||
|
|
||||||
|
## Related
|
||||||
|
|
||||||
|
- [supports-color-cli](https://github.com/chalk/supports-color-cli) - CLI for this module
|
||||||
|
- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right
|
||||||
|
|
||||||
|
|
||||||
|
## Maintainers
|
||||||
|
|
||||||
|
- [Sindre Sorhus](https://github.com/sindresorhus)
|
||||||
|
- [Josh Junon](https://github.com/qix-)
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
30
mybulma/node_modules/@babel/highlight/package.json
generated
vendored
Normal file
30
mybulma/node_modules/@babel/highlight/package.json
generated
vendored
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"name": "@babel/highlight",
|
||||||
|
"version": "7.18.6",
|
||||||
|
"description": "Syntax highlight JavaScript strings for output in terminals.",
|
||||||
|
"author": "The Babel Team (https://babel.dev/team)",
|
||||||
|
"homepage": "https://babel.dev/docs/en/next/babel-highlight",
|
||||||
|
"license": "MIT",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/babel/babel.git",
|
||||||
|
"directory": "packages/babel-highlight"
|
||||||
|
},
|
||||||
|
"main": "./lib/index.js",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/helper-validator-identifier": "^7.18.6",
|
||||||
|
"chalk": "^2.0.0",
|
||||||
|
"js-tokens": "^4.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/chalk": "^2.0.0",
|
||||||
|
"strip-ansi": "^4.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
},
|
||||||
|
"type": "commonjs"
|
||||||
|
}
|
10
mybulma/node_modules/@gar/promisify/LICENSE.md
generated
vendored
Normal file
10
mybulma/node_modules/@gar/promisify/LICENSE.md
generated
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright © 2020-2022 Michael Garvin
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
65
mybulma/node_modules/@gar/promisify/README.md
generated
vendored
Normal file
65
mybulma/node_modules/@gar/promisify/README.md
generated
vendored
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
# @gar/promisify
|
||||||
|
|
||||||
|
### Promisify an entire object or class instance
|
||||||
|
|
||||||
|
This module leverages es6 Proxy and Reflect to promisify every function in an
|
||||||
|
object or class instance.
|
||||||
|
|
||||||
|
It assumes the callback that the function is expecting is the last
|
||||||
|
parameter, and that it is an error-first callback with only one value,
|
||||||
|
i.e. `(err, value) => ...`. This mirrors node's `util.promisify` method.
|
||||||
|
|
||||||
|
In order that you can use it as a one-stop-shop for all your promisify
|
||||||
|
needs, you can also pass it a function. That function will be
|
||||||
|
promisified as normal using node's built-in `util.promisify` method.
|
||||||
|
|
||||||
|
[node's custom promisified
|
||||||
|
functions](https://nodejs.org/api/util.html#util_custom_promisified_functions)
|
||||||
|
will also be mirrored, further allowing this to be a drop-in replacement
|
||||||
|
for the built-in `util.promisify`.
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
|
||||||
|
Promisify an entire object
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
|
||||||
|
const promisify = require('@gar/promisify')
|
||||||
|
|
||||||
|
class Foo {
|
||||||
|
constructor (attr) {
|
||||||
|
this.attr = attr
|
||||||
|
}
|
||||||
|
|
||||||
|
double (input, cb) {
|
||||||
|
cb(null, input * 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
const foo = new Foo('baz')
|
||||||
|
const promisified = promisify(foo)
|
||||||
|
|
||||||
|
console.log(promisified.attr)
|
||||||
|
console.log(await promisified.double(1024))
|
||||||
|
```
|
||||||
|
|
||||||
|
Promisify a function
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
|
||||||
|
const promisify = require('@gar/promisify')
|
||||||
|
|
||||||
|
function foo (a, cb) {
|
||||||
|
if (a !== 'bad') {
|
||||||
|
return cb(null, 'ok')
|
||||||
|
}
|
||||||
|
return cb('not ok')
|
||||||
|
}
|
||||||
|
|
||||||
|
const promisified = promisify(foo)
|
||||||
|
|
||||||
|
// This will resolve to 'ok'
|
||||||
|
promisified('good')
|
||||||
|
|
||||||
|
// this will reject
|
||||||
|
promisified('bad')
|
||||||
|
```
|
36
mybulma/node_modules/@gar/promisify/index.js
generated
vendored
Normal file
36
mybulma/node_modules/@gar/promisify/index.js
generated
vendored
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const { promisify } = require('util')
|
||||||
|
|
||||||
|
const handler = {
|
||||||
|
get: function (target, prop, receiver) {
|
||||||
|
if (typeof target[prop] !== 'function') {
|
||||||
|
return target[prop]
|
||||||
|
}
|
||||||
|
if (target[prop][promisify.custom]) {
|
||||||
|
return function () {
|
||||||
|
return Reflect.get(target, prop, receiver)[promisify.custom].apply(target, arguments)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return function () {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
Reflect.get(target, prop, receiver).apply(target, [...arguments, function (err, result) {
|
||||||
|
if (err) {
|
||||||
|
return reject(err)
|
||||||
|
}
|
||||||
|
resolve(result)
|
||||||
|
}])
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = function (thingToPromisify) {
|
||||||
|
if (typeof thingToPromisify === 'function') {
|
||||||
|
return promisify(thingToPromisify)
|
||||||
|
}
|
||||||
|
if (typeof thingToPromisify === 'object') {
|
||||||
|
return new Proxy(thingToPromisify, handler)
|
||||||
|
}
|
||||||
|
throw new TypeError('Can only promisify functions or objects')
|
||||||
|
}
|
32
mybulma/node_modules/@gar/promisify/package.json
generated
vendored
Normal file
32
mybulma/node_modules/@gar/promisify/package.json
generated
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"name": "@gar/promisify",
|
||||||
|
"version": "1.1.3",
|
||||||
|
"description": "Promisify an entire class or object",
|
||||||
|
"main": "index.js",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/wraithgar/gar-promisify.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"lint": "standard",
|
||||||
|
"lint:fix": "standard --fix",
|
||||||
|
"test": "lab -a @hapi/code -t 100",
|
||||||
|
"posttest": "npm run lint"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"promisify",
|
||||||
|
"all",
|
||||||
|
"class",
|
||||||
|
"object"
|
||||||
|
],
|
||||||
|
"author": "Gar <gar+npm@danger.computer>",
|
||||||
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"@hapi/code": "^8.0.1",
|
||||||
|
"@hapi/lab": "^24.1.0",
|
||||||
|
"standard": "^16.0.3"
|
||||||
|
}
|
||||||
|
}
|
20
mybulma/node_modules/@npmcli/fs/LICENSE.md
generated
vendored
Normal file
20
mybulma/node_modules/@npmcli/fs/LICENSE.md
generated
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<!-- This file is automatically added by @npmcli/template-oss. Do not edit. -->
|
||||||
|
|
||||||
|
ISC License
|
||||||
|
|
||||||
|
Copyright npm, Inc.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this
|
||||||
|
software for any purpose with or without fee is hereby
|
||||||
|
granted, provided that the above copyright notice and this
|
||||||
|
permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND NPM DISCLAIMS ALL
|
||||||
|
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
|
||||||
|
EVENT SHALL NPM BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||||
|
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
|
||||||
|
USE OR PERFORMANCE OF THIS SOFTWARE.
|
62
mybulma/node_modules/@npmcli/fs/README.md
generated
vendored
Normal file
62
mybulma/node_modules/@npmcli/fs/README.md
generated
vendored
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# @npmcli/fs
|
||||||
|
|
||||||
|
polyfills, and extensions, of the core `fs` module.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- all exposed functions return promises
|
||||||
|
- `fs.rm` polyfill for node versions < 14.14.0
|
||||||
|
- `fs.mkdir` polyfill adding support for the `recursive` and `force` options in node versions < 10.12.0
|
||||||
|
- `fs.copyFile` extended to accept an `owner` option
|
||||||
|
- `fs.mkdir` extended to accept an `owner` option
|
||||||
|
- `fs.mkdtemp` extended to accept an `owner` option
|
||||||
|
- `fs.writeFile` extended to accept an `owner` option
|
||||||
|
- `fs.withTempDir` added
|
||||||
|
- `fs.withOwner` added
|
||||||
|
- `fs.withOwnerSync` added
|
||||||
|
- `fs.cp` polyfill for node < 16.7.0
|
||||||
|
|
||||||
|
## The `owner` option
|
||||||
|
|
||||||
|
The `copyFile`, `mkdir`, `mkdtemp`, `writeFile`, and `withTempDir` functions
|
||||||
|
all accept a new `owner` property in their options. It can be used in two ways:
|
||||||
|
|
||||||
|
- `{ owner: { uid: 100, gid: 100 } }` - set the `uid` and `gid` explicitly
|
||||||
|
- `{ owner: 100 }` - use one value, will set both `uid` and `gid` the same
|
||||||
|
|
||||||
|
The special string `'inherit'` may be passed instead of a number, which will
|
||||||
|
cause this module to automatically determine the correct `uid` and/or `gid`
|
||||||
|
from the nearest existing parent directory of the target.
|
||||||
|
|
||||||
|
## `fs.withTempDir(root, fn, options) -> Promise`
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
- `root`: the directory in which to create the temporary directory
|
||||||
|
- `fn`: a function that will be called with the path to the temporary directory
|
||||||
|
- `options`
|
||||||
|
- `tmpPrefix`: a prefix to be used in the generated directory name
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
The `withTempDir` function creates a temporary directory, runs the provided
|
||||||
|
function (`fn`), then removes the temporary directory and resolves or rejects
|
||||||
|
based on the result of `fn`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
const fs = require('@npmcli/fs')
|
||||||
|
const os = require('os')
|
||||||
|
|
||||||
|
// this function will be called with the full path to the temporary directory
|
||||||
|
// it is called with `await` behind the scenes, so can be async if desired.
|
||||||
|
const myFunction = async (tempPath) => {
|
||||||
|
return 'done!'
|
||||||
|
}
|
||||||
|
|
||||||
|
const main = async () => {
|
||||||
|
const result = await fs.withTempDir(os.tmpdir(), myFunction)
|
||||||
|
// result === 'done!'
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
```
|
20
mybulma/node_modules/@npmcli/fs/lib/common/get-options.js
generated
vendored
Normal file
20
mybulma/node_modules/@npmcli/fs/lib/common/get-options.js
generated
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
// given an input that may or may not be an object, return an object that has
|
||||||
|
// a copy of every defined property listed in 'copy'. if the input is not an
|
||||||
|
// object, assign it to the property named by 'wrap'
|
||||||
|
const getOptions = (input, { copy, wrap }) => {
|
||||||
|
const result = {}
|
||||||
|
|
||||||
|
if (input && typeof input === 'object') {
|
||||||
|
for (const prop of copy) {
|
||||||
|
if (input[prop] !== undefined) {
|
||||||
|
result[prop] = input[prop]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result[wrap] = input
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = getOptions
|
9
mybulma/node_modules/@npmcli/fs/lib/common/node.js
generated
vendored
Normal file
9
mybulma/node_modules/@npmcli/fs/lib/common/node.js
generated
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
const semver = require('semver')
|
||||||
|
|
||||||
|
const satisfies = (range) => {
|
||||||
|
return semver.satisfies(process.version, range, { includePrerelease: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
satisfies,
|
||||||
|
}
|
96
mybulma/node_modules/@npmcli/fs/lib/common/owner-sync.js
generated
vendored
Normal file
96
mybulma/node_modules/@npmcli/fs/lib/common/owner-sync.js
generated
vendored
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
const { dirname, resolve } = require('path')
|
||||||
|
const url = require('url')
|
||||||
|
|
||||||
|
const fs = require('../fs.js')
|
||||||
|
|
||||||
|
// given a path, find the owner of the nearest parent
|
||||||
|
const find = (path) => {
|
||||||
|
// if we have no getuid, permissions are irrelevant on this platform
|
||||||
|
if (!process.getuid) {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// fs methods accept URL objects with a scheme of file: so we need to unwrap
|
||||||
|
// those into an actual path string before we can resolve it
|
||||||
|
const resolved = path != null && path.href && path.origin
|
||||||
|
? resolve(url.fileURLToPath(path))
|
||||||
|
: resolve(path)
|
||||||
|
|
||||||
|
let stat
|
||||||
|
|
||||||
|
try {
|
||||||
|
stat = fs.lstatSync(resolved)
|
||||||
|
} finally {
|
||||||
|
// if we got a stat, return its contents
|
||||||
|
if (stat) {
|
||||||
|
return { uid: stat.uid, gid: stat.gid }
|
||||||
|
}
|
||||||
|
|
||||||
|
// try the parent directory
|
||||||
|
if (resolved !== dirname(resolved)) {
|
||||||
|
return find(dirname(resolved))
|
||||||
|
}
|
||||||
|
|
||||||
|
// no more parents, never got a stat, just return an empty object
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// given a path, uid, and gid update the ownership of the path if necessary
|
||||||
|
const update = (path, uid, gid) => {
|
||||||
|
// nothing to update, just exit
|
||||||
|
if (uid === undefined && gid === undefined) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// see if the permissions are already the same, if they are we don't
|
||||||
|
// need to do anything, so return early
|
||||||
|
const stat = fs.statSync(path)
|
||||||
|
if (uid === stat.uid && gid === stat.gid) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// ignore errors
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
fs.chownSync(path, uid, gid)
|
||||||
|
} catch {
|
||||||
|
// ignore errors
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// accepts a `path` and the `owner` property of an options object and normalizes
|
||||||
|
// it into an object with numerical `uid` and `gid`
|
||||||
|
const validate = (path, input) => {
|
||||||
|
let uid
|
||||||
|
let gid
|
||||||
|
|
||||||
|
if (typeof input === 'string' || typeof input === 'number') {
|
||||||
|
uid = input
|
||||||
|
gid = input
|
||||||
|
} else if (input && typeof input === 'object') {
|
||||||
|
uid = input.uid
|
||||||
|
gid = input.gid
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uid === 'inherit' || gid === 'inherit') {
|
||||||
|
const owner = find(path)
|
||||||
|
if (uid === 'inherit') {
|
||||||
|
uid = owner.uid
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gid === 'inherit') {
|
||||||
|
gid = owner.gid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return { uid, gid }
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
find,
|
||||||
|
update,
|
||||||
|
validate,
|
||||||
|
}
|
96
mybulma/node_modules/@npmcli/fs/lib/common/owner.js
generated
vendored
Normal file
96
mybulma/node_modules/@npmcli/fs/lib/common/owner.js
generated
vendored
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
const { dirname, resolve } = require('path')
|
||||||
|
const url = require('url')
|
||||||
|
|
||||||
|
const fs = require('../fs.js')
|
||||||
|
|
||||||
|
// given a path, find the owner of the nearest parent
|
||||||
|
const find = async (path) => {
|
||||||
|
// if we have no getuid, permissions are irrelevant on this platform
|
||||||
|
if (!process.getuid) {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// fs methods accept URL objects with a scheme of file: so we need to unwrap
|
||||||
|
// those into an actual path string before we can resolve it
|
||||||
|
const resolved = path != null && path.href && path.origin
|
||||||
|
? resolve(url.fileURLToPath(path))
|
||||||
|
: resolve(path)
|
||||||
|
|
||||||
|
let stat
|
||||||
|
|
||||||
|
try {
|
||||||
|
stat = await fs.lstat(resolved)
|
||||||
|
} finally {
|
||||||
|
// if we got a stat, return its contents
|
||||||
|
if (stat) {
|
||||||
|
return { uid: stat.uid, gid: stat.gid }
|
||||||
|
}
|
||||||
|
|
||||||
|
// try the parent directory
|
||||||
|
if (resolved !== dirname(resolved)) {
|
||||||
|
return find(dirname(resolved))
|
||||||
|
}
|
||||||
|
|
||||||
|
// no more parents, never got a stat, just return an empty object
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// given a path, uid, and gid update the ownership of the path if necessary
|
||||||
|
const update = async (path, uid, gid) => {
|
||||||
|
// nothing to update, just exit
|
||||||
|
if (uid === undefined && gid === undefined) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// see if the permissions are already the same, if they are we don't
|
||||||
|
// need to do anything, so return early
|
||||||
|
const stat = await fs.stat(path)
|
||||||
|
if (uid === stat.uid && gid === stat.gid) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// ignore errors
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await fs.chown(path, uid, gid)
|
||||||
|
} catch {
|
||||||
|
// ignore errors
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// accepts a `path` and the `owner` property of an options object and normalizes
|
||||||
|
// it into an object with numerical `uid` and `gid`
|
||||||
|
const validate = async (path, input) => {
|
||||||
|
let uid
|
||||||
|
let gid
|
||||||
|
|
||||||
|
if (typeof input === 'string' || typeof input === 'number') {
|
||||||
|
uid = input
|
||||||
|
gid = input
|
||||||
|
} else if (input && typeof input === 'object') {
|
||||||
|
uid = input.uid
|
||||||
|
gid = input.gid
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uid === 'inherit' || gid === 'inherit') {
|
||||||
|
const owner = await find(path)
|
||||||
|
if (uid === 'inherit') {
|
||||||
|
uid = owner.uid
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gid === 'inherit') {
|
||||||
|
gid = owner.gid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return { uid, gid }
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
find,
|
||||||
|
update,
|
||||||
|
validate,
|
||||||
|
}
|
16
mybulma/node_modules/@npmcli/fs/lib/copy-file.js
generated
vendored
Normal file
16
mybulma/node_modules/@npmcli/fs/lib/copy-file.js
generated
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
const fs = require('./fs.js')
|
||||||
|
const getOptions = require('./common/get-options.js')
|
||||||
|
const withOwner = require('./with-owner.js')
|
||||||
|
|
||||||
|
const copyFile = async (src, dest, opts) => {
|
||||||
|
const options = getOptions(opts, {
|
||||||
|
copy: ['mode'],
|
||||||
|
wrap: 'mode',
|
||||||
|
})
|
||||||
|
|
||||||
|
// the node core method as of 16.5.0 does not support the mode being in an
|
||||||
|
// object, so we have to pass the mode value directly
|
||||||
|
return withOwner(dest, () => fs.copyFile(src, dest, options.mode), opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = copyFile
|
15
mybulma/node_modules/@npmcli/fs/lib/cp/LICENSE
generated
vendored
Normal file
15
mybulma/node_modules/@npmcli/fs/lib/cp/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
(The MIT License)
|
||||||
|
|
||||||
|
Copyright (c) 2011-2017 JP Richardson
|
||||||
|
|
||||||
|
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.
|
22
mybulma/node_modules/@npmcli/fs/lib/cp/index.js
generated
vendored
Normal file
22
mybulma/node_modules/@npmcli/fs/lib/cp/index.js
generated
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
const fs = require('../fs.js')
|
||||||
|
const getOptions = require('../common/get-options.js')
|
||||||
|
const node = require('../common/node.js')
|
||||||
|
const polyfill = require('./polyfill.js')
|
||||||
|
|
||||||
|
// node 16.7.0 added fs.cp
|
||||||
|
const useNative = node.satisfies('>=16.7.0')
|
||||||
|
|
||||||
|
const cp = async (src, dest, opts) => {
|
||||||
|
const options = getOptions(opts, {
|
||||||
|
copy: ['dereference', 'errorOnExist', 'filter', 'force', 'preserveTimestamps', 'recursive'],
|
||||||
|
})
|
||||||
|
|
||||||
|
// the polyfill is tested separately from this module, no need to hack
|
||||||
|
// process.version to try to trigger it just for coverage
|
||||||
|
// istanbul ignore next
|
||||||
|
return useNative
|
||||||
|
? fs.cp(src, dest, options)
|
||||||
|
: polyfill(src, dest, options)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = cp
|
428
mybulma/node_modules/@npmcli/fs/lib/cp/polyfill.js
generated
vendored
Normal file
428
mybulma/node_modules/@npmcli/fs/lib/cp/polyfill.js
generated
vendored
Normal file
|
@ -0,0 +1,428 @@
|
||||||
|
// this file is a modified version of the code in node 17.2.0
|
||||||
|
// which is, in turn, a modified version of the fs-extra module on npm
|
||||||
|
// node core changes:
|
||||||
|
// - Use of the assert module has been replaced with core's error system.
|
||||||
|
// - All code related to the glob dependency has been removed.
|
||||||
|
// - Bring your own custom fs module is not currently supported.
|
||||||
|
// - Some basic code cleanup.
|
||||||
|
// changes here:
|
||||||
|
// - remove all callback related code
|
||||||
|
// - drop sync support
|
||||||
|
// - change assertions back to non-internal methods (see options.js)
|
||||||
|
// - throws ENOTDIR when rmdir gets an ENOENT for a path that exists in Windows
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const {
|
||||||
|
ERR_FS_CP_DIR_TO_NON_DIR,
|
||||||
|
ERR_FS_CP_EEXIST,
|
||||||
|
ERR_FS_CP_EINVAL,
|
||||||
|
ERR_FS_CP_FIFO_PIPE,
|
||||||
|
ERR_FS_CP_NON_DIR_TO_DIR,
|
||||||
|
ERR_FS_CP_SOCKET,
|
||||||
|
ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY,
|
||||||
|
ERR_FS_CP_UNKNOWN,
|
||||||
|
ERR_FS_EISDIR,
|
||||||
|
ERR_INVALID_ARG_TYPE,
|
||||||
|
} = require('../errors.js')
|
||||||
|
const {
|
||||||
|
constants: {
|
||||||
|
errno: {
|
||||||
|
EEXIST,
|
||||||
|
EISDIR,
|
||||||
|
EINVAL,
|
||||||
|
ENOTDIR,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} = require('os')
|
||||||
|
const {
|
||||||
|
chmod,
|
||||||
|
copyFile,
|
||||||
|
lstat,
|
||||||
|
mkdir,
|
||||||
|
readdir,
|
||||||
|
readlink,
|
||||||
|
stat,
|
||||||
|
symlink,
|
||||||
|
unlink,
|
||||||
|
utimes,
|
||||||
|
} = require('../fs.js')
|
||||||
|
const {
|
||||||
|
dirname,
|
||||||
|
isAbsolute,
|
||||||
|
join,
|
||||||
|
parse,
|
||||||
|
resolve,
|
||||||
|
sep,
|
||||||
|
toNamespacedPath,
|
||||||
|
} = require('path')
|
||||||
|
const { fileURLToPath } = require('url')
|
||||||
|
|
||||||
|
const defaultOptions = {
|
||||||
|
dereference: false,
|
||||||
|
errorOnExist: false,
|
||||||
|
filter: undefined,
|
||||||
|
force: true,
|
||||||
|
preserveTimestamps: false,
|
||||||
|
recursive: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
async function cp (src, dest, opts) {
|
||||||
|
if (opts != null && typeof opts !== 'object') {
|
||||||
|
throw new ERR_INVALID_ARG_TYPE('options', ['Object'], opts)
|
||||||
|
}
|
||||||
|
return cpFn(
|
||||||
|
toNamespacedPath(getValidatedPath(src)),
|
||||||
|
toNamespacedPath(getValidatedPath(dest)),
|
||||||
|
{ ...defaultOptions, ...opts })
|
||||||
|
}
|
||||||
|
|
||||||
|
function getValidatedPath (fileURLOrPath) {
|
||||||
|
const path = fileURLOrPath != null && fileURLOrPath.href
|
||||||
|
&& fileURLOrPath.origin
|
||||||
|
? fileURLToPath(fileURLOrPath)
|
||||||
|
: fileURLOrPath
|
||||||
|
return path
|
||||||
|
}
|
||||||
|
|
||||||
|
async function cpFn (src, dest, opts) {
|
||||||
|
// Warn about using preserveTimestamps on 32-bit node
|
||||||
|
// istanbul ignore next
|
||||||
|
if (opts.preserveTimestamps && process.arch === 'ia32') {
|
||||||
|
const warning = 'Using the preserveTimestamps option in 32-bit ' +
|
||||||
|
'node is not recommended'
|
||||||
|
process.emitWarning(warning, 'TimestampPrecisionWarning')
|
||||||
|
}
|
||||||
|
const stats = await checkPaths(src, dest, opts)
|
||||||
|
const { srcStat, destStat } = stats
|
||||||
|
await checkParentPaths(src, srcStat, dest)
|
||||||
|
if (opts.filter) {
|
||||||
|
return handleFilter(checkParentDir, destStat, src, dest, opts)
|
||||||
|
}
|
||||||
|
return checkParentDir(destStat, src, dest, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function checkPaths (src, dest, opts) {
|
||||||
|
const { 0: srcStat, 1: destStat } = await getStats(src, dest, opts)
|
||||||
|
if (destStat) {
|
||||||
|
if (areIdentical(srcStat, destStat)) {
|
||||||
|
throw new ERR_FS_CP_EINVAL({
|
||||||
|
message: 'src and dest cannot be the same',
|
||||||
|
path: dest,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: EINVAL,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (srcStat.isDirectory() && !destStat.isDirectory()) {
|
||||||
|
throw new ERR_FS_CP_DIR_TO_NON_DIR({
|
||||||
|
message: `cannot overwrite directory ${src} ` +
|
||||||
|
`with non-directory ${dest}`,
|
||||||
|
path: dest,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: EISDIR,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (!srcStat.isDirectory() && destStat.isDirectory()) {
|
||||||
|
throw new ERR_FS_CP_NON_DIR_TO_DIR({
|
||||||
|
message: `cannot overwrite non-directory ${src} ` +
|
||||||
|
`with directory ${dest}`,
|
||||||
|
path: dest,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: ENOTDIR,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
|
||||||
|
throw new ERR_FS_CP_EINVAL({
|
||||||
|
message: `cannot copy ${src} to a subdirectory of self ${dest}`,
|
||||||
|
path: dest,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: EINVAL,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return { srcStat, destStat }
|
||||||
|
}
|
||||||
|
|
||||||
|
function areIdentical (srcStat, destStat) {
|
||||||
|
return destStat.ino && destStat.dev && destStat.ino === srcStat.ino &&
|
||||||
|
destStat.dev === srcStat.dev
|
||||||
|
}
|
||||||
|
|
||||||
|
function getStats (src, dest, opts) {
|
||||||
|
const statFunc = opts.dereference ?
|
||||||
|
(file) => stat(file, { bigint: true }) :
|
||||||
|
(file) => lstat(file, { bigint: true })
|
||||||
|
return Promise.all([
|
||||||
|
statFunc(src),
|
||||||
|
statFunc(dest).catch((err) => {
|
||||||
|
// istanbul ignore next: unsure how to cover.
|
||||||
|
if (err.code === 'ENOENT') {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
// istanbul ignore next: unsure how to cover.
|
||||||
|
throw err
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
}
|
||||||
|
|
||||||
|
async function checkParentDir (destStat, src, dest, opts) {
|
||||||
|
const destParent = dirname(dest)
|
||||||
|
const dirExists = await pathExists(destParent)
|
||||||
|
if (dirExists) {
|
||||||
|
return getStatsForCopy(destStat, src, dest, opts)
|
||||||
|
}
|
||||||
|
await mkdir(destParent, { recursive: true })
|
||||||
|
return getStatsForCopy(destStat, src, dest, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
function pathExists (dest) {
|
||||||
|
return stat(dest).then(
|
||||||
|
() => true,
|
||||||
|
// istanbul ignore next: not sure when this would occur
|
||||||
|
(err) => (err.code === 'ENOENT' ? false : Promise.reject(err)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recursively check if dest parent is a subdirectory of src.
|
||||||
|
// It works for all file types including symlinks since it
|
||||||
|
// checks the src and dest inodes. It starts from the deepest
|
||||||
|
// parent and stops once it reaches the src parent or the root path.
|
||||||
|
async function checkParentPaths (src, srcStat, dest) {
|
||||||
|
const srcParent = resolve(dirname(src))
|
||||||
|
const destParent = resolve(dirname(dest))
|
||||||
|
if (destParent === srcParent || destParent === parse(destParent).root) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let destStat
|
||||||
|
try {
|
||||||
|
destStat = await stat(destParent, { bigint: true })
|
||||||
|
} catch (err) {
|
||||||
|
// istanbul ignore else: not sure when this would occur
|
||||||
|
if (err.code === 'ENOENT') {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// istanbul ignore next: not sure when this would occur
|
||||||
|
throw err
|
||||||
|
}
|
||||||
|
if (areIdentical(srcStat, destStat)) {
|
||||||
|
throw new ERR_FS_CP_EINVAL({
|
||||||
|
message: `cannot copy ${src} to a subdirectory of self ${dest}`,
|
||||||
|
path: dest,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: EINVAL,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return checkParentPaths(src, srcStat, destParent)
|
||||||
|
}
|
||||||
|
|
||||||
|
const normalizePathToArray = (path) =>
|
||||||
|
resolve(path).split(sep).filter(Boolean)
|
||||||
|
|
||||||
|
// Return true if dest is a subdir of src, otherwise false.
|
||||||
|
// It only checks the path strings.
|
||||||
|
function isSrcSubdir (src, dest) {
|
||||||
|
const srcArr = normalizePathToArray(src)
|
||||||
|
const destArr = normalizePathToArray(dest)
|
||||||
|
return srcArr.every((cur, i) => destArr[i] === cur)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function handleFilter (onInclude, destStat, src, dest, opts, cb) {
|
||||||
|
const include = await opts.filter(src, dest)
|
||||||
|
if (include) {
|
||||||
|
return onInclude(destStat, src, dest, opts, cb)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function startCopy (destStat, src, dest, opts) {
|
||||||
|
if (opts.filter) {
|
||||||
|
return handleFilter(getStatsForCopy, destStat, src, dest, opts)
|
||||||
|
}
|
||||||
|
return getStatsForCopy(destStat, src, dest, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getStatsForCopy (destStat, src, dest, opts) {
|
||||||
|
const statFn = opts.dereference ? stat : lstat
|
||||||
|
const srcStat = await statFn(src)
|
||||||
|
// istanbul ignore else: can't portably test FIFO
|
||||||
|
if (srcStat.isDirectory() && opts.recursive) {
|
||||||
|
return onDir(srcStat, destStat, src, dest, opts)
|
||||||
|
} else if (srcStat.isDirectory()) {
|
||||||
|
throw new ERR_FS_EISDIR({
|
||||||
|
message: `${src} is a directory (not copied)`,
|
||||||
|
path: src,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: EINVAL,
|
||||||
|
})
|
||||||
|
} else if (srcStat.isFile() ||
|
||||||
|
srcStat.isCharacterDevice() ||
|
||||||
|
srcStat.isBlockDevice()) {
|
||||||
|
return onFile(srcStat, destStat, src, dest, opts)
|
||||||
|
} else if (srcStat.isSymbolicLink()) {
|
||||||
|
return onLink(destStat, src, dest)
|
||||||
|
} else if (srcStat.isSocket()) {
|
||||||
|
throw new ERR_FS_CP_SOCKET({
|
||||||
|
message: `cannot copy a socket file: ${dest}`,
|
||||||
|
path: dest,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: EINVAL,
|
||||||
|
})
|
||||||
|
} else if (srcStat.isFIFO()) {
|
||||||
|
throw new ERR_FS_CP_FIFO_PIPE({
|
||||||
|
message: `cannot copy a FIFO pipe: ${dest}`,
|
||||||
|
path: dest,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: EINVAL,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// istanbul ignore next: should be unreachable
|
||||||
|
throw new ERR_FS_CP_UNKNOWN({
|
||||||
|
message: `cannot copy an unknown file type: ${dest}`,
|
||||||
|
path: dest,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: EINVAL,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function onFile (srcStat, destStat, src, dest, opts) {
|
||||||
|
if (!destStat) {
|
||||||
|
return _copyFile(srcStat, src, dest, opts)
|
||||||
|
}
|
||||||
|
return mayCopyFile(srcStat, src, dest, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function mayCopyFile (srcStat, src, dest, opts) {
|
||||||
|
if (opts.force) {
|
||||||
|
await unlink(dest)
|
||||||
|
return _copyFile(srcStat, src, dest, opts)
|
||||||
|
} else if (opts.errorOnExist) {
|
||||||
|
throw new ERR_FS_CP_EEXIST({
|
||||||
|
message: `${dest} already exists`,
|
||||||
|
path: dest,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: EEXIST,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function _copyFile (srcStat, src, dest, opts) {
|
||||||
|
await copyFile(src, dest)
|
||||||
|
if (opts.preserveTimestamps) {
|
||||||
|
return handleTimestampsAndMode(srcStat.mode, src, dest)
|
||||||
|
}
|
||||||
|
return setDestMode(dest, srcStat.mode)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function handleTimestampsAndMode (srcMode, src, dest) {
|
||||||
|
// Make sure the file is writable before setting the timestamp
|
||||||
|
// otherwise open fails with EPERM when invoked with 'r+'
|
||||||
|
// (through utimes call)
|
||||||
|
if (fileIsNotWritable(srcMode)) {
|
||||||
|
await makeFileWritable(dest, srcMode)
|
||||||
|
return setDestTimestampsAndMode(srcMode, src, dest)
|
||||||
|
}
|
||||||
|
return setDestTimestampsAndMode(srcMode, src, dest)
|
||||||
|
}
|
||||||
|
|
||||||
|
function fileIsNotWritable (srcMode) {
|
||||||
|
return (srcMode & 0o200) === 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeFileWritable (dest, srcMode) {
|
||||||
|
return setDestMode(dest, srcMode | 0o200)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function setDestTimestampsAndMode (srcMode, src, dest) {
|
||||||
|
await setDestTimestamps(src, dest)
|
||||||
|
return setDestMode(dest, srcMode)
|
||||||
|
}
|
||||||
|
|
||||||
|
function setDestMode (dest, srcMode) {
|
||||||
|
return chmod(dest, srcMode)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function setDestTimestamps (src, dest) {
|
||||||
|
// The initial srcStat.atime cannot be trusted
|
||||||
|
// because it is modified by the read(2) system call
|
||||||
|
// (See https://nodejs.org/api/fs.html#fs_stat_time_values)
|
||||||
|
const updatedSrcStat = await stat(src)
|
||||||
|
return utimes(dest, updatedSrcStat.atime, updatedSrcStat.mtime)
|
||||||
|
}
|
||||||
|
|
||||||
|
function onDir (srcStat, destStat, src, dest, opts) {
|
||||||
|
if (!destStat) {
|
||||||
|
return mkDirAndCopy(srcStat.mode, src, dest, opts)
|
||||||
|
}
|
||||||
|
return copyDir(src, dest, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function mkDirAndCopy (srcMode, src, dest, opts) {
|
||||||
|
await mkdir(dest)
|
||||||
|
await copyDir(src, dest, opts)
|
||||||
|
return setDestMode(dest, srcMode)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function copyDir (src, dest, opts) {
|
||||||
|
const dir = await readdir(src)
|
||||||
|
for (let i = 0; i < dir.length; i++) {
|
||||||
|
const item = dir[i]
|
||||||
|
const srcItem = join(src, item)
|
||||||
|
const destItem = join(dest, item)
|
||||||
|
const { destStat } = await checkPaths(srcItem, destItem, opts)
|
||||||
|
await startCopy(destStat, srcItem, destItem, opts)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function onLink (destStat, src, dest) {
|
||||||
|
let resolvedSrc = await readlink(src)
|
||||||
|
if (!isAbsolute(resolvedSrc)) {
|
||||||
|
resolvedSrc = resolve(dirname(src), resolvedSrc)
|
||||||
|
}
|
||||||
|
if (!destStat) {
|
||||||
|
return symlink(resolvedSrc, dest)
|
||||||
|
}
|
||||||
|
let resolvedDest
|
||||||
|
try {
|
||||||
|
resolvedDest = await readlink(dest)
|
||||||
|
} catch (err) {
|
||||||
|
// Dest exists and is a regular file or directory,
|
||||||
|
// Windows may throw UNKNOWN error. If dest already exists,
|
||||||
|
// fs throws error anyway, so no need to guard against it here.
|
||||||
|
// istanbul ignore next: can only test on windows
|
||||||
|
if (err.code === 'EINVAL' || err.code === 'UNKNOWN') {
|
||||||
|
return symlink(resolvedSrc, dest)
|
||||||
|
}
|
||||||
|
// istanbul ignore next: should not be possible
|
||||||
|
throw err
|
||||||
|
}
|
||||||
|
if (!isAbsolute(resolvedDest)) {
|
||||||
|
resolvedDest = resolve(dirname(dest), resolvedDest)
|
||||||
|
}
|
||||||
|
if (isSrcSubdir(resolvedSrc, resolvedDest)) {
|
||||||
|
throw new ERR_FS_CP_EINVAL({
|
||||||
|
message: `cannot copy ${resolvedSrc} to a subdirectory of self ` +
|
||||||
|
`${resolvedDest}`,
|
||||||
|
path: dest,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: EINVAL,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// Do not copy if src is a subdir of dest since unlinking
|
||||||
|
// dest in this case would result in removing src contents
|
||||||
|
// and therefore a broken symlink would be created.
|
||||||
|
const srcStat = await stat(src)
|
||||||
|
if (srcStat.isDirectory() && isSrcSubdir(resolvedDest, resolvedSrc)) {
|
||||||
|
throw new ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY({
|
||||||
|
message: `cannot overwrite ${resolvedDest} with ${resolvedSrc}`,
|
||||||
|
path: dest,
|
||||||
|
syscall: 'cp',
|
||||||
|
errno: EINVAL,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return copyLink(resolvedSrc, dest)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function copyLink (resolvedSrc, dest) {
|
||||||
|
await unlink(dest)
|
||||||
|
return symlink(resolvedSrc, dest)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = cp
|
129
mybulma/node_modules/@npmcli/fs/lib/errors.js
generated
vendored
Normal file
129
mybulma/node_modules/@npmcli/fs/lib/errors.js
generated
vendored
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
'use strict'
|
||||||
|
const { inspect } = require('util')
|
||||||
|
|
||||||
|
// adapted from node's internal/errors
|
||||||
|
// https://github.com/nodejs/node/blob/c8a04049/lib/internal/errors.js
|
||||||
|
|
||||||
|
// close copy of node's internal SystemError class.
|
||||||
|
class SystemError {
|
||||||
|
constructor (code, prefix, context) {
|
||||||
|
// XXX context.code is undefined in all constructors used in cp/polyfill
|
||||||
|
// that may be a bug copied from node, maybe the constructor should use
|
||||||
|
// `code` not `errno`? nodejs/node#41104
|
||||||
|
let message = `${prefix}: ${context.syscall} returned ` +
|
||||||
|
`${context.code} (${context.message})`
|
||||||
|
|
||||||
|
if (context.path !== undefined) {
|
||||||
|
message += ` ${context.path}`
|
||||||
|
}
|
||||||
|
if (context.dest !== undefined) {
|
||||||
|
message += ` => ${context.dest}`
|
||||||
|
}
|
||||||
|
|
||||||
|
this.code = code
|
||||||
|
Object.defineProperties(this, {
|
||||||
|
name: {
|
||||||
|
value: 'SystemError',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true,
|
||||||
|
},
|
||||||
|
message: {
|
||||||
|
value: message,
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true,
|
||||||
|
},
|
||||||
|
info: {
|
||||||
|
value: context,
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
writable: false,
|
||||||
|
},
|
||||||
|
errno: {
|
||||||
|
get () {
|
||||||
|
return context.errno
|
||||||
|
},
|
||||||
|
set (value) {
|
||||||
|
context.errno = value
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
},
|
||||||
|
syscall: {
|
||||||
|
get () {
|
||||||
|
return context.syscall
|
||||||
|
},
|
||||||
|
set (value) {
|
||||||
|
context.syscall = value
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
if (context.path !== undefined) {
|
||||||
|
Object.defineProperty(this, 'path', {
|
||||||
|
get () {
|
||||||
|
return context.path
|
||||||
|
},
|
||||||
|
set (value) {
|
||||||
|
context.path = value
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (context.dest !== undefined) {
|
||||||
|
Object.defineProperty(this, 'dest', {
|
||||||
|
get () {
|
||||||
|
return context.dest
|
||||||
|
},
|
||||||
|
set (value) {
|
||||||
|
context.dest = value
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toString () {
|
||||||
|
return `${this.name} [${this.code}]: ${this.message}`
|
||||||
|
}
|
||||||
|
|
||||||
|
[Symbol.for('nodejs.util.inspect.custom')] (_recurseTimes, ctx) {
|
||||||
|
return inspect(this, {
|
||||||
|
...ctx,
|
||||||
|
getters: true,
|
||||||
|
customInspect: false,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function E (code, message) {
|
||||||
|
module.exports[code] = class NodeError extends SystemError {
|
||||||
|
constructor (ctx) {
|
||||||
|
super(code, message, ctx)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
E('ERR_FS_CP_DIR_TO_NON_DIR', 'Cannot overwrite directory with non-directory')
|
||||||
|
E('ERR_FS_CP_EEXIST', 'Target already exists')
|
||||||
|
E('ERR_FS_CP_EINVAL', 'Invalid src or dest')
|
||||||
|
E('ERR_FS_CP_FIFO_PIPE', 'Cannot copy a FIFO pipe')
|
||||||
|
E('ERR_FS_CP_NON_DIR_TO_DIR', 'Cannot overwrite non-directory with directory')
|
||||||
|
E('ERR_FS_CP_SOCKET', 'Cannot copy a socket file')
|
||||||
|
E('ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY', 'Cannot overwrite symlink in subdirectory of self')
|
||||||
|
E('ERR_FS_CP_UNKNOWN', 'Cannot copy an unknown file type')
|
||||||
|
E('ERR_FS_EISDIR', 'Path is a directory')
|
||||||
|
|
||||||
|
module.exports.ERR_INVALID_ARG_TYPE = class ERR_INVALID_ARG_TYPE extends Error {
|
||||||
|
constructor (name, expected, actual) {
|
||||||
|
super()
|
||||||
|
this.code = 'ERR_INVALID_ARG_TYPE'
|
||||||
|
this.message = `The ${name} argument must be ${expected}. Received ${typeof actual}`
|
||||||
|
}
|
||||||
|
}
|
14
mybulma/node_modules/@npmcli/fs/lib/fs.js
generated
vendored
Normal file
14
mybulma/node_modules/@npmcli/fs/lib/fs.js
generated
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
const fs = require('fs')
|
||||||
|
const promisify = require('@gar/promisify')
|
||||||
|
|
||||||
|
const isLower = (s) => s === s.toLowerCase() && s !== s.toUpperCase()
|
||||||
|
|
||||||
|
const fsSync = Object.fromEntries(Object.entries(fs).filter(([k, v]) =>
|
||||||
|
typeof v === 'function' && (k.endsWith('Sync') || !isLower(k[0]))
|
||||||
|
))
|
||||||
|
|
||||||
|
// this module returns the core fs async fns wrapped in a proxy that promisifies
|
||||||
|
// method calls within the getter. we keep it in a separate module so that the
|
||||||
|
// overridden methods have a consistent way to get to promisified fs methods
|
||||||
|
// without creating a circular dependency. the ctors and sync methods are kept untouched
|
||||||
|
module.exports = { ...promisify(fs), ...fsSync }
|
12
mybulma/node_modules/@npmcli/fs/lib/index.js
generated
vendored
Normal file
12
mybulma/node_modules/@npmcli/fs/lib/index.js
generated
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
module.exports = {
|
||||||
|
...require('./fs.js'),
|
||||||
|
copyFile: require('./copy-file.js'),
|
||||||
|
cp: require('./cp/index.js'),
|
||||||
|
mkdir: require('./mkdir.js'),
|
||||||
|
mkdtemp: require('./mkdtemp.js'),
|
||||||
|
rm: require('./rm/index.js'),
|
||||||
|
withTempDir: require('./with-temp-dir.js'),
|
||||||
|
withOwner: require('./with-owner.js'),
|
||||||
|
withOwnerSync: require('./with-owner-sync.js'),
|
||||||
|
writeFile: require('./write-file.js'),
|
||||||
|
}
|
19
mybulma/node_modules/@npmcli/fs/lib/mkdir.js
generated
vendored
Normal file
19
mybulma/node_modules/@npmcli/fs/lib/mkdir.js
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
const fs = require('./fs.js')
|
||||||
|
const getOptions = require('./common/get-options.js')
|
||||||
|
const withOwner = require('./with-owner.js')
|
||||||
|
|
||||||
|
// extends mkdir with the ability to specify an owner of the new dir
|
||||||
|
const mkdir = async (path, opts) => {
|
||||||
|
const options = getOptions(opts, {
|
||||||
|
copy: ['mode', 'recursive'],
|
||||||
|
wrap: 'mode',
|
||||||
|
})
|
||||||
|
|
||||||
|
return withOwner(
|
||||||
|
path,
|
||||||
|
() => fs.mkdir(path, options),
|
||||||
|
opts
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = mkdir
|
23
mybulma/node_modules/@npmcli/fs/lib/mkdtemp.js
generated
vendored
Normal file
23
mybulma/node_modules/@npmcli/fs/lib/mkdtemp.js
generated
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
const { dirname, sep } = require('path')
|
||||||
|
|
||||||
|
const fs = require('./fs.js')
|
||||||
|
const getOptions = require('./common/get-options.js')
|
||||||
|
const withOwner = require('./with-owner.js')
|
||||||
|
|
||||||
|
const mkdtemp = async (prefix, opts) => {
|
||||||
|
const options = getOptions(opts, {
|
||||||
|
copy: ['encoding'],
|
||||||
|
wrap: 'encoding',
|
||||||
|
})
|
||||||
|
|
||||||
|
// mkdtemp relies on the trailing path separator to indicate if it should
|
||||||
|
// create a directory inside of the prefix. if that's the case then the root
|
||||||
|
// we infer ownership from is the prefix itself, otherwise it's the dirname
|
||||||
|
// /tmp -> /tmpABCDEF, infers from /
|
||||||
|
// /tmp/ -> /tmp/ABCDEF, infers from /tmp
|
||||||
|
const root = prefix.endsWith(sep) ? prefix : dirname(prefix)
|
||||||
|
|
||||||
|
return withOwner(root, () => fs.mkdtemp(prefix, options), opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = mkdtemp
|
22
mybulma/node_modules/@npmcli/fs/lib/rm/index.js
generated
vendored
Normal file
22
mybulma/node_modules/@npmcli/fs/lib/rm/index.js
generated
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
const fs = require('../fs.js')
|
||||||
|
const getOptions = require('../common/get-options.js')
|
||||||
|
const node = require('../common/node.js')
|
||||||
|
const polyfill = require('./polyfill.js')
|
||||||
|
|
||||||
|
// node 14.14.0 added fs.rm, which allows both the force and recursive options
|
||||||
|
const useNative = node.satisfies('>=14.14.0')
|
||||||
|
|
||||||
|
const rm = async (path, opts) => {
|
||||||
|
const options = getOptions(opts, {
|
||||||
|
copy: ['retryDelay', 'maxRetries', 'recursive', 'force'],
|
||||||
|
})
|
||||||
|
|
||||||
|
// the polyfill is tested separately from this module, no need to hack
|
||||||
|
// process.version to try to trigger it just for coverage
|
||||||
|
// istanbul ignore next
|
||||||
|
return useNative
|
||||||
|
? fs.rm(path, options)
|
||||||
|
: polyfill(path, options)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = rm
|
239
mybulma/node_modules/@npmcli/fs/lib/rm/polyfill.js
generated
vendored
Normal file
239
mybulma/node_modules/@npmcli/fs/lib/rm/polyfill.js
generated
vendored
Normal file
|
@ -0,0 +1,239 @@
|
||||||
|
// this file is a modified version of the code in node core >=14.14.0
|
||||||
|
// which is, in turn, a modified version of the rimraf module on npm
|
||||||
|
// node core changes:
|
||||||
|
// - Use of the assert module has been replaced with core's error system.
|
||||||
|
// - All code related to the glob dependency has been removed.
|
||||||
|
// - Bring your own custom fs module is not currently supported.
|
||||||
|
// - Some basic code cleanup.
|
||||||
|
// changes here:
|
||||||
|
// - remove all callback related code
|
||||||
|
// - drop sync support
|
||||||
|
// - change assertions back to non-internal methods (see options.js)
|
||||||
|
// - throws ENOTDIR when rmdir gets an ENOENT for a path that exists in Windows
|
||||||
|
const errnos = require('os').constants.errno
|
||||||
|
const { join } = require('path')
|
||||||
|
const fs = require('../fs.js')
|
||||||
|
|
||||||
|
// error codes that mean we need to remove contents
|
||||||
|
const notEmptyCodes = new Set([
|
||||||
|
'ENOTEMPTY',
|
||||||
|
'EEXIST',
|
||||||
|
'EPERM',
|
||||||
|
])
|
||||||
|
|
||||||
|
// error codes we can retry later
|
||||||
|
const retryCodes = new Set([
|
||||||
|
'EBUSY',
|
||||||
|
'EMFILE',
|
||||||
|
'ENFILE',
|
||||||
|
'ENOTEMPTY',
|
||||||
|
'EPERM',
|
||||||
|
])
|
||||||
|
|
||||||
|
const isWindows = process.platform === 'win32'
|
||||||
|
|
||||||
|
const defaultOptions = {
|
||||||
|
retryDelay: 100,
|
||||||
|
maxRetries: 0,
|
||||||
|
recursive: false,
|
||||||
|
force: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
// this is drastically simplified, but should be roughly equivalent to what
|
||||||
|
// node core throws
|
||||||
|
class ERR_FS_EISDIR extends Error {
|
||||||
|
constructor (path) {
|
||||||
|
super()
|
||||||
|
this.info = {
|
||||||
|
code: 'EISDIR',
|
||||||
|
message: 'is a directory',
|
||||||
|
path,
|
||||||
|
syscall: 'rm',
|
||||||
|
errno: errnos.EISDIR,
|
||||||
|
}
|
||||||
|
this.name = 'SystemError'
|
||||||
|
this.code = 'ERR_FS_EISDIR'
|
||||||
|
this.errno = errnos.EISDIR
|
||||||
|
this.syscall = 'rm'
|
||||||
|
this.path = path
|
||||||
|
this.message = `Path is a directory: ${this.syscall} returned ` +
|
||||||
|
`${this.info.code} (is a directory) ${path}`
|
||||||
|
}
|
||||||
|
|
||||||
|
toString () {
|
||||||
|
return `${this.name} [${this.code}]: ${this.message}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ENOTDIR extends Error {
|
||||||
|
constructor (path) {
|
||||||
|
super()
|
||||||
|
this.name = 'Error'
|
||||||
|
this.code = 'ENOTDIR'
|
||||||
|
this.errno = errnos.ENOTDIR
|
||||||
|
this.syscall = 'rmdir'
|
||||||
|
this.path = path
|
||||||
|
this.message = `not a directory, ${this.syscall} '${this.path}'`
|
||||||
|
}
|
||||||
|
|
||||||
|
toString () {
|
||||||
|
return `${this.name}: ${this.code}: ${this.message}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// force is passed separately here because we respect it for the first entry
|
||||||
|
// into rimraf only, any further calls that are spawned as a result (i.e. to
|
||||||
|
// delete content within the target) will ignore ENOENT errors
|
||||||
|
const rimraf = async (path, options, isTop = false) => {
|
||||||
|
const force = isTop ? options.force : true
|
||||||
|
const stat = await fs.lstat(path)
|
||||||
|
.catch((err) => {
|
||||||
|
// we only ignore ENOENT if we're forcing this call
|
||||||
|
if (err.code === 'ENOENT' && force) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isWindows && err.code === 'EPERM') {
|
||||||
|
return fixEPERM(path, options, err, isTop)
|
||||||
|
}
|
||||||
|
|
||||||
|
throw err
|
||||||
|
})
|
||||||
|
|
||||||
|
// no stat object here means either lstat threw an ENOENT, or lstat threw
|
||||||
|
// an EPERM and the fixPERM function took care of things. either way, we're
|
||||||
|
// already done, so return early
|
||||||
|
if (!stat) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stat.isDirectory()) {
|
||||||
|
return rmdir(path, options, null, isTop)
|
||||||
|
}
|
||||||
|
|
||||||
|
return fs.unlink(path)
|
||||||
|
.catch((err) => {
|
||||||
|
if (err.code === 'ENOENT' && force) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err.code === 'EISDIR') {
|
||||||
|
return rmdir(path, options, err, isTop)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err.code === 'EPERM') {
|
||||||
|
// in windows, we handle this through fixEPERM which will also try to
|
||||||
|
// delete things again. everywhere else since deleting the target as a
|
||||||
|
// file didn't work we go ahead and try to delete it as a directory
|
||||||
|
return isWindows
|
||||||
|
? fixEPERM(path, options, err, isTop)
|
||||||
|
: rmdir(path, options, err, isTop)
|
||||||
|
}
|
||||||
|
|
||||||
|
throw err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const fixEPERM = async (path, options, originalErr, isTop) => {
|
||||||
|
const force = isTop ? options.force : true
|
||||||
|
const targetMissing = await fs.chmod(path, 0o666)
|
||||||
|
.catch((err) => {
|
||||||
|
if (err.code === 'ENOENT' && force) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
throw originalErr
|
||||||
|
})
|
||||||
|
|
||||||
|
// got an ENOENT above, return now. no file = no problem
|
||||||
|
if (targetMissing) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// this function does its own lstat rather than calling rimraf again to avoid
|
||||||
|
// infinite recursion for a repeating EPERM
|
||||||
|
const stat = await fs.lstat(path)
|
||||||
|
.catch((err) => {
|
||||||
|
if (err.code === 'ENOENT' && force) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
throw originalErr
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!stat) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stat.isDirectory()) {
|
||||||
|
return rmdir(path, options, originalErr, isTop)
|
||||||
|
}
|
||||||
|
|
||||||
|
return fs.unlink(path)
|
||||||
|
}
|
||||||
|
|
||||||
|
const rmdir = async (path, options, originalErr, isTop) => {
|
||||||
|
if (!options.recursive && isTop) {
|
||||||
|
throw originalErr || new ERR_FS_EISDIR(path)
|
||||||
|
}
|
||||||
|
const force = isTop ? options.force : true
|
||||||
|
|
||||||
|
return fs.rmdir(path)
|
||||||
|
.catch(async (err) => {
|
||||||
|
// in Windows, calling rmdir on a file path will fail with ENOENT rather
|
||||||
|
// than ENOTDIR. to determine if that's what happened, we have to do
|
||||||
|
// another lstat on the path. if the path isn't actually gone, we throw
|
||||||
|
// away the ENOENT and replace it with our own ENOTDIR
|
||||||
|
if (isWindows && err.code === 'ENOENT') {
|
||||||
|
const stillExists = await fs.lstat(path).then(() => true, () => false)
|
||||||
|
if (stillExists) {
|
||||||
|
err = new ENOTDIR(path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// not there, not a problem
|
||||||
|
if (err.code === 'ENOENT' && force) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// we may not have originalErr if lstat tells us our target is a
|
||||||
|
// directory but that changes before we actually remove it, so
|
||||||
|
// only throw it here if it's set
|
||||||
|
if (originalErr && err.code === 'ENOTDIR') {
|
||||||
|
throw originalErr
|
||||||
|
}
|
||||||
|
|
||||||
|
// the directory isn't empty, remove the contents and try again
|
||||||
|
if (notEmptyCodes.has(err.code)) {
|
||||||
|
const files = await fs.readdir(path)
|
||||||
|
await Promise.all(files.map((file) => {
|
||||||
|
const target = join(path, file)
|
||||||
|
return rimraf(target, options)
|
||||||
|
}))
|
||||||
|
return fs.rmdir(path)
|
||||||
|
}
|
||||||
|
|
||||||
|
throw err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const rm = async (path, opts) => {
|
||||||
|
const options = { ...defaultOptions, ...opts }
|
||||||
|
let retries = 0
|
||||||
|
|
||||||
|
const errHandler = async (err) => {
|
||||||
|
if (retryCodes.has(err.code) && ++retries < options.maxRetries) {
|
||||||
|
const delay = retries * options.retryDelay
|
||||||
|
await promiseTimeout(delay)
|
||||||
|
return rimraf(path, options, true).catch(errHandler)
|
||||||
|
}
|
||||||
|
|
||||||
|
throw err
|
||||||
|
}
|
||||||
|
|
||||||
|
return rimraf(path, options, true).catch(errHandler)
|
||||||
|
}
|
||||||
|
|
||||||
|
const promiseTimeout = (ms) => new Promise((r) => setTimeout(r, ms))
|
||||||
|
|
||||||
|
module.exports = rm
|
21
mybulma/node_modules/@npmcli/fs/lib/with-owner-sync.js
generated
vendored
Normal file
21
mybulma/node_modules/@npmcli/fs/lib/with-owner-sync.js
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
const getOptions = require('./common/get-options.js')
|
||||||
|
const owner = require('./common/owner-sync.js')
|
||||||
|
|
||||||
|
const withOwnerSync = (path, fn, opts) => {
|
||||||
|
const options = getOptions(opts, {
|
||||||
|
copy: ['owner'],
|
||||||
|
})
|
||||||
|
|
||||||
|
const { uid, gid } = owner.validate(path, options.owner)
|
||||||
|
|
||||||
|
const result = fn({ uid, gid })
|
||||||
|
|
||||||
|
owner.update(path, uid, gid)
|
||||||
|
if (typeof result === 'string') {
|
||||||
|
owner.update(result, uid, gid)
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = withOwnerSync
|
21
mybulma/node_modules/@npmcli/fs/lib/with-owner.js
generated
vendored
Normal file
21
mybulma/node_modules/@npmcli/fs/lib/with-owner.js
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
const getOptions = require('./common/get-options.js')
|
||||||
|
const owner = require('./common/owner.js')
|
||||||
|
|
||||||
|
const withOwner = async (path, fn, opts) => {
|
||||||
|
const options = getOptions(opts, {
|
||||||
|
copy: ['owner'],
|
||||||
|
})
|
||||||
|
|
||||||
|
const { uid, gid } = await owner.validate(path, options.owner)
|
||||||
|
|
||||||
|
const result = await fn({ uid, gid })
|
||||||
|
|
||||||
|
await Promise.all([
|
||||||
|
owner.update(path, uid, gid),
|
||||||
|
typeof result === 'string' ? owner.update(result, uid, gid) : null,
|
||||||
|
])
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = withOwner
|
41
mybulma/node_modules/@npmcli/fs/lib/with-temp-dir.js
generated
vendored
Normal file
41
mybulma/node_modules/@npmcli/fs/lib/with-temp-dir.js
generated
vendored
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
const { join, sep } = require('path')
|
||||||
|
|
||||||
|
const getOptions = require('./common/get-options.js')
|
||||||
|
const mkdir = require('./mkdir.js')
|
||||||
|
const mkdtemp = require('./mkdtemp.js')
|
||||||
|
const rm = require('./rm/index.js')
|
||||||
|
|
||||||
|
// create a temp directory, ensure its permissions match its parent, then call
|
||||||
|
// the supplied function passing it the path to the directory. clean up after
|
||||||
|
// the function finishes, whether it throws or not
|
||||||
|
const withTempDir = async (root, fn, opts) => {
|
||||||
|
const options = getOptions(opts, {
|
||||||
|
copy: ['tmpPrefix'],
|
||||||
|
})
|
||||||
|
// create the directory, and fix its ownership
|
||||||
|
await mkdir(root, { recursive: true, owner: 'inherit' })
|
||||||
|
|
||||||
|
const target = await mkdtemp(join(`${root}${sep}`, options.tmpPrefix || ''), { owner: 'inherit' })
|
||||||
|
let err
|
||||||
|
let result
|
||||||
|
|
||||||
|
try {
|
||||||
|
result = await fn(target)
|
||||||
|
} catch (_err) {
|
||||||
|
err = _err
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await rm(target, { force: true, recursive: true })
|
||||||
|
} catch {
|
||||||
|
// ignore errors
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err) {
|
||||||
|
throw err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = withTempDir
|
14
mybulma/node_modules/@npmcli/fs/lib/write-file.js
generated
vendored
Normal file
14
mybulma/node_modules/@npmcli/fs/lib/write-file.js
generated
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
const fs = require('./fs.js')
|
||||||
|
const getOptions = require('./common/get-options.js')
|
||||||
|
const withOwner = require('./with-owner.js')
|
||||||
|
|
||||||
|
const writeFile = async (file, data, opts) => {
|
||||||
|
const options = getOptions(opts, {
|
||||||
|
copy: ['encoding', 'mode', 'flag', 'signal'],
|
||||||
|
wrap: 'encoding',
|
||||||
|
})
|
||||||
|
|
||||||
|
return withOwner(file, () => fs.writeFile(file, data, options), opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = writeFile
|
50
mybulma/node_modules/@npmcli/fs/package.json
generated
vendored
Normal file
50
mybulma/node_modules/@npmcli/fs/package.json
generated
vendored
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"name": "@npmcli/fs",
|
||||||
|
"version": "2.1.2",
|
||||||
|
"description": "filesystem utilities for the npm cli",
|
||||||
|
"main": "lib/index.js",
|
||||||
|
"files": [
|
||||||
|
"bin/",
|
||||||
|
"lib/"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"preversion": "npm test",
|
||||||
|
"postversion": "npm publish",
|
||||||
|
"prepublishOnly": "git push origin --follow-tags",
|
||||||
|
"snap": "tap",
|
||||||
|
"test": "tap",
|
||||||
|
"npmclilint": "npmcli-lint",
|
||||||
|
"lint": "eslint \"**/*.js\"",
|
||||||
|
"lintfix": "npm run lint -- --fix",
|
||||||
|
"posttest": "npm run lint",
|
||||||
|
"postsnap": "npm run lintfix --",
|
||||||
|
"postlint": "template-oss-check",
|
||||||
|
"template-oss-apply": "template-oss-apply --force"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/npm/fs.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"npm",
|
||||||
|
"oss"
|
||||||
|
],
|
||||||
|
"author": "GitHub Inc.",
|
||||||
|
"license": "ISC",
|
||||||
|
"devDependencies": {
|
||||||
|
"@npmcli/eslint-config": "^3.0.1",
|
||||||
|
"@npmcli/template-oss": "3.5.0",
|
||||||
|
"tap": "^16.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@gar/promisify": "^1.1.3",
|
||||||
|
"semver": "^7.3.5"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
|
||||||
|
},
|
||||||
|
"templateOSS": {
|
||||||
|
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
|
||||||
|
"version": "3.5.0"
|
||||||
|
}
|
||||||
|
}
|
22
mybulma/node_modules/@npmcli/move-file/LICENSE.md
generated
vendored
Normal file
22
mybulma/node_modules/@npmcli/move-file/LICENSE.md
generated
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
||||||
|
Copyright (c) npm, Inc.
|
||||||
|
|
||||||
|
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.
|
69
mybulma/node_modules/@npmcli/move-file/README.md
generated
vendored
Normal file
69
mybulma/node_modules/@npmcli/move-file/README.md
generated
vendored
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
# @npmcli/move-file
|
||||||
|
|
||||||
|
A fork of [move-file](https://github.com/sindresorhus/move-file) with
|
||||||
|
compatibility with all node 10.x versions.
|
||||||
|
|
||||||
|
> Move a file (or directory)
|
||||||
|
|
||||||
|
The built-in
|
||||||
|
[`fs.rename()`](https://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback)
|
||||||
|
is just a JavaScript wrapper for the C `rename(2)` function, which doesn't
|
||||||
|
support moving files across partitions or devices. This module is what you
|
||||||
|
would have expected `fs.rename()` to be.
|
||||||
|
|
||||||
|
## Highlights
|
||||||
|
|
||||||
|
- Promise API.
|
||||||
|
- Supports moving a file across partitions and devices.
|
||||||
|
- Optionally prevent overwriting an existing file.
|
||||||
|
- Creates non-existent destination directories for you.
|
||||||
|
- Support for Node versions that lack built-in recursive `fs.mkdir()`
|
||||||
|
- Automatically recurses when source is a directory.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```
|
||||||
|
$ npm install @npmcli/move-file
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
const moveFile = require('@npmcli/move-file');
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
await moveFile('source/unicorn.png', 'destination/unicorn.png');
|
||||||
|
console.log('The file has been moved');
|
||||||
|
})();
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
### moveFile(source, destination, options?)
|
||||||
|
|
||||||
|
Returns a `Promise` that resolves when the file has been moved.
|
||||||
|
|
||||||
|
### moveFile.sync(source, destination, options?)
|
||||||
|
|
||||||
|
#### source
|
||||||
|
|
||||||
|
Type: `string`
|
||||||
|
|
||||||
|
File, or directory, you want to move.
|
||||||
|
|
||||||
|
#### destination
|
||||||
|
|
||||||
|
Type: `string`
|
||||||
|
|
||||||
|
Where you want the file or directory moved.
|
||||||
|
|
||||||
|
#### options
|
||||||
|
|
||||||
|
Type: `object`
|
||||||
|
|
||||||
|
##### overwrite
|
||||||
|
|
||||||
|
Type: `boolean`\
|
||||||
|
Default: `true`
|
||||||
|
|
||||||
|
Overwrite existing destination file(s).
|
185
mybulma/node_modules/@npmcli/move-file/lib/index.js
generated
vendored
Normal file
185
mybulma/node_modules/@npmcli/move-file/lib/index.js
generated
vendored
Normal file
|
@ -0,0 +1,185 @@
|
||||||
|
const { dirname, join, resolve, relative, isAbsolute } = require('path')
|
||||||
|
const rimraf_ = require('rimraf')
|
||||||
|
const { promisify } = require('util')
|
||||||
|
const {
|
||||||
|
access: access_,
|
||||||
|
accessSync,
|
||||||
|
copyFile: copyFile_,
|
||||||
|
copyFileSync,
|
||||||
|
readdir: readdir_,
|
||||||
|
readdirSync,
|
||||||
|
rename: rename_,
|
||||||
|
renameSync,
|
||||||
|
stat: stat_,
|
||||||
|
statSync,
|
||||||
|
lstat: lstat_,
|
||||||
|
lstatSync,
|
||||||
|
symlink: symlink_,
|
||||||
|
symlinkSync,
|
||||||
|
readlink: readlink_,
|
||||||
|
readlinkSync,
|
||||||
|
} = require('fs')
|
||||||
|
|
||||||
|
const access = promisify(access_)
|
||||||
|
const copyFile = promisify(copyFile_)
|
||||||
|
const readdir = promisify(readdir_)
|
||||||
|
const rename = promisify(rename_)
|
||||||
|
const stat = promisify(stat_)
|
||||||
|
const lstat = promisify(lstat_)
|
||||||
|
const symlink = promisify(symlink_)
|
||||||
|
const readlink = promisify(readlink_)
|
||||||
|
const rimraf = promisify(rimraf_)
|
||||||
|
const rimrafSync = rimraf_.sync
|
||||||
|
|
||||||
|
const mkdirp = require('mkdirp')
|
||||||
|
|
||||||
|
const pathExists = async path => {
|
||||||
|
try {
|
||||||
|
await access(path)
|
||||||
|
return true
|
||||||
|
} catch (er) {
|
||||||
|
return er.code !== 'ENOENT'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const pathExistsSync = path => {
|
||||||
|
try {
|
||||||
|
accessSync(path)
|
||||||
|
return true
|
||||||
|
} catch (er) {
|
||||||
|
return er.code !== 'ENOENT'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const moveFile = async (source, destination, options = {}, root = true, symlinks = []) => {
|
||||||
|
if (!source || !destination) {
|
||||||
|
throw new TypeError('`source` and `destination` file required')
|
||||||
|
}
|
||||||
|
|
||||||
|
options = {
|
||||||
|
overwrite: true,
|
||||||
|
...options,
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!options.overwrite && await pathExists(destination)) {
|
||||||
|
throw new Error(`The destination file exists: ${destination}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
await mkdirp(dirname(destination))
|
||||||
|
|
||||||
|
try {
|
||||||
|
await rename(source, destination)
|
||||||
|
} catch (error) {
|
||||||
|
if (error.code === 'EXDEV' || error.code === 'EPERM') {
|
||||||
|
const sourceStat = await lstat(source)
|
||||||
|
if (sourceStat.isDirectory()) {
|
||||||
|
const files = await readdir(source)
|
||||||
|
await Promise.all(files.map((file) =>
|
||||||
|
moveFile(join(source, file), join(destination, file), options, false, symlinks)
|
||||||
|
))
|
||||||
|
} else if (sourceStat.isSymbolicLink()) {
|
||||||
|
symlinks.push({ source, destination })
|
||||||
|
} else {
|
||||||
|
await copyFile(source, destination)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (root) {
|
||||||
|
await Promise.all(symlinks.map(async ({ source: symSource, destination: symDestination }) => {
|
||||||
|
let target = await readlink(symSource)
|
||||||
|
// junction symlinks in windows will be absolute paths, so we need to
|
||||||
|
// make sure they point to the symlink destination
|
||||||
|
if (isAbsolute(target)) {
|
||||||
|
target = resolve(symDestination, relative(symSource, target))
|
||||||
|
}
|
||||||
|
// try to determine what the actual file is so we can create the correct
|
||||||
|
// type of symlink in windows
|
||||||
|
let targetStat = 'file'
|
||||||
|
try {
|
||||||
|
targetStat = await stat(resolve(dirname(symSource), target))
|
||||||
|
if (targetStat.isDirectory()) {
|
||||||
|
targetStat = 'junction'
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// targetStat remains 'file'
|
||||||
|
}
|
||||||
|
await symlink(
|
||||||
|
target,
|
||||||
|
symDestination,
|
||||||
|
targetStat
|
||||||
|
)
|
||||||
|
}))
|
||||||
|
await rimraf(source)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const moveFileSync = (source, destination, options = {}, root = true, symlinks = []) => {
|
||||||
|
if (!source || !destination) {
|
||||||
|
throw new TypeError('`source` and `destination` file required')
|
||||||
|
}
|
||||||
|
|
||||||
|
options = {
|
||||||
|
overwrite: true,
|
||||||
|
...options,
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!options.overwrite && pathExistsSync(destination)) {
|
||||||
|
throw new Error(`The destination file exists: ${destination}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
mkdirp.sync(dirname(destination))
|
||||||
|
|
||||||
|
try {
|
||||||
|
renameSync(source, destination)
|
||||||
|
} catch (error) {
|
||||||
|
if (error.code === 'EXDEV' || error.code === 'EPERM') {
|
||||||
|
const sourceStat = lstatSync(source)
|
||||||
|
if (sourceStat.isDirectory()) {
|
||||||
|
const files = readdirSync(source)
|
||||||
|
for (const file of files) {
|
||||||
|
moveFileSync(join(source, file), join(destination, file), options, false, symlinks)
|
||||||
|
}
|
||||||
|
} else if (sourceStat.isSymbolicLink()) {
|
||||||
|
symlinks.push({ source, destination })
|
||||||
|
} else {
|
||||||
|
copyFileSync(source, destination)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (root) {
|
||||||
|
for (const { source: symSource, destination: symDestination } of symlinks) {
|
||||||
|
let target = readlinkSync(symSource)
|
||||||
|
// junction symlinks in windows will be absolute paths, so we need to
|
||||||
|
// make sure they point to the symlink destination
|
||||||
|
if (isAbsolute(target)) {
|
||||||
|
target = resolve(symDestination, relative(symSource, target))
|
||||||
|
}
|
||||||
|
// try to determine what the actual file is so we can create the correct
|
||||||
|
// type of symlink in windows
|
||||||
|
let targetStat = 'file'
|
||||||
|
try {
|
||||||
|
targetStat = statSync(resolve(dirname(symSource), target))
|
||||||
|
if (targetStat.isDirectory()) {
|
||||||
|
targetStat = 'junction'
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// targetStat remains 'file'
|
||||||
|
}
|
||||||
|
symlinkSync(
|
||||||
|
target,
|
||||||
|
symDestination,
|
||||||
|
targetStat
|
||||||
|
)
|
||||||
|
}
|
||||||
|
rimrafSync(source)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = moveFile
|
||||||
|
module.exports.sync = moveFileSync
|
47
mybulma/node_modules/@npmcli/move-file/package.json
generated
vendored
Normal file
47
mybulma/node_modules/@npmcli/move-file/package.json
generated
vendored
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"name": "@npmcli/move-file",
|
||||||
|
"version": "2.0.1",
|
||||||
|
"files": [
|
||||||
|
"bin/",
|
||||||
|
"lib/"
|
||||||
|
],
|
||||||
|
"main": "lib/index.js",
|
||||||
|
"description": "move a file (fork of move-file)",
|
||||||
|
"dependencies": {
|
||||||
|
"mkdirp": "^1.0.4",
|
||||||
|
"rimraf": "^3.0.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@npmcli/eslint-config": "^3.0.1",
|
||||||
|
"@npmcli/template-oss": "3.5.0",
|
||||||
|
"tap": "^16.0.1"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "tap",
|
||||||
|
"snap": "tap",
|
||||||
|
"preversion": "npm test",
|
||||||
|
"postversion": "npm publish",
|
||||||
|
"prepublishOnly": "git push origin --follow-tags",
|
||||||
|
"lint": "eslint \"**/*.js\"",
|
||||||
|
"postlint": "template-oss-check",
|
||||||
|
"template-oss-apply": "template-oss-apply --force",
|
||||||
|
"lintfix": "npm run lint -- --fix",
|
||||||
|
"posttest": "npm run lint"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/npm/move-file.git"
|
||||||
|
},
|
||||||
|
"tap": {
|
||||||
|
"check-coverage": true
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
|
||||||
|
},
|
||||||
|
"author": "GitHub Inc.",
|
||||||
|
"templateOSS": {
|
||||||
|
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
|
||||||
|
"version": "3.5.0"
|
||||||
|
}
|
||||||
|
}
|
21
mybulma/node_modules/@tootallnate/once/LICENSE
generated
vendored
Normal file
21
mybulma/node_modules/@tootallnate/once/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 Nathan Rajlich
|
||||||
|
|
||||||
|
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.
|
93
mybulma/node_modules/@tootallnate/once/README.md
generated
vendored
Normal file
93
mybulma/node_modules/@tootallnate/once/README.md
generated
vendored
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
# @tootallnate/once
|
||||||
|
|
||||||
|
### Creates a Promise that waits for a single event
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Install with `npm`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ npm install @tootallnate/once
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
### once(emitter: EventEmitter, name: string, opts?: OnceOptions): Promise<[...Args]>
|
||||||
|
|
||||||
|
Creates a Promise that waits for event `name` to occur on `emitter`, and resolves
|
||||||
|
the promise with an array of the values provided to the event handler. If an
|
||||||
|
`error` event occurs before the event specified by `name`, then the Promise is
|
||||||
|
rejected with the error argument.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import once from '@tootallnate/once';
|
||||||
|
import { EventEmitter } from 'events';
|
||||||
|
|
||||||
|
const emitter = new EventEmitter();
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
emitter.emit('foo', 'bar');
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
const [result] = await once(emitter, 'foo');
|
||||||
|
console.log({ result });
|
||||||
|
// { result: 'bar' }
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Promise Strong Typing
|
||||||
|
|
||||||
|
The main feature that this module provides over other "once" implementations is that
|
||||||
|
the Promise that is returned is _**strongly typed**_ based on the type of `emitter`
|
||||||
|
and the `name` of the event. Some examples are shown below.
|
||||||
|
|
||||||
|
_The process "exit" event contains a single number for exit code:_
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const [code] = await once(process, 'exit');
|
||||||
|
// ^ number
|
||||||
|
```
|
||||||
|
_A child process "exit" event contains either an exit code or a signal:_
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const child = spawn('echo', []);
|
||||||
|
const [code, signal] = await once(child, 'exit');
|
||||||
|
// ^ number | null
|
||||||
|
// ^ string | null
|
||||||
|
```
|
||||||
|
|
||||||
|
_A forked child process "message" event is type `any`, so you can cast the Promise directly:_
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const child = fork('file.js');
|
||||||
|
|
||||||
|
// With `await`
|
||||||
|
const [message, _]: [WorkerPayload, unknown] = await once(child, 'message');
|
||||||
|
|
||||||
|
// With Promise
|
||||||
|
const messagePromise: Promise<[WorkerPayload, unknown]> = once(child, 'message');
|
||||||
|
|
||||||
|
// Better yet would be to leave it as `any`, and validate the payload
|
||||||
|
// at runtime with i.e. `ajv` + `json-schema-to-typescript`
|
||||||
|
```
|
||||||
|
|
||||||
|
_If the TypeScript definition does not contain an overload for the specified event name, then the Promise will have type `unknown[]` and your code will need to narrow the result manually:_
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface CustomEmitter extends EventEmitter {
|
||||||
|
on(name: 'foo', listener: (a: string, b: number) => void): this;
|
||||||
|
}
|
||||||
|
|
||||||
|
const emitter: CustomEmitter = new EventEmitter();
|
||||||
|
|
||||||
|
// "foo" event is a defined overload, so it's properly typed
|
||||||
|
const fooPromise = once(emitter, 'foo');
|
||||||
|
// ^ Promise<[a: string, b: number]>
|
||||||
|
|
||||||
|
// "bar" event in not a defined overload, so it gets `unknown[]`
|
||||||
|
const barPromise = once(emitter, 'bar');
|
||||||
|
// ^ Promise<unknown[]>
|
||||||
|
```
|
||||||
|
|
||||||
|
### OnceOptions
|
||||||
|
|
||||||
|
- `signal` - `AbortSignal` instance to unbind event handlers before the Promise has been fulfilled.
|
7
mybulma/node_modules/@tootallnate/once/dist/index.d.ts
generated
vendored
Normal file
7
mybulma/node_modules/@tootallnate/once/dist/index.d.ts
generated
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
/// <reference types="node" />
|
||||||
|
import { EventEmitter } from 'events';
|
||||||
|
import { EventNames, EventListenerParameters, AbortSignal } from './types';
|
||||||
|
export interface OnceOptions {
|
||||||
|
signal?: AbortSignal;
|
||||||
|
}
|
||||||
|
export default function once<Emitter extends EventEmitter, Event extends EventNames<Emitter>>(emitter: Emitter, name: Event, { signal }?: OnceOptions): Promise<EventListenerParameters<Emitter, Event>>;
|
24
mybulma/node_modules/@tootallnate/once/dist/index.js
generated
vendored
Normal file
24
mybulma/node_modules/@tootallnate/once/dist/index.js
generated
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
function once(emitter, name, { signal } = {}) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
function cleanup() {
|
||||||
|
signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', cleanup);
|
||||||
|
emitter.removeListener(name, onEvent);
|
||||||
|
emitter.removeListener('error', onError);
|
||||||
|
}
|
||||||
|
function onEvent(...args) {
|
||||||
|
cleanup();
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onError(err) {
|
||||||
|
cleanup();
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', cleanup);
|
||||||
|
emitter.on(name, onEvent);
|
||||||
|
emitter.on('error', onError);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
exports.default = once;
|
||||||
|
//# sourceMappingURL=index.js.map
|
1
mybulma/node_modules/@tootallnate/once/dist/index.js.map
generated
vendored
Normal file
1
mybulma/node_modules/@tootallnate/once/dist/index.js.map
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAOA,SAAwB,IAAI,CAI3B,OAAgB,EAChB,IAAW,EACX,EAAE,MAAM,KAAkB,EAAE;IAE5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,SAAS,OAAO;YACf,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,SAAS,OAAO,CAAC,GAAG,IAAW;YAC9B,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,IAA+C,CAAC,CAAC;QAC1D,CAAC;QACD,SAAS,OAAO,CAAC,GAAU;YAC1B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;QACD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACJ,CAAC;AA1BD,uBA0BC"}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue