Babel command line.
See our website @babel/cli for more information or the issues associated with this package.
Using npm:
npm install --save-dev @babel/clior using yarn:
yarn add @babel/cli --dev| { | |
| "presets": [ | |
| "@babel/preset-typescript", | |
| [ | |
| "@babel/preset-env", | |
| { "ignoreBrowserslistConfig": true, "targets": { "node": true } } | |
| ], | |
| "@babel/react" | |
| ] | |
| } |
| <?xml version="1.0" encoding="UTF-8"?> | |
| <module type="WEB_MODULE" version="4"> | |
| <component name="NewModuleRootManager"> | |
| <content url="file://$MODULE_DIR$"> | |
| <excludeFolder url="file://$MODULE_DIR$/.tmp" /> | |
| <excludeFolder url="file://$MODULE_DIR$/temp" /> | |
| <excludeFolder url="file://$MODULE_DIR$/tmp" /> | |
| </content> | |
| <orderEntry type="inheritedJdk" /> | |
| <orderEntry type="sourceFolder" forTests="false" /> | |
| </component> | |
| </module> |
| <?xml version="1.0" encoding="UTF-8"?> | |
| <project version="4"> | |
| <component name="JavaScriptSettings"> | |
| <option name="languageLevel" value="ES6" /> | |
| </component> | |
| <component name="NodePackageJsonFileManager"> | |
| <packageJsonPaths /> | |
| </component> | |
| </project> |
| <?xml version="1.0" encoding="UTF-8"?> | |
| <project version="4"> | |
| <component name="ProjectModuleManager"> | |
| <modules> | |
| <module fileurl="file://$PROJECT_DIR$/.idea/babel-generic-func-bug.iml" filepath="$PROJECT_DIR$/.idea/babel-generic-func-bug.iml" /> | |
| </modules> | |
| </component> | |
| </project> |
| #!/usr/bin/env node | |
| 'use strict'; | |
| var atob = require('../node-atob'); | |
| var str = process.argv[2]; | |
| console.log(atob(str)); |
| #!/usr/bin/env node | |
| require("../lib/babel"); |
| #!/usr/bin/env node | |
| require("../lib/babel-external-helpers"); |
| #!/usr/bin/env node | |
| var fs = require('fs') | |
| var browserslist = require('./') | |
| var pkg = require('./package.json') | |
| var args = process.argv.slice(2) | |
| var USAGE = 'Usage:\n' + | |
| ' ' + pkg.name + '\n' + | |
| ' ' + pkg.name + ' "QUERIES"\n' + | |
| ' ' + pkg.name + ' --json "QUERIES"\n' + | |
| ' ' + pkg.name + ' --config="path/to/browserlist/file"\n' + | |
| ' ' + pkg.name + ' --coverage "QUERIES"\n' + | |
| ' ' + pkg.name + ' --coverage=US "QUERIES"\n' + | |
| ' ' + pkg.name + ' --coverage=US,RU,world "QUERIES"\n' + | |
| ' ' + pkg.name + ' --env="environment name defined in config"\n' + | |
| ' ' + pkg.name + ' --stats="path/to/browserlist/stats/file"' | |
| function isArg (arg) { | |
| return args.some(function (str) { | |
| return str === arg || str.indexOf(arg + '=') === 0 | |
| }) | |
| } | |
| function error (msg) { | |
| process.stderr.write(pkg.name + ': ' + msg + '\n') | |
| process.exit(1) | |
| } | |
| if (isArg('--help') || isArg('-h')) { | |
| process.stdout.write(pkg.description + '.\n\n' + USAGE + '\n') | |
| } else if (isArg('--version') || isArg('-v')) { | |
| process.stdout.write(pkg.name + ' ' + pkg.version + '\n') | |
| } else { | |
| var mode = 'browsers' | |
| var opts = { } | |
| var queries | |
| var areas | |
| for (var i = 0; i < args.length; i++) { | |
| if (args[i][0] !== '-') { | |
| queries = args[i].replace(/^["']|["']$/g, '') | |
| continue | |
| } | |
| var arg = args[i].split('=') | |
| var name = arg[0] | |
| var value = arg[1] | |
| if (value) value = value.replace(/^["']|["']$/g, '') | |
| if (name === '--config' || name === '-b') { | |
| opts.config = value | |
| } else if (name === '--env' || name === '-e') { | |
| opts.env = value | |
| } else if (name === '--stats' || name === '-s') { | |
| opts.stats = value | |
| } else if (name === '--coverage' || name === '-c') { | |
| if (mode !== 'json') mode = 'coverage' | |
| if (value) { | |
| areas = value.split(',') | |
| } else { | |
| areas = ['global'] | |
| } | |
| } else if (name === '--json') { | |
| mode = 'json' | |
| } else { | |
| error('Unknown arguments ' + args[i] + '.\n\n' + USAGE) | |
| } | |
| } | |
| var browsers | |
| try { | |
| if (!queries && !opts.config) { | |
| if (browserslist.findConfig(process.cwd())) { | |
| opts.path = process.cwd() | |
| } else { | |
| error( | |
| 'Browserslist config was not found. ' + | |
| 'Define queries or config path.' + | |
| '\n\n' + USAGE | |
| ) | |
| } | |
| } | |
| browsers = browserslist(queries, opts) | |
| } catch (e) { | |
| if (e.name === 'BrowserslistError') { | |
| error(e.message) | |
| } else { | |
| throw e | |
| } | |
| } | |
| var coverage | |
| if (mode === 'browsers') { | |
| browsers.forEach(function (browser) { | |
| process.stdout.write(browser + '\n') | |
| }) | |
| } else if (areas) { | |
| coverage = areas.map(function (area) { | |
| var stats | |
| if (area !== 'global') { | |
| stats = area | |
| } else if (opts.stats) { | |
| stats = JSON.parse(fs.readFileSync(opts.stats)) | |
| } | |
| var result = browserslist.coverage(browsers, stats) | |
| var round = Math.round(result * 100) / 100.0 | |
| return [area, round] | |
| }) | |
| if (mode === 'coverage') { | |
| var prefix = 'These browsers account for ' | |
| process.stdout.write(prefix) | |
| coverage.forEach(function (data, index) { | |
| var area = data[0] | |
| var round = data[1] | |
| var end = 'globally' | |
| if (area && area !== 'global') { | |
| end = 'in the ' + area.toUpperCase() | |
| } else if (opts.stats) { | |
| end = 'in custom statistics' | |
| } | |
| if (index !== 0) { | |
| process.stdout.write(prefix.replace(/./g, ' ')) | |
| } | |
| process.stdout.write(round + '% of all users ' + end + '\n') | |
| }) | |
| } | |
| } | |
| if (mode === 'json') { | |
| var data = { browsers: browsers } | |
| if (coverage) { | |
| data.coverage = coverage.reduce(function (object, j) { | |
| object[j[0]] = j[1] | |
| return object | |
| }, { }) | |
| } | |
| process.stdout.write(JSON.stringify(data, null, ' ') + '\n') | |
| } | |
| } |
| #!/usr/bin/env node | |
| (function() { | |
| var fs = require('fs'); | |
| var cssesc = require('../cssesc.js'); | |
| var strings = process.argv.splice(2); | |
| var stdin = process.stdin; | |
| var data; | |
| var timeout; | |
| var isObject = false; | |
| var options = {}; | |
| var log = console.log; | |
| var main = function() { | |
| var option = strings[0]; | |
| if (/^(?:-h|--help|undefined)$/.test(option)) { | |
| log( | |
| 'cssesc v%s - http://mths.be/cssesc', | |
| cssesc.version | |
| ); | |
| log([ | |
| '\nUsage:\n', | |
| '\tcssesc [string]', | |
| '\tcssesc [-i | --identifier] [string]', | |
| '\tcssesc [-s | --single-quotes] [string]', | |
| '\tcssesc [-d | --double-quotes] [string]', | |
| '\tcssesc [-w | --wrap] [string]', | |
| '\tcssesc [-e | --escape-everything] [string]', | |
| '\tcssesc [-v | --version]', | |
| '\tcssesc [-h | --help]', | |
| '\nExamples:\n', | |
| '\tcssesc \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tcssesc --identifier \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tcssesc --escape-everything \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tcssesc --double-quotes --wrap \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\techo \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\' | cssesc' | |
| ].join('\n')); | |
| return process.exit(1); | |
| } | |
| if (/^(?:-v|--version)$/.test(option)) { | |
| log('v%s', cssesc.version); | |
| return process.exit(1); | |
| } | |
| strings.forEach(function(string) { | |
| // Process options | |
| if (/^(?:-i|--identifier)$/.test(string)) { | |
| options.isIdentifier = true; | |
| return; | |
| } | |
| if (/^(?:-s|--single-quotes)$/.test(string)) { | |
| options.quotes = 'single'; | |
| return; | |
| } | |
| if (/^(?:-d|--double-quotes)$/.test(string)) { | |
| options.quotes = 'double'; | |
| return; | |
| } | |
| if (/^(?:-w|--wrap)$/.test(string)) { | |
| options.wrap = true; | |
| return; | |
| } | |
| if (/^(?:-e|--escape-everything)$/.test(string)) { | |
| options.escapeEverything = true; | |
| return; | |
| } | |
| // Process string(s) | |
| var result; | |
| try { | |
| result = cssesc(string, options); | |
| log(result); | |
| } catch(error) { | |
| log(error.message + '\n'); | |
| log('Error: failed to escape.'); | |
| log('If you think this is a bug in cssesc, please report it:'); | |
| log('https://github.com/mathiasbynens/cssesc/issues/new'); | |
| log( | |
| '\nStack trace using cssesc@%s:\n', | |
| cssesc.version | |
| ); | |
| log(error.stack); | |
| return process.exit(1); | |
| } | |
| }); | |
| // Return with exit status 0 outside of the `forEach` loop, in case | |
| // multiple strings were passed in. | |
| return process.exit(0); | |
| }; | |
| if (stdin.isTTY) { | |
| // handle shell arguments | |
| main(); | |
| } else { | |
| // Either the script is called from within a non-TTY context, or `stdin` | |
| // content is being piped in. | |
| if (!process.stdout.isTTY) { | |
| // The script was called from a non-TTY context. This is a rather uncommon | |
| // use case we don’t actively support. However, we don’t want the script | |
| // to wait forever in such cases, so… | |
| timeout = setTimeout(function() { | |
| // …if no piped data arrived after a whole minute, handle shell | |
| // arguments instead. | |
| main(); | |
| }, 60000); | |
| } | |
| data = ''; | |
| stdin.on('data', function(chunk) { | |
| clearTimeout(timeout); | |
| data += chunk; | |
| }); | |
| stdin.on('end', function() { | |
| strings.push(data.trim()); | |
| main(); | |
| }); | |
| stdin.resume(); | |
| } | |
| }()); |
| #!/usr/bin/env node | |
| (function() { | |
| var fs = require('fs'); | |
| var stringEscape = require('../jsesc.js'); | |
| var strings = process.argv.splice(2); | |
| var stdin = process.stdin; | |
| var data; | |
| var timeout; | |
| var isObject = false; | |
| var options = {}; | |
| var log = console.log; | |
| var main = function() { | |
| var option = strings[0]; | |
| if (/^(?:-h|--help|undefined)$/.test(option)) { | |
| log( | |
| 'jsesc v%s - https://mths.be/jsesc', | |
| stringEscape.version | |
| ); | |
| log([ | |
| '\nUsage:\n', | |
| '\tjsesc [string]', | |
| '\tjsesc [-s | --single-quotes] [string]', | |
| '\tjsesc [-d | --double-quotes] [string]', | |
| '\tjsesc [-w | --wrap] [string]', | |
| '\tjsesc [-e | --escape-everything] [string]', | |
| '\tjsesc [-t | --escape-etago] [string]', | |
| '\tjsesc [-6 | --es6] [string]', | |
| '\tjsesc [-l | --lowercase-hex] [string]', | |
| '\tjsesc [-j | --json] [string]', | |
| '\tjsesc [-o | --object] [stringified_object]', // `JSON.parse()` the argument | |
| '\tjsesc [-p | --pretty] [string]', // `compact: false` | |
| '\tjsesc [-v | --version]', | |
| '\tjsesc [-h | --help]', | |
| '\nExamples:\n', | |
| '\tjsesc \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tjsesc --json \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tjsesc --json --escape-everything \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tjsesc --double-quotes --wrap \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\techo \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\' | jsesc' | |
| ].join('\n')); | |
| return process.exit(1); | |
| } | |
| if (/^(?:-v|--version)$/.test(option)) { | |
| log('v%s', stringEscape.version); | |
| return process.exit(1); | |
| } | |
| strings.forEach(function(string) { | |
| // Process options | |
| if (/^(?:-s|--single-quotes)$/.test(string)) { | |
| options.quotes = 'single'; | |
| return; | |
| } | |
| if (/^(?:-d|--double-quotes)$/.test(string)) { | |
| options.quotes = 'double'; | |
| return; | |
| } | |
| if (/^(?:-w|--wrap)$/.test(string)) { | |
| options.wrap = true; | |
| return; | |
| } | |
| if (/^(?:-e|--escape-everything)$/.test(string)) { | |
| options.escapeEverything = true; | |
| return; | |
| } | |
| if (/^(?:-t|--escape-etago)$/.test(string)) { | |
| options.escapeEtago = true; | |
| return; | |
| } | |
| if (/^(?:-6|--es6)$/.test(string)) { | |
| options.es6 = true; | |
| return; | |
| } | |
| if (/^(?:-l|--lowercase-hex)$/.test(string)) { | |
| options.lowercaseHex = true; | |
| return; | |
| } | |
| if (/^(?:-j|--json)$/.test(string)) { | |
| options.json = true; | |
| return; | |
| } | |
| if (/^(?:-o|--object)$/.test(string)) { | |
| isObject = true; | |
| return; | |
| } | |
| if (/^(?:-p|--pretty)$/.test(string)) { | |
| isObject = true; | |
| options.compact = false; | |
| return; | |
| } | |
| // Process string(s) | |
| var result; | |
| try { | |
| if (isObject) { | |
| string = JSON.parse(string); | |
| } | |
| result = stringEscape(string, options); | |
| log(result); | |
| } catch(error) { | |
| log(error.message + '\n'); | |
| log('Error: failed to escape.'); | |
| log('If you think this is a bug in jsesc, please report it:'); | |
| log('https://github.com/mathiasbynens/jsesc/issues/new'); | |
| log( | |
| '\nStack trace using jsesc@%s:\n', | |
| stringEscape.version | |
| ); | |
| log(error.stack); | |
| return process.exit(1); | |
| } | |
| }); | |
| // Return with exit status 0 outside of the `forEach` loop, in case | |
| // multiple strings were passed in. | |
| return process.exit(0); | |
| }; | |
| if (stdin.isTTY) { | |
| // handle shell arguments | |
| main(); | |
| } else { | |
| // Either the script is called from within a non-TTY context, | |
| // or `stdin` content is being piped in. | |
| if (!process.stdout.isTTY) { // called from a non-TTY context | |
| timeout = setTimeout(function() { | |
| // if no piped data arrived after a while, handle shell arguments | |
| main(); | |
| }, 250); | |
| } | |
| data = ''; | |
| stdin.on('data', function(chunk) { | |
| clearTimeout(timeout); | |
| data += chunk; | |
| }); | |
| stdin.on('end', function() { | |
| strings.push(data.trim()); | |
| main(); | |
| }); | |
| stdin.resume(); | |
| } | |
| }()); |
| #!/usr/bin/env node | |
| const fs = require('fs') | |
| const path = require('path') | |
| const minimist = require('minimist') | |
| const pkg = require('../package.json') | |
| const JSON5 = require('./') | |
| const argv = minimist(process.argv.slice(2), { | |
| alias: { | |
| 'convert': 'c', | |
| 'space': 's', | |
| 'validate': 'v', | |
| 'out-file': 'o', | |
| 'version': 'V', | |
| 'help': 'h', | |
| }, | |
| boolean: [ | |
| 'convert', | |
| 'validate', | |
| 'version', | |
| 'help', | |
| ], | |
| string: [ | |
| 'space', | |
| 'out-file', | |
| ], | |
| }) | |
| if (argv.version) { | |
| version() | |
| } else if (argv.help) { | |
| usage() | |
| } else { | |
| const inFilename = argv._[0] | |
| let readStream | |
| if (inFilename) { | |
| readStream = fs.createReadStream(inFilename) | |
| } else { | |
| readStream = process.stdin | |
| } | |
| let json5 = '' | |
| readStream.on('data', data => { | |
| json5 += data | |
| }) | |
| readStream.on('end', () => { | |
| let space | |
| if (argv.space === 't' || argv.space === 'tab') { | |
| space = '\t' | |
| } else { | |
| space = Number(argv.space) | |
| } | |
| let value | |
| try { | |
| value = JSON5.parse(json5) | |
| if (!argv.validate) { | |
| const json = JSON.stringify(value, null, space) | |
| let writeStream | |
| // --convert is for backward compatibility with v0.5.1. If | |
| // specified with <file> and not --out-file, then a file with | |
| // the same name but with a .json extension will be written. | |
| if (argv.convert && inFilename && !argv.o) { | |
| const parsedFilename = path.parse(inFilename) | |
| const outFilename = path.format( | |
| Object.assign( | |
| parsedFilename, | |
| {base: path.basename(parsedFilename.base, parsedFilename.ext) + '.json'} | |
| ) | |
| ) | |
| writeStream = fs.createWriteStream(outFilename) | |
| } else if (argv.o) { | |
| writeStream = fs.createWriteStream(argv.o) | |
| } else { | |
| writeStream = process.stdout | |
| } | |
| writeStream.write(json) | |
| } | |
| } catch (err) { | |
| console.error(err.message) | |
| process.exit(1) | |
| } | |
| }) | |
| } | |
| function version () { | |
| console.log(pkg.version) | |
| } | |
| function usage () { | |
| console.log( | |
| ` | |
| Usage: json5 [options] <file> | |
| If <file> is not provided, then STDIN is used. | |
| Options: | |
| -s, --space The number of spaces to indent or 't' for tabs | |
| -o, --out-file [file] Output to the specified file, otherwise STDOUT | |
| -v, --validate Validate JSON5 but do not output JSON | |
| -V, --version Output the version number | |
| -h, --help Output usage information` | |
| ) | |
| } |
| #!/usr/bin/env node | |
| 'use strict'; | |
| var looseEnvify = require('./'); | |
| var fs = require('fs'); | |
| if (process.argv[2]) { | |
| fs.createReadStream(process.argv[2], {encoding: 'utf8'}) | |
| .pipe(looseEnvify(process.argv[2])) | |
| .pipe(process.stdout); | |
| } else { | |
| process.stdin.resume() | |
| process.stdin | |
| .pipe(looseEnvify(__filename)) | |
| .pipe(process.stdout); | |
| } |
| #!/usr/bin/env node | |
| var mkdirp = require('../'); | |
| var minimist = require('minimist'); | |
| var fs = require('fs'); | |
| var argv = minimist(process.argv.slice(2), { | |
| alias: { m: 'mode', h: 'help' }, | |
| string: [ 'mode' ] | |
| }); | |
| if (argv.help) { | |
| fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout); | |
| return; | |
| } | |
| var paths = argv._.slice(); | |
| var mode = argv.mode ? parseInt(argv.mode, 8) : undefined; | |
| (function next () { | |
| if (paths.length === 0) return; | |
| var p = paths.shift(); | |
| if (mode === undefined) mkdirp(p, cb) | |
| else mkdirp(p, mode, cb) | |
| function cb (err) { | |
| if (err) { | |
| console.error(err.message); | |
| process.exit(1); | |
| } | |
| else next(); | |
| } | |
| })(); |
| #!/usr/bin/env node | |
| /* eslint no-var: 0 */ | |
| var parser = require(".."); | |
| var fs = require("fs"); | |
| var filename = process.argv[2]; | |
| if (!filename) { | |
| console.error("no filename specified"); | |
| process.exit(0); | |
| } | |
| var file = fs.readFileSync(filename, "utf8"); | |
| var ast = parser.parse(file); | |
| console.log(JSON.stringify(ast, null, " ")); |
| #!/usr/bin/env node | |
| 'use strict'; | |
| require('../dist/bin/regexp-tree')(); |
| #!/usr/bin/env node | |
| (function() { | |
| var fs = require('fs'); | |
| var parse = require('../parser').parse; | |
| var jsesc = require('jsesc'); | |
| var regexes = process.argv.splice(2); | |
| var first = regexes[0]; | |
| var data; | |
| var log = console.log; | |
| var main = function() { | |
| if (/^(?:-h|--help|undefined)$/.test(first)) { | |
| log([ | |
| '\nUsage:\n', | |
| '\tregjsparser [regex ...]', | |
| '\tregjsparser [-h | --help]', | |
| '\nExamples:\n', | |
| '\tregjsparser \'^foo.bar$\'', | |
| '\tregjsparser \'[a-zA-Z0-9]\'' | |
| ].join('\n')); | |
| return process.exit(1); | |
| } | |
| regexes.forEach(function(snippet) { | |
| var result; | |
| try { | |
| result = parse(snippet); | |
| log(jsesc(result, { | |
| 'json': true, | |
| 'compact': false, | |
| 'indent': '\t' | |
| })); | |
| } catch(error) { | |
| log(error.message + '\n'); | |
| log('Error: failed to parse. Make sure the regular expression is valid.'); | |
| log('If you think this is a bug in regjsparser, please report it:'); | |
| log('\thttps://github.com/jviereck/regjsparser/issues/new'); | |
| log('\nStack trace:\n'); | |
| log(error.stack); | |
| return process.exit(1); | |
| } | |
| }); | |
| // Return with exit status 0 outside of the `forEach` loop, in case | |
| // multiple regular expressions were passed in. | |
| return process.exit(0); | |
| }; | |
| main(); | |
| }()); |
| #!/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. | |
| var argv = process.argv.slice(2) | |
| , versions = [] | |
| , range = [] | |
| , gt = [] | |
| , lt = [] | |
| , eq = [] | |
| , inc = null | |
| , version = require("../package.json").version | |
| , loose = false | |
| , includePrerelease = false | |
| , coerce = false | |
| , identifier = undefined | |
| , semver = require("../semver") | |
| , reverse = false | |
| , options = {} | |
| main() | |
| function main () { | |
| if (!argv.length) return help() | |
| while (argv.length) { | |
| var a = argv.shift() | |
| var i = a.indexOf('=') | |
| if (i !== -1) { | |
| a = a.slice(0, i) | |
| argv.unshift(a.slice(i + 1)) | |
| } | |
| 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 "-h": case "--help": case "-?": | |
| return help() | |
| default: | |
| versions.push(a) | |
| break | |
| } | |
| } | |
| var options = { loose: loose, includePrerelease: includePrerelease } | |
| versions = versions.map(function (v) { | |
| return coerce ? (semver.coerce(v) || {version: v}).version : v | |
| }).filter(function (v) { | |
| return semver.valid(v) | |
| }) | |
| if (!versions.length) return fail() | |
| if (inc && (versions.length !== 1 || range.length)) | |
| return failInc() | |
| for (var i = 0, l = range.length; i < l ; i ++) { | |
| versions = versions.filter(function (v) { | |
| return semver.satisfies(v, range[i], options) | |
| }) | |
| if (!versions.length) return fail() | |
| } | |
| return success(versions) | |
| } | |
| function failInc () { | |
| console.error("--inc can only be used on a single version with no range") | |
| fail() | |
| } | |
| function fail () { process.exit(1) } | |
| function success () { | |
| var compare = reverse ? "rcompare" : "compare" | |
| versions.sort(function (a, b) { | |
| return semver[compare](a, b, options) | |
| }).map(function (v) { | |
| return semver.clean(v, options) | |
| }).map(function (v) { | |
| return inc ? semver.inc(v, inc, options, identifier) : v | |
| }).forEach(function (v,i,_) { console.log(v) }) | |
| } | |
| function help () { | |
| console.log(["SemVer " + version | |
| ,"" | |
| ,"A JavaScript implementation of the http://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)" | |
| ,"" | |
| ,"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." | |
| ].join("\n")) | |
| } |
| { | |
| "systemParams": "linux-x64-67", | |
| "modulesFolders": [ | |
| "node_modules" | |
| ], | |
| "flags": [], | |
| "linkedModules": [ | |
| "apollo-client" | |
| ], | |
| "topLevelPatterns": [ | |
| "@babel/cli@^7.2.3", | |
| "@babel/core@^7.3.4", | |
| "@babel/preset-env@^7.3.4", | |
| "@babel/preset-react@^7.0.0", | |
| "@babel/preset-typescript@^7.3.3", | |
| "babel-plugin-css-modules-transform@^1.6.2", | |
| "babel-plugin-dynamic-import-node@^2.2.0", | |
| "babel-plugin-graphql-tag@^2.0.0", | |
| "babel-plugin-import-graphql@^2.7.0", | |
| "babel-plugin-lodash@^3.3.4", | |
| "babel-plugin-module-resolver@^3.2.0", | |
| "babel-plugin-styled-components@^1.10.0", | |
| "graphql-tag@^2.10.1", | |
| "graphql@^14.1.1", | |
| "styled-components@^4.1.3" | |
| ], | |
| "lockfileEntries": { | |
| "@babel/cli@^7.2.3": "https://registry.yarnpkg.com/@babel/cli/-/cli-7.2.3.tgz#1b262e42a3e959d28ab3d205ba2718e1923cfee6", | |
| "@babel/code-frame@^7.0.0": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8", | |
| "@babel/core@^7.3.4": "https://registry.yarnpkg.com/@babel/core/-/core-7.3.4.tgz#921a5a13746c21e32445bf0798680e9d11a6530b", | |
| "@babel/generator@^7.3.4": "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz#9aa48c1989257877a9d971296e5b73bfe72e446e", | |
| "@babel/helper-annotate-as-pure@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32", | |
| "@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f", | |
| "@babel/helper-builder-react-jsx@^7.3.0": "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4", | |
| "@babel/helper-call-delegate@^7.1.0": "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a", | |
| "@babel/helper-define-map@^7.1.0": "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c", | |
| "@babel/helper-explode-assignable-expression@^7.1.0": "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6", | |
| "@babel/helper-function-name@^7.1.0": "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53", | |
| "@babel/helper-get-function-arity@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3", | |
| "@babel/helper-hoist-variables@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88", | |
| "@babel/helper-member-expression-to-functions@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f", | |
| "@babel/helper-module-imports@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d", | |
| "@babel/helper-module-imports@^7.0.0-beta.49": "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d", | |
| "@babel/helper-module-transforms@^7.1.0": "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963", | |
| "@babel/helper-optimise-call-expression@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5", | |
| "@babel/helper-plugin-utils@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250", | |
| "@babel/helper-regex@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27", | |
| "@babel/helper-remap-async-to-generator@^7.1.0": "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f", | |
| "@babel/helper-replace-supers@^7.1.0": "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.3.4.tgz#a795208e9b911a6eeb08e5891faacf06e7013e13", | |
| "@babel/helper-replace-supers@^7.3.4": "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.3.4.tgz#a795208e9b911a6eeb08e5891faacf06e7013e13", | |
| "@babel/helper-simple-access@^7.1.0": "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c", | |
| "@babel/helper-split-export-declaration@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813", | |
| "@babel/helper-wrap-function@^7.1.0": "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa", | |
| "@babel/helpers@^7.2.0": "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.3.1.tgz#949eec9ea4b45d3210feb7dc1c22db664c9e44b9", | |
| "@babel/highlight@^7.0.0": "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4", | |
| "@babel/parser@^7.1.6": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c", | |
| "@babel/parser@^7.2.2": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c", | |
| "@babel/parser@^7.3.2": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c", | |
| "@babel/parser@^7.3.4": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c", | |
| "@babel/plugin-proposal-async-generator-functions@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e", | |
| "@babel/plugin-proposal-json-strings@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317", | |
| "@babel/plugin-proposal-object-rest-spread@^7.3.4": "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.4.tgz#47f73cf7f2a721aad5c0261205405c642e424654", | |
| "@babel/plugin-proposal-optional-catch-binding@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5", | |
| "@babel/plugin-proposal-unicode-property-regex@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520", | |
| "@babel/plugin-syntax-async-generators@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f", | |
| "@babel/plugin-syntax-json-strings@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470", | |
| "@babel/plugin-syntax-jsx@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7", | |
| "@babel/plugin-syntax-object-rest-spread@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e", | |
| "@babel/plugin-syntax-optional-catch-binding@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c", | |
| "@babel/plugin-syntax-typescript@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz#a7cc3f66119a9f7ebe2de5383cce193473d65991", | |
| "@babel/plugin-transform-arrow-functions@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550", | |
| "@babel/plugin-transform-async-to-generator@^7.3.4": "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.3.4.tgz#4e45408d3c3da231c0e7b823f407a53a7eb3048c", | |
| "@babel/plugin-transform-block-scoped-functions@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190", | |
| "@babel/plugin-transform-block-scoping@^7.3.4": "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.3.4.tgz#5c22c339de234076eee96c8783b2fed61202c5c4", | |
| "@babel/plugin-transform-classes@^7.3.4": "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.4.tgz#dc173cb999c6c5297e0b5f2277fdaaec3739d0cc", | |
| "@babel/plugin-transform-computed-properties@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da", | |
| "@babel/plugin-transform-destructuring@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz#f2f5520be055ba1c38c41c0e094d8a461dd78f2d", | |
| "@babel/plugin-transform-dotall-regex@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49", | |
| "@babel/plugin-transform-duplicate-keys@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3", | |
| "@babel/plugin-transform-exponentiation-operator@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008", | |
| "@babel/plugin-transform-for-of@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9", | |
| "@babel/plugin-transform-function-name@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a", | |
| "@babel/plugin-transform-literals@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1", | |
| "@babel/plugin-transform-modules-amd@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6", | |
| "@babel/plugin-transform-modules-commonjs@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404", | |
| "@babel/plugin-transform-modules-systemjs@^7.3.4": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.3.4.tgz#813b34cd9acb6ba70a84939f3680be0eb2e58861", | |
| "@babel/plugin-transform-modules-umd@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae", | |
| "@babel/plugin-transform-named-capturing-groups-regex@^7.3.0": "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz#140b52985b2d6ef0cb092ef3b29502b990f9cd50", | |
| "@babel/plugin-transform-new-target@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a", | |
| "@babel/plugin-transform-object-super@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598", | |
| "@babel/plugin-transform-parameters@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.3.3.tgz#3a873e07114e1a5bee17d04815662c8317f10e30", | |
| "@babel/plugin-transform-react-display-name@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0", | |
| "@babel/plugin-transform-react-jsx-self@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba", | |
| "@babel/plugin-transform-react-jsx-source@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz#20c8c60f0140f5dd3cd63418d452801cf3f7180f", | |
| "@babel/plugin-transform-react-jsx@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290", | |
| "@babel/plugin-transform-regenerator@^7.3.4": "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.3.4.tgz#1601655c362f5b38eead6a52631f5106b29fa46a", | |
| "@babel/plugin-transform-shorthand-properties@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0", | |
| "@babel/plugin-transform-spread@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406", | |
| "@babel/plugin-transform-sticky-regex@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1", | |
| "@babel/plugin-transform-template-literals@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b", | |
| "@babel/plugin-transform-typeof-symbol@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2", | |
| "@babel/plugin-transform-typescript@^7.3.2": "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.3.2.tgz#59a7227163e55738842f043d9e5bd7c040447d96", | |
| "@babel/plugin-transform-unicode-regex@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b", | |
| "@babel/preset-env@^7.3.4": "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.3.4.tgz#887cf38b6d23c82f19b5135298bdb160062e33e1", | |
| "@babel/preset-react@^7.0.0": "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0", | |
| "@babel/preset-typescript@^7.3.3": "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz#88669911053fa16b2b276ea2ede2ca603b3f307a", | |
| "@babel/template@^7.1.0": "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907", | |
| "@babel/template@^7.1.2": "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907", | |
| "@babel/template@^7.2.2": "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907", | |
| "@babel/traverse@^7.1.0": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz#1330aab72234f8dea091b08c4f8b9d05c7119e06", | |
| "@babel/traverse@^7.1.5": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz#1330aab72234f8dea091b08c4f8b9d05c7119e06", | |
| "@babel/traverse@^7.1.6": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz#1330aab72234f8dea091b08c4f8b9d05c7119e06", | |
| "@babel/traverse@^7.3.4": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz#1330aab72234f8dea091b08c4f8b9d05c7119e06", | |
| "@babel/types@^7.0.0": "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed", | |
| "@babel/types@^7.0.0-beta.49": "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed", | |
| "@babel/types@^7.1.6": "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed", | |
| "@babel/types@^7.2.0": "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed", | |
| "@babel/types@^7.2.2": "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed", | |
| "@babel/types@^7.3.0": "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed", | |
| "@babel/types@^7.3.4": "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed", | |
| "@emotion/is-prop-valid@^0.7.3": "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz#a6bf4fa5387cbba59d44e698a4680f481a8da6cc", | |
| "@emotion/[email protected]": "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f", | |
| "@emotion/unitless@^0.7.0": "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.3.tgz#6310a047f12d21a1036fb031317219892440416f", | |
| "abbrev@1": "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8", | |
| "ansi-regex@^2.0.0": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df", | |
| "ansi-regex@^3.0.0": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998", | |
| "ansi-styles@^3.2.1": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d", | |
| "anymatch@^2.0.0": "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb", | |
| "aproba@^1.0.3": "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a", | |
| "are-we-there-yet@~1.1.2": "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21", | |
| "arr-diff@^4.0.0": "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520", | |
| "arr-flatten@^1.1.0": "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1", | |
| "arr-union@^3.1.0": "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4", | |
| "array-unique@^0.3.2": "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428", | |
| "assign-symbols@^1.0.0": "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367", | |
| "async-each@^1.0.1": "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d", | |
| "atob@^2.1.1": "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9", | |
| "babel-literal-to-ast@^2.1.0": "https://registry.yarnpkg.com/babel-literal-to-ast/-/babel-literal-to-ast-2.1.0.tgz#c8b12f9c36a8cee13572d65aabf6cff8adb1e8b3", | |
| "babel-plugin-css-modules-transform@^1.6.2": "https://registry.yarnpkg.com/babel-plugin-css-modules-transform/-/babel-plugin-css-modules-transform-1.6.2.tgz#eecf4889637bf1c56cda25ee21df060775d1bd22", | |
| "babel-plugin-dynamic-import-node@^2.2.0": "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz#c0adfb07d95f4a4495e9aaac6ec386c4d7c2524e", | |
| "babel-plugin-graphql-tag@^2.0.0": "https://registry.yarnpkg.com/babel-plugin-graphql-tag/-/babel-plugin-graphql-tag-2.0.0.tgz#2135f1d87be8bc9495792cb9c1a9d8022c2c1437", | |
| "babel-plugin-import-graphql@^2.7.0": "https://registry.yarnpkg.com/babel-plugin-import-graphql/-/babel-plugin-import-graphql-2.7.0.tgz#984b2330afa05cce5ff81e577f7d82cdb86aea6d", | |
| "babel-plugin-lodash@^3.3.4": "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196", | |
| "babel-plugin-module-resolver@^3.2.0": "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7", | |
| "babel-plugin-styled-components@>= 1": "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.0.tgz#ff1f42ad2cc78c21f26b62266b8f564dbc862939", | |
| "babel-plugin-styled-components@^1.10.0": "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.0.tgz#ff1f42ad2cc78c21f26b62266b8f564dbc862939", | |
| "babel-plugin-syntax-jsx@^6.18.0": "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946", | |
| "balanced-match@^1.0.0": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767", | |
| "base@^0.11.1": "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f", | |
| "big.js@^3.1.3": "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e", | |
| "binary-extensions@^1.0.0": "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.0.tgz#9523e001306a32444b907423f1de2164222f6ab1", | |
| "brace-expansion@^1.1.7": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd", | |
| "braces@^2.3.1": "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729", | |
| "braces@^2.3.2": "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729", | |
| "browserslist@^4.3.4": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.4.2.tgz#6ea8a74d6464bb0bd549105f659b41197d8f0ba2", | |
| "cache-base@^1.0.1": "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2", | |
| "camelize@^1.0.0": "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b", | |
| "caniuse-lite@^1.0.30000939": "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000941.tgz#f0810802b2ab8d27f4b625d4769a610e24d5a42c", | |
| "chalk@^2.0.0": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424", | |
| "chalk@^2.4.1": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424", | |
| "chokidar@^2.0.3": "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz#9c23ea40b01638439e0513864d362aeacc5ad058", | |
| "chownr@^1.1.1": "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494", | |
| "class-utils@^0.3.5": "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463", | |
| "code-point-at@^1.0.0": "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77", | |
| "collection-visit@^1.0.0": "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0", | |
| "color-convert@^1.9.0": "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8", | |
| "[email protected]": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25", | |
| "commander@^2.8.1": "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a", | |
| "component-emitter@^1.2.1": "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6", | |
| "[email protected]": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b", | |
| "console-control-strings@^1.0.0": "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e", | |
| "console-control-strings@~1.1.0": "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e", | |
| "convert-source-map@^1.1.0": "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20", | |
| "copy-descriptor@^0.1.0": "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d", | |
| "core-util-is@~1.0.0": "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7", | |
| "css-color-keywords@^1.0.0": "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05", | |
| "css-modules-require-hook@^4.0.6": "https://registry.yarnpkg.com/css-modules-require-hook/-/css-modules-require-hook-4.2.3.tgz#6792ca412b15e23e6f9be6a07dcef7f577ff904d", | |
| "css-selector-tokenizer@^0.7.0": "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d", | |
| "css-to-react-native@^2.2.2": "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.3.0.tgz#bf80d24ec4a08e430306ef429c0586e6ed5485f7", | |
| "cssesc@^0.1.0": "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4", | |
| "debug@^2.1.2": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f", | |
| "debug@^2.2.0": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f", | |
| "debug@^2.3.3": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f", | |
| "debug@^4.1.0": "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791", | |
| "debug@^4.1.1": "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791", | |
| "decode-uri-component@^0.2.0": "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545", | |
| "deep-extend@^0.6.0": "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac", | |
| "define-properties@^1.1.2": "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1", | |
| "define-property@^0.2.5": "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116", | |
| "define-property@^1.0.0": "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6", | |
| "define-property@^2.0.2": "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d", | |
| "delegates@^1.0.0": "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a", | |
| "detect-libc@^1.0.2": "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b", | |
| "electron-to-chromium@^1.3.113": "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz#b1ccf619df7295aea17bc6951dc689632629e4a9", | |
| "emojis-list@^2.0.0": "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389", | |
| "escape-string-regexp@^1.0.5": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", | |
| "esutils@^2.0.0": "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b", | |
| "esutils@^2.0.2": "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b", | |
| "expand-brackets@^2.1.4": "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622", | |
| "extend-shallow@^2.0.1": "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f", | |
| "extend-shallow@^3.0.0": "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8", | |
| "extend-shallow@^3.0.2": "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8", | |
| "extglob@^2.0.4": "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543", | |
| "fastparse@^1.1.1": "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9", | |
| "fill-range@^4.0.0": "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7", | |
| "find-babel-config@^1.1.0": "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2", | |
| "find-up@^2.1.0": "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7", | |
| "for-in@^1.0.2": "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80", | |
| "fragment-cache@^0.2.1": "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19", | |
| "fs-minipass@^1.2.5": "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d", | |
| "fs-readdir-recursive@^1.1.0": "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27", | |
| "fs.realpath@^1.0.0": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f", | |
| "fsevents@^1.2.7": "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4", | |
| "function-bind@^1.1.1": "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d", | |
| "gauge@~2.7.3": "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7", | |
| "generic-names@^1.0.1": "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917", | |
| "get-value@^2.0.3": "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28", | |
| "get-value@^2.0.6": "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28", | |
| "glob-parent@^3.1.0": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae", | |
| "glob-to-regexp@^0.3.0": "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab", | |
| "glob@^7.0.0": "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1", | |
| "glob@^7.1.1": "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1", | |
| "glob@^7.1.2": "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1", | |
| "glob@^7.1.3": "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1", | |
| "globals@^11.1.0": "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e", | |
| "graceful-fs@^4.1.11": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00", | |
| "graphql-tag@^2.10.1": "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.1.tgz#10aa41f1cd8fae5373eaf11f1f67260a3cad5e02", | |
| "graphql-tag@^2.9.2": "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.1.tgz#10aa41f1cd8fae5373eaf11f1f67260a3cad5e02", | |
| "graphql@^14.1.1": "https://registry.yarnpkg.com/graphql/-/graphql-14.1.1.tgz#d5d77df4b19ef41538d7215d1e7a28834619fac0", | |
| "has-flag@^3.0.0": "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd", | |
| "has-symbols@^1.0.0": "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44", | |
| "has-unicode@^2.0.0": "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9", | |
| "has-value@^0.3.1": "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f", | |
| "has-value@^1.0.0": "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177", | |
| "has-values@^0.1.4": "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771", | |
| "has-values@^1.0.0": "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f", | |
| "iconv-lite@^0.4.4": "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b", | |
| "icss-replace-symbols@^1.0.2": "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded", | |
| "icss-replace-symbols@^1.1.0": "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded", | |
| "icss-utils@^3.0.1": "https://registry.yarnpkg.com/icss-utils/-/icss-utils-3.0.1.tgz#ee70d3ae8cac38c6be5ed91e851b27eed343ad0f", | |
| "ignore-walk@^3.0.1": "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8", | |
| "inflight@^1.0.4": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9", | |
| "inherits@2": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de", | |
| "inherits@^2.0.3": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de", | |
| "inherits@~2.0.3": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de", | |
| "ini@~1.3.0": "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927", | |
| "invariant@^2.2.2": "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6", | |
| "is-accessor-descriptor@^0.1.6": "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6", | |
| "is-accessor-descriptor@^1.0.0": "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656", | |
| "is-binary-path@^1.0.0": "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898", | |
| "is-buffer@^1.1.5": "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be", | |
| "is-data-descriptor@^0.1.4": "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56", | |
| "is-data-descriptor@^1.0.0": "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7", | |
| "is-descriptor@^0.1.0": "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca", | |
| "is-descriptor@^1.0.0": "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec", | |
| "is-descriptor@^1.0.2": "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec", | |
| "is-extendable@^0.1.0": "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89", | |
| "is-extendable@^0.1.1": "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89", | |
| "is-extendable@^1.0.1": "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4", | |
| "is-extglob@^2.1.0": "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2", | |
| "is-extglob@^2.1.1": "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2", | |
| "is-fullwidth-code-point@^1.0.0": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb", | |
| "is-fullwidth-code-point@^2.0.0": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f", | |
| "is-glob@^3.1.0": "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a", | |
| "is-glob@^4.0.0": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0", | |
| "is-number@^3.0.0": "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195", | |
| "is-plain-obj@^1.1.0": "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e", | |
| "is-plain-object@^2.0.1": "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677", | |
| "is-plain-object@^2.0.3": "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677", | |
| "is-plain-object@^2.0.4": "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677", | |
| "is-windows@^1.0.2": "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d", | |
| "[email protected]": "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11", | |
| "isarray@~1.0.0": "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11", | |
| "isobject@^2.0.0": "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89", | |
| "isobject@^3.0.0": "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df", | |
| "isobject@^3.0.1": "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df", | |
| "iterall@^1.2.2": "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7", | |
| "js-levenshtein@^1.1.3": "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d", | |
| "js-tokens@^3.0.0 || ^4.0.0": "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499", | |
| "js-tokens@^4.0.0": "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499", | |
| "jsesc@^2.5.1": "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4", | |
| "jsesc@~0.5.0": "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d", | |
| "json5@^0.5.0": "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821", | |
| "json5@^0.5.1": "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821", | |
| "json5@^2.1.0": "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850", | |
| "kind-of@^3.0.2": "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64", | |
| "kind-of@^3.0.3": "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64", | |
| "kind-of@^3.2.0": "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64", | |
| "kind-of@^4.0.0": "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57", | |
| "kind-of@^5.0.0": "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d", | |
| "kind-of@^6.0.0": "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051", | |
| "kind-of@^6.0.2": "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051", | |
| "loader-utils@^0.2.16": "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348", | |
| "locate-path@^2.0.0": "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e", | |
| "lodash@^4.17.10": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d", | |
| "lodash@^4.17.11": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d", | |
| "lodash@^4.3.0": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d", | |
| "loose-envify@^1.0.0": "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf", | |
| "loose-envify@^1.4.0": "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf", | |
| "map-cache@^0.2.2": "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf", | |
| "map-visit@^1.0.0": "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f", | |
| "memoize-one@^4.0.0": "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906", | |
| "micromatch@^3.1.10": "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23", | |
| "micromatch@^3.1.4": "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23", | |
| "minimatch@^3.0.4": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083", | |
| "[email protected]": "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d", | |
| "minimist@^1.2.0": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284", | |
| "minipass@^2.2.1": "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848", | |
| "minipass@^2.3.4": "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848", | |
| "minizlib@^1.1.1": "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614", | |
| "mixin-deep@^1.2.0": "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe", | |
| "mkdirp@^0.5.0": "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903", | |
| "mkdirp@^0.5.1": "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903", | |
| "[email protected]": "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8", | |
| "ms@^2.1.1": "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a", | |
| "nan@^2.9.2": "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552", | |
| "nanomatch@^1.2.9": "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119", | |
| "needle@^2.2.1": "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e", | |
| "node-pre-gyp@^0.10.0": "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc", | |
| "node-releases@^1.1.8": "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.9.tgz#70d0985ec4bf7de9f08fc481f5dae111889ca482", | |
| "nopt@^4.0.1": "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d", | |
| "normalize-path@^2.1.1": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9", | |
| "normalize-path@^3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65", | |
| "npm-bundled@^1.0.1": "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd", | |
| "npm-packlist@^1.1.6": "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc", | |
| "npmlog@^4.0.2": "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b", | |
| "number-is-nan@^1.0.0": "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d", | |
| "object-assign@^4.0.1": "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863", | |
| "object-assign@^4.1.0": "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863", | |
| "object-assign@^4.1.1": "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863", | |
| "object-copy@^0.1.0": "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c", | |
| "object-keys@^1.0.11": "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032", | |
| "object-keys@^1.0.12": "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032", | |
| "object-visit@^1.0.0": "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb", | |
| "object.assign@^4.1.0": "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da", | |
| "object.pick@^1.3.0": "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747", | |
| "once@^1.3.0": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", | |
| "os-homedir@^1.0.0": "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3", | |
| "os-tmpdir@^1.0.0": "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274", | |
| "osenv@^0.1.4": "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410", | |
| "output-file-sync@^2.0.0": "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0", | |
| "p-limit@^1.1.0": "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8", | |
| "p-locate@^2.0.0": "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43", | |
| "p-try@^1.0.0": "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3", | |
| "pascalcase@^0.1.1": "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14", | |
| "path-dirname@^1.0.0": "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0", | |
| "path-exists@^3.0.0": "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515", | |
| "path-is-absolute@^1.0.0": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f", | |
| "path-parse@^1.0.6": "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c", | |
| "pkg-up@^2.0.0": "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f", | |
| "posix-character-classes@^0.1.0": "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab", | |
| "postcss-modules-extract-imports@^1.0.0": "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a", | |
| "postcss-modules-local-by-default@^1.0.1": "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069", | |
| "postcss-modules-resolve-imports@^1.3.0": "https://registry.yarnpkg.com/postcss-modules-resolve-imports/-/postcss-modules-resolve-imports-1.3.0.tgz#398d3000b95ae969420cdf4cd83fa8067f1c5eae", | |
| "postcss-modules-scope@^1.0.0": "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90", | |
| "postcss-modules-values@^1.1.1": "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20", | |
| "postcss-value-parser@^3.3.0": "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281", | |
| "postcss@^6.0.1": "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324", | |
| "postcss@^6.0.2": "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324", | |
| "private@^0.1.6": "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff", | |
| "process-nextick-args@~2.0.0": "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa", | |
| "prop-types@^15.5.4": "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5", | |
| "rc@^1.2.7": "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed", | |
| "react-is@^16.6.0": "https://registry.yarnpkg.com/react-is/-/react-is-16.8.4.tgz#90f336a68c3a29a096a3d648ab80e87ec61482a2", | |
| "react-is@^16.8.1": "https://registry.yarnpkg.com/react-is/-/react-is-16.8.4.tgz#90f336a68c3a29a096a3d648ab80e87ec61482a2", | |
| "readable-stream@^2.0.2": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf", | |
| "readable-stream@^2.0.6": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf", | |
| "readdirp@^2.2.1": "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525", | |
| "regenerate-unicode-properties@^8.0.1": "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.1.tgz#58a4a74e736380a7ab3c5f7e03f303a941b31289", | |
| "regenerate@^1.2.1": "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11", | |
| "regenerate@^1.4.0": "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11", | |
| "regenerator-transform@^0.13.4": "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb", | |
| "regex-not@^1.0.0": "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c", | |
| "regex-not@^1.0.2": "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c", | |
| "regexp-tree@^0.1.0": "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.5.tgz#7cd71fca17198d04b4176efd79713f2998009397", | |
| "regexpu-core@^1.0.0": "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b", | |
| "regexpu-core@^4.1.3": "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.3.tgz#72f572e03bb8b9f4f4d895a0ccc57e707f4af2e4", | |
| "regexpu-core@^4.2.0": "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.3.tgz#72f572e03bb8b9f4f4d895a0ccc57e707f4af2e4", | |
| "regjsgen@^0.2.0": "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7", | |
| "regjsgen@^0.5.0": "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd", | |
| "regjsparser@^0.1.4": "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c", | |
| "regjsparser@^0.6.0": "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c", | |
| "remove-trailing-separator@^1.0.1": "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef", | |
| "repeat-element@^1.1.2": "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce", | |
| "repeat-string@^1.6.1": "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637", | |
| "require-package-name@^2.0.1": "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9", | |
| "reselect@^3.0.1": "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147", | |
| "resolve-url@^0.2.1": "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a", | |
| "resolve@^1.3.2": "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba", | |
| "resolve@^1.4.0": "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba", | |
| "ret@~0.1.10": "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc", | |
| "rimraf@^2.6.1": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab", | |
| "safe-buffer@^5.1.2": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", | |
| "safe-buffer@~5.1.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", | |
| "safe-buffer@~5.1.1": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", | |
| "safe-regex@^1.1.0": "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e", | |
| "safer-buffer@>= 2.1.2 < 3": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a", | |
| "sax@^1.2.4": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9", | |
| "seekout@^1.0.1": "https://registry.yarnpkg.com/seekout/-/seekout-1.0.2.tgz#09ba9f1bd5b46fbb134718eb19a68382cbb1b9c9", | |
| "semver@^5.3.0": "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004", | |
| "semver@^5.4.1": "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004", | |
| "set-blocking@~2.0.0": "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7", | |
| "set-value@^0.4.3": "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1", | |
| "set-value@^2.0.0": "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274", | |
| "signal-exit@^3.0.0": "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d", | |
| "slash@^2.0.0": "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44", | |
| "snapdragon-node@^2.0.1": "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b", | |
| "snapdragon-util@^3.0.1": "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2", | |
| "snapdragon@^0.8.1": "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d", | |
| "source-map-resolve@^0.5.0": "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259", | |
| "source-map-url@^0.4.0": "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3", | |
| "source-map@^0.5.0": "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc", | |
| "source-map@^0.5.6": "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc", | |
| "source-map@^0.6.1": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263", | |
| "split-string@^3.0.1": "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2", | |
| "split-string@^3.0.2": "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2", | |
| "static-extend@^0.1.1": "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6", | |
| "string-width@^1.0.1": "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3", | |
| "string-width@^1.0.2 || 2": "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e", | |
| "string_decoder@~1.1.1": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8", | |
| "strip-ansi@^3.0.0": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf", | |
| "strip-ansi@^3.0.1": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf", | |
| "strip-ansi@^4.0.0": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f", | |
| "strip-json-comments@~2.0.1": "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a", | |
| "styled-components@^4.1.3": "https://registry.yarnpkg.com/styled-components/-/styled-components-4.1.3.tgz#4472447208e618b57e84deaaeb6acd34a5e0fe9b", | |
| "stylis-rule-sheet@^0.0.10": "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430", | |
| "stylis@^3.5.0": "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe", | |
| "supports-color@^5.3.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f", | |
| "supports-color@^5.4.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f", | |
| "supports-color@^5.5.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f", | |
| "tar@^4": "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d", | |
| "to-fast-properties@^2.0.0": "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e", | |
| "to-object-path@^0.3.0": "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af", | |
| "to-regex-range@^2.1.0": "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38", | |
| "to-regex@^3.0.1": "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce", | |
| "to-regex@^3.0.2": "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce", | |
| "trim-right@^1.0.1": "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003", | |
| "unicode-canonical-property-names-ecmascript@^1.0.4": "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818", | |
| "unicode-match-property-ecmascript@^1.0.4": "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c", | |
| "unicode-match-property-value-ecmascript@^1.1.0": "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277", | |
| "unicode-property-aliases-ecmascript@^1.0.4": "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57", | |
| "union-value@^1.0.0": "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4", | |
| "unset-value@^1.0.0": "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559", | |
| "upath@^1.1.0": "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd", | |
| "urix@^0.1.0": "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72", | |
| "use@^3.1.0": "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f", | |
| "util-deprecate@~1.0.1": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf", | |
| "wide-align@^1.1.0": "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457", | |
| "wrappy@1": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f", | |
| "yallist@^3.0.0": "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9", | |
| "yallist@^3.0.2": "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" | |
| }, | |
| "files": [], | |
| "artifacts": {} | |
| } |
| #!/usr/bin/env node | |
| require("../lib/babel-external-helpers"); |
| #!/usr/bin/env node | |
| require("../lib/babel"); |
| throw new Error("Use the `@babel/core` package instead of `@babel/cli`."); |
| "use strict"; | |
| function _commander() { | |
| const data = _interopRequireDefault(require("commander")); | |
| _commander = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _core() { | |
| const data = require("@babel/core"); | |
| _core = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function collect(value, previousValue) { | |
| if (typeof value !== "string") return previousValue; | |
| const values = value.split(","); | |
| return previousValue ? previousValue.concat(values) : values; | |
| } | |
| _commander().default.option("-l, --whitelist [whitelist]", "Whitelist of helpers to ONLY include", collect); | |
| _commander().default.option("-t, --output-type [type]", "Type of output (global|umd|var)", "global"); | |
| _commander().default.usage("[options]"); | |
| _commander().default.parse(process.argv); | |
| console.log((0, _core().buildExternalHelpers)(_commander().default.whitelist, _commander().default.outputType)); |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function _defaults() { | |
| const data = _interopRequireDefault(require("lodash/defaults")); | |
| _defaults = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _outputFileSync() { | |
| const data = _interopRequireDefault(require("output-file-sync")); | |
| _outputFileSync = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _mkdirp() { | |
| const data = require("mkdirp"); | |
| _mkdirp = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _slash() { | |
| const data = _interopRequireDefault(require("slash")); | |
| _slash = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _fs() { | |
| const data = _interopRequireDefault(require("fs")); | |
| _fs = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var util = _interopRequireWildcard(require("./util")); | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } | |
| function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } | |
| function _default(_x) { | |
| return _ref.apply(this, arguments); | |
| } | |
| function _ref() { | |
| _ref = _asyncToGenerator(function* ({ | |
| cliOptions, | |
| babelOptions | |
| }) { | |
| const filenames = cliOptions.filenames; | |
| function write(_x2, _x3) { | |
| return _write.apply(this, arguments); | |
| } | |
| function _write() { | |
| _write = _asyncToGenerator(function* (src, base) { | |
| let relative = _path().default.relative(base, src); | |
| if (!util.isCompilableExtension(relative, cliOptions.extensions)) { | |
| return false; | |
| } | |
| relative = util.adjustRelative(relative, cliOptions.keepFileExtension); | |
| const dest = getDest(relative, base); | |
| try { | |
| const res = yield util.compile(src, (0, _defaults().default)({ | |
| sourceFileName: (0, _slash().default)(_path().default.relative(dest + "/..", src)) | |
| }, babelOptions)); | |
| if (!res) return false; | |
| if (res.map && babelOptions.sourceMaps && babelOptions.sourceMaps !== "inline") { | |
| const mapLoc = dest + ".map"; | |
| res.code = util.addSourceMappingUrl(res.code, mapLoc); | |
| res.map.file = _path().default.basename(relative); | |
| (0, _outputFileSync().default)(mapLoc, JSON.stringify(res.map)); | |
| } | |
| (0, _outputFileSync().default)(dest, res.code); | |
| util.chmod(src, dest); | |
| if (cliOptions.verbose) { | |
| console.log(src + " -> " + dest); | |
| } | |
| return true; | |
| } catch (err) { | |
| if (cliOptions.watch) { | |
| console.error(err); | |
| return false; | |
| } | |
| throw err; | |
| } | |
| }); | |
| return _write.apply(this, arguments); | |
| } | |
| function getDest(filename, base) { | |
| if (cliOptions.relative) { | |
| return _path().default.join(base, cliOptions.outDir, filename); | |
| } | |
| return _path().default.join(cliOptions.outDir, filename); | |
| } | |
| function handleFile(_x4, _x5) { | |
| return _handleFile.apply(this, arguments); | |
| } | |
| function _handleFile() { | |
| _handleFile = _asyncToGenerator(function* (src, base) { | |
| const written = yield write(src, base); | |
| if (!written && cliOptions.copyFiles) { | |
| const filename = _path().default.relative(base, src); | |
| const dest = getDest(filename, base); | |
| (0, _outputFileSync().default)(dest, _fs().default.readFileSync(src)); | |
| util.chmod(src, dest); | |
| } | |
| return written; | |
| }); | |
| return _handleFile.apply(this, arguments); | |
| } | |
| function handle(_x6) { | |
| return _handle.apply(this, arguments); | |
| } | |
| function _handle() { | |
| _handle = _asyncToGenerator(function* (filenameOrDir) { | |
| if (!_fs().default.existsSync(filenameOrDir)) return 0; | |
| const stat = _fs().default.statSync(filenameOrDir); | |
| if (stat.isDirectory()) { | |
| const dirname = filenameOrDir; | |
| let count = 0; | |
| const files = util.readdir(dirname, cliOptions.includeDotfiles); | |
| for (const filename of files) { | |
| const src = _path().default.join(dirname, filename); | |
| const written = yield handleFile(src, dirname); | |
| if (written) count += 1; | |
| } | |
| return count; | |
| } else { | |
| const filename = filenameOrDir; | |
| const written = yield handleFile(filename, _path().default.dirname(filename)); | |
| return written ? 1 : 0; | |
| } | |
| }); | |
| return _handle.apply(this, arguments); | |
| } | |
| if (!cliOptions.skipInitialBuild) { | |
| if (cliOptions.deleteDirOnStart) { | |
| util.deleteDir(cliOptions.outDir); | |
| } | |
| (0, _mkdirp().sync)(cliOptions.outDir); | |
| let compiledFiles = 0; | |
| for (const filename of cliOptions.filenames) { | |
| compiledFiles += yield handle(filename); | |
| } | |
| console.log(`Successfully compiled ${compiledFiles} ${compiledFiles !== 1 ? "files" : "file"} with Babel.`); | |
| } | |
| if (cliOptions.watch) { | |
| const chokidar = util.requireChokidar(); | |
| filenames.forEach(function (filenameOrDir) { | |
| const watcher = chokidar.watch(filenameOrDir, { | |
| persistent: true, | |
| ignoreInitial: true, | |
| awaitWriteFinish: { | |
| stabilityThreshold: 50, | |
| pollInterval: 10 | |
| } | |
| }); | |
| ["add", "change"].forEach(function (type) { | |
| watcher.on(type, function (filename) { | |
| handleFile(filename, filename === filenameOrDir ? _path().default.dirname(filenameOrDir) : filenameOrDir).catch(err => { | |
| console.error(err); | |
| }); | |
| }); | |
| }); | |
| }); | |
| } | |
| }); | |
| return _ref.apply(this, arguments); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function _convertSourceMap() { | |
| const data = _interopRequireDefault(require("convert-source-map")); | |
| _convertSourceMap = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _defaults() { | |
| const data = _interopRequireDefault(require("lodash/defaults")); | |
| _defaults = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _sourceMap() { | |
| const data = _interopRequireDefault(require("source-map")); | |
| _sourceMap = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _slash() { | |
| const data = _interopRequireDefault(require("slash")); | |
| _slash = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _fs() { | |
| const data = _interopRequireDefault(require("fs")); | |
| _fs = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var util = _interopRequireWildcard(require("./util")); | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } | |
| function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } | |
| function _default(_x) { | |
| return _ref.apply(this, arguments); | |
| } | |
| function _ref() { | |
| _ref = _asyncToGenerator(function* ({ | |
| cliOptions, | |
| babelOptions | |
| }) { | |
| function buildResult(fileResults) { | |
| const map = new (_sourceMap().default.SourceMapGenerator)({ | |
| file: cliOptions.sourceMapTarget || _path().default.basename(cliOptions.outFile || "") || "stdout", | |
| sourceRoot: babelOptions.sourceRoot | |
| }); | |
| let code = ""; | |
| let offset = 0; | |
| for (const result of fileResults) { | |
| if (!result) continue; | |
| code += result.code + "\n"; | |
| if (result.map) { | |
| const consumer = new (_sourceMap().default.SourceMapConsumer)(result.map); | |
| const sources = new Set(); | |
| consumer.eachMapping(function (mapping) { | |
| if (mapping.source != null) sources.add(mapping.source); | |
| map.addMapping({ | |
| generated: { | |
| line: mapping.generatedLine + offset, | |
| column: mapping.generatedColumn | |
| }, | |
| source: mapping.source, | |
| original: mapping.source == null ? null : { | |
| line: mapping.originalLine, | |
| column: mapping.originalColumn | |
| } | |
| }); | |
| }); | |
| sources.forEach(source => { | |
| const content = consumer.sourceContentFor(source, true); | |
| if (content !== null) { | |
| map.setSourceContent(source, content); | |
| } | |
| }); | |
| offset = code.split("\n").length - 1; | |
| } | |
| } | |
| if (babelOptions.sourceMaps === "inline" || !cliOptions.outFile && babelOptions.sourceMaps) { | |
| code += "\n" + _convertSourceMap().default.fromObject(map).toComment(); | |
| } | |
| return { | |
| map: map, | |
| code: code | |
| }; | |
| } | |
| function output(fileResults) { | |
| const result = buildResult(fileResults); | |
| if (cliOptions.outFile) { | |
| if (babelOptions.sourceMaps && babelOptions.sourceMaps !== "inline") { | |
| const mapLoc = cliOptions.outFile + ".map"; | |
| result.code = util.addSourceMappingUrl(result.code, mapLoc); | |
| _fs().default.writeFileSync(mapLoc, JSON.stringify(result.map)); | |
| } | |
| _fs().default.writeFileSync(cliOptions.outFile, result.code); | |
| } else { | |
| process.stdout.write(result.code + "\n"); | |
| } | |
| } | |
| function readStdin() { | |
| return new Promise((resolve, reject) => { | |
| let code = ""; | |
| process.stdin.setEncoding("utf8"); | |
| process.stdin.on("readable", function () { | |
| const chunk = process.stdin.read(); | |
| if (chunk !== null) code += chunk; | |
| }); | |
| process.stdin.on("end", function () { | |
| resolve(code); | |
| }); | |
| process.stdin.on("error", reject); | |
| }); | |
| } | |
| function stdin() { | |
| return _stdin.apply(this, arguments); | |
| } | |
| function _stdin() { | |
| _stdin = _asyncToGenerator(function* () { | |
| const code = yield readStdin(); | |
| const res = yield util.transform(cliOptions.filename, code, (0, _defaults().default)({ | |
| sourceFileName: "stdin" | |
| }, babelOptions)); | |
| output([res]); | |
| }); | |
| return _stdin.apply(this, arguments); | |
| } | |
| function walk(_x2) { | |
| return _walk.apply(this, arguments); | |
| } | |
| function _walk() { | |
| _walk = _asyncToGenerator(function* (filenames) { | |
| const _filenames = []; | |
| filenames.forEach(function (filename) { | |
| if (!_fs().default.existsSync(filename)) return; | |
| const stat = _fs().default.statSync(filename); | |
| if (stat.isDirectory()) { | |
| const dirname = filename; | |
| util.readdirForCompilable(filename, cliOptions.includeDotfiles, cliOptions.extensions).forEach(function (filename) { | |
| _filenames.push(_path().default.join(dirname, filename)); | |
| }); | |
| } else { | |
| _filenames.push(filename); | |
| } | |
| }); | |
| const results = yield Promise.all(_filenames.map(function () { | |
| var _ref2 = _asyncToGenerator(function* (filename) { | |
| let sourceFilename = filename; | |
| if (cliOptions.outFile) { | |
| sourceFilename = _path().default.relative(_path().default.dirname(cliOptions.outFile), sourceFilename); | |
| } | |
| sourceFilename = (0, _slash().default)(sourceFilename); | |
| try { | |
| return yield util.compile(filename, (0, _defaults().default)({ | |
| sourceFileName: sourceFilename, | |
| sourceMaps: babelOptions.sourceMaps === "inline" ? true : babelOptions.sourceMaps | |
| }, babelOptions)); | |
| } catch (err) { | |
| if (!cliOptions.watch) { | |
| throw err; | |
| } | |
| console.error(err); | |
| return null; | |
| } | |
| }); | |
| return function (_x4) { | |
| return _ref2.apply(this, arguments); | |
| }; | |
| }())); | |
| output(results); | |
| }); | |
| return _walk.apply(this, arguments); | |
| } | |
| function files(_x3) { | |
| return _files.apply(this, arguments); | |
| } | |
| function _files() { | |
| _files = _asyncToGenerator(function* (filenames) { | |
| if (!cliOptions.skipInitialBuild) { | |
| yield walk(filenames); | |
| } | |
| if (cliOptions.watch) { | |
| const chokidar = util.requireChokidar(); | |
| chokidar.watch(filenames, { | |
| persistent: true, | |
| ignoreInitial: true, | |
| awaitWriteFinish: { | |
| stabilityThreshold: 50, | |
| pollInterval: 10 | |
| } | |
| }).on("all", function (type, filename) { | |
| if (!util.isCompilableExtension(filename, cliOptions.extensions)) { | |
| return; | |
| } | |
| if (type === "add" || type === "change") { | |
| if (cliOptions.verbose) { | |
| console.log(type + " " + filename); | |
| } | |
| walk(filenames).catch(err => { | |
| console.error(err); | |
| }); | |
| } | |
| }); | |
| } | |
| }); | |
| return _files.apply(this, arguments); | |
| } | |
| if (cliOptions.filenames.length) { | |
| yield files(cliOptions.filenames); | |
| } else { | |
| yield stdin(); | |
| } | |
| }); | |
| return _ref.apply(this, arguments); | |
| } |
| #!/usr/bin/env node | |
| "use strict"; | |
| var _options = _interopRequireDefault(require("./options")); | |
| var _dir = _interopRequireDefault(require("./dir")); | |
| var _file = _interopRequireDefault(require("./file")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const opts = (0, _options.default)(process.argv); | |
| const fn = opts.cliOptions.outDir ? _dir.default : _file.default; | |
| fn(opts).catch(err => { | |
| console.error(err); | |
| process.exit(1); | |
| }); |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = parseArgv; | |
| function _fs() { | |
| const data = _interopRequireDefault(require("fs")); | |
| _fs = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _commander() { | |
| const data = _interopRequireDefault(require("commander")); | |
| _commander = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _core() { | |
| const data = require("@babel/core"); | |
| _core = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _uniq() { | |
| const data = _interopRequireDefault(require("lodash/uniq")); | |
| _uniq = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _glob() { | |
| const data = _interopRequireDefault(require("glob")); | |
| _glob = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _package = _interopRequireDefault(require("../../package.json")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| _commander().default.option("-f, --filename [filename]", "filename to use when reading from stdin - this will be used in source-maps, errors etc"); | |
| _commander().default.option("--presets [list]", "comma-separated list of preset names", collect); | |
| _commander().default.option("--plugins [list]", "comma-separated list of plugin names", collect); | |
| _commander().default.option("--config-file [path]", "Path to a .babelrc file to use"); | |
| _commander().default.option("--env-name [name]", "The name of the 'env' to use when loading configs and plugins. " + "Defaults to the value of BABEL_ENV, or else NODE_ENV, or else 'development'."); | |
| _commander().default.option("--root-mode [mode]", "The project-root resolution mode. " + "One of 'root' (the default), 'upward', or 'upward-optional'."); | |
| _commander().default.option("--source-type [script|module]", ""); | |
| _commander().default.option("--no-babelrc", "Whether or not to look up .babelrc and .babelignore files"); | |
| _commander().default.option("--ignore [list]", "list of glob paths to **not** compile", collect); | |
| _commander().default.option("--only [list]", "list of glob paths to **only** compile", collect); | |
| _commander().default.option("--no-highlight-code", "enable/disable ANSI syntax highlighting of code frames (on by default)"); | |
| _commander().default.option("--no-comments", "write comments to generated output (true by default)"); | |
| _commander().default.option("--retain-lines", "retain line numbers - will result in really ugly code"); | |
| _commander().default.option("--compact [true|false|auto]", "do not include superfluous whitespace characters and line terminators", booleanify); | |
| _commander().default.option("--minified", "save as much bytes when printing [true|false]"); | |
| _commander().default.option("--auxiliary-comment-before [string]", "print a comment before any injected non-user code"); | |
| _commander().default.option("--auxiliary-comment-after [string]", "print a comment after any injected non-user code"); | |
| _commander().default.option("-s, --source-maps [true|false|inline|both]", "", booleanify); | |
| _commander().default.option("--source-map-target [string]", "set `file` on returned source map"); | |
| _commander().default.option("--source-file-name [string]", "set `sources[0]` on returned source map"); | |
| _commander().default.option("--source-root [filename]", "the root from which all sources are relative"); | |
| _commander().default.option("--module-root [filename]", "optional prefix for the AMD module formatter that will be prepend to the filename on module definitions"); | |
| _commander().default.option("-M, --module-ids", "insert an explicit id for modules"); | |
| _commander().default.option("--module-id [string]", "specify a custom name for module ids"); | |
| _commander().default.option("-x, --extensions [extensions]", "List of extensions to compile when a directory has been input [.es6,.js,.es,.jsx,.mjs]", collect); | |
| _commander().default.option("--keep-file-extension", "Preserve the file extensions of the input files"); | |
| _commander().default.option("-w, --watch", "Recompile files on changes"); | |
| _commander().default.option("--skip-initial-build", "Do not compile files before watching"); | |
| _commander().default.option("-o, --out-file [out]", "Compile all input files into a single file"); | |
| _commander().default.option("-d, --out-dir [out]", "Compile an input directory of modules into an output directory"); | |
| _commander().default.option("--relative", "Compile into an output directory relative to input directory or file. Requires --out-dir [out]"); | |
| _commander().default.option("-D, --copy-files", "When compiling a directory copy over non-compilable files"); | |
| _commander().default.option("--include-dotfiles", "Include dotfiles when compiling and copying non-compilable files"); | |
| _commander().default.option("--verbose", "Log everything"); | |
| _commander().default.option("--delete-dir-on-start", "Delete the out directory before compilation"); | |
| _commander().default.version(_package.default.version + " (@babel/core " + _core().version + ")"); | |
| _commander().default.usage("[options] <files ...>"); | |
| function parseArgv(args) { | |
| _commander().default.parse(args); | |
| const errors = []; | |
| let filenames = _commander().default.args.reduce(function (globbed, input) { | |
| let files = _glob().default.sync(input); | |
| if (!files.length) files = [input]; | |
| return globbed.concat(files); | |
| }, []); | |
| filenames = (0, _uniq().default)(filenames); | |
| filenames.forEach(function (filename) { | |
| if (!_fs().default.existsSync(filename)) { | |
| errors.push(filename + " does not exist"); | |
| } | |
| }); | |
| if (_commander().default.outDir && !filenames.length) { | |
| errors.push("--out-dir requires filenames"); | |
| } | |
| if (_commander().default.outFile && _commander().default.outDir) { | |
| errors.push("--out-file and --out-dir cannot be used together"); | |
| } | |
| if (_commander().default.relative && !_commander().default.outDir) { | |
| errors.push("--relative requires --out-dir usage"); | |
| } | |
| if (_commander().default.watch) { | |
| if (!_commander().default.outFile && !_commander().default.outDir) { | |
| errors.push("--watch requires --out-file or --out-dir"); | |
| } | |
| if (!filenames.length) { | |
| errors.push("--watch requires filenames"); | |
| } | |
| } | |
| if (_commander().default.skipInitialBuild && !_commander().default.watch) { | |
| errors.push("--skip-initial-build requires --watch"); | |
| } | |
| if (_commander().default.deleteDirOnStart && !_commander().default.outDir) { | |
| errors.push("--delete-dir-on-start requires --out-dir"); | |
| } | |
| if (!_commander().default.outDir && filenames.length === 0 && typeof _commander().default.filename !== "string" && _commander().default.babelrc !== false) { | |
| errors.push("stdin compilation requires either -f/--filename [filename] or --no-babelrc"); | |
| } | |
| if (errors.length) { | |
| console.error("babel:"); | |
| errors.forEach(function (e) { | |
| console.error(" " + e); | |
| }); | |
| process.exit(2); | |
| } | |
| const opts = _commander().default.opts(); | |
| const babelOptions = { | |
| presets: opts.presets, | |
| plugins: opts.plugins, | |
| rootMode: opts.rootMode, | |
| configFile: opts.configFile, | |
| envName: opts.envName, | |
| sourceType: opts.sourceType, | |
| ignore: opts.ignore, | |
| only: opts.only, | |
| retainLines: opts.retainLines, | |
| compact: opts.compact, | |
| minified: opts.minified, | |
| auxiliaryCommentBefore: opts.auxiliaryCommentBefore, | |
| auxiliaryCommentAfter: opts.auxiliaryCommentAfter, | |
| sourceMaps: opts.sourceMaps, | |
| sourceFileName: opts.sourceFileName, | |
| sourceRoot: opts.sourceRoot, | |
| moduleRoot: opts.moduleRoot, | |
| moduleIds: opts.moduleIds, | |
| moduleId: opts.moduleId, | |
| babelrc: opts.babelrc === true ? undefined : opts.babelrc, | |
| highlightCode: opts.highlightCode === true ? undefined : opts.highlightCode, | |
| comments: opts.comments === true ? undefined : opts.comments | |
| }; | |
| for (const key of Object.keys(babelOptions)) { | |
| if (babelOptions[key] === undefined) { | |
| delete babelOptions[key]; | |
| } | |
| } | |
| return { | |
| babelOptions, | |
| cliOptions: { | |
| filename: opts.filename, | |
| filenames, | |
| extensions: opts.extensions, | |
| keepFileExtension: opts.keepFileExtension, | |
| watch: opts.watch, | |
| skipInitialBuild: opts.skipInitialBuild, | |
| outFile: opts.outFile, | |
| outDir: opts.outDir, | |
| relative: opts.relative, | |
| copyFiles: opts.copyFiles, | |
| includeDotfiles: opts.includeDotfiles, | |
| verbose: opts.verbose, | |
| deleteDirOnStart: opts.deleteDirOnStart, | |
| sourceMapTarget: opts.sourceMapTarget | |
| } | |
| }; | |
| } | |
| function booleanify(val) { | |
| if (val === "true" || val == 1) { | |
| return true; | |
| } | |
| if (val === "false" || val == 0 || !val) { | |
| return false; | |
| } | |
| return val; | |
| } | |
| function collect(value, previousValue) { | |
| if (typeof value !== "string") return previousValue; | |
| const values = value.split(","); | |
| return previousValue ? previousValue.concat(values) : values; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.chmod = chmod; | |
| exports.readdir = readdir; | |
| exports.readdirForCompilable = readdirForCompilable; | |
| exports.isCompilableExtension = isCompilableExtension; | |
| exports.addSourceMappingUrl = addSourceMappingUrl; | |
| exports.transform = transform; | |
| exports.compile = compile; | |
| exports.deleteDir = deleteDir; | |
| exports.requireChokidar = requireChokidar; | |
| exports.adjustRelative = adjustRelative; | |
| function _fsReaddirRecursive() { | |
| const data = _interopRequireDefault(require("fs-readdir-recursive")); | |
| _fsReaddirRecursive = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function babel() { | |
| const data = _interopRequireWildcard(require("@babel/core")); | |
| babel = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _includes() { | |
| const data = _interopRequireDefault(require("lodash/includes")); | |
| _includes = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _fs() { | |
| const data = _interopRequireDefault(require("fs")); | |
| _fs = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function chmod(src, dest) { | |
| _fs().default.chmodSync(dest, _fs().default.statSync(src).mode); | |
| } | |
| function readdir(dirname, includeDotfiles, filter) { | |
| return (0, _fsReaddirRecursive().default)(dirname, (filename, _index, currentDirectory) => { | |
| const stat = _fs().default.statSync(_path().default.join(currentDirectory, filename)); | |
| if (stat.isDirectory()) return true; | |
| return (includeDotfiles || filename[0] !== ".") && (!filter || filter(filename)); | |
| }); | |
| } | |
| function readdirForCompilable(dirname, includeDotfiles, altExts) { | |
| return readdir(dirname, includeDotfiles, function (filename) { | |
| return isCompilableExtension(filename, altExts); | |
| }); | |
| } | |
| function isCompilableExtension(filename, altExts) { | |
| const exts = altExts || babel().DEFAULT_EXTENSIONS; | |
| const ext = _path().default.extname(filename); | |
| return (0, _includes().default)(exts, ext); | |
| } | |
| function addSourceMappingUrl(code, loc) { | |
| return code + "\n//# sourceMappingURL=" + _path().default.basename(loc); | |
| } | |
| const CALLER = { | |
| name: "@babel/cli" | |
| }; | |
| function transform(filename, code, opts) { | |
| opts = Object.assign({}, opts, { | |
| caller: CALLER, | |
| filename | |
| }); | |
| return new Promise((resolve, reject) => { | |
| babel().transform(code, opts, (err, result) => { | |
| if (err) reject(err);else resolve(result); | |
| }); | |
| }); | |
| } | |
| function compile(filename, opts) { | |
| opts = Object.assign({}, opts, { | |
| caller: CALLER | |
| }); | |
| return new Promise((resolve, reject) => { | |
| babel().transformFile(filename, opts, (err, result) => { | |
| if (err) reject(err);else resolve(result); | |
| }); | |
| }); | |
| } | |
| function deleteDir(path) { | |
| if (_fs().default.existsSync(path)) { | |
| _fs().default.readdirSync(path).forEach(function (file) { | |
| const curPath = path + "/" + file; | |
| if (_fs().default.lstatSync(curPath).isDirectory()) { | |
| deleteDir(curPath); | |
| } else { | |
| _fs().default.unlinkSync(curPath); | |
| } | |
| }); | |
| _fs().default.rmdirSync(path); | |
| } | |
| } | |
| process.on("uncaughtException", function (err) { | |
| console.error(err); | |
| process.exit(1); | |
| }); | |
| function requireChokidar() { | |
| try { | |
| return require("chokidar"); | |
| } catch (err) { | |
| console.error("The optional dependency chokidar failed to install and is required for " + "--watch. Chokidar is likely not supported on your platform."); | |
| throw err; | |
| } | |
| } | |
| function adjustRelative(relative, keepFileExtension) { | |
| if (keepFileExtension) { | |
| return relative; | |
| } | |
| return relative.replace(/\.(\w*?)$/, "") + ".js"; | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 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. |
| #!/usr/bin/env node | |
| var mkdirp = require('../'); | |
| var minimist = require('minimist'); | |
| var fs = require('fs'); | |
| var argv = minimist(process.argv.slice(2), { | |
| alias: { m: 'mode', h: 'help' }, | |
| string: [ 'mode' ] | |
| }); | |
| if (argv.help) { | |
| fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout); | |
| return; | |
| } | |
| var paths = argv._.slice(); | |
| var mode = argv.mode ? parseInt(argv.mode, 8) : undefined; | |
| (function next () { | |
| if (paths.length === 0) return; | |
| var p = paths.shift(); | |
| if (mode === undefined) mkdirp(p, cb) | |
| else mkdirp(p, mode, cb) | |
| function cb (err) { | |
| if (err) { | |
| console.error(err.message); | |
| process.exit(1); | |
| } | |
| else next(); | |
| } | |
| })(); |
| { | |
| "name": "@babel/cli", | |
| "version": "7.2.3", | |
| "description": "Babel command line.", | |
| "author": "Sebastian McKenzie <[email protected]>", | |
| "homepage": "https://babeljs.io/", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-cli", | |
| "keywords": [ | |
| "6to5", | |
| "babel", | |
| "es6", | |
| "transpile", | |
| "transpiler", | |
| "babel-cli", | |
| "compiler" | |
| ], | |
| "dependencies": { | |
| "commander": "^2.8.1", | |
| "convert-source-map": "^1.1.0", | |
| "fs-readdir-recursive": "^1.1.0", | |
| "glob": "^7.0.0", | |
| "lodash": "^4.17.10", | |
| "mkdirp": "^0.5.1", | |
| "output-file-sync": "^2.0.0", | |
| "slash": "^2.0.0", | |
| "source-map": "^0.5.0" | |
| }, | |
| "optionalDependencies": { | |
| "chokidar": "^2.0.3" | |
| }, | |
| "peerDependencies": { | |
| "@babel/core": "^7.0.0-0" | |
| }, | |
| "devDependencies": { | |
| "@babel/core": "^7.2.0", | |
| "@babel/helper-fixtures": "^7.2.0" | |
| }, | |
| "bin": { | |
| "babel": "./bin/babel.js", | |
| "babel-external-helpers": "./bin/babel-external-helpers.js" | |
| }, | |
| "gitHead": "d35f2ad92b322c3bb9c6792e2683807afae0b105" | |
| } |
Babel command line.
See our website @babel/cli for more information or the issues associated with this package.
Using npm:
npm install --save-dev @babel/clior using yarn:
yarn add @babel/cli --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.codeFrameColumns = codeFrameColumns; | |
| exports.default = _default; | |
| function _highlight() { | |
| const data = _interopRequireWildcard(require("@babel/highlight")); | |
| _highlight = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| 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]; | |
| } 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; | |
| }; | |
| if (highlighted) rawLines = (0, _highlight().default)(rawLines, opts); | |
| 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; | |
| let frame = lines.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, markerLine].join(""); | |
| } else { | |
| return ` ${maybeHighlight(defs.gutter, gutter)}${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); | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 Sebastian McKenzie <[email protected]> | |
| 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. |
| { | |
| "name": "@babel/code-frame", | |
| "version": "7.0.0", | |
| "description": "Generate errors that contain a code frame that point to source locations.", | |
| "author": "Sebastian McKenzie <[email protected]>", | |
| "homepage": "https://babeljs.io/", | |
| "license": "MIT", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-code-frame", | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/highlight": "^7.0.0" | |
| }, | |
| "devDependencies": { | |
| "chalk": "^2.0.0", | |
| "strip-ansi": "^4.0.0" | |
| } | |
| } |
Generate errors that contain a code frame that point to source locations.
See our website @babel/code-frame for more information.
Using npm:
npm install --save-dev @babel/code-frameor using yarn:
yarn add @babel/code-frame --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.makeStrongCache = makeStrongCache; | |
| exports.makeWeakCache = makeWeakCache; | |
| exports.assertSimpleType = assertSimpleType; | |
| function makeStrongCache(handler) { | |
| return makeCachedFunction(new Map(), handler); | |
| } | |
| function makeWeakCache(handler) { | |
| return makeCachedFunction(new WeakMap(), handler); | |
| } | |
| function makeCachedFunction(callCache, handler) { | |
| return function cachedFunction(arg, data) { | |
| let cachedValue = callCache.get(arg); | |
| if (cachedValue) { | |
| for (const _ref of cachedValue) { | |
| const { | |
| value, | |
| valid | |
| } = _ref; | |
| if (valid(data)) return value; | |
| } | |
| } | |
| const cache = new CacheConfigurator(data); | |
| const value = handler(arg, cache); | |
| if (!cache.configured()) cache.forever(); | |
| cache.deactivate(); | |
| switch (cache.mode()) { | |
| case "forever": | |
| cachedValue = [{ | |
| value, | |
| valid: () => true | |
| }]; | |
| callCache.set(arg, cachedValue); | |
| break; | |
| case "invalidate": | |
| cachedValue = [{ | |
| value, | |
| valid: cache.validator() | |
| }]; | |
| callCache.set(arg, cachedValue); | |
| break; | |
| case "valid": | |
| if (cachedValue) { | |
| cachedValue.push({ | |
| value, | |
| valid: cache.validator() | |
| }); | |
| } else { | |
| cachedValue = [{ | |
| value, | |
| valid: cache.validator() | |
| }]; | |
| callCache.set(arg, cachedValue); | |
| } | |
| } | |
| return value; | |
| }; | |
| } | |
| class CacheConfigurator { | |
| constructor(data) { | |
| this._active = true; | |
| this._never = false; | |
| this._forever = false; | |
| this._invalidate = false; | |
| this._configured = false; | |
| this._pairs = []; | |
| this._data = data; | |
| } | |
| simple() { | |
| return makeSimpleConfigurator(this); | |
| } | |
| mode() { | |
| if (this._never) return "never"; | |
| if (this._forever) return "forever"; | |
| if (this._invalidate) return "invalidate"; | |
| return "valid"; | |
| } | |
| forever() { | |
| if (!this._active) { | |
| throw new Error("Cannot change caching after evaluation has completed."); | |
| } | |
| if (this._never) { | |
| throw new Error("Caching has already been configured with .never()"); | |
| } | |
| this._forever = true; | |
| this._configured = true; | |
| } | |
| never() { | |
| if (!this._active) { | |
| throw new Error("Cannot change caching after evaluation has completed."); | |
| } | |
| if (this._forever) { | |
| throw new Error("Caching has already been configured with .forever()"); | |
| } | |
| this._never = true; | |
| this._configured = true; | |
| } | |
| using(handler) { | |
| if (!this._active) { | |
| throw new Error("Cannot change caching after evaluation has completed."); | |
| } | |
| if (this._never || this._forever) { | |
| throw new Error("Caching has already been configured with .never or .forever()"); | |
| } | |
| this._configured = true; | |
| const key = handler(this._data); | |
| this._pairs.push([key, handler]); | |
| return key; | |
| } | |
| invalidate(handler) { | |
| if (!this._active) { | |
| throw new Error("Cannot change caching after evaluation has completed."); | |
| } | |
| if (this._never || this._forever) { | |
| throw new Error("Caching has already been configured with .never or .forever()"); | |
| } | |
| this._invalidate = true; | |
| this._configured = true; | |
| const key = handler(this._data); | |
| this._pairs.push([key, handler]); | |
| return key; | |
| } | |
| validator() { | |
| const pairs = this._pairs; | |
| return data => pairs.every(([key, fn]) => key === fn(data)); | |
| } | |
| deactivate() { | |
| this._active = false; | |
| } | |
| configured() { | |
| return this._configured; | |
| } | |
| } | |
| function makeSimpleConfigurator(cache) { | |
| function cacheFn(val) { | |
| if (typeof val === "boolean") { | |
| if (val) cache.forever();else cache.never(); | |
| return; | |
| } | |
| return cache.using(() => assertSimpleType(val())); | |
| } | |
| cacheFn.forever = () => cache.forever(); | |
| cacheFn.never = () => cache.never(); | |
| cacheFn.using = cb => cache.using(() => assertSimpleType(cb())); | |
| cacheFn.invalidate = cb => cache.invalidate(() => assertSimpleType(cb())); | |
| return cacheFn; | |
| } | |
| function assertSimpleType(value) { | |
| if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") { | |
| throw new Error("Cache keys must be either string, boolean, number, null, or undefined."); | |
| } | |
| return value; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.buildPresetChain = buildPresetChain; | |
| exports.buildRootChain = buildRootChain; | |
| exports.buildPresetChainWalker = void 0; | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _debug() { | |
| const data = _interopRequireDefault(require("debug")); | |
| _debug = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _options = require("./validation/options"); | |
| var _patternToRegex = _interopRequireDefault(require("./pattern-to-regex")); | |
| var _files = require("./files"); | |
| var _caching = require("./caching"); | |
| var _configDescriptors = require("./config-descriptors"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const debug = (0, _debug().default)("babel:config:config-chain"); | |
| function buildPresetChain(arg, context) { | |
| const chain = buildPresetChainWalker(arg, context); | |
| if (!chain) return null; | |
| return { | |
| plugins: dedupDescriptors(chain.plugins), | |
| presets: dedupDescriptors(chain.presets), | |
| options: chain.options.map(o => normalizeOptions(o)) | |
| }; | |
| } | |
| const buildPresetChainWalker = makeChainWalker({ | |
| init: arg => arg, | |
| root: preset => loadPresetDescriptors(preset), | |
| env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName), | |
| overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index), | |
| overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName) | |
| }); | |
| exports.buildPresetChainWalker = buildPresetChainWalker; | |
| const loadPresetDescriptors = (0, _caching.makeWeakCache)(preset => buildRootDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors)); | |
| const loadPresetEnvDescriptors = (0, _caching.makeWeakCache)(preset => (0, _caching.makeStrongCache)(envName => buildEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, envName))); | |
| const loadPresetOverridesDescriptors = (0, _caching.makeWeakCache)(preset => (0, _caching.makeStrongCache)(index => buildOverrideDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index))); | |
| const loadPresetOverridesEnvDescriptors = (0, _caching.makeWeakCache)(preset => (0, _caching.makeStrongCache)(index => (0, _caching.makeStrongCache)(envName => buildOverrideEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index, envName)))); | |
| function buildRootChain(opts, context) { | |
| const programmaticChain = loadProgrammaticChain({ | |
| options: opts, | |
| dirname: context.cwd | |
| }, context); | |
| if (!programmaticChain) return null; | |
| let configFile; | |
| if (typeof opts.configFile === "string") { | |
| configFile = (0, _files.loadConfig)(opts.configFile, context.cwd, context.envName, context.caller); | |
| } else if (opts.configFile !== false) { | |
| configFile = (0, _files.findRootConfig)(context.root, context.envName, context.caller); | |
| } | |
| let { | |
| babelrc, | |
| babelrcRoots | |
| } = opts; | |
| let babelrcRootsDirectory = context.cwd; | |
| const configFileChain = emptyChain(); | |
| if (configFile) { | |
| const validatedFile = validateConfigFile(configFile); | |
| const result = loadFileChain(validatedFile, context); | |
| if (!result) return null; | |
| if (babelrc === undefined) { | |
| babelrc = validatedFile.options.babelrc; | |
| } | |
| if (babelrcRoots === undefined) { | |
| babelrcRootsDirectory = validatedFile.dirname; | |
| babelrcRoots = validatedFile.options.babelrcRoots; | |
| } | |
| mergeChain(configFileChain, result); | |
| } | |
| const pkgData = typeof context.filename === "string" ? (0, _files.findPackageData)(context.filename) : null; | |
| let ignoreFile, babelrcFile; | |
| const fileChain = emptyChain(); | |
| if ((babelrc === true || babelrc === undefined) && pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) { | |
| ({ | |
| ignore: ignoreFile, | |
| config: babelrcFile | |
| } = (0, _files.findRelativeConfig)(pkgData, context.envName, context.caller)); | |
| if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) { | |
| return null; | |
| } | |
| if (babelrcFile) { | |
| const result = loadFileChain(validateBabelrcFile(babelrcFile), context); | |
| if (!result) return null; | |
| mergeChain(fileChain, result); | |
| } | |
| } | |
| const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain); | |
| return { | |
| plugins: dedupDescriptors(chain.plugins), | |
| presets: dedupDescriptors(chain.presets), | |
| options: chain.options.map(o => normalizeOptions(o)), | |
| ignore: ignoreFile || undefined, | |
| babelrc: babelrcFile || undefined, | |
| config: configFile || undefined | |
| }; | |
| } | |
| function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) { | |
| if (typeof babelrcRoots === "boolean") return babelrcRoots; | |
| const absoluteRoot = context.root; | |
| if (babelrcRoots === undefined) { | |
| return pkgData.directories.indexOf(absoluteRoot) !== -1; | |
| } | |
| let babelrcPatterns = babelrcRoots; | |
| if (!Array.isArray(babelrcPatterns)) babelrcPatterns = [babelrcPatterns]; | |
| babelrcPatterns = babelrcPatterns.map(pat => { | |
| return typeof pat === "string" ? _path().default.resolve(babelrcRootsDirectory, pat) : pat; | |
| }); | |
| if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) { | |
| return pkgData.directories.indexOf(absoluteRoot) !== -1; | |
| } | |
| return babelrcPatterns.some(pat => { | |
| if (typeof pat === "string") { | |
| pat = (0, _patternToRegex.default)(pat, babelrcRootsDirectory); | |
| } | |
| return pkgData.directories.some(directory => { | |
| return matchPattern(pat, babelrcRootsDirectory, directory, context); | |
| }); | |
| }); | |
| } | |
| const validateConfigFile = (0, _caching.makeWeakCache)(file => ({ | |
| filepath: file.filepath, | |
| dirname: file.dirname, | |
| options: (0, _options.validate)("configfile", file.options) | |
| })); | |
| const validateBabelrcFile = (0, _caching.makeWeakCache)(file => ({ | |
| filepath: file.filepath, | |
| dirname: file.dirname, | |
| options: (0, _options.validate)("babelrcfile", file.options) | |
| })); | |
| const validateExtendFile = (0, _caching.makeWeakCache)(file => ({ | |
| filepath: file.filepath, | |
| dirname: file.dirname, | |
| options: (0, _options.validate)("extendsfile", file.options) | |
| })); | |
| const loadProgrammaticChain = makeChainWalker({ | |
| root: input => buildRootDescriptors(input, "base", _configDescriptors.createCachedDescriptors), | |
| env: (input, envName) => buildEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, envName), | |
| overrides: (input, index) => buildOverrideDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index), | |
| overridesEnv: (input, index, envName) => buildOverrideEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index, envName) | |
| }); | |
| const loadFileChain = makeChainWalker({ | |
| root: file => loadFileDescriptors(file), | |
| env: (file, envName) => loadFileEnvDescriptors(file)(envName), | |
| overrides: (file, index) => loadFileOverridesDescriptors(file)(index), | |
| overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName) | |
| }); | |
| const loadFileDescriptors = (0, _caching.makeWeakCache)(file => buildRootDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors)); | |
| const loadFileEnvDescriptors = (0, _caching.makeWeakCache)(file => (0, _caching.makeStrongCache)(envName => buildEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, envName))); | |
| const loadFileOverridesDescriptors = (0, _caching.makeWeakCache)(file => (0, _caching.makeStrongCache)(index => buildOverrideDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index))); | |
| const loadFileOverridesEnvDescriptors = (0, _caching.makeWeakCache)(file => (0, _caching.makeStrongCache)(index => (0, _caching.makeStrongCache)(envName => buildOverrideEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index, envName)))); | |
| function buildRootDescriptors({ | |
| dirname, | |
| options | |
| }, alias, descriptors) { | |
| return descriptors(dirname, options, alias); | |
| } | |
| function buildEnvDescriptors({ | |
| dirname, | |
| options | |
| }, alias, descriptors, envName) { | |
| const opts = options.env && options.env[envName]; | |
| return opts ? descriptors(dirname, opts, `${alias}.env["${envName}"]`) : null; | |
| } | |
| function buildOverrideDescriptors({ | |
| dirname, | |
| options | |
| }, alias, descriptors, index) { | |
| const opts = options.overrides && options.overrides[index]; | |
| if (!opts) throw new Error("Assertion failure - missing override"); | |
| return descriptors(dirname, opts, `${alias}.overrides[${index}]`); | |
| } | |
| function buildOverrideEnvDescriptors({ | |
| dirname, | |
| options | |
| }, alias, descriptors, index, envName) { | |
| const override = options.overrides && options.overrides[index]; | |
| if (!override) throw new Error("Assertion failure - missing override"); | |
| const opts = override.env && override.env[envName]; | |
| return opts ? descriptors(dirname, opts, `${alias}.overrides[${index}].env["${envName}"]`) : null; | |
| } | |
| function makeChainWalker({ | |
| root, | |
| env, | |
| overrides, | |
| overridesEnv | |
| }) { | |
| return (input, context, files = new Set()) => { | |
| const { | |
| dirname | |
| } = input; | |
| const flattenedConfigs = []; | |
| const rootOpts = root(input); | |
| if (configIsApplicable(rootOpts, dirname, context)) { | |
| flattenedConfigs.push(rootOpts); | |
| const envOpts = env(input, context.envName); | |
| if (envOpts && configIsApplicable(envOpts, dirname, context)) { | |
| flattenedConfigs.push(envOpts); | |
| } | |
| (rootOpts.options.overrides || []).forEach((_, index) => { | |
| const overrideOps = overrides(input, index); | |
| if (configIsApplicable(overrideOps, dirname, context)) { | |
| flattenedConfigs.push(overrideOps); | |
| const overrideEnvOpts = overridesEnv(input, index, context.envName); | |
| if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context)) { | |
| flattenedConfigs.push(overrideEnvOpts); | |
| } | |
| } | |
| }); | |
| } | |
| if (flattenedConfigs.some(({ | |
| options: { | |
| ignore, | |
| only | |
| } | |
| }) => shouldIgnore(context, ignore, only, dirname))) { | |
| return null; | |
| } | |
| const chain = emptyChain(); | |
| for (const op of flattenedConfigs) { | |
| if (!mergeExtendsChain(chain, op.options, dirname, context, files)) { | |
| return null; | |
| } | |
| mergeChainOpts(chain, op); | |
| } | |
| return chain; | |
| }; | |
| } | |
| function mergeExtendsChain(chain, opts, dirname, context, files) { | |
| if (opts.extends === undefined) return true; | |
| const file = (0, _files.loadConfig)(opts.extends, dirname, context.envName, context.caller); | |
| if (files.has(file)) { | |
| throw new Error(`Configuration cycle detected loading ${file.filepath}.\n` + `File already loaded following the config chain:\n` + Array.from(files, file => ` - ${file.filepath}`).join("\n")); | |
| } | |
| files.add(file); | |
| const fileChain = loadFileChain(validateExtendFile(file), context, files); | |
| files.delete(file); | |
| if (!fileChain) return false; | |
| mergeChain(chain, fileChain); | |
| return true; | |
| } | |
| function mergeChain(target, source) { | |
| target.options.push(...source.options); | |
| target.plugins.push(...source.plugins); | |
| target.presets.push(...source.presets); | |
| return target; | |
| } | |
| function mergeChainOpts(target, { | |
| options, | |
| plugins, | |
| presets | |
| }) { | |
| target.options.push(options); | |
| target.plugins.push(...plugins()); | |
| target.presets.push(...presets()); | |
| return target; | |
| } | |
| function emptyChain() { | |
| return { | |
| options: [], | |
| presets: [], | |
| plugins: [] | |
| }; | |
| } | |
| function normalizeOptions(opts) { | |
| const options = Object.assign({}, opts); | |
| delete options.extends; | |
| delete options.env; | |
| delete options.overrides; | |
| delete options.plugins; | |
| delete options.presets; | |
| delete options.passPerPreset; | |
| delete options.ignore; | |
| delete options.only; | |
| delete options.test; | |
| delete options.include; | |
| delete options.exclude; | |
| if (options.hasOwnProperty("sourceMap")) { | |
| options.sourceMaps = options.sourceMap; | |
| delete options.sourceMap; | |
| } | |
| return options; | |
| } | |
| function dedupDescriptors(items) { | |
| const map = new Map(); | |
| const descriptors = []; | |
| for (const item of items) { | |
| if (typeof item.value === "function") { | |
| const fnKey = item.value; | |
| let nameMap = map.get(fnKey); | |
| if (!nameMap) { | |
| nameMap = new Map(); | |
| map.set(fnKey, nameMap); | |
| } | |
| let desc = nameMap.get(item.name); | |
| if (!desc) { | |
| desc = { | |
| value: item | |
| }; | |
| descriptors.push(desc); | |
| if (!item.ownPass) nameMap.set(item.name, desc); | |
| } else { | |
| desc.value = item; | |
| } | |
| } else { | |
| descriptors.push({ | |
| value: item | |
| }); | |
| } | |
| } | |
| return descriptors.reduce((acc, desc) => { | |
| acc.push(desc.value); | |
| return acc; | |
| }, []); | |
| } | |
| function configIsApplicable({ | |
| options | |
| }, dirname, context) { | |
| return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname)); | |
| } | |
| function configFieldIsApplicable(context, test, dirname) { | |
| const patterns = Array.isArray(test) ? test : [test]; | |
| return matchesPatterns(context, patterns, dirname); | |
| } | |
| function shouldIgnore(context, ignore, only, dirname) { | |
| if (ignore && matchesPatterns(context, ignore, dirname)) { | |
| debug("Ignored %o because it matched one of %O from %o", context.filename, ignore, dirname); | |
| return true; | |
| } | |
| if (only && !matchesPatterns(context, only, dirname)) { | |
| debug("Ignored %o because it failed to match one of %O from %o", context.filename, only, dirname); | |
| return true; | |
| } | |
| return false; | |
| } | |
| function matchesPatterns(context, patterns, dirname) { | |
| return patterns.some(pattern => matchPattern(pattern, dirname, context.filename, context)); | |
| } | |
| function matchPattern(pattern, dirname, pathToTest, context) { | |
| if (typeof pattern === "function") { | |
| return !!pattern(pathToTest, { | |
| dirname, | |
| envName: context.envName, | |
| caller: context.caller | |
| }); | |
| } | |
| if (typeof pathToTest !== "string") { | |
| throw new Error(`Configuration contains string/RegExp pattern, but no filename was passed to Babel`); | |
| } | |
| if (typeof pattern === "string") { | |
| pattern = (0, _patternToRegex.default)(pattern, dirname); | |
| } | |
| return pattern.test(pathToTest); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.createCachedDescriptors = createCachedDescriptors; | |
| exports.createUncachedDescriptors = createUncachedDescriptors; | |
| exports.createDescriptor = createDescriptor; | |
| var _files = require("./files"); | |
| var _item = require("./item"); | |
| var _caching = require("./caching"); | |
| function isEqualDescriptor(a, b) { | |
| return a.name === b.name && a.value === b.value && a.options === b.options && a.dirname === b.dirname && a.alias === b.alias && a.ownPass === b.ownPass && (a.file && a.file.request) === (b.file && b.file.request) && (a.file && a.file.resolved) === (b.file && b.file.resolved); | |
| } | |
| function createCachedDescriptors(dirname, options, alias) { | |
| const { | |
| plugins, | |
| presets, | |
| passPerPreset | |
| } = options; | |
| return { | |
| options, | |
| plugins: plugins ? () => createCachedPluginDescriptors(plugins, dirname)(alias) : () => [], | |
| presets: presets ? () => createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset) : () => [] | |
| }; | |
| } | |
| function createUncachedDescriptors(dirname, options, alias) { | |
| let plugins; | |
| let presets; | |
| return { | |
| options, | |
| plugins: () => { | |
| if (!plugins) { | |
| plugins = createPluginDescriptors(options.plugins || [], dirname, alias); | |
| } | |
| return plugins; | |
| }, | |
| presets: () => { | |
| if (!presets) { | |
| presets = createPresetDescriptors(options.presets || [], dirname, alias, !!options.passPerPreset); | |
| } | |
| return presets; | |
| } | |
| }; | |
| } | |
| const PRESET_DESCRIPTOR_CACHE = new WeakMap(); | |
| const createCachedPresetDescriptors = (0, _caching.makeWeakCache)((items, cache) => { | |
| const dirname = cache.using(dir => dir); | |
| return (0, _caching.makeStrongCache)(alias => (0, _caching.makeStrongCache)(passPerPreset => createPresetDescriptors(items, dirname, alias, passPerPreset).map(desc => loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc)))); | |
| }); | |
| const PLUGIN_DESCRIPTOR_CACHE = new WeakMap(); | |
| const createCachedPluginDescriptors = (0, _caching.makeWeakCache)((items, cache) => { | |
| const dirname = cache.using(dir => dir); | |
| return (0, _caching.makeStrongCache)(alias => createPluginDescriptors(items, dirname, alias).map(desc => loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc))); | |
| }); | |
| const DEFAULT_OPTIONS = {}; | |
| function loadCachedDescriptor(cache, desc) { | |
| const { | |
| value, | |
| options = DEFAULT_OPTIONS | |
| } = desc; | |
| if (options === false) return desc; | |
| let cacheByOptions = cache.get(value); | |
| if (!cacheByOptions) { | |
| cacheByOptions = new WeakMap(); | |
| cache.set(value, cacheByOptions); | |
| } | |
| let possibilities = cacheByOptions.get(options); | |
| if (!possibilities) { | |
| possibilities = []; | |
| cacheByOptions.set(options, possibilities); | |
| } | |
| if (possibilities.indexOf(desc) === -1) { | |
| const matches = possibilities.filter(possibility => isEqualDescriptor(possibility, desc)); | |
| if (matches.length > 0) { | |
| return matches[0]; | |
| } | |
| possibilities.push(desc); | |
| } | |
| return desc; | |
| } | |
| function createPresetDescriptors(items, dirname, alias, passPerPreset) { | |
| return createDescriptors("preset", items, dirname, alias, passPerPreset); | |
| } | |
| function createPluginDescriptors(items, dirname, alias) { | |
| return createDescriptors("plugin", items, dirname, alias); | |
| } | |
| function createDescriptors(type, items, dirname, alias, ownPass) { | |
| const descriptors = items.map((item, index) => createDescriptor(item, dirname, { | |
| type, | |
| alias: `${alias}$${index}`, | |
| ownPass: !!ownPass | |
| })); | |
| assertNoDuplicates(descriptors); | |
| return descriptors; | |
| } | |
| function createDescriptor(pair, dirname, { | |
| type, | |
| alias, | |
| ownPass | |
| }) { | |
| const desc = (0, _item.getItemDescriptor)(pair); | |
| if (desc) { | |
| return desc; | |
| } | |
| let name; | |
| let options; | |
| let value = pair; | |
| if (Array.isArray(value)) { | |
| if (value.length === 3) { | |
| [value, options, name] = value; | |
| } else { | |
| [value, options] = value; | |
| } | |
| } | |
| let file = undefined; | |
| let filepath = null; | |
| if (typeof value === "string") { | |
| if (typeof type !== "string") { | |
| throw new Error("To resolve a string-based item, the type of item must be given"); | |
| } | |
| const resolver = type === "plugin" ? _files.loadPlugin : _files.loadPreset; | |
| const request = value; | |
| ({ | |
| filepath, | |
| value | |
| } = resolver(value, dirname)); | |
| file = { | |
| request, | |
| resolved: filepath | |
| }; | |
| } | |
| if (!value) { | |
| throw new Error(`Unexpected falsy value: ${String(value)}`); | |
| } | |
| if (typeof value === "object" && value.__esModule) { | |
| if (value.default) { | |
| value = value.default; | |
| } else { | |
| throw new Error("Must export a default export when using ES6 modules."); | |
| } | |
| } | |
| if (typeof value !== "object" && typeof value !== "function") { | |
| throw new Error(`Unsupported format: ${typeof value}. Expected an object or a function.`); | |
| } | |
| if (filepath !== null && typeof value === "object" && value) { | |
| throw new Error(`Plugin/Preset files are not allowed to export objects, only functions. In ${filepath}`); | |
| } | |
| return { | |
| name, | |
| alias: filepath || alias, | |
| value, | |
| options, | |
| dirname, | |
| ownPass, | |
| file | |
| }; | |
| } | |
| function assertNoDuplicates(items) { | |
| const map = new Map(); | |
| for (const item of items) { | |
| if (typeof item.value !== "function") continue; | |
| let nameMap = map.get(item.value); | |
| if (!nameMap) { | |
| nameMap = new Set(); | |
| map.set(item.value, nameMap); | |
| } | |
| if (nameMap.has(item.name)) { | |
| throw new Error([`Duplicate plugin/preset detected.`, `If you'd like to use two separate instances of a plugin,`, `they need separate names, e.g.`, ``, ` plugins: [`, ` ['some-plugin', {}],`, ` ['some-plugin', {}, 'some unique name'],`, ` ]`].join("\n")); | |
| } | |
| nameMap.add(item.name); | |
| } | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.findConfigUpwards = findConfigUpwards; | |
| exports.findRelativeConfig = findRelativeConfig; | |
| exports.findRootConfig = findRootConfig; | |
| exports.loadConfig = loadConfig; | |
| function _debug() { | |
| const data = _interopRequireDefault(require("debug")); | |
| _debug = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _fs() { | |
| const data = _interopRequireDefault(require("fs")); | |
| _fs = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _json() { | |
| const data = _interopRequireDefault(require("json5")); | |
| _json = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _resolve() { | |
| const data = _interopRequireDefault(require("resolve")); | |
| _resolve = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _caching = require("../caching"); | |
| var _configApi = _interopRequireDefault(require("../helpers/config-api")); | |
| var _utils = require("./utils"); | |
| var _patternToRegex = _interopRequireDefault(require("../pattern-to-regex")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const debug = (0, _debug().default)("babel:config:loading:files:configuration"); | |
| const BABEL_CONFIG_JS_FILENAME = "babel.config.js"; | |
| const BABELRC_FILENAME = ".babelrc"; | |
| const BABELRC_JS_FILENAME = ".babelrc.js"; | |
| const BABELIGNORE_FILENAME = ".babelignore"; | |
| function findConfigUpwards(rootDir) { | |
| let dirname = rootDir; | |
| while (true) { | |
| if (_fs().default.existsSync(_path().default.join(dirname, BABEL_CONFIG_JS_FILENAME))) { | |
| return dirname; | |
| } | |
| const nextDir = _path().default.dirname(dirname); | |
| if (dirname === nextDir) break; | |
| dirname = nextDir; | |
| } | |
| return null; | |
| } | |
| function findRelativeConfig(packageData, envName, caller) { | |
| let config = null; | |
| let ignore = null; | |
| const dirname = _path().default.dirname(packageData.filepath); | |
| for (const loc of packageData.directories) { | |
| if (!config) { | |
| config = [BABELRC_FILENAME, BABELRC_JS_FILENAME].reduce((previousConfig, name) => { | |
| const filepath = _path().default.join(loc, name); | |
| const config = readConfig(filepath, envName, caller); | |
| if (config && previousConfig) { | |
| throw new Error(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().default.basename(previousConfig.filepath)}\n` + ` - ${name}\n` + `from ${loc}`); | |
| } | |
| return config || previousConfig; | |
| }, null); | |
| const pkgConfig = packageData.pkg && packageData.pkg.dirname === loc ? packageToBabelConfig(packageData.pkg) : null; | |
| if (pkgConfig) { | |
| if (config) { | |
| throw new Error(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().default.basename(pkgConfig.filepath)}#babel\n` + ` - ${_path().default.basename(config.filepath)}\n` + `from ${loc}`); | |
| } | |
| config = pkgConfig; | |
| } | |
| if (config) { | |
| debug("Found configuration %o from %o.", config.filepath, dirname); | |
| } | |
| } | |
| if (!ignore) { | |
| const ignoreLoc = _path().default.join(loc, BABELIGNORE_FILENAME); | |
| ignore = readIgnoreConfig(ignoreLoc); | |
| if (ignore) { | |
| debug("Found ignore %o from %o.", ignore.filepath, dirname); | |
| } | |
| } | |
| } | |
| return { | |
| config, | |
| ignore | |
| }; | |
| } | |
| function findRootConfig(dirname, envName, caller) { | |
| const filepath = _path().default.resolve(dirname, BABEL_CONFIG_JS_FILENAME); | |
| const conf = readConfig(filepath, envName, caller); | |
| if (conf) { | |
| debug("Found root config %o in $o.", BABEL_CONFIG_JS_FILENAME, dirname); | |
| } | |
| return conf; | |
| } | |
| function loadConfig(name, dirname, envName, caller) { | |
| const filepath = _resolve().default.sync(name, { | |
| basedir: dirname | |
| }); | |
| const conf = readConfig(filepath, envName, caller); | |
| if (!conf) { | |
| throw new Error(`Config file ${filepath} contains no configuration data`); | |
| } | |
| debug("Loaded config %o from $o.", name, dirname); | |
| return conf; | |
| } | |
| function readConfig(filepath, envName, caller) { | |
| return _path().default.extname(filepath) === ".js" ? readConfigJS(filepath, { | |
| envName, | |
| caller | |
| }) : readConfigJSON5(filepath); | |
| } | |
| const LOADING_CONFIGS = new Set(); | |
| const readConfigJS = (0, _caching.makeStrongCache)((filepath, cache) => { | |
| if (!_fs().default.existsSync(filepath)) { | |
| cache.forever(); | |
| return null; | |
| } | |
| if (LOADING_CONFIGS.has(filepath)) { | |
| cache.never(); | |
| debug("Auto-ignoring usage of config %o.", filepath); | |
| return { | |
| filepath, | |
| dirname: _path().default.dirname(filepath), | |
| options: {} | |
| }; | |
| } | |
| let options; | |
| try { | |
| LOADING_CONFIGS.add(filepath); | |
| const configModule = require(filepath); | |
| options = configModule && configModule.__esModule ? configModule.default || undefined : configModule; | |
| } catch (err) { | |
| err.message = `${filepath}: Error while loading config - ${err.message}`; | |
| throw err; | |
| } finally { | |
| LOADING_CONFIGS.delete(filepath); | |
| } | |
| if (typeof options === "function") { | |
| options = options((0, _configApi.default)(cache)); | |
| if (!cache.configured()) throwConfigError(); | |
| } | |
| if (!options || typeof options !== "object" || Array.isArray(options)) { | |
| throw new Error(`${filepath}: Configuration should be an exported JavaScript object.`); | |
| } | |
| if (typeof options.then === "function") { | |
| throw new Error(`You appear to be using an async configuration, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously return your config.`); | |
| } | |
| return { | |
| filepath, | |
| dirname: _path().default.dirname(filepath), | |
| options | |
| }; | |
| }); | |
| const packageToBabelConfig = (0, _caching.makeWeakCache)(file => { | |
| const babel = file.options["babel"]; | |
| if (typeof babel === "undefined") return null; | |
| if (typeof babel !== "object" || Array.isArray(babel) || babel === null) { | |
| throw new Error(`${file.filepath}: .babel property must be an object`); | |
| } | |
| return { | |
| filepath: file.filepath, | |
| dirname: file.dirname, | |
| options: babel | |
| }; | |
| }); | |
| const readConfigJSON5 = (0, _utils.makeStaticFileCache)((filepath, content) => { | |
| let options; | |
| try { | |
| options = _json().default.parse(content); | |
| } catch (err) { | |
| err.message = `${filepath}: Error while parsing config - ${err.message}`; | |
| throw err; | |
| } | |
| if (!options) throw new Error(`${filepath}: No config detected`); | |
| if (typeof options !== "object") { | |
| throw new Error(`${filepath}: Config returned typeof ${typeof options}`); | |
| } | |
| if (Array.isArray(options)) { | |
| throw new Error(`${filepath}: Expected config object but found array`); | |
| } | |
| return { | |
| filepath, | |
| dirname: _path().default.dirname(filepath), | |
| options | |
| }; | |
| }); | |
| const readIgnoreConfig = (0, _utils.makeStaticFileCache)((filepath, content) => { | |
| const ignoreDir = _path().default.dirname(filepath); | |
| const ignorePatterns = content.split("\n").map(line => line.replace(/#(.*?)$/, "").trim()).filter(line => !!line); | |
| for (const pattern of ignorePatterns) { | |
| if (pattern[0] === "!") { | |
| throw new Error(`Negation of file paths is not supported.`); | |
| } | |
| } | |
| return { | |
| filepath, | |
| dirname: _path().default.dirname(filepath), | |
| ignore: ignorePatterns.map(pattern => (0, _patternToRegex.default)(pattern, ignoreDir)) | |
| }; | |
| }); | |
| function throwConfigError() { | |
| throw new Error(`\ | |
| Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured | |
| for various types of caching, using the first param of their handler functions: | |
| module.exports = function(api) { | |
| // The API exposes the following: | |
| // Cache the returned value forever and don't call this function again. | |
| api.cache(true); | |
| // Don't cache at all. Not recommended because it will be very slow. | |
| api.cache(false); | |
| // Cached based on the value of some function. If this function returns a value different from | |
| // a previously-encountered value, the plugins will re-evaluate. | |
| var env = api.cache(() => process.env.NODE_ENV); | |
| // If testing for a specific env, we recommend specifics to avoid instantiating a plugin for | |
| // any possible NODE_ENV value that might come up during plugin execution. | |
| var isProd = api.cache(() => process.env.NODE_ENV === "production"); | |
| // .cache(fn) will perform a linear search though instances to find the matching plugin based | |
| // based on previous instantiated plugins. If you want to recreate the plugin and discard the | |
| // previous instance whenever something changes, you may use: | |
| var isProd = api.cache.invalidate(() => process.env.NODE_ENV === "production"); | |
| // Note, we also expose the following more-verbose versions of the above examples: | |
| api.cache.forever(); // api.cache(true) | |
| api.cache.never(); // api.cache(false) | |
| api.cache.using(fn); // api.cache(fn) | |
| // Return the value that will be cached. | |
| return { }; | |
| };`); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.findConfigUpwards = findConfigUpwards; | |
| exports.findPackageData = findPackageData; | |
| exports.findRelativeConfig = findRelativeConfig; | |
| exports.findRootConfig = findRootConfig; | |
| exports.loadConfig = loadConfig; | |
| exports.resolvePlugin = resolvePlugin; | |
| exports.resolvePreset = resolvePreset; | |
| exports.loadPlugin = loadPlugin; | |
| exports.loadPreset = loadPreset; | |
| function findConfigUpwards(rootDir) { | |
| return null; | |
| } | |
| function findPackageData(filepath) { | |
| return { | |
| filepath, | |
| directories: [], | |
| pkg: null, | |
| isPackage: false | |
| }; | |
| } | |
| function findRelativeConfig(pkgData, envName, caller) { | |
| return { | |
| pkg: null, | |
| config: null, | |
| ignore: null | |
| }; | |
| } | |
| function findRootConfig(dirname, envName, caller) { | |
| return null; | |
| } | |
| function loadConfig(name, dirname, envName, caller) { | |
| throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`); | |
| } | |
| function resolvePlugin(name, dirname) { | |
| return null; | |
| } | |
| function resolvePreset(name, dirname) { | |
| return null; | |
| } | |
| function loadPlugin(name, dirname) { | |
| throw new Error(`Cannot load plugin ${name} relative to ${dirname} in a browser`); | |
| } | |
| function loadPreset(name, dirname) { | |
| throw new Error(`Cannot load preset ${name} relative to ${dirname} in a browser`); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| Object.defineProperty(exports, "findPackageData", { | |
| enumerable: true, | |
| get: function () { | |
| return _package.findPackageData; | |
| } | |
| }); | |
| Object.defineProperty(exports, "findConfigUpwards", { | |
| enumerable: true, | |
| get: function () { | |
| return _configuration.findConfigUpwards; | |
| } | |
| }); | |
| Object.defineProperty(exports, "findRelativeConfig", { | |
| enumerable: true, | |
| get: function () { | |
| return _configuration.findRelativeConfig; | |
| } | |
| }); | |
| Object.defineProperty(exports, "findRootConfig", { | |
| enumerable: true, | |
| get: function () { | |
| return _configuration.findRootConfig; | |
| } | |
| }); | |
| Object.defineProperty(exports, "loadConfig", { | |
| enumerable: true, | |
| get: function () { | |
| return _configuration.loadConfig; | |
| } | |
| }); | |
| Object.defineProperty(exports, "resolvePlugin", { | |
| enumerable: true, | |
| get: function () { | |
| return _plugins.resolvePlugin; | |
| } | |
| }); | |
| Object.defineProperty(exports, "resolvePreset", { | |
| enumerable: true, | |
| get: function () { | |
| return _plugins.resolvePreset; | |
| } | |
| }); | |
| Object.defineProperty(exports, "loadPlugin", { | |
| enumerable: true, | |
| get: function () { | |
| return _plugins.loadPlugin; | |
| } | |
| }); | |
| Object.defineProperty(exports, "loadPreset", { | |
| enumerable: true, | |
| get: function () { | |
| return _plugins.loadPreset; | |
| } | |
| }); | |
| var _package = require("./package"); | |
| var _configuration = require("./configuration"); | |
| var _plugins = require("./plugins"); | |
| ({}); |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.findPackageData = findPackageData; | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _utils = require("./utils"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const PACKAGE_FILENAME = "package.json"; | |
| function findPackageData(filepath) { | |
| let pkg = null; | |
| const directories = []; | |
| let isPackage = true; | |
| let dirname = _path().default.dirname(filepath); | |
| while (!pkg && _path().default.basename(dirname) !== "node_modules") { | |
| directories.push(dirname); | |
| pkg = readConfigPackage(_path().default.join(dirname, PACKAGE_FILENAME)); | |
| const nextLoc = _path().default.dirname(dirname); | |
| if (dirname === nextLoc) { | |
| isPackage = false; | |
| break; | |
| } | |
| dirname = nextLoc; | |
| } | |
| return { | |
| filepath, | |
| directories, | |
| pkg, | |
| isPackage | |
| }; | |
| } | |
| const readConfigPackage = (0, _utils.makeStaticFileCache)((filepath, content) => { | |
| let options; | |
| try { | |
| options = JSON.parse(content); | |
| } catch (err) { | |
| err.message = `${filepath}: Error while parsing JSON - ${err.message}`; | |
| throw err; | |
| } | |
| if (typeof options !== "object") { | |
| throw new Error(`${filepath}: Config returned typeof ${typeof options}`); | |
| } | |
| if (Array.isArray(options)) { | |
| throw new Error(`${filepath}: Expected config object but found array`); | |
| } | |
| return { | |
| filepath, | |
| dirname: _path().default.dirname(filepath), | |
| options | |
| }; | |
| }); |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.resolvePlugin = resolvePlugin; | |
| exports.resolvePreset = resolvePreset; | |
| exports.loadPlugin = loadPlugin; | |
| exports.loadPreset = loadPreset; | |
| function _debug() { | |
| const data = _interopRequireDefault(require("debug")); | |
| _debug = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _resolve() { | |
| const data = _interopRequireDefault(require("resolve")); | |
| _resolve = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const debug = (0, _debug().default)("babel:config:loading:files:plugins"); | |
| const EXACT_RE = /^module:/; | |
| const BABEL_PLUGIN_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-plugin-)/; | |
| const BABEL_PRESET_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-preset-)/; | |
| const BABEL_PLUGIN_ORG_RE = /^(@babel\/)(?!plugin-|[^/]+\/)/; | |
| const BABEL_PRESET_ORG_RE = /^(@babel\/)(?!preset-|[^/]+\/)/; | |
| const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-plugin(?:-|\/|$)|[^/]+\/)/; | |
| const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-preset(?:-|\/|$)|[^/]+\/)/; | |
| const OTHER_ORG_DEFAULT_RE = /^(@(?!babel$)[^/]+)$/; | |
| function resolvePlugin(name, dirname) { | |
| return resolveStandardizedName("plugin", name, dirname); | |
| } | |
| function resolvePreset(name, dirname) { | |
| return resolveStandardizedName("preset", name, dirname); | |
| } | |
| function loadPlugin(name, dirname) { | |
| const filepath = resolvePlugin(name, dirname); | |
| if (!filepath) { | |
| throw new Error(`Plugin ${name} not found relative to ${dirname}`); | |
| } | |
| const value = requireModule("plugin", filepath); | |
| debug("Loaded plugin %o from %o.", name, dirname); | |
| return { | |
| filepath, | |
| value | |
| }; | |
| } | |
| function loadPreset(name, dirname) { | |
| const filepath = resolvePreset(name, dirname); | |
| if (!filepath) { | |
| throw new Error(`Preset ${name} not found relative to ${dirname}`); | |
| } | |
| const value = requireModule("preset", filepath); | |
| debug("Loaded preset %o from %o.", name, dirname); | |
| return { | |
| filepath, | |
| value | |
| }; | |
| } | |
| function standardizeName(type, name) { | |
| if (_path().default.isAbsolute(name)) return name; | |
| const isPreset = type === "preset"; | |
| return name.replace(isPreset ? BABEL_PRESET_PREFIX_RE : BABEL_PLUGIN_PREFIX_RE, `babel-${type}-`).replace(isPreset ? BABEL_PRESET_ORG_RE : BABEL_PLUGIN_ORG_RE, `$1${type}-`).replace(isPreset ? OTHER_PRESET_ORG_RE : OTHER_PLUGIN_ORG_RE, `$1babel-${type}-`).replace(OTHER_ORG_DEFAULT_RE, `$1/babel-${type}`).replace(EXACT_RE, ""); | |
| } | |
| function resolveStandardizedName(type, name, dirname = process.cwd()) { | |
| const standardizedName = standardizeName(type, name); | |
| try { | |
| return _resolve().default.sync(standardizedName, { | |
| basedir: dirname | |
| }); | |
| } catch (e) { | |
| if (e.code !== "MODULE_NOT_FOUND") throw e; | |
| if (standardizedName !== name) { | |
| let resolvedOriginal = false; | |
| try { | |
| _resolve().default.sync(name, { | |
| basedir: dirname | |
| }); | |
| resolvedOriginal = true; | |
| } catch (e2) {} | |
| if (resolvedOriginal) { | |
| e.message += `\n- If you want to resolve "${name}", use "module:${name}"`; | |
| } | |
| } | |
| let resolvedBabel = false; | |
| try { | |
| _resolve().default.sync(standardizeName(type, "@babel/" + name), { | |
| basedir: dirname | |
| }); | |
| resolvedBabel = true; | |
| } catch (e2) {} | |
| if (resolvedBabel) { | |
| e.message += `\n- Did you mean "@babel/${name}"?`; | |
| } | |
| let resolvedOppositeType = false; | |
| const oppositeType = type === "preset" ? "plugin" : "preset"; | |
| try { | |
| _resolve().default.sync(standardizeName(oppositeType, name), { | |
| basedir: dirname | |
| }); | |
| resolvedOppositeType = true; | |
| } catch (e2) {} | |
| if (resolvedOppositeType) { | |
| e.message += `\n- Did you accidentally pass a ${oppositeType} as a ${type}?`; | |
| } | |
| throw e; | |
| } | |
| } | |
| const LOADING_MODULES = new Set(); | |
| function requireModule(type, name) { | |
| if (LOADING_MODULES.has(name)) { | |
| throw new Error(`Reentrant ${type} detected trying to load "${name}". This module is not ignored ` + "and is trying to load itself while compiling itself, leading to a dependency cycle. " + 'We recommend adding it to your "ignore" list in your babelrc, or to a .babelignore.'); | |
| } | |
| try { | |
| LOADING_MODULES.add(name); | |
| return require(name); | |
| } finally { | |
| LOADING_MODULES.delete(name); | |
| } | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.makeStaticFileCache = makeStaticFileCache; | |
| function _fs() { | |
| const data = _interopRequireDefault(require("fs")); | |
| _fs = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _caching = require("../caching"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function makeStaticFileCache(fn) { | |
| return (0, _caching.makeStrongCache)((filepath, cache) => { | |
| if (cache.invalidate(() => fileMtime(filepath)) === null) { | |
| cache.forever(); | |
| return null; | |
| } | |
| return fn(filepath, _fs().default.readFileSync(filepath, "utf8")); | |
| }); | |
| } | |
| function fileMtime(filepath) { | |
| try { | |
| return +_fs().default.statSync(filepath).mtime; | |
| } catch (e) { | |
| if (e.code !== "ENOENT" && e.code !== "ENOTDIR") throw e; | |
| } | |
| return null; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = loadFullConfig; | |
| var _util = require("./util"); | |
| var context = _interopRequireWildcard(require("../index")); | |
| var _plugin = _interopRequireDefault(require("./plugin")); | |
| var _item = require("./item"); | |
| var _configChain = require("./config-chain"); | |
| function _traverse() { | |
| const data = _interopRequireDefault(require("@babel/traverse")); | |
| _traverse = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _caching = require("./caching"); | |
| var _options = require("./validation/options"); | |
| var _plugins = require("./validation/plugins"); | |
| var _configApi = _interopRequireDefault(require("./helpers/config-api")); | |
| var _partial = _interopRequireDefault(require("./partial")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function loadFullConfig(inputOpts) { | |
| const result = (0, _partial.default)(inputOpts); | |
| if (!result) { | |
| return null; | |
| } | |
| const { | |
| options, | |
| context | |
| } = result; | |
| const optionDefaults = {}; | |
| const passes = [[]]; | |
| try { | |
| const { | |
| plugins, | |
| presets | |
| } = options; | |
| if (!plugins || !presets) { | |
| throw new Error("Assertion failure - plugins and presets exist"); | |
| } | |
| const ignored = function recurseDescriptors(config, pass) { | |
| const plugins = config.plugins.reduce((acc, descriptor) => { | |
| if (descriptor.options !== false) { | |
| acc.push(loadPluginDescriptor(descriptor, context)); | |
| } | |
| return acc; | |
| }, []); | |
| const presets = config.presets.reduce((acc, descriptor) => { | |
| if (descriptor.options !== false) { | |
| acc.push({ | |
| preset: loadPresetDescriptor(descriptor, context), | |
| pass: descriptor.ownPass ? [] : pass | |
| }); | |
| } | |
| return acc; | |
| }, []); | |
| if (presets.length > 0) { | |
| passes.splice(1, 0, ...presets.map(o => o.pass).filter(p => p !== pass)); | |
| for (const _ref of presets) { | |
| const { | |
| preset, | |
| pass | |
| } = _ref; | |
| if (!preset) return true; | |
| const ignored = recurseDescriptors({ | |
| plugins: preset.plugins, | |
| presets: preset.presets | |
| }, pass); | |
| if (ignored) return true; | |
| preset.options.forEach(opts => { | |
| (0, _util.mergeOptions)(optionDefaults, opts); | |
| }); | |
| } | |
| } | |
| if (plugins.length > 0) { | |
| pass.unshift(...plugins); | |
| } | |
| }({ | |
| plugins: plugins.map(item => { | |
| const desc = (0, _item.getItemDescriptor)(item); | |
| if (!desc) { | |
| throw new Error("Assertion failure - must be config item"); | |
| } | |
| return desc; | |
| }), | |
| presets: presets.map(item => { | |
| const desc = (0, _item.getItemDescriptor)(item); | |
| if (!desc) { | |
| throw new Error("Assertion failure - must be config item"); | |
| } | |
| return desc; | |
| }) | |
| }, passes[0]); | |
| if (ignored) return null; | |
| } catch (e) { | |
| if (!/^\[BABEL\]/.test(e.message)) { | |
| e.message = `[BABEL] ${context.filename || "unknown"}: ${e.message}`; | |
| } | |
| throw e; | |
| } | |
| const opts = optionDefaults; | |
| (0, _util.mergeOptions)(opts, options); | |
| opts.plugins = passes[0]; | |
| opts.presets = passes.slice(1).filter(plugins => plugins.length > 0).map(plugins => ({ | |
| plugins | |
| })); | |
| opts.passPerPreset = opts.presets.length > 0; | |
| return { | |
| options: opts, | |
| passes: passes | |
| }; | |
| } | |
| const loadDescriptor = (0, _caching.makeWeakCache)(({ | |
| value, | |
| options, | |
| dirname, | |
| alias | |
| }, cache) => { | |
| if (options === false) throw new Error("Assertion failure"); | |
| options = options || {}; | |
| let item = value; | |
| if (typeof value === "function") { | |
| const api = Object.assign({}, context, (0, _configApi.default)(cache)); | |
| try { | |
| item = value(api, options, dirname); | |
| } catch (e) { | |
| if (alias) { | |
| e.message += ` (While processing: ${JSON.stringify(alias)})`; | |
| } | |
| throw e; | |
| } | |
| } | |
| if (!item || typeof item !== "object") { | |
| throw new Error("Plugin/Preset did not return an object."); | |
| } | |
| if (typeof item.then === "function") { | |
| throw new Error(`You appear to be using an async plugin, ` + `which your current version of Babel does not support.` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version.`); | |
| } | |
| return { | |
| value: item, | |
| options, | |
| dirname, | |
| alias | |
| }; | |
| }); | |
| function loadPluginDescriptor(descriptor, context) { | |
| if (descriptor.value instanceof _plugin.default) { | |
| if (descriptor.options) { | |
| throw new Error("Passed options to an existing Plugin instance will not work."); | |
| } | |
| return descriptor.value; | |
| } | |
| return instantiatePlugin(loadDescriptor(descriptor, context), context); | |
| } | |
| const instantiatePlugin = (0, _caching.makeWeakCache)(({ | |
| value, | |
| options, | |
| dirname, | |
| alias | |
| }, cache) => { | |
| const pluginObj = (0, _plugins.validatePluginObject)(value); | |
| const plugin = Object.assign({}, pluginObj); | |
| if (plugin.visitor) { | |
| plugin.visitor = _traverse().default.explode(Object.assign({}, plugin.visitor)); | |
| } | |
| if (plugin.inherits) { | |
| const inheritsDescriptor = { | |
| name: undefined, | |
| alias: `${alias}$inherits`, | |
| value: plugin.inherits, | |
| options, | |
| dirname | |
| }; | |
| const inherits = cache.invalidate(data => loadPluginDescriptor(inheritsDescriptor, data)); | |
| plugin.pre = chain(inherits.pre, plugin.pre); | |
| plugin.post = chain(inherits.post, plugin.post); | |
| plugin.manipulateOptions = chain(inherits.manipulateOptions, plugin.manipulateOptions); | |
| plugin.visitor = _traverse().default.visitors.merge([inherits.visitor || {}, plugin.visitor || {}]); | |
| } | |
| return new _plugin.default(plugin, options, alias); | |
| }); | |
| const loadPresetDescriptor = (descriptor, context) => { | |
| return (0, _configChain.buildPresetChain)(instantiatePreset(loadDescriptor(descriptor, context)), context); | |
| }; | |
| const instantiatePreset = (0, _caching.makeWeakCache)(({ | |
| value, | |
| dirname, | |
| alias | |
| }) => { | |
| return { | |
| options: (0, _options.validate)("preset", value), | |
| alias, | |
| dirname | |
| }; | |
| }); | |
| function chain(a, b) { | |
| const fns = [a, b].filter(Boolean); | |
| if (fns.length <= 1) return fns[0]; | |
| return function (...args) { | |
| for (const fn of fns) { | |
| fn.apply(this, args); | |
| } | |
| }; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = makeAPI; | |
| function _semver() { | |
| const data = _interopRequireDefault(require("semver")); | |
| _semver = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _ = require("../../"); | |
| var _caching = require("../caching"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function makeAPI(cache) { | |
| const env = value => cache.using(data => { | |
| if (typeof value === "undefined") return data.envName; | |
| if (typeof value === "function") { | |
| return (0, _caching.assertSimpleType)(value(data.envName)); | |
| } | |
| if (!Array.isArray(value)) value = [value]; | |
| return value.some(entry => { | |
| if (typeof entry !== "string") { | |
| throw new Error("Unexpected non-string value"); | |
| } | |
| return entry === data.envName; | |
| }); | |
| }); | |
| const caller = cb => cache.using(data => (0, _caching.assertSimpleType)(cb(data.caller))); | |
| return { | |
| version: _.version, | |
| cache: cache.simple(), | |
| env, | |
| async: () => false, | |
| caller, | |
| assertVersion, | |
| tokTypes: undefined | |
| }; | |
| } | |
| function assertVersion(range) { | |
| if (typeof range === "number") { | |
| if (!Number.isInteger(range)) { | |
| throw new Error("Expected string or integer value."); | |
| } | |
| range = `^${range}.0.0-0`; | |
| } | |
| if (typeof range !== "string") { | |
| throw new Error("Expected string or integer value."); | |
| } | |
| if (_semver().default.satisfies(_.version, range)) return; | |
| const limit = Error.stackTraceLimit; | |
| if (typeof limit === "number" && limit < 25) { | |
| Error.stackTraceLimit = 25; | |
| } | |
| const err = new Error(`Requires Babel "${range}", but was loaded with "${_.version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`); | |
| if (typeof limit === "number") { | |
| Error.stackTraceLimit = limit; | |
| } | |
| throw Object.assign(err, { | |
| code: "BABEL_VERSION_UNSUPPORTED", | |
| version: _.version, | |
| range | |
| }); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.getEnv = getEnv; | |
| function getEnv(defaultValue = "development") { | |
| return process.env.BABEL_ENV || process.env.NODE_ENV || defaultValue; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.loadOptions = loadOptions; | |
| Object.defineProperty(exports, "default", { | |
| enumerable: true, | |
| get: function () { | |
| return _full.default; | |
| } | |
| }); | |
| Object.defineProperty(exports, "loadPartialConfig", { | |
| enumerable: true, | |
| get: function () { | |
| return _partial.loadPartialConfig; | |
| } | |
| }); | |
| var _full = _interopRequireDefault(require("./full")); | |
| var _partial = require("./partial"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function loadOptions(opts) { | |
| const config = (0, _full.default)(opts); | |
| return config ? config.options : null; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.createItemFromDescriptor = createItemFromDescriptor; | |
| exports.createConfigItem = createConfigItem; | |
| exports.getItemDescriptor = getItemDescriptor; | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _configDescriptors = require("./config-descriptors"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function createItemFromDescriptor(desc) { | |
| return new ConfigItem(desc); | |
| } | |
| function createConfigItem(value, { | |
| dirname = ".", | |
| type | |
| } = {}) { | |
| const descriptor = (0, _configDescriptors.createDescriptor)(value, _path().default.resolve(dirname), { | |
| type, | |
| alias: "programmatic item" | |
| }); | |
| return createItemFromDescriptor(descriptor); | |
| } | |
| function getItemDescriptor(item) { | |
| if (item instanceof ConfigItem) { | |
| return item._descriptor; | |
| } | |
| return undefined; | |
| } | |
| class ConfigItem { | |
| constructor(descriptor) { | |
| this._descriptor = descriptor; | |
| Object.defineProperty(this, "_descriptor", { | |
| enumerable: false | |
| }); | |
| this.value = this._descriptor.value; | |
| this.options = this._descriptor.options; | |
| this.dirname = this._descriptor.dirname; | |
| this.name = this._descriptor.name; | |
| this.file = this._descriptor.file ? { | |
| request: this._descriptor.file.request, | |
| resolved: this._descriptor.file.resolved | |
| } : undefined; | |
| Object.freeze(this); | |
| } | |
| } | |
| Object.freeze(ConfigItem.prototype); |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = loadPrivatePartialConfig; | |
| exports.loadPartialConfig = loadPartialConfig; | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _plugin = _interopRequireDefault(require("./plugin")); | |
| var _util = require("./util"); | |
| var _item = require("./item"); | |
| var _configChain = require("./config-chain"); | |
| var _environment = require("./helpers/environment"); | |
| var _options = require("./validation/options"); | |
| var _files = require("./files"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function resolveRootMode(rootDir, rootMode) { | |
| switch (rootMode) { | |
| case "root": | |
| return rootDir; | |
| case "upward-optional": | |
| { | |
| const upwardRootDir = (0, _files.findConfigUpwards)(rootDir); | |
| return upwardRootDir === null ? rootDir : upwardRootDir; | |
| } | |
| case "upward": | |
| { | |
| const upwardRootDir = (0, _files.findConfigUpwards)(rootDir); | |
| if (upwardRootDir !== null) return upwardRootDir; | |
| throw Object.assign(new Error(`Babel was run with rootMode:"upward" but a root could not ` + `be found when searching upward from "${rootDir}"`), { | |
| code: "BABEL_ROOT_NOT_FOUND", | |
| dirname: rootDir | |
| }); | |
| } | |
| default: | |
| throw new Error(`Assertion failure - unknown rootMode value`); | |
| } | |
| } | |
| function loadPrivatePartialConfig(inputOpts) { | |
| if (inputOpts != null && (typeof inputOpts !== "object" || Array.isArray(inputOpts))) { | |
| throw new Error("Babel options must be an object, null, or undefined"); | |
| } | |
| const args = inputOpts ? (0, _options.validate)("arguments", inputOpts) : {}; | |
| const { | |
| envName = (0, _environment.getEnv)(), | |
| cwd = ".", | |
| root: rootDir = ".", | |
| rootMode = "root", | |
| caller | |
| } = args; | |
| const absoluteCwd = _path().default.resolve(cwd); | |
| const absoluteRootDir = resolveRootMode(_path().default.resolve(absoluteCwd, rootDir), rootMode); | |
| const context = { | |
| filename: typeof args.filename === "string" ? _path().default.resolve(cwd, args.filename) : undefined, | |
| cwd: absoluteCwd, | |
| root: absoluteRootDir, | |
| envName, | |
| caller | |
| }; | |
| const configChain = (0, _configChain.buildRootChain)(args, context); | |
| if (!configChain) return null; | |
| const options = {}; | |
| configChain.options.forEach(opts => { | |
| (0, _util.mergeOptions)(options, opts); | |
| }); | |
| options.babelrc = false; | |
| options.configFile = false; | |
| options.passPerPreset = false; | |
| options.envName = context.envName; | |
| options.cwd = context.cwd; | |
| options.root = context.root; | |
| options.filename = typeof context.filename === "string" ? context.filename : undefined; | |
| options.plugins = configChain.plugins.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)); | |
| options.presets = configChain.presets.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)); | |
| return { | |
| options, | |
| context, | |
| ignore: configChain.ignore, | |
| babelrc: configChain.babelrc, | |
| config: configChain.config | |
| }; | |
| } | |
| function loadPartialConfig(inputOpts) { | |
| const result = loadPrivatePartialConfig(inputOpts); | |
| if (!result) return null; | |
| const { | |
| options, | |
| babelrc, | |
| ignore, | |
| config | |
| } = result; | |
| (options.plugins || []).forEach(item => { | |
| if (item.value instanceof _plugin.default) { | |
| throw new Error("Passing cached plugin instances is not supported in " + "babel.loadPartialConfig()"); | |
| } | |
| }); | |
| return new PartialConfig(options, babelrc ? babelrc.filepath : undefined, ignore ? ignore.filepath : undefined, config ? config.filepath : undefined); | |
| } | |
| class PartialConfig { | |
| constructor(options, babelrc, ignore, config) { | |
| this.options = options; | |
| this.babelignore = ignore; | |
| this.babelrc = babelrc; | |
| this.config = config; | |
| Object.freeze(this); | |
| } | |
| hasFilesystemConfig() { | |
| return this.babelrc !== undefined || this.config !== undefined; | |
| } | |
| } | |
| Object.freeze(PartialConfig.prototype); |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = pathToPattern; | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _escapeRegExp() { | |
| const data = _interopRequireDefault(require("lodash/escapeRegExp")); | |
| _escapeRegExp = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const sep = `\\${_path().default.sep}`; | |
| const endSep = `(?:${sep}|$)`; | |
| const substitution = `[^${sep}]+`; | |
| const starPat = `(?:${substitution}${sep})`; | |
| const starPatLast = `(?:${substitution}${endSep})`; | |
| const starStarPat = `${starPat}*?`; | |
| const starStarPatLast = `${starPat}*?${starPatLast}?`; | |
| function pathToPattern(pattern, dirname) { | |
| const parts = _path().default.resolve(dirname, pattern).split(_path().default.sep); | |
| return new RegExp(["^", ...parts.map((part, i) => { | |
| const last = i === parts.length - 1; | |
| if (part === "**") return last ? starStarPatLast : starStarPat; | |
| if (part === "*") return last ? starPatLast : starPat; | |
| if (part.indexOf("*.") === 0) { | |
| return substitution + (0, _escapeRegExp().default)(part.slice(1)) + (last ? endSep : sep); | |
| } | |
| return (0, _escapeRegExp().default)(part) + (last ? endSep : sep); | |
| })].join("")); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| class Plugin { | |
| constructor(plugin, options, key) { | |
| this.key = plugin.name || key; | |
| this.manipulateOptions = plugin.manipulateOptions; | |
| this.post = plugin.post; | |
| this.pre = plugin.pre; | |
| this.visitor = plugin.visitor || {}; | |
| this.parserOverride = plugin.parserOverride; | |
| this.generatorOverride = plugin.generatorOverride; | |
| this.options = options; | |
| } | |
| } | |
| exports.default = Plugin; |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.mergeOptions = mergeOptions; | |
| function mergeOptions(target, source) { | |
| for (const k of Object.keys(source)) { | |
| if (k === "parserOpts" && source.parserOpts) { | |
| const parserOpts = source.parserOpts; | |
| const targetObj = target.parserOpts = target.parserOpts || {}; | |
| mergeDefaultFields(targetObj, parserOpts); | |
| } else if (k === "generatorOpts" && source.generatorOpts) { | |
| const generatorOpts = source.generatorOpts; | |
| const targetObj = target.generatorOpts = target.generatorOpts || {}; | |
| mergeDefaultFields(targetObj, generatorOpts); | |
| } else { | |
| const val = source[k]; | |
| if (val !== undefined) target[k] = val; | |
| } | |
| } | |
| } | |
| function mergeDefaultFields(target, source) { | |
| for (const k of Object.keys(source)) { | |
| const val = source[k]; | |
| if (val !== undefined) target[k] = val; | |
| } | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.msg = msg; | |
| exports.access = access; | |
| exports.assertRootMode = assertRootMode; | |
| exports.assertSourceMaps = assertSourceMaps; | |
| exports.assertCompact = assertCompact; | |
| exports.assertSourceType = assertSourceType; | |
| exports.assertCallerMetadata = assertCallerMetadata; | |
| exports.assertInputSourceMap = assertInputSourceMap; | |
| exports.assertString = assertString; | |
| exports.assertFunction = assertFunction; | |
| exports.assertBoolean = assertBoolean; | |
| exports.assertObject = assertObject; | |
| exports.assertArray = assertArray; | |
| exports.assertIgnoreList = assertIgnoreList; | |
| exports.assertConfigApplicableTest = assertConfigApplicableTest; | |
| exports.assertConfigFileSearch = assertConfigFileSearch; | |
| exports.assertBabelrcSearch = assertBabelrcSearch; | |
| exports.assertPluginList = assertPluginList; | |
| function msg(loc) { | |
| switch (loc.type) { | |
| case "root": | |
| return ``; | |
| case "env": | |
| return `${msg(loc.parent)}.env["${loc.name}"]`; | |
| case "overrides": | |
| return `${msg(loc.parent)}.overrides[${loc.index}]`; | |
| case "option": | |
| return `${msg(loc.parent)}.${loc.name}`; | |
| case "access": | |
| return `${msg(loc.parent)}[${JSON.stringify(loc.name)}]`; | |
| default: | |
| throw new Error(`Assertion failure: Unknown type ${loc.type}`); | |
| } | |
| } | |
| function access(loc, name) { | |
| return { | |
| type: "access", | |
| name, | |
| parent: loc | |
| }; | |
| } | |
| function assertRootMode(loc, value) { | |
| if (value !== undefined && value !== "root" && value !== "upward" && value !== "upward-optional") { | |
| throw new Error(`${msg(loc)} must be a "root", "upward", "upward-optional" or undefined`); | |
| } | |
| return value; | |
| } | |
| function assertSourceMaps(loc, value) { | |
| if (value !== undefined && typeof value !== "boolean" && value !== "inline" && value !== "both") { | |
| throw new Error(`${msg(loc)} must be a boolean, "inline", "both", or undefined`); | |
| } | |
| return value; | |
| } | |
| function assertCompact(loc, value) { | |
| if (value !== undefined && typeof value !== "boolean" && value !== "auto") { | |
| throw new Error(`${msg(loc)} must be a boolean, "auto", or undefined`); | |
| } | |
| return value; | |
| } | |
| function assertSourceType(loc, value) { | |
| if (value !== undefined && value !== "module" && value !== "script" && value !== "unambiguous") { | |
| throw new Error(`${msg(loc)} must be "module", "script", "unambiguous", or undefined`); | |
| } | |
| return value; | |
| } | |
| function assertCallerMetadata(loc, value) { | |
| const obj = assertObject(loc, value); | |
| if (obj) { | |
| if (typeof obj["name"] !== "string") { | |
| throw new Error(`${msg(loc)} set but does not contain "name" property string`); | |
| } | |
| for (const prop of Object.keys(obj)) { | |
| const propLoc = access(loc, prop); | |
| const value = obj[prop]; | |
| if (value != null && typeof value !== "boolean" && typeof value !== "string" && typeof value !== "number") { | |
| throw new Error(`${msg(propLoc)} must be null, undefined, a boolean, a string, or a number.`); | |
| } | |
| } | |
| } | |
| return value; | |
| } | |
| function assertInputSourceMap(loc, value) { | |
| if (value !== undefined && typeof value !== "boolean" && (typeof value !== "object" || !value)) { | |
| throw new Error(`${msg(loc)} must be a boolean, object, or undefined`); | |
| } | |
| return value; | |
| } | |
| function assertString(loc, value) { | |
| if (value !== undefined && typeof value !== "string") { | |
| throw new Error(`${msg(loc)} must be a string, or undefined`); | |
| } | |
| return value; | |
| } | |
| function assertFunction(loc, value) { | |
| if (value !== undefined && typeof value !== "function") { | |
| throw new Error(`${msg(loc)} must be a function, or undefined`); | |
| } | |
| return value; | |
| } | |
| function assertBoolean(loc, value) { | |
| if (value !== undefined && typeof value !== "boolean") { | |
| throw new Error(`${msg(loc)} must be a boolean, or undefined`); | |
| } | |
| return value; | |
| } | |
| function assertObject(loc, value) { | |
| if (value !== undefined && (typeof value !== "object" || Array.isArray(value) || !value)) { | |
| throw new Error(`${msg(loc)} must be an object, or undefined`); | |
| } | |
| return value; | |
| } | |
| function assertArray(loc, value) { | |
| if (value != null && !Array.isArray(value)) { | |
| throw new Error(`${msg(loc)} must be an array, or undefined`); | |
| } | |
| return value; | |
| } | |
| function assertIgnoreList(loc, value) { | |
| const arr = assertArray(loc, value); | |
| if (arr) { | |
| arr.forEach((item, i) => assertIgnoreItem(access(loc, i), item)); | |
| } | |
| return arr; | |
| } | |
| function assertIgnoreItem(loc, value) { | |
| if (typeof value !== "string" && typeof value !== "function" && !(value instanceof RegExp)) { | |
| throw new Error(`${msg(loc)} must be an array of string/Funtion/RegExp values, or undefined`); | |
| } | |
| return value; | |
| } | |
| function assertConfigApplicableTest(loc, value) { | |
| if (value === undefined) return value; | |
| if (Array.isArray(value)) { | |
| value.forEach((item, i) => { | |
| if (!checkValidTest(item)) { | |
| throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`); | |
| } | |
| }); | |
| } else if (!checkValidTest(value)) { | |
| throw new Error(`${msg(loc)} must be a string/Function/RegExp, or an array of those`); | |
| } | |
| return value; | |
| } | |
| function checkValidTest(value) { | |
| return typeof value === "string" || typeof value === "function" || value instanceof RegExp; | |
| } | |
| function assertConfigFileSearch(loc, value) { | |
| if (value !== undefined && typeof value !== "boolean" && typeof value !== "string") { | |
| throw new Error(`${msg(loc)} must be a undefined, a boolean, a string, ` + `got ${JSON.stringify(value)}`); | |
| } | |
| return value; | |
| } | |
| function assertBabelrcSearch(loc, value) { | |
| if (value === undefined || typeof value === "boolean") return value; | |
| if (Array.isArray(value)) { | |
| value.forEach((item, i) => { | |
| if (!checkValidTest(item)) { | |
| throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`); | |
| } | |
| }); | |
| } else if (!checkValidTest(value)) { | |
| throw new Error(`${msg(loc)} must be a undefined, a boolean, a string/Function/RegExp ` + `or an array of those, got ${JSON.stringify(value)}`); | |
| } | |
| return value; | |
| } | |
| function assertPluginList(loc, value) { | |
| const arr = assertArray(loc, value); | |
| if (arr) { | |
| arr.forEach((item, i) => assertPluginItem(access(loc, i), item)); | |
| } | |
| return arr; | |
| } | |
| function assertPluginItem(loc, value) { | |
| if (Array.isArray(value)) { | |
| if (value.length === 0) { | |
| throw new Error(`${msg(loc)} must include an object`); | |
| } | |
| if (value.length > 3) { | |
| throw new Error(`${msg(loc)} may only be a two-tuple or three-tuple`); | |
| } | |
| assertPluginTarget(access(loc, 0), value[0]); | |
| if (value.length > 1) { | |
| const opts = value[1]; | |
| if (opts !== undefined && opts !== false && (typeof opts !== "object" || Array.isArray(opts))) { | |
| throw new Error(`${msg(access(loc, 1))} must be an object, false, or undefined`); | |
| } | |
| } | |
| if (value.length === 3) { | |
| const name = value[2]; | |
| if (name !== undefined && typeof name !== "string") { | |
| throw new Error(`${msg(access(loc, 2))} must be a string, or undefined`); | |
| } | |
| } | |
| } else { | |
| assertPluginTarget(loc, value); | |
| } | |
| return value; | |
| } | |
| function assertPluginTarget(loc, value) { | |
| if ((typeof value !== "object" || !value) && typeof value !== "string" && typeof value !== "function") { | |
| throw new Error(`${msg(loc)} must be a string, object, function`); | |
| } | |
| return value; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.validate = validate; | |
| var _plugin = _interopRequireDefault(require("../plugin")); | |
| var _removed = _interopRequireDefault(require("./removed")); | |
| var _optionAssertions = require("./option-assertions"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const ROOT_VALIDATORS = { | |
| cwd: _optionAssertions.assertString, | |
| root: _optionAssertions.assertString, | |
| rootMode: _optionAssertions.assertRootMode, | |
| configFile: _optionAssertions.assertConfigFileSearch, | |
| caller: _optionAssertions.assertCallerMetadata, | |
| filename: _optionAssertions.assertString, | |
| filenameRelative: _optionAssertions.assertString, | |
| code: _optionAssertions.assertBoolean, | |
| ast: _optionAssertions.assertBoolean, | |
| envName: _optionAssertions.assertString | |
| }; | |
| const BABELRC_VALIDATORS = { | |
| babelrc: _optionAssertions.assertBoolean, | |
| babelrcRoots: _optionAssertions.assertBabelrcSearch | |
| }; | |
| const NONPRESET_VALIDATORS = { | |
| extends: _optionAssertions.assertString, | |
| ignore: _optionAssertions.assertIgnoreList, | |
| only: _optionAssertions.assertIgnoreList | |
| }; | |
| const COMMON_VALIDATORS = { | |
| inputSourceMap: _optionAssertions.assertInputSourceMap, | |
| presets: _optionAssertions.assertPluginList, | |
| plugins: _optionAssertions.assertPluginList, | |
| passPerPreset: _optionAssertions.assertBoolean, | |
| env: assertEnvSet, | |
| overrides: assertOverridesList, | |
| test: _optionAssertions.assertConfigApplicableTest, | |
| include: _optionAssertions.assertConfigApplicableTest, | |
| exclude: _optionAssertions.assertConfigApplicableTest, | |
| retainLines: _optionAssertions.assertBoolean, | |
| comments: _optionAssertions.assertBoolean, | |
| shouldPrintComment: _optionAssertions.assertFunction, | |
| compact: _optionAssertions.assertCompact, | |
| minified: _optionAssertions.assertBoolean, | |
| auxiliaryCommentBefore: _optionAssertions.assertString, | |
| auxiliaryCommentAfter: _optionAssertions.assertString, | |
| sourceType: _optionAssertions.assertSourceType, | |
| wrapPluginVisitorMethod: _optionAssertions.assertFunction, | |
| highlightCode: _optionAssertions.assertBoolean, | |
| sourceMaps: _optionAssertions.assertSourceMaps, | |
| sourceMap: _optionAssertions.assertSourceMaps, | |
| sourceFileName: _optionAssertions.assertString, | |
| sourceRoot: _optionAssertions.assertString, | |
| getModuleId: _optionAssertions.assertFunction, | |
| moduleRoot: _optionAssertions.assertString, | |
| moduleIds: _optionAssertions.assertBoolean, | |
| moduleId: _optionAssertions.assertString, | |
| parserOpts: _optionAssertions.assertObject, | |
| generatorOpts: _optionAssertions.assertObject | |
| }; | |
| function getSource(loc) { | |
| return loc.type === "root" ? loc.source : getSource(loc.parent); | |
| } | |
| function validate(type, opts) { | |
| return validateNested({ | |
| type: "root", | |
| source: type | |
| }, opts); | |
| } | |
| function validateNested(loc, opts) { | |
| const type = getSource(loc); | |
| assertNoDuplicateSourcemap(opts); | |
| Object.keys(opts).forEach(key => { | |
| const optLoc = { | |
| type: "option", | |
| name: key, | |
| parent: loc | |
| }; | |
| if (type === "preset" && NONPRESET_VALIDATORS[key]) { | |
| throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in preset options`); | |
| } | |
| if (type !== "arguments" && ROOT_VALIDATORS[key]) { | |
| throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options`); | |
| } | |
| if (type !== "arguments" && type !== "configfile" && BABELRC_VALIDATORS[key]) { | |
| if (type === "babelrcfile" || type === "extendsfile") { | |
| throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in .babelrc or "extends"ed files, only in root programmatic options, ` + `or babel.config.js/config file options`); | |
| } | |
| throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options, or babel.config.js/config file options`); | |
| } | |
| const validator = COMMON_VALIDATORS[key] || NONPRESET_VALIDATORS[key] || BABELRC_VALIDATORS[key] || ROOT_VALIDATORS[key] || throwUnknownError; | |
| validator(optLoc, opts[key]); | |
| }); | |
| return opts; | |
| } | |
| function throwUnknownError(loc) { | |
| const key = loc.name; | |
| if (_removed.default[key]) { | |
| const { | |
| message, | |
| version = 5 | |
| } = _removed.default[key]; | |
| throw new ReferenceError(`Using removed Babel ${version} option: ${(0, _optionAssertions.msg)(loc)} - ${message}`); | |
| } else { | |
| const unknownOptErr = `Unknown option: ${(0, _optionAssertions.msg)(loc)}. Check out https://babeljs.io/docs/en/babel-core/#options for more information about options.`; | |
| throw new ReferenceError(unknownOptErr); | |
| } | |
| } | |
| function has(obj, key) { | |
| return Object.prototype.hasOwnProperty.call(obj, key); | |
| } | |
| function assertNoDuplicateSourcemap(opts) { | |
| if (has(opts, "sourceMap") && has(opts, "sourceMaps")) { | |
| throw new Error(".sourceMap is an alias for .sourceMaps, cannot use both"); | |
| } | |
| } | |
| function assertEnvSet(loc, value) { | |
| if (loc.parent.type === "env") { | |
| throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside of another .env block`); | |
| } | |
| const parent = loc.parent; | |
| const obj = (0, _optionAssertions.assertObject)(loc, value); | |
| if (obj) { | |
| for (const envName of Object.keys(obj)) { | |
| const env = (0, _optionAssertions.assertObject)((0, _optionAssertions.access)(loc, envName), obj[envName]); | |
| if (!env) continue; | |
| const envLoc = { | |
| type: "env", | |
| name: envName, | |
| parent | |
| }; | |
| validateNested(envLoc, env); | |
| } | |
| } | |
| return obj; | |
| } | |
| function assertOverridesList(loc, value) { | |
| if (loc.parent.type === "env") { | |
| throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .env block`); | |
| } | |
| if (loc.parent.type === "overrides") { | |
| throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .overrides block`); | |
| } | |
| const parent = loc.parent; | |
| const arr = (0, _optionAssertions.assertArray)(loc, value); | |
| if (arr) { | |
| for (const [index, item] of arr.entries()) { | |
| const objLoc = (0, _optionAssertions.access)(loc, index); | |
| const env = (0, _optionAssertions.assertObject)(objLoc, item); | |
| if (!env) throw new Error(`${(0, _optionAssertions.msg)(objLoc)} must be an object`); | |
| const overridesLoc = { | |
| type: "overrides", | |
| index, | |
| parent | |
| }; | |
| validateNested(overridesLoc, env); | |
| } | |
| } | |
| return arr; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.validatePluginObject = validatePluginObject; | |
| var _optionAssertions = require("./option-assertions"); | |
| const VALIDATORS = { | |
| name: _optionAssertions.assertString, | |
| manipulateOptions: _optionAssertions.assertFunction, | |
| pre: _optionAssertions.assertFunction, | |
| post: _optionAssertions.assertFunction, | |
| inherits: _optionAssertions.assertFunction, | |
| visitor: assertVisitorMap, | |
| parserOverride: _optionAssertions.assertFunction, | |
| generatorOverride: _optionAssertions.assertFunction | |
| }; | |
| function assertVisitorMap(key, value) { | |
| const obj = (0, _optionAssertions.assertObject)(key, value); | |
| if (obj) { | |
| Object.keys(obj).forEach(prop => assertVisitorHandler(prop, obj[prop])); | |
| if (obj.enter || obj.exit) { | |
| throw new Error(`.${key} cannot contain catch-all "enter" or "exit" handlers. Please target individual nodes.`); | |
| } | |
| } | |
| return obj; | |
| } | |
| function assertVisitorHandler(key, value) { | |
| if (value && typeof value === "object") { | |
| Object.keys(value).forEach(handler => { | |
| if (handler !== "enter" && handler !== "exit") { | |
| throw new Error(`.visitor["${key}"] may only have .enter and/or .exit handlers.`); | |
| } | |
| }); | |
| } else if (typeof value !== "function") { | |
| throw new Error(`.visitor["${key}"] must be a function`); | |
| } | |
| return value; | |
| } | |
| function validatePluginObject(obj) { | |
| Object.keys(obj).forEach(key => { | |
| const validator = VALIDATORS[key]; | |
| if (validator) validator(key, obj[key]);else throw new Error(`.${key} is not a valid Plugin property`); | |
| }); | |
| return obj; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| var _default = { | |
| auxiliaryComment: { | |
| message: "Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`" | |
| }, | |
| blacklist: { | |
| message: "Put the specific transforms you want in the `plugins` option" | |
| }, | |
| breakConfig: { | |
| message: "This is not a necessary option in Babel 6" | |
| }, | |
| experimental: { | |
| message: "Put the specific transforms you want in the `plugins` option" | |
| }, | |
| externalHelpers: { | |
| message: "Use the `external-helpers` plugin instead. " + "Check out http://babeljs.io/docs/plugins/external-helpers/" | |
| }, | |
| extra: { | |
| message: "" | |
| }, | |
| jsxPragma: { | |
| message: "use the `pragma` option in the `react-jsx` plugin. " + "Check out http://babeljs.io/docs/plugins/transform-react-jsx/" | |
| }, | |
| loose: { | |
| message: "Specify the `loose` option for the relevant plugin you are using " + "or use a preset that sets the option." | |
| }, | |
| metadataUsedHelpers: { | |
| message: "Not required anymore as this is enabled by default" | |
| }, | |
| modules: { | |
| message: "Use the corresponding module transform plugin in the `plugins` option. " + "Check out http://babeljs.io/docs/plugins/#modules" | |
| }, | |
| nonStandard: { | |
| message: "Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. " + "Also check out the react preset http://babeljs.io/docs/plugins/preset-react/" | |
| }, | |
| optional: { | |
| message: "Put the specific transforms you want in the `plugins` option" | |
| }, | |
| sourceMapName: { | |
| message: "The `sourceMapName` option has been removed because it makes more sense for the " + "tooling that calls Babel to assign `map.file` themselves." | |
| }, | |
| stage: { | |
| message: "Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets" | |
| }, | |
| whitelist: { | |
| message: "Put the specific transforms you want in the `plugins` option" | |
| }, | |
| resolveModuleSource: { | |
| version: 6, | |
| message: "Use `babel-plugin-module-resolver@3`'s 'resolvePath' options" | |
| }, | |
| metadata: { | |
| version: 6, | |
| message: "Generated plugin metadata is always included in the output result" | |
| }, | |
| sourceMapTarget: { | |
| version: 6, | |
| message: "The `sourceMapTarget` option has been removed because it makes more sense for the tooling " + "that calls Babel to assign `map.file` themselves." | |
| } | |
| }; | |
| exports.default = _default; |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.Plugin = Plugin; | |
| Object.defineProperty(exports, "File", { | |
| enumerable: true, | |
| get: function () { | |
| return _file.default; | |
| } | |
| }); | |
| Object.defineProperty(exports, "buildExternalHelpers", { | |
| enumerable: true, | |
| get: function () { | |
| return _buildExternalHelpers.default; | |
| } | |
| }); | |
| Object.defineProperty(exports, "resolvePlugin", { | |
| enumerable: true, | |
| get: function () { | |
| return _files.resolvePlugin; | |
| } | |
| }); | |
| Object.defineProperty(exports, "resolvePreset", { | |
| enumerable: true, | |
| get: function () { | |
| return _files.resolvePreset; | |
| } | |
| }); | |
| Object.defineProperty(exports, "version", { | |
| enumerable: true, | |
| get: function () { | |
| return _package.version; | |
| } | |
| }); | |
| Object.defineProperty(exports, "getEnv", { | |
| enumerable: true, | |
| get: function () { | |
| return _environment.getEnv; | |
| } | |
| }); | |
| Object.defineProperty(exports, "tokTypes", { | |
| enumerable: true, | |
| get: function () { | |
| return _parser().tokTypes; | |
| } | |
| }); | |
| Object.defineProperty(exports, "traverse", { | |
| enumerable: true, | |
| get: function () { | |
| return _traverse().default; | |
| } | |
| }); | |
| Object.defineProperty(exports, "template", { | |
| enumerable: true, | |
| get: function () { | |
| return _template().default; | |
| } | |
| }); | |
| Object.defineProperty(exports, "createConfigItem", { | |
| enumerable: true, | |
| get: function () { | |
| return _item.createConfigItem; | |
| } | |
| }); | |
| Object.defineProperty(exports, "loadPartialConfig", { | |
| enumerable: true, | |
| get: function () { | |
| return _config.loadPartialConfig; | |
| } | |
| }); | |
| Object.defineProperty(exports, "loadOptions", { | |
| enumerable: true, | |
| get: function () { | |
| return _config.loadOptions; | |
| } | |
| }); | |
| Object.defineProperty(exports, "transform", { | |
| enumerable: true, | |
| get: function () { | |
| return _transform.transform; | |
| } | |
| }); | |
| Object.defineProperty(exports, "transformSync", { | |
| enumerable: true, | |
| get: function () { | |
| return _transform.transformSync; | |
| } | |
| }); | |
| Object.defineProperty(exports, "transformAsync", { | |
| enumerable: true, | |
| get: function () { | |
| return _transform.transformAsync; | |
| } | |
| }); | |
| Object.defineProperty(exports, "transformFile", { | |
| enumerable: true, | |
| get: function () { | |
| return _transformFile.transformFile; | |
| } | |
| }); | |
| Object.defineProperty(exports, "transformFileSync", { | |
| enumerable: true, | |
| get: function () { | |
| return _transformFile.transformFileSync; | |
| } | |
| }); | |
| Object.defineProperty(exports, "transformFileAsync", { | |
| enumerable: true, | |
| get: function () { | |
| return _transformFile.transformFileAsync; | |
| } | |
| }); | |
| Object.defineProperty(exports, "transformFromAst", { | |
| enumerable: true, | |
| get: function () { | |
| return _transformAst.transformFromAst; | |
| } | |
| }); | |
| Object.defineProperty(exports, "transformFromAstSync", { | |
| enumerable: true, | |
| get: function () { | |
| return _transformAst.transformFromAstSync; | |
| } | |
| }); | |
| Object.defineProperty(exports, "transformFromAstAsync", { | |
| enumerable: true, | |
| get: function () { | |
| return _transformAst.transformFromAstAsync; | |
| } | |
| }); | |
| Object.defineProperty(exports, "parse", { | |
| enumerable: true, | |
| get: function () { | |
| return _parse.parse; | |
| } | |
| }); | |
| Object.defineProperty(exports, "parseSync", { | |
| enumerable: true, | |
| get: function () { | |
| return _parse.parseSync; | |
| } | |
| }); | |
| Object.defineProperty(exports, "parseAsync", { | |
| enumerable: true, | |
| get: function () { | |
| return _parse.parseAsync; | |
| } | |
| }); | |
| exports.types = exports.OptionManager = exports.DEFAULT_EXTENSIONS = void 0; | |
| var _file = _interopRequireDefault(require("./transformation/file/file")); | |
| var _buildExternalHelpers = _interopRequireDefault(require("./tools/build-external-helpers")); | |
| var _files = require("./config/files"); | |
| var _package = require("../package.json"); | |
| var _environment = require("./config/helpers/environment"); | |
| function _types() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| _types = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| Object.defineProperty(exports, "types", { | |
| enumerable: true, | |
| get: function () { | |
| return _types(); | |
| } | |
| }); | |
| function _parser() { | |
| const data = require("@babel/parser"); | |
| _parser = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _traverse() { | |
| const data = _interopRequireDefault(require("@babel/traverse")); | |
| _traverse = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _template() { | |
| const data = _interopRequireDefault(require("@babel/template")); | |
| _template = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _item = require("./config/item"); | |
| var _config = require("./config"); | |
| var _transform = require("./transform"); | |
| var _transformFile = require("./transform-file"); | |
| var _transformAst = require("./transform-ast"); | |
| var _parse = require("./parse"); | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const DEFAULT_EXTENSIONS = Object.freeze([".js", ".jsx", ".es6", ".es", ".mjs"]); | |
| exports.DEFAULT_EXTENSIONS = DEFAULT_EXTENSIONS; | |
| class OptionManager { | |
| init(opts) { | |
| return (0, _config.loadOptions)(opts); | |
| } | |
| } | |
| exports.OptionManager = OptionManager; | |
| function Plugin(alias) { | |
| throw new Error(`The (${alias}) Babel 5 plugin is being run with an unsupported Babel version.`); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.parseSync = parseSync; | |
| exports.parseAsync = parseAsync; | |
| exports.parse = void 0; | |
| var _config = _interopRequireDefault(require("./config")); | |
| var _normalizeFile = _interopRequireDefault(require("./transformation/normalize-file")); | |
| var _normalizeOpts = _interopRequireDefault(require("./transformation/normalize-opts")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const parse = function parse(code, opts, callback) { | |
| if (typeof opts === "function") { | |
| callback = opts; | |
| opts = undefined; | |
| } | |
| if (callback === undefined) return parseSync(code, opts); | |
| const config = (0, _config.default)(opts); | |
| if (config === null) { | |
| return null; | |
| } | |
| const cb = callback; | |
| process.nextTick(() => { | |
| let ast = null; | |
| try { | |
| const cfg = (0, _config.default)(opts); | |
| if (cfg === null) return cb(null, null); | |
| ast = (0, _normalizeFile.default)(cfg.passes, (0, _normalizeOpts.default)(cfg), code).ast; | |
| } catch (err) { | |
| return cb(err); | |
| } | |
| cb(null, ast); | |
| }); | |
| }; | |
| exports.parse = parse; | |
| function parseSync(code, opts) { | |
| const config = (0, _config.default)(opts); | |
| if (config === null) { | |
| return null; | |
| } | |
| return (0, _normalizeFile.default)(config.passes, (0, _normalizeOpts.default)(config), code).ast; | |
| } | |
| function parseAsync(code, opts) { | |
| return new Promise((res, rej) => { | |
| parse(code, opts, (err, result) => { | |
| if (err == null) res(result);else rej(err); | |
| }); | |
| }); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function helpers() { | |
| const data = _interopRequireWildcard(require("@babel/helpers")); | |
| helpers = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _generator() { | |
| const data = _interopRequireDefault(require("@babel/generator")); | |
| _generator = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _template() { | |
| const data = _interopRequireDefault(require("@babel/template")); | |
| _template = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| const buildUmdWrapper = replacements => _template().default` | |
| (function (root, factory) { | |
| if (typeof define === "function" && define.amd) { | |
| define(AMD_ARGUMENTS, factory); | |
| } else if (typeof exports === "object") { | |
| factory(COMMON_ARGUMENTS); | |
| } else { | |
| factory(BROWSER_ARGUMENTS); | |
| } | |
| })(UMD_ROOT, function (FACTORY_PARAMETERS) { | |
| FACTORY_BODY | |
| }); | |
| `(replacements); | |
| function buildGlobal(whitelist) { | |
| const namespace = t().identifier("babelHelpers"); | |
| const body = []; | |
| const container = t().functionExpression(null, [t().identifier("global")], t().blockStatement(body)); | |
| const tree = t().program([t().expressionStatement(t().callExpression(container, [t().conditionalExpression(t().binaryExpression("===", t().unaryExpression("typeof", t().identifier("global")), t().stringLiteral("undefined")), t().identifier("self"), t().identifier("global"))]))]); | |
| body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().assignmentExpression("=", t().memberExpression(t().identifier("global"), namespace), t().objectExpression([])))])); | |
| buildHelpers(body, namespace, whitelist); | |
| return tree; | |
| } | |
| function buildModule(whitelist) { | |
| const body = []; | |
| const refs = buildHelpers(body, null, whitelist); | |
| body.unshift(t().exportNamedDeclaration(null, Object.keys(refs).map(name => { | |
| return t().exportSpecifier(t().cloneNode(refs[name]), t().identifier(name)); | |
| }))); | |
| return t().program(body, [], "module"); | |
| } | |
| function buildUmd(whitelist) { | |
| const namespace = t().identifier("babelHelpers"); | |
| const body = []; | |
| body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().identifier("global"))])); | |
| buildHelpers(body, namespace, whitelist); | |
| return t().program([buildUmdWrapper({ | |
| FACTORY_PARAMETERS: t().identifier("global"), | |
| BROWSER_ARGUMENTS: t().assignmentExpression("=", t().memberExpression(t().identifier("root"), namespace), t().objectExpression([])), | |
| COMMON_ARGUMENTS: t().identifier("exports"), | |
| AMD_ARGUMENTS: t().arrayExpression([t().stringLiteral("exports")]), | |
| FACTORY_BODY: body, | |
| UMD_ROOT: t().identifier("this") | |
| })]); | |
| } | |
| function buildVar(whitelist) { | |
| const namespace = t().identifier("babelHelpers"); | |
| const body = []; | |
| body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().objectExpression([]))])); | |
| const tree = t().program(body); | |
| buildHelpers(body, namespace, whitelist); | |
| body.push(t().expressionStatement(namespace)); | |
| return tree; | |
| } | |
| function buildHelpers(body, namespace, whitelist) { | |
| const getHelperReference = name => { | |
| return namespace ? t().memberExpression(namespace, t().identifier(name)) : t().identifier(`_${name}`); | |
| }; | |
| const refs = {}; | |
| helpers().list.forEach(function (name) { | |
| if (whitelist && whitelist.indexOf(name) < 0) return; | |
| const ref = refs[name] = getHelperReference(name); | |
| const { | |
| nodes | |
| } = helpers().get(name, getHelperReference, ref); | |
| body.push(...nodes); | |
| }); | |
| return refs; | |
| } | |
| function _default(whitelist, outputType = "global") { | |
| let tree; | |
| const build = { | |
| global: buildGlobal, | |
| module: buildModule, | |
| umd: buildUmd, | |
| var: buildVar | |
| }[outputType]; | |
| if (build) { | |
| tree = build(whitelist); | |
| } else { | |
| throw new Error(`Unsupported output type ${outputType}`); | |
| } | |
| return (0, _generator().default)(tree).code; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.transformFromAstSync = transformFromAstSync; | |
| exports.transformFromAstAsync = transformFromAstAsync; | |
| exports.transformFromAst = void 0; | |
| var _config = _interopRequireDefault(require("./config")); | |
| var _transformation = require("./transformation"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const transformFromAst = function transformFromAst(ast, code, opts, callback) { | |
| if (typeof opts === "function") { | |
| callback = opts; | |
| opts = undefined; | |
| } | |
| if (callback === undefined) return transformFromAstSync(ast, code, opts); | |
| const cb = callback; | |
| process.nextTick(() => { | |
| let cfg; | |
| try { | |
| cfg = (0, _config.default)(opts); | |
| if (cfg === null) return cb(null, null); | |
| } catch (err) { | |
| return cb(err); | |
| } | |
| if (!ast) return cb(new Error("No AST given")); | |
| (0, _transformation.runAsync)(cfg, code, ast, cb); | |
| }); | |
| }; | |
| exports.transformFromAst = transformFromAst; | |
| function transformFromAstSync(ast, code, opts) { | |
| const config = (0, _config.default)(opts); | |
| if (config === null) return null; | |
| if (!ast) throw new Error("No AST given"); | |
| return (0, _transformation.runSync)(config, code, ast); | |
| } | |
| function transformFromAstAsync(ast, code, opts) { | |
| return new Promise((res, rej) => { | |
| transformFromAst(ast, code, opts, (err, result) => { | |
| if (err == null) res(result);else rej(err); | |
| }); | |
| }); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.transformFileSync = transformFileSync; | |
| exports.transformFileAsync = transformFileAsync; | |
| exports.transformFile = void 0; | |
| const transformFile = function transformFile(filename, opts, callback) { | |
| if (typeof opts === "function") { | |
| callback = opts; | |
| } | |
| callback(new Error("Transforming files is not supported in browsers"), null); | |
| }; | |
| exports.transformFile = transformFile; | |
| function transformFileSync() { | |
| throw new Error("Transforming files is not supported in browsers"); | |
| } | |
| function transformFileAsync() { | |
| return Promise.reject(new Error("Transforming files is not supported in browsers")); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.transformFileSync = transformFileSync; | |
| exports.transformFileAsync = transformFileAsync; | |
| exports.transformFile = void 0; | |
| function _fs() { | |
| const data = _interopRequireDefault(require("fs")); | |
| _fs = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _config = _interopRequireDefault(require("./config")); | |
| var _transformation = require("./transformation"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| ({}); | |
| const transformFile = function transformFile(filename, opts, callback) { | |
| let options; | |
| if (typeof opts === "function") { | |
| callback = opts; | |
| opts = undefined; | |
| } | |
| if (opts == null) { | |
| options = { | |
| filename | |
| }; | |
| } else if (opts && typeof opts === "object") { | |
| options = Object.assign({}, opts, { | |
| filename | |
| }); | |
| } | |
| process.nextTick(() => { | |
| let cfg; | |
| try { | |
| cfg = (0, _config.default)(options); | |
| if (cfg === null) return callback(null, null); | |
| } catch (err) { | |
| return callback(err); | |
| } | |
| const config = cfg; | |
| _fs().default.readFile(filename, "utf8", function (err, code) { | |
| if (err) return callback(err, null); | |
| (0, _transformation.runAsync)(config, code, null, callback); | |
| }); | |
| }); | |
| }; | |
| exports.transformFile = transformFile; | |
| function transformFileSync(filename, opts) { | |
| let options; | |
| if (opts == null) { | |
| options = { | |
| filename | |
| }; | |
| } else if (opts && typeof opts === "object") { | |
| options = Object.assign({}, opts, { | |
| filename | |
| }); | |
| } | |
| const config = (0, _config.default)(options); | |
| if (config === null) return null; | |
| return (0, _transformation.runSync)(config, _fs().default.readFileSync(filename, "utf8")); | |
| } | |
| function transformFileAsync(filename, opts) { | |
| return new Promise((res, rej) => { | |
| transformFile(filename, opts, (err, result) => { | |
| if (err == null) res(result);else rej(err); | |
| }); | |
| }); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.transformSync = transformSync; | |
| exports.transformAsync = transformAsync; | |
| exports.transform = void 0; | |
| var _config = _interopRequireDefault(require("./config")); | |
| var _transformation = require("./transformation"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const transform = function transform(code, opts, callback) { | |
| if (typeof opts === "function") { | |
| callback = opts; | |
| opts = undefined; | |
| } | |
| if (callback === undefined) return transformSync(code, opts); | |
| const cb = callback; | |
| process.nextTick(() => { | |
| let cfg; | |
| try { | |
| cfg = (0, _config.default)(opts); | |
| if (cfg === null) return cb(null, null); | |
| } catch (err) { | |
| return cb(err); | |
| } | |
| (0, _transformation.runAsync)(cfg, code, null, cb); | |
| }); | |
| }; | |
| exports.transform = transform; | |
| function transformSync(code, opts) { | |
| const config = (0, _config.default)(opts); | |
| if (config === null) return null; | |
| return (0, _transformation.runSync)(config, code); | |
| } | |
| function transformAsync(code, opts) { | |
| return new Promise((res, rej) => { | |
| transform(code, opts, (err, result) => { | |
| if (err == null) res(result);else rej(err); | |
| }); | |
| }); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = loadBlockHoistPlugin; | |
| function _sortBy() { | |
| const data = _interopRequireDefault(require("lodash/sortBy")); | |
| _sortBy = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _config = _interopRequireDefault(require("../config")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| let LOADED_PLUGIN; | |
| function loadBlockHoistPlugin() { | |
| if (!LOADED_PLUGIN) { | |
| const config = (0, _config.default)({ | |
| babelrc: false, | |
| configFile: false, | |
| plugins: [blockHoistPlugin] | |
| }); | |
| LOADED_PLUGIN = config ? config.passes[0][0] : undefined; | |
| if (!LOADED_PLUGIN) throw new Error("Assertion failure"); | |
| } | |
| return LOADED_PLUGIN; | |
| } | |
| const blockHoistPlugin = { | |
| name: "internal.blockHoist", | |
| visitor: { | |
| Block: { | |
| exit({ | |
| node | |
| }) { | |
| let hasChange = false; | |
| for (let i = 0; i < node.body.length; i++) { | |
| const bodyNode = node.body[i]; | |
| if (bodyNode && bodyNode._blockHoist != null) { | |
| hasChange = true; | |
| break; | |
| } | |
| } | |
| if (!hasChange) return; | |
| node.body = (0, _sortBy().default)(node.body, function (bodyNode) { | |
| let priority = bodyNode && bodyNode._blockHoist; | |
| if (priority == null) priority = 1; | |
| if (priority === true) priority = 2; | |
| return -1 * priority; | |
| }); | |
| } | |
| } | |
| } | |
| }; |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| function helpers() { | |
| const data = _interopRequireWildcard(require("@babel/helpers")); | |
| helpers = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _traverse() { | |
| const data = _interopRequireWildcard(require("@babel/traverse")); | |
| _traverse = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _codeFrame() { | |
| const data = require("@babel/code-frame"); | |
| _codeFrame = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _semver() { | |
| const data = _interopRequireDefault(require("semver")); | |
| _semver = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| const errorVisitor = { | |
| enter(path, state) { | |
| const loc = path.node.loc; | |
| if (loc) { | |
| state.loc = loc; | |
| path.stop(); | |
| } | |
| } | |
| }; | |
| class File { | |
| constructor(options, { | |
| code, | |
| ast, | |
| inputMap | |
| }) { | |
| this._map = new Map(); | |
| this.declarations = {}; | |
| this.path = null; | |
| this.ast = {}; | |
| this.metadata = {}; | |
| this.code = ""; | |
| this.inputMap = null; | |
| this.hub = { | |
| file: this, | |
| getCode: () => this.code, | |
| getScope: () => this.scope, | |
| addHelper: this.addHelper.bind(this), | |
| buildError: this.buildCodeFrameError.bind(this) | |
| }; | |
| this.opts = options; | |
| this.code = code; | |
| this.ast = ast; | |
| this.inputMap = inputMap; | |
| this.path = _traverse().NodePath.get({ | |
| hub: this.hub, | |
| parentPath: null, | |
| parent: this.ast, | |
| container: this.ast, | |
| key: "program" | |
| }).setContext(); | |
| this.scope = this.path.scope; | |
| } | |
| get shebang() { | |
| const { | |
| interpreter | |
| } = this.path.node; | |
| return interpreter ? interpreter.value : ""; | |
| } | |
| set shebang(value) { | |
| if (value) { | |
| this.path.get("interpreter").replaceWith(t().interpreterDirective(value)); | |
| } else { | |
| this.path.get("interpreter").remove(); | |
| } | |
| } | |
| set(key, val) { | |
| if (key === "helpersNamespace") { | |
| throw new Error("Babel 7.0.0-beta.56 has dropped support for the 'helpersNamespace' utility." + "If you are using @babel/plugin-external-helpers you will need to use a newer " + "version than the one you currently have installed. " + "If you have your own implementation, you'll want to explore using 'helperGenerator' " + "alongside 'file.availableHelper()'."); | |
| } | |
| this._map.set(key, val); | |
| } | |
| get(key) { | |
| return this._map.get(key); | |
| } | |
| has(key) { | |
| return this._map.has(key); | |
| } | |
| getModuleName() { | |
| const { | |
| filename, | |
| filenameRelative = filename, | |
| moduleId, | |
| moduleIds = !!moduleId, | |
| getModuleId, | |
| sourceRoot: sourceRootTmp, | |
| moduleRoot = sourceRootTmp, | |
| sourceRoot = moduleRoot | |
| } = this.opts; | |
| if (!moduleIds) return null; | |
| if (moduleId != null && !getModuleId) { | |
| return moduleId; | |
| } | |
| let moduleName = moduleRoot != null ? moduleRoot + "/" : ""; | |
| if (filenameRelative) { | |
| const sourceRootReplacer = sourceRoot != null ? new RegExp("^" + sourceRoot + "/?") : ""; | |
| moduleName += filenameRelative.replace(sourceRootReplacer, "").replace(/\.(\w*?)$/, ""); | |
| } | |
| moduleName = moduleName.replace(/\\/g, "/"); | |
| if (getModuleId) { | |
| return getModuleId(moduleName) || moduleName; | |
| } else { | |
| return moduleName; | |
| } | |
| } | |
| addImport() { | |
| throw new Error("This API has been removed. If you're looking for this " + "functionality in Babel 7, you should import the " + "'@babel/helper-module-imports' module and use the functions exposed " + " from that module, such as 'addNamed' or 'addDefault'."); | |
| } | |
| availableHelper(name, versionRange) { | |
| let minVersion; | |
| try { | |
| minVersion = helpers().minVersion(name); | |
| } catch (err) { | |
| if (err.code !== "BABEL_HELPER_UNKNOWN") throw err; | |
| return false; | |
| } | |
| if (typeof versionRange !== "string") return true; | |
| if (_semver().default.valid(versionRange)) versionRange = `^${versionRange}`; | |
| return !_semver().default.intersects(`<${minVersion}`, versionRange) && !_semver().default.intersects(`>=8.0.0`, versionRange); | |
| } | |
| addHelper(name) { | |
| const declar = this.declarations[name]; | |
| if (declar) return t().cloneNode(declar); | |
| const generator = this.get("helperGenerator"); | |
| if (generator) { | |
| const res = generator(name); | |
| if (res) return res; | |
| } | |
| const uid = this.declarations[name] = this.scope.generateUidIdentifier(name); | |
| const dependencies = {}; | |
| for (const dep of helpers().getDependencies(name)) { | |
| dependencies[dep] = this.addHelper(dep); | |
| } | |
| const { | |
| nodes, | |
| globals | |
| } = helpers().get(name, dep => dependencies[dep], uid, Object.keys(this.scope.getAllBindings())); | |
| globals.forEach(name => { | |
| if (this.path.scope.hasBinding(name, true)) { | |
| this.path.scope.rename(name); | |
| } | |
| }); | |
| nodes.forEach(node => { | |
| node._compact = true; | |
| }); | |
| this.path.unshiftContainer("body", nodes); | |
| this.path.get("body").forEach(path => { | |
| if (nodes.indexOf(path.node) === -1) return; | |
| if (path.isVariableDeclaration()) this.scope.registerDeclaration(path); | |
| }); | |
| return uid; | |
| } | |
| addTemplateObject() { | |
| throw new Error("This function has been moved into the template literal transform itself."); | |
| } | |
| buildCodeFrameError(node, msg, Error = SyntaxError) { | |
| let loc = node && (node.loc || node._loc); | |
| msg = `${this.opts.filename}: ${msg}`; | |
| if (!loc && node) { | |
| const state = { | |
| loc: null | |
| }; | |
| (0, _traverse().default)(node, errorVisitor, this.scope, state); | |
| loc = state.loc; | |
| let txt = "This is an error on an internal node. Probably an internal error."; | |
| if (loc) txt += " Location has been estimated."; | |
| msg += ` (${txt})`; | |
| } | |
| if (loc) { | |
| const { | |
| highlightCode = true | |
| } = this.opts; | |
| msg += "\n" + (0, _codeFrame().codeFrameColumns)(this.code, { | |
| start: { | |
| line: loc.start.line, | |
| column: loc.start.column + 1 | |
| } | |
| }, { | |
| highlightCode | |
| }); | |
| } | |
| return new Error(msg); | |
| } | |
| } | |
| exports.default = File; |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = generateCode; | |
| function _convertSourceMap() { | |
| const data = _interopRequireDefault(require("convert-source-map")); | |
| _convertSourceMap = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _generator() { | |
| const data = _interopRequireDefault(require("@babel/generator")); | |
| _generator = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _mergeMap = _interopRequireDefault(require("./merge-map")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function generateCode(pluginPasses, file) { | |
| const { | |
| opts, | |
| ast, | |
| code, | |
| inputMap | |
| } = file; | |
| const results = []; | |
| for (const plugins of pluginPasses) { | |
| for (const plugin of plugins) { | |
| const { | |
| generatorOverride | |
| } = plugin; | |
| if (generatorOverride) { | |
| const result = generatorOverride(ast, opts.generatorOpts, code, _generator().default); | |
| if (result !== undefined) results.push(result); | |
| } | |
| } | |
| } | |
| let result; | |
| if (results.length === 0) { | |
| result = (0, _generator().default)(ast, opts.generatorOpts, code); | |
| } else if (results.length === 1) { | |
| result = results[0]; | |
| if (typeof result.then === "function") { | |
| throw new Error(`You appear to be using an async parser plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version.`); | |
| } | |
| } else { | |
| throw new Error("More than one plugin attempted to override codegen."); | |
| } | |
| let { | |
| code: outputCode, | |
| map: outputMap | |
| } = result; | |
| if (outputMap && inputMap) { | |
| outputMap = (0, _mergeMap.default)(inputMap.toObject(), outputMap); | |
| } | |
| if (opts.sourceMaps === "inline" || opts.sourceMaps === "both") { | |
| outputCode += "\n" + _convertSourceMap().default.fromObject(outputMap).toComment(); | |
| } | |
| if (opts.sourceMaps === "inline") { | |
| outputMap = null; | |
| } | |
| return { | |
| outputCode, | |
| outputMap | |
| }; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = mergeSourceMap; | |
| function _sourceMap() { | |
| const data = _interopRequireDefault(require("source-map")); | |
| _sourceMap = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function mergeSourceMap(inputMap, map) { | |
| const input = buildMappingData(inputMap); | |
| const output = buildMappingData(map); | |
| const mergedGenerator = new (_sourceMap().default.SourceMapGenerator)(); | |
| for (const _ref of input.sources) { | |
| const { | |
| source | |
| } = _ref; | |
| if (typeof source.content === "string") { | |
| mergedGenerator.setSourceContent(source.path, source.content); | |
| } | |
| } | |
| if (output.sources.length === 1) { | |
| const defaultSource = output.sources[0]; | |
| const insertedMappings = new Map(); | |
| eachInputGeneratedRange(input, (generated, original, source) => { | |
| eachOverlappingGeneratedOutputRange(defaultSource, generated, item => { | |
| const key = makeMappingKey(item); | |
| if (insertedMappings.has(key)) return; | |
| insertedMappings.set(key, item); | |
| mergedGenerator.addMapping({ | |
| source: source.path, | |
| original: { | |
| line: original.line, | |
| column: original.columnStart | |
| }, | |
| generated: { | |
| line: item.line, | |
| column: item.columnStart | |
| }, | |
| name: original.name | |
| }); | |
| }); | |
| }); | |
| for (const item of insertedMappings.values()) { | |
| if (item.columnEnd === Infinity) { | |
| continue; | |
| } | |
| const clearItem = { | |
| line: item.line, | |
| columnStart: item.columnEnd | |
| }; | |
| const key = makeMappingKey(clearItem); | |
| if (insertedMappings.has(key)) { | |
| continue; | |
| } | |
| mergedGenerator.addMapping({ | |
| generated: { | |
| line: clearItem.line, | |
| column: clearItem.columnStart | |
| } | |
| }); | |
| } | |
| } | |
| const result = mergedGenerator.toJSON(); | |
| if (typeof input.sourceRoot === "string") { | |
| result.sourceRoot = input.sourceRoot; | |
| } | |
| return result; | |
| } | |
| function makeMappingKey(item) { | |
| return `${item.line}/${item.columnStart}`; | |
| } | |
| function eachOverlappingGeneratedOutputRange(outputFile, inputGeneratedRange, callback) { | |
| const overlappingOriginal = filterApplicableOriginalRanges(outputFile, inputGeneratedRange); | |
| for (const _ref2 of overlappingOriginal) { | |
| const { | |
| generated | |
| } = _ref2; | |
| for (const item of generated) { | |
| callback(item); | |
| } | |
| } | |
| } | |
| function filterApplicableOriginalRanges({ | |
| mappings | |
| }, { | |
| line, | |
| columnStart, | |
| columnEnd | |
| }) { | |
| return filterSortedArray(mappings, ({ | |
| original: outOriginal | |
| }) => { | |
| if (line > outOriginal.line) return -1; | |
| if (line < outOriginal.line) return 1; | |
| if (columnStart >= outOriginal.columnEnd) return -1; | |
| if (columnEnd <= outOriginal.columnStart) return 1; | |
| return 0; | |
| }); | |
| } | |
| function eachInputGeneratedRange(map, callback) { | |
| for (const _ref3 of map.sources) { | |
| const { | |
| source, | |
| mappings | |
| } = _ref3; | |
| for (const _ref4 of mappings) { | |
| const { | |
| original, | |
| generated | |
| } = _ref4; | |
| for (const item of generated) { | |
| callback(item, original, source); | |
| } | |
| } | |
| } | |
| } | |
| function buildMappingData(map) { | |
| const consumer = new (_sourceMap().default.SourceMapConsumer)(Object.assign({}, map, { | |
| sourceRoot: null | |
| })); | |
| const sources = new Map(); | |
| const mappings = new Map(); | |
| let last = null; | |
| consumer.computeColumnSpans(); | |
| consumer.eachMapping(m => { | |
| if (m.originalLine === null) return; | |
| let source = sources.get(m.source); | |
| if (!source) { | |
| source = { | |
| path: m.source, | |
| content: consumer.sourceContentFor(m.source, true) | |
| }; | |
| sources.set(m.source, source); | |
| } | |
| let sourceData = mappings.get(source); | |
| if (!sourceData) { | |
| sourceData = { | |
| source, | |
| mappings: [] | |
| }; | |
| mappings.set(source, sourceData); | |
| } | |
| const obj = { | |
| line: m.originalLine, | |
| columnStart: m.originalColumn, | |
| columnEnd: Infinity, | |
| name: m.name | |
| }; | |
| if (last && last.source === source && last.mapping.line === m.originalLine) { | |
| last.mapping.columnEnd = m.originalColumn; | |
| } | |
| last = { | |
| source, | |
| mapping: obj | |
| }; | |
| sourceData.mappings.push({ | |
| original: obj, | |
| generated: consumer.allGeneratedPositionsFor({ | |
| source: m.source, | |
| line: m.originalLine, | |
| column: m.originalColumn | |
| }).map(item => ({ | |
| line: item.line, | |
| columnStart: item.column, | |
| columnEnd: item.lastColumn + 1 | |
| })) | |
| }); | |
| }, null, _sourceMap().default.SourceMapConsumer.ORIGINAL_ORDER); | |
| return { | |
| file: map.file, | |
| sourceRoot: map.sourceRoot, | |
| sources: Array.from(mappings.values()) | |
| }; | |
| } | |
| function findInsertionLocation(array, callback) { | |
| let left = 0; | |
| let right = array.length; | |
| while (left < right) { | |
| const mid = Math.floor((left + right) / 2); | |
| const item = array[mid]; | |
| const result = callback(item); | |
| if (result === 0) { | |
| left = mid; | |
| break; | |
| } | |
| if (result >= 0) { | |
| right = mid; | |
| } else { | |
| left = mid + 1; | |
| } | |
| } | |
| let i = left; | |
| if (i < array.length) { | |
| while (i >= 0 && callback(array[i]) >= 0) { | |
| i--; | |
| } | |
| return i + 1; | |
| } | |
| return i; | |
| } | |
| function filterSortedArray(array, callback) { | |
| const start = findInsertionLocation(array, callback); | |
| const results = []; | |
| for (let i = start; i < array.length && callback(array[i]) === 0; i++) { | |
| results.push(array[i]); | |
| } | |
| return results; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.runAsync = runAsync; | |
| exports.runSync = runSync; | |
| function _traverse() { | |
| const data = _interopRequireDefault(require("@babel/traverse")); | |
| _traverse = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _pluginPass = _interopRequireDefault(require("./plugin-pass")); | |
| var _blockHoistPlugin = _interopRequireDefault(require("./block-hoist-plugin")); | |
| var _normalizeOpts = _interopRequireDefault(require("./normalize-opts")); | |
| var _normalizeFile = _interopRequireDefault(require("./normalize-file")); | |
| var _generate = _interopRequireDefault(require("./file/generate")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function runAsync(config, code, ast, callback) { | |
| let result; | |
| try { | |
| result = runSync(config, code, ast); | |
| } catch (err) { | |
| return callback(err); | |
| } | |
| return callback(null, result); | |
| } | |
| function runSync(config, code, ast) { | |
| const file = (0, _normalizeFile.default)(config.passes, (0, _normalizeOpts.default)(config), code, ast); | |
| transformFile(file, config.passes); | |
| const opts = file.opts; | |
| const { | |
| outputCode, | |
| outputMap | |
| } = opts.code !== false ? (0, _generate.default)(config.passes, file) : {}; | |
| return { | |
| metadata: file.metadata, | |
| options: opts, | |
| ast: opts.ast === true ? file.ast : null, | |
| code: outputCode === undefined ? null : outputCode, | |
| map: outputMap === undefined ? null : outputMap, | |
| sourceType: file.ast.program.sourceType | |
| }; | |
| } | |
| function transformFile(file, pluginPasses) { | |
| for (const pluginPairs of pluginPasses) { | |
| const passPairs = []; | |
| const passes = []; | |
| const visitors = []; | |
| for (const plugin of pluginPairs.concat([(0, _blockHoistPlugin.default)()])) { | |
| const pass = new _pluginPass.default(file, plugin.key, plugin.options); | |
| passPairs.push([plugin, pass]); | |
| passes.push(pass); | |
| visitors.push(plugin.visitor); | |
| } | |
| for (const [plugin, pass] of passPairs) { | |
| const fn = plugin.pre; | |
| if (fn) { | |
| const result = fn.call(pass, file); | |
| if (isThenable(result)) { | |
| throw new Error(`You appear to be using an plugin with an async .pre, ` + `which your current version of Babel does not support.` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); | |
| } | |
| } | |
| } | |
| const visitor = _traverse().default.visitors.merge(visitors, passes, file.opts.wrapPluginVisitorMethod); | |
| (0, _traverse().default)(file.ast, visitor, file.scope); | |
| for (const [plugin, pass] of passPairs) { | |
| const fn = plugin.post; | |
| if (fn) { | |
| const result = fn.call(pass, file); | |
| if (isThenable(result)) { | |
| throw new Error(`You appear to be using an plugin with an async .post, ` + `which your current version of Babel does not support.` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| function isThenable(val) { | |
| return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function"; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = normalizeFile; | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _debug() { | |
| const data = _interopRequireDefault(require("debug")); | |
| _debug = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _cloneDeep() { | |
| const data = _interopRequireDefault(require("lodash/cloneDeep")); | |
| _cloneDeep = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _convertSourceMap() { | |
| const data = _interopRequireDefault(require("convert-source-map")); | |
| _convertSourceMap = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _parser() { | |
| const data = require("@babel/parser"); | |
| _parser = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _codeFrame() { | |
| const data = require("@babel/code-frame"); | |
| _codeFrame = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _file = _interopRequireDefault(require("./file/file")); | |
| var _missingPluginHelper = _interopRequireDefault(require("./util/missing-plugin-helper")); | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const debug = (0, _debug().default)("babel:transform:file"); | |
| function normalizeFile(pluginPasses, options, code, ast) { | |
| code = `${code || ""}`; | |
| let inputMap = null; | |
| if (options.inputSourceMap !== false) { | |
| if (typeof options.inputSourceMap === "object") { | |
| inputMap = _convertSourceMap().default.fromObject(options.inputSourceMap); | |
| } | |
| if (!inputMap) { | |
| try { | |
| inputMap = _convertSourceMap().default.fromSource(code); | |
| if (inputMap) { | |
| code = _convertSourceMap().default.removeComments(code); | |
| } | |
| } catch (err) { | |
| debug("discarding unknown inline input sourcemap", err); | |
| code = _convertSourceMap().default.removeComments(code); | |
| } | |
| } | |
| if (!inputMap) { | |
| if (typeof options.filename === "string") { | |
| try { | |
| inputMap = _convertSourceMap().default.fromMapFileSource(code, _path().default.dirname(options.filename)); | |
| if (inputMap) { | |
| code = _convertSourceMap().default.removeMapFileComments(code); | |
| } | |
| } catch (err) { | |
| debug("discarding unknown file input sourcemap", err); | |
| code = _convertSourceMap().default.removeMapFileComments(code); | |
| } | |
| } else { | |
| debug("discarding un-loadable file input sourcemap"); | |
| code = _convertSourceMap().default.removeMapFileComments(code); | |
| } | |
| } | |
| } | |
| if (ast) { | |
| if (ast.type === "Program") { | |
| ast = t().file(ast, [], []); | |
| } else if (ast.type !== "File") { | |
| throw new Error("AST root must be a Program or File node"); | |
| } | |
| ast = (0, _cloneDeep().default)(ast); | |
| } else { | |
| ast = parser(pluginPasses, options, code); | |
| } | |
| return new _file.default(options, { | |
| code, | |
| ast, | |
| inputMap | |
| }); | |
| } | |
| function parser(pluginPasses, { | |
| parserOpts, | |
| highlightCode = true, | |
| filename = "unknown" | |
| }, code) { | |
| try { | |
| const results = []; | |
| for (const plugins of pluginPasses) { | |
| for (const plugin of plugins) { | |
| const { | |
| parserOverride | |
| } = plugin; | |
| if (parserOverride) { | |
| const ast = parserOverride(code, parserOpts, _parser().parse); | |
| if (ast !== undefined) results.push(ast); | |
| } | |
| } | |
| } | |
| if (results.length === 0) { | |
| return (0, _parser().parse)(code, parserOpts); | |
| } else if (results.length === 1) { | |
| if (typeof results[0].then === "function") { | |
| throw new Error(`You appear to be using an async codegen plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); | |
| } | |
| return results[0]; | |
| } | |
| throw new Error("More than one plugin attempted to override parsing."); | |
| } catch (err) { | |
| if (err.code === "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED") { | |
| err.message += "\nConsider renaming the file to '.mjs', or setting sourceType:module " + "or sourceType:unambiguous in your Babel config for this file."; | |
| } | |
| const { | |
| loc, | |
| missingPlugin | |
| } = err; | |
| if (loc) { | |
| const codeFrame = (0, _codeFrame().codeFrameColumns)(code, { | |
| start: { | |
| line: loc.line, | |
| column: loc.column + 1 | |
| } | |
| }, { | |
| highlightCode | |
| }); | |
| if (missingPlugin) { | |
| err.message = `${filename}: ` + (0, _missingPluginHelper.default)(missingPlugin[0], loc, codeFrame); | |
| } else { | |
| err.message = `${filename}: ${err.message}\n\n` + codeFrame; | |
| } | |
| err.code = "BABEL_PARSE_ERROR"; | |
| } | |
| throw err; | |
| } | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = normalizeOptions; | |
| function _path() { | |
| const data = _interopRequireDefault(require("path")); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function normalizeOptions(config) { | |
| const { | |
| filename, | |
| cwd, | |
| filenameRelative = typeof filename === "string" ? _path().default.relative(cwd, filename) : "unknown", | |
| sourceType = "module", | |
| inputSourceMap, | |
| sourceMaps = !!inputSourceMap, | |
| moduleRoot, | |
| sourceRoot = moduleRoot, | |
| sourceFileName = _path().default.basename(filenameRelative), | |
| comments = true, | |
| compact = "auto" | |
| } = config.options; | |
| const opts = config.options; | |
| const options = Object.assign({}, opts, { | |
| parserOpts: Object.assign({ | |
| sourceType: _path().default.extname(filenameRelative) === ".mjs" ? "module" : sourceType, | |
| sourceFileName: filename, | |
| plugins: [] | |
| }, opts.parserOpts), | |
| generatorOpts: Object.assign({ | |
| filename, | |
| auxiliaryCommentBefore: opts.auxiliaryCommentBefore, | |
| auxiliaryCommentAfter: opts.auxiliaryCommentAfter, | |
| retainLines: opts.retainLines, | |
| comments, | |
| shouldPrintComment: opts.shouldPrintComment, | |
| compact, | |
| minified: opts.minified, | |
| sourceMaps, | |
| sourceRoot, | |
| sourceFileName | |
| }, opts.generatorOpts) | |
| }); | |
| for (const plugins of config.passes) { | |
| for (const plugin of plugins) { | |
| if (plugin.manipulateOptions) { | |
| plugin.manipulateOptions(options, options.parserOpts); | |
| } | |
| } | |
| } | |
| return options; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| class PluginPass { | |
| constructor(file, key, options) { | |
| this._map = new Map(); | |
| this.key = key; | |
| this.file = file; | |
| this.opts = options || {}; | |
| this.cwd = file.opts.cwd; | |
| this.filename = file.opts.filename; | |
| } | |
| set(key, val) { | |
| this._map.set(key, val); | |
| } | |
| get(key) { | |
| return this._map.get(key); | |
| } | |
| availableHelper(name, versionRange) { | |
| return this.file.availableHelper(name, versionRange); | |
| } | |
| addHelper(name) { | |
| return this.file.addHelper(name); | |
| } | |
| addImport() { | |
| return this.file.addImport(); | |
| } | |
| getModuleName() { | |
| return this.file.getModuleName(); | |
| } | |
| buildCodeFrameError(node, msg, Error) { | |
| return this.file.buildCodeFrameError(node, msg, Error); | |
| } | |
| } | |
| exports.default = PluginPass; |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = generateMissingPluginMessage; | |
| const pluginNameMap = { | |
| classProperties: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-class-properties", | |
| url: "https://git.io/vb4yQ" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-class-properties", | |
| url: "https://git.io/vb4SL" | |
| } | |
| }, | |
| decorators: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-decorators", | |
| url: "https://git.io/vb4y9" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-decorators", | |
| url: "https://git.io/vb4ST" | |
| } | |
| }, | |
| doExpressions: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-do-expressions", | |
| url: "https://git.io/vb4yh" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-do-expressions", | |
| url: "https://git.io/vb4S3" | |
| } | |
| }, | |
| dynamicImport: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-dynamic-import", | |
| url: "https://git.io/vb4Sv" | |
| } | |
| }, | |
| exportDefaultFrom: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-export-default-from", | |
| url: "https://git.io/vb4SO" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-export-default-from", | |
| url: "https://git.io/vb4yH" | |
| } | |
| }, | |
| exportNamespaceFrom: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-export-namespace-from", | |
| url: "https://git.io/vb4Sf" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-export-namespace-from", | |
| url: "https://git.io/vb4SG" | |
| } | |
| }, | |
| flow: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-flow", | |
| url: "https://git.io/vb4yb" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-transform-flow-strip-types", | |
| url: "https://git.io/vb49g" | |
| } | |
| }, | |
| functionBind: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-function-bind", | |
| url: "https://git.io/vb4y7" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-function-bind", | |
| url: "https://git.io/vb4St" | |
| } | |
| }, | |
| functionSent: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-function-sent", | |
| url: "https://git.io/vb4yN" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-function-sent", | |
| url: "https://git.io/vb4SZ" | |
| } | |
| }, | |
| importMeta: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-import-meta", | |
| url: "https://git.io/vbKK6" | |
| } | |
| }, | |
| jsx: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-jsx", | |
| url: "https://git.io/vb4yA" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-transform-react-jsx", | |
| url: "https://git.io/vb4yd" | |
| } | |
| }, | |
| logicalAssignment: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-logical-assignment-operators", | |
| url: "https://git.io/vAlBp" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-logical-assignment-operators", | |
| url: "https://git.io/vAlRe" | |
| } | |
| }, | |
| nullishCoalescingOperator: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-nullish-coalescing-operator", | |
| url: "https://git.io/vb4yx" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-nullish-coalescing-operator", | |
| url: "https://git.io/vb4Se" | |
| } | |
| }, | |
| numericSeparator: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-numeric-separator", | |
| url: "https://git.io/vb4Sq" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-numeric-separator", | |
| url: "https://git.io/vb4yS" | |
| } | |
| }, | |
| optionalChaining: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-optional-chaining", | |
| url: "https://git.io/vb4Sc" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-optional-chaining", | |
| url: "https://git.io/vb4Sk" | |
| } | |
| }, | |
| pipelineOperator: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-pipeline-operator", | |
| url: "https://git.io/vb4yj" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-pipeline-operator", | |
| url: "https://git.io/vb4SU" | |
| } | |
| }, | |
| throwExpressions: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-throw-expressions", | |
| url: "https://git.io/vb4SJ" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-throw-expressions", | |
| url: "https://git.io/vb4yF" | |
| } | |
| }, | |
| typescript: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-typescript", | |
| url: "https://git.io/vb4SC" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-transform-typescript", | |
| url: "https://git.io/vb4Sm" | |
| } | |
| }, | |
| asyncGenerators: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-async-generators", | |
| url: "https://git.io/vb4SY" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-async-generator-functions", | |
| url: "https://git.io/vb4yp" | |
| } | |
| }, | |
| objectRestSpread: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-object-rest-spread", | |
| url: "https://git.io/vb4y5" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-object-rest-spread", | |
| url: "https://git.io/vb4Ss" | |
| } | |
| }, | |
| optionalCatchBinding: { | |
| syntax: { | |
| name: "@babel/plugin-syntax-optional-catch-binding", | |
| url: "https://git.io/vb4Sn" | |
| }, | |
| transform: { | |
| name: "@babel/plugin-proposal-optional-catch-binding", | |
| url: "https://git.io/vb4SI" | |
| } | |
| } | |
| }; | |
| const getNameURLCombination = ({ | |
| name, | |
| url | |
| }) => `${name} (${url})`; | |
| function generateMissingPluginMessage(missingPluginName, loc, codeFrame) { | |
| let helpMessage = `Support for the experimental syntax '${missingPluginName}' isn't currently enabled ` + `(${loc.line}:${loc.column + 1}):\n\n` + codeFrame; | |
| const pluginInfo = pluginNameMap[missingPluginName]; | |
| if (pluginInfo) { | |
| const { | |
| syntax: syntaxPlugin, | |
| transform: transformPlugin | |
| } = pluginInfo; | |
| if (syntaxPlugin) { | |
| if (transformPlugin) { | |
| const transformPluginInfo = getNameURLCombination(transformPlugin); | |
| helpMessage += `\n\nAdd ${transformPluginInfo} to the 'plugins' section of your Babel config ` + `to enable transformation.`; | |
| } else { | |
| const syntaxPluginInfo = getNameURLCombination(syntaxPlugin); | |
| helpMessage += `\n\nAdd ${syntaxPluginInfo} to the 'plugins' section of your Babel config ` + `to enable parsing.`; | |
| } | |
| } | |
| } | |
| return helpMessage; | |
| } |
| 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. |
| #!/usr/bin/env node | |
| const fs = require('fs') | |
| const path = require('path') | |
| const minimist = require('minimist') | |
| const pkg = require('../package.json') | |
| const JSON5 = require('./') | |
| const argv = minimist(process.argv.slice(2), { | |
| alias: { | |
| 'convert': 'c', | |
| 'space': 's', | |
| 'validate': 'v', | |
| 'out-file': 'o', | |
| 'version': 'V', | |
| 'help': 'h', | |
| }, | |
| boolean: [ | |
| 'convert', | |
| 'validate', | |
| 'version', | |
| 'help', | |
| ], | |
| string: [ | |
| 'space', | |
| 'out-file', | |
| ], | |
| }) | |
| if (argv.version) { | |
| version() | |
| } else if (argv.help) { | |
| usage() | |
| } else { | |
| const inFilename = argv._[0] | |
| let readStream | |
| if (inFilename) { | |
| readStream = fs.createReadStream(inFilename) | |
| } else { | |
| readStream = process.stdin | |
| } | |
| let json5 = '' | |
| readStream.on('data', data => { | |
| json5 += data | |
| }) | |
| readStream.on('end', () => { | |
| let space | |
| if (argv.space === 't' || argv.space === 'tab') { | |
| space = '\t' | |
| } else { | |
| space = Number(argv.space) | |
| } | |
| let value | |
| try { | |
| value = JSON5.parse(json5) | |
| if (!argv.validate) { | |
| const json = JSON.stringify(value, null, space) | |
| let writeStream | |
| // --convert is for backward compatibility with v0.5.1. If | |
| // specified with <file> and not --out-file, then a file with | |
| // the same name but with a .json extension will be written. | |
| if (argv.convert && inFilename && !argv.o) { | |
| const parsedFilename = path.parse(inFilename) | |
| const outFilename = path.format( | |
| Object.assign( | |
| parsedFilename, | |
| {base: path.basename(parsedFilename.base, parsedFilename.ext) + '.json'} | |
| ) | |
| ) | |
| writeStream = fs.createWriteStream(outFilename) | |
| } else if (argv.o) { | |
| writeStream = fs.createWriteStream(argv.o) | |
| } else { | |
| writeStream = process.stdout | |
| } | |
| writeStream.write(json) | |
| } | |
| } catch (err) { | |
| console.error(err.message) | |
| process.exit(1) | |
| } | |
| }) | |
| } | |
| function version () { | |
| console.log(pkg.version) | |
| } | |
| function usage () { | |
| console.log( | |
| ` | |
| Usage: json5 [options] <file> | |
| If <file> is not provided, then STDIN is used. | |
| Options: | |
| -s, --space The number of spaces to indent or 't' for tabs | |
| -o, --out-file [file] Output to the specified file, otherwise STDOUT | |
| -v, --validate Validate JSON5 but do not output JSON | |
| -V, --version Output the version number | |
| -h, --help Output usage information` | |
| ) | |
| } |
| #!/usr/bin/env node | |
| /* eslint no-var: 0 */ | |
| var parser = require(".."); | |
| var fs = require("fs"); | |
| var filename = process.argv[2]; | |
| if (!filename) { | |
| console.error("no filename specified"); | |
| process.exit(0); | |
| } | |
| var file = fs.readFileSync(filename, "utf8"); | |
| var ast = parser.parse(file); | |
| console.log(JSON.stringify(ast, null, " ")); |
| #!/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. | |
| var argv = process.argv.slice(2) | |
| , versions = [] | |
| , range = [] | |
| , gt = [] | |
| , lt = [] | |
| , eq = [] | |
| , inc = null | |
| , version = require("../package.json").version | |
| , loose = false | |
| , includePrerelease = false | |
| , coerce = false | |
| , identifier = undefined | |
| , semver = require("../semver") | |
| , reverse = false | |
| , options = {} | |
| main() | |
| function main () { | |
| if (!argv.length) return help() | |
| while (argv.length) { | |
| var a = argv.shift() | |
| var i = a.indexOf('=') | |
| if (i !== -1) { | |
| a = a.slice(0, i) | |
| argv.unshift(a.slice(i + 1)) | |
| } | |
| 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 "-h": case "--help": case "-?": | |
| return help() | |
| default: | |
| versions.push(a) | |
| break | |
| } | |
| } | |
| var options = { loose: loose, includePrerelease: includePrerelease } | |
| versions = versions.map(function (v) { | |
| return coerce ? (semver.coerce(v) || {version: v}).version : v | |
| }).filter(function (v) { | |
| return semver.valid(v) | |
| }) | |
| if (!versions.length) return fail() | |
| if (inc && (versions.length !== 1 || range.length)) | |
| return failInc() | |
| for (var i = 0, l = range.length; i < l ; i ++) { | |
| versions = versions.filter(function (v) { | |
| return semver.satisfies(v, range[i], options) | |
| }) | |
| if (!versions.length) return fail() | |
| } | |
| return success(versions) | |
| } | |
| function failInc () { | |
| console.error("--inc can only be used on a single version with no range") | |
| fail() | |
| } | |
| function fail () { process.exit(1) } | |
| function success () { | |
| var compare = reverse ? "rcompare" : "compare" | |
| versions.sort(function (a, b) { | |
| return semver[compare](a, b, options) | |
| }).map(function (v) { | |
| return semver.clean(v, options) | |
| }).map(function (v) { | |
| return inc ? semver.inc(v, inc, options, identifier) : v | |
| }).forEach(function (v,i,_) { console.log(v) }) | |
| } | |
| function help () { | |
| console.log(["SemVer " + version | |
| ,"" | |
| ,"A JavaScript implementation of the http://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)" | |
| ,"" | |
| ,"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." | |
| ].join("\n")) | |
| } |
DEBUG_HIDE_DATE env var (#486)component.jsonDate#toISOString() instead to Date#toUTCString() when output is not a TTY (#418)enabled flag (#465)enabled() updates existing debug instances, add destroy() function (#440)process.env.DEBUG (#431, @paulcbetts)export default syntax fix for IE8 Expected identifier errorwindow.debug export (#404, @tootallnate)DEBUG_FD environment variable (#405, @tootallnate)navigator undefined in Rhino (#376, @jochenberger)dist/ dir (#375, @freewil)JSON.stringify() errors (#195, Jovan Alleyne)localStorage saved values (#331, Levi Thomason)process (Nathan Rajlich)storage (#190, @stephenmathieson)distclean target (#189, @stephenmathieson)typeof to check for console existenceconsole.log truthiness (fix IE 8/9)bower.json to properly support bower installDEBUG_FD env variable supportconsole.info() log usagecolor: inheritlog() function over the global one (#119)removeItem() to clear localStoragecolors arraydist dirutil.inspect()JSON.stringify()consoleenable() method for nodejs. Closes #27.enabled flag to the node version [TooTallNate]debug.disable() to the CS variantdebug.enable('project:*') to browser variant [TooTallNate]| "use strict"; | |
| function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } | |
| function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } | |
| function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } | |
| function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } | |
| function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | |
| (function (f) { | |
| if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === "object" && typeof module !== "undefined") { | |
| module.exports = f(); | |
| } else if (typeof define === "function" && define.amd) { | |
| define([], f); | |
| } else { | |
| var g; | |
| if (typeof window !== "undefined") { | |
| g = window; | |
| } else if (typeof global !== "undefined") { | |
| g = global; | |
| } else if (typeof self !== "undefined") { | |
| g = self; | |
| } else { | |
| g = this; | |
| } | |
| g.debug = f(); | |
| } | |
| })(function () { | |
| var define, module, exports; | |
| return function () { | |
| function r(e, n, t) { | |
| function o(i, f) { | |
| if (!n[i]) { | |
| if (!e[i]) { | |
| var c = "function" == typeof require && require; | |
| if (!f && c) return c(i, !0); | |
| if (u) return u(i, !0); | |
| var a = new Error("Cannot find module '" + i + "'"); | |
| throw a.code = "MODULE_NOT_FOUND", a; | |
| } | |
| var p = n[i] = { | |
| exports: {} | |
| }; | |
| e[i][0].call(p.exports, function (r) { | |
| var n = e[i][1][r]; | |
| return o(n || r); | |
| }, p, p.exports, r, e, n, t); | |
| } | |
| return n[i].exports; | |
| } | |
| for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) { | |
| o(t[i]); | |
| } | |
| return o; | |
| } | |
| return r; | |
| }()({ | |
| 1: [function (require, module, exports) { | |
| /** | |
| * Helpers. | |
| */ | |
| var s = 1000; | |
| var m = s * 60; | |
| var h = m * 60; | |
| var d = h * 24; | |
| var w = d * 7; | |
| var y = d * 365.25; | |
| /** | |
| * Parse or format the given `val`. | |
| * | |
| * Options: | |
| * | |
| * - `long` verbose formatting [false] | |
| * | |
| * @param {String|Number} val | |
| * @param {Object} [options] | |
| * @throws {Error} throw an error if val is not a non-empty string or a number | |
| * @return {String|Number} | |
| * @api public | |
| */ | |
| module.exports = function (val, options) { | |
| options = options || {}; | |
| var type = _typeof(val); | |
| if (type === 'string' && val.length > 0) { | |
| return parse(val); | |
| } else if (type === 'number' && isNaN(val) === false) { | |
| return options.long ? fmtLong(val) : fmtShort(val); | |
| } | |
| throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val)); | |
| }; | |
| /** | |
| * Parse the given `str` and return milliseconds. | |
| * | |
| * @param {String} str | |
| * @return {Number} | |
| * @api private | |
| */ | |
| function parse(str) { | |
| str = String(str); | |
| if (str.length > 100) { | |
| return; | |
| } | |
| var match = /^((?:\d+)?\-?\d?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str); | |
| if (!match) { | |
| return; | |
| } | |
| var n = parseFloat(match[1]); | |
| var type = (match[2] || 'ms').toLowerCase(); | |
| switch (type) { | |
| case 'years': | |
| case 'year': | |
| case 'yrs': | |
| case 'yr': | |
| case 'y': | |
| return n * y; | |
| case 'weeks': | |
| case 'week': | |
| case 'w': | |
| return n * w; | |
| case 'days': | |
| case 'day': | |
| case 'd': | |
| return n * d; | |
| case 'hours': | |
| case 'hour': | |
| case 'hrs': | |
| case 'hr': | |
| case 'h': | |
| return n * h; | |
| case 'minutes': | |
| case 'minute': | |
| case 'mins': | |
| case 'min': | |
| case 'm': | |
| return n * m; | |
| case 'seconds': | |
| case 'second': | |
| case 'secs': | |
| case 'sec': | |
| case 's': | |
| return n * s; | |
| case 'milliseconds': | |
| case 'millisecond': | |
| case 'msecs': | |
| case 'msec': | |
| case 'ms': | |
| return n; | |
| default: | |
| return undefined; | |
| } | |
| } | |
| /** | |
| * Short format for `ms`. | |
| * | |
| * @param {Number} ms | |
| * @return {String} | |
| * @api private | |
| */ | |
| function fmtShort(ms) { | |
| var msAbs = Math.abs(ms); | |
| if (msAbs >= d) { | |
| return Math.round(ms / d) + 'd'; | |
| } | |
| if (msAbs >= h) { | |
| return Math.round(ms / h) + 'h'; | |
| } | |
| if (msAbs >= m) { | |
| return Math.round(ms / m) + 'm'; | |
| } | |
| if (msAbs >= s) { | |
| return Math.round(ms / s) + 's'; | |
| } | |
| return ms + 'ms'; | |
| } | |
| /** | |
| * Long format for `ms`. | |
| * | |
| * @param {Number} ms | |
| * @return {String} | |
| * @api private | |
| */ | |
| function fmtLong(ms) { | |
| var msAbs = Math.abs(ms); | |
| if (msAbs >= d) { | |
| return plural(ms, msAbs, d, 'day'); | |
| } | |
| if (msAbs >= h) { | |
| return plural(ms, msAbs, h, 'hour'); | |
| } | |
| if (msAbs >= m) { | |
| return plural(ms, msAbs, m, 'minute'); | |
| } | |
| if (msAbs >= s) { | |
| return plural(ms, msAbs, s, 'second'); | |
| } | |
| return ms + ' ms'; | |
| } | |
| /** | |
| * Pluralization helper. | |
| */ | |
| function plural(ms, msAbs, n, name) { | |
| var isPlural = msAbs >= n * 1.5; | |
| return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); | |
| } | |
| }, {}], | |
| 2: [function (require, module, exports) { | |
| // shim for using process in browser | |
| var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it | |
| // don't break things. But we need to wrap it in a try catch in case it is | |
| // wrapped in strict mode code which doesn't define any globals. It's inside a | |
| // function because try/catches deoptimize in certain engines. | |
| var cachedSetTimeout; | |
| var cachedClearTimeout; | |
| function defaultSetTimout() { | |
| throw new Error('setTimeout has not been defined'); | |
| } | |
| function defaultClearTimeout() { | |
| throw new Error('clearTimeout has not been defined'); | |
| } | |
| (function () { | |
| try { | |
| if (typeof setTimeout === 'function') { | |
| cachedSetTimeout = setTimeout; | |
| } else { | |
| cachedSetTimeout = defaultSetTimout; | |
| } | |
| } catch (e) { | |
| cachedSetTimeout = defaultSetTimout; | |
| } | |
| try { | |
| if (typeof clearTimeout === 'function') { | |
| cachedClearTimeout = clearTimeout; | |
| } else { | |
| cachedClearTimeout = defaultClearTimeout; | |
| } | |
| } catch (e) { | |
| cachedClearTimeout = defaultClearTimeout; | |
| } | |
| })(); | |
| function runTimeout(fun) { | |
| if (cachedSetTimeout === setTimeout) { | |
| //normal enviroments in sane situations | |
| return setTimeout(fun, 0); | |
| } // if setTimeout wasn't available but was latter defined | |
| if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { | |
| cachedSetTimeout = setTimeout; | |
| return setTimeout(fun, 0); | |
| } | |
| try { | |
| // when when somebody has screwed with setTimeout but no I.E. maddness | |
| return cachedSetTimeout(fun, 0); | |
| } catch (e) { | |
| try { | |
| // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally | |
| return cachedSetTimeout.call(null, fun, 0); | |
| } catch (e) { | |
| // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error | |
| return cachedSetTimeout.call(this, fun, 0); | |
| } | |
| } | |
| } | |
| function runClearTimeout(marker) { | |
| if (cachedClearTimeout === clearTimeout) { | |
| //normal enviroments in sane situations | |
| return clearTimeout(marker); | |
| } // if clearTimeout wasn't available but was latter defined | |
| if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { | |
| cachedClearTimeout = clearTimeout; | |
| return clearTimeout(marker); | |
| } | |
| try { | |
| // when when somebody has screwed with setTimeout but no I.E. maddness | |
| return cachedClearTimeout(marker); | |
| } catch (e) { | |
| try { | |
| // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally | |
| return cachedClearTimeout.call(null, marker); | |
| } catch (e) { | |
| // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. | |
| // Some versions of I.E. have different rules for clearTimeout vs setTimeout | |
| return cachedClearTimeout.call(this, marker); | |
| } | |
| } | |
| } | |
| var queue = []; | |
| var draining = false; | |
| var currentQueue; | |
| var queueIndex = -1; | |
| function cleanUpNextTick() { | |
| if (!draining || !currentQueue) { | |
| return; | |
| } | |
| draining = false; | |
| if (currentQueue.length) { | |
| queue = currentQueue.concat(queue); | |
| } else { | |
| queueIndex = -1; | |
| } | |
| if (queue.length) { | |
| drainQueue(); | |
| } | |
| } | |
| function drainQueue() { | |
| if (draining) { | |
| return; | |
| } | |
| var timeout = runTimeout(cleanUpNextTick); | |
| draining = true; | |
| var len = queue.length; | |
| while (len) { | |
| currentQueue = queue; | |
| queue = []; | |
| while (++queueIndex < len) { | |
| if (currentQueue) { | |
| currentQueue[queueIndex].run(); | |
| } | |
| } | |
| queueIndex = -1; | |
| len = queue.length; | |
| } | |
| currentQueue = null; | |
| draining = false; | |
| runClearTimeout(timeout); | |
| } | |
| process.nextTick = function (fun) { | |
| var args = new Array(arguments.length - 1); | |
| if (arguments.length > 1) { | |
| for (var i = 1; i < arguments.length; i++) { | |
| args[i - 1] = arguments[i]; | |
| } | |
| } | |
| queue.push(new Item(fun, args)); | |
| if (queue.length === 1 && !draining) { | |
| runTimeout(drainQueue); | |
| } | |
| }; // v8 likes predictible objects | |
| function Item(fun, array) { | |
| this.fun = fun; | |
| this.array = array; | |
| } | |
| Item.prototype.run = function () { | |
| this.fun.apply(null, this.array); | |
| }; | |
| process.title = 'browser'; | |
| process.browser = true; | |
| process.env = {}; | |
| process.argv = []; | |
| process.version = ''; // empty string to avoid regexp issues | |
| process.versions = {}; | |
| function noop() {} | |
| process.on = noop; | |
| process.addListener = noop; | |
| process.once = noop; | |
| process.off = noop; | |
| process.removeListener = noop; | |
| process.removeAllListeners = noop; | |
| process.emit = noop; | |
| process.prependListener = noop; | |
| process.prependOnceListener = noop; | |
| process.listeners = function (name) { | |
| return []; | |
| }; | |
| process.binding = function (name) { | |
| throw new Error('process.binding is not supported'); | |
| }; | |
| process.cwd = function () { | |
| return '/'; | |
| }; | |
| process.chdir = function (dir) { | |
| throw new Error('process.chdir is not supported'); | |
| }; | |
| process.umask = function () { | |
| return 0; | |
| }; | |
| }, {}], | |
| 3: [function (require, module, exports) { | |
| /** | |
| * This is the common logic for both the Node.js and web browser | |
| * implementations of `debug()`. | |
| */ | |
| function setup(env) { | |
| createDebug.debug = createDebug; | |
| createDebug.default = createDebug; | |
| createDebug.coerce = coerce; | |
| createDebug.disable = disable; | |
| createDebug.enable = enable; | |
| createDebug.enabled = enabled; | |
| createDebug.humanize = require('ms'); | |
| Object.keys(env).forEach(function (key) { | |
| createDebug[key] = env[key]; | |
| }); | |
| /** | |
| * Active `debug` instances. | |
| */ | |
| createDebug.instances = []; | |
| /** | |
| * The currently active debug mode names, and names to skip. | |
| */ | |
| createDebug.names = []; | |
| createDebug.skips = []; | |
| /** | |
| * Map of special "%n" handling functions, for the debug "format" argument. | |
| * | |
| * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". | |
| */ | |
| createDebug.formatters = {}; | |
| /** | |
| * Selects a color for a debug namespace | |
| * @param {String} namespace The namespace string for the for the debug instance to be colored | |
| * @return {Number|String} An ANSI color code for the given namespace | |
| * @api private | |
| */ | |
| function selectColor(namespace) { | |
| var hash = 0; | |
| for (var i = 0; i < namespace.length; i++) { | |
| hash = (hash << 5) - hash + namespace.charCodeAt(i); | |
| hash |= 0; // Convert to 32bit integer | |
| } | |
| return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; | |
| } | |
| createDebug.selectColor = selectColor; | |
| /** | |
| * Create a debugger with the given `namespace`. | |
| * | |
| * @param {String} namespace | |
| * @return {Function} | |
| * @api public | |
| */ | |
| function createDebug(namespace) { | |
| var prevTime; | |
| function debug() { | |
| for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { | |
| args[_key] = arguments[_key]; | |
| } | |
| // Disabled? | |
| if (!debug.enabled) { | |
| return; | |
| } | |
| var self = debug; // Set `diff` timestamp | |
| var curr = Number(new Date()); | |
| var ms = curr - (prevTime || curr); | |
| self.diff = ms; | |
| self.prev = prevTime; | |
| self.curr = curr; | |
| prevTime = curr; | |
| args[0] = createDebug.coerce(args[0]); | |
| if (typeof args[0] !== 'string') { | |
| // Anything else let's inspect with %O | |
| args.unshift('%O'); | |
| } // Apply any `formatters` transformations | |
| var index = 0; | |
| args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) { | |
| // If we encounter an escaped % then don't increase the array index | |
| if (match === '%%') { | |
| return match; | |
| } | |
| index++; | |
| var formatter = createDebug.formatters[format]; | |
| if (typeof formatter === 'function') { | |
| var val = args[index]; | |
| match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format` | |
| args.splice(index, 1); | |
| index--; | |
| } | |
| return match; | |
| }); // Apply env-specific formatting (colors, etc.) | |
| createDebug.formatArgs.call(self, args); | |
| var logFn = self.log || createDebug.log; | |
| logFn.apply(self, args); | |
| } | |
| debug.namespace = namespace; | |
| debug.enabled = createDebug.enabled(namespace); | |
| debug.useColors = createDebug.useColors(); | |
| debug.color = selectColor(namespace); | |
| debug.destroy = destroy; | |
| debug.extend = extend; // Debug.formatArgs = formatArgs; | |
| // debug.rawLog = rawLog; | |
| // env-specific initialization logic for debug instances | |
| if (typeof createDebug.init === 'function') { | |
| createDebug.init(debug); | |
| } | |
| createDebug.instances.push(debug); | |
| return debug; | |
| } | |
| function destroy() { | |
| var index = createDebug.instances.indexOf(this); | |
| if (index !== -1) { | |
| createDebug.instances.splice(index, 1); | |
| return true; | |
| } | |
| return false; | |
| } | |
| function extend(namespace, delimiter) { | |
| var newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); | |
| newDebug.log = this.log; | |
| return newDebug; | |
| } | |
| /** | |
| * Enables a debug mode by namespaces. This can include modes | |
| * separated by a colon and wildcards. | |
| * | |
| * @param {String} namespaces | |
| * @api public | |
| */ | |
| function enable(namespaces) { | |
| createDebug.save(namespaces); | |
| createDebug.names = []; | |
| createDebug.skips = []; | |
| var i; | |
| var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); | |
| var len = split.length; | |
| for (i = 0; i < len; i++) { | |
| if (!split[i]) { | |
| // ignore empty strings | |
| continue; | |
| } | |
| namespaces = split[i].replace(/\*/g, '.*?'); | |
| if (namespaces[0] === '-') { | |
| createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); | |
| } else { | |
| createDebug.names.push(new RegExp('^' + namespaces + '$')); | |
| } | |
| } | |
| for (i = 0; i < createDebug.instances.length; i++) { | |
| var instance = createDebug.instances[i]; | |
| instance.enabled = createDebug.enabled(instance.namespace); | |
| } | |
| } | |
| /** | |
| * Disable debug output. | |
| * | |
| * @return {String} namespaces | |
| * @api public | |
| */ | |
| function disable() { | |
| var namespaces = [].concat(_toConsumableArray(createDebug.names.map(toNamespace)), _toConsumableArray(createDebug.skips.map(toNamespace).map(function (namespace) { | |
| return '-' + namespace; | |
| }))).join(','); | |
| createDebug.enable(''); | |
| return namespaces; | |
| } | |
| /** | |
| * Returns true if the given mode name is enabled, false otherwise. | |
| * | |
| * @param {String} name | |
| * @return {Boolean} | |
| * @api public | |
| */ | |
| function enabled(name) { | |
| if (name[name.length - 1] === '*') { | |
| return true; | |
| } | |
| var i; | |
| var len; | |
| for (i = 0, len = createDebug.skips.length; i < len; i++) { | |
| if (createDebug.skips[i].test(name)) { | |
| return false; | |
| } | |
| } | |
| for (i = 0, len = createDebug.names.length; i < len; i++) { | |
| if (createDebug.names[i].test(name)) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| /** | |
| * Convert regexp to namespace | |
| * | |
| * @param {RegExp} regxep | |
| * @return {String} namespace | |
| * @api private | |
| */ | |
| function toNamespace(regexp) { | |
| return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, '*'); | |
| } | |
| /** | |
| * Coerce `val`. | |
| * | |
| * @param {Mixed} val | |
| * @return {Mixed} | |
| * @api private | |
| */ | |
| function coerce(val) { | |
| if (val instanceof Error) { | |
| return val.stack || val.message; | |
| } | |
| return val; | |
| } | |
| createDebug.enable(createDebug.load()); | |
| return createDebug; | |
| } | |
| module.exports = setup; | |
| }, { | |
| "ms": 1 | |
| }], | |
| 4: [function (require, module, exports) { | |
| (function (process) { | |
| /* eslint-env browser */ | |
| /** | |
| * This is the web browser implementation of `debug()`. | |
| */ | |
| exports.log = log; | |
| exports.formatArgs = formatArgs; | |
| exports.save = save; | |
| exports.load = load; | |
| exports.useColors = useColors; | |
| exports.storage = localstorage(); | |
| /** | |
| * Colors. | |
| */ | |
| exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33']; | |
| /** | |
| * Currently only WebKit-based Web Inspectors, Firefox >= v31, | |
| * and the Firebug extension (any Firefox version) are known | |
| * to support "%c" CSS customizations. | |
| * | |
| * TODO: add a `localStorage` variable to explicitly enable/disable colors | |
| */ | |
| // eslint-disable-next-line complexity | |
| function useColors() { | |
| // NB: In an Electron preload script, document will be defined but not fully | |
| // initialized. Since we know we're in Chrome, we'll just detect this case | |
| // explicitly | |
| if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { | |
| return true; | |
| } // Internet Explorer and Edge do not support colors. | |
| if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { | |
| return false; | |
| } // Is webkit? http://stackoverflow.com/a/16459606/376773 | |
| // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 | |
| return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 | |
| typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? | |
| // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages | |
| typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker | |
| typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); | |
| } | |
| /** | |
| * Colorize log arguments if enabled. | |
| * | |
| * @api public | |
| */ | |
| function formatArgs(args) { | |
| args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff); | |
| if (!this.useColors) { | |
| return; | |
| } | |
| var c = 'color: ' + this.color; | |
| args.splice(1, 0, c, 'color: inherit'); // The final "%c" is somewhat tricky, because there could be other | |
| // arguments passed either before or after the %c, so we need to | |
| // figure out the correct index to insert the CSS into | |
| var index = 0; | |
| var lastC = 0; | |
| args[0].replace(/%[a-zA-Z%]/g, function (match) { | |
| if (match === '%%') { | |
| return; | |
| } | |
| index++; | |
| if (match === '%c') { | |
| // We only are interested in the *last* %c | |
| // (the user may have provided their own) | |
| lastC = index; | |
| } | |
| }); | |
| args.splice(lastC, 0, c); | |
| } | |
| /** | |
| * Invokes `console.log()` when available. | |
| * No-op when `console.log` is not a "function". | |
| * | |
| * @api public | |
| */ | |
| function log() { | |
| var _console; | |
| // This hackery is required for IE8/9, where | |
| // the `console.log` function doesn't have 'apply' | |
| return (typeof console === "undefined" ? "undefined" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments); | |
| } | |
| /** | |
| * Save `namespaces`. | |
| * | |
| * @param {String} namespaces | |
| * @api private | |
| */ | |
| function save(namespaces) { | |
| try { | |
| if (namespaces) { | |
| exports.storage.setItem('debug', namespaces); | |
| } else { | |
| exports.storage.removeItem('debug'); | |
| } | |
| } catch (error) {// Swallow | |
| // XXX (@Qix-) should we be logging these? | |
| } | |
| } | |
| /** | |
| * Load `namespaces`. | |
| * | |
| * @return {String} returns the previously persisted debug modes | |
| * @api private | |
| */ | |
| function load() { | |
| var r; | |
| try { | |
| r = exports.storage.getItem('debug'); | |
| } catch (error) {} // Swallow | |
| // XXX (@Qix-) should we be logging these? | |
| // If debug isn't set in LS, and we're in Electron, try to load $DEBUG | |
| if (!r && typeof process !== 'undefined' && 'env' in process) { | |
| r = process.env.DEBUG; | |
| } | |
| return r; | |
| } | |
| /** | |
| * Localstorage attempts to return the localstorage. | |
| * | |
| * This is necessary because safari throws | |
| * when a user disables cookies/localstorage | |
| * and you attempt to access it. | |
| * | |
| * @return {LocalStorage} | |
| * @api private | |
| */ | |
| function localstorage() { | |
| try { | |
| // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context | |
| // The Browser also has localStorage in the global context. | |
| return localStorage; | |
| } catch (error) {// Swallow | |
| // XXX (@Qix-) should we be logging these? | |
| } | |
| } | |
| module.exports = require('./common')(exports); | |
| var formatters = module.exports.formatters; | |
| /** | |
| * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. | |
| */ | |
| formatters.j = function (v) { | |
| try { | |
| return JSON.stringify(v); | |
| } catch (error) { | |
| return '[UnexpectedJSONParseError]: ' + error.message; | |
| } | |
| }; | |
| }).call(this, require('_process')); | |
| }, { | |
| "./common": 3, | |
| "_process": 2 | |
| }] | |
| }, {}, [4])(4); | |
| }); |
| (The MIT License) | |
| Copyright (c) 2014 TJ Holowaychuk <[email protected]> | |
| 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. | |
| { | |
| "name": "debug", | |
| "version": "4.1.1", | |
| "repository": { | |
| "type": "git", | |
| "url": "git://github.com/visionmedia/debug.git" | |
| }, | |
| "description": "small debugging utility", | |
| "keywords": [ | |
| "debug", | |
| "log", | |
| "debugger" | |
| ], | |
| "files": [ | |
| "src", | |
| "dist/debug.js", | |
| "LICENSE", | |
| "README.md" | |
| ], | |
| "author": "TJ Holowaychuk <[email protected]>", | |
| "contributors": [ | |
| "Nathan Rajlich <[email protected]> (http://n8.io)", | |
| "Andrew Rhyne <[email protected]>" | |
| ], | |
| "license": "MIT", | |
| "scripts": { | |
| "lint": "xo", | |
| "test": "npm run test:node && npm run test:browser", | |
| "test:node": "istanbul cover _mocha -- test.js", | |
| "pretest:browser": "npm run build", | |
| "test:browser": "karma start --single-run", | |
| "prebuild:debug": "mkdir -p dist && browserify --standalone debug -o dist/debug.es6.js .", | |
| "build:debug": "babel -o dist/debug.js dist/debug.es6.js > dist/debug.js", | |
| "build:test": "babel -d dist test.js", | |
| "build": "npm run build:debug && npm run build:test", | |
| "clean": "rimraf dist coverage", | |
| "test:coverage": "cat ./coverage/lcov.info | coveralls" | |
| }, | |
| "dependencies": { | |
| "ms": "^2.1.1" | |
| }, | |
| "devDependencies": { | |
| "@babel/cli": "^7.0.0", | |
| "@babel/core": "^7.0.0", | |
| "@babel/preset-env": "^7.0.0", | |
| "browserify": "14.4.0", | |
| "chai": "^3.5.0", | |
| "concurrently": "^3.1.0", | |
| "coveralls": "^3.0.2", | |
| "istanbul": "^0.4.5", | |
| "karma": "^3.0.0", | |
| "karma-chai": "^0.1.0", | |
| "karma-mocha": "^1.3.0", | |
| "karma-phantomjs-launcher": "^1.0.2", | |
| "mocha": "^5.2.0", | |
| "mocha-lcov-reporter": "^1.2.0", | |
| "rimraf": "^2.5.4", | |
| "xo": "^0.23.0" | |
| }, | |
| "main": "./src/index.js", | |
| "browser": "./src/browser.js", | |
| "unpkg": "./dist/debug.js" | |
| } |
A tiny JavaScript debugging utility modelled after Node.js core's debugging technique. Works in Node.js and web browsers.
$ npm install debugdebug exposes a function; simply pass this function the name of your module, and it will return a decorated version of console.error for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole.
Example app.js:
var debug = require('debug')('http')
, http = require('http')
, name = 'My App';
// fake app
debug('booting %o', name);
http.createServer(function(req, res){
debug(req.method + ' ' + req.url);
res.end('hello\n');
}).listen(3000, function(){
debug('listening');
});
// fake worker of some kind
require('./worker');Example worker.js:
var a = require('debug')('worker:a')
, b = require('debug')('worker:b');
function work() {
a('doing lots of uninteresting work');
setTimeout(work, Math.random() * 1000);
}
work();
function workb() {
b('doing some work');
setTimeout(workb, Math.random() * 2000);
}
workb();The DEBUG environment variable is then used to enable these based on space or
comma-delimited names.
Here are some examples:
On Windows the environment variable is set using the set command.
set DEBUG=*,-not_thisExample:
set DEBUG=* & node app.jsPowerShell uses different syntax to set environment variables.
$env:DEBUG = "*,-not_this"Example:
$env:DEBUG='app';node app.jsThen, run the program to be debugged as usual.
npm script example:
"windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js",Every debug instance has a color generated for it based on its namespace name. This helps when visually parsing the debug output to identify which debug instance a debug line belongs to.
In Node.js, colors are enabled when stderr is a TTY. You also should install
the supports-color module alongside debug,
otherwise debug will only use a small handful of basic colors.
Colors are also enabled on "Web Inspectors" that understand the %c formatting
option. These are WebKit web inspectors, Firefox (since version
31)
and the Firebug plugin for Firefox (any version).
When actively developing an application it can be useful to see when the time spent between one debug() call and the next. Suppose for example you invoke debug() before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.
When stdout is not a TTY, Date#toISOString() is used, making it more useful for logging the debug information as shown below:
If you're using this in one or more of your libraries, you should use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you should prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output.
The * character may be used as a wildcard. Suppose for example your library has
debuggers named "connect:bodyParser", "connect:compress", "connect:session",
instead of listing all three with
DEBUG=connect:bodyParser,connect:compress,connect:session, you may simply do
DEBUG=connect:*, or to run everything using this module simply use DEBUG=*.
You can also exclude specific debuggers by prefixing them with a "-" character.
For example, DEBUG=*,-connect:* would include all debuggers except those
starting with "connect:".
When running through Node.js, you can set a few environment variables that will change the behavior of the debug logging:
| Name | Purpose |
|---|---|
DEBUG |
Enables/disables specific debugging namespaces. |
DEBUG_HIDE_DATE |
Hide date from debug output (non-TTY). |
DEBUG_COLORS |
Whether or not to use colors in the debug output. |
DEBUG_DEPTH |
Object inspection depth. |
DEBUG_SHOW_HIDDEN |
Shows hidden properties on inspected objects. |
Note: The environment variables beginning with DEBUG_ end up being
converted into an Options object that gets used with %o/%O formatters.
See the Node.js documentation for
util.inspect()
for the complete list.
Debug uses printf-style formatting. Below are the officially supported formatters:
| Formatter | Representation |
|---|---|
%O |
Pretty-print an Object on multiple lines. |
%o |
Pretty-print an Object all on a single line. |
%s |
String. |
%d |
Number (both integer and float). |
%j |
JSON. Replaced with the string '[Circular]' if the argument contains circular references. |
%% |
Single percent sign ('%'). This does not consume an argument. |
You can add custom formatters by extending the debug.formatters object.
For example, if you wanted to add support for rendering a Buffer as hex with
%h, you could do something like:
const createDebug = require('debug')
createDebug.formatters.h = (v) => {
return v.toString('hex')
}
// …elsewhere
const debug = createDebug('foo')
debug('this is hex: %h', new Buffer('hello world'))
// foo this is hex: 68656c6c6f20776f726c6421 +0msYou can build a browser-ready script using browserify, or just use the browserify-as-a-service build, if you don't want to build it yourself.
Debug's enable state is currently persisted by localStorage.
Consider the situation shown below where you have worker:a and worker:b,
and wish to debug both. You can enable this using localStorage.debug:
localStorage.debug = 'worker:*'And then refresh the page.
a = debug('worker:a');
b = debug('worker:b');
setInterval(function(){
a('doing some work');
}, 1000);
setInterval(function(){
b('doing some work');
}, 1200);By default debug will log to stderr, however this can be configured per-namespace by overriding the log method:
Example stdout.js:
var debug = require('debug');
var error = debug('app:error');
// by default stderr is used
error('goes to stderr!');
var log = debug('app:log');
// set this namespace to log via console.log
log.log = console.log.bind(console); // don't forget to bind to console!
log('goes to stdout');
error('still goes to stderr!');
// set all output to go via console.info
// overrides all per-namespace log settings
debug.log = console.info.bind(console);
error('now goes to stdout via console.info');
log('still goes to stdout, but via console.info now');You can simply extend debugger
const log = require('debug')('auth');
//creates new debug instance with extended namespace
const logSign = log.extend('sign');
const logLogin = log.extend('login');
log('hello'); // auth hello
logSign('hello'); //auth:sign hello
logLogin('hello'); //auth:login helloYou can also enable debug dynamically by calling the enable() method :
let debug = require('debug');
console.log(1, debug.enabled('test'));
debug.enable('test');
console.log(2, debug.enabled('test'));
debug.disable();
console.log(3, debug.enabled('test'));print :
1 false
2 true
3 false
Usage :
enable(namespaces)
namespaces can include modes separated by a colon and wildcards.
Note that calling enable() completely overrides previously set DEBUG variable :
$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))'
=> false
disable()
Will disable all namespaces. The functions returns the namespaces currently enabled (and skipped). This can be useful if you want to disable debugging temporarily without knowing what was enabled to begin with.
For example:
let debug = require('debug');
debug.enable('foo:*,-foo:bar');
let namespaces = debug.disable();
debug.enable(namespaces);Note: There is no guarantee that the string will be identical to the initial enable string, but semantically they will be identical.
After you've created a debug instance, you can determine whether or not it is
enabled by checking the enabled property:
const debug = require('debug')('http');
if (debug.enabled) {
// do stuff...
}You can also manually toggle this property to force the debug instance to be enabled or disabled.
Support us with a monthly donation and help us continue our activities. [Become a backer]
Become a sponsor and get your logo on our README on Github with a link to your site. [Become a sponsor]
(The MIT License)
Copyright (c) 2014-2017 TJ Holowaychuk <[email protected]>
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.
| /* eslint-env browser */ | |
| /** | |
| * This is the web browser implementation of `debug()`. | |
| */ | |
| exports.log = log; | |
| exports.formatArgs = formatArgs; | |
| exports.save = save; | |
| exports.load = load; | |
| exports.useColors = useColors; | |
| exports.storage = localstorage(); | |
| /** | |
| * Colors. | |
| */ | |
| exports.colors = [ | |
| '#0000CC', | |
| '#0000FF', | |
| '#0033CC', | |
| '#0033FF', | |
| '#0066CC', | |
| '#0066FF', | |
| '#0099CC', | |
| '#0099FF', | |
| '#00CC00', | |
| '#00CC33', | |
| '#00CC66', | |
| '#00CC99', | |
| '#00CCCC', | |
| '#00CCFF', | |
| '#3300CC', | |
| '#3300FF', | |
| '#3333CC', | |
| '#3333FF', | |
| '#3366CC', | |
| '#3366FF', | |
| '#3399CC', | |
| '#3399FF', | |
| '#33CC00', | |
| '#33CC33', | |
| '#33CC66', | |
| '#33CC99', | |
| '#33CCCC', | |
| '#33CCFF', | |
| '#6600CC', | |
| '#6600FF', | |
| '#6633CC', | |
| '#6633FF', | |
| '#66CC00', | |
| '#66CC33', | |
| '#9900CC', | |
| '#9900FF', | |
| '#9933CC', | |
| '#9933FF', | |
| '#99CC00', | |
| '#99CC33', | |
| '#CC0000', | |
| '#CC0033', | |
| '#CC0066', | |
| '#CC0099', | |
| '#CC00CC', | |
| '#CC00FF', | |
| '#CC3300', | |
| '#CC3333', | |
| '#CC3366', | |
| '#CC3399', | |
| '#CC33CC', | |
| '#CC33FF', | |
| '#CC6600', | |
| '#CC6633', | |
| '#CC9900', | |
| '#CC9933', | |
| '#CCCC00', | |
| '#CCCC33', | |
| '#FF0000', | |
| '#FF0033', | |
| '#FF0066', | |
| '#FF0099', | |
| '#FF00CC', | |
| '#FF00FF', | |
| '#FF3300', | |
| '#FF3333', | |
| '#FF3366', | |
| '#FF3399', | |
| '#FF33CC', | |
| '#FF33FF', | |
| '#FF6600', | |
| '#FF6633', | |
| '#FF9900', | |
| '#FF9933', | |
| '#FFCC00', | |
| '#FFCC33' | |
| ]; | |
| /** | |
| * Currently only WebKit-based Web Inspectors, Firefox >= v31, | |
| * and the Firebug extension (any Firefox version) are known | |
| * to support "%c" CSS customizations. | |
| * | |
| * TODO: add a `localStorage` variable to explicitly enable/disable colors | |
| */ | |
| // eslint-disable-next-line complexity | |
| function useColors() { | |
| // NB: In an Electron preload script, document will be defined but not fully | |
| // initialized. Since we know we're in Chrome, we'll just detect this case | |
| // explicitly | |
| if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { | |
| return true; | |
| } | |
| // Internet Explorer and Edge do not support colors. | |
| if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { | |
| return false; | |
| } | |
| // Is webkit? http://stackoverflow.com/a/16459606/376773 | |
| // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 | |
| return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || | |
| // Is firebug? http://stackoverflow.com/a/398120/376773 | |
| (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || | |
| // Is firefox >= v31? | |
| // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages | |
| (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || | |
| // Double check webkit in userAgent just in case we are in a worker | |
| (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); | |
| } | |
| /** | |
| * Colorize log arguments if enabled. | |
| * | |
| * @api public | |
| */ | |
| function formatArgs(args) { | |
| args[0] = (this.useColors ? '%c' : '') + | |
| this.namespace + | |
| (this.useColors ? ' %c' : ' ') + | |
| args[0] + | |
| (this.useColors ? '%c ' : ' ') + | |
| '+' + module.exports.humanize(this.diff); | |
| if (!this.useColors) { | |
| return; | |
| } | |
| const c = 'color: ' + this.color; | |
| args.splice(1, 0, c, 'color: inherit'); | |
| // The final "%c" is somewhat tricky, because there could be other | |
| // arguments passed either before or after the %c, so we need to | |
| // figure out the correct index to insert the CSS into | |
| let index = 0; | |
| let lastC = 0; | |
| args[0].replace(/%[a-zA-Z%]/g, match => { | |
| if (match === '%%') { | |
| return; | |
| } | |
| index++; | |
| if (match === '%c') { | |
| // We only are interested in the *last* %c | |
| // (the user may have provided their own) | |
| lastC = index; | |
| } | |
| }); | |
| args.splice(lastC, 0, c); | |
| } | |
| /** | |
| * Invokes `console.log()` when available. | |
| * No-op when `console.log` is not a "function". | |
| * | |
| * @api public | |
| */ | |
| function log(...args) { | |
| // This hackery is required for IE8/9, where | |
| // the `console.log` function doesn't have 'apply' | |
| return typeof console === 'object' && | |
| console.log && | |
| console.log(...args); | |
| } | |
| /** | |
| * Save `namespaces`. | |
| * | |
| * @param {String} namespaces | |
| * @api private | |
| */ | |
| function save(namespaces) { | |
| try { | |
| if (namespaces) { | |
| exports.storage.setItem('debug', namespaces); | |
| } else { | |
| exports.storage.removeItem('debug'); | |
| } | |
| } catch (error) { | |
| // Swallow | |
| // XXX (@Qix-) should we be logging these? | |
| } | |
| } | |
| /** | |
| * Load `namespaces`. | |
| * | |
| * @return {String} returns the previously persisted debug modes | |
| * @api private | |
| */ | |
| function load() { | |
| let r; | |
| try { | |
| r = exports.storage.getItem('debug'); | |
| } catch (error) { | |
| // Swallow | |
| // XXX (@Qix-) should we be logging these? | |
| } | |
| // If debug isn't set in LS, and we're in Electron, try to load $DEBUG | |
| if (!r && typeof process !== 'undefined' && 'env' in process) { | |
| r = process.env.DEBUG; | |
| } | |
| return r; | |
| } | |
| /** | |
| * Localstorage attempts to return the localstorage. | |
| * | |
| * This is necessary because safari throws | |
| * when a user disables cookies/localstorage | |
| * and you attempt to access it. | |
| * | |
| * @return {LocalStorage} | |
| * @api private | |
| */ | |
| function localstorage() { | |
| try { | |
| // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context | |
| // The Browser also has localStorage in the global context. | |
| return localStorage; | |
| } catch (error) { | |
| // Swallow | |
| // XXX (@Qix-) should we be logging these? | |
| } | |
| } | |
| module.exports = require('./common')(exports); | |
| const {formatters} = module.exports; | |
| /** | |
| * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. | |
| */ | |
| formatters.j = function (v) { | |
| try { | |
| return JSON.stringify(v); | |
| } catch (error) { | |
| return '[UnexpectedJSONParseError]: ' + error.message; | |
| } | |
| }; |
| /** | |
| * This is the common logic for both the Node.js and web browser | |
| * implementations of `debug()`. | |
| */ | |
| function setup(env) { | |
| createDebug.debug = createDebug; | |
| createDebug.default = createDebug; | |
| createDebug.coerce = coerce; | |
| createDebug.disable = disable; | |
| createDebug.enable = enable; | |
| createDebug.enabled = enabled; | |
| createDebug.humanize = require('ms'); | |
| Object.keys(env).forEach(key => { | |
| createDebug[key] = env[key]; | |
| }); | |
| /** | |
| * Active `debug` instances. | |
| */ | |
| createDebug.instances = []; | |
| /** | |
| * The currently active debug mode names, and names to skip. | |
| */ | |
| createDebug.names = []; | |
| createDebug.skips = []; | |
| /** | |
| * Map of special "%n" handling functions, for the debug "format" argument. | |
| * | |
| * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". | |
| */ | |
| createDebug.formatters = {}; | |
| /** | |
| * Selects a color for a debug namespace | |
| * @param {String} namespace The namespace string for the for the debug instance to be colored | |
| * @return {Number|String} An ANSI color code for the given namespace | |
| * @api private | |
| */ | |
| function selectColor(namespace) { | |
| let hash = 0; | |
| for (let i = 0; i < namespace.length; i++) { | |
| hash = ((hash << 5) - hash) + namespace.charCodeAt(i); | |
| hash |= 0; // Convert to 32bit integer | |
| } | |
| return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; | |
| } | |
| createDebug.selectColor = selectColor; | |
| /** | |
| * Create a debugger with the given `namespace`. | |
| * | |
| * @param {String} namespace | |
| * @return {Function} | |
| * @api public | |
| */ | |
| function createDebug(namespace) { | |
| let prevTime; | |
| function debug(...args) { | |
| // Disabled? | |
| if (!debug.enabled) { | |
| return; | |
| } | |
| const self = debug; | |
| // Set `diff` timestamp | |
| const curr = Number(new Date()); | |
| const ms = curr - (prevTime || curr); | |
| self.diff = ms; | |
| self.prev = prevTime; | |
| self.curr = curr; | |
| prevTime = curr; | |
| args[0] = createDebug.coerce(args[0]); | |
| if (typeof args[0] !== 'string') { | |
| // Anything else let's inspect with %O | |
| args.unshift('%O'); | |
| } | |
| // Apply any `formatters` transformations | |
| let index = 0; | |
| args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { | |
| // If we encounter an escaped % then don't increase the array index | |
| if (match === '%%') { | |
| return match; | |
| } | |
| index++; | |
| const formatter = createDebug.formatters[format]; | |
| if (typeof formatter === 'function') { | |
| const val = args[index]; | |
| match = formatter.call(self, val); | |
| // Now we need to remove `args[index]` since it's inlined in the `format` | |
| args.splice(index, 1); | |
| index--; | |
| } | |
| return match; | |
| }); | |
| // Apply env-specific formatting (colors, etc.) | |
| createDebug.formatArgs.call(self, args); | |
| const logFn = self.log || createDebug.log; | |
| logFn.apply(self, args); | |
| } | |
| debug.namespace = namespace; | |
| debug.enabled = createDebug.enabled(namespace); | |
| debug.useColors = createDebug.useColors(); | |
| debug.color = selectColor(namespace); | |
| debug.destroy = destroy; | |
| debug.extend = extend; | |
| // Debug.formatArgs = formatArgs; | |
| // debug.rawLog = rawLog; | |
| // env-specific initialization logic for debug instances | |
| if (typeof createDebug.init === 'function') { | |
| createDebug.init(debug); | |
| } | |
| createDebug.instances.push(debug); | |
| return debug; | |
| } | |
| function destroy() { | |
| const index = createDebug.instances.indexOf(this); | |
| if (index !== -1) { | |
| createDebug.instances.splice(index, 1); | |
| return true; | |
| } | |
| return false; | |
| } | |
| function extend(namespace, delimiter) { | |
| const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); | |
| newDebug.log = this.log; | |
| return newDebug; | |
| } | |
| /** | |
| * Enables a debug mode by namespaces. This can include modes | |
| * separated by a colon and wildcards. | |
| * | |
| * @param {String} namespaces | |
| * @api public | |
| */ | |
| function enable(namespaces) { | |
| createDebug.save(namespaces); | |
| createDebug.names = []; | |
| createDebug.skips = []; | |
| let i; | |
| const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); | |
| const len = split.length; | |
| for (i = 0; i < len; i++) { | |
| if (!split[i]) { | |
| // ignore empty strings | |
| continue; | |
| } | |
| namespaces = split[i].replace(/\*/g, '.*?'); | |
| if (namespaces[0] === '-') { | |
| createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); | |
| } else { | |
| createDebug.names.push(new RegExp('^' + namespaces + '$')); | |
| } | |
| } | |
| for (i = 0; i < createDebug.instances.length; i++) { | |
| const instance = createDebug.instances[i]; | |
| instance.enabled = createDebug.enabled(instance.namespace); | |
| } | |
| } | |
| /** | |
| * Disable debug output. | |
| * | |
| * @return {String} namespaces | |
| * @api public | |
| */ | |
| function disable() { | |
| const namespaces = [ | |
| ...createDebug.names.map(toNamespace), | |
| ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) | |
| ].join(','); | |
| createDebug.enable(''); | |
| return namespaces; | |
| } | |
| /** | |
| * Returns true if the given mode name is enabled, false otherwise. | |
| * | |
| * @param {String} name | |
| * @return {Boolean} | |
| * @api public | |
| */ | |
| function enabled(name) { | |
| if (name[name.length - 1] === '*') { | |
| return true; | |
| } | |
| let i; | |
| let len; | |
| for (i = 0, len = createDebug.skips.length; i < len; i++) { | |
| if (createDebug.skips[i].test(name)) { | |
| return false; | |
| } | |
| } | |
| for (i = 0, len = createDebug.names.length; i < len; i++) { | |
| if (createDebug.names[i].test(name)) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| /** | |
| * Convert regexp to namespace | |
| * | |
| * @param {RegExp} regxep | |
| * @return {String} namespace | |
| * @api private | |
| */ | |
| function toNamespace(regexp) { | |
| return regexp.toString() | |
| .substring(2, regexp.toString().length - 2) | |
| .replace(/\.\*\?$/, '*'); | |
| } | |
| /** | |
| * Coerce `val`. | |
| * | |
| * @param {Mixed} val | |
| * @return {Mixed} | |
| * @api private | |
| */ | |
| function coerce(val) { | |
| if (val instanceof Error) { | |
| return val.stack || val.message; | |
| } | |
| return val; | |
| } | |
| createDebug.enable(createDebug.load()); | |
| return createDebug; | |
| } | |
| module.exports = setup; |
| /** | |
| * Detect Electron renderer / nwjs process, which is node, but we should | |
| * treat as a browser. | |
| */ | |
| if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { | |
| module.exports = require('./browser.js'); | |
| } else { | |
| module.exports = require('./node.js'); | |
| } |
| /** | |
| * Module dependencies. | |
| */ | |
| const tty = require('tty'); | |
| const util = require('util'); | |
| /** | |
| * This is the Node.js implementation of `debug()`. | |
| */ | |
| exports.init = init; | |
| exports.log = log; | |
| exports.formatArgs = formatArgs; | |
| exports.save = save; | |
| exports.load = load; | |
| exports.useColors = useColors; | |
| /** | |
| * Colors. | |
| */ | |
| exports.colors = [6, 2, 3, 4, 5, 1]; | |
| try { | |
| // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) | |
| // eslint-disable-next-line import/no-extraneous-dependencies | |
| const supportsColor = require('supports-color'); | |
| if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { | |
| exports.colors = [ | |
| 20, | |
| 21, | |
| 26, | |
| 27, | |
| 32, | |
| 33, | |
| 38, | |
| 39, | |
| 40, | |
| 41, | |
| 42, | |
| 43, | |
| 44, | |
| 45, | |
| 56, | |
| 57, | |
| 62, | |
| 63, | |
| 68, | |
| 69, | |
| 74, | |
| 75, | |
| 76, | |
| 77, | |
| 78, | |
| 79, | |
| 80, | |
| 81, | |
| 92, | |
| 93, | |
| 98, | |
| 99, | |
| 112, | |
| 113, | |
| 128, | |
| 129, | |
| 134, | |
| 135, | |
| 148, | |
| 149, | |
| 160, | |
| 161, | |
| 162, | |
| 163, | |
| 164, | |
| 165, | |
| 166, | |
| 167, | |
| 168, | |
| 169, | |
| 170, | |
| 171, | |
| 172, | |
| 173, | |
| 178, | |
| 179, | |
| 184, | |
| 185, | |
| 196, | |
| 197, | |
| 198, | |
| 199, | |
| 200, | |
| 201, | |
| 202, | |
| 203, | |
| 204, | |
| 205, | |
| 206, | |
| 207, | |
| 208, | |
| 209, | |
| 214, | |
| 215, | |
| 220, | |
| 221 | |
| ]; | |
| } | |
| } catch (error) { | |
| // Swallow - we only care if `supports-color` is available; it doesn't have to be. | |
| } | |
| /** | |
| * Build up the default `inspectOpts` object from the environment variables. | |
| * | |
| * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js | |
| */ | |
| exports.inspectOpts = Object.keys(process.env).filter(key => { | |
| return /^debug_/i.test(key); | |
| }).reduce((obj, key) => { | |
| // Camel-case | |
| const prop = key | |
| .substring(6) | |
| .toLowerCase() | |
| .replace(/_([a-z])/g, (_, k) => { | |
| return k.toUpperCase(); | |
| }); | |
| // Coerce string value into JS value | |
| let val = process.env[key]; | |
| if (/^(yes|on|true|enabled)$/i.test(val)) { | |
| val = true; | |
| } else if (/^(no|off|false|disabled)$/i.test(val)) { | |
| val = false; | |
| } else if (val === 'null') { | |
| val = null; | |
| } else { | |
| val = Number(val); | |
| } | |
| obj[prop] = val; | |
| return obj; | |
| }, {}); | |
| /** | |
| * Is stdout a TTY? Colored output is enabled when `true`. | |
| */ | |
| function useColors() { | |
| return 'colors' in exports.inspectOpts ? | |
| Boolean(exports.inspectOpts.colors) : | |
| tty.isatty(process.stderr.fd); | |
| } | |
| /** | |
| * Adds ANSI color escape codes if enabled. | |
| * | |
| * @api public | |
| */ | |
| function formatArgs(args) { | |
| const {namespace: name, useColors} = this; | |
| if (useColors) { | |
| const c = this.color; | |
| const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); | |
| const prefix = ` ${colorCode};1m${name} \u001B[0m`; | |
| args[0] = prefix + args[0].split('\n').join('\n' + prefix); | |
| args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); | |
| } else { | |
| args[0] = getDate() + name + ' ' + args[0]; | |
| } | |
| } | |
| function getDate() { | |
| if (exports.inspectOpts.hideDate) { | |
| return ''; | |
| } | |
| return new Date().toISOString() + ' '; | |
| } | |
| /** | |
| * Invokes `util.format()` with the specified arguments and writes to stderr. | |
| */ | |
| function log(...args) { | |
| return process.stderr.write(util.format(...args) + '\n'); | |
| } | |
| /** | |
| * Save `namespaces`. | |
| * | |
| * @param {String} namespaces | |
| * @api private | |
| */ | |
| function save(namespaces) { | |
| if (namespaces) { | |
| process.env.DEBUG = namespaces; | |
| } else { | |
| // If you set a process.env field to null or undefined, it gets cast to the | |
| // string 'null' or 'undefined'. Just delete instead. | |
| delete process.env.DEBUG; | |
| } | |
| } | |
| /** | |
| * Load `namespaces`. | |
| * | |
| * @return {String} returns the previously persisted debug modes | |
| * @api private | |
| */ | |
| function load() { | |
| return process.env.DEBUG; | |
| } | |
| /** | |
| * Init logic for `debug` instances. | |
| * | |
| * Create a new `inspectOpts` object in case `useColors` is set | |
| * differently for a particular `debug` instance. | |
| */ | |
| function init(debug) { | |
| debug.inspectOpts = {}; | |
| const keys = Object.keys(exports.inspectOpts); | |
| for (let i = 0; i < keys.length; i++) { | |
| debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; | |
| } | |
| } | |
| module.exports = require('./common')(exports); | |
| const {formatters} = module.exports; | |
| /** | |
| * Map %o to `util.inspect()`, all on a single line. | |
| */ | |
| formatters.o = function (v) { | |
| this.inspectOpts.colors = this.useColors; | |
| return util.inspect(v, this.inspectOpts) | |
| .replace(/\s*\n\s*/g, ' '); | |
| }; | |
| /** | |
| * Map %O to `util.inspect()`, allowing multiple lines if needed. | |
| */ | |
| formatters.O = function (v) { | |
| this.inspectOpts.colors = this.useColors; | |
| return util.inspect(v, this.inspectOpts); | |
| }; |
index.mjs and index.min.mjs browser builds in the dist
directory support ES6 modules. (#187)dist directory support ES5. (#182)Major: JSON5 officially supports Node.js v6 and later. Support for Node.js v4 has been dropped. Since Node.js v6 supports ES5 features, the code has been rewritten in native ES5, and the dependence on Babel has been eliminated.
New: Support for Unicode 10 has been added.
New: The test framework has been migrated from Mocha to Tap.
New: The browser build at dist/index.js is no longer minified by default. A
minified version is available at dist/index.min.js. (#181)
Fix: The warning has been made clearer when line and paragraph separators are used in strings.
Fix: package.json5 has been restored, and it is automatically generated and
committed when the version is bumped. A new build-package NPM script has
been added to facilitate this.
This release includes a bug fix and minor change.
Fix: parse throws on unclosed objects and arrays.
New: package.json5 has been removed until an easier way to keep it in sync
with package.json is found.
This release includes major internal changes and public API enhancements.
Major: JSON5 officially supports Node.js v4 and later. Support for Node.js v0.10 and v0.12 have been dropped.
New: Unicode property names and Unicode escapes in property names are supported. (#1)
New: stringify outputs trailing commas in objects and arrays when a space
option is provided. (#66)
New: JSON5 allows line and paragraph separator characters (U+2028 and U+2029) in strings in order to be compatible with JSON. However, ES5 does not allow these characters in strings, so JSON5 gives a warning when they are parsed and escapes them when they are stringified. (#70)
New: stringify accepts an options object as its second argument. The
supported options are replacer, space, and a new quote option that
specifies the quote character used in strings. (#71)
New: The CLI supports STDIN and STDOUT and adds --out-file, --space, and
--validate options. See json5 --help for more information. (#72, #84,
and #108)
New: In addition to the white space characters space \t, \v, \f, \n,
\r, and \xA0, the additional white space characters \u2028, \u2029,
and all other characters in the Space Separator Unicode category are allowed.
New: In addition to the character escapes \', \", \\, \b, \f, \n,
\r, and \t, the additional character escapes \v and \0, hexadecimal
escapes like \x0F, and unnecessary escapes like \a are allowed in string
values and string property names.
New: stringify outputs strings with single quotes by default but
intelligently uses double quotes if there are more single quotes than double
quotes inside the string. (i.e. stringify('Stay here.') outputs
'Stay here.' while stringify('Let\'s go.') outputs "Let's go.")
New: When a character is not allowed in a string, stringify outputs a
character escape like \t when available, a hexadecimal escape like \x0F
when the Unicode code point is less than 256, or a Unicode character escape
like \u01FF, in that order.
New: stringify checks for a toJSON5 method on objects and, if it exists,
stringifies its return value instead of the object. toJSON5 overrides
toJSON if they both exist.
New: To require or import JSON5 files, use require('json5/lib/register')
or import 'json5/lib/register'. Previous versions used json5/lib/require,
which still exists for backward compatibility but is deprecated and will give
a warning.
New: To use JSON5 in browsers, use the file at dist/index.js or
https://unpkg.com/json5@^1.0.0.
Fix: stringify properly outputs Infinity and NaN. (#67)
Fix: isWord no longer becomes a property of JSON5 after calling
stringify. (#68 and #89)
Fix: stringify no longer throws when an object does not have a prototype.
(#154)
Fix: stringify properly handles the key argument of toJSON(key) methods.
toJSON5(key) follows this pattern.
Fix: stringify accepts Number and String objects as its space
argument.
Fix: In addition to a function, stringify also accepts an array of keys to
include in the output as its replacer argument. Numbers, Number objects,
and String objects will be converted to a string if they are given as array
values.
This release includes a minor fix for indentations when stringifying empty arrays.
This release includes major internal changes and public API enhancements.
Major: JSON5 officially supports Node.js v4 LTS and v5. Support for Node.js v0.6 and v0.8 have been dropped, while support for v0.10 and v0.12 remain.
Fix: YUI Compressor no longer fails when compressing json5.js. (#97)
New: parse and the CLI provide line and column numbers when displaying error
messages. (#101; awesome work by @amb26.)
Note that v0.3.0 was tagged, but never published to npm, so this v0.4.0 changelog entry includes v0.3.0 features.
This is a massive release that adds stringify support, among other things.
Major: JSON5.stringify() now exists!
This method is analogous to the native JSON.stringify();
it just avoids quoting keys where possible.
See the usage documentation for more.
(#32; huge thanks and props @aeisenberg!)
New: NaN and -NaN are now allowed number literals.
(#30; thanks @rowanhill.)
New: Duplicate object keys are now allowed; the last value is used. This is the same behavior as JSON. (#57; thanks @jordanbtucker.)
Fix: Properly handle various whitespace and newline cases now. E.g. JSON5 now properly supports escaped CR and CRLF newlines in strings, and JSON5 now accepts the same whitespace as JSON (stricter than ES5). (#58, #60, and #63; thanks @jordanbtucker.)
New: Negative hexadecimal numbers (e.g. -0xC8) are allowed again.
(They were disallowed in v0.2.0; see below.)
It turns out they are valid in ES5, so JSON5 supports them now too.
(#36; thanks @jordanbtucker!)
This release fixes some bugs and adds some more utility features to help you express data more easily:
Breaking: Negative hexadecimal numbers (e.g. -0xC8) are rejected now.
While V8 (e.g. Chrome and Node) supported them, it turns out they're invalid
in ES5. This has been fixed in V8 (and by extension, Chrome
and Node), so JSON5 officially rejects them now, too. (#36)
New: Trailing decimal points in decimal numbers are allowed again. (They were disallowed in v0.1.0; see below.) They're allowed by ES5, and differentiating between integers and floats may make sense on some platforms. (#16; thanks @Midar.)
New: Infinity and -Infinity are now allowed number literals.
(#30; thanks @pepkin88.)
New: Plus signs (+) in front of numbers are now allowed, since it can
be helpful in some contexts to explicitly mark numbers as positive.
(E.g. when a property represents changes or deltas.)
Fix: unescaped newlines in strings are rejected now. (#24; thanks @Midar.)
This release tightens JSON5 support and adds helpful utility features:
New: Support hexadecimal numbers. (Thanks @MaxNanasy.)
Fix: Reject octal numbers properly now. Previously, they were accepted but improperly parsed as base-10 numbers. (Thanks @MaxNanasy.)
Breaking: Reject "noctal" numbers now (base-10 numbers that begin with a leading zero). These are disallowed by both JSON5 and JSON, as well as by ES5's strict mode. (Thanks @MaxNanasy.)
New: Support leading decimal points in decimal numbers. (Thanks @MaxNanasy.)
Breaking: Reject trailing decimal points in decimal numbers now. These are disallowed by both JSON5 and JSON. (Thanks @MaxNanasy.)
Breaking: Reject omitted elements in arrays now. These are disallowed by both JSON5 and JSON.
Fix: Throw proper SyntaxError instances on errors now.
New: Add Node.js require() hook. Register via json5/lib/require.
New: Add Node.js json5 executable to compile JSON5 files to JSON.
This was the first implementation of this JSON5 parser.
Support unquoted object keys, including reserved words. Unicode characters and escape sequences sequences aren't yet supported.
Support single-quoted strings.
Support multi-line strings.
Support trailing commas in arrays and objects.
Support comments, both inline and block.
Let's consider this to be Douglas Crockford's original json_parse.js — a parser for the regular JSON format.
| (function (global, factory) { | |
| typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : | |
| typeof define === 'function' && define.amd ? define(factory) : | |
| (global.JSON5 = factory()); | |
| }(this, (function () { 'use strict'; | |
| function createCommonjsModule(fn, module) { | |
| return module = { exports: {} }, fn(module, module.exports), module.exports; | |
| } | |
| var _global = createCommonjsModule(function (module) { | |
| // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 | |
| var global = module.exports = typeof window != 'undefined' && window.Math == Math | |
| ? window : typeof self != 'undefined' && self.Math == Math ? self | |
| // eslint-disable-next-line no-new-func | |
| : Function('return this')(); | |
| if (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef | |
| }); | |
| var _core = createCommonjsModule(function (module) { | |
| var core = module.exports = { version: '2.5.7' }; | |
| if (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef | |
| }); | |
| var _core_1 = _core.version; | |
| var _isObject = function (it) { | |
| return typeof it === 'object' ? it !== null : typeof it === 'function'; | |
| }; | |
| var _anObject = function (it) { | |
| if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); } | |
| return it; | |
| }; | |
| var _fails = function (exec) { | |
| try { | |
| return !!exec(); | |
| } catch (e) { | |
| return true; | |
| } | |
| }; | |
| // Thank's IE8 for his funny defineProperty | |
| var _descriptors = !_fails(function () { | |
| return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; | |
| }); | |
| var document = _global.document; | |
| // typeof document.createElement is 'object' in old IE | |
| var is = _isObject(document) && _isObject(document.createElement); | |
| var _domCreate = function (it) { | |
| return is ? document.createElement(it) : {}; | |
| }; | |
| var _ie8DomDefine = !_descriptors && !_fails(function () { | |
| return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7; | |
| }); | |
| // 7.1.1 ToPrimitive(input [, PreferredType]) | |
| // instead of the ES6 spec version, we didn't implement @@toPrimitive case | |
| // and the second argument - flag - preferred type is a string | |
| var _toPrimitive = function (it, S) { | |
| if (!_isObject(it)) { return it; } | |
| var fn, val; | |
| if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; } | |
| if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; } | |
| if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; } | |
| throw TypeError("Can't convert object to primitive value"); | |
| }; | |
| var dP = Object.defineProperty; | |
| var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) { | |
| _anObject(O); | |
| P = _toPrimitive(P, true); | |
| _anObject(Attributes); | |
| if (_ie8DomDefine) { try { | |
| return dP(O, P, Attributes); | |
| } catch (e) { /* empty */ } } | |
| if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); } | |
| if ('value' in Attributes) { O[P] = Attributes.value; } | |
| return O; | |
| }; | |
| var _objectDp = { | |
| f: f | |
| }; | |
| var _propertyDesc = function (bitmap, value) { | |
| return { | |
| enumerable: !(bitmap & 1), | |
| configurable: !(bitmap & 2), | |
| writable: !(bitmap & 4), | |
| value: value | |
| }; | |
| }; | |
| var _hide = _descriptors ? function (object, key, value) { | |
| return _objectDp.f(object, key, _propertyDesc(1, value)); | |
| } : function (object, key, value) { | |
| object[key] = value; | |
| return object; | |
| }; | |
| var hasOwnProperty = {}.hasOwnProperty; | |
| var _has = function (it, key) { | |
| return hasOwnProperty.call(it, key); | |
| }; | |
| var id = 0; | |
| var px = Math.random(); | |
| var _uid = function (key) { | |
| return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); | |
| }; | |
| var _redefine = createCommonjsModule(function (module) { | |
| var SRC = _uid('src'); | |
| var TO_STRING = 'toString'; | |
| var $toString = Function[TO_STRING]; | |
| var TPL = ('' + $toString).split(TO_STRING); | |
| _core.inspectSource = function (it) { | |
| return $toString.call(it); | |
| }; | |
| (module.exports = function (O, key, val, safe) { | |
| var isFunction = typeof val == 'function'; | |
| if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); } | |
| if (O[key] === val) { return; } | |
| if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); } | |
| if (O === _global) { | |
| O[key] = val; | |
| } else if (!safe) { | |
| delete O[key]; | |
| _hide(O, key, val); | |
| } else if (O[key]) { | |
| O[key] = val; | |
| } else { | |
| _hide(O, key, val); | |
| } | |
| // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative | |
| })(Function.prototype, TO_STRING, function toString() { | |
| return typeof this == 'function' && this[SRC] || $toString.call(this); | |
| }); | |
| }); | |
| var _aFunction = function (it) { | |
| if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); } | |
| return it; | |
| }; | |
| // optional / simple context binding | |
| var _ctx = function (fn, that, length) { | |
| _aFunction(fn); | |
| if (that === undefined) { return fn; } | |
| switch (length) { | |
| case 1: return function (a) { | |
| return fn.call(that, a); | |
| }; | |
| case 2: return function (a, b) { | |
| return fn.call(that, a, b); | |
| }; | |
| case 3: return function (a, b, c) { | |
| return fn.call(that, a, b, c); | |
| }; | |
| } | |
| return function (/* ...args */) { | |
| return fn.apply(that, arguments); | |
| }; | |
| }; | |
| var PROTOTYPE = 'prototype'; | |
| var $export = function (type, name, source) { | |
| var IS_FORCED = type & $export.F; | |
| var IS_GLOBAL = type & $export.G; | |
| var IS_STATIC = type & $export.S; | |
| var IS_PROTO = type & $export.P; | |
| var IS_BIND = type & $export.B; | |
| var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE]; | |
| var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {}); | |
| var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); | |
| var key, own, out, exp; | |
| if (IS_GLOBAL) { source = name; } | |
| for (key in source) { | |
| // contains in native | |
| own = !IS_FORCED && target && target[key] !== undefined; | |
| // export native or passed | |
| out = (own ? target : source)[key]; | |
| // bind timers to global for call from export context | |
| exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out; | |
| // extend global | |
| if (target) { _redefine(target, key, out, type & $export.U); } | |
| // export | |
| if (exports[key] != out) { _hide(exports, key, exp); } | |
| if (IS_PROTO && expProto[key] != out) { expProto[key] = out; } | |
| } | |
| }; | |
| _global.core = _core; | |
| // type bitmap | |
| $export.F = 1; // forced | |
| $export.G = 2; // global | |
| $export.S = 4; // static | |
| $export.P = 8; // proto | |
| $export.B = 16; // bind | |
| $export.W = 32; // wrap | |
| $export.U = 64; // safe | |
| $export.R = 128; // real proto method for `library` | |
| var _export = $export; | |
| // 7.1.4 ToInteger | |
| var ceil = Math.ceil; | |
| var floor = Math.floor; | |
| var _toInteger = function (it) { | |
| return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); | |
| }; | |
| // 7.2.1 RequireObjectCoercible(argument) | |
| var _defined = function (it) { | |
| if (it == undefined) { throw TypeError("Can't call method on " + it); } | |
| return it; | |
| }; | |
| // true -> String#at | |
| // false -> String#codePointAt | |
| var _stringAt = function (TO_STRING) { | |
| return function (that, pos) { | |
| var s = String(_defined(that)); | |
| var i = _toInteger(pos); | |
| var l = s.length; | |
| var a, b; | |
| if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; } | |
| a = s.charCodeAt(i); | |
| return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff | |
| ? TO_STRING ? s.charAt(i) : a | |
| : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; | |
| }; | |
| }; | |
| var $at = _stringAt(false); | |
| _export(_export.P, 'String', { | |
| // 21.1.3.3 String.prototype.codePointAt(pos) | |
| codePointAt: function codePointAt(pos) { | |
| return $at(this, pos); | |
| } | |
| }); | |
| var codePointAt = _core.String.codePointAt; | |
| var max = Math.max; | |
| var min = Math.min; | |
| var _toAbsoluteIndex = function (index, length) { | |
| index = _toInteger(index); | |
| return index < 0 ? max(index + length, 0) : min(index, length); | |
| }; | |
| var fromCharCode = String.fromCharCode; | |
| var $fromCodePoint = String.fromCodePoint; | |
| // length should be 1, old FF problem | |
| _export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { | |
| // 21.1.2.2 String.fromCodePoint(...codePoints) | |
| fromCodePoint: function fromCodePoint(x) { | |
| var arguments$1 = arguments; | |
| // eslint-disable-line no-unused-vars | |
| var res = []; | |
| var aLen = arguments.length; | |
| var i = 0; | |
| var code; | |
| while (aLen > i) { | |
| code = +arguments$1[i++]; | |
| if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); } | |
| res.push(code < 0x10000 | |
| ? fromCharCode(code) | |
| : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00) | |
| ); | |
| } return res.join(''); | |
| } | |
| }); | |
| var fromCodePoint = _core.String.fromCodePoint; | |
| // This is a generated file. Do not edit. | |
| var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; | |
| var ID_Start = /[\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\u0561-\u0587\u05D0-\u05EA\u05F0-\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\u08A0-\u08B4\u08B6-\u08BD\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\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\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\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\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-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\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\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\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\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\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-\uAB65\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]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; | |
| var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\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\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\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\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; | |
| var unicode = { | |
| Space_Separator: Space_Separator, | |
| ID_Start: ID_Start, | |
| ID_Continue: ID_Continue | |
| }; | |
| var util = { | |
| isSpaceSeparator: function isSpaceSeparator (c) { | |
| return unicode.Space_Separator.test(c) | |
| }, | |
| isIdStartChar: function isIdStartChar (c) { | |
| return ( | |
| (c >= 'a' && c <= 'z') || | |
| (c >= 'A' && c <= 'Z') || | |
| (c === '$') || (c === '_') || | |
| unicode.ID_Start.test(c) | |
| ) | |
| }, | |
| isIdContinueChar: function isIdContinueChar (c) { | |
| return ( | |
| (c >= 'a' && c <= 'z') || | |
| (c >= 'A' && c <= 'Z') || | |
| (c >= '0' && c <= '9') || | |
| (c === '$') || (c === '_') || | |
| (c === '\u200C') || (c === '\u200D') || | |
| unicode.ID_Continue.test(c) | |
| ) | |
| }, | |
| isDigit: function isDigit (c) { | |
| return /[0-9]/.test(c) | |
| }, | |
| isHexDigit: function isHexDigit (c) { | |
| return /[0-9A-Fa-f]/.test(c) | |
| }, | |
| }; | |
| var source; | |
| var parseState; | |
| var stack; | |
| var pos; | |
| var line; | |
| var column; | |
| var token; | |
| var key; | |
| var root; | |
| var parse = function parse (text, reviver) { | |
| source = String(text); | |
| parseState = 'start'; | |
| stack = []; | |
| pos = 0; | |
| line = 1; | |
| column = 0; | |
| token = undefined; | |
| key = undefined; | |
| root = undefined; | |
| do { | |
| token = lex(); | |
| // This code is unreachable. | |
| // if (!parseStates[parseState]) { | |
| // throw invalidParseState() | |
| // } | |
| parseStates[parseState](); | |
| } while (token.type !== 'eof') | |
| if (typeof reviver === 'function') { | |
| return internalize({'': root}, '', reviver) | |
| } | |
| return root | |
| }; | |
| function internalize (holder, name, reviver) { | |
| var value = holder[name]; | |
| if (value != null && typeof value === 'object') { | |
| for (var key in value) { | |
| var replacement = internalize(value, key, reviver); | |
| if (replacement === undefined) { | |
| delete value[key]; | |
| } else { | |
| value[key] = replacement; | |
| } | |
| } | |
| } | |
| return reviver.call(holder, name, value) | |
| } | |
| var lexState; | |
| var buffer; | |
| var doubleQuote; | |
| var sign; | |
| var c; | |
| function lex () { | |
| lexState = 'default'; | |
| buffer = ''; | |
| doubleQuote = false; | |
| sign = 1; | |
| for (;;) { | |
| c = peek(); | |
| // This code is unreachable. | |
| // if (!lexStates[lexState]) { | |
| // throw invalidLexState(lexState) | |
| // } | |
| var token = lexStates[lexState](); | |
| if (token) { | |
| return token | |
| } | |
| } | |
| } | |
| function peek () { | |
| if (source[pos]) { | |
| return String.fromCodePoint(source.codePointAt(pos)) | |
| } | |
| } | |
| function read () { | |
| var c = peek(); | |
| if (c === '\n') { | |
| line++; | |
| column = 0; | |
| } else if (c) { | |
| column += c.length; | |
| } else { | |
| column++; | |
| } | |
| if (c) { | |
| pos += c.length; | |
| } | |
| return c | |
| } | |
| var lexStates = { | |
| default: function default$1 () { | |
| switch (c) { | |
| case '\t': | |
| case '\v': | |
| case '\f': | |
| case ' ': | |
| case '\u00A0': | |
| case '\uFEFF': | |
| case '\n': | |
| case '\r': | |
| case '\u2028': | |
| case '\u2029': | |
| read(); | |
| return | |
| case '/': | |
| read(); | |
| lexState = 'comment'; | |
| return | |
| case undefined: | |
| read(); | |
| return newToken('eof') | |
| } | |
| if (util.isSpaceSeparator(c)) { | |
| read(); | |
| return | |
| } | |
| // This code is unreachable. | |
| // if (!lexStates[parseState]) { | |
| // throw invalidLexState(parseState) | |
| // } | |
| return lexStates[parseState]() | |
| }, | |
| comment: function comment () { | |
| switch (c) { | |
| case '*': | |
| read(); | |
| lexState = 'multiLineComment'; | |
| return | |
| case '/': | |
| read(); | |
| lexState = 'singleLineComment'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| multiLineComment: function multiLineComment () { | |
| switch (c) { | |
| case '*': | |
| read(); | |
| lexState = 'multiLineCommentAsterisk'; | |
| return | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| read(); | |
| }, | |
| multiLineCommentAsterisk: function multiLineCommentAsterisk () { | |
| switch (c) { | |
| case '*': | |
| read(); | |
| return | |
| case '/': | |
| read(); | |
| lexState = 'default'; | |
| return | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| read(); | |
| lexState = 'multiLineComment'; | |
| }, | |
| singleLineComment: function singleLineComment () { | |
| switch (c) { | |
| case '\n': | |
| case '\r': | |
| case '\u2028': | |
| case '\u2029': | |
| read(); | |
| lexState = 'default'; | |
| return | |
| case undefined: | |
| read(); | |
| return newToken('eof') | |
| } | |
| read(); | |
| }, | |
| value: function value () { | |
| switch (c) { | |
| case '{': | |
| case '[': | |
| return newToken('punctuator', read()) | |
| case 'n': | |
| read(); | |
| literal('ull'); | |
| return newToken('null', null) | |
| case 't': | |
| read(); | |
| literal('rue'); | |
| return newToken('boolean', true) | |
| case 'f': | |
| read(); | |
| literal('alse'); | |
| return newToken('boolean', false) | |
| case '-': | |
| case '+': | |
| if (read() === '-') { | |
| sign = -1; | |
| } | |
| lexState = 'sign'; | |
| return | |
| case '.': | |
| buffer = read(); | |
| lexState = 'decimalPointLeading'; | |
| return | |
| case '0': | |
| buffer = read(); | |
| lexState = 'zero'; | |
| return | |
| case '1': | |
| case '2': | |
| case '3': | |
| case '4': | |
| case '5': | |
| case '6': | |
| case '7': | |
| case '8': | |
| case '9': | |
| buffer = read(); | |
| lexState = 'decimalInteger'; | |
| return | |
| case 'I': | |
| read(); | |
| literal('nfinity'); | |
| return newToken('numeric', Infinity) | |
| case 'N': | |
| read(); | |
| literal('aN'); | |
| return newToken('numeric', NaN) | |
| case '"': | |
| case "'": | |
| doubleQuote = (read() === '"'); | |
| buffer = ''; | |
| lexState = 'string'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| identifierNameStartEscape: function identifierNameStartEscape () { | |
| if (c !== 'u') { | |
| throw invalidChar(read()) | |
| } | |
| read(); | |
| var u = unicodeEscape(); | |
| switch (u) { | |
| case '$': | |
| case '_': | |
| break | |
| default: | |
| if (!util.isIdStartChar(u)) { | |
| throw invalidIdentifier() | |
| } | |
| break | |
| } | |
| buffer += u; | |
| lexState = 'identifierName'; | |
| }, | |
| identifierName: function identifierName () { | |
| switch (c) { | |
| case '$': | |
| case '_': | |
| case '\u200C': | |
| case '\u200D': | |
| buffer += read(); | |
| return | |
| case '\\': | |
| read(); | |
| lexState = 'identifierNameEscape'; | |
| return | |
| } | |
| if (util.isIdContinueChar(c)) { | |
| buffer += read(); | |
| return | |
| } | |
| return newToken('identifier', buffer) | |
| }, | |
| identifierNameEscape: function identifierNameEscape () { | |
| if (c !== 'u') { | |
| throw invalidChar(read()) | |
| } | |
| read(); | |
| var u = unicodeEscape(); | |
| switch (u) { | |
| case '$': | |
| case '_': | |
| case '\u200C': | |
| case '\u200D': | |
| break | |
| default: | |
| if (!util.isIdContinueChar(u)) { | |
| throw invalidIdentifier() | |
| } | |
| break | |
| } | |
| buffer += u; | |
| lexState = 'identifierName'; | |
| }, | |
| sign: function sign$1 () { | |
| switch (c) { | |
| case '.': | |
| buffer = read(); | |
| lexState = 'decimalPointLeading'; | |
| return | |
| case '0': | |
| buffer = read(); | |
| lexState = 'zero'; | |
| return | |
| case '1': | |
| case '2': | |
| case '3': | |
| case '4': | |
| case '5': | |
| case '6': | |
| case '7': | |
| case '8': | |
| case '9': | |
| buffer = read(); | |
| lexState = 'decimalInteger'; | |
| return | |
| case 'I': | |
| read(); | |
| literal('nfinity'); | |
| return newToken('numeric', sign * Infinity) | |
| case 'N': | |
| read(); | |
| literal('aN'); | |
| return newToken('numeric', NaN) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| zero: function zero () { | |
| switch (c) { | |
| case '.': | |
| buffer += read(); | |
| lexState = 'decimalPoint'; | |
| return | |
| case 'e': | |
| case 'E': | |
| buffer += read(); | |
| lexState = 'decimalExponent'; | |
| return | |
| case 'x': | |
| case 'X': | |
| buffer += read(); | |
| lexState = 'hexadecimal'; | |
| return | |
| } | |
| return newToken('numeric', sign * 0) | |
| }, | |
| decimalInteger: function decimalInteger () { | |
| switch (c) { | |
| case '.': | |
| buffer += read(); | |
| lexState = 'decimalPoint'; | |
| return | |
| case 'e': | |
| case 'E': | |
| buffer += read(); | |
| lexState = 'decimalExponent'; | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| decimalPointLeading: function decimalPointLeading () { | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| lexState = 'decimalFraction'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| decimalPoint: function decimalPoint () { | |
| switch (c) { | |
| case 'e': | |
| case 'E': | |
| buffer += read(); | |
| lexState = 'decimalExponent'; | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| lexState = 'decimalFraction'; | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| decimalFraction: function decimalFraction () { | |
| switch (c) { | |
| case 'e': | |
| case 'E': | |
| buffer += read(); | |
| lexState = 'decimalExponent'; | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| decimalExponent: function decimalExponent () { | |
| switch (c) { | |
| case '+': | |
| case '-': | |
| buffer += read(); | |
| lexState = 'decimalExponentSign'; | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| lexState = 'decimalExponentInteger'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| decimalExponentSign: function decimalExponentSign () { | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| lexState = 'decimalExponentInteger'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| decimalExponentInteger: function decimalExponentInteger () { | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| hexadecimal: function hexadecimal () { | |
| if (util.isHexDigit(c)) { | |
| buffer += read(); | |
| lexState = 'hexadecimalInteger'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| hexadecimalInteger: function hexadecimalInteger () { | |
| if (util.isHexDigit(c)) { | |
| buffer += read(); | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| string: function string () { | |
| switch (c) { | |
| case '\\': | |
| read(); | |
| buffer += escape(); | |
| return | |
| case '"': | |
| if (doubleQuote) { | |
| read(); | |
| return newToken('string', buffer) | |
| } | |
| buffer += read(); | |
| return | |
| case "'": | |
| if (!doubleQuote) { | |
| read(); | |
| return newToken('string', buffer) | |
| } | |
| buffer += read(); | |
| return | |
| case '\n': | |
| case '\r': | |
| throw invalidChar(read()) | |
| case '\u2028': | |
| case '\u2029': | |
| separatorChar(c); | |
| break | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| buffer += read(); | |
| }, | |
| start: function start () { | |
| switch (c) { | |
| case '{': | |
| case '[': | |
| return newToken('punctuator', read()) | |
| // This code is unreachable since the default lexState handles eof. | |
| // case undefined: | |
| // return newToken('eof') | |
| } | |
| lexState = 'value'; | |
| }, | |
| beforePropertyName: function beforePropertyName () { | |
| switch (c) { | |
| case '$': | |
| case '_': | |
| buffer = read(); | |
| lexState = 'identifierName'; | |
| return | |
| case '\\': | |
| read(); | |
| lexState = 'identifierNameStartEscape'; | |
| return | |
| case '}': | |
| return newToken('punctuator', read()) | |
| case '"': | |
| case "'": | |
| doubleQuote = (read() === '"'); | |
| lexState = 'string'; | |
| return | |
| } | |
| if (util.isIdStartChar(c)) { | |
| buffer += read(); | |
| lexState = 'identifierName'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| afterPropertyName: function afterPropertyName () { | |
| if (c === ':') { | |
| return newToken('punctuator', read()) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| beforePropertyValue: function beforePropertyValue () { | |
| lexState = 'value'; | |
| }, | |
| afterPropertyValue: function afterPropertyValue () { | |
| switch (c) { | |
| case ',': | |
| case '}': | |
| return newToken('punctuator', read()) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| beforeArrayValue: function beforeArrayValue () { | |
| if (c === ']') { | |
| return newToken('punctuator', read()) | |
| } | |
| lexState = 'value'; | |
| }, | |
| afterArrayValue: function afterArrayValue () { | |
| switch (c) { | |
| case ',': | |
| case ']': | |
| return newToken('punctuator', read()) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| end: function end () { | |
| // This code is unreachable since it's handled by the default lexState. | |
| // if (c === undefined) { | |
| // read() | |
| // return newToken('eof') | |
| // } | |
| throw invalidChar(read()) | |
| }, | |
| }; | |
| function newToken (type, value) { | |
| return { | |
| type: type, | |
| value: value, | |
| line: line, | |
| column: column, | |
| } | |
| } | |
| function literal (s) { | |
| for (var i = 0, list = s; i < list.length; i += 1) { | |
| var c = list[i]; | |
| var p = peek(); | |
| if (p !== c) { | |
| throw invalidChar(read()) | |
| } | |
| read(); | |
| } | |
| } | |
| function escape () { | |
| var c = peek(); | |
| switch (c) { | |
| case 'b': | |
| read(); | |
| return '\b' | |
| case 'f': | |
| read(); | |
| return '\f' | |
| case 'n': | |
| read(); | |
| return '\n' | |
| case 'r': | |
| read(); | |
| return '\r' | |
| case 't': | |
| read(); | |
| return '\t' | |
| case 'v': | |
| read(); | |
| return '\v' | |
| case '0': | |
| read(); | |
| if (util.isDigit(peek())) { | |
| throw invalidChar(read()) | |
| } | |
| return '\0' | |
| case 'x': | |
| read(); | |
| return hexEscape() | |
| case 'u': | |
| read(); | |
| return unicodeEscape() | |
| case '\n': | |
| case '\u2028': | |
| case '\u2029': | |
| read(); | |
| return '' | |
| case '\r': | |
| read(); | |
| if (peek() === '\n') { | |
| read(); | |
| } | |
| return '' | |
| case '1': | |
| case '2': | |
| case '3': | |
| case '4': | |
| case '5': | |
| case '6': | |
| case '7': | |
| case '8': | |
| case '9': | |
| throw invalidChar(read()) | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| return read() | |
| } | |
| function hexEscape () { | |
| var buffer = ''; | |
| var c = peek(); | |
| if (!util.isHexDigit(c)) { | |
| throw invalidChar(read()) | |
| } | |
| buffer += read(); | |
| c = peek(); | |
| if (!util.isHexDigit(c)) { | |
| throw invalidChar(read()) | |
| } | |
| buffer += read(); | |
| return String.fromCodePoint(parseInt(buffer, 16)) | |
| } | |
| function unicodeEscape () { | |
| var buffer = ''; | |
| var count = 4; | |
| while (count-- > 0) { | |
| var c = peek(); | |
| if (!util.isHexDigit(c)) { | |
| throw invalidChar(read()) | |
| } | |
| buffer += read(); | |
| } | |
| return String.fromCodePoint(parseInt(buffer, 16)) | |
| } | |
| var parseStates = { | |
| start: function start () { | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| push(); | |
| }, | |
| beforePropertyName: function beforePropertyName () { | |
| switch (token.type) { | |
| case 'identifier': | |
| case 'string': | |
| key = token.value; | |
| parseState = 'afterPropertyName'; | |
| return | |
| case 'punctuator': | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.value !== '}') { | |
| // throw invalidToken() | |
| // } | |
| pop(); | |
| return | |
| case 'eof': | |
| throw invalidEOF() | |
| } | |
| // This code is unreachable since it's handled by the lexState. | |
| // throw invalidToken() | |
| }, | |
| afterPropertyName: function afterPropertyName () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'punctuator' || token.value !== ':') { | |
| // throw invalidToken() | |
| // } | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| parseState = 'beforePropertyValue'; | |
| }, | |
| beforePropertyValue: function beforePropertyValue () { | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| push(); | |
| }, | |
| beforeArrayValue: function beforeArrayValue () { | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| if (token.type === 'punctuator' && token.value === ']') { | |
| pop(); | |
| return | |
| } | |
| push(); | |
| }, | |
| afterPropertyValue: function afterPropertyValue () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'punctuator') { | |
| // throw invalidToken() | |
| // } | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| switch (token.value) { | |
| case ',': | |
| parseState = 'beforePropertyName'; | |
| return | |
| case '}': | |
| pop(); | |
| } | |
| // This code is unreachable since it's handled by the lexState. | |
| // throw invalidToken() | |
| }, | |
| afterArrayValue: function afterArrayValue () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'punctuator') { | |
| // throw invalidToken() | |
| // } | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| switch (token.value) { | |
| case ',': | |
| parseState = 'beforeArrayValue'; | |
| return | |
| case ']': | |
| pop(); | |
| } | |
| // This code is unreachable since it's handled by the lexState. | |
| // throw invalidToken() | |
| }, | |
| end: function end () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'eof') { | |
| // throw invalidToken() | |
| // } | |
| }, | |
| }; | |
| function push () { | |
| var value; | |
| switch (token.type) { | |
| case 'punctuator': | |
| switch (token.value) { | |
| case '{': | |
| value = {}; | |
| break | |
| case '[': | |
| value = []; | |
| break | |
| } | |
| break | |
| case 'null': | |
| case 'boolean': | |
| case 'numeric': | |
| case 'string': | |
| value = token.value; | |
| break | |
| // This code is unreachable. | |
| // default: | |
| // throw invalidToken() | |
| } | |
| if (root === undefined) { | |
| root = value; | |
| } else { | |
| var parent = stack[stack.length - 1]; | |
| if (Array.isArray(parent)) { | |
| parent.push(value); | |
| } else { | |
| parent[key] = value; | |
| } | |
| } | |
| if (value !== null && typeof value === 'object') { | |
| stack.push(value); | |
| if (Array.isArray(value)) { | |
| parseState = 'beforeArrayValue'; | |
| } else { | |
| parseState = 'beforePropertyName'; | |
| } | |
| } else { | |
| var current = stack[stack.length - 1]; | |
| if (current == null) { | |
| parseState = 'end'; | |
| } else if (Array.isArray(current)) { | |
| parseState = 'afterArrayValue'; | |
| } else { | |
| parseState = 'afterPropertyValue'; | |
| } | |
| } | |
| } | |
| function pop () { | |
| stack.pop(); | |
| var current = stack[stack.length - 1]; | |
| if (current == null) { | |
| parseState = 'end'; | |
| } else if (Array.isArray(current)) { | |
| parseState = 'afterArrayValue'; | |
| } else { | |
| parseState = 'afterPropertyValue'; | |
| } | |
| } | |
| // This code is unreachable. | |
| // function invalidParseState () { | |
| // return new Error(`JSON5: invalid parse state '${parseState}'`) | |
| // } | |
| // This code is unreachable. | |
| // function invalidLexState (state) { | |
| // return new Error(`JSON5: invalid lex state '${state}'`) | |
| // } | |
| function invalidChar (c) { | |
| if (c === undefined) { | |
| return syntaxError(("JSON5: invalid end of input at " + line + ":" + column)) | |
| } | |
| return syntaxError(("JSON5: invalid character '" + (formatChar(c)) + "' at " + line + ":" + column)) | |
| } | |
| function invalidEOF () { | |
| return syntaxError(("JSON5: invalid end of input at " + line + ":" + column)) | |
| } | |
| // This code is unreachable. | |
| // function invalidToken () { | |
| // if (token.type === 'eof') { | |
| // return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) | |
| // } | |
| // const c = String.fromCodePoint(token.value.codePointAt(0)) | |
| // return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) | |
| // } | |
| function invalidIdentifier () { | |
| column -= 5; | |
| return syntaxError(("JSON5: invalid identifier character at " + line + ":" + column)) | |
| } | |
| function separatorChar (c) { | |
| console.warn(("JSON5: '" + (formatChar(c)) + "' in strings is not valid ECMAScript; consider escaping")); | |
| } | |
| function formatChar (c) { | |
| var replacements = { | |
| "'": "\\'", | |
| '"': '\\"', | |
| '\\': '\\\\', | |
| '\b': '\\b', | |
| '\f': '\\f', | |
| '\n': '\\n', | |
| '\r': '\\r', | |
| '\t': '\\t', | |
| '\v': '\\v', | |
| '\0': '\\0', | |
| '\u2028': '\\u2028', | |
| '\u2029': '\\u2029', | |
| }; | |
| if (replacements[c]) { | |
| return replacements[c] | |
| } | |
| if (c < ' ') { | |
| var hexString = c.charCodeAt(0).toString(16); | |
| return '\\x' + ('00' + hexString).substring(hexString.length) | |
| } | |
| return c | |
| } | |
| function syntaxError (message) { | |
| var err = new SyntaxError(message); | |
| err.lineNumber = line; | |
| err.columnNumber = column; | |
| return err | |
| } | |
| var stringify = function stringify (value, replacer, space) { | |
| var stack = []; | |
| var indent = ''; | |
| var propertyList; | |
| var replacerFunc; | |
| var gap = ''; | |
| var quote; | |
| if ( | |
| replacer != null && | |
| typeof replacer === 'object' && | |
| !Array.isArray(replacer) | |
| ) { | |
| space = replacer.space; | |
| quote = replacer.quote; | |
| replacer = replacer.replacer; | |
| } | |
| if (typeof replacer === 'function') { | |
| replacerFunc = replacer; | |
| } else if (Array.isArray(replacer)) { | |
| propertyList = []; | |
| for (var i = 0, list = replacer; i < list.length; i += 1) { | |
| var v = list[i]; | |
| var item = (void 0); | |
| if (typeof v === 'string') { | |
| item = v; | |
| } else if ( | |
| typeof v === 'number' || | |
| v instanceof String || | |
| v instanceof Number | |
| ) { | |
| item = String(v); | |
| } | |
| if (item !== undefined && propertyList.indexOf(item) < 0) { | |
| propertyList.push(item); | |
| } | |
| } | |
| } | |
| if (space instanceof Number) { | |
| space = Number(space); | |
| } else if (space instanceof String) { | |
| space = String(space); | |
| } | |
| if (typeof space === 'number') { | |
| if (space > 0) { | |
| space = Math.min(10, Math.floor(space)); | |
| gap = ' '.substr(0, space); | |
| } | |
| } else if (typeof space === 'string') { | |
| gap = space.substr(0, 10); | |
| } | |
| return serializeProperty('', {'': value}) | |
| function serializeProperty (key, holder) { | |
| var value = holder[key]; | |
| if (value != null) { | |
| if (typeof value.toJSON5 === 'function') { | |
| value = value.toJSON5(key); | |
| } else if (typeof value.toJSON === 'function') { | |
| value = value.toJSON(key); | |
| } | |
| } | |
| if (replacerFunc) { | |
| value = replacerFunc.call(holder, key, value); | |
| } | |
| if (value instanceof Number) { | |
| value = Number(value); | |
| } else if (value instanceof String) { | |
| value = String(value); | |
| } else if (value instanceof Boolean) { | |
| value = value.valueOf(); | |
| } | |
| switch (value) { | |
| case null: return 'null' | |
| case true: return 'true' | |
| case false: return 'false' | |
| } | |
| if (typeof value === 'string') { | |
| return quoteString(value, false) | |
| } | |
| if (typeof value === 'number') { | |
| return String(value) | |
| } | |
| if (typeof value === 'object') { | |
| return Array.isArray(value) ? serializeArray(value) : serializeObject(value) | |
| } | |
| return undefined | |
| } | |
| function quoteString (value) { | |
| var quotes = { | |
| "'": 0.1, | |
| '"': 0.2, | |
| }; | |
| var replacements = { | |
| "'": "\\'", | |
| '"': '\\"', | |
| '\\': '\\\\', | |
| '\b': '\\b', | |
| '\f': '\\f', | |
| '\n': '\\n', | |
| '\r': '\\r', | |
| '\t': '\\t', | |
| '\v': '\\v', | |
| '\0': '\\0', | |
| '\u2028': '\\u2028', | |
| '\u2029': '\\u2029', | |
| }; | |
| var product = ''; | |
| for (var i = 0, list = value; i < list.length; i += 1) { | |
| var c = list[i]; | |
| switch (c) { | |
| case "'": | |
| case '"': | |
| quotes[c]++; | |
| product += c; | |
| continue | |
| } | |
| if (replacements[c]) { | |
| product += replacements[c]; | |
| continue | |
| } | |
| if (c < ' ') { | |
| var hexString = c.charCodeAt(0).toString(16); | |
| product += '\\x' + ('00' + hexString).substring(hexString.length); | |
| continue | |
| } | |
| product += c; | |
| } | |
| var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; }); | |
| product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]); | |
| return quoteChar + product + quoteChar | |
| } | |
| function serializeObject (value) { | |
| if (stack.indexOf(value) >= 0) { | |
| throw TypeError('Converting circular structure to JSON5') | |
| } | |
| stack.push(value); | |
| var stepback = indent; | |
| indent = indent + gap; | |
| var keys = propertyList || Object.keys(value); | |
| var partial = []; | |
| for (var i = 0, list = keys; i < list.length; i += 1) { | |
| var key = list[i]; | |
| var propertyString = serializeProperty(key, value); | |
| if (propertyString !== undefined) { | |
| var member = serializeKey(key) + ':'; | |
| if (gap !== '') { | |
| member += ' '; | |
| } | |
| member += propertyString; | |
| partial.push(member); | |
| } | |
| } | |
| var final; | |
| if (partial.length === 0) { | |
| final = '{}'; | |
| } else { | |
| var properties; | |
| if (gap === '') { | |
| properties = partial.join(','); | |
| final = '{' + properties + '}'; | |
| } else { | |
| var separator = ',\n' + indent; | |
| properties = partial.join(separator); | |
| final = '{\n' + indent + properties + ',\n' + stepback + '}'; | |
| } | |
| } | |
| stack.pop(); | |
| indent = stepback; | |
| return final | |
| } | |
| function serializeKey (key) { | |
| if (key.length === 0) { | |
| return quoteString(key, true) | |
| } | |
| var firstChar = String.fromCodePoint(key.codePointAt(0)); | |
| if (!util.isIdStartChar(firstChar)) { | |
| return quoteString(key, true) | |
| } | |
| for (var i = firstChar.length; i < key.length; i++) { | |
| if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { | |
| return quoteString(key, true) | |
| } | |
| } | |
| return key | |
| } | |
| function serializeArray (value) { | |
| if (stack.indexOf(value) >= 0) { | |
| throw TypeError('Converting circular structure to JSON5') | |
| } | |
| stack.push(value); | |
| var stepback = indent; | |
| indent = indent + gap; | |
| var partial = []; | |
| for (var i = 0; i < value.length; i++) { | |
| var propertyString = serializeProperty(String(i), value); | |
| partial.push((propertyString !== undefined) ? propertyString : 'null'); | |
| } | |
| var final; | |
| if (partial.length === 0) { | |
| final = '[]'; | |
| } else { | |
| if (gap === '') { | |
| var properties = partial.join(','); | |
| final = '[' + properties + ']'; | |
| } else { | |
| var separator = ',\n' + indent; | |
| var properties$1 = partial.join(separator); | |
| final = '[\n' + indent + properties$1 + ',\n' + stepback + ']'; | |
| } | |
| } | |
| stack.pop(); | |
| indent = stepback; | |
| return final | |
| } | |
| }; | |
| var JSON5 = { | |
| parse: parse, | |
| stringify: stringify, | |
| }; | |
| var lib = JSON5; | |
| var es5 = lib; | |
| return es5; | |
| }))); |
| !function(u,D){"object"==typeof exports&&"undefined"!=typeof module?module.exports=D():"function"==typeof define&&define.amd?define(D):u.JSON5=D()}(this,function(){"use strict";function u(u,D){return u(D={exports:{}},D.exports),D.exports}var D=u(function(u){var D=u.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=D)}),e=u(function(u){var D=u.exports={version:"2.5.7"};"number"==typeof __e&&(__e=D)}),t=(e.version,function(u){return"object"==typeof u?null!==u:"function"==typeof u}),r=function(u){if(!t(u))throw TypeError(u+" is not an object!");return u},F=function(u){try{return!!u()}catch(u){return!0}},n=!F(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),C=D.document,A=t(C)&&t(C.createElement),E=!n&&!F(function(){return 7!=Object.defineProperty((u="div",A?C.createElement(u):{}),"a",{get:function(){return 7}}).a;var u}),i=Object.defineProperty,o={f:n?Object.defineProperty:function(u,D,e){if(r(u),D=function(u,D){if(!t(u))return u;var e,r;if(D&&"function"==typeof(e=u.toString)&&!t(r=e.call(u)))return r;if("function"==typeof(e=u.valueOf)&&!t(r=e.call(u)))return r;if(!D&&"function"==typeof(e=u.toString)&&!t(r=e.call(u)))return r;throw TypeError("Can't convert object to primitive value")}(D,!0),r(e),E)try{return i(u,D,e)}catch(u){}if("get"in e||"set"in e)throw TypeError("Accessors not supported!");return"value"in e&&(u[D]=e.value),u}},a=n?function(u,D,e){return o.f(u,D,function(u,D){return{enumerable:!(1&u),configurable:!(2&u),writable:!(4&u),value:D}}(1,e))}:function(u,D,e){return u[D]=e,u},c={}.hasOwnProperty,B=function(u,D){return c.call(u,D)},s=0,f=Math.random(),l=u(function(u){var t,r="Symbol(".concat(void 0===(t="src")?"":t,")_",(++s+f).toString(36)),F=Function.toString,n=(""+F).split("toString");e.inspectSource=function(u){return F.call(u)},(u.exports=function(u,e,t,F){var C="function"==typeof t;C&&(B(t,"name")||a(t,"name",e)),u[e]!==t&&(C&&(B(t,r)||a(t,r,u[e]?""+u[e]:n.join(String(e)))),u===D?u[e]=t:F?u[e]?u[e]=t:a(u,e,t):(delete u[e],a(u,e,t)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[r]||F.call(this)})}),d=function(u,D,e){if(function(u){if("function"!=typeof u)throw TypeError(u+" is not a function!")}(u),void 0===D)return u;switch(e){case 1:return function(e){return u.call(D,e)};case 2:return function(e,t){return u.call(D,e,t)};case 3:return function(e,t,r){return u.call(D,e,t,r)}}return function(){return u.apply(D,arguments)}},v=function(u,t,r){var F,n,C,A,E=u&v.F,i=u&v.G,o=u&v.S,c=u&v.P,B=u&v.B,s=i?D:o?D[t]||(D[t]={}):(D[t]||{}).prototype,f=i?e:e[t]||(e[t]={}),p=f.prototype||(f.prototype={});for(F in i&&(r=t),r)C=((n=!E&&s&&void 0!==s[F])?s:r)[F],A=B&&n?d(C,D):c&&"function"==typeof C?d(Function.call,C):C,s&&l(s,F,C,u&v.U),f[F]!=C&&a(f,F,A),c&&p[F]!=C&&(p[F]=C)};D.core=e,v.F=1,v.G=2,v.S=4,v.P=8,v.B=16,v.W=32,v.U=64,v.R=128;var p,h=v,m=Math.ceil,g=Math.floor,y=function(u){return isNaN(u=+u)?0:(u>0?g:m)(u)},w=(p=!1,function(u,D){var e,t,r=String(function(u){if(null==u)throw TypeError("Can't call method on "+u);return u}(u)),F=y(D),n=r.length;return F<0||F>=n?p?"":void 0:(e=r.charCodeAt(F))<55296||e>56319||F+1===n||(t=r.charCodeAt(F+1))<56320||t>57343?p?r.charAt(F):e:p?r.slice(F,F+2):t-56320+(e-55296<<10)+65536});h(h.P,"String",{codePointAt:function(u){return w(this,u)}});e.String.codePointAt;var S=Math.max,b=Math.min,x=String.fromCharCode,N=String.fromCodePoint;h(h.S+h.F*(!!N&&1!=N.length),"String",{fromCodePoint:function(u){for(var D,e,t,r=arguments,F=[],n=arguments.length,C=0;n>C;){if(D=+r[C++],t=1114111,((e=y(e=D))<0?S(e+t,0):b(e,t))!==D)throw RangeError(D+" is not a valid code point");F.push(D<65536?x(D):x(55296+((D-=65536)>>10),D%1024+56320))}return F.join("")}});e.String.fromCodePoint;var P,I,O,_,j,V,J,M,L,k,T,H,$,z,R={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\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\u0561-\u0587\u05D0-\u05EA\u05F0-\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\u08A0-\u08B4\u08B6-\u08BD\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\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\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\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\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-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\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\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\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\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\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-\uAB65\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]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\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\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\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\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},G={isSpaceSeparator:function(u){return R.Space_Separator.test(u)},isIdStartChar:function(u){return u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||R.ID_Start.test(u)},isIdContinueChar:function(u){return u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||""===u||""===u||R.ID_Continue.test(u)},isDigit:function(u){return/[0-9]/.test(u)},isHexDigit:function(u){return/[0-9A-Fa-f]/.test(u)}};function U(){for(k="default",T="",H=!1,$=1;;){z=Z();var u=W[k]();if(u)return u}}function Z(){if(P[_])return String.fromCodePoint(P.codePointAt(_))}function q(){var u=Z();return"\n"===u?(j++,V=0):u?V+=u.length:V++,u&&(_+=u.length),u}var W={default:function(){switch(z){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void q();case"/":return q(),void(k="comment");case void 0:return q(),X("eof")}if(!G.isSpaceSeparator(z))return W[I]();q()},comment:function(){switch(z){case"*":return q(),void(k="multiLineComment");case"/":return q(),void(k="singleLineComment")}throw eu(q())},multiLineComment:function(){switch(z){case"*":return q(),void(k="multiLineCommentAsterisk");case void 0:throw eu(q())}q()},multiLineCommentAsterisk:function(){switch(z){case"*":return void q();case"/":return q(),void(k="default");case void 0:throw eu(q())}q(),k="multiLineComment"},singleLineComment:function(){switch(z){case"\n":case"\r":case"\u2028":case"\u2029":return q(),void(k="default");case void 0:return q(),X("eof")}q()},value:function(){switch(z){case"{":case"[":return X("punctuator",q());case"n":return q(),K("ull"),X("null",null);case"t":return q(),K("rue"),X("boolean",!0);case"f":return q(),K("alse"),X("boolean",!1);case"-":case"+":return"-"===q()&&($=-1),void(k="sign");case".":return T=q(),void(k="decimalPointLeading");case"0":return T=q(),void(k="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return T=q(),void(k="decimalInteger");case"I":return q(),K("nfinity"),X("numeric",1/0);case"N":return q(),K("aN"),X("numeric",NaN);case'"':case"'":return H='"'===q(),T="",void(k="string")}throw eu(q())},identifierNameStartEscape:function(){if("u"!==z)throw eu(q());q();var u=Q();switch(u){case"$":case"_":break;default:if(!G.isIdStartChar(u))throw ru()}T+=u,k="identifierName"},identifierName:function(){switch(z){case"$":case"_":case"":case"":return void(T+=q());case"\\":return q(),void(k="identifierNameEscape")}if(!G.isIdContinueChar(z))return X("identifier",T);T+=q()},identifierNameEscape:function(){if("u"!==z)throw eu(q());q();var u=Q();switch(u){case"$":case"_":case"":case"":break;default:if(!G.isIdContinueChar(u))throw ru()}T+=u,k="identifierName"},sign:function(){switch(z){case".":return T=q(),void(k="decimalPointLeading");case"0":return T=q(),void(k="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return T=q(),void(k="decimalInteger");case"I":return q(),K("nfinity"),X("numeric",$*(1/0));case"N":return q(),K("aN"),X("numeric",NaN)}throw eu(q())},zero:function(){switch(z){case".":return T+=q(),void(k="decimalPoint");case"e":case"E":return T+=q(),void(k="decimalExponent");case"x":case"X":return T+=q(),void(k="hexadecimal")}return X("numeric",0*$)},decimalInteger:function(){switch(z){case".":return T+=q(),void(k="decimalPoint");case"e":case"E":return T+=q(),void(k="decimalExponent")}if(!G.isDigit(z))return X("numeric",$*Number(T));T+=q()},decimalPointLeading:function(){if(G.isDigit(z))return T+=q(),void(k="decimalFraction");throw eu(q())},decimalPoint:function(){switch(z){case"e":case"E":return T+=q(),void(k="decimalExponent")}return G.isDigit(z)?(T+=q(),void(k="decimalFraction")):X("numeric",$*Number(T))},decimalFraction:function(){switch(z){case"e":case"E":return T+=q(),void(k="decimalExponent")}if(!G.isDigit(z))return X("numeric",$*Number(T));T+=q()},decimalExponent:function(){switch(z){case"+":case"-":return T+=q(),void(k="decimalExponentSign")}if(G.isDigit(z))return T+=q(),void(k="decimalExponentInteger");throw eu(q())},decimalExponentSign:function(){if(G.isDigit(z))return T+=q(),void(k="decimalExponentInteger");throw eu(q())},decimalExponentInteger:function(){if(!G.isDigit(z))return X("numeric",$*Number(T));T+=q()},hexadecimal:function(){if(G.isHexDigit(z))return T+=q(),void(k="hexadecimalInteger");throw eu(q())},hexadecimalInteger:function(){if(!G.isHexDigit(z))return X("numeric",$*Number(T));T+=q()},string:function(){switch(z){case"\\":return q(),void(T+=function(){switch(Z()){case"b":return q(),"\b";case"f":return q(),"\f";case"n":return q(),"\n";case"r":return q(),"\r";case"t":return q(),"\t";case"v":return q(),"\v";case"0":if(q(),G.isDigit(Z()))throw eu(q());return"\0";case"x":return q(),function(){var u="",D=Z();if(!G.isHexDigit(D))throw eu(q());if(u+=q(),D=Z(),!G.isHexDigit(D))throw eu(q());return u+=q(),String.fromCodePoint(parseInt(u,16))}();case"u":return q(),Q();case"\n":case"\u2028":case"\u2029":return q(),"";case"\r":return q(),"\n"===Z()&&q(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw eu(q())}return q()}());case'"':return H?(q(),X("string",T)):void(T+=q());case"'":return H?void(T+=q()):(q(),X("string",T));case"\n":case"\r":throw eu(q());case"\u2028":case"\u2029":!function(u){console.warn("JSON5: '"+Fu(u)+"' in strings is not valid ECMAScript; consider escaping")}(z);break;case void 0:throw eu(q())}T+=q()},start:function(){switch(z){case"{":case"[":return X("punctuator",q())}k="value"},beforePropertyName:function(){switch(z){case"$":case"_":return T=q(),void(k="identifierName");case"\\":return q(),void(k="identifierNameStartEscape");case"}":return X("punctuator",q());case'"':case"'":return H='"'===q(),void(k="string")}if(G.isIdStartChar(z))return T+=q(),void(k="identifierName");throw eu(q())},afterPropertyName:function(){if(":"===z)return X("punctuator",q());throw eu(q())},beforePropertyValue:function(){k="value"},afterPropertyValue:function(){switch(z){case",":case"}":return X("punctuator",q())}throw eu(q())},beforeArrayValue:function(){if("]"===z)return X("punctuator",q());k="value"},afterArrayValue:function(){switch(z){case",":case"]":return X("punctuator",q())}throw eu(q())},end:function(){throw eu(q())}};function X(u,D){return{type:u,value:D,line:j,column:V}}function K(u){for(var D=0,e=u;D<e.length;D+=1){var t=e[D];if(Z()!==t)throw eu(q());q()}}function Q(){for(var u="",D=4;D-- >0;){var e=Z();if(!G.isHexDigit(e))throw eu(q());u+=q()}return String.fromCodePoint(parseInt(u,16))}var Y={start:function(){if("eof"===J.type)throw tu();uu()},beforePropertyName:function(){switch(J.type){case"identifier":case"string":return M=J.value,void(I="afterPropertyName");case"punctuator":return void Du();case"eof":throw tu()}},afterPropertyName:function(){if("eof"===J.type)throw tu();I="beforePropertyValue"},beforePropertyValue:function(){if("eof"===J.type)throw tu();uu()},beforeArrayValue:function(){if("eof"===J.type)throw tu();"punctuator"!==J.type||"]"!==J.value?uu():Du()},afterPropertyValue:function(){if("eof"===J.type)throw tu();switch(J.value){case",":return void(I="beforePropertyName");case"}":Du()}},afterArrayValue:function(){if("eof"===J.type)throw tu();switch(J.value){case",":return void(I="beforeArrayValue");case"]":Du()}},end:function(){}};function uu(){var u;switch(J.type){case"punctuator":switch(J.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=J.value}if(void 0===L)L=u;else{var D=O[O.length-1];Array.isArray(D)?D.push(u):D[M]=u}if(null!==u&&"object"==typeof u)O.push(u),I=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{var e=O[O.length-1];I=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function Du(){O.pop();var u=O[O.length-1];I=null==u?"end":Array.isArray(u)?"afterArrayValue":"afterPropertyValue"}function eu(u){return nu(void 0===u?"JSON5: invalid end of input at "+j+":"+V:"JSON5: invalid character '"+Fu(u)+"' at "+j+":"+V)}function tu(){return nu("JSON5: invalid end of input at "+j+":"+V)}function ru(){return nu("JSON5: invalid identifier character at "+j+":"+(V-=5))}function Fu(u){var D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){var e=u.charCodeAt(0).toString(16);return"\\x"+("00"+e).substring(e.length)}return u}function nu(u){var D=new SyntaxError(u);return D.lineNumber=j,D.columnNumber=V,D}return{parse:function(u,D){P=String(u),I="start",O=[],_=0,j=1,V=0,J=void 0,M=void 0,L=void 0;do{J=U(),Y[I]()}while("eof"!==J.type);return"function"==typeof D?function u(D,e,t){var r=D[e];if(null!=r&&"object"==typeof r)for(var F in r){var n=u(r,F,t);void 0===n?delete r[F]:r[F]=n}return t.call(D,e,r)}({"":L},"",D):L},stringify:function(u,D,e){var t,r,F,n=[],C="",A="";if(null==D||"object"!=typeof D||Array.isArray(D)||(e=D.space,F=D.quote,D=D.replacer),"function"==typeof D)r=D;else if(Array.isArray(D)){t=[];for(var E=0,i=D;E<i.length;E+=1){var o=i[E],a=void 0;"string"==typeof o?a=o:("number"==typeof o||o instanceof String||o instanceof Number)&&(a=String(o)),void 0!==a&&t.indexOf(a)<0&&t.push(a)}}return e instanceof Number?e=Number(e):e instanceof String&&(e=String(e)),"number"==typeof e?e>0&&(e=Math.min(10,Math.floor(e)),A=" ".substr(0,e)):"string"==typeof e&&(A=e.substr(0,10)),c("",{"":u});function c(u,D){var e=D[u];switch(null!=e&&("function"==typeof e.toJSON5?e=e.toJSON5(u):"function"==typeof e.toJSON&&(e=e.toJSON(u))),r&&(e=r.call(D,u,e)),e instanceof Number?e=Number(e):e instanceof String?e=String(e):e instanceof Boolean&&(e=e.valueOf()),e){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof e?B(e):"number"==typeof e?String(e):"object"==typeof e?Array.isArray(e)?function(u){if(n.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");n.push(u);var D=C;C+=A;for(var e,t=[],r=0;r<u.length;r++){var F=c(String(r),u);t.push(void 0!==F?F:"null")}if(0===t.length)e="[]";else if(""===A){var E=t.join(",");e="["+E+"]"}else{var i=",\n"+C,o=t.join(i);e="[\n"+C+o+",\n"+D+"]"}return n.pop(),C=D,e}(e):function(u){if(n.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");n.push(u);var D=C;C+=A;for(var e,r,F=t||Object.keys(u),E=[],i=0,o=F;i<o.length;i+=1){var a=o[i],B=c(a,u);if(void 0!==B){var f=s(a)+":";""!==A&&(f+=" "),f+=B,E.push(f)}}if(0===E.length)e="{}";else if(""===A)r=E.join(","),e="{"+r+"}";else{var l=",\n"+C;r=E.join(l),e="{\n"+C+r+",\n"+D+"}"}return n.pop(),C=D,e}(e):void 0}function B(u){for(var D={"'":.1,'"':.2},e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},t="",r=0,n=u;r<n.length;r+=1){var C=n[r];switch(C){case"'":case'"':D[C]++,t+=C;continue}if(e[C])t+=e[C];else if(C<" "){var A=C.charCodeAt(0).toString(16);t+="\\x"+("00"+A).substring(A.length)}else t+=C}var E=F||Object.keys(D).reduce(function(u,e){return D[u]<D[e]?u:e});return E+(t=t.replace(new RegExp(E,"g"),e[E]))+E}function s(u){if(0===u.length)return B(u);var D=String.fromCodePoint(u.codePointAt(0));if(!G.isIdStartChar(D))return B(u);for(var e=D.length;e<u.length;e++)if(!G.isIdContinueChar(String.fromCodePoint(u.codePointAt(e))))return B(u);return u}}}}); |
| var Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start=/[\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\u0561-\u0587\u05D0-\u05EA\u05F0-\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\u08A0-\u08B4\u08B6-\u08BD\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\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\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\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\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-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\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\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\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\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\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-\uAB65\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]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\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\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\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\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,unicode={Space_Separator:Space_Separator,ID_Start:ID_Start,ID_Continue:ID_Continue},util={isSpaceSeparator:u=>unicode.Space_Separator.test(u),isIdStartChar:u=>u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||unicode.ID_Start.test(u),isIdContinueChar:u=>u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||""===u||""===u||unicode.ID_Continue.test(u),isDigit:u=>/[0-9]/.test(u),isHexDigit:u=>/[0-9A-Fa-f]/.test(u)};let source,parseState,stack,pos,line,column,token,key,root;var parse=function(u,D){source=String(u),parseState="start",stack=[],pos=0,line=1,column=0,token=void 0,key=void 0,root=void 0;do{token=lex(),parseStates[parseState]()}while("eof"!==token.type);return"function"==typeof D?internalize({"":root},"",D):root};function internalize(u,D,e){const r=u[D];if(null!=r&&"object"==typeof r)for(const u in r){const D=internalize(r,u,e);void 0===D?delete r[u]:r[u]=D}return e.call(u,D,r)}let lexState,buffer,doubleQuote,sign,c;function lex(){for(lexState="default",buffer="",doubleQuote=!1,sign=1;;){c=peek();const u=lexStates[lexState]();if(u)return u}}function peek(){if(source[pos])return String.fromCodePoint(source.codePointAt(pos))}function read(){const u=peek();return"\n"===u?(line++,column=0):u?column+=u.length:column++,u&&(pos+=u.length),u}const lexStates={default(){switch(c){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void read();case"/":return read(),void(lexState="comment");case void 0:return read(),newToken("eof")}if(!util.isSpaceSeparator(c))return lexStates[parseState]();read()},comment(){switch(c){case"*":return read(),void(lexState="multiLineComment");case"/":return read(),void(lexState="singleLineComment")}throw invalidChar(read())},multiLineComment(){switch(c){case"*":return read(),void(lexState="multiLineCommentAsterisk");case void 0:throw invalidChar(read())}read()},multiLineCommentAsterisk(){switch(c){case"*":return void read();case"/":return read(),void(lexState="default");case void 0:throw invalidChar(read())}read(),lexState="multiLineComment"},singleLineComment(){switch(c){case"\n":case"\r":case"\u2028":case"\u2029":return read(),void(lexState="default");case void 0:return read(),newToken("eof")}read()},value(){switch(c){case"{":case"[":return newToken("punctuator",read());case"n":return read(),literal("ull"),newToken("null",null);case"t":return read(),literal("rue"),newToken("boolean",!0);case"f":return read(),literal("alse"),newToken("boolean",!1);case"-":case"+":return"-"===read()&&(sign=-1),void(lexState="sign");case".":return buffer=read(),void(lexState="decimalPointLeading");case"0":return buffer=read(),void(lexState="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return buffer=read(),void(lexState="decimalInteger");case"I":return read(),literal("nfinity"),newToken("numeric",1/0);case"N":return read(),literal("aN"),newToken("numeric",NaN);case'"':case"'":return doubleQuote='"'===read(),buffer="",void(lexState="string")}throw invalidChar(read())},identifierNameStartEscape(){if("u"!==c)throw invalidChar(read());read();const u=unicodeEscape();switch(u){case"$":case"_":break;default:if(!util.isIdStartChar(u))throw invalidIdentifier()}buffer+=u,lexState="identifierName"},identifierName(){switch(c){case"$":case"_":case"":case"":return void(buffer+=read());case"\\":return read(),void(lexState="identifierNameEscape")}if(!util.isIdContinueChar(c))return newToken("identifier",buffer);buffer+=read()},identifierNameEscape(){if("u"!==c)throw invalidChar(read());read();const u=unicodeEscape();switch(u){case"$":case"_":case"":case"":break;default:if(!util.isIdContinueChar(u))throw invalidIdentifier()}buffer+=u,lexState="identifierName"},sign(){switch(c){case".":return buffer=read(),void(lexState="decimalPointLeading");case"0":return buffer=read(),void(lexState="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return buffer=read(),void(lexState="decimalInteger");case"I":return read(),literal("nfinity"),newToken("numeric",sign*(1/0));case"N":return read(),literal("aN"),newToken("numeric",NaN)}throw invalidChar(read())},zero(){switch(c){case".":return buffer+=read(),void(lexState="decimalPoint");case"e":case"E":return buffer+=read(),void(lexState="decimalExponent");case"x":case"X":return buffer+=read(),void(lexState="hexadecimal")}return newToken("numeric",0*sign)},decimalInteger(){switch(c){case".":return buffer+=read(),void(lexState="decimalPoint");case"e":case"E":return buffer+=read(),void(lexState="decimalExponent")}if(!util.isDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},decimalPointLeading(){if(util.isDigit(c))return buffer+=read(),void(lexState="decimalFraction");throw invalidChar(read())},decimalPoint(){switch(c){case"e":case"E":return buffer+=read(),void(lexState="decimalExponent")}return util.isDigit(c)?(buffer+=read(),void(lexState="decimalFraction")):newToken("numeric",sign*Number(buffer))},decimalFraction(){switch(c){case"e":case"E":return buffer+=read(),void(lexState="decimalExponent")}if(!util.isDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},decimalExponent(){switch(c){case"+":case"-":return buffer+=read(),void(lexState="decimalExponentSign")}if(util.isDigit(c))return buffer+=read(),void(lexState="decimalExponentInteger");throw invalidChar(read())},decimalExponentSign(){if(util.isDigit(c))return buffer+=read(),void(lexState="decimalExponentInteger");throw invalidChar(read())},decimalExponentInteger(){if(!util.isDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},hexadecimal(){if(util.isHexDigit(c))return buffer+=read(),void(lexState="hexadecimalInteger");throw invalidChar(read())},hexadecimalInteger(){if(!util.isHexDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},string(){switch(c){case"\\":return read(),void(buffer+=escape());case'"':return doubleQuote?(read(),newToken("string",buffer)):void(buffer+=read());case"'":return doubleQuote?void(buffer+=read()):(read(),newToken("string",buffer));case"\n":case"\r":throw invalidChar(read());case"\u2028":case"\u2029":separatorChar(c);break;case void 0:throw invalidChar(read())}buffer+=read()},start(){switch(c){case"{":case"[":return newToken("punctuator",read())}lexState="value"},beforePropertyName(){switch(c){case"$":case"_":return buffer=read(),void(lexState="identifierName");case"\\":return read(),void(lexState="identifierNameStartEscape");case"}":return newToken("punctuator",read());case'"':case"'":return doubleQuote='"'===read(),void(lexState="string")}if(util.isIdStartChar(c))return buffer+=read(),void(lexState="identifierName");throw invalidChar(read())},afterPropertyName(){if(":"===c)return newToken("punctuator",read());throw invalidChar(read())},beforePropertyValue(){lexState="value"},afterPropertyValue(){switch(c){case",":case"}":return newToken("punctuator",read())}throw invalidChar(read())},beforeArrayValue(){if("]"===c)return newToken("punctuator",read());lexState="value"},afterArrayValue(){switch(c){case",":case"]":return newToken("punctuator",read())}throw invalidChar(read())},end(){throw invalidChar(read())}};function newToken(u,D){return{type:u,value:D,line:line,column:column}}function literal(u){for(const D of u){if(peek()!==D)throw invalidChar(read());read()}}function escape(){switch(peek()){case"b":return read(),"\b";case"f":return read(),"\f";case"n":return read(),"\n";case"r":return read(),"\r";case"t":return read(),"\t";case"v":return read(),"\v";case"0":if(read(),util.isDigit(peek()))throw invalidChar(read());return"\0";case"x":return read(),hexEscape();case"u":return read(),unicodeEscape();case"\n":case"\u2028":case"\u2029":return read(),"";case"\r":return read(),"\n"===peek()&&read(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw invalidChar(read())}return read()}function hexEscape(){let u="",D=peek();if(!util.isHexDigit(D))throw invalidChar(read());if(u+=read(),D=peek(),!util.isHexDigit(D))throw invalidChar(read());return u+=read(),String.fromCodePoint(parseInt(u,16))}function unicodeEscape(){let u="",D=4;for(;D-- >0;){const D=peek();if(!util.isHexDigit(D))throw invalidChar(read());u+=read()}return String.fromCodePoint(parseInt(u,16))}const parseStates={start(){if("eof"===token.type)throw invalidEOF();push()},beforePropertyName(){switch(token.type){case"identifier":case"string":return key=token.value,void(parseState="afterPropertyName");case"punctuator":return void pop();case"eof":throw invalidEOF()}},afterPropertyName(){if("eof"===token.type)throw invalidEOF();parseState="beforePropertyValue"},beforePropertyValue(){if("eof"===token.type)throw invalidEOF();push()},beforeArrayValue(){if("eof"===token.type)throw invalidEOF();"punctuator"!==token.type||"]"!==token.value?push():pop()},afterPropertyValue(){if("eof"===token.type)throw invalidEOF();switch(token.value){case",":return void(parseState="beforePropertyName");case"}":pop()}},afterArrayValue(){if("eof"===token.type)throw invalidEOF();switch(token.value){case",":return void(parseState="beforeArrayValue");case"]":pop()}},end(){}};function push(){let u;switch(token.type){case"punctuator":switch(token.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=token.value}if(void 0===root)root=u;else{const D=stack[stack.length-1];Array.isArray(D)?D.push(u):D[key]=u}if(null!==u&&"object"==typeof u)stack.push(u),parseState=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{const u=stack[stack.length-1];parseState=null==u?"end":Array.isArray(u)?"afterArrayValue":"afterPropertyValue"}}function pop(){stack.pop();const u=stack[stack.length-1];parseState=null==u?"end":Array.isArray(u)?"afterArrayValue":"afterPropertyValue"}function invalidChar(u){return syntaxError(void 0===u?`JSON5: invalid end of input at ${line}:${column}`:`JSON5: invalid character '${formatChar(u)}' at ${line}:${column}`)}function invalidEOF(){return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)}function invalidIdentifier(){return syntaxError(`JSON5: invalid identifier character at ${line}:${column-=5}`)}function separatorChar(u){console.warn(`JSON5: '${formatChar(u)}' in strings is not valid ECMAScript; consider escaping`)}function formatChar(u){const D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){const D=u.charCodeAt(0).toString(16);return"\\x"+("00"+D).substring(D.length)}return u}function syntaxError(u){const D=new SyntaxError(u);return D.lineNumber=line,D.columnNumber=column,D}var stringify=function(u,D,e){const r=[];let t,F,C,a="",A="";if(null==D||"object"!=typeof D||Array.isArray(D)||(e=D.space,C=D.quote,D=D.replacer),"function"==typeof D)F=D;else if(Array.isArray(D)){t=[];for(const u of D){let D;"string"==typeof u?D=u:("number"==typeof u||u instanceof String||u instanceof Number)&&(D=String(u)),void 0!==D&&t.indexOf(D)<0&&t.push(D)}}return e instanceof Number?e=Number(e):e instanceof String&&(e=String(e)),"number"==typeof e?e>0&&(e=Math.min(10,Math.floor(e)),A=" ".substr(0,e)):"string"==typeof e&&(A=e.substr(0,10)),E("",{"":u});function E(u,D){let e=D[u];switch(null!=e&&("function"==typeof e.toJSON5?e=e.toJSON5(u):"function"==typeof e.toJSON&&(e=e.toJSON(u))),F&&(e=F.call(D,u,e)),e instanceof Number?e=Number(e):e instanceof String?e=String(e):e instanceof Boolean&&(e=e.valueOf()),e){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof e?n(e):"number"==typeof e?String(e):"object"==typeof e?Array.isArray(e)?function(u){if(r.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");r.push(u);let D=a;a+=A;let e,t=[];for(let D=0;D<u.length;D++){const e=E(String(D),u);t.push(void 0!==e?e:"null")}if(0===t.length)e="[]";else if(""===A){let u=t.join(",");e="["+u+"]"}else{let u=",\n"+a,r=t.join(u);e="[\n"+a+r+",\n"+D+"]"}return r.pop(),a=D,e}(e):function(u){if(r.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");r.push(u);let D=a;a+=A;let e,F=t||Object.keys(u),C=[];for(const D of F){const e=E(D,u);if(void 0!==e){let u=i(D)+":";""!==A&&(u+=" "),u+=e,C.push(u)}}if(0===C.length)e="{}";else{let u;if(""===A)u=C.join(","),e="{"+u+"}";else{let r=",\n"+a;u=C.join(r),e="{\n"+a+u+",\n"+D+"}"}}return r.pop(),a=D,e}(e):void 0}function n(u){const D={"'":.1,'"':.2},e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};let r="";for(const t of u){switch(t){case"'":case'"':D[t]++,r+=t;continue}if(e[t])r+=e[t];else if(t<" "){let u=t.charCodeAt(0).toString(16);r+="\\x"+("00"+u).substring(u.length)}else r+=t}const t=C||Object.keys(D).reduce((u,e)=>D[u]<D[e]?u:e);return t+(r=r.replace(new RegExp(t,"g"),e[t]))+t}function i(u){if(0===u.length)return n(u);const D=String.fromCodePoint(u.codePointAt(0));if(!util.isIdStartChar(D))return n(u);for(let e=D.length;e<u.length;e++)if(!util.isIdContinueChar(String.fromCodePoint(u.codePointAt(e))))return n(u);return u}};const JSON5={parse:parse,stringify:stringify};var lib=JSON5;export default lib; |
| // This is a generated file. Do not edit. | |
| var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; | |
| var ID_Start = /[\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\u0561-\u0587\u05D0-\u05EA\u05F0-\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\u08A0-\u08B4\u08B6-\u08BD\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\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\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\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\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-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\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\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\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\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\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-\uAB65\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]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; | |
| var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\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\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\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\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; | |
| var unicode = { | |
| Space_Separator: Space_Separator, | |
| ID_Start: ID_Start, | |
| ID_Continue: ID_Continue | |
| }; | |
| var util = { | |
| isSpaceSeparator (c) { | |
| return unicode.Space_Separator.test(c) | |
| }, | |
| isIdStartChar (c) { | |
| return ( | |
| (c >= 'a' && c <= 'z') || | |
| (c >= 'A' && c <= 'Z') || | |
| (c === '$') || (c === '_') || | |
| unicode.ID_Start.test(c) | |
| ) | |
| }, | |
| isIdContinueChar (c) { | |
| return ( | |
| (c >= 'a' && c <= 'z') || | |
| (c >= 'A' && c <= 'Z') || | |
| (c >= '0' && c <= '9') || | |
| (c === '$') || (c === '_') || | |
| (c === '\u200C') || (c === '\u200D') || | |
| unicode.ID_Continue.test(c) | |
| ) | |
| }, | |
| isDigit (c) { | |
| return /[0-9]/.test(c) | |
| }, | |
| isHexDigit (c) { | |
| return /[0-9A-Fa-f]/.test(c) | |
| }, | |
| }; | |
| let source; | |
| let parseState; | |
| let stack; | |
| let pos; | |
| let line; | |
| let column; | |
| let token; | |
| let key; | |
| let root; | |
| var parse = function parse (text, reviver) { | |
| source = String(text); | |
| parseState = 'start'; | |
| stack = []; | |
| pos = 0; | |
| line = 1; | |
| column = 0; | |
| token = undefined; | |
| key = undefined; | |
| root = undefined; | |
| do { | |
| token = lex(); | |
| // This code is unreachable. | |
| // if (!parseStates[parseState]) { | |
| // throw invalidParseState() | |
| // } | |
| parseStates[parseState](); | |
| } while (token.type !== 'eof') | |
| if (typeof reviver === 'function') { | |
| return internalize({'': root}, '', reviver) | |
| } | |
| return root | |
| }; | |
| function internalize (holder, name, reviver) { | |
| const value = holder[name]; | |
| if (value != null && typeof value === 'object') { | |
| for (const key in value) { | |
| const replacement = internalize(value, key, reviver); | |
| if (replacement === undefined) { | |
| delete value[key]; | |
| } else { | |
| value[key] = replacement; | |
| } | |
| } | |
| } | |
| return reviver.call(holder, name, value) | |
| } | |
| let lexState; | |
| let buffer; | |
| let doubleQuote; | |
| let sign; | |
| let c; | |
| function lex () { | |
| lexState = 'default'; | |
| buffer = ''; | |
| doubleQuote = false; | |
| sign = 1; | |
| for (;;) { | |
| c = peek(); | |
| // This code is unreachable. | |
| // if (!lexStates[lexState]) { | |
| // throw invalidLexState(lexState) | |
| // } | |
| const token = lexStates[lexState](); | |
| if (token) { | |
| return token | |
| } | |
| } | |
| } | |
| function peek () { | |
| if (source[pos]) { | |
| return String.fromCodePoint(source.codePointAt(pos)) | |
| } | |
| } | |
| function read () { | |
| const c = peek(); | |
| if (c === '\n') { | |
| line++; | |
| column = 0; | |
| } else if (c) { | |
| column += c.length; | |
| } else { | |
| column++; | |
| } | |
| if (c) { | |
| pos += c.length; | |
| } | |
| return c | |
| } | |
| const lexStates = { | |
| default () { | |
| switch (c) { | |
| case '\t': | |
| case '\v': | |
| case '\f': | |
| case ' ': | |
| case '\u00A0': | |
| case '\uFEFF': | |
| case '\n': | |
| case '\r': | |
| case '\u2028': | |
| case '\u2029': | |
| read(); | |
| return | |
| case '/': | |
| read(); | |
| lexState = 'comment'; | |
| return | |
| case undefined: | |
| read(); | |
| return newToken('eof') | |
| } | |
| if (util.isSpaceSeparator(c)) { | |
| read(); | |
| return | |
| } | |
| // This code is unreachable. | |
| // if (!lexStates[parseState]) { | |
| // throw invalidLexState(parseState) | |
| // } | |
| return lexStates[parseState]() | |
| }, | |
| comment () { | |
| switch (c) { | |
| case '*': | |
| read(); | |
| lexState = 'multiLineComment'; | |
| return | |
| case '/': | |
| read(); | |
| lexState = 'singleLineComment'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| multiLineComment () { | |
| switch (c) { | |
| case '*': | |
| read(); | |
| lexState = 'multiLineCommentAsterisk'; | |
| return | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| read(); | |
| }, | |
| multiLineCommentAsterisk () { | |
| switch (c) { | |
| case '*': | |
| read(); | |
| return | |
| case '/': | |
| read(); | |
| lexState = 'default'; | |
| return | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| read(); | |
| lexState = 'multiLineComment'; | |
| }, | |
| singleLineComment () { | |
| switch (c) { | |
| case '\n': | |
| case '\r': | |
| case '\u2028': | |
| case '\u2029': | |
| read(); | |
| lexState = 'default'; | |
| return | |
| case undefined: | |
| read(); | |
| return newToken('eof') | |
| } | |
| read(); | |
| }, | |
| value () { | |
| switch (c) { | |
| case '{': | |
| case '[': | |
| return newToken('punctuator', read()) | |
| case 'n': | |
| read(); | |
| literal('ull'); | |
| return newToken('null', null) | |
| case 't': | |
| read(); | |
| literal('rue'); | |
| return newToken('boolean', true) | |
| case 'f': | |
| read(); | |
| literal('alse'); | |
| return newToken('boolean', false) | |
| case '-': | |
| case '+': | |
| if (read() === '-') { | |
| sign = -1; | |
| } | |
| lexState = 'sign'; | |
| return | |
| case '.': | |
| buffer = read(); | |
| lexState = 'decimalPointLeading'; | |
| return | |
| case '0': | |
| buffer = read(); | |
| lexState = 'zero'; | |
| return | |
| case '1': | |
| case '2': | |
| case '3': | |
| case '4': | |
| case '5': | |
| case '6': | |
| case '7': | |
| case '8': | |
| case '9': | |
| buffer = read(); | |
| lexState = 'decimalInteger'; | |
| return | |
| case 'I': | |
| read(); | |
| literal('nfinity'); | |
| return newToken('numeric', Infinity) | |
| case 'N': | |
| read(); | |
| literal('aN'); | |
| return newToken('numeric', NaN) | |
| case '"': | |
| case "'": | |
| doubleQuote = (read() === '"'); | |
| buffer = ''; | |
| lexState = 'string'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| identifierNameStartEscape () { | |
| if (c !== 'u') { | |
| throw invalidChar(read()) | |
| } | |
| read(); | |
| const u = unicodeEscape(); | |
| switch (u) { | |
| case '$': | |
| case '_': | |
| break | |
| default: | |
| if (!util.isIdStartChar(u)) { | |
| throw invalidIdentifier() | |
| } | |
| break | |
| } | |
| buffer += u; | |
| lexState = 'identifierName'; | |
| }, | |
| identifierName () { | |
| switch (c) { | |
| case '$': | |
| case '_': | |
| case '\u200C': | |
| case '\u200D': | |
| buffer += read(); | |
| return | |
| case '\\': | |
| read(); | |
| lexState = 'identifierNameEscape'; | |
| return | |
| } | |
| if (util.isIdContinueChar(c)) { | |
| buffer += read(); | |
| return | |
| } | |
| return newToken('identifier', buffer) | |
| }, | |
| identifierNameEscape () { | |
| if (c !== 'u') { | |
| throw invalidChar(read()) | |
| } | |
| read(); | |
| const u = unicodeEscape(); | |
| switch (u) { | |
| case '$': | |
| case '_': | |
| case '\u200C': | |
| case '\u200D': | |
| break | |
| default: | |
| if (!util.isIdContinueChar(u)) { | |
| throw invalidIdentifier() | |
| } | |
| break | |
| } | |
| buffer += u; | |
| lexState = 'identifierName'; | |
| }, | |
| sign () { | |
| switch (c) { | |
| case '.': | |
| buffer = read(); | |
| lexState = 'decimalPointLeading'; | |
| return | |
| case '0': | |
| buffer = read(); | |
| lexState = 'zero'; | |
| return | |
| case '1': | |
| case '2': | |
| case '3': | |
| case '4': | |
| case '5': | |
| case '6': | |
| case '7': | |
| case '8': | |
| case '9': | |
| buffer = read(); | |
| lexState = 'decimalInteger'; | |
| return | |
| case 'I': | |
| read(); | |
| literal('nfinity'); | |
| return newToken('numeric', sign * Infinity) | |
| case 'N': | |
| read(); | |
| literal('aN'); | |
| return newToken('numeric', NaN) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| zero () { | |
| switch (c) { | |
| case '.': | |
| buffer += read(); | |
| lexState = 'decimalPoint'; | |
| return | |
| case 'e': | |
| case 'E': | |
| buffer += read(); | |
| lexState = 'decimalExponent'; | |
| return | |
| case 'x': | |
| case 'X': | |
| buffer += read(); | |
| lexState = 'hexadecimal'; | |
| return | |
| } | |
| return newToken('numeric', sign * 0) | |
| }, | |
| decimalInteger () { | |
| switch (c) { | |
| case '.': | |
| buffer += read(); | |
| lexState = 'decimalPoint'; | |
| return | |
| case 'e': | |
| case 'E': | |
| buffer += read(); | |
| lexState = 'decimalExponent'; | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| decimalPointLeading () { | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| lexState = 'decimalFraction'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| decimalPoint () { | |
| switch (c) { | |
| case 'e': | |
| case 'E': | |
| buffer += read(); | |
| lexState = 'decimalExponent'; | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| lexState = 'decimalFraction'; | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| decimalFraction () { | |
| switch (c) { | |
| case 'e': | |
| case 'E': | |
| buffer += read(); | |
| lexState = 'decimalExponent'; | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| decimalExponent () { | |
| switch (c) { | |
| case '+': | |
| case '-': | |
| buffer += read(); | |
| lexState = 'decimalExponentSign'; | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| lexState = 'decimalExponentInteger'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| decimalExponentSign () { | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| lexState = 'decimalExponentInteger'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| decimalExponentInteger () { | |
| if (util.isDigit(c)) { | |
| buffer += read(); | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| hexadecimal () { | |
| if (util.isHexDigit(c)) { | |
| buffer += read(); | |
| lexState = 'hexadecimalInteger'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| hexadecimalInteger () { | |
| if (util.isHexDigit(c)) { | |
| buffer += read(); | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| string () { | |
| switch (c) { | |
| case '\\': | |
| read(); | |
| buffer += escape(); | |
| return | |
| case '"': | |
| if (doubleQuote) { | |
| read(); | |
| return newToken('string', buffer) | |
| } | |
| buffer += read(); | |
| return | |
| case "'": | |
| if (!doubleQuote) { | |
| read(); | |
| return newToken('string', buffer) | |
| } | |
| buffer += read(); | |
| return | |
| case '\n': | |
| case '\r': | |
| throw invalidChar(read()) | |
| case '\u2028': | |
| case '\u2029': | |
| separatorChar(c); | |
| break | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| buffer += read(); | |
| }, | |
| start () { | |
| switch (c) { | |
| case '{': | |
| case '[': | |
| return newToken('punctuator', read()) | |
| // This code is unreachable since the default lexState handles eof. | |
| // case undefined: | |
| // return newToken('eof') | |
| } | |
| lexState = 'value'; | |
| }, | |
| beforePropertyName () { | |
| switch (c) { | |
| case '$': | |
| case '_': | |
| buffer = read(); | |
| lexState = 'identifierName'; | |
| return | |
| case '\\': | |
| read(); | |
| lexState = 'identifierNameStartEscape'; | |
| return | |
| case '}': | |
| return newToken('punctuator', read()) | |
| case '"': | |
| case "'": | |
| doubleQuote = (read() === '"'); | |
| lexState = 'string'; | |
| return | |
| } | |
| if (util.isIdStartChar(c)) { | |
| buffer += read(); | |
| lexState = 'identifierName'; | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| afterPropertyName () { | |
| if (c === ':') { | |
| return newToken('punctuator', read()) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| beforePropertyValue () { | |
| lexState = 'value'; | |
| }, | |
| afterPropertyValue () { | |
| switch (c) { | |
| case ',': | |
| case '}': | |
| return newToken('punctuator', read()) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| beforeArrayValue () { | |
| if (c === ']') { | |
| return newToken('punctuator', read()) | |
| } | |
| lexState = 'value'; | |
| }, | |
| afterArrayValue () { | |
| switch (c) { | |
| case ',': | |
| case ']': | |
| return newToken('punctuator', read()) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| end () { | |
| // This code is unreachable since it's handled by the default lexState. | |
| // if (c === undefined) { | |
| // read() | |
| // return newToken('eof') | |
| // } | |
| throw invalidChar(read()) | |
| }, | |
| }; | |
| function newToken (type, value) { | |
| return { | |
| type, | |
| value, | |
| line, | |
| column, | |
| } | |
| } | |
| function literal (s) { | |
| for (const c of s) { | |
| const p = peek(); | |
| if (p !== c) { | |
| throw invalidChar(read()) | |
| } | |
| read(); | |
| } | |
| } | |
| function escape () { | |
| const c = peek(); | |
| switch (c) { | |
| case 'b': | |
| read(); | |
| return '\b' | |
| case 'f': | |
| read(); | |
| return '\f' | |
| case 'n': | |
| read(); | |
| return '\n' | |
| case 'r': | |
| read(); | |
| return '\r' | |
| case 't': | |
| read(); | |
| return '\t' | |
| case 'v': | |
| read(); | |
| return '\v' | |
| case '0': | |
| read(); | |
| if (util.isDigit(peek())) { | |
| throw invalidChar(read()) | |
| } | |
| return '\0' | |
| case 'x': | |
| read(); | |
| return hexEscape() | |
| case 'u': | |
| read(); | |
| return unicodeEscape() | |
| case '\n': | |
| case '\u2028': | |
| case '\u2029': | |
| read(); | |
| return '' | |
| case '\r': | |
| read(); | |
| if (peek() === '\n') { | |
| read(); | |
| } | |
| return '' | |
| case '1': | |
| case '2': | |
| case '3': | |
| case '4': | |
| case '5': | |
| case '6': | |
| case '7': | |
| case '8': | |
| case '9': | |
| throw invalidChar(read()) | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| return read() | |
| } | |
| function hexEscape () { | |
| let buffer = ''; | |
| let c = peek(); | |
| if (!util.isHexDigit(c)) { | |
| throw invalidChar(read()) | |
| } | |
| buffer += read(); | |
| c = peek(); | |
| if (!util.isHexDigit(c)) { | |
| throw invalidChar(read()) | |
| } | |
| buffer += read(); | |
| return String.fromCodePoint(parseInt(buffer, 16)) | |
| } | |
| function unicodeEscape () { | |
| let buffer = ''; | |
| let count = 4; | |
| while (count-- > 0) { | |
| const c = peek(); | |
| if (!util.isHexDigit(c)) { | |
| throw invalidChar(read()) | |
| } | |
| buffer += read(); | |
| } | |
| return String.fromCodePoint(parseInt(buffer, 16)) | |
| } | |
| const parseStates = { | |
| start () { | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| push(); | |
| }, | |
| beforePropertyName () { | |
| switch (token.type) { | |
| case 'identifier': | |
| case 'string': | |
| key = token.value; | |
| parseState = 'afterPropertyName'; | |
| return | |
| case 'punctuator': | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.value !== '}') { | |
| // throw invalidToken() | |
| // } | |
| pop(); | |
| return | |
| case 'eof': | |
| throw invalidEOF() | |
| } | |
| // This code is unreachable since it's handled by the lexState. | |
| // throw invalidToken() | |
| }, | |
| afterPropertyName () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'punctuator' || token.value !== ':') { | |
| // throw invalidToken() | |
| // } | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| parseState = 'beforePropertyValue'; | |
| }, | |
| beforePropertyValue () { | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| push(); | |
| }, | |
| beforeArrayValue () { | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| if (token.type === 'punctuator' && token.value === ']') { | |
| pop(); | |
| return | |
| } | |
| push(); | |
| }, | |
| afterPropertyValue () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'punctuator') { | |
| // throw invalidToken() | |
| // } | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| switch (token.value) { | |
| case ',': | |
| parseState = 'beforePropertyName'; | |
| return | |
| case '}': | |
| pop(); | |
| } | |
| // This code is unreachable since it's handled by the lexState. | |
| // throw invalidToken() | |
| }, | |
| afterArrayValue () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'punctuator') { | |
| // throw invalidToken() | |
| // } | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| switch (token.value) { | |
| case ',': | |
| parseState = 'beforeArrayValue'; | |
| return | |
| case ']': | |
| pop(); | |
| } | |
| // This code is unreachable since it's handled by the lexState. | |
| // throw invalidToken() | |
| }, | |
| end () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'eof') { | |
| // throw invalidToken() | |
| // } | |
| }, | |
| }; | |
| function push () { | |
| let value; | |
| switch (token.type) { | |
| case 'punctuator': | |
| switch (token.value) { | |
| case '{': | |
| value = {}; | |
| break | |
| case '[': | |
| value = []; | |
| break | |
| } | |
| break | |
| case 'null': | |
| case 'boolean': | |
| case 'numeric': | |
| case 'string': | |
| value = token.value; | |
| break | |
| // This code is unreachable. | |
| // default: | |
| // throw invalidToken() | |
| } | |
| if (root === undefined) { | |
| root = value; | |
| } else { | |
| const parent = stack[stack.length - 1]; | |
| if (Array.isArray(parent)) { | |
| parent.push(value); | |
| } else { | |
| parent[key] = value; | |
| } | |
| } | |
| if (value !== null && typeof value === 'object') { | |
| stack.push(value); | |
| if (Array.isArray(value)) { | |
| parseState = 'beforeArrayValue'; | |
| } else { | |
| parseState = 'beforePropertyName'; | |
| } | |
| } else { | |
| const current = stack[stack.length - 1]; | |
| if (current == null) { | |
| parseState = 'end'; | |
| } else if (Array.isArray(current)) { | |
| parseState = 'afterArrayValue'; | |
| } else { | |
| parseState = 'afterPropertyValue'; | |
| } | |
| } | |
| } | |
| function pop () { | |
| stack.pop(); | |
| const current = stack[stack.length - 1]; | |
| if (current == null) { | |
| parseState = 'end'; | |
| } else if (Array.isArray(current)) { | |
| parseState = 'afterArrayValue'; | |
| } else { | |
| parseState = 'afterPropertyValue'; | |
| } | |
| } | |
| // This code is unreachable. | |
| // function invalidParseState () { | |
| // return new Error(`JSON5: invalid parse state '${parseState}'`) | |
| // } | |
| // This code is unreachable. | |
| // function invalidLexState (state) { | |
| // return new Error(`JSON5: invalid lex state '${state}'`) | |
| // } | |
| function invalidChar (c) { | |
| if (c === undefined) { | |
| return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) | |
| } | |
| return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) | |
| } | |
| function invalidEOF () { | |
| return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) | |
| } | |
| // This code is unreachable. | |
| // function invalidToken () { | |
| // if (token.type === 'eof') { | |
| // return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) | |
| // } | |
| // const c = String.fromCodePoint(token.value.codePointAt(0)) | |
| // return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) | |
| // } | |
| function invalidIdentifier () { | |
| column -= 5; | |
| return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`) | |
| } | |
| function separatorChar (c) { | |
| console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`); | |
| } | |
| function formatChar (c) { | |
| const replacements = { | |
| "'": "\\'", | |
| '"': '\\"', | |
| '\\': '\\\\', | |
| '\b': '\\b', | |
| '\f': '\\f', | |
| '\n': '\\n', | |
| '\r': '\\r', | |
| '\t': '\\t', | |
| '\v': '\\v', | |
| '\0': '\\0', | |
| '\u2028': '\\u2028', | |
| '\u2029': '\\u2029', | |
| }; | |
| if (replacements[c]) { | |
| return replacements[c] | |
| } | |
| if (c < ' ') { | |
| const hexString = c.charCodeAt(0).toString(16); | |
| return '\\x' + ('00' + hexString).substring(hexString.length) | |
| } | |
| return c | |
| } | |
| function syntaxError (message) { | |
| const err = new SyntaxError(message); | |
| err.lineNumber = line; | |
| err.columnNumber = column; | |
| return err | |
| } | |
| var stringify = function stringify (value, replacer, space) { | |
| const stack = []; | |
| let indent = ''; | |
| let propertyList; | |
| let replacerFunc; | |
| let gap = ''; | |
| let quote; | |
| if ( | |
| replacer != null && | |
| typeof replacer === 'object' && | |
| !Array.isArray(replacer) | |
| ) { | |
| space = replacer.space; | |
| quote = replacer.quote; | |
| replacer = replacer.replacer; | |
| } | |
| if (typeof replacer === 'function') { | |
| replacerFunc = replacer; | |
| } else if (Array.isArray(replacer)) { | |
| propertyList = []; | |
| for (const v of replacer) { | |
| let item; | |
| if (typeof v === 'string') { | |
| item = v; | |
| } else if ( | |
| typeof v === 'number' || | |
| v instanceof String || | |
| v instanceof Number | |
| ) { | |
| item = String(v); | |
| } | |
| if (item !== undefined && propertyList.indexOf(item) < 0) { | |
| propertyList.push(item); | |
| } | |
| } | |
| } | |
| if (space instanceof Number) { | |
| space = Number(space); | |
| } else if (space instanceof String) { | |
| space = String(space); | |
| } | |
| if (typeof space === 'number') { | |
| if (space > 0) { | |
| space = Math.min(10, Math.floor(space)); | |
| gap = ' '.substr(0, space); | |
| } | |
| } else if (typeof space === 'string') { | |
| gap = space.substr(0, 10); | |
| } | |
| return serializeProperty('', {'': value}) | |
| function serializeProperty (key, holder) { | |
| let value = holder[key]; | |
| if (value != null) { | |
| if (typeof value.toJSON5 === 'function') { | |
| value = value.toJSON5(key); | |
| } else if (typeof value.toJSON === 'function') { | |
| value = value.toJSON(key); | |
| } | |
| } | |
| if (replacerFunc) { | |
| value = replacerFunc.call(holder, key, value); | |
| } | |
| if (value instanceof Number) { | |
| value = Number(value); | |
| } else if (value instanceof String) { | |
| value = String(value); | |
| } else if (value instanceof Boolean) { | |
| value = value.valueOf(); | |
| } | |
| switch (value) { | |
| case null: return 'null' | |
| case true: return 'true' | |
| case false: return 'false' | |
| } | |
| if (typeof value === 'string') { | |
| return quoteString(value, false) | |
| } | |
| if (typeof value === 'number') { | |
| return String(value) | |
| } | |
| if (typeof value === 'object') { | |
| return Array.isArray(value) ? serializeArray(value) : serializeObject(value) | |
| } | |
| return undefined | |
| } | |
| function quoteString (value) { | |
| const quotes = { | |
| "'": 0.1, | |
| '"': 0.2, | |
| }; | |
| const replacements = { | |
| "'": "\\'", | |
| '"': '\\"', | |
| '\\': '\\\\', | |
| '\b': '\\b', | |
| '\f': '\\f', | |
| '\n': '\\n', | |
| '\r': '\\r', | |
| '\t': '\\t', | |
| '\v': '\\v', | |
| '\0': '\\0', | |
| '\u2028': '\\u2028', | |
| '\u2029': '\\u2029', | |
| }; | |
| let product = ''; | |
| for (const c of value) { | |
| switch (c) { | |
| case "'": | |
| case '"': | |
| quotes[c]++; | |
| product += c; | |
| continue | |
| } | |
| if (replacements[c]) { | |
| product += replacements[c]; | |
| continue | |
| } | |
| if (c < ' ') { | |
| let hexString = c.charCodeAt(0).toString(16); | |
| product += '\\x' + ('00' + hexString).substring(hexString.length); | |
| continue | |
| } | |
| product += c; | |
| } | |
| const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b); | |
| product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]); | |
| return quoteChar + product + quoteChar | |
| } | |
| function serializeObject (value) { | |
| if (stack.indexOf(value) >= 0) { | |
| throw TypeError('Converting circular structure to JSON5') | |
| } | |
| stack.push(value); | |
| let stepback = indent; | |
| indent = indent + gap; | |
| let keys = propertyList || Object.keys(value); | |
| let partial = []; | |
| for (const key of keys) { | |
| const propertyString = serializeProperty(key, value); | |
| if (propertyString !== undefined) { | |
| let member = serializeKey(key) + ':'; | |
| if (gap !== '') { | |
| member += ' '; | |
| } | |
| member += propertyString; | |
| partial.push(member); | |
| } | |
| } | |
| let final; | |
| if (partial.length === 0) { | |
| final = '{}'; | |
| } else { | |
| let properties; | |
| if (gap === '') { | |
| properties = partial.join(','); | |
| final = '{' + properties + '}'; | |
| } else { | |
| let separator = ',\n' + indent; | |
| properties = partial.join(separator); | |
| final = '{\n' + indent + properties + ',\n' + stepback + '}'; | |
| } | |
| } | |
| stack.pop(); | |
| indent = stepback; | |
| return final | |
| } | |
| function serializeKey (key) { | |
| if (key.length === 0) { | |
| return quoteString(key, true) | |
| } | |
| const firstChar = String.fromCodePoint(key.codePointAt(0)); | |
| if (!util.isIdStartChar(firstChar)) { | |
| return quoteString(key, true) | |
| } | |
| for (let i = firstChar.length; i < key.length; i++) { | |
| if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { | |
| return quoteString(key, true) | |
| } | |
| } | |
| return key | |
| } | |
| function serializeArray (value) { | |
| if (stack.indexOf(value) >= 0) { | |
| throw TypeError('Converting circular structure to JSON5') | |
| } | |
| stack.push(value); | |
| let stepback = indent; | |
| indent = indent + gap; | |
| let partial = []; | |
| for (let i = 0; i < value.length; i++) { | |
| const propertyString = serializeProperty(String(i), value); | |
| partial.push((propertyString !== undefined) ? propertyString : 'null'); | |
| } | |
| let final; | |
| if (partial.length === 0) { | |
| final = '[]'; | |
| } else { | |
| if (gap === '') { | |
| let properties = partial.join(','); | |
| final = '[' + properties + ']'; | |
| } else { | |
| let separator = ',\n' + indent; | |
| let properties = partial.join(separator); | |
| final = '[\n' + indent + properties + ',\n' + stepback + ']'; | |
| } | |
| } | |
| stack.pop(); | |
| indent = stepback; | |
| return final | |
| } | |
| }; | |
| const JSON5 = { | |
| parse, | |
| stringify, | |
| }; | |
| var lib = JSON5; | |
| export default lib; |
| #!/usr/bin/env node | |
| const fs = require('fs') | |
| const path = require('path') | |
| const minimist = require('minimist') | |
| const pkg = require('../package.json') | |
| const JSON5 = require('./') | |
| const argv = minimist(process.argv.slice(2), { | |
| alias: { | |
| 'convert': 'c', | |
| 'space': 's', | |
| 'validate': 'v', | |
| 'out-file': 'o', | |
| 'version': 'V', | |
| 'help': 'h', | |
| }, | |
| boolean: [ | |
| 'convert', | |
| 'validate', | |
| 'version', | |
| 'help', | |
| ], | |
| string: [ | |
| 'space', | |
| 'out-file', | |
| ], | |
| }) | |
| if (argv.version) { | |
| version() | |
| } else if (argv.help) { | |
| usage() | |
| } else { | |
| const inFilename = argv._[0] | |
| let readStream | |
| if (inFilename) { | |
| readStream = fs.createReadStream(inFilename) | |
| } else { | |
| readStream = process.stdin | |
| } | |
| let json5 = '' | |
| readStream.on('data', data => { | |
| json5 += data | |
| }) | |
| readStream.on('end', () => { | |
| let space | |
| if (argv.space === 't' || argv.space === 'tab') { | |
| space = '\t' | |
| } else { | |
| space = Number(argv.space) | |
| } | |
| let value | |
| try { | |
| value = JSON5.parse(json5) | |
| if (!argv.validate) { | |
| const json = JSON.stringify(value, null, space) | |
| let writeStream | |
| // --convert is for backward compatibility with v0.5.1. If | |
| // specified with <file> and not --out-file, then a file with | |
| // the same name but with a .json extension will be written. | |
| if (argv.convert && inFilename && !argv.o) { | |
| const parsedFilename = path.parse(inFilename) | |
| const outFilename = path.format( | |
| Object.assign( | |
| parsedFilename, | |
| {base: path.basename(parsedFilename.base, parsedFilename.ext) + '.json'} | |
| ) | |
| ) | |
| writeStream = fs.createWriteStream(outFilename) | |
| } else if (argv.o) { | |
| writeStream = fs.createWriteStream(argv.o) | |
| } else { | |
| writeStream = process.stdout | |
| } | |
| writeStream.write(json) | |
| } | |
| } catch (err) { | |
| console.error(err.message) | |
| process.exit(1) | |
| } | |
| }) | |
| } | |
| function version () { | |
| console.log(pkg.version) | |
| } | |
| function usage () { | |
| console.log( | |
| ` | |
| Usage: json5 [options] <file> | |
| If <file> is not provided, then STDIN is used. | |
| Options: | |
| -s, --space The number of spaces to indent or 't' for tabs | |
| -o, --out-file [file] Output to the specified file, otherwise STDOUT | |
| -v, --validate Validate JSON5 but do not output JSON | |
| -V, --version Output the version number | |
| -h, --help Output usage information` | |
| ) | |
| } |
| const parse = require('./parse') | |
| const stringify = require('./stringify') | |
| const JSON5 = { | |
| parse, | |
| stringify, | |
| } | |
| module.exports = JSON5 |
| const util = require('./util') | |
| let source | |
| let parseState | |
| let stack | |
| let pos | |
| let line | |
| let column | |
| let token | |
| let key | |
| let root | |
| module.exports = function parse (text, reviver) { | |
| source = String(text) | |
| parseState = 'start' | |
| stack = [] | |
| pos = 0 | |
| line = 1 | |
| column = 0 | |
| token = undefined | |
| key = undefined | |
| root = undefined | |
| do { | |
| token = lex() | |
| // This code is unreachable. | |
| // if (!parseStates[parseState]) { | |
| // throw invalidParseState() | |
| // } | |
| parseStates[parseState]() | |
| } while (token.type !== 'eof') | |
| if (typeof reviver === 'function') { | |
| return internalize({'': root}, '', reviver) | |
| } | |
| return root | |
| } | |
| function internalize (holder, name, reviver) { | |
| const value = holder[name] | |
| if (value != null && typeof value === 'object') { | |
| for (const key in value) { | |
| const replacement = internalize(value, key, reviver) | |
| if (replacement === undefined) { | |
| delete value[key] | |
| } else { | |
| value[key] = replacement | |
| } | |
| } | |
| } | |
| return reviver.call(holder, name, value) | |
| } | |
| let lexState | |
| let buffer | |
| let doubleQuote | |
| let sign | |
| let c | |
| function lex () { | |
| lexState = 'default' | |
| buffer = '' | |
| doubleQuote = false | |
| sign = 1 | |
| for (;;) { | |
| c = peek() | |
| // This code is unreachable. | |
| // if (!lexStates[lexState]) { | |
| // throw invalidLexState(lexState) | |
| // } | |
| const token = lexStates[lexState]() | |
| if (token) { | |
| return token | |
| } | |
| } | |
| } | |
| function peek () { | |
| if (source[pos]) { | |
| return String.fromCodePoint(source.codePointAt(pos)) | |
| } | |
| } | |
| function read () { | |
| const c = peek() | |
| if (c === '\n') { | |
| line++ | |
| column = 0 | |
| } else if (c) { | |
| column += c.length | |
| } else { | |
| column++ | |
| } | |
| if (c) { | |
| pos += c.length | |
| } | |
| return c | |
| } | |
| const lexStates = { | |
| default () { | |
| switch (c) { | |
| case '\t': | |
| case '\v': | |
| case '\f': | |
| case ' ': | |
| case '\u00A0': | |
| case '\uFEFF': | |
| case '\n': | |
| case '\r': | |
| case '\u2028': | |
| case '\u2029': | |
| read() | |
| return | |
| case '/': | |
| read() | |
| lexState = 'comment' | |
| return | |
| case undefined: | |
| read() | |
| return newToken('eof') | |
| } | |
| if (util.isSpaceSeparator(c)) { | |
| read() | |
| return | |
| } | |
| // This code is unreachable. | |
| // if (!lexStates[parseState]) { | |
| // throw invalidLexState(parseState) | |
| // } | |
| return lexStates[parseState]() | |
| }, | |
| comment () { | |
| switch (c) { | |
| case '*': | |
| read() | |
| lexState = 'multiLineComment' | |
| return | |
| case '/': | |
| read() | |
| lexState = 'singleLineComment' | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| multiLineComment () { | |
| switch (c) { | |
| case '*': | |
| read() | |
| lexState = 'multiLineCommentAsterisk' | |
| return | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| read() | |
| }, | |
| multiLineCommentAsterisk () { | |
| switch (c) { | |
| case '*': | |
| read() | |
| return | |
| case '/': | |
| read() | |
| lexState = 'default' | |
| return | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| read() | |
| lexState = 'multiLineComment' | |
| }, | |
| singleLineComment () { | |
| switch (c) { | |
| case '\n': | |
| case '\r': | |
| case '\u2028': | |
| case '\u2029': | |
| read() | |
| lexState = 'default' | |
| return | |
| case undefined: | |
| read() | |
| return newToken('eof') | |
| } | |
| read() | |
| }, | |
| value () { | |
| switch (c) { | |
| case '{': | |
| case '[': | |
| return newToken('punctuator', read()) | |
| case 'n': | |
| read() | |
| literal('ull') | |
| return newToken('null', null) | |
| case 't': | |
| read() | |
| literal('rue') | |
| return newToken('boolean', true) | |
| case 'f': | |
| read() | |
| literal('alse') | |
| return newToken('boolean', false) | |
| case '-': | |
| case '+': | |
| if (read() === '-') { | |
| sign = -1 | |
| } | |
| lexState = 'sign' | |
| return | |
| case '.': | |
| buffer = read() | |
| lexState = 'decimalPointLeading' | |
| return | |
| case '0': | |
| buffer = read() | |
| lexState = 'zero' | |
| return | |
| case '1': | |
| case '2': | |
| case '3': | |
| case '4': | |
| case '5': | |
| case '6': | |
| case '7': | |
| case '8': | |
| case '9': | |
| buffer = read() | |
| lexState = 'decimalInteger' | |
| return | |
| case 'I': | |
| read() | |
| literal('nfinity') | |
| return newToken('numeric', Infinity) | |
| case 'N': | |
| read() | |
| literal('aN') | |
| return newToken('numeric', NaN) | |
| case '"': | |
| case "'": | |
| doubleQuote = (read() === '"') | |
| buffer = '' | |
| lexState = 'string' | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| identifierNameStartEscape () { | |
| if (c !== 'u') { | |
| throw invalidChar(read()) | |
| } | |
| read() | |
| const u = unicodeEscape() | |
| switch (u) { | |
| case '$': | |
| case '_': | |
| break | |
| default: | |
| if (!util.isIdStartChar(u)) { | |
| throw invalidIdentifier() | |
| } | |
| break | |
| } | |
| buffer += u | |
| lexState = 'identifierName' | |
| }, | |
| identifierName () { | |
| switch (c) { | |
| case '$': | |
| case '_': | |
| case '\u200C': | |
| case '\u200D': | |
| buffer += read() | |
| return | |
| case '\\': | |
| read() | |
| lexState = 'identifierNameEscape' | |
| return | |
| } | |
| if (util.isIdContinueChar(c)) { | |
| buffer += read() | |
| return | |
| } | |
| return newToken('identifier', buffer) | |
| }, | |
| identifierNameEscape () { | |
| if (c !== 'u') { | |
| throw invalidChar(read()) | |
| } | |
| read() | |
| const u = unicodeEscape() | |
| switch (u) { | |
| case '$': | |
| case '_': | |
| case '\u200C': | |
| case '\u200D': | |
| break | |
| default: | |
| if (!util.isIdContinueChar(u)) { | |
| throw invalidIdentifier() | |
| } | |
| break | |
| } | |
| buffer += u | |
| lexState = 'identifierName' | |
| }, | |
| sign () { | |
| switch (c) { | |
| case '.': | |
| buffer = read() | |
| lexState = 'decimalPointLeading' | |
| return | |
| case '0': | |
| buffer = read() | |
| lexState = 'zero' | |
| return | |
| case '1': | |
| case '2': | |
| case '3': | |
| case '4': | |
| case '5': | |
| case '6': | |
| case '7': | |
| case '8': | |
| case '9': | |
| buffer = read() | |
| lexState = 'decimalInteger' | |
| return | |
| case 'I': | |
| read() | |
| literal('nfinity') | |
| return newToken('numeric', sign * Infinity) | |
| case 'N': | |
| read() | |
| literal('aN') | |
| return newToken('numeric', NaN) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| zero () { | |
| switch (c) { | |
| case '.': | |
| buffer += read() | |
| lexState = 'decimalPoint' | |
| return | |
| case 'e': | |
| case 'E': | |
| buffer += read() | |
| lexState = 'decimalExponent' | |
| return | |
| case 'x': | |
| case 'X': | |
| buffer += read() | |
| lexState = 'hexadecimal' | |
| return | |
| } | |
| return newToken('numeric', sign * 0) | |
| }, | |
| decimalInteger () { | |
| switch (c) { | |
| case '.': | |
| buffer += read() | |
| lexState = 'decimalPoint' | |
| return | |
| case 'e': | |
| case 'E': | |
| buffer += read() | |
| lexState = 'decimalExponent' | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read() | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| decimalPointLeading () { | |
| if (util.isDigit(c)) { | |
| buffer += read() | |
| lexState = 'decimalFraction' | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| decimalPoint () { | |
| switch (c) { | |
| case 'e': | |
| case 'E': | |
| buffer += read() | |
| lexState = 'decimalExponent' | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read() | |
| lexState = 'decimalFraction' | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| decimalFraction () { | |
| switch (c) { | |
| case 'e': | |
| case 'E': | |
| buffer += read() | |
| lexState = 'decimalExponent' | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read() | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| decimalExponent () { | |
| switch (c) { | |
| case '+': | |
| case '-': | |
| buffer += read() | |
| lexState = 'decimalExponentSign' | |
| return | |
| } | |
| if (util.isDigit(c)) { | |
| buffer += read() | |
| lexState = 'decimalExponentInteger' | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| decimalExponentSign () { | |
| if (util.isDigit(c)) { | |
| buffer += read() | |
| lexState = 'decimalExponentInteger' | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| decimalExponentInteger () { | |
| if (util.isDigit(c)) { | |
| buffer += read() | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| hexadecimal () { | |
| if (util.isHexDigit(c)) { | |
| buffer += read() | |
| lexState = 'hexadecimalInteger' | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| hexadecimalInteger () { | |
| if (util.isHexDigit(c)) { | |
| buffer += read() | |
| return | |
| } | |
| return newToken('numeric', sign * Number(buffer)) | |
| }, | |
| string () { | |
| switch (c) { | |
| case '\\': | |
| read() | |
| buffer += escape() | |
| return | |
| case '"': | |
| if (doubleQuote) { | |
| read() | |
| return newToken('string', buffer) | |
| } | |
| buffer += read() | |
| return | |
| case "'": | |
| if (!doubleQuote) { | |
| read() | |
| return newToken('string', buffer) | |
| } | |
| buffer += read() | |
| return | |
| case '\n': | |
| case '\r': | |
| throw invalidChar(read()) | |
| case '\u2028': | |
| case '\u2029': | |
| separatorChar(c) | |
| break | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| buffer += read() | |
| }, | |
| start () { | |
| switch (c) { | |
| case '{': | |
| case '[': | |
| return newToken('punctuator', read()) | |
| // This code is unreachable since the default lexState handles eof. | |
| // case undefined: | |
| // return newToken('eof') | |
| } | |
| lexState = 'value' | |
| }, | |
| beforePropertyName () { | |
| switch (c) { | |
| case '$': | |
| case '_': | |
| buffer = read() | |
| lexState = 'identifierName' | |
| return | |
| case '\\': | |
| read() | |
| lexState = 'identifierNameStartEscape' | |
| return | |
| case '}': | |
| return newToken('punctuator', read()) | |
| case '"': | |
| case "'": | |
| doubleQuote = (read() === '"') | |
| lexState = 'string' | |
| return | |
| } | |
| if (util.isIdStartChar(c)) { | |
| buffer += read() | |
| lexState = 'identifierName' | |
| return | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| afterPropertyName () { | |
| if (c === ':') { | |
| return newToken('punctuator', read()) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| beforePropertyValue () { | |
| lexState = 'value' | |
| }, | |
| afterPropertyValue () { | |
| switch (c) { | |
| case ',': | |
| case '}': | |
| return newToken('punctuator', read()) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| beforeArrayValue () { | |
| if (c === ']') { | |
| return newToken('punctuator', read()) | |
| } | |
| lexState = 'value' | |
| }, | |
| afterArrayValue () { | |
| switch (c) { | |
| case ',': | |
| case ']': | |
| return newToken('punctuator', read()) | |
| } | |
| throw invalidChar(read()) | |
| }, | |
| end () { | |
| // This code is unreachable since it's handled by the default lexState. | |
| // if (c === undefined) { | |
| // read() | |
| // return newToken('eof') | |
| // } | |
| throw invalidChar(read()) | |
| }, | |
| } | |
| function newToken (type, value) { | |
| return { | |
| type, | |
| value, | |
| line, | |
| column, | |
| } | |
| } | |
| function literal (s) { | |
| for (const c of s) { | |
| const p = peek() | |
| if (p !== c) { | |
| throw invalidChar(read()) | |
| } | |
| read() | |
| } | |
| } | |
| function escape () { | |
| const c = peek() | |
| switch (c) { | |
| case 'b': | |
| read() | |
| return '\b' | |
| case 'f': | |
| read() | |
| return '\f' | |
| case 'n': | |
| read() | |
| return '\n' | |
| case 'r': | |
| read() | |
| return '\r' | |
| case 't': | |
| read() | |
| return '\t' | |
| case 'v': | |
| read() | |
| return '\v' | |
| case '0': | |
| read() | |
| if (util.isDigit(peek())) { | |
| throw invalidChar(read()) | |
| } | |
| return '\0' | |
| case 'x': | |
| read() | |
| return hexEscape() | |
| case 'u': | |
| read() | |
| return unicodeEscape() | |
| case '\n': | |
| case '\u2028': | |
| case '\u2029': | |
| read() | |
| return '' | |
| case '\r': | |
| read() | |
| if (peek() === '\n') { | |
| read() | |
| } | |
| return '' | |
| case '1': | |
| case '2': | |
| case '3': | |
| case '4': | |
| case '5': | |
| case '6': | |
| case '7': | |
| case '8': | |
| case '9': | |
| throw invalidChar(read()) | |
| case undefined: | |
| throw invalidChar(read()) | |
| } | |
| return read() | |
| } | |
| function hexEscape () { | |
| let buffer = '' | |
| let c = peek() | |
| if (!util.isHexDigit(c)) { | |
| throw invalidChar(read()) | |
| } | |
| buffer += read() | |
| c = peek() | |
| if (!util.isHexDigit(c)) { | |
| throw invalidChar(read()) | |
| } | |
| buffer += read() | |
| return String.fromCodePoint(parseInt(buffer, 16)) | |
| } | |
| function unicodeEscape () { | |
| let buffer = '' | |
| let count = 4 | |
| while (count-- > 0) { | |
| const c = peek() | |
| if (!util.isHexDigit(c)) { | |
| throw invalidChar(read()) | |
| } | |
| buffer += read() | |
| } | |
| return String.fromCodePoint(parseInt(buffer, 16)) | |
| } | |
| const parseStates = { | |
| start () { | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| push() | |
| }, | |
| beforePropertyName () { | |
| switch (token.type) { | |
| case 'identifier': | |
| case 'string': | |
| key = token.value | |
| parseState = 'afterPropertyName' | |
| return | |
| case 'punctuator': | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.value !== '}') { | |
| // throw invalidToken() | |
| // } | |
| pop() | |
| return | |
| case 'eof': | |
| throw invalidEOF() | |
| } | |
| // This code is unreachable since it's handled by the lexState. | |
| // throw invalidToken() | |
| }, | |
| afterPropertyName () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'punctuator' || token.value !== ':') { | |
| // throw invalidToken() | |
| // } | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| parseState = 'beforePropertyValue' | |
| }, | |
| beforePropertyValue () { | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| push() | |
| }, | |
| beforeArrayValue () { | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| if (token.type === 'punctuator' && token.value === ']') { | |
| pop() | |
| return | |
| } | |
| push() | |
| }, | |
| afterPropertyValue () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'punctuator') { | |
| // throw invalidToken() | |
| // } | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| switch (token.value) { | |
| case ',': | |
| parseState = 'beforePropertyName' | |
| return | |
| case '}': | |
| pop() | |
| } | |
| // This code is unreachable since it's handled by the lexState. | |
| // throw invalidToken() | |
| }, | |
| afterArrayValue () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'punctuator') { | |
| // throw invalidToken() | |
| // } | |
| if (token.type === 'eof') { | |
| throw invalidEOF() | |
| } | |
| switch (token.value) { | |
| case ',': | |
| parseState = 'beforeArrayValue' | |
| return | |
| case ']': | |
| pop() | |
| } | |
| // This code is unreachable since it's handled by the lexState. | |
| // throw invalidToken() | |
| }, | |
| end () { | |
| // This code is unreachable since it's handled by the lexState. | |
| // if (token.type !== 'eof') { | |
| // throw invalidToken() | |
| // } | |
| }, | |
| } | |
| function push () { | |
| let value | |
| switch (token.type) { | |
| case 'punctuator': | |
| switch (token.value) { | |
| case '{': | |
| value = {} | |
| break | |
| case '[': | |
| value = [] | |
| break | |
| } | |
| break | |
| case 'null': | |
| case 'boolean': | |
| case 'numeric': | |
| case 'string': | |
| value = token.value | |
| break | |
| // This code is unreachable. | |
| // default: | |
| // throw invalidToken() | |
| } | |
| if (root === undefined) { | |
| root = value | |
| } else { | |
| const parent = stack[stack.length - 1] | |
| if (Array.isArray(parent)) { | |
| parent.push(value) | |
| } else { | |
| parent[key] = value | |
| } | |
| } | |
| if (value !== null && typeof value === 'object') { | |
| stack.push(value) | |
| if (Array.isArray(value)) { | |
| parseState = 'beforeArrayValue' | |
| } else { | |
| parseState = 'beforePropertyName' | |
| } | |
| } else { | |
| const current = stack[stack.length - 1] | |
| if (current == null) { | |
| parseState = 'end' | |
| } else if (Array.isArray(current)) { | |
| parseState = 'afterArrayValue' | |
| } else { | |
| parseState = 'afterPropertyValue' | |
| } | |
| } | |
| } | |
| function pop () { | |
| stack.pop() | |
| const current = stack[stack.length - 1] | |
| if (current == null) { | |
| parseState = 'end' | |
| } else if (Array.isArray(current)) { | |
| parseState = 'afterArrayValue' | |
| } else { | |
| parseState = 'afterPropertyValue' | |
| } | |
| } | |
| // This code is unreachable. | |
| // function invalidParseState () { | |
| // return new Error(`JSON5: invalid parse state '${parseState}'`) | |
| // } | |
| // This code is unreachable. | |
| // function invalidLexState (state) { | |
| // return new Error(`JSON5: invalid lex state '${state}'`) | |
| // } | |
| function invalidChar (c) { | |
| if (c === undefined) { | |
| return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) | |
| } | |
| return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) | |
| } | |
| function invalidEOF () { | |
| return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) | |
| } | |
| // This code is unreachable. | |
| // function invalidToken () { | |
| // if (token.type === 'eof') { | |
| // return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) | |
| // } | |
| // const c = String.fromCodePoint(token.value.codePointAt(0)) | |
| // return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) | |
| // } | |
| function invalidIdentifier () { | |
| column -= 5 | |
| return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`) | |
| } | |
| function separatorChar (c) { | |
| console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`) | |
| } | |
| function formatChar (c) { | |
| const replacements = { | |
| "'": "\\'", | |
| '"': '\\"', | |
| '\\': '\\\\', | |
| '\b': '\\b', | |
| '\f': '\\f', | |
| '\n': '\\n', | |
| '\r': '\\r', | |
| '\t': '\\t', | |
| '\v': '\\v', | |
| '\0': '\\0', | |
| '\u2028': '\\u2028', | |
| '\u2029': '\\u2029', | |
| } | |
| if (replacements[c]) { | |
| return replacements[c] | |
| } | |
| if (c < ' ') { | |
| const hexString = c.charCodeAt(0).toString(16) | |
| return '\\x' + ('00' + hexString).substring(hexString.length) | |
| } | |
| return c | |
| } | |
| function syntaxError (message) { | |
| const err = new SyntaxError(message) | |
| err.lineNumber = line | |
| err.columnNumber = column | |
| return err | |
| } |
| const fs = require('fs') | |
| const JSON5 = require('./') | |
| // eslint-disable-next-line node/no-deprecated-api | |
| require.extensions['.json5'] = function (module, filename) { | |
| const content = fs.readFileSync(filename, 'utf8') | |
| try { | |
| module.exports = JSON5.parse(content) | |
| } catch (err) { | |
| err.message = filename + ': ' + err.message | |
| throw err | |
| } | |
| } |
| // This file is for backward compatibility with v0.5.1. | |
| require('./register') | |
| console.warn("'json5/require' is deprecated. Please use 'json5/register' instead.") |
| const util = require('./util') | |
| module.exports = function stringify (value, replacer, space) { | |
| const stack = [] | |
| let indent = '' | |
| let propertyList | |
| let replacerFunc | |
| let gap = '' | |
| let quote | |
| if ( | |
| replacer != null && | |
| typeof replacer === 'object' && | |
| !Array.isArray(replacer) | |
| ) { | |
| space = replacer.space | |
| quote = replacer.quote | |
| replacer = replacer.replacer | |
| } | |
| if (typeof replacer === 'function') { | |
| replacerFunc = replacer | |
| } else if (Array.isArray(replacer)) { | |
| propertyList = [] | |
| for (const v of replacer) { | |
| let item | |
| if (typeof v === 'string') { | |
| item = v | |
| } else if ( | |
| typeof v === 'number' || | |
| v instanceof String || | |
| v instanceof Number | |
| ) { | |
| item = String(v) | |
| } | |
| if (item !== undefined && propertyList.indexOf(item) < 0) { | |
| propertyList.push(item) | |
| } | |
| } | |
| } | |
| if (space instanceof Number) { | |
| space = Number(space) | |
| } else if (space instanceof String) { | |
| space = String(space) | |
| } | |
| if (typeof space === 'number') { | |
| if (space > 0) { | |
| space = Math.min(10, Math.floor(space)) | |
| gap = ' '.substr(0, space) | |
| } | |
| } else if (typeof space === 'string') { | |
| gap = space.substr(0, 10) | |
| } | |
| return serializeProperty('', {'': value}) | |
| function serializeProperty (key, holder) { | |
| let value = holder[key] | |
| if (value != null) { | |
| if (typeof value.toJSON5 === 'function') { | |
| value = value.toJSON5(key) | |
| } else if (typeof value.toJSON === 'function') { | |
| value = value.toJSON(key) | |
| } | |
| } | |
| if (replacerFunc) { | |
| value = replacerFunc.call(holder, key, value) | |
| } | |
| if (value instanceof Number) { | |
| value = Number(value) | |
| } else if (value instanceof String) { | |
| value = String(value) | |
| } else if (value instanceof Boolean) { | |
| value = value.valueOf() | |
| } | |
| switch (value) { | |
| case null: return 'null' | |
| case true: return 'true' | |
| case false: return 'false' | |
| } | |
| if (typeof value === 'string') { | |
| return quoteString(value, false) | |
| } | |
| if (typeof value === 'number') { | |
| return String(value) | |
| } | |
| if (typeof value === 'object') { | |
| return Array.isArray(value) ? serializeArray(value) : serializeObject(value) | |
| } | |
| return undefined | |
| } | |
| function quoteString (value) { | |
| const quotes = { | |
| "'": 0.1, | |
| '"': 0.2, | |
| } | |
| const replacements = { | |
| "'": "\\'", | |
| '"': '\\"', | |
| '\\': '\\\\', | |
| '\b': '\\b', | |
| '\f': '\\f', | |
| '\n': '\\n', | |
| '\r': '\\r', | |
| '\t': '\\t', | |
| '\v': '\\v', | |
| '\0': '\\0', | |
| '\u2028': '\\u2028', | |
| '\u2029': '\\u2029', | |
| } | |
| let product = '' | |
| for (const c of value) { | |
| switch (c) { | |
| case "'": | |
| case '"': | |
| quotes[c]++ | |
| product += c | |
| continue | |
| } | |
| if (replacements[c]) { | |
| product += replacements[c] | |
| continue | |
| } | |
| if (c < ' ') { | |
| let hexString = c.charCodeAt(0).toString(16) | |
| product += '\\x' + ('00' + hexString).substring(hexString.length) | |
| continue | |
| } | |
| product += c | |
| } | |
| const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b) | |
| product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]) | |
| return quoteChar + product + quoteChar | |
| } | |
| function serializeObject (value) { | |
| if (stack.indexOf(value) >= 0) { | |
| throw TypeError('Converting circular structure to JSON5') | |
| } | |
| stack.push(value) | |
| let stepback = indent | |
| indent = indent + gap | |
| let keys = propertyList || Object.keys(value) | |
| let partial = [] | |
| for (const key of keys) { | |
| const propertyString = serializeProperty(key, value) | |
| if (propertyString !== undefined) { | |
| let member = serializeKey(key) + ':' | |
| if (gap !== '') { | |
| member += ' ' | |
| } | |
| member += propertyString | |
| partial.push(member) | |
| } | |
| } | |
| let final | |
| if (partial.length === 0) { | |
| final = '{}' | |
| } else { | |
| let properties | |
| if (gap === '') { | |
| properties = partial.join(',') | |
| final = '{' + properties + '}' | |
| } else { | |
| let separator = ',\n' + indent | |
| properties = partial.join(separator) | |
| final = '{\n' + indent + properties + ',\n' + stepback + '}' | |
| } | |
| } | |
| stack.pop() | |
| indent = stepback | |
| return final | |
| } | |
| function serializeKey (key) { | |
| if (key.length === 0) { | |
| return quoteString(key, true) | |
| } | |
| const firstChar = String.fromCodePoint(key.codePointAt(0)) | |
| if (!util.isIdStartChar(firstChar)) { | |
| return quoteString(key, true) | |
| } | |
| for (let i = firstChar.length; i < key.length; i++) { | |
| if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { | |
| return quoteString(key, true) | |
| } | |
| } | |
| return key | |
| } | |
| function serializeArray (value) { | |
| if (stack.indexOf(value) >= 0) { | |
| throw TypeError('Converting circular structure to JSON5') | |
| } | |
| stack.push(value) | |
| let stepback = indent | |
| indent = indent + gap | |
| let partial = [] | |
| for (let i = 0; i < value.length; i++) { | |
| const propertyString = serializeProperty(String(i), value) | |
| partial.push((propertyString !== undefined) ? propertyString : 'null') | |
| } | |
| let final | |
| if (partial.length === 0) { | |
| final = '[]' | |
| } else { | |
| if (gap === '') { | |
| let properties = partial.join(',') | |
| final = '[' + properties + ']' | |
| } else { | |
| let separator = ',\n' + indent | |
| let properties = partial.join(separator) | |
| final = '[\n' + indent + properties + ',\n' + stepback + ']' | |
| } | |
| } | |
| stack.pop() | |
| indent = stepback | |
| return final | |
| } | |
| } |
| // This is a generated file. Do not edit. | |
| module.exports.Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/ | |
| module.exports.ID_Start = /[\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\u0561-\u0587\u05D0-\u05EA\u05F0-\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\u08A0-\u08B4\u08B6-\u08BD\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\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\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\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\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-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\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\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\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\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\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-\uAB65\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]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/ | |
| module.exports.ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\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\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\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\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ |
| const unicode = require('../lib/unicode') | |
| module.exports = { | |
| isSpaceSeparator (c) { | |
| return unicode.Space_Separator.test(c) | |
| }, | |
| isIdStartChar (c) { | |
| return ( | |
| (c >= 'a' && c <= 'z') || | |
| (c >= 'A' && c <= 'Z') || | |
| (c === '$') || (c === '_') || | |
| unicode.ID_Start.test(c) | |
| ) | |
| }, | |
| isIdContinueChar (c) { | |
| return ( | |
| (c >= 'a' && c <= 'z') || | |
| (c >= 'A' && c <= 'Z') || | |
| (c >= '0' && c <= '9') || | |
| (c === '$') || (c === '_') || | |
| (c === '\u200C') || (c === '\u200D') || | |
| unicode.ID_Continue.test(c) | |
| ) | |
| }, | |
| isDigit (c) { | |
| return /[0-9]/.test(c) | |
| }, | |
| isHexDigit (c) { | |
| return /[0-9A-Fa-f]/.test(c) | |
| }, | |
| } |
MIT License
Copyright (c) 2012-2018 Aseem Kishore, and others.
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.
| { | |
| "name": "json5", | |
| "version": "2.1.0", | |
| "description": "JSON for humans.", | |
| "main": "lib/index.js", | |
| "bin": "lib/cli.js", | |
| "browser": "dist/index.js", | |
| "files": [ | |
| "lib/", | |
| "dist/" | |
| ], | |
| "engines": { | |
| "node": ">=6" | |
| }, | |
| "scripts": { | |
| "build": "rollup -c", | |
| "build-package": "node build/package.js", | |
| "build-unicode": "node build/unicode.js", | |
| "coverage": "tap --coverage-report html test", | |
| "lint": "eslint --fix .", | |
| "prepublishOnly": "npm run production", | |
| "preversion": "npm run production", | |
| "production": "npm run lint && npm test && npm run build", | |
| "test": "tap -Rspec --100 test", | |
| "version": "npm run build-package && git add package.json5" | |
| }, | |
| "repository": { | |
| "type": "git", | |
| "url": "git+https://github.com/json5/json5.git" | |
| }, | |
| "keywords": [ | |
| "json", | |
| "json5", | |
| "es5", | |
| "es2015", | |
| "ecmascript" | |
| ], | |
| "author": "Aseem Kishore <[email protected]>", | |
| "contributors": [ | |
| "Max Nanasy <[email protected]>", | |
| "Andrew Eisenberg <[email protected]>", | |
| "Jordan Tucker <[email protected]>" | |
| ], | |
| "license": "MIT", | |
| "bugs": { | |
| "url": "https://github.com/json5/json5/issues" | |
| }, | |
| "homepage": "http://json5.org/", | |
| "dependencies": { | |
| "minimist": "^1.2.0" | |
| }, | |
| "devDependencies": { | |
| "core-js": "^2.5.7", | |
| "eslint": "^5.3.0", | |
| "eslint-config-standard": "^11.0.0", | |
| "eslint-plugin-import": "^2.14.0", | |
| "eslint-plugin-node": "^7.0.1", | |
| "eslint-plugin-promise": "^3.8.0", | |
| "eslint-plugin-standard": "^3.1.0", | |
| "regenerate": "^1.4.0", | |
| "rollup": "^0.64.1", | |
| "rollup-plugin-buble": "^0.19.2", | |
| "rollup-plugin-commonjs": "^9.1.5", | |
| "rollup-plugin-node-resolve": "^3.3.0", | |
| "rollup-plugin-terser": "^1.0.1", | |
| "sinon": "^6.1.5", | |
| "tap": "^12.0.1", | |
| "unicode-10.0.0": "^0.7.5" | |
| } | |
| } |
The JSON5 Data Interchange Format (JSON5) is a superset of JSON that aims to alleviate some of the limitations of JSON by expanding its syntax to include some productions from ECMAScript 5.1.
This JavaScript library is the official reference implementation for JSON5 parsing and serialization libraries.
The following ECMAScript 5.1 features, which are not supported in JSON, have been extended to JSON5.
{
// comments
unquoted: 'and you can quote me on that',
singleQuotes: 'I can use "double quotes" here',
lineBreaks: "Look, Mom! \
No \\n's!",
hexadecimal: 0xdecaf,
leadingDecimalPoint: .8675309, andTrailing: 8675309.,
positiveSign: +1,
trailingComma: 'in objects', andIn: ['arrays',],
"backwardsCompatible": "with JSON",
}For a detailed explanation of the JSON5 format, please read the official specification.
npm install json5const JSON5 = require('json5')<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>This will create a global JSON5 variable.
The JSON5 API is compatible with the JSON API.
Parses a JSON5 string, constructing the JavaScript value or object described by the string. An optional reviver function can be provided to perform a transformation on the resulting object before it is returned.
JSON5.parse(text[, reviver])
text: The string to parse as JSON5.reviver: If a function, this prescribes how the value originally produced by
parsing is transformed, before being returned.The object corresponding to the given JSON5 text.
Converts a JavaScript value to a JSON5 string, optionally replacing values if a replacer function is specified, or optionally including only the specified properties if a replacer array is specified.
JSON5.stringify(value[, replacer[, space]])
JSON5.stringify(value[, options])
value: The value to convert to a JSON5 string.replacer: A function that alters the behavior of the stringification
process, or an array of String and Number objects that serve as a whitelist
for selecting/filtering the properties of the value object to be included in
the JSON5 string. If this value is null or not provided, all properties of the
object are included in the resulting JSON5 string.space: A String or Number object that's used to insert white space into the
output JSON5 string for readability purposes. If this is a Number, it
indicates the number of space characters to use as white space; this number is
capped at 10 (if it is greater, the value is just 10). Values less than 1
indicate that no space should be used. If this is a String, the string (or the
first 10 characters of the string, if it's longer than that) is used as white
space. If this parameter is not provided (or is null), no white space is used.
If white space is used, trailing commas will be used in objects and arrays.options: An object with the following properties:
replacer: Same as the replacer parameter.space: Same as the space parameter.quote: A String representing the quote character to use when serializing
strings.A JSON5 string representing the value.
When using Node.js, you can require() JSON5 files by adding the following
statement.
require('json5/lib/register')Then you can load a JSON5 file with a Node.js require() statement. For
example:
const config = require('./config.json5')Since JSON is more widely used than JSON5, this package includes a CLI for converting JSON5 to JSON and for validating the syntax of JSON5 documents.
npm install --global json5json5 [options] <file>If <file> is not provided, then STDIN is used.
-s, --space: The number of spaces to indent or t for tabs-o, --out-file [file]: Output to the specified file, otherwise STDOUT-v, --validate: Validate JSON5 but do not output JSON-V, --version: Output the version number-h, --help: Output usage informationgit clone https://github.com/json5/json5
cd json5
npm installWhen contributing code, please write relevant tests and run npm test and npm run lint before submitting pull requests. Please use an editor that supports
EditorConfig.
To report bugs or request features regarding the JSON5 data format, please submit an issue to the official specification repository.
To report bugs or request features regarding the JavaScript implentation of JSON5, please submit an issue to this repository.
MIT. See LICENSE.md for details.
Assem Kishore founded this project.
Michael Bolin independently arrived at and published some of these same ideas with awesome explanations and detail. Recommended reading: Suggested Improvements to JSON
Douglas Crockford of course designed and built JSON, but his state machine diagrams on the JSON website, as cheesy as it may sound, gave us motivation and confidence that building a new parser to implement these ideas was within reach! The original implementation of JSON5 was also modeled directly off of Doug’s open-source json_parse.js parser. We’re grateful for that clean and well-documented code.
Max Nanasy has been an early and prolific supporter, contributing multiple patches and ideas.
Andrew Eisenberg contributed the original
stringify method.
Jordan Tucker has aligned JSON5 more closely with ES5, wrote the official JSON5 specification, completely rewrote the codebase from the ground up, and is actively maintaining this project.
| /** | |
| * Helpers. | |
| */ | |
| var s = 1000; | |
| var m = s * 60; | |
| var h = m * 60; | |
| var d = h * 24; | |
| var w = d * 7; | |
| var y = d * 365.25; | |
| /** | |
| * Parse or format the given `val`. | |
| * | |
| * Options: | |
| * | |
| * - `long` verbose formatting [false] | |
| * | |
| * @param {String|Number} val | |
| * @param {Object} [options] | |
| * @throws {Error} throw an error if val is not a non-empty string or a number | |
| * @return {String|Number} | |
| * @api public | |
| */ | |
| module.exports = function(val, options) { | |
| options = options || {}; | |
| var type = typeof val; | |
| if (type === 'string' && val.length > 0) { | |
| return parse(val); | |
| } else if (type === 'number' && isNaN(val) === false) { | |
| return options.long ? fmtLong(val) : fmtShort(val); | |
| } | |
| throw new Error( | |
| 'val is not a non-empty string or a valid number. val=' + | |
| JSON.stringify(val) | |
| ); | |
| }; | |
| /** | |
| * Parse the given `str` and return milliseconds. | |
| * | |
| * @param {String} str | |
| * @return {Number} | |
| * @api private | |
| */ | |
| function parse(str) { | |
| str = String(str); | |
| if (str.length > 100) { | |
| return; | |
| } | |
| var match = /^((?:\d+)?\-?\d?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( | |
| str | |
| ); | |
| if (!match) { | |
| return; | |
| } | |
| var n = parseFloat(match[1]); | |
| var type = (match[2] || 'ms').toLowerCase(); | |
| switch (type) { | |
| case 'years': | |
| case 'year': | |
| case 'yrs': | |
| case 'yr': | |
| case 'y': | |
| return n * y; | |
| case 'weeks': | |
| case 'week': | |
| case 'w': | |
| return n * w; | |
| case 'days': | |
| case 'day': | |
| case 'd': | |
| return n * d; | |
| case 'hours': | |
| case 'hour': | |
| case 'hrs': | |
| case 'hr': | |
| case 'h': | |
| return n * h; | |
| case 'minutes': | |
| case 'minute': | |
| case 'mins': | |
| case 'min': | |
| case 'm': | |
| return n * m; | |
| case 'seconds': | |
| case 'second': | |
| case 'secs': | |
| case 'sec': | |
| case 's': | |
| return n * s; | |
| case 'milliseconds': | |
| case 'millisecond': | |
| case 'msecs': | |
| case 'msec': | |
| case 'ms': | |
| return n; | |
| default: | |
| return undefined; | |
| } | |
| } | |
| /** | |
| * Short format for `ms`. | |
| * | |
| * @param {Number} ms | |
| * @return {String} | |
| * @api private | |
| */ | |
| function fmtShort(ms) { | |
| var msAbs = Math.abs(ms); | |
| if (msAbs >= d) { | |
| return Math.round(ms / d) + 'd'; | |
| } | |
| if (msAbs >= h) { | |
| return Math.round(ms / h) + 'h'; | |
| } | |
| if (msAbs >= m) { | |
| return Math.round(ms / m) + 'm'; | |
| } | |
| if (msAbs >= s) { | |
| return Math.round(ms / s) + 's'; | |
| } | |
| return ms + 'ms'; | |
| } | |
| /** | |
| * Long format for `ms`. | |
| * | |
| * @param {Number} ms | |
| * @return {String} | |
| * @api private | |
| */ | |
| function fmtLong(ms) { | |
| var msAbs = Math.abs(ms); | |
| if (msAbs >= d) { | |
| return plural(ms, msAbs, d, 'day'); | |
| } | |
| if (msAbs >= h) { | |
| return plural(ms, msAbs, h, 'hour'); | |
| } | |
| if (msAbs >= m) { | |
| return plural(ms, msAbs, m, 'minute'); | |
| } | |
| if (msAbs >= s) { | |
| return plural(ms, msAbs, s, 'second'); | |
| } | |
| return ms + ' ms'; | |
| } | |
| /** | |
| * Pluralization helper. | |
| */ | |
| function plural(ms, msAbs, n, name) { | |
| var isPlural = msAbs >= n * 1.5; | |
| return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); | |
| } |
The MIT License (MIT)
Copyright (c) 2016 Zeit, 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.
| { | |
| "name": "ms", | |
| "version": "2.1.1", | |
| "description": "Tiny millisecond conversion utility", | |
| "repository": "zeit/ms", | |
| "main": "./index", | |
| "files": [ | |
| "index.js" | |
| ], | |
| "scripts": { | |
| "precommit": "lint-staged", | |
| "lint": "eslint lib/* bin/*", | |
| "test": "mocha tests.js" | |
| }, | |
| "eslintConfig": { | |
| "extends": "eslint:recommended", | |
| "env": { | |
| "node": true, | |
| "es6": true | |
| } | |
| }, | |
| "lint-staged": { | |
| "*.js": [ | |
| "npm run lint", | |
| "prettier --single-quote --write", | |
| "git add" | |
| ] | |
| }, | |
| "license": "MIT", | |
| "devDependencies": { | |
| "eslint": "4.12.1", | |
| "expect.js": "0.3.1", | |
| "husky": "0.14.3", | |
| "lint-staged": "5.0.0", | |
| "mocha": "4.0.1" | |
| } | |
| } |
Use this package to easily convert various time formats to milliseconds.
ms('2 days') // 172800000
ms('1d') // 86400000
ms('10h') // 36000000
ms('2.5 hrs') // 9000000
ms('2h') // 7200000
ms('1m') // 60000
ms('5s') // 5000
ms('1y') // 31557600000
ms('100') // 100
ms('-3 days') // -259200000
ms('-1h') // -3600000
ms('-200') // -200ms(60000) // "1m"
ms(2 * 60000) // "2m"
ms(-3 * 60000) // "-3m"
ms(ms('10 hours')) // "10h"ms(60000, { long: true }) // "1 minute"
ms(2 * 60000, { long: true }) // "2 minutes"
ms(-3 * 60000, { long: true }) // "-3 minutes"
ms(ms('10 hours'), { long: true }) // "10 hours"ms, a string with a unit is returned100 for '100')ms as a macro at build-time.npm linknpm link ms. Instead of the default one from npm, Node.js will now use your clone of ms!As always, you can run the tests using: npm test
| { | |
| "name": "@babel/core", | |
| "version": "7.3.4", | |
| "description": "Babel compiler core.", | |
| "main": "lib/index.js", | |
| "author": "Sebastian McKenzie <[email protected]>", | |
| "homepage": "https://babeljs.io/", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-core", | |
| "keywords": [ | |
| "6to5", | |
| "babel", | |
| "classes", | |
| "const", | |
| "es6", | |
| "harmony", | |
| "let", | |
| "modules", | |
| "transpile", | |
| "transpiler", | |
| "var", | |
| "babel-core", | |
| "compiler" | |
| ], | |
| "engines": { | |
| "node": ">=6.9.0" | |
| }, | |
| "browser": { | |
| "./lib/config/files/index.js": "./lib/config/files/index-browser.js", | |
| "./lib/transform-file.js": "./lib/transform-file-browser.js" | |
| }, | |
| "dependencies": { | |
| "@babel/code-frame": "^7.0.0", | |
| "@babel/generator": "^7.3.4", | |
| "@babel/helpers": "^7.2.0", | |
| "@babel/parser": "^7.3.4", | |
| "@babel/template": "^7.2.2", | |
| "@babel/traverse": "^7.3.4", | |
| "@babel/types": "^7.3.4", | |
| "convert-source-map": "^1.1.0", | |
| "debug": "^4.1.0", | |
| "json5": "^2.1.0", | |
| "lodash": "^4.17.11", | |
| "resolve": "^1.3.2", | |
| "semver": "^5.4.1", | |
| "source-map": "^0.5.0" | |
| }, | |
| "devDependencies": { | |
| "@babel/helper-transform-fixture-test-runner": "^7.0.0", | |
| "@babel/register": "^7.0.0" | |
| }, | |
| "gitHead": "1f6454cc90fe33e0a32260871212e2f719f35741" | |
| } |
Babel compiler core.
See our website @babel/core for more information or the issues associated with this package.
Using npm:
npm install --save-dev @babel/coreor using yarn:
yarn add @babel/core --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| function _trimRight() { | |
| const data = _interopRequireDefault(require("trim-right")); | |
| _trimRight = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const SPACES_RE = /^[ \t]+$/; | |
| class Buffer { | |
| constructor(map) { | |
| this._map = null; | |
| this._buf = []; | |
| this._last = ""; | |
| this._queue = []; | |
| this._position = { | |
| line: 1, | |
| column: 0 | |
| }; | |
| this._sourcePosition = { | |
| identifierName: null, | |
| line: null, | |
| column: null, | |
| filename: null | |
| }; | |
| this._disallowedPop = null; | |
| this._map = map; | |
| } | |
| get() { | |
| this._flush(); | |
| const map = this._map; | |
| const result = { | |
| code: (0, _trimRight().default)(this._buf.join("")), | |
| map: null, | |
| rawMappings: map && map.getRawMappings() | |
| }; | |
| if (map) { | |
| Object.defineProperty(result, "map", { | |
| configurable: true, | |
| enumerable: true, | |
| get() { | |
| return this.map = map.get(); | |
| }, | |
| set(value) { | |
| Object.defineProperty(this, "map", { | |
| value, | |
| writable: true | |
| }); | |
| } | |
| }); | |
| } | |
| return result; | |
| } | |
| append(str) { | |
| this._flush(); | |
| const { | |
| line, | |
| column, | |
| filename, | |
| identifierName, | |
| force | |
| } = this._sourcePosition; | |
| this._append(str, line, column, identifierName, filename, force); | |
| } | |
| queue(str) { | |
| if (str === "\n") { | |
| while (this._queue.length > 0 && SPACES_RE.test(this._queue[0][0])) { | |
| this._queue.shift(); | |
| } | |
| } | |
| const { | |
| line, | |
| column, | |
| filename, | |
| identifierName, | |
| force | |
| } = this._sourcePosition; | |
| this._queue.unshift([str, line, column, identifierName, filename, force]); | |
| } | |
| _flush() { | |
| let item; | |
| while (item = this._queue.pop()) this._append(...item); | |
| } | |
| _append(str, line, column, identifierName, filename, force) { | |
| if (this._map && str[0] !== "\n") { | |
| this._map.mark(this._position.line, this._position.column, line, column, identifierName, filename, force); | |
| } | |
| this._buf.push(str); | |
| this._last = str[str.length - 1]; | |
| for (let i = 0; i < str.length; i++) { | |
| if (str[i] === "\n") { | |
| this._position.line++; | |
| this._position.column = 0; | |
| } else { | |
| this._position.column++; | |
| } | |
| } | |
| } | |
| removeTrailingNewline() { | |
| if (this._queue.length > 0 && this._queue[0][0] === "\n") { | |
| this._queue.shift(); | |
| } | |
| } | |
| removeLastSemicolon() { | |
| if (this._queue.length > 0 && this._queue[0][0] === ";") { | |
| this._queue.shift(); | |
| } | |
| } | |
| endsWith(suffix) { | |
| if (suffix.length === 1) { | |
| let last; | |
| if (this._queue.length > 0) { | |
| const str = this._queue[0][0]; | |
| last = str[str.length - 1]; | |
| } else { | |
| last = this._last; | |
| } | |
| return last === suffix; | |
| } | |
| const end = this._last + this._queue.reduce((acc, item) => item[0] + acc, ""); | |
| if (suffix.length <= end.length) { | |
| return end.slice(-suffix.length) === suffix; | |
| } | |
| return false; | |
| } | |
| hasContent() { | |
| return this._queue.length > 0 || !!this._last; | |
| } | |
| exactSource(loc, cb) { | |
| this.source("start", loc, true); | |
| cb(); | |
| this.source("end", loc); | |
| this._disallowPop("start", loc); | |
| } | |
| source(prop, loc, force) { | |
| if (prop && !loc) return; | |
| this._normalizePosition(prop, loc, this._sourcePosition, force); | |
| } | |
| withSource(prop, loc, cb) { | |
| if (!this._map) return cb(); | |
| const originalLine = this._sourcePosition.line; | |
| const originalColumn = this._sourcePosition.column; | |
| const originalFilename = this._sourcePosition.filename; | |
| const originalIdentifierName = this._sourcePosition.identifierName; | |
| this.source(prop, loc); | |
| cb(); | |
| if ((!this._sourcePosition.force || this._sourcePosition.line !== originalLine || this._sourcePosition.column !== originalColumn || this._sourcePosition.filename !== originalFilename) && (!this._disallowedPop || this._disallowedPop.line !== originalLine || this._disallowedPop.column !== originalColumn || this._disallowedPop.filename !== originalFilename)) { | |
| this._sourcePosition.line = originalLine; | |
| this._sourcePosition.column = originalColumn; | |
| this._sourcePosition.filename = originalFilename; | |
| this._sourcePosition.identifierName = originalIdentifierName; | |
| this._sourcePosition.force = false; | |
| this._disallowedPop = null; | |
| } | |
| } | |
| _disallowPop(prop, loc) { | |
| if (prop && !loc) return; | |
| this._disallowedPop = this._normalizePosition(prop, loc); | |
| } | |
| _normalizePosition(prop, loc, targetObj, force) { | |
| const pos = loc ? loc[prop] : null; | |
| if (targetObj === undefined) { | |
| targetObj = { | |
| identifierName: null, | |
| line: null, | |
| column: null, | |
| filename: null, | |
| force: false | |
| }; | |
| } | |
| const origLine = targetObj.line; | |
| const origColumn = targetObj.column; | |
| const origFilename = targetObj.filename; | |
| targetObj.identifierName = prop === "start" && loc && loc.identifierName || null; | |
| targetObj.line = pos ? pos.line : null; | |
| targetObj.column = pos ? pos.column : null; | |
| targetObj.filename = loc && loc.filename || null; | |
| if (force || targetObj.line !== origLine || targetObj.column !== origColumn || targetObj.filename !== origFilename) { | |
| targetObj.force = force; | |
| } | |
| return targetObj; | |
| } | |
| getCurrentColumn() { | |
| const extra = this._queue.reduce((acc, item) => item[0] + acc, ""); | |
| const lastIndex = extra.lastIndexOf("\n"); | |
| return lastIndex === -1 ? this._position.column + extra.length : extra.length - 1 - lastIndex; | |
| } | |
| getCurrentLine() { | |
| const extra = this._queue.reduce((acc, item) => item[0] + acc, ""); | |
| let count = 0; | |
| for (let i = 0; i < extra.length; i++) { | |
| if (extra[i] === "\n") count++; | |
| } | |
| return this._position.line + count; | |
| } | |
| } | |
| exports.default = Buffer; |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.File = File; | |
| exports.Program = Program; | |
| exports.BlockStatement = BlockStatement; | |
| exports.Noop = Noop; | |
| exports.Directive = Directive; | |
| exports.DirectiveLiteral = DirectiveLiteral; | |
| exports.InterpreterDirective = InterpreterDirective; | |
| function File(node) { | |
| if (node.program) { | |
| this.print(node.program.interpreter, node); | |
| } | |
| this.print(node.program, node); | |
| } | |
| function Program(node) { | |
| this.printInnerComments(node, false); | |
| this.printSequence(node.directives, node); | |
| if (node.directives && node.directives.length) this.newline(); | |
| this.printSequence(node.body, node); | |
| } | |
| function BlockStatement(node) { | |
| this.token("{"); | |
| this.printInnerComments(node); | |
| const hasDirectives = node.directives && node.directives.length; | |
| if (node.body.length || hasDirectives) { | |
| this.newline(); | |
| this.printSequence(node.directives, node, { | |
| indent: true | |
| }); | |
| if (hasDirectives) this.newline(); | |
| this.printSequence(node.body, node, { | |
| indent: true | |
| }); | |
| this.removeTrailingNewline(); | |
| this.source("end", node.loc); | |
| if (!this.endsWith("\n")) this.newline(); | |
| this.rightBrace(); | |
| } else { | |
| this.source("end", node.loc); | |
| this.token("}"); | |
| } | |
| } | |
| function Noop() {} | |
| function Directive(node) { | |
| this.print(node.value, node); | |
| this.semicolon(); | |
| } | |
| const unescapedSingleQuoteRE = /(?:^|[^\\])(?:\\\\)*'/; | |
| const unescapedDoubleQuoteRE = /(?:^|[^\\])(?:\\\\)*"/; | |
| function DirectiveLiteral(node) { | |
| const raw = this.getPossibleRaw(node); | |
| if (raw != null) { | |
| this.token(raw); | |
| return; | |
| } | |
| const { | |
| value | |
| } = node; | |
| if (!unescapedDoubleQuoteRE.test(value)) { | |
| this.token(`"${value}"`); | |
| } else if (!unescapedSingleQuoteRE.test(value)) { | |
| this.token(`'${value}'`); | |
| } else { | |
| throw new Error("Malformed AST: it is not possible to print a directive containing" + " both unescaped single and double quotes."); | |
| } | |
| } | |
| function InterpreterDirective(node) { | |
| this.token(`#!${node.value}\n`); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.ClassExpression = exports.ClassDeclaration = ClassDeclaration; | |
| exports.ClassBody = ClassBody; | |
| exports.ClassProperty = ClassProperty; | |
| exports.ClassPrivateProperty = ClassPrivateProperty; | |
| exports.ClassMethod = ClassMethod; | |
| exports.ClassPrivateMethod = ClassPrivateMethod; | |
| exports._classMethodHead = _classMethodHead; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function ClassDeclaration(node, parent) { | |
| if (!this.format.decoratorsBeforeExport || !t().isExportDefaultDeclaration(parent) && !t().isExportNamedDeclaration(parent)) { | |
| this.printJoin(node.decorators, node); | |
| } | |
| if (node.declare) { | |
| this.word("declare"); | |
| this.space(); | |
| } | |
| if (node.abstract) { | |
| this.word("abstract"); | |
| this.space(); | |
| } | |
| this.word("class"); | |
| if (node.id) { | |
| this.space(); | |
| this.print(node.id, node); | |
| } | |
| this.print(node.typeParameters, node); | |
| if (node.superClass) { | |
| this.space(); | |
| this.word("extends"); | |
| this.space(); | |
| this.print(node.superClass, node); | |
| this.print(node.superTypeParameters, node); | |
| } | |
| if (node.implements) { | |
| this.space(); | |
| this.word("implements"); | |
| this.space(); | |
| this.printList(node.implements, node); | |
| } | |
| this.space(); | |
| this.print(node.body, node); | |
| } | |
| function ClassBody(node) { | |
| this.token("{"); | |
| this.printInnerComments(node); | |
| if (node.body.length === 0) { | |
| this.token("}"); | |
| } else { | |
| this.newline(); | |
| this.indent(); | |
| this.printSequence(node.body, node); | |
| this.dedent(); | |
| if (!this.endsWith("\n")) this.newline(); | |
| this.rightBrace(); | |
| } | |
| } | |
| function ClassProperty(node) { | |
| this.printJoin(node.decorators, node); | |
| if (node.accessibility) { | |
| this.word(node.accessibility); | |
| this.space(); | |
| } | |
| if (node.static) { | |
| this.word("static"); | |
| this.space(); | |
| } | |
| if (node.abstract) { | |
| this.word("abstract"); | |
| this.space(); | |
| } | |
| if (node.readonly) { | |
| this.word("readonly"); | |
| this.space(); | |
| } | |
| if (node.computed) { | |
| this.token("["); | |
| this.print(node.key, node); | |
| this.token("]"); | |
| } else { | |
| this._variance(node); | |
| this.print(node.key, node); | |
| } | |
| if (node.optional) { | |
| this.token("?"); | |
| } | |
| if (node.definite) { | |
| this.token("!"); | |
| } | |
| this.print(node.typeAnnotation, node); | |
| if (node.value) { | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(node.value, node); | |
| } | |
| this.semicolon(); | |
| } | |
| function ClassPrivateProperty(node) { | |
| if (node.static) { | |
| this.word("static"); | |
| this.space(); | |
| } | |
| this.print(node.key, node); | |
| this.print(node.typeAnnotation, node); | |
| if (node.value) { | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(node.value, node); | |
| } | |
| this.semicolon(); | |
| } | |
| function ClassMethod(node) { | |
| this._classMethodHead(node); | |
| this.space(); | |
| this.print(node.body, node); | |
| } | |
| function ClassPrivateMethod(node) { | |
| this._classMethodHead(node); | |
| this.space(); | |
| this.print(node.body, node); | |
| } | |
| function _classMethodHead(node) { | |
| this.printJoin(node.decorators, node); | |
| if (node.accessibility) { | |
| this.word(node.accessibility); | |
| this.space(); | |
| } | |
| if (node.abstract) { | |
| this.word("abstract"); | |
| this.space(); | |
| } | |
| if (node.static) { | |
| this.word("static"); | |
| this.space(); | |
| } | |
| this._methodHead(node); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.UnaryExpression = UnaryExpression; | |
| exports.DoExpression = DoExpression; | |
| exports.ParenthesizedExpression = ParenthesizedExpression; | |
| exports.UpdateExpression = UpdateExpression; | |
| exports.ConditionalExpression = ConditionalExpression; | |
| exports.NewExpression = NewExpression; | |
| exports.SequenceExpression = SequenceExpression; | |
| exports.ThisExpression = ThisExpression; | |
| exports.Super = Super; | |
| exports.Decorator = Decorator; | |
| exports.OptionalMemberExpression = OptionalMemberExpression; | |
| exports.OptionalCallExpression = OptionalCallExpression; | |
| exports.CallExpression = CallExpression; | |
| exports.Import = Import; | |
| exports.EmptyStatement = EmptyStatement; | |
| exports.ExpressionStatement = ExpressionStatement; | |
| exports.AssignmentPattern = AssignmentPattern; | |
| exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression; | |
| exports.BindExpression = BindExpression; | |
| exports.MemberExpression = MemberExpression; | |
| exports.MetaProperty = MetaProperty; | |
| exports.PrivateName = PrivateName; | |
| exports.AwaitExpression = exports.YieldExpression = void 0; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var n = _interopRequireWildcard(require("../node")); | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function UnaryExpression(node) { | |
| if (node.operator === "void" || node.operator === "delete" || node.operator === "typeof" || node.operator === "throw") { | |
| this.word(node.operator); | |
| this.space(); | |
| } else { | |
| this.token(node.operator); | |
| } | |
| this.print(node.argument, node); | |
| } | |
| function DoExpression(node) { | |
| this.word("do"); | |
| this.space(); | |
| this.print(node.body, node); | |
| } | |
| function ParenthesizedExpression(node) { | |
| this.token("("); | |
| this.print(node.expression, node); | |
| this.token(")"); | |
| } | |
| function UpdateExpression(node) { | |
| if (node.prefix) { | |
| this.token(node.operator); | |
| this.print(node.argument, node); | |
| } else { | |
| this.startTerminatorless(true); | |
| this.print(node.argument, node); | |
| this.endTerminatorless(); | |
| this.token(node.operator); | |
| } | |
| } | |
| function ConditionalExpression(node) { | |
| this.print(node.test, node); | |
| this.space(); | |
| this.token("?"); | |
| this.space(); | |
| this.print(node.consequent, node); | |
| this.space(); | |
| this.token(":"); | |
| this.space(); | |
| this.print(node.alternate, node); | |
| } | |
| function NewExpression(node, parent) { | |
| this.word("new"); | |
| this.space(); | |
| this.print(node.callee, node); | |
| if (this.format.minified && node.arguments.length === 0 && !node.optional && !t().isCallExpression(parent, { | |
| callee: node | |
| }) && !t().isMemberExpression(parent) && !t().isNewExpression(parent)) { | |
| return; | |
| } | |
| this.print(node.typeArguments, node); | |
| this.print(node.typeParameters, node); | |
| if (node.optional) { | |
| this.token("?."); | |
| } | |
| this.token("("); | |
| this.printList(node.arguments, node); | |
| this.token(")"); | |
| } | |
| function SequenceExpression(node) { | |
| this.printList(node.expressions, node); | |
| } | |
| function ThisExpression() { | |
| this.word("this"); | |
| } | |
| function Super() { | |
| this.word("super"); | |
| } | |
| function Decorator(node) { | |
| this.token("@"); | |
| this.print(node.expression, node); | |
| this.newline(); | |
| } | |
| function OptionalMemberExpression(node) { | |
| this.print(node.object, node); | |
| if (!node.computed && t().isMemberExpression(node.property)) { | |
| throw new TypeError("Got a MemberExpression for MemberExpression property"); | |
| } | |
| let computed = node.computed; | |
| if (t().isLiteral(node.property) && typeof node.property.value === "number") { | |
| computed = true; | |
| } | |
| if (node.optional) { | |
| this.token("?."); | |
| } | |
| if (computed) { | |
| this.token("["); | |
| this.print(node.property, node); | |
| this.token("]"); | |
| } else { | |
| if (!node.optional) { | |
| this.token("."); | |
| } | |
| this.print(node.property, node); | |
| } | |
| } | |
| function OptionalCallExpression(node) { | |
| this.print(node.callee, node); | |
| this.print(node.typeArguments, node); | |
| this.print(node.typeParameters, node); | |
| if (node.optional) { | |
| this.token("?."); | |
| } | |
| this.token("("); | |
| this.printList(node.arguments, node); | |
| this.token(")"); | |
| } | |
| function CallExpression(node) { | |
| this.print(node.callee, node); | |
| this.print(node.typeArguments, node); | |
| this.print(node.typeParameters, node); | |
| this.token("("); | |
| this.printList(node.arguments, node); | |
| this.token(")"); | |
| } | |
| function Import() { | |
| this.word("import"); | |
| } | |
| function buildYieldAwait(keyword) { | |
| return function (node) { | |
| this.word(keyword); | |
| if (node.delegate) { | |
| this.token("*"); | |
| } | |
| if (node.argument) { | |
| this.space(); | |
| const terminatorState = this.startTerminatorless(); | |
| this.print(node.argument, node); | |
| this.endTerminatorless(terminatorState); | |
| } | |
| }; | |
| } | |
| const YieldExpression = buildYieldAwait("yield"); | |
| exports.YieldExpression = YieldExpression; | |
| const AwaitExpression = buildYieldAwait("await"); | |
| exports.AwaitExpression = AwaitExpression; | |
| function EmptyStatement() { | |
| this.semicolon(true); | |
| } | |
| function ExpressionStatement(node) { | |
| this.print(node.expression, node); | |
| this.semicolon(); | |
| } | |
| function AssignmentPattern(node) { | |
| this.print(node.left, node); | |
| if (node.left.optional) this.token("?"); | |
| this.print(node.left.typeAnnotation, node); | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(node.right, node); | |
| } | |
| function AssignmentExpression(node, parent) { | |
| const parens = this.inForStatementInitCounter && node.operator === "in" && !n.needsParens(node, parent); | |
| if (parens) { | |
| this.token("("); | |
| } | |
| this.print(node.left, node); | |
| this.space(); | |
| if (node.operator === "in" || node.operator === "instanceof") { | |
| this.word(node.operator); | |
| } else { | |
| this.token(node.operator); | |
| } | |
| this.space(); | |
| this.print(node.right, node); | |
| if (parens) { | |
| this.token(")"); | |
| } | |
| } | |
| function BindExpression(node) { | |
| this.print(node.object, node); | |
| this.token("::"); | |
| this.print(node.callee, node); | |
| } | |
| function MemberExpression(node) { | |
| this.print(node.object, node); | |
| if (!node.computed && t().isMemberExpression(node.property)) { | |
| throw new TypeError("Got a MemberExpression for MemberExpression property"); | |
| } | |
| let computed = node.computed; | |
| if (t().isLiteral(node.property) && typeof node.property.value === "number") { | |
| computed = true; | |
| } | |
| if (computed) { | |
| this.token("["); | |
| this.print(node.property, node); | |
| this.token("]"); | |
| } else { | |
| this.token("."); | |
| this.print(node.property, node); | |
| } | |
| } | |
| function MetaProperty(node) { | |
| this.print(node.meta, node); | |
| this.token("."); | |
| this.print(node.property, node); | |
| } | |
| function PrivateName(node) { | |
| this.token("#"); | |
| this.print(node.id, node); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.AnyTypeAnnotation = AnyTypeAnnotation; | |
| exports.ArrayTypeAnnotation = ArrayTypeAnnotation; | |
| exports.BooleanTypeAnnotation = BooleanTypeAnnotation; | |
| exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation; | |
| exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation; | |
| exports.DeclareClass = DeclareClass; | |
| exports.DeclareFunction = DeclareFunction; | |
| exports.InferredPredicate = InferredPredicate; | |
| exports.DeclaredPredicate = DeclaredPredicate; | |
| exports.DeclareInterface = DeclareInterface; | |
| exports.DeclareModule = DeclareModule; | |
| exports.DeclareModuleExports = DeclareModuleExports; | |
| exports.DeclareTypeAlias = DeclareTypeAlias; | |
| exports.DeclareOpaqueType = DeclareOpaqueType; | |
| exports.DeclareVariable = DeclareVariable; | |
| exports.DeclareExportDeclaration = DeclareExportDeclaration; | |
| exports.DeclareExportAllDeclaration = DeclareExportAllDeclaration; | |
| exports.ExistsTypeAnnotation = ExistsTypeAnnotation; | |
| exports.FunctionTypeAnnotation = FunctionTypeAnnotation; | |
| exports.FunctionTypeParam = FunctionTypeParam; | |
| exports.GenericTypeAnnotation = exports.ClassImplements = exports.InterfaceExtends = InterfaceExtends; | |
| exports._interfaceish = _interfaceish; | |
| exports._variance = _variance; | |
| exports.InterfaceDeclaration = InterfaceDeclaration; | |
| exports.InterfaceTypeAnnotation = InterfaceTypeAnnotation; | |
| exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation; | |
| exports.MixedTypeAnnotation = MixedTypeAnnotation; | |
| exports.EmptyTypeAnnotation = EmptyTypeAnnotation; | |
| exports.NullableTypeAnnotation = NullableTypeAnnotation; | |
| exports.NumberTypeAnnotation = NumberTypeAnnotation; | |
| exports.StringTypeAnnotation = StringTypeAnnotation; | |
| exports.ThisTypeAnnotation = ThisTypeAnnotation; | |
| exports.TupleTypeAnnotation = TupleTypeAnnotation; | |
| exports.TypeofTypeAnnotation = TypeofTypeAnnotation; | |
| exports.TypeAlias = TypeAlias; | |
| exports.TypeAnnotation = TypeAnnotation; | |
| exports.TypeParameterDeclaration = exports.TypeParameterInstantiation = TypeParameterInstantiation; | |
| exports.TypeParameter = TypeParameter; | |
| exports.OpaqueType = OpaqueType; | |
| exports.ObjectTypeAnnotation = ObjectTypeAnnotation; | |
| exports.ObjectTypeInternalSlot = ObjectTypeInternalSlot; | |
| exports.ObjectTypeCallProperty = ObjectTypeCallProperty; | |
| exports.ObjectTypeIndexer = ObjectTypeIndexer; | |
| exports.ObjectTypeProperty = ObjectTypeProperty; | |
| exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty; | |
| exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier; | |
| exports.UnionTypeAnnotation = UnionTypeAnnotation; | |
| exports.TypeCastExpression = TypeCastExpression; | |
| exports.Variance = Variance; | |
| exports.VoidTypeAnnotation = VoidTypeAnnotation; | |
| Object.defineProperty(exports, "NumberLiteralTypeAnnotation", { | |
| enumerable: true, | |
| get: function () { | |
| return _types2.NumericLiteral; | |
| } | |
| }); | |
| Object.defineProperty(exports, "StringLiteralTypeAnnotation", { | |
| enumerable: true, | |
| get: function () { | |
| return _types2.StringLiteral; | |
| } | |
| }); | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _modules = require("./modules"); | |
| var _types2 = require("./types"); | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function AnyTypeAnnotation() { | |
| this.word("any"); | |
| } | |
| function ArrayTypeAnnotation(node) { | |
| this.print(node.elementType, node); | |
| this.token("["); | |
| this.token("]"); | |
| } | |
| function BooleanTypeAnnotation() { | |
| this.word("boolean"); | |
| } | |
| function BooleanLiteralTypeAnnotation(node) { | |
| this.word(node.value ? "true" : "false"); | |
| } | |
| function NullLiteralTypeAnnotation() { | |
| this.word("null"); | |
| } | |
| function DeclareClass(node, parent) { | |
| if (!t().isDeclareExportDeclaration(parent)) { | |
| this.word("declare"); | |
| this.space(); | |
| } | |
| this.word("class"); | |
| this.space(); | |
| this._interfaceish(node); | |
| } | |
| function DeclareFunction(node, parent) { | |
| if (!t().isDeclareExportDeclaration(parent)) { | |
| this.word("declare"); | |
| this.space(); | |
| } | |
| this.word("function"); | |
| this.space(); | |
| this.print(node.id, node); | |
| this.print(node.id.typeAnnotation.typeAnnotation, node); | |
| if (node.predicate) { | |
| this.space(); | |
| this.print(node.predicate, node); | |
| } | |
| this.semicolon(); | |
| } | |
| function InferredPredicate() { | |
| this.token("%"); | |
| this.word("checks"); | |
| } | |
| function DeclaredPredicate(node) { | |
| this.token("%"); | |
| this.word("checks"); | |
| this.token("("); | |
| this.print(node.value, node); | |
| this.token(")"); | |
| } | |
| function DeclareInterface(node) { | |
| this.word("declare"); | |
| this.space(); | |
| this.InterfaceDeclaration(node); | |
| } | |
| function DeclareModule(node) { | |
| this.word("declare"); | |
| this.space(); | |
| this.word("module"); | |
| this.space(); | |
| this.print(node.id, node); | |
| this.space(); | |
| this.print(node.body, node); | |
| } | |
| function DeclareModuleExports(node) { | |
| this.word("declare"); | |
| this.space(); | |
| this.word("module"); | |
| this.token("."); | |
| this.word("exports"); | |
| this.print(node.typeAnnotation, node); | |
| } | |
| function DeclareTypeAlias(node) { | |
| this.word("declare"); | |
| this.space(); | |
| this.TypeAlias(node); | |
| } | |
| function DeclareOpaqueType(node, parent) { | |
| if (!t().isDeclareExportDeclaration(parent)) { | |
| this.word("declare"); | |
| this.space(); | |
| } | |
| this.OpaqueType(node); | |
| } | |
| function DeclareVariable(node, parent) { | |
| if (!t().isDeclareExportDeclaration(parent)) { | |
| this.word("declare"); | |
| this.space(); | |
| } | |
| this.word("var"); | |
| this.space(); | |
| this.print(node.id, node); | |
| this.print(node.id.typeAnnotation, node); | |
| this.semicolon(); | |
| } | |
| function DeclareExportDeclaration(node) { | |
| this.word("declare"); | |
| this.space(); | |
| this.word("export"); | |
| this.space(); | |
| if (node.default) { | |
| this.word("default"); | |
| this.space(); | |
| } | |
| FlowExportDeclaration.apply(this, arguments); | |
| } | |
| function DeclareExportAllDeclaration() { | |
| this.word("declare"); | |
| this.space(); | |
| _modules.ExportAllDeclaration.apply(this, arguments); | |
| } | |
| function FlowExportDeclaration(node) { | |
| if (node.declaration) { | |
| const declar = node.declaration; | |
| this.print(declar, node); | |
| if (!t().isStatement(declar)) this.semicolon(); | |
| } else { | |
| this.token("{"); | |
| if (node.specifiers.length) { | |
| this.space(); | |
| this.printList(node.specifiers, node); | |
| this.space(); | |
| } | |
| this.token("}"); | |
| if (node.source) { | |
| this.space(); | |
| this.word("from"); | |
| this.space(); | |
| this.print(node.source, node); | |
| } | |
| this.semicolon(); | |
| } | |
| } | |
| function ExistsTypeAnnotation() { | |
| this.token("*"); | |
| } | |
| function FunctionTypeAnnotation(node, parent) { | |
| this.print(node.typeParameters, node); | |
| this.token("("); | |
| this.printList(node.params, node); | |
| if (node.rest) { | |
| if (node.params.length) { | |
| this.token(","); | |
| this.space(); | |
| } | |
| this.token("..."); | |
| this.print(node.rest, node); | |
| } | |
| this.token(")"); | |
| if (parent.type === "ObjectTypeCallProperty" || parent.type === "DeclareFunction" || parent.type === "ObjectTypeProperty" && parent.method) { | |
| this.token(":"); | |
| } else { | |
| this.space(); | |
| this.token("=>"); | |
| } | |
| this.space(); | |
| this.print(node.returnType, node); | |
| } | |
| function FunctionTypeParam(node) { | |
| this.print(node.name, node); | |
| if (node.optional) this.token("?"); | |
| if (node.name) { | |
| this.token(":"); | |
| this.space(); | |
| } | |
| this.print(node.typeAnnotation, node); | |
| } | |
| function InterfaceExtends(node) { | |
| this.print(node.id, node); | |
| this.print(node.typeParameters, node); | |
| } | |
| function _interfaceish(node) { | |
| this.print(node.id, node); | |
| this.print(node.typeParameters, node); | |
| if (node.extends.length) { | |
| this.space(); | |
| this.word("extends"); | |
| this.space(); | |
| this.printList(node.extends, node); | |
| } | |
| if (node.mixins && node.mixins.length) { | |
| this.space(); | |
| this.word("mixins"); | |
| this.space(); | |
| this.printList(node.mixins, node); | |
| } | |
| if (node.implements && node.implements.length) { | |
| this.space(); | |
| this.word("implements"); | |
| this.space(); | |
| this.printList(node.implements, node); | |
| } | |
| this.space(); | |
| this.print(node.body, node); | |
| } | |
| function _variance(node) { | |
| if (node.variance) { | |
| if (node.variance.kind === "plus") { | |
| this.token("+"); | |
| } else if (node.variance.kind === "minus") { | |
| this.token("-"); | |
| } | |
| } | |
| } | |
| function InterfaceDeclaration(node) { | |
| this.word("interface"); | |
| this.space(); | |
| this._interfaceish(node); | |
| } | |
| function andSeparator() { | |
| this.space(); | |
| this.token("&"); | |
| this.space(); | |
| } | |
| function InterfaceTypeAnnotation(node) { | |
| this.word("interface"); | |
| if (node.extends && node.extends.length) { | |
| this.space(); | |
| this.word("extends"); | |
| this.space(); | |
| this.printList(node.extends, node); | |
| } | |
| this.space(); | |
| this.print(node.body, node); | |
| } | |
| function IntersectionTypeAnnotation(node) { | |
| this.printJoin(node.types, node, { | |
| separator: andSeparator | |
| }); | |
| } | |
| function MixedTypeAnnotation() { | |
| this.word("mixed"); | |
| } | |
| function EmptyTypeAnnotation() { | |
| this.word("empty"); | |
| } | |
| function NullableTypeAnnotation(node) { | |
| this.token("?"); | |
| this.print(node.typeAnnotation, node); | |
| } | |
| function NumberTypeAnnotation() { | |
| this.word("number"); | |
| } | |
| function StringTypeAnnotation() { | |
| this.word("string"); | |
| } | |
| function ThisTypeAnnotation() { | |
| this.word("this"); | |
| } | |
| function TupleTypeAnnotation(node) { | |
| this.token("["); | |
| this.printList(node.types, node); | |
| this.token("]"); | |
| } | |
| function TypeofTypeAnnotation(node) { | |
| this.word("typeof"); | |
| this.space(); | |
| this.print(node.argument, node); | |
| } | |
| function TypeAlias(node) { | |
| this.word("type"); | |
| this.space(); | |
| this.print(node.id, node); | |
| this.print(node.typeParameters, node); | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(node.right, node); | |
| this.semicolon(); | |
| } | |
| function TypeAnnotation(node) { | |
| this.token(":"); | |
| this.space(); | |
| if (node.optional) this.token("?"); | |
| this.print(node.typeAnnotation, node); | |
| } | |
| function TypeParameterInstantiation(node) { | |
| this.token("<"); | |
| this.printList(node.params, node, {}); | |
| this.token(">"); | |
| } | |
| function TypeParameter(node) { | |
| this._variance(node); | |
| this.word(node.name); | |
| if (node.bound) { | |
| this.print(node.bound, node); | |
| } | |
| if (node.default) { | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(node.default, node); | |
| } | |
| } | |
| function OpaqueType(node) { | |
| this.word("opaque"); | |
| this.space(); | |
| this.word("type"); | |
| this.space(); | |
| this.print(node.id, node); | |
| this.print(node.typeParameters, node); | |
| if (node.supertype) { | |
| this.token(":"); | |
| this.space(); | |
| this.print(node.supertype, node); | |
| } | |
| if (node.impltype) { | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(node.impltype, node); | |
| } | |
| this.semicolon(); | |
| } | |
| function ObjectTypeAnnotation(node) { | |
| if (node.exact) { | |
| this.token("{|"); | |
| } else { | |
| this.token("{"); | |
| } | |
| const props = node.properties.concat(node.callProperties || [], node.indexers || [], node.internalSlots || []); | |
| if (props.length) { | |
| this.space(); | |
| this.printJoin(props, node, { | |
| addNewlines(leading) { | |
| if (leading && !props[0]) return 1; | |
| }, | |
| indent: true, | |
| statement: true, | |
| iterator: () => { | |
| if (props.length !== 1) { | |
| this.token(","); | |
| this.space(); | |
| } | |
| } | |
| }); | |
| this.space(); | |
| } | |
| if (node.exact) { | |
| this.token("|}"); | |
| } else { | |
| this.token("}"); | |
| } | |
| } | |
| function ObjectTypeInternalSlot(node) { | |
| if (node.static) { | |
| this.word("static"); | |
| this.space(); | |
| } | |
| this.token("["); | |
| this.token("["); | |
| this.print(node.id, node); | |
| this.token("]"); | |
| this.token("]"); | |
| if (node.optional) this.token("?"); | |
| if (!node.method) { | |
| this.token(":"); | |
| this.space(); | |
| } | |
| this.print(node.value, node); | |
| } | |
| function ObjectTypeCallProperty(node) { | |
| if (node.static) { | |
| this.word("static"); | |
| this.space(); | |
| } | |
| this.print(node.value, node); | |
| } | |
| function ObjectTypeIndexer(node) { | |
| if (node.static) { | |
| this.word("static"); | |
| this.space(); | |
| } | |
| this._variance(node); | |
| this.token("["); | |
| if (node.id) { | |
| this.print(node.id, node); | |
| this.token(":"); | |
| this.space(); | |
| } | |
| this.print(node.key, node); | |
| this.token("]"); | |
| this.token(":"); | |
| this.space(); | |
| this.print(node.value, node); | |
| } | |
| function ObjectTypeProperty(node) { | |
| if (node.proto) { | |
| this.word("proto"); | |
| this.space(); | |
| } | |
| if (node.static) { | |
| this.word("static"); | |
| this.space(); | |
| } | |
| this._variance(node); | |
| this.print(node.key, node); | |
| if (node.optional) this.token("?"); | |
| if (!node.method) { | |
| this.token(":"); | |
| this.space(); | |
| } | |
| this.print(node.value, node); | |
| } | |
| function ObjectTypeSpreadProperty(node) { | |
| this.token("..."); | |
| this.print(node.argument, node); | |
| } | |
| function QualifiedTypeIdentifier(node) { | |
| this.print(node.qualification, node); | |
| this.token("."); | |
| this.print(node.id, node); | |
| } | |
| function orSeparator() { | |
| this.space(); | |
| this.token("|"); | |
| this.space(); | |
| } | |
| function UnionTypeAnnotation(node) { | |
| this.printJoin(node.types, node, { | |
| separator: orSeparator | |
| }); | |
| } | |
| function TypeCastExpression(node) { | |
| this.token("("); | |
| this.print(node.expression, node); | |
| this.print(node.typeAnnotation, node); | |
| this.token(")"); | |
| } | |
| function Variance(node) { | |
| if (node.kind === "plus") { | |
| this.token("+"); | |
| } else { | |
| this.token("-"); | |
| } | |
| } | |
| function VoidTypeAnnotation() { | |
| this.word("void"); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| var _templateLiterals = require("./template-literals"); | |
| Object.keys(_templateLiterals).forEach(function (key) { | |
| if (key === "default" || key === "__esModule") return; | |
| Object.defineProperty(exports, key, { | |
| enumerable: true, | |
| get: function () { | |
| return _templateLiterals[key]; | |
| } | |
| }); | |
| }); | |
| var _expressions = require("./expressions"); | |
| Object.keys(_expressions).forEach(function (key) { | |
| if (key === "default" || key === "__esModule") return; | |
| Object.defineProperty(exports, key, { | |
| enumerable: true, | |
| get: function () { | |
| return _expressions[key]; | |
| } | |
| }); | |
| }); | |
| var _statements = require("./statements"); | |
| Object.keys(_statements).forEach(function (key) { | |
| if (key === "default" || key === "__esModule") return; | |
| Object.defineProperty(exports, key, { | |
| enumerable: true, | |
| get: function () { | |
| return _statements[key]; | |
| } | |
| }); | |
| }); | |
| var _classes = require("./classes"); | |
| Object.keys(_classes).forEach(function (key) { | |
| if (key === "default" || key === "__esModule") return; | |
| Object.defineProperty(exports, key, { | |
| enumerable: true, | |
| get: function () { | |
| return _classes[key]; | |
| } | |
| }); | |
| }); | |
| var _methods = require("./methods"); | |
| Object.keys(_methods).forEach(function (key) { | |
| if (key === "default" || key === "__esModule") return; | |
| Object.defineProperty(exports, key, { | |
| enumerable: true, | |
| get: function () { | |
| return _methods[key]; | |
| } | |
| }); | |
| }); | |
| var _modules = require("./modules"); | |
| Object.keys(_modules).forEach(function (key) { | |
| if (key === "default" || key === "__esModule") return; | |
| Object.defineProperty(exports, key, { | |
| enumerable: true, | |
| get: function () { | |
| return _modules[key]; | |
| } | |
| }); | |
| }); | |
| var _types = require("./types"); | |
| Object.keys(_types).forEach(function (key) { | |
| if (key === "default" || key === "__esModule") return; | |
| Object.defineProperty(exports, key, { | |
| enumerable: true, | |
| get: function () { | |
| return _types[key]; | |
| } | |
| }); | |
| }); | |
| var _flow = require("./flow"); | |
| Object.keys(_flow).forEach(function (key) { | |
| if (key === "default" || key === "__esModule") return; | |
| Object.defineProperty(exports, key, { | |
| enumerable: true, | |
| get: function () { | |
| return _flow[key]; | |
| } | |
| }); | |
| }); | |
| var _base = require("./base"); | |
| Object.keys(_base).forEach(function (key) { | |
| if (key === "default" || key === "__esModule") return; | |
| Object.defineProperty(exports, key, { | |
| enumerable: true, | |
| get: function () { | |
| return _base[key]; | |
| } | |
| }); | |
| }); | |
| var _jsx = require("./jsx"); | |
| Object.keys(_jsx).forEach(function (key) { | |
| if (key === "default" || key === "__esModule") return; | |
| Object.defineProperty(exports, key, { | |
| enumerable: true, | |
| get: function () { | |
| return _jsx[key]; | |
| } | |
| }); | |
| }); | |
| var _typescript = require("./typescript"); | |
| Object.keys(_typescript).forEach(function (key) { | |
| if (key === "default" || key === "__esModule") return; | |
| Object.defineProperty(exports, key, { | |
| enumerable: true, | |
| get: function () { | |
| return _typescript[key]; | |
| } | |
| }); | |
| }); |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.JSXAttribute = JSXAttribute; | |
| exports.JSXIdentifier = JSXIdentifier; | |
| exports.JSXNamespacedName = JSXNamespacedName; | |
| exports.JSXMemberExpression = JSXMemberExpression; | |
| exports.JSXSpreadAttribute = JSXSpreadAttribute; | |
| exports.JSXExpressionContainer = JSXExpressionContainer; | |
| exports.JSXSpreadChild = JSXSpreadChild; | |
| exports.JSXText = JSXText; | |
| exports.JSXElement = JSXElement; | |
| exports.JSXOpeningElement = JSXOpeningElement; | |
| exports.JSXClosingElement = JSXClosingElement; | |
| exports.JSXEmptyExpression = JSXEmptyExpression; | |
| exports.JSXFragment = JSXFragment; | |
| exports.JSXOpeningFragment = JSXOpeningFragment; | |
| exports.JSXClosingFragment = JSXClosingFragment; | |
| function JSXAttribute(node) { | |
| this.print(node.name, node); | |
| if (node.value) { | |
| this.token("="); | |
| this.print(node.value, node); | |
| } | |
| } | |
| function JSXIdentifier(node) { | |
| this.word(node.name); | |
| } | |
| function JSXNamespacedName(node) { | |
| this.print(node.namespace, node); | |
| this.token(":"); | |
| this.print(node.name, node); | |
| } | |
| function JSXMemberExpression(node) { | |
| this.print(node.object, node); | |
| this.token("."); | |
| this.print(node.property, node); | |
| } | |
| function JSXSpreadAttribute(node) { | |
| this.token("{"); | |
| this.token("..."); | |
| this.print(node.argument, node); | |
| this.token("}"); | |
| } | |
| function JSXExpressionContainer(node) { | |
| this.token("{"); | |
| this.print(node.expression, node); | |
| this.token("}"); | |
| } | |
| function JSXSpreadChild(node) { | |
| this.token("{"); | |
| this.token("..."); | |
| this.print(node.expression, node); | |
| this.token("}"); | |
| } | |
| function JSXText(node) { | |
| const raw = this.getPossibleRaw(node); | |
| if (raw != null) { | |
| this.token(raw); | |
| } else { | |
| this.token(node.value); | |
| } | |
| } | |
| function JSXElement(node) { | |
| const open = node.openingElement; | |
| this.print(open, node); | |
| if (open.selfClosing) return; | |
| this.indent(); | |
| for (const child of node.children) { | |
| this.print(child, node); | |
| } | |
| this.dedent(); | |
| this.print(node.closingElement, node); | |
| } | |
| function spaceSeparator() { | |
| this.space(); | |
| } | |
| function JSXOpeningElement(node) { | |
| this.token("<"); | |
| this.print(node.name, node); | |
| this.print(node.typeParameters, node); | |
| if (node.attributes.length > 0) { | |
| this.space(); | |
| this.printJoin(node.attributes, node, { | |
| separator: spaceSeparator | |
| }); | |
| } | |
| if (node.selfClosing) { | |
| this.space(); | |
| this.token("/>"); | |
| } else { | |
| this.token(">"); | |
| } | |
| } | |
| function JSXClosingElement(node) { | |
| this.token("</"); | |
| this.print(node.name, node); | |
| this.token(">"); | |
| } | |
| function JSXEmptyExpression(node) { | |
| this.printInnerComments(node); | |
| } | |
| function JSXFragment(node) { | |
| this.print(node.openingFragment, node); | |
| this.indent(); | |
| for (const child of node.children) { | |
| this.print(child, node); | |
| } | |
| this.dedent(); | |
| this.print(node.closingFragment, node); | |
| } | |
| function JSXOpeningFragment() { | |
| this.token("<"); | |
| this.token(">"); | |
| } | |
| function JSXClosingFragment() { | |
| this.token("</"); | |
| this.token(">"); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports._params = _params; | |
| exports._parameters = _parameters; | |
| exports._param = _param; | |
| exports._methodHead = _methodHead; | |
| exports._predicate = _predicate; | |
| exports._functionHead = _functionHead; | |
| exports.FunctionDeclaration = exports.FunctionExpression = FunctionExpression; | |
| exports.ArrowFunctionExpression = ArrowFunctionExpression; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _params(node) { | |
| this.print(node.typeParameters, node); | |
| this.token("("); | |
| this._parameters(node.params, node); | |
| this.token(")"); | |
| this.print(node.returnType, node); | |
| } | |
| function _parameters(parameters, parent) { | |
| for (let i = 0; i < parameters.length; i++) { | |
| this._param(parameters[i], parent); | |
| if (i < parameters.length - 1) { | |
| this.token(","); | |
| this.space(); | |
| } | |
| } | |
| } | |
| function _param(parameter, parent) { | |
| this.printJoin(parameter.decorators, parameter); | |
| this.print(parameter, parent); | |
| if (parameter.optional) this.token("?"); | |
| this.print(parameter.typeAnnotation, parameter); | |
| } | |
| function _methodHead(node) { | |
| const kind = node.kind; | |
| const key = node.key; | |
| if (kind === "get" || kind === "set") { | |
| this.word(kind); | |
| this.space(); | |
| } | |
| if (node.async) { | |
| this.word("async"); | |
| this.space(); | |
| } | |
| if (kind === "method" || kind === "init") { | |
| if (node.generator) { | |
| this.token("*"); | |
| } | |
| } | |
| if (node.computed) { | |
| this.token("["); | |
| this.print(key, node); | |
| this.token("]"); | |
| } else { | |
| this.print(key, node); | |
| } | |
| if (node.optional) { | |
| this.token("?"); | |
| } | |
| this._params(node); | |
| } | |
| function _predicate(node) { | |
| if (node.predicate) { | |
| if (!node.returnType) { | |
| this.token(":"); | |
| } | |
| this.space(); | |
| this.print(node.predicate, node); | |
| } | |
| } | |
| function _functionHead(node) { | |
| if (node.async) { | |
| this.word("async"); | |
| this.space(); | |
| } | |
| this.word("function"); | |
| if (node.generator) this.token("*"); | |
| this.space(); | |
| if (node.id) { | |
| this.print(node.id, node); | |
| } | |
| this._params(node); | |
| this._predicate(node); | |
| } | |
| function FunctionExpression(node) { | |
| this._functionHead(node); | |
| this.space(); | |
| this.print(node.body, node); | |
| } | |
| function ArrowFunctionExpression(node) { | |
| if (node.async) { | |
| this.word("async"); | |
| this.space(); | |
| } | |
| const firstParam = node.params[0]; | |
| if (node.params.length === 1 && t().isIdentifier(firstParam) && !hasTypes(node, firstParam)) { | |
| if (this.format.retainLines && node.loc && node.body.loc && node.loc.start.line < node.body.loc.start.line) { | |
| this.token("("); | |
| if (firstParam.loc && firstParam.loc.start.line > node.loc.start.line) { | |
| this.indent(); | |
| this.print(firstParam, node); | |
| this.dedent(); | |
| this._catchUp("start", node.body.loc); | |
| } else { | |
| this.print(firstParam, node); | |
| } | |
| this.token(")"); | |
| } else { | |
| this.print(firstParam, node); | |
| } | |
| } else { | |
| this._params(node); | |
| } | |
| this._predicate(node); | |
| this.space(); | |
| this.token("=>"); | |
| this.space(); | |
| this.print(node.body, node); | |
| } | |
| function hasTypes(node, param) { | |
| return node.typeParameters || node.returnType || param.typeAnnotation || param.optional || param.trailingComments; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.ImportSpecifier = ImportSpecifier; | |
| exports.ImportDefaultSpecifier = ImportDefaultSpecifier; | |
| exports.ExportDefaultSpecifier = ExportDefaultSpecifier; | |
| exports.ExportSpecifier = ExportSpecifier; | |
| exports.ExportNamespaceSpecifier = ExportNamespaceSpecifier; | |
| exports.ExportAllDeclaration = ExportAllDeclaration; | |
| exports.ExportNamedDeclaration = ExportNamedDeclaration; | |
| exports.ExportDefaultDeclaration = ExportDefaultDeclaration; | |
| exports.ImportDeclaration = ImportDeclaration; | |
| exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function ImportSpecifier(node) { | |
| if (node.importKind === "type" || node.importKind === "typeof") { | |
| this.word(node.importKind); | |
| this.space(); | |
| } | |
| this.print(node.imported, node); | |
| if (node.local && node.local.name !== node.imported.name) { | |
| this.space(); | |
| this.word("as"); | |
| this.space(); | |
| this.print(node.local, node); | |
| } | |
| } | |
| function ImportDefaultSpecifier(node) { | |
| this.print(node.local, node); | |
| } | |
| function ExportDefaultSpecifier(node) { | |
| this.print(node.exported, node); | |
| } | |
| function ExportSpecifier(node) { | |
| this.print(node.local, node); | |
| if (node.exported && node.local.name !== node.exported.name) { | |
| this.space(); | |
| this.word("as"); | |
| this.space(); | |
| this.print(node.exported, node); | |
| } | |
| } | |
| function ExportNamespaceSpecifier(node) { | |
| this.token("*"); | |
| this.space(); | |
| this.word("as"); | |
| this.space(); | |
| this.print(node.exported, node); | |
| } | |
| function ExportAllDeclaration(node) { | |
| this.word("export"); | |
| this.space(); | |
| if (node.exportKind === "type") { | |
| this.word("type"); | |
| this.space(); | |
| } | |
| this.token("*"); | |
| this.space(); | |
| this.word("from"); | |
| this.space(); | |
| this.print(node.source, node); | |
| this.semicolon(); | |
| } | |
| function ExportNamedDeclaration(node) { | |
| if (this.format.decoratorsBeforeExport && t().isClassDeclaration(node.declaration)) { | |
| this.printJoin(node.declaration.decorators, node); | |
| } | |
| this.word("export"); | |
| this.space(); | |
| ExportDeclaration.apply(this, arguments); | |
| } | |
| function ExportDefaultDeclaration(node) { | |
| if (this.format.decoratorsBeforeExport && t().isClassDeclaration(node.declaration)) { | |
| this.printJoin(node.declaration.decorators, node); | |
| } | |
| this.word("export"); | |
| this.space(); | |
| this.word("default"); | |
| this.space(); | |
| ExportDeclaration.apply(this, arguments); | |
| } | |
| function ExportDeclaration(node) { | |
| if (node.declaration) { | |
| const declar = node.declaration; | |
| this.print(declar, node); | |
| if (!t().isStatement(declar)) this.semicolon(); | |
| } else { | |
| if (node.exportKind === "type") { | |
| this.word("type"); | |
| this.space(); | |
| } | |
| const specifiers = node.specifiers.slice(0); | |
| let hasSpecial = false; | |
| while (true) { | |
| const first = specifiers[0]; | |
| if (t().isExportDefaultSpecifier(first) || t().isExportNamespaceSpecifier(first)) { | |
| hasSpecial = true; | |
| this.print(specifiers.shift(), node); | |
| if (specifiers.length) { | |
| this.token(","); | |
| this.space(); | |
| } | |
| } else { | |
| break; | |
| } | |
| } | |
| if (specifiers.length || !specifiers.length && !hasSpecial) { | |
| this.token("{"); | |
| if (specifiers.length) { | |
| this.space(); | |
| this.printList(specifiers, node); | |
| this.space(); | |
| } | |
| this.token("}"); | |
| } | |
| if (node.source) { | |
| this.space(); | |
| this.word("from"); | |
| this.space(); | |
| this.print(node.source, node); | |
| } | |
| this.semicolon(); | |
| } | |
| } | |
| function ImportDeclaration(node) { | |
| this.word("import"); | |
| this.space(); | |
| if (node.importKind === "type" || node.importKind === "typeof") { | |
| this.word(node.importKind); | |
| this.space(); | |
| } | |
| const specifiers = node.specifiers.slice(0); | |
| if (specifiers && specifiers.length) { | |
| while (true) { | |
| const first = specifiers[0]; | |
| if (t().isImportDefaultSpecifier(first) || t().isImportNamespaceSpecifier(first)) { | |
| this.print(specifiers.shift(), node); | |
| if (specifiers.length) { | |
| this.token(","); | |
| this.space(); | |
| } | |
| } else { | |
| break; | |
| } | |
| } | |
| if (specifiers.length) { | |
| this.token("{"); | |
| this.space(); | |
| this.printList(specifiers, node); | |
| this.space(); | |
| this.token("}"); | |
| } | |
| this.space(); | |
| this.word("from"); | |
| this.space(); | |
| } | |
| this.print(node.source, node); | |
| this.semicolon(); | |
| } | |
| function ImportNamespaceSpecifier(node) { | |
| this.token("*"); | |
| this.space(); | |
| this.word("as"); | |
| this.space(); | |
| this.print(node.local, node); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.WithStatement = WithStatement; | |
| exports.IfStatement = IfStatement; | |
| exports.ForStatement = ForStatement; | |
| exports.WhileStatement = WhileStatement; | |
| exports.DoWhileStatement = DoWhileStatement; | |
| exports.LabeledStatement = LabeledStatement; | |
| exports.TryStatement = TryStatement; | |
| exports.CatchClause = CatchClause; | |
| exports.SwitchStatement = SwitchStatement; | |
| exports.SwitchCase = SwitchCase; | |
| exports.DebuggerStatement = DebuggerStatement; | |
| exports.VariableDeclaration = VariableDeclaration; | |
| exports.VariableDeclarator = VariableDeclarator; | |
| exports.ThrowStatement = exports.BreakStatement = exports.ReturnStatement = exports.ContinueStatement = exports.ForOfStatement = exports.ForInStatement = void 0; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function WithStatement(node) { | |
| this.word("with"); | |
| this.space(); | |
| this.token("("); | |
| this.print(node.object, node); | |
| this.token(")"); | |
| this.printBlock(node); | |
| } | |
| function IfStatement(node) { | |
| this.word("if"); | |
| this.space(); | |
| this.token("("); | |
| this.print(node.test, node); | |
| this.token(")"); | |
| this.space(); | |
| const needsBlock = node.alternate && t().isIfStatement(getLastStatement(node.consequent)); | |
| if (needsBlock) { | |
| this.token("{"); | |
| this.newline(); | |
| this.indent(); | |
| } | |
| this.printAndIndentOnComments(node.consequent, node); | |
| if (needsBlock) { | |
| this.dedent(); | |
| this.newline(); | |
| this.token("}"); | |
| } | |
| if (node.alternate) { | |
| if (this.endsWith("}")) this.space(); | |
| this.word("else"); | |
| this.space(); | |
| this.printAndIndentOnComments(node.alternate, node); | |
| } | |
| } | |
| function getLastStatement(statement) { | |
| if (!t().isStatement(statement.body)) return statement; | |
| return getLastStatement(statement.body); | |
| } | |
| function ForStatement(node) { | |
| this.word("for"); | |
| this.space(); | |
| this.token("("); | |
| this.inForStatementInitCounter++; | |
| this.print(node.init, node); | |
| this.inForStatementInitCounter--; | |
| this.token(";"); | |
| if (node.test) { | |
| this.space(); | |
| this.print(node.test, node); | |
| } | |
| this.token(";"); | |
| if (node.update) { | |
| this.space(); | |
| this.print(node.update, node); | |
| } | |
| this.token(")"); | |
| this.printBlock(node); | |
| } | |
| function WhileStatement(node) { | |
| this.word("while"); | |
| this.space(); | |
| this.token("("); | |
| this.print(node.test, node); | |
| this.token(")"); | |
| this.printBlock(node); | |
| } | |
| const buildForXStatement = function (op) { | |
| return function (node) { | |
| this.word("for"); | |
| this.space(); | |
| if (op === "of" && node.await) { | |
| this.word("await"); | |
| this.space(); | |
| } | |
| this.token("("); | |
| this.print(node.left, node); | |
| this.space(); | |
| this.word(op); | |
| this.space(); | |
| this.print(node.right, node); | |
| this.token(")"); | |
| this.printBlock(node); | |
| }; | |
| }; | |
| const ForInStatement = buildForXStatement("in"); | |
| exports.ForInStatement = ForInStatement; | |
| const ForOfStatement = buildForXStatement("of"); | |
| exports.ForOfStatement = ForOfStatement; | |
| function DoWhileStatement(node) { | |
| this.word("do"); | |
| this.space(); | |
| this.print(node.body, node); | |
| this.space(); | |
| this.word("while"); | |
| this.space(); | |
| this.token("("); | |
| this.print(node.test, node); | |
| this.token(")"); | |
| this.semicolon(); | |
| } | |
| function buildLabelStatement(prefix, key = "label") { | |
| return function (node) { | |
| this.word(prefix); | |
| const label = node[key]; | |
| if (label) { | |
| this.space(); | |
| const isLabel = key == "label"; | |
| const terminatorState = this.startTerminatorless(isLabel); | |
| this.print(label, node); | |
| this.endTerminatorless(terminatorState); | |
| } | |
| this.semicolon(); | |
| }; | |
| } | |
| const ContinueStatement = buildLabelStatement("continue"); | |
| exports.ContinueStatement = ContinueStatement; | |
| const ReturnStatement = buildLabelStatement("return", "argument"); | |
| exports.ReturnStatement = ReturnStatement; | |
| const BreakStatement = buildLabelStatement("break"); | |
| exports.BreakStatement = BreakStatement; | |
| const ThrowStatement = buildLabelStatement("throw", "argument"); | |
| exports.ThrowStatement = ThrowStatement; | |
| function LabeledStatement(node) { | |
| this.print(node.label, node); | |
| this.token(":"); | |
| this.space(); | |
| this.print(node.body, node); | |
| } | |
| function TryStatement(node) { | |
| this.word("try"); | |
| this.space(); | |
| this.print(node.block, node); | |
| this.space(); | |
| if (node.handlers) { | |
| this.print(node.handlers[0], node); | |
| } else { | |
| this.print(node.handler, node); | |
| } | |
| if (node.finalizer) { | |
| this.space(); | |
| this.word("finally"); | |
| this.space(); | |
| this.print(node.finalizer, node); | |
| } | |
| } | |
| function CatchClause(node) { | |
| this.word("catch"); | |
| this.space(); | |
| if (node.param) { | |
| this.token("("); | |
| this.print(node.param, node); | |
| this.token(")"); | |
| this.space(); | |
| } | |
| this.print(node.body, node); | |
| } | |
| function SwitchStatement(node) { | |
| this.word("switch"); | |
| this.space(); | |
| this.token("("); | |
| this.print(node.discriminant, node); | |
| this.token(")"); | |
| this.space(); | |
| this.token("{"); | |
| this.printSequence(node.cases, node, { | |
| indent: true, | |
| addNewlines(leading, cas) { | |
| if (!leading && node.cases[node.cases.length - 1] === cas) return -1; | |
| } | |
| }); | |
| this.token("}"); | |
| } | |
| function SwitchCase(node) { | |
| if (node.test) { | |
| this.word("case"); | |
| this.space(); | |
| this.print(node.test, node); | |
| this.token(":"); | |
| } else { | |
| this.word("default"); | |
| this.token(":"); | |
| } | |
| if (node.consequent.length) { | |
| this.newline(); | |
| this.printSequence(node.consequent, node, { | |
| indent: true | |
| }); | |
| } | |
| } | |
| function DebuggerStatement() { | |
| this.word("debugger"); | |
| this.semicolon(); | |
| } | |
| function variableDeclarationIndent() { | |
| this.token(","); | |
| this.newline(); | |
| if (this.endsWith("\n")) for (let i = 0; i < 4; i++) this.space(true); | |
| } | |
| function constDeclarationIndent() { | |
| this.token(","); | |
| this.newline(); | |
| if (this.endsWith("\n")) for (let i = 0; i < 6; i++) this.space(true); | |
| } | |
| function VariableDeclaration(node, parent) { | |
| if (node.declare) { | |
| this.word("declare"); | |
| this.space(); | |
| } | |
| this.word(node.kind); | |
| this.space(); | |
| let hasInits = false; | |
| if (!t().isFor(parent)) { | |
| for (const declar of node.declarations) { | |
| if (declar.init) { | |
| hasInits = true; | |
| } | |
| } | |
| } | |
| let separator; | |
| if (hasInits) { | |
| separator = node.kind === "const" ? constDeclarationIndent : variableDeclarationIndent; | |
| } | |
| this.printList(node.declarations, node, { | |
| separator | |
| }); | |
| if (t().isFor(parent)) { | |
| if (parent.left === node || parent.init === node) return; | |
| } | |
| this.semicolon(); | |
| } | |
| function VariableDeclarator(node) { | |
| this.print(node.id, node); | |
| if (node.definite) this.token("!"); | |
| this.print(node.id.typeAnnotation, node); | |
| if (node.init) { | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(node.init, node); | |
| } | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.TaggedTemplateExpression = TaggedTemplateExpression; | |
| exports.TemplateElement = TemplateElement; | |
| exports.TemplateLiteral = TemplateLiteral; | |
| function TaggedTemplateExpression(node) { | |
| this.print(node.tag, node); | |
| this.print(node.typeParameters, node); | |
| this.print(node.quasi, node); | |
| } | |
| function TemplateElement(node, parent) { | |
| const isFirst = parent.quasis[0] === node; | |
| const isLast = parent.quasis[parent.quasis.length - 1] === node; | |
| const value = (isFirst ? "`" : "}") + node.value.raw + (isLast ? "`" : "${"); | |
| this.token(value); | |
| } | |
| function TemplateLiteral(node) { | |
| const quasis = node.quasis; | |
| for (let i = 0; i < quasis.length; i++) { | |
| this.print(quasis[i], node); | |
| if (i + 1 < quasis.length) { | |
| this.print(node.expressions[i], node); | |
| } | |
| } | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.Identifier = Identifier; | |
| exports.SpreadElement = exports.RestElement = RestElement; | |
| exports.ObjectPattern = exports.ObjectExpression = ObjectExpression; | |
| exports.ObjectMethod = ObjectMethod; | |
| exports.ObjectProperty = ObjectProperty; | |
| exports.ArrayPattern = exports.ArrayExpression = ArrayExpression; | |
| exports.RegExpLiteral = RegExpLiteral; | |
| exports.BooleanLiteral = BooleanLiteral; | |
| exports.NullLiteral = NullLiteral; | |
| exports.NumericLiteral = NumericLiteral; | |
| exports.StringLiteral = StringLiteral; | |
| exports.BigIntLiteral = BigIntLiteral; | |
| exports.PipelineTopicExpression = PipelineTopicExpression; | |
| exports.PipelineBareFunction = PipelineBareFunction; | |
| exports.PipelinePrimaryTopicReference = PipelinePrimaryTopicReference; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _jsesc() { | |
| const data = _interopRequireDefault(require("jsesc")); | |
| _jsesc = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function Identifier(node) { | |
| this.exactSource(node.loc, () => { | |
| this.word(node.name); | |
| }); | |
| } | |
| function RestElement(node) { | |
| this.token("..."); | |
| this.print(node.argument, node); | |
| } | |
| function ObjectExpression(node) { | |
| const props = node.properties; | |
| this.token("{"); | |
| this.printInnerComments(node); | |
| if (props.length) { | |
| this.space(); | |
| this.printList(props, node, { | |
| indent: true, | |
| statement: true | |
| }); | |
| this.space(); | |
| } | |
| this.token("}"); | |
| } | |
| function ObjectMethod(node) { | |
| this.printJoin(node.decorators, node); | |
| this._methodHead(node); | |
| this.space(); | |
| this.print(node.body, node); | |
| } | |
| function ObjectProperty(node) { | |
| this.printJoin(node.decorators, node); | |
| if (node.computed) { | |
| this.token("["); | |
| this.print(node.key, node); | |
| this.token("]"); | |
| } else { | |
| if (t().isAssignmentPattern(node.value) && t().isIdentifier(node.key) && node.key.name === node.value.left.name) { | |
| this.print(node.value, node); | |
| return; | |
| } | |
| this.print(node.key, node); | |
| if (node.shorthand && t().isIdentifier(node.key) && t().isIdentifier(node.value) && node.key.name === node.value.name) { | |
| return; | |
| } | |
| } | |
| this.token(":"); | |
| this.space(); | |
| this.print(node.value, node); | |
| } | |
| function ArrayExpression(node) { | |
| const elems = node.elements; | |
| const len = elems.length; | |
| this.token("["); | |
| this.printInnerComments(node); | |
| for (let i = 0; i < elems.length; i++) { | |
| const elem = elems[i]; | |
| if (elem) { | |
| if (i > 0) this.space(); | |
| this.print(elem, node); | |
| if (i < len - 1) this.token(","); | |
| } else { | |
| this.token(","); | |
| } | |
| } | |
| this.token("]"); | |
| } | |
| function RegExpLiteral(node) { | |
| this.word(`/${node.pattern}/${node.flags}`); | |
| } | |
| function BooleanLiteral(node) { | |
| this.word(node.value ? "true" : "false"); | |
| } | |
| function NullLiteral() { | |
| this.word("null"); | |
| } | |
| function NumericLiteral(node) { | |
| const raw = this.getPossibleRaw(node); | |
| const value = node.value + ""; | |
| if (raw == null) { | |
| this.number(value); | |
| } else if (this.format.minified) { | |
| this.number(raw.length < value.length ? raw : value); | |
| } else { | |
| this.number(raw); | |
| } | |
| } | |
| function StringLiteral(node) { | |
| const raw = this.getPossibleRaw(node); | |
| if (!this.format.minified && raw != null) { | |
| this.token(raw); | |
| return; | |
| } | |
| const opts = this.format.jsescOption; | |
| if (this.format.jsonCompatibleStrings) { | |
| opts.json = true; | |
| } | |
| const val = (0, _jsesc().default)(node.value, opts); | |
| return this.token(val); | |
| } | |
| function BigIntLiteral(node) { | |
| const raw = this.getPossibleRaw(node); | |
| if (!this.format.minified && raw != null) { | |
| this.token(raw); | |
| return; | |
| } | |
| this.token(node.value); | |
| } | |
| function PipelineTopicExpression(node) { | |
| this.print(node.expression, node); | |
| } | |
| function PipelineBareFunction(node) { | |
| this.print(node.callee, node); | |
| } | |
| function PipelinePrimaryTopicReference() { | |
| this.token("#"); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.TSTypeAnnotation = TSTypeAnnotation; | |
| exports.TSTypeParameterDeclaration = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation; | |
| exports.TSTypeParameter = TSTypeParameter; | |
| exports.TSParameterProperty = TSParameterProperty; | |
| exports.TSDeclareFunction = TSDeclareFunction; | |
| exports.TSDeclareMethod = TSDeclareMethod; | |
| exports.TSQualifiedName = TSQualifiedName; | |
| exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration; | |
| exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration; | |
| exports.TSPropertySignature = TSPropertySignature; | |
| exports.tsPrintPropertyOrMethodName = tsPrintPropertyOrMethodName; | |
| exports.TSMethodSignature = TSMethodSignature; | |
| exports.TSIndexSignature = TSIndexSignature; | |
| exports.TSAnyKeyword = TSAnyKeyword; | |
| exports.TSUnknownKeyword = TSUnknownKeyword; | |
| exports.TSNumberKeyword = TSNumberKeyword; | |
| exports.TSObjectKeyword = TSObjectKeyword; | |
| exports.TSBooleanKeyword = TSBooleanKeyword; | |
| exports.TSStringKeyword = TSStringKeyword; | |
| exports.TSSymbolKeyword = TSSymbolKeyword; | |
| exports.TSVoidKeyword = TSVoidKeyword; | |
| exports.TSUndefinedKeyword = TSUndefinedKeyword; | |
| exports.TSNullKeyword = TSNullKeyword; | |
| exports.TSNeverKeyword = TSNeverKeyword; | |
| exports.TSThisType = TSThisType; | |
| exports.TSFunctionType = TSFunctionType; | |
| exports.TSConstructorType = TSConstructorType; | |
| exports.tsPrintFunctionOrConstructorType = tsPrintFunctionOrConstructorType; | |
| exports.TSTypeReference = TSTypeReference; | |
| exports.TSTypePredicate = TSTypePredicate; | |
| exports.TSTypeQuery = TSTypeQuery; | |
| exports.TSTypeLiteral = TSTypeLiteral; | |
| exports.tsPrintTypeLiteralOrInterfaceBody = tsPrintTypeLiteralOrInterfaceBody; | |
| exports.tsPrintBraced = tsPrintBraced; | |
| exports.TSArrayType = TSArrayType; | |
| exports.TSTupleType = TSTupleType; | |
| exports.TSOptionalType = TSOptionalType; | |
| exports.TSRestType = TSRestType; | |
| exports.TSUnionType = TSUnionType; | |
| exports.TSIntersectionType = TSIntersectionType; | |
| exports.tsPrintUnionOrIntersectionType = tsPrintUnionOrIntersectionType; | |
| exports.TSConditionalType = TSConditionalType; | |
| exports.TSInferType = TSInferType; | |
| exports.TSParenthesizedType = TSParenthesizedType; | |
| exports.TSTypeOperator = TSTypeOperator; | |
| exports.TSIndexedAccessType = TSIndexedAccessType; | |
| exports.TSMappedType = TSMappedType; | |
| exports.TSLiteralType = TSLiteralType; | |
| exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments; | |
| exports.TSInterfaceDeclaration = TSInterfaceDeclaration; | |
| exports.TSInterfaceBody = TSInterfaceBody; | |
| exports.TSTypeAliasDeclaration = TSTypeAliasDeclaration; | |
| exports.TSAsExpression = TSAsExpression; | |
| exports.TSTypeAssertion = TSTypeAssertion; | |
| exports.TSEnumDeclaration = TSEnumDeclaration; | |
| exports.TSEnumMember = TSEnumMember; | |
| exports.TSModuleDeclaration = TSModuleDeclaration; | |
| exports.TSModuleBlock = TSModuleBlock; | |
| exports.TSImportType = TSImportType; | |
| exports.TSImportEqualsDeclaration = TSImportEqualsDeclaration; | |
| exports.TSExternalModuleReference = TSExternalModuleReference; | |
| exports.TSNonNullExpression = TSNonNullExpression; | |
| exports.TSExportAssignment = TSExportAssignment; | |
| exports.TSNamespaceExportDeclaration = TSNamespaceExportDeclaration; | |
| exports.tsPrintSignatureDeclarationBase = tsPrintSignatureDeclarationBase; | |
| function TSTypeAnnotation(node) { | |
| this.token(":"); | |
| this.space(); | |
| if (node.optional) this.token("?"); | |
| this.print(node.typeAnnotation, node); | |
| } | |
| function TSTypeParameterInstantiation(node) { | |
| this.token("<"); | |
| this.printList(node.params, node, {}); | |
| this.token(">"); | |
| } | |
| function TSTypeParameter(node) { | |
| this.word(node.name); | |
| if (node.constraint) { | |
| this.space(); | |
| this.word("extends"); | |
| this.space(); | |
| this.print(node.constraint, node); | |
| } | |
| if (node.default) { | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(node.default, node); | |
| } | |
| } | |
| function TSParameterProperty(node) { | |
| if (node.accessibility) { | |
| this.word(node.accessibility); | |
| this.space(); | |
| } | |
| if (node.readonly) { | |
| this.word("readonly"); | |
| this.space(); | |
| } | |
| this._param(node.parameter); | |
| } | |
| function TSDeclareFunction(node) { | |
| if (node.declare) { | |
| this.word("declare"); | |
| this.space(); | |
| } | |
| this._functionHead(node); | |
| this.token(";"); | |
| } | |
| function TSDeclareMethod(node) { | |
| this._classMethodHead(node); | |
| this.token(";"); | |
| } | |
| function TSQualifiedName(node) { | |
| this.print(node.left, node); | |
| this.token("."); | |
| this.print(node.right, node); | |
| } | |
| function TSCallSignatureDeclaration(node) { | |
| this.tsPrintSignatureDeclarationBase(node); | |
| } | |
| function TSConstructSignatureDeclaration(node) { | |
| this.word("new"); | |
| this.space(); | |
| this.tsPrintSignatureDeclarationBase(node); | |
| } | |
| function TSPropertySignature(node) { | |
| const { | |
| readonly, | |
| initializer | |
| } = node; | |
| if (readonly) { | |
| this.word("readonly"); | |
| this.space(); | |
| } | |
| this.tsPrintPropertyOrMethodName(node); | |
| this.print(node.typeAnnotation, node); | |
| if (initializer) { | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(initializer, node); | |
| } | |
| this.token(";"); | |
| } | |
| function tsPrintPropertyOrMethodName(node) { | |
| if (node.computed) { | |
| this.token("["); | |
| } | |
| this.print(node.key, node); | |
| if (node.computed) { | |
| this.token("]"); | |
| } | |
| if (node.optional) { | |
| this.token("?"); | |
| } | |
| } | |
| function TSMethodSignature(node) { | |
| this.tsPrintPropertyOrMethodName(node); | |
| this.tsPrintSignatureDeclarationBase(node); | |
| this.token(";"); | |
| } | |
| function TSIndexSignature(node) { | |
| const { | |
| readonly | |
| } = node; | |
| if (readonly) { | |
| this.word("readonly"); | |
| this.space(); | |
| } | |
| this.token("["); | |
| this._parameters(node.parameters, node); | |
| this.token("]"); | |
| this.print(node.typeAnnotation, node); | |
| this.token(";"); | |
| } | |
| function TSAnyKeyword() { | |
| this.word("any"); | |
| } | |
| function TSUnknownKeyword() { | |
| this.word("unknown"); | |
| } | |
| function TSNumberKeyword() { | |
| this.word("number"); | |
| } | |
| function TSObjectKeyword() { | |
| this.word("object"); | |
| } | |
| function TSBooleanKeyword() { | |
| this.word("boolean"); | |
| } | |
| function TSStringKeyword() { | |
| this.word("string"); | |
| } | |
| function TSSymbolKeyword() { | |
| this.word("symbol"); | |
| } | |
| function TSVoidKeyword() { | |
| this.word("void"); | |
| } | |
| function TSUndefinedKeyword() { | |
| this.word("undefined"); | |
| } | |
| function TSNullKeyword() { | |
| this.word("null"); | |
| } | |
| function TSNeverKeyword() { | |
| this.word("never"); | |
| } | |
| function TSThisType() { | |
| this.word("this"); | |
| } | |
| function TSFunctionType(node) { | |
| this.tsPrintFunctionOrConstructorType(node); | |
| } | |
| function TSConstructorType(node) { | |
| this.word("new"); | |
| this.space(); | |
| this.tsPrintFunctionOrConstructorType(node); | |
| } | |
| function tsPrintFunctionOrConstructorType(node) { | |
| const { | |
| typeParameters, | |
| parameters | |
| } = node; | |
| this.print(typeParameters, node); | |
| this.token("("); | |
| this._parameters(parameters, node); | |
| this.token(")"); | |
| this.space(); | |
| this.token("=>"); | |
| this.space(); | |
| this.print(node.typeAnnotation.typeAnnotation, node); | |
| } | |
| function TSTypeReference(node) { | |
| this.print(node.typeName, node); | |
| this.print(node.typeParameters, node); | |
| } | |
| function TSTypePredicate(node) { | |
| this.print(node.parameterName); | |
| this.space(); | |
| this.word("is"); | |
| this.space(); | |
| this.print(node.typeAnnotation.typeAnnotation); | |
| } | |
| function TSTypeQuery(node) { | |
| this.word("typeof"); | |
| this.space(); | |
| this.print(node.exprName); | |
| } | |
| function TSTypeLiteral(node) { | |
| this.tsPrintTypeLiteralOrInterfaceBody(node.members, node); | |
| } | |
| function tsPrintTypeLiteralOrInterfaceBody(members, node) { | |
| this.tsPrintBraced(members, node); | |
| } | |
| function tsPrintBraced(members, node) { | |
| this.token("{"); | |
| if (members.length) { | |
| this.indent(); | |
| this.newline(); | |
| for (const member of members) { | |
| this.print(member, node); | |
| this.newline(); | |
| } | |
| this.dedent(); | |
| this.rightBrace(); | |
| } else { | |
| this.token("}"); | |
| } | |
| } | |
| function TSArrayType(node) { | |
| this.print(node.elementType, node); | |
| this.token("[]"); | |
| } | |
| function TSTupleType(node) { | |
| this.token("["); | |
| this.printList(node.elementTypes, node); | |
| this.token("]"); | |
| } | |
| function TSOptionalType(node) { | |
| this.print(node.typeAnnotation, node); | |
| this.token("?"); | |
| } | |
| function TSRestType(node) { | |
| this.token("..."); | |
| this.print(node.typeAnnotation, node); | |
| } | |
| function TSUnionType(node) { | |
| this.tsPrintUnionOrIntersectionType(node, "|"); | |
| } | |
| function TSIntersectionType(node) { | |
| this.tsPrintUnionOrIntersectionType(node, "&"); | |
| } | |
| function tsPrintUnionOrIntersectionType(node, sep) { | |
| this.printJoin(node.types, node, { | |
| separator() { | |
| this.space(); | |
| this.token(sep); | |
| this.space(); | |
| } | |
| }); | |
| } | |
| function TSConditionalType(node) { | |
| this.print(node.checkType); | |
| this.space(); | |
| this.word("extends"); | |
| this.space(); | |
| this.print(node.extendsType); | |
| this.space(); | |
| this.token("?"); | |
| this.space(); | |
| this.print(node.trueType); | |
| this.space(); | |
| this.token(":"); | |
| this.space(); | |
| this.print(node.falseType); | |
| } | |
| function TSInferType(node) { | |
| this.token("infer"); | |
| this.space(); | |
| this.print(node.typeParameter); | |
| } | |
| function TSParenthesizedType(node) { | |
| this.token("("); | |
| this.print(node.typeAnnotation, node); | |
| this.token(")"); | |
| } | |
| function TSTypeOperator(node) { | |
| this.token(node.operator); | |
| this.space(); | |
| this.print(node.typeAnnotation, node); | |
| } | |
| function TSIndexedAccessType(node) { | |
| this.print(node.objectType, node); | |
| this.token("["); | |
| this.print(node.indexType, node); | |
| this.token("]"); | |
| } | |
| function TSMappedType(node) { | |
| const { | |
| readonly, | |
| typeParameter, | |
| optional | |
| } = node; | |
| this.token("{"); | |
| this.space(); | |
| if (readonly) { | |
| tokenIfPlusMinus(this, readonly); | |
| this.word("readonly"); | |
| this.space(); | |
| } | |
| this.token("["); | |
| this.word(typeParameter.name); | |
| this.space(); | |
| this.word("in"); | |
| this.space(); | |
| this.print(typeParameter.constraint, typeParameter); | |
| this.token("]"); | |
| if (optional) { | |
| tokenIfPlusMinus(this, optional); | |
| this.token("?"); | |
| } | |
| this.token(":"); | |
| this.space(); | |
| this.print(node.typeAnnotation, node); | |
| this.space(); | |
| this.token("}"); | |
| } | |
| function tokenIfPlusMinus(self, tok) { | |
| if (tok !== true) { | |
| self.token(tok); | |
| } | |
| } | |
| function TSLiteralType(node) { | |
| this.print(node.literal, node); | |
| } | |
| function TSExpressionWithTypeArguments(node) { | |
| this.print(node.expression, node); | |
| this.print(node.typeParameters, node); | |
| } | |
| function TSInterfaceDeclaration(node) { | |
| const { | |
| declare, | |
| id, | |
| typeParameters, | |
| extends: extendz, | |
| body | |
| } = node; | |
| if (declare) { | |
| this.word("declare"); | |
| this.space(); | |
| } | |
| this.word("interface"); | |
| this.space(); | |
| this.print(id, node); | |
| this.print(typeParameters, node); | |
| if (extendz) { | |
| this.space(); | |
| this.word("extends"); | |
| this.space(); | |
| this.printList(extendz, node); | |
| } | |
| this.space(); | |
| this.print(body, node); | |
| } | |
| function TSInterfaceBody(node) { | |
| this.tsPrintTypeLiteralOrInterfaceBody(node.body, node); | |
| } | |
| function TSTypeAliasDeclaration(node) { | |
| const { | |
| declare, | |
| id, | |
| typeParameters, | |
| typeAnnotation | |
| } = node; | |
| if (declare) { | |
| this.word("declare"); | |
| this.space(); | |
| } | |
| this.word("type"); | |
| this.space(); | |
| this.print(id, node); | |
| this.print(typeParameters, node); | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(typeAnnotation, node); | |
| this.token(";"); | |
| } | |
| function TSAsExpression(node) { | |
| const { | |
| expression, | |
| typeAnnotation | |
| } = node; | |
| this.print(expression, node); | |
| this.space(); | |
| this.word("as"); | |
| this.space(); | |
| this.print(typeAnnotation, node); | |
| } | |
| function TSTypeAssertion(node) { | |
| const { | |
| typeAnnotation, | |
| expression | |
| } = node; | |
| this.token("<"); | |
| this.print(typeAnnotation, node); | |
| this.token(">"); | |
| this.space(); | |
| this.print(expression, node); | |
| } | |
| function TSEnumDeclaration(node) { | |
| const { | |
| declare, | |
| const: isConst, | |
| id, | |
| members | |
| } = node; | |
| if (declare) { | |
| this.word("declare"); | |
| this.space(); | |
| } | |
| if (isConst) { | |
| this.word("const"); | |
| this.space(); | |
| } | |
| this.word("enum"); | |
| this.space(); | |
| this.print(id, node); | |
| this.space(); | |
| this.tsPrintBraced(members, node); | |
| } | |
| function TSEnumMember(node) { | |
| const { | |
| id, | |
| initializer | |
| } = node; | |
| this.print(id, node); | |
| if (initializer) { | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(initializer, node); | |
| } | |
| this.token(","); | |
| } | |
| function TSModuleDeclaration(node) { | |
| const { | |
| declare, | |
| id | |
| } = node; | |
| if (declare) { | |
| this.word("declare"); | |
| this.space(); | |
| } | |
| if (!node.global) { | |
| this.word(id.type === "Identifier" ? "namespace" : "module"); | |
| this.space(); | |
| } | |
| this.print(id, node); | |
| if (!node.body) { | |
| this.token(";"); | |
| return; | |
| } | |
| let body = node.body; | |
| while (body.type === "TSModuleDeclaration") { | |
| this.token("."); | |
| this.print(body.id, body); | |
| body = body.body; | |
| } | |
| this.space(); | |
| this.print(body, node); | |
| } | |
| function TSModuleBlock(node) { | |
| this.tsPrintBraced(node.body, node); | |
| } | |
| function TSImportType(node) { | |
| const { | |
| argument, | |
| qualifier, | |
| typeParameters | |
| } = node; | |
| this.word("import"); | |
| this.token("("); | |
| this.print(argument, node); | |
| this.token(")"); | |
| if (qualifier) { | |
| this.token("."); | |
| this.print(qualifier, node); | |
| } | |
| if (typeParameters) { | |
| this.print(typeParameters, node); | |
| } | |
| } | |
| function TSImportEqualsDeclaration(node) { | |
| const { | |
| isExport, | |
| id, | |
| moduleReference | |
| } = node; | |
| if (isExport) { | |
| this.word("export"); | |
| this.space(); | |
| } | |
| this.word("import"); | |
| this.space(); | |
| this.print(id, node); | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(moduleReference, node); | |
| this.token(";"); | |
| } | |
| function TSExternalModuleReference(node) { | |
| this.token("require("); | |
| this.print(node.expression, node); | |
| this.token(")"); | |
| } | |
| function TSNonNullExpression(node) { | |
| this.print(node.expression, node); | |
| this.token("!"); | |
| } | |
| function TSExportAssignment(node) { | |
| this.word("export"); | |
| this.space(); | |
| this.token("="); | |
| this.space(); | |
| this.print(node.expression, node); | |
| this.token(";"); | |
| } | |
| function TSNamespaceExportDeclaration(node) { | |
| this.word("export"); | |
| this.space(); | |
| this.word("as"); | |
| this.space(); | |
| this.word("namespace"); | |
| this.space(); | |
| this.print(node.id, node); | |
| } | |
| function tsPrintSignatureDeclarationBase(node) { | |
| const { | |
| typeParameters, | |
| parameters | |
| } = node; | |
| this.print(typeParameters, node); | |
| this.token("("); | |
| this._parameters(parameters, node); | |
| this.token(")"); | |
| this.print(node.typeAnnotation, node); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| exports.CodeGenerator = void 0; | |
| var _sourceMap = _interopRequireDefault(require("./source-map")); | |
| var _printer = _interopRequireDefault(require("./printer")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| class Generator extends _printer.default { | |
| constructor(ast, opts = {}, code) { | |
| const format = normalizeOptions(code, opts); | |
| const map = opts.sourceMaps ? new _sourceMap.default(opts, code) : null; | |
| super(format, map); | |
| this.ast = ast; | |
| } | |
| generate() { | |
| return super.generate(this.ast); | |
| } | |
| } | |
| function normalizeOptions(code, opts) { | |
| const format = { | |
| auxiliaryCommentBefore: opts.auxiliaryCommentBefore, | |
| auxiliaryCommentAfter: opts.auxiliaryCommentAfter, | |
| shouldPrintComment: opts.shouldPrintComment, | |
| retainLines: opts.retainLines, | |
| retainFunctionParens: opts.retainFunctionParens, | |
| comments: opts.comments == null || opts.comments, | |
| compact: opts.compact, | |
| minified: opts.minified, | |
| concise: opts.concise, | |
| jsonCompatibleStrings: opts.jsonCompatibleStrings, | |
| indent: { | |
| adjustMultilineComment: true, | |
| style: " ", | |
| base: 0 | |
| }, | |
| decoratorsBeforeExport: !!opts.decoratorsBeforeExport, | |
| jsescOption: Object.assign({ | |
| quotes: "double", | |
| wrap: true | |
| }, opts.jsescOption) | |
| }; | |
| if (format.minified) { | |
| format.compact = true; | |
| format.shouldPrintComment = format.shouldPrintComment || (() => format.comments); | |
| } else { | |
| format.shouldPrintComment = format.shouldPrintComment || (value => format.comments || value.indexOf("@license") >= 0 || value.indexOf("@preserve") >= 0); | |
| } | |
| if (format.compact === "auto") { | |
| format.compact = code.length > 500000; | |
| if (format.compact) { | |
| console.error("[BABEL] Note: The code generator has deoptimised the styling of " + `${opts.filename} as it exceeds the max of ${"500KB"}.`); | |
| } | |
| } | |
| if (format.compact) { | |
| format.indent.adjustMultilineComment = false; | |
| } | |
| return format; | |
| } | |
| class CodeGenerator { | |
| constructor(ast, opts, code) { | |
| this._generator = new Generator(ast, opts, code); | |
| } | |
| generate() { | |
| return this._generator.generate(); | |
| } | |
| } | |
| exports.CodeGenerator = CodeGenerator; | |
| function _default(ast, opts, code) { | |
| const gen = new Generator(ast, opts, code); | |
| return gen.generate(); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.needsWhitespace = needsWhitespace; | |
| exports.needsWhitespaceBefore = needsWhitespaceBefore; | |
| exports.needsWhitespaceAfter = needsWhitespaceAfter; | |
| exports.needsParens = needsParens; | |
| var whitespace = _interopRequireWildcard(require("./whitespace")); | |
| var parens = _interopRequireWildcard(require("./parentheses")); | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function expandAliases(obj) { | |
| const newObj = {}; | |
| function add(type, func) { | |
| const fn = newObj[type]; | |
| newObj[type] = fn ? function (node, parent, stack) { | |
| const result = fn(node, parent, stack); | |
| return result == null ? func(node, parent, stack) : result; | |
| } : func; | |
| } | |
| for (const type of Object.keys(obj)) { | |
| const aliases = t().FLIPPED_ALIAS_KEYS[type]; | |
| if (aliases) { | |
| for (const alias of aliases) { | |
| add(alias, obj[type]); | |
| } | |
| } else { | |
| add(type, obj[type]); | |
| } | |
| } | |
| return newObj; | |
| } | |
| const expandedParens = expandAliases(parens); | |
| const expandedWhitespaceNodes = expandAliases(whitespace.nodes); | |
| const expandedWhitespaceList = expandAliases(whitespace.list); | |
| function find(obj, node, parent, printStack) { | |
| const fn = obj[node.type]; | |
| return fn ? fn(node, parent, printStack) : null; | |
| } | |
| function isOrHasCallExpression(node) { | |
| if (t().isCallExpression(node)) { | |
| return true; | |
| } | |
| if (t().isMemberExpression(node)) { | |
| return isOrHasCallExpression(node.object) || !node.computed && isOrHasCallExpression(node.property); | |
| } else { | |
| return false; | |
| } | |
| } | |
| function needsWhitespace(node, parent, type) { | |
| if (!node) return 0; | |
| if (t().isExpressionStatement(node)) { | |
| node = node.expression; | |
| } | |
| let linesInfo = find(expandedWhitespaceNodes, node, parent); | |
| if (!linesInfo) { | |
| const items = find(expandedWhitespaceList, node, parent); | |
| if (items) { | |
| for (let i = 0; i < items.length; i++) { | |
| linesInfo = needsWhitespace(items[i], node, type); | |
| if (linesInfo) break; | |
| } | |
| } | |
| } | |
| if (typeof linesInfo === "object" && linesInfo !== null) { | |
| return linesInfo[type] || 0; | |
| } | |
| return 0; | |
| } | |
| function needsWhitespaceBefore(node, parent) { | |
| return needsWhitespace(node, parent, "before"); | |
| } | |
| function needsWhitespaceAfter(node, parent) { | |
| return needsWhitespace(node, parent, "after"); | |
| } | |
| function needsParens(node, parent, printStack) { | |
| if (!parent) return false; | |
| if (t().isNewExpression(parent) && parent.callee === node) { | |
| if (isOrHasCallExpression(node)) return true; | |
| } | |
| return find(expandedParens, node, parent, printStack); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.NullableTypeAnnotation = NullableTypeAnnotation; | |
| exports.FunctionTypeAnnotation = FunctionTypeAnnotation; | |
| exports.UpdateExpression = UpdateExpression; | |
| exports.ObjectExpression = ObjectExpression; | |
| exports.DoExpression = DoExpression; | |
| exports.Binary = Binary; | |
| exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation; | |
| exports.TSAsExpression = TSAsExpression; | |
| exports.TSTypeAssertion = TSTypeAssertion; | |
| exports.TSIntersectionType = exports.TSUnionType = TSUnionType; | |
| exports.BinaryExpression = BinaryExpression; | |
| exports.SequenceExpression = SequenceExpression; | |
| exports.AwaitExpression = exports.YieldExpression = YieldExpression; | |
| exports.ClassExpression = ClassExpression; | |
| exports.UnaryLike = UnaryLike; | |
| exports.FunctionExpression = FunctionExpression; | |
| exports.ArrowFunctionExpression = ArrowFunctionExpression; | |
| exports.ConditionalExpression = ConditionalExpression; | |
| exports.OptionalMemberExpression = OptionalMemberExpression; | |
| exports.AssignmentExpression = AssignmentExpression; | |
| exports.NewExpression = NewExpression; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| const PRECEDENCE = { | |
| "||": 0, | |
| "&&": 1, | |
| "|": 2, | |
| "^": 3, | |
| "&": 4, | |
| "==": 5, | |
| "===": 5, | |
| "!=": 5, | |
| "!==": 5, | |
| "<": 6, | |
| ">": 6, | |
| "<=": 6, | |
| ">=": 6, | |
| in: 6, | |
| instanceof: 6, | |
| ">>": 7, | |
| "<<": 7, | |
| ">>>": 7, | |
| "+": 8, | |
| "-": 8, | |
| "*": 9, | |
| "/": 9, | |
| "%": 9, | |
| "**": 10 | |
| }; | |
| const isClassExtendsClause = (node, parent) => (t().isClassDeclaration(parent) || t().isClassExpression(parent)) && parent.superClass === node; | |
| function NullableTypeAnnotation(node, parent) { | |
| return t().isArrayTypeAnnotation(parent); | |
| } | |
| function FunctionTypeAnnotation(node, parent) { | |
| return t().isUnionTypeAnnotation(parent) || t().isIntersectionTypeAnnotation(parent) || t().isArrayTypeAnnotation(parent); | |
| } | |
| function UpdateExpression(node, parent) { | |
| return t().isMemberExpression(parent, { | |
| object: node | |
| }) || t().isCallExpression(parent, { | |
| callee: node | |
| }) || t().isNewExpression(parent, { | |
| callee: node | |
| }) || isClassExtendsClause(node, parent); | |
| } | |
| function ObjectExpression(node, parent, printStack) { | |
| return isFirstInStatement(printStack, { | |
| considerArrow: true | |
| }); | |
| } | |
| function DoExpression(node, parent, printStack) { | |
| return isFirstInStatement(printStack); | |
| } | |
| function Binary(node, parent) { | |
| if (node.operator === "**" && t().isBinaryExpression(parent, { | |
| operator: "**" | |
| })) { | |
| return parent.left === node; | |
| } | |
| if (isClassExtendsClause(node, parent)) { | |
| return true; | |
| } | |
| if ((t().isCallExpression(parent) || t().isNewExpression(parent)) && parent.callee === node || t().isUnaryLike(parent) || t().isMemberExpression(parent) && parent.object === node || t().isAwaitExpression(parent)) { | |
| return true; | |
| } | |
| if (t().isBinary(parent)) { | |
| const parentOp = parent.operator; | |
| const parentPos = PRECEDENCE[parentOp]; | |
| const nodeOp = node.operator; | |
| const nodePos = PRECEDENCE[nodeOp]; | |
| if (parentPos === nodePos && parent.right === node && !t().isLogicalExpression(parent) || parentPos > nodePos) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| function UnionTypeAnnotation(node, parent) { | |
| return t().isArrayTypeAnnotation(parent) || t().isNullableTypeAnnotation(parent) || t().isIntersectionTypeAnnotation(parent) || t().isUnionTypeAnnotation(parent); | |
| } | |
| function TSAsExpression() { | |
| return true; | |
| } | |
| function TSTypeAssertion() { | |
| return true; | |
| } | |
| function TSUnionType(node, parent) { | |
| return t().isTSArrayType(parent) || t().isTSOptionalType(parent) || t().isTSIntersectionType(parent) || t().isTSUnionType(parent) || t().isTSRestType(parent); | |
| } | |
| function BinaryExpression(node, parent) { | |
| return node.operator === "in" && (t().isVariableDeclarator(parent) || t().isFor(parent)); | |
| } | |
| function SequenceExpression(node, parent) { | |
| if (t().isForStatement(parent) || t().isThrowStatement(parent) || t().isReturnStatement(parent) || t().isIfStatement(parent) && parent.test === node || t().isWhileStatement(parent) && parent.test === node || t().isForInStatement(parent) && parent.right === node || t().isSwitchStatement(parent) && parent.discriminant === node || t().isExpressionStatement(parent) && parent.expression === node) { | |
| return false; | |
| } | |
| return true; | |
| } | |
| function YieldExpression(node, parent) { | |
| return t().isBinary(parent) || t().isUnaryLike(parent) || t().isCallExpression(parent) || t().isMemberExpression(parent) || t().isNewExpression(parent) || t().isAwaitExpression(parent) && t().isYieldExpression(node) || t().isConditionalExpression(parent) && node === parent.test || isClassExtendsClause(node, parent); | |
| } | |
| function ClassExpression(node, parent, printStack) { | |
| return isFirstInStatement(printStack, { | |
| considerDefaultExports: true | |
| }); | |
| } | |
| function UnaryLike(node, parent) { | |
| return t().isMemberExpression(parent, { | |
| object: node | |
| }) || t().isCallExpression(parent, { | |
| callee: node | |
| }) || t().isNewExpression(parent, { | |
| callee: node | |
| }) || t().isBinaryExpression(parent, { | |
| operator: "**", | |
| left: node | |
| }) || isClassExtendsClause(node, parent); | |
| } | |
| function FunctionExpression(node, parent, printStack) { | |
| return isFirstInStatement(printStack, { | |
| considerDefaultExports: true | |
| }); | |
| } | |
| function ArrowFunctionExpression(node, parent) { | |
| return t().isExportDeclaration(parent) || ConditionalExpression(node, parent); | |
| } | |
| function ConditionalExpression(node, parent) { | |
| if (t().isUnaryLike(parent) || t().isBinary(parent) || t().isConditionalExpression(parent, { | |
| test: node | |
| }) || t().isAwaitExpression(parent) || t().isOptionalMemberExpression(parent) || t().isTaggedTemplateExpression(parent) || t().isTSTypeAssertion(parent) || t().isTSAsExpression(parent)) { | |
| return true; | |
| } | |
| return UnaryLike(node, parent); | |
| } | |
| function OptionalMemberExpression(node, parent) { | |
| return t().isCallExpression(parent) || t().isMemberExpression(parent); | |
| } | |
| function AssignmentExpression(node) { | |
| if (t().isObjectPattern(node.left)) { | |
| return true; | |
| } else { | |
| return ConditionalExpression(...arguments); | |
| } | |
| } | |
| function NewExpression(node, parent) { | |
| return isClassExtendsClause(node, parent); | |
| } | |
| function isFirstInStatement(printStack, { | |
| considerArrow = false, | |
| considerDefaultExports = false | |
| } = {}) { | |
| let i = printStack.length - 1; | |
| let node = printStack[i]; | |
| i--; | |
| let parent = printStack[i]; | |
| while (i > 0) { | |
| if (t().isExpressionStatement(parent, { | |
| expression: node | |
| }) || t().isTaggedTemplateExpression(parent) || considerDefaultExports && t().isExportDefaultDeclaration(parent, { | |
| declaration: node | |
| }) || considerArrow && t().isArrowFunctionExpression(parent, { | |
| body: node | |
| })) { | |
| return true; | |
| } | |
| if (t().isCallExpression(parent, { | |
| callee: node | |
| }) || t().isSequenceExpression(parent) && parent.expressions[0] === node || t().isMemberExpression(parent, { | |
| object: node | |
| }) || t().isConditional(parent, { | |
| test: node | |
| }) || t().isBinary(parent, { | |
| left: node | |
| }) || t().isAssignmentExpression(parent, { | |
| left: node | |
| })) { | |
| node = parent; | |
| i--; | |
| parent = printStack[i]; | |
| } else { | |
| return false; | |
| } | |
| } | |
| return false; | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.list = exports.nodes = void 0; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function crawl(node, state = {}) { | |
| if (t().isMemberExpression(node)) { | |
| crawl(node.object, state); | |
| if (node.computed) crawl(node.property, state); | |
| } else if (t().isBinary(node) || t().isAssignmentExpression(node)) { | |
| crawl(node.left, state); | |
| crawl(node.right, state); | |
| } else if (t().isCallExpression(node)) { | |
| state.hasCall = true; | |
| crawl(node.callee, state); | |
| } else if (t().isFunction(node)) { | |
| state.hasFunction = true; | |
| } else if (t().isIdentifier(node)) { | |
| state.hasHelper = state.hasHelper || isHelper(node.callee); | |
| } | |
| return state; | |
| } | |
| function isHelper(node) { | |
| if (t().isMemberExpression(node)) { | |
| return isHelper(node.object) || isHelper(node.property); | |
| } else if (t().isIdentifier(node)) { | |
| return node.name === "require" || node.name[0] === "_"; | |
| } else if (t().isCallExpression(node)) { | |
| return isHelper(node.callee); | |
| } else if (t().isBinary(node) || t().isAssignmentExpression(node)) { | |
| return t().isIdentifier(node.left) && isHelper(node.left) || isHelper(node.right); | |
| } else { | |
| return false; | |
| } | |
| } | |
| function isType(node) { | |
| return t().isLiteral(node) || t().isObjectExpression(node) || t().isArrayExpression(node) || t().isIdentifier(node) || t().isMemberExpression(node); | |
| } | |
| const nodes = { | |
| AssignmentExpression(node) { | |
| const state = crawl(node.right); | |
| if (state.hasCall && state.hasHelper || state.hasFunction) { | |
| return { | |
| before: state.hasFunction, | |
| after: true | |
| }; | |
| } | |
| }, | |
| SwitchCase(node, parent) { | |
| return { | |
| before: node.consequent.length || parent.cases[0] === node, | |
| after: !node.consequent.length && parent.cases[parent.cases.length - 1] === node | |
| }; | |
| }, | |
| LogicalExpression(node) { | |
| if (t().isFunction(node.left) || t().isFunction(node.right)) { | |
| return { | |
| after: true | |
| }; | |
| } | |
| }, | |
| Literal(node) { | |
| if (node.value === "use strict") { | |
| return { | |
| after: true | |
| }; | |
| } | |
| }, | |
| CallExpression(node) { | |
| if (t().isFunction(node.callee) || isHelper(node)) { | |
| return { | |
| before: true, | |
| after: true | |
| }; | |
| } | |
| }, | |
| VariableDeclaration(node) { | |
| for (let i = 0; i < node.declarations.length; i++) { | |
| const declar = node.declarations[i]; | |
| let enabled = isHelper(declar.id) && !isType(declar.init); | |
| if (!enabled) { | |
| const state = crawl(declar.init); | |
| enabled = isHelper(declar.init) && state.hasCall || state.hasFunction; | |
| } | |
| if (enabled) { | |
| return { | |
| before: true, | |
| after: true | |
| }; | |
| } | |
| } | |
| }, | |
| IfStatement(node) { | |
| if (t().isBlockStatement(node.consequent)) { | |
| return { | |
| before: true, | |
| after: true | |
| }; | |
| } | |
| } | |
| }; | |
| exports.nodes = nodes; | |
| nodes.ObjectProperty = nodes.ObjectTypeProperty = nodes.ObjectMethod = function (node, parent) { | |
| if (parent.properties[0] === node) { | |
| return { | |
| before: true | |
| }; | |
| } | |
| }; | |
| nodes.ObjectTypeCallProperty = function (node, parent) { | |
| if (parent.callProperties[0] === node && (!parent.properties || !parent.properties.length)) { | |
| return { | |
| before: true | |
| }; | |
| } | |
| }; | |
| nodes.ObjectTypeIndexer = function (node, parent) { | |
| if (parent.indexers[0] === node && (!parent.properties || !parent.properties.length) && (!parent.callProperties || !parent.callProperties.length)) { | |
| return { | |
| before: true | |
| }; | |
| } | |
| }; | |
| nodes.ObjectTypeInternalSlot = function (node, parent) { | |
| if (parent.internalSlots[0] === node && (!parent.properties || !parent.properties.length) && (!parent.callProperties || !parent.callProperties.length) && (!parent.indexers || !parent.indexers.length)) { | |
| return { | |
| before: true | |
| }; | |
| } | |
| }; | |
| const list = { | |
| VariableDeclaration(node) { | |
| return node.declarations.map(decl => decl.init); | |
| }, | |
| ArrayExpression(node) { | |
| return node.elements; | |
| }, | |
| ObjectExpression(node) { | |
| return node.properties; | |
| } | |
| }; | |
| exports.list = list; | |
| [["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function ([type, amounts]) { | |
| if (typeof amounts === "boolean") { | |
| amounts = { | |
| after: amounts, | |
| before: amounts | |
| }; | |
| } | |
| [type].concat(t().FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) { | |
| nodes[type] = function () { | |
| return amounts; | |
| }; | |
| }); | |
| }); |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| function _isInteger() { | |
| const data = _interopRequireDefault(require("lodash/isInteger")); | |
| _isInteger = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _repeat() { | |
| const data = _interopRequireDefault(require("lodash/repeat")); | |
| _repeat = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _buffer = _interopRequireDefault(require("./buffer")); | |
| var n = _interopRequireWildcard(require("./node")); | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var generatorFunctions = _interopRequireWildcard(require("./generators")); | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const SCIENTIFIC_NOTATION = /e/i; | |
| const ZERO_DECIMAL_INTEGER = /\.0+$/; | |
| const NON_DECIMAL_LITERAL = /^0[box]/; | |
| class Printer { | |
| constructor(format, map) { | |
| this.inForStatementInitCounter = 0; | |
| this._printStack = []; | |
| this._indent = 0; | |
| this._insideAux = false; | |
| this._printedCommentStarts = {}; | |
| this._parenPushNewlineState = null; | |
| this._noLineTerminator = false; | |
| this._printAuxAfterOnNextUserNode = false; | |
| this._printedComments = new WeakSet(); | |
| this._endsWithInteger = false; | |
| this._endsWithWord = false; | |
| this.format = format || {}; | |
| this._buf = new _buffer.default(map); | |
| } | |
| generate(ast) { | |
| this.print(ast); | |
| this._maybeAddAuxComment(); | |
| return this._buf.get(); | |
| } | |
| indent() { | |
| if (this.format.compact || this.format.concise) return; | |
| this._indent++; | |
| } | |
| dedent() { | |
| if (this.format.compact || this.format.concise) return; | |
| this._indent--; | |
| } | |
| semicolon(force = false) { | |
| this._maybeAddAuxComment(); | |
| this._append(";", !force); | |
| } | |
| rightBrace() { | |
| if (this.format.minified) { | |
| this._buf.removeLastSemicolon(); | |
| } | |
| this.token("}"); | |
| } | |
| space(force = false) { | |
| if (this.format.compact) return; | |
| if (this._buf.hasContent() && !this.endsWith(" ") && !this.endsWith("\n") || force) { | |
| this._space(); | |
| } | |
| } | |
| word(str) { | |
| if (this._endsWithWord || this.endsWith("/") && str.indexOf("/") === 0) { | |
| this._space(); | |
| } | |
| this._maybeAddAuxComment(); | |
| this._append(str); | |
| this._endsWithWord = true; | |
| } | |
| number(str) { | |
| this.word(str); | |
| this._endsWithInteger = (0, _isInteger().default)(+str) && !NON_DECIMAL_LITERAL.test(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str[str.length - 1] !== "."; | |
| } | |
| token(str) { | |
| if (str === "--" && this.endsWith("!") || str[0] === "+" && this.endsWith("+") || str[0] === "-" && this.endsWith("-") || str[0] === "." && this._endsWithInteger) { | |
| this._space(); | |
| } | |
| this._maybeAddAuxComment(); | |
| this._append(str); | |
| } | |
| newline(i) { | |
| if (this.format.retainLines || this.format.compact) return; | |
| if (this.format.concise) { | |
| this.space(); | |
| return; | |
| } | |
| if (this.endsWith("\n\n")) return; | |
| if (typeof i !== "number") i = 1; | |
| i = Math.min(2, i); | |
| if (this.endsWith("{\n") || this.endsWith(":\n")) i--; | |
| if (i <= 0) return; | |
| for (let j = 0; j < i; j++) { | |
| this._newline(); | |
| } | |
| } | |
| endsWith(str) { | |
| return this._buf.endsWith(str); | |
| } | |
| removeTrailingNewline() { | |
| this._buf.removeTrailingNewline(); | |
| } | |
| exactSource(loc, cb) { | |
| this._catchUp("start", loc); | |
| this._buf.exactSource(loc, cb); | |
| } | |
| source(prop, loc) { | |
| this._catchUp(prop, loc); | |
| this._buf.source(prop, loc); | |
| } | |
| withSource(prop, loc, cb) { | |
| this._catchUp(prop, loc); | |
| this._buf.withSource(prop, loc, cb); | |
| } | |
| _space() { | |
| this._append(" ", true); | |
| } | |
| _newline() { | |
| this._append("\n", true); | |
| } | |
| _append(str, queue = false) { | |
| this._maybeAddParen(str); | |
| this._maybeIndent(str); | |
| if (queue) this._buf.queue(str);else this._buf.append(str); | |
| this._endsWithWord = false; | |
| this._endsWithInteger = false; | |
| } | |
| _maybeIndent(str) { | |
| if (this._indent && this.endsWith("\n") && str[0] !== "\n") { | |
| this._buf.queue(this._getIndent()); | |
| } | |
| } | |
| _maybeAddParen(str) { | |
| const parenPushNewlineState = this._parenPushNewlineState; | |
| if (!parenPushNewlineState) return; | |
| this._parenPushNewlineState = null; | |
| let i; | |
| for (i = 0; i < str.length && str[i] === " "; i++) continue; | |
| if (i === str.length) return; | |
| const cha = str[i]; | |
| if (cha !== "\n") { | |
| if (cha !== "/") return; | |
| if (i + 1 === str.length) return; | |
| const chaPost = str[i + 1]; | |
| if (chaPost !== "/" && chaPost !== "*") return; | |
| } | |
| this.token("("); | |
| this.indent(); | |
| parenPushNewlineState.printed = true; | |
| } | |
| _catchUp(prop, loc) { | |
| if (!this.format.retainLines) return; | |
| const pos = loc ? loc[prop] : null; | |
| if (pos && pos.line !== null) { | |
| const count = pos.line - this._buf.getCurrentLine(); | |
| for (let i = 0; i < count; i++) { | |
| this._newline(); | |
| } | |
| } | |
| } | |
| _getIndent() { | |
| return (0, _repeat().default)(this.format.indent.style, this._indent); | |
| } | |
| startTerminatorless(isLabel = false) { | |
| if (isLabel) { | |
| this._noLineTerminator = true; | |
| return null; | |
| } else { | |
| return this._parenPushNewlineState = { | |
| printed: false | |
| }; | |
| } | |
| } | |
| endTerminatorless(state) { | |
| this._noLineTerminator = false; | |
| if (state && state.printed) { | |
| this.dedent(); | |
| this.newline(); | |
| this.token(")"); | |
| } | |
| } | |
| print(node, parent) { | |
| if (!node) return; | |
| const oldConcise = this.format.concise; | |
| if (node._compact) { | |
| this.format.concise = true; | |
| } | |
| const printMethod = this[node.type]; | |
| if (!printMethod) { | |
| throw new ReferenceError(`unknown node of type ${JSON.stringify(node.type)} with constructor ${JSON.stringify(node && node.constructor.name)}`); | |
| } | |
| this._printStack.push(node); | |
| const oldInAux = this._insideAux; | |
| this._insideAux = !node.loc; | |
| this._maybeAddAuxComment(this._insideAux && !oldInAux); | |
| let needsParens = n.needsParens(node, parent, this._printStack); | |
| if (this.format.retainFunctionParens && node.type === "FunctionExpression" && node.extra && node.extra.parenthesized) { | |
| needsParens = true; | |
| } | |
| if (needsParens) this.token("("); | |
| this._printLeadingComments(node); | |
| const loc = t().isProgram(node) || t().isFile(node) ? null : node.loc; | |
| this.withSource("start", loc, () => { | |
| this[node.type](node, parent); | |
| }); | |
| this._printTrailingComments(node); | |
| if (needsParens) this.token(")"); | |
| this._printStack.pop(); | |
| this.format.concise = oldConcise; | |
| this._insideAux = oldInAux; | |
| } | |
| _maybeAddAuxComment(enteredPositionlessNode) { | |
| if (enteredPositionlessNode) this._printAuxBeforeComment(); | |
| if (!this._insideAux) this._printAuxAfterComment(); | |
| } | |
| _printAuxBeforeComment() { | |
| if (this._printAuxAfterOnNextUserNode) return; | |
| this._printAuxAfterOnNextUserNode = true; | |
| const comment = this.format.auxiliaryCommentBefore; | |
| if (comment) { | |
| this._printComment({ | |
| type: "CommentBlock", | |
| value: comment | |
| }); | |
| } | |
| } | |
| _printAuxAfterComment() { | |
| if (!this._printAuxAfterOnNextUserNode) return; | |
| this._printAuxAfterOnNextUserNode = false; | |
| const comment = this.format.auxiliaryCommentAfter; | |
| if (comment) { | |
| this._printComment({ | |
| type: "CommentBlock", | |
| value: comment | |
| }); | |
| } | |
| } | |
| getPossibleRaw(node) { | |
| const extra = node.extra; | |
| if (extra && extra.raw != null && extra.rawValue != null && node.value === extra.rawValue) { | |
| return extra.raw; | |
| } | |
| } | |
| printJoin(nodes, parent, opts = {}) { | |
| if (!nodes || !nodes.length) return; | |
| if (opts.indent) this.indent(); | |
| const newlineOpts = { | |
| addNewlines: opts.addNewlines | |
| }; | |
| for (let i = 0; i < nodes.length; i++) { | |
| const node = nodes[i]; | |
| if (!node) continue; | |
| if (opts.statement) this._printNewline(true, node, parent, newlineOpts); | |
| this.print(node, parent); | |
| if (opts.iterator) { | |
| opts.iterator(node, i); | |
| } | |
| if (opts.separator && i < nodes.length - 1) { | |
| opts.separator.call(this); | |
| } | |
| if (opts.statement) this._printNewline(false, node, parent, newlineOpts); | |
| } | |
| if (opts.indent) this.dedent(); | |
| } | |
| printAndIndentOnComments(node, parent) { | |
| const indent = node.leadingComments && node.leadingComments.length > 0; | |
| if (indent) this.indent(); | |
| this.print(node, parent); | |
| if (indent) this.dedent(); | |
| } | |
| printBlock(parent) { | |
| const node = parent.body; | |
| if (!t().isEmptyStatement(node)) { | |
| this.space(); | |
| } | |
| this.print(node, parent); | |
| } | |
| _printTrailingComments(node) { | |
| this._printComments(this._getComments(false, node)); | |
| } | |
| _printLeadingComments(node) { | |
| this._printComments(this._getComments(true, node)); | |
| } | |
| printInnerComments(node, indent = true) { | |
| if (!node.innerComments || !node.innerComments.length) return; | |
| if (indent) this.indent(); | |
| this._printComments(node.innerComments); | |
| if (indent) this.dedent(); | |
| } | |
| printSequence(nodes, parent, opts = {}) { | |
| opts.statement = true; | |
| return this.printJoin(nodes, parent, opts); | |
| } | |
| printList(items, parent, opts = {}) { | |
| if (opts.separator == null) { | |
| opts.separator = commaSeparator; | |
| } | |
| return this.printJoin(items, parent, opts); | |
| } | |
| _printNewline(leading, node, parent, opts) { | |
| if (this.format.retainLines || this.format.compact) return; | |
| if (this.format.concise) { | |
| this.space(); | |
| return; | |
| } | |
| let lines = 0; | |
| if (this._buf.hasContent()) { | |
| if (!leading) lines++; | |
| if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0; | |
| const needs = leading ? n.needsWhitespaceBefore : n.needsWhitespaceAfter; | |
| if (needs(node, parent)) lines++; | |
| } | |
| this.newline(lines); | |
| } | |
| _getComments(leading, node) { | |
| return node && (leading ? node.leadingComments : node.trailingComments) || []; | |
| } | |
| _printComment(comment) { | |
| if (!this.format.shouldPrintComment(comment.value)) return; | |
| if (comment.ignore) return; | |
| if (this._printedComments.has(comment)) return; | |
| this._printedComments.add(comment); | |
| if (comment.start != null) { | |
| if (this._printedCommentStarts[comment.start]) return; | |
| this._printedCommentStarts[comment.start] = true; | |
| } | |
| const isBlockComment = comment.type === "CommentBlock"; | |
| this.newline(this._buf.hasContent() && !this._noLineTerminator && isBlockComment ? 1 : 0); | |
| if (!this.endsWith("[") && !this.endsWith("{")) this.space(); | |
| let val = !isBlockComment && !this._noLineTerminator ? `//${comment.value}\n` : `/*${comment.value}*/`; | |
| if (isBlockComment && this.format.indent.adjustMultilineComment) { | |
| const offset = comment.loc && comment.loc.start.column; | |
| if (offset) { | |
| const newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g"); | |
| val = val.replace(newlineRegex, "\n"); | |
| } | |
| const indentSize = Math.max(this._getIndent().length, this._buf.getCurrentColumn()); | |
| val = val.replace(/\n(?!$)/g, `\n${(0, _repeat().default)(" ", indentSize)}`); | |
| } | |
| if (this.endsWith("/")) this._space(); | |
| this.withSource("start", comment.loc, () => { | |
| this._append(val); | |
| }); | |
| this.newline(isBlockComment && !this._noLineTerminator ? 1 : 0); | |
| } | |
| _printComments(comments) { | |
| if (!comments || !comments.length) return; | |
| for (const comment of comments) { | |
| this._printComment(comment); | |
| } | |
| } | |
| } | |
| exports.default = Printer; | |
| Object.assign(Printer.prototype, generatorFunctions); | |
| function commaSeparator() { | |
| this.token(","); | |
| this.space(); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| function _sourceMap() { | |
| const data = _interopRequireDefault(require("source-map")); | |
| _sourceMap = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| class SourceMap { | |
| constructor(opts, code) { | |
| this._cachedMap = null; | |
| this._code = code; | |
| this._opts = opts; | |
| this._rawMappings = []; | |
| } | |
| get() { | |
| if (!this._cachedMap) { | |
| const map = this._cachedMap = new (_sourceMap().default.SourceMapGenerator)({ | |
| sourceRoot: this._opts.sourceRoot | |
| }); | |
| const code = this._code; | |
| if (typeof code === "string") { | |
| map.setSourceContent(this._opts.sourceFileName, code); | |
| } else if (typeof code === "object") { | |
| Object.keys(code).forEach(sourceFileName => { | |
| map.setSourceContent(sourceFileName, code[sourceFileName]); | |
| }); | |
| } | |
| this._rawMappings.forEach(map.addMapping, map); | |
| } | |
| return this._cachedMap.toJSON(); | |
| } | |
| getRawMappings() { | |
| return this._rawMappings.slice(); | |
| } | |
| mark(generatedLine, generatedColumn, line, column, identifierName, filename, force) { | |
| if (this._lastGenLine !== generatedLine && line === null) return; | |
| if (!force && this._lastGenLine === generatedLine && this._lastSourceLine === line && this._lastSourceColumn === column) { | |
| return; | |
| } | |
| this._cachedMap = null; | |
| this._lastGenLine = generatedLine; | |
| this._lastSourceLine = line; | |
| this._lastSourceColumn = column; | |
| this._rawMappings.push({ | |
| name: identifierName || undefined, | |
| generated: { | |
| line: generatedLine, | |
| column: generatedColumn | |
| }, | |
| source: line == null ? undefined : filename || this._opts.sourceFileName, | |
| original: line == null ? undefined : { | |
| line: line, | |
| column: column | |
| } | |
| }); | |
| } | |
| } | |
| exports.default = SourceMap; |
| 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. |
| #!/usr/bin/env node | |
| (function() { | |
| var fs = require('fs'); | |
| var stringEscape = require('../jsesc.js'); | |
| var strings = process.argv.splice(2); | |
| var stdin = process.stdin; | |
| var data; | |
| var timeout; | |
| var isObject = false; | |
| var options = {}; | |
| var log = console.log; | |
| var main = function() { | |
| var option = strings[0]; | |
| if (/^(?:-h|--help|undefined)$/.test(option)) { | |
| log( | |
| 'jsesc v%s - https://mths.be/jsesc', | |
| stringEscape.version | |
| ); | |
| log([ | |
| '\nUsage:\n', | |
| '\tjsesc [string]', | |
| '\tjsesc [-s | --single-quotes] [string]', | |
| '\tjsesc [-d | --double-quotes] [string]', | |
| '\tjsesc [-w | --wrap] [string]', | |
| '\tjsesc [-e | --escape-everything] [string]', | |
| '\tjsesc [-t | --escape-etago] [string]', | |
| '\tjsesc [-6 | --es6] [string]', | |
| '\tjsesc [-l | --lowercase-hex] [string]', | |
| '\tjsesc [-j | --json] [string]', | |
| '\tjsesc [-o | --object] [stringified_object]', // `JSON.parse()` the argument | |
| '\tjsesc [-p | --pretty] [string]', // `compact: false` | |
| '\tjsesc [-v | --version]', | |
| '\tjsesc [-h | --help]', | |
| '\nExamples:\n', | |
| '\tjsesc \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tjsesc --json \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tjsesc --json --escape-everything \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tjsesc --double-quotes --wrap \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\techo \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\' | jsesc' | |
| ].join('\n')); | |
| return process.exit(1); | |
| } | |
| if (/^(?:-v|--version)$/.test(option)) { | |
| log('v%s', stringEscape.version); | |
| return process.exit(1); | |
| } | |
| strings.forEach(function(string) { | |
| // Process options | |
| if (/^(?:-s|--single-quotes)$/.test(string)) { | |
| options.quotes = 'single'; | |
| return; | |
| } | |
| if (/^(?:-d|--double-quotes)$/.test(string)) { | |
| options.quotes = 'double'; | |
| return; | |
| } | |
| if (/^(?:-w|--wrap)$/.test(string)) { | |
| options.wrap = true; | |
| return; | |
| } | |
| if (/^(?:-e|--escape-everything)$/.test(string)) { | |
| options.escapeEverything = true; | |
| return; | |
| } | |
| if (/^(?:-t|--escape-etago)$/.test(string)) { | |
| options.escapeEtago = true; | |
| return; | |
| } | |
| if (/^(?:-6|--es6)$/.test(string)) { | |
| options.es6 = true; | |
| return; | |
| } | |
| if (/^(?:-l|--lowercase-hex)$/.test(string)) { | |
| options.lowercaseHex = true; | |
| return; | |
| } | |
| if (/^(?:-j|--json)$/.test(string)) { | |
| options.json = true; | |
| return; | |
| } | |
| if (/^(?:-o|--object)$/.test(string)) { | |
| isObject = true; | |
| return; | |
| } | |
| if (/^(?:-p|--pretty)$/.test(string)) { | |
| isObject = true; | |
| options.compact = false; | |
| return; | |
| } | |
| // Process string(s) | |
| var result; | |
| try { | |
| if (isObject) { | |
| string = JSON.parse(string); | |
| } | |
| result = stringEscape(string, options); | |
| log(result); | |
| } catch(error) { | |
| log(error.message + '\n'); | |
| log('Error: failed to escape.'); | |
| log('If you think this is a bug in jsesc, please report it:'); | |
| log('https://github.com/mathiasbynens/jsesc/issues/new'); | |
| log( | |
| '\nStack trace using jsesc@%s:\n', | |
| stringEscape.version | |
| ); | |
| log(error.stack); | |
| return process.exit(1); | |
| } | |
| }); | |
| // Return with exit status 0 outside of the `forEach` loop, in case | |
| // multiple strings were passed in. | |
| return process.exit(0); | |
| }; | |
| if (stdin.isTTY) { | |
| // handle shell arguments | |
| main(); | |
| } else { | |
| // Either the script is called from within a non-TTY context, | |
| // or `stdin` content is being piped in. | |
| if (!process.stdout.isTTY) { // called from a non-TTY context | |
| timeout = setTimeout(function() { | |
| // if no piped data arrived after a while, handle shell arguments | |
| main(); | |
| }, 250); | |
| } | |
| data = ''; | |
| stdin.on('data', function(chunk) { | |
| clearTimeout(timeout); | |
| data += chunk; | |
| }); | |
| stdin.on('end', function() { | |
| strings.push(data.trim()); | |
| main(); | |
| }); | |
| stdin.resume(); | |
| } | |
| }()); |
| #!/usr/bin/env node | |
| (function() { | |
| var fs = require('fs'); | |
| var stringEscape = require('../jsesc.js'); | |
| var strings = process.argv.splice(2); | |
| var stdin = process.stdin; | |
| var data; | |
| var timeout; | |
| var isObject = false; | |
| var options = {}; | |
| var log = console.log; | |
| var main = function() { | |
| var option = strings[0]; | |
| if (/^(?:-h|--help|undefined)$/.test(option)) { | |
| log( | |
| 'jsesc v%s - https://mths.be/jsesc', | |
| stringEscape.version | |
| ); | |
| log([ | |
| '\nUsage:\n', | |
| '\tjsesc [string]', | |
| '\tjsesc [-s | --single-quotes] [string]', | |
| '\tjsesc [-d | --double-quotes] [string]', | |
| '\tjsesc [-w | --wrap] [string]', | |
| '\tjsesc [-e | --escape-everything] [string]', | |
| '\tjsesc [-t | --escape-etago] [string]', | |
| '\tjsesc [-6 | --es6] [string]', | |
| '\tjsesc [-l | --lowercase-hex] [string]', | |
| '\tjsesc [-j | --json] [string]', | |
| '\tjsesc [-o | --object] [stringified_object]', // `JSON.parse()` the argument | |
| '\tjsesc [-p | --pretty] [string]', // `compact: false` | |
| '\tjsesc [-v | --version]', | |
| '\tjsesc [-h | --help]', | |
| '\nExamples:\n', | |
| '\tjsesc \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tjsesc --json \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tjsesc --json --escape-everything \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\tjsesc --double-quotes --wrap \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', | |
| '\techo \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\' | jsesc' | |
| ].join('\n')); | |
| return process.exit(1); | |
| } | |
| if (/^(?:-v|--version)$/.test(option)) { | |
| log('v%s', stringEscape.version); | |
| return process.exit(1); | |
| } | |
| strings.forEach(function(string) { | |
| // Process options | |
| if (/^(?:-s|--single-quotes)$/.test(string)) { | |
| options.quotes = 'single'; | |
| return; | |
| } | |
| if (/^(?:-d|--double-quotes)$/.test(string)) { | |
| options.quotes = 'double'; | |
| return; | |
| } | |
| if (/^(?:-w|--wrap)$/.test(string)) { | |
| options.wrap = true; | |
| return; | |
| } | |
| if (/^(?:-e|--escape-everything)$/.test(string)) { | |
| options.escapeEverything = true; | |
| return; | |
| } | |
| if (/^(?:-t|--escape-etago)$/.test(string)) { | |
| options.escapeEtago = true; | |
| return; | |
| } | |
| if (/^(?:-6|--es6)$/.test(string)) { | |
| options.es6 = true; | |
| return; | |
| } | |
| if (/^(?:-l|--lowercase-hex)$/.test(string)) { | |
| options.lowercaseHex = true; | |
| return; | |
| } | |
| if (/^(?:-j|--json)$/.test(string)) { | |
| options.json = true; | |
| return; | |
| } | |
| if (/^(?:-o|--object)$/.test(string)) { | |
| isObject = true; | |
| return; | |
| } | |
| if (/^(?:-p|--pretty)$/.test(string)) { | |
| isObject = true; | |
| options.compact = false; | |
| return; | |
| } | |
| // Process string(s) | |
| var result; | |
| try { | |
| if (isObject) { | |
| string = JSON.parse(string); | |
| } | |
| result = stringEscape(string, options); | |
| log(result); | |
| } catch(error) { | |
| log(error.message + '\n'); | |
| log('Error: failed to escape.'); | |
| log('If you think this is a bug in jsesc, please report it:'); | |
| log('https://github.com/mathiasbynens/jsesc/issues/new'); | |
| log( | |
| '\nStack trace using jsesc@%s:\n', | |
| stringEscape.version | |
| ); | |
| log(error.stack); | |
| return process.exit(1); | |
| } | |
| }); | |
| // Return with exit status 0 outside of the `forEach` loop, in case | |
| // multiple strings were passed in. | |
| return process.exit(0); | |
| }; | |
| if (stdin.isTTY) { | |
| // handle shell arguments | |
| main(); | |
| } else { | |
| // Either the script is called from within a non-TTY context, | |
| // or `stdin` content is being piped in. | |
| if (!process.stdout.isTTY) { // called from a non-TTY context | |
| timeout = setTimeout(function() { | |
| // if no piped data arrived after a while, handle shell arguments | |
| main(); | |
| }, 250); | |
| } | |
| data = ''; | |
| stdin.on('data', function(chunk) { | |
| clearTimeout(timeout); | |
| data += chunk; | |
| }); | |
| stdin.on('end', function() { | |
| strings.push(data.trim()); | |
| main(); | |
| }); | |
| stdin.resume(); | |
| } | |
| }()); |
| 'use strict'; | |
| const object = {}; | |
| const hasOwnProperty = object.hasOwnProperty; | |
| const forOwn = (object, callback) => { | |
| for (const key in object) { | |
| if (hasOwnProperty.call(object, key)) { | |
| callback(key, object[key]); | |
| } | |
| } | |
| }; | |
| const extend = (destination, source) => { | |
| if (!source) { | |
| return destination; | |
| } | |
| forOwn(source, (key, value) => { | |
| destination[key] = value; | |
| }); | |
| return destination; | |
| }; | |
| const forEach = (array, callback) => { | |
| const length = array.length; | |
| let index = -1; | |
| while (++index < length) { | |
| callback(array[index]); | |
| } | |
| }; | |
| const toString = object.toString; | |
| const isArray = Array.isArray; | |
| const isBuffer = Buffer.isBuffer; | |
| const isObject = (value) => { | |
| // This is a very simple check, but it’s good enough for what we need. | |
| return toString.call(value) == '[object Object]'; | |
| }; | |
| const isString = (value) => { | |
| return typeof value == 'string' || | |
| toString.call(value) == '[object String]'; | |
| }; | |
| const isNumber = (value) => { | |
| return typeof value == 'number' || | |
| toString.call(value) == '[object Number]'; | |
| }; | |
| const isFunction = (value) => { | |
| return typeof value == 'function'; | |
| }; | |
| const isMap = (value) => { | |
| return toString.call(value) == '[object Map]'; | |
| }; | |
| const isSet = (value) => { | |
| return toString.call(value) == '[object Set]'; | |
| }; | |
| /*--------------------------------------------------------------------------*/ | |
| // https://mathiasbynens.be/notes/javascript-escapes#single | |
| const singleEscapes = { | |
| '"': '\\"', | |
| '\'': '\\\'', | |
| '\\': '\\\\', | |
| '\b': '\\b', | |
| '\f': '\\f', | |
| '\n': '\\n', | |
| '\r': '\\r', | |
| '\t': '\\t' | |
| // `\v` is omitted intentionally, because in IE < 9, '\v' == 'v'. | |
| // '\v': '\\x0B' | |
| }; | |
| const regexSingleEscape = /["'\\\b\f\n\r\t]/; | |
| const regexDigit = /[0-9]/; | |
| const regexWhitelist = /[ !#-&\(-\[\]-_a-~]/; | |
| const jsesc = (argument, options) => { | |
| const increaseIndentation = () => { | |
| oldIndent = indent; | |
| ++options.indentLevel; | |
| indent = options.indent.repeat(options.indentLevel) | |
| }; | |
| // Handle options | |
| const defaults = { | |
| 'escapeEverything': false, | |
| 'minimal': false, | |
| 'isScriptContext': false, | |
| 'quotes': 'single', | |
| 'wrap': false, | |
| 'es6': false, | |
| 'json': false, | |
| 'compact': true, | |
| 'lowercaseHex': false, | |
| 'numbers': 'decimal', | |
| 'indent': '\t', | |
| 'indentLevel': 0, | |
| '__inline1__': false, | |
| '__inline2__': false | |
| }; | |
| const json = options && options.json; | |
| if (json) { | |
| defaults.quotes = 'double'; | |
| defaults.wrap = true; | |
| } | |
| options = extend(defaults, options); | |
| if ( | |
| options.quotes != 'single' && | |
| options.quotes != 'double' && | |
| options.quotes != 'backtick' | |
| ) { | |
| options.quotes = 'single'; | |
| } | |
| const quote = options.quotes == 'double' ? | |
| '"' : | |
| (options.quotes == 'backtick' ? | |
| '`' : | |
| '\'' | |
| ); | |
| const compact = options.compact; | |
| const lowercaseHex = options.lowercaseHex; | |
| let indent = options.indent.repeat(options.indentLevel); | |
| let oldIndent = ''; | |
| const inline1 = options.__inline1__; | |
| const inline2 = options.__inline2__; | |
| const newLine = compact ? '' : '\n'; | |
| let result; | |
| let isEmpty = true; | |
| const useBinNumbers = options.numbers == 'binary'; | |
| const useOctNumbers = options.numbers == 'octal'; | |
| const useDecNumbers = options.numbers == 'decimal'; | |
| const useHexNumbers = options.numbers == 'hexadecimal'; | |
| if (json && argument && isFunction(argument.toJSON)) { | |
| argument = argument.toJSON(); | |
| } | |
| if (!isString(argument)) { | |
| if (isMap(argument)) { | |
| if (argument.size == 0) { | |
| return 'new Map()'; | |
| } | |
| if (!compact) { | |
| options.__inline1__ = true; | |
| options.__inline2__ = false; | |
| } | |
| return 'new Map(' + jsesc(Array.from(argument), options) + ')'; | |
| } | |
| if (isSet(argument)) { | |
| if (argument.size == 0) { | |
| return 'new Set()'; | |
| } | |
| return 'new Set(' + jsesc(Array.from(argument), options) + ')'; | |
| } | |
| if (isBuffer(argument)) { | |
| if (argument.length == 0) { | |
| return 'Buffer.from([])'; | |
| } | |
| return 'Buffer.from(' + jsesc(Array.from(argument), options) + ')'; | |
| } | |
| if (isArray(argument)) { | |
| result = []; | |
| options.wrap = true; | |
| if (inline1) { | |
| options.__inline1__ = false; | |
| options.__inline2__ = true; | |
| } | |
| if (!inline2) { | |
| increaseIndentation(); | |
| } | |
| forEach(argument, (value) => { | |
| isEmpty = false; | |
| if (inline2) { | |
| options.__inline2__ = false; | |
| } | |
| result.push( | |
| (compact || inline2 ? '' : indent) + | |
| jsesc(value, options) | |
| ); | |
| }); | |
| if (isEmpty) { | |
| return '[]'; | |
| } | |
| if (inline2) { | |
| return '[' + result.join(', ') + ']'; | |
| } | |
| return '[' + newLine + result.join(',' + newLine) + newLine + | |
| (compact ? '' : oldIndent) + ']'; | |
| } else if (isNumber(argument)) { | |
| if (json) { | |
| // Some number values (e.g. `Infinity`) cannot be represented in JSON. | |
| return JSON.stringify(argument); | |
| } | |
| if (useDecNumbers) { | |
| return String(argument); | |
| } | |
| if (useHexNumbers) { | |
| let hexadecimal = argument.toString(16); | |
| if (!lowercaseHex) { | |
| hexadecimal = hexadecimal.toUpperCase(); | |
| } | |
| return '0x' + hexadecimal; | |
| } | |
| if (useBinNumbers) { | |
| return '0b' + argument.toString(2); | |
| } | |
| if (useOctNumbers) { | |
| return '0o' + argument.toString(8); | |
| } | |
| } else if (!isObject(argument)) { | |
| if (json) { | |
| // For some values (e.g. `undefined`, `function` objects), | |
| // `JSON.stringify(value)` returns `undefined` (which isn’t valid | |
| // JSON) instead of `'null'`. | |
| return JSON.stringify(argument) || 'null'; | |
| } | |
| return String(argument); | |
| } else { // it’s an object | |
| result = []; | |
| options.wrap = true; | |
| increaseIndentation(); | |
| forOwn(argument, (key, value) => { | |
| isEmpty = false; | |
| result.push( | |
| (compact ? '' : indent) + | |
| jsesc(key, options) + ':' + | |
| (compact ? '' : ' ') + | |
| jsesc(value, options) | |
| ); | |
| }); | |
| if (isEmpty) { | |
| return '{}'; | |
| } | |
| return '{' + newLine + result.join(',' + newLine) + newLine + | |
| (compact ? '' : oldIndent) + '}'; | |
| } | |
| } | |
| const string = argument; | |
| // Loop over each code unit in the string and escape it | |
| let index = -1; | |
| const length = string.length; | |
| result = ''; | |
| while (++index < length) { | |
| const character = string.charAt(index); | |
| if (options.es6) { | |
| const first = string.charCodeAt(index); | |
| if ( // check if it’s the start of a surrogate pair | |
| first >= 0xD800 && first <= 0xDBFF && // high surrogate | |
| length > index + 1 // there is a next code unit | |
| ) { | |
| const second = string.charCodeAt(index + 1); | |
| if (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate | |
| // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae | |
| const codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; | |
| let hexadecimal = codePoint.toString(16); | |
| if (!lowercaseHex) { | |
| hexadecimal = hexadecimal.toUpperCase(); | |
| } | |
| result += '\\u{' + hexadecimal + '}'; | |
| ++index; | |
| continue; | |
| } | |
| } | |
| } | |
| if (!options.escapeEverything) { | |
| if (regexWhitelist.test(character)) { | |
| // It’s a printable ASCII character that is not `"`, `'` or `\`, | |
| // so don’t escape it. | |
| result += character; | |
| continue; | |
| } | |
| if (character == '"') { | |
| result += quote == character ? '\\"' : character; | |
| continue; | |
| } | |
| if (character == '`') { | |
| result += quote == character ? '\\`' : character; | |
| continue; | |
| } | |
| if (character == '\'') { | |
| result += quote == character ? '\\\'' : character; | |
| continue; | |
| } | |
| } | |
| if ( | |
| character == '\0' && | |
| !json && | |
| !regexDigit.test(string.charAt(index + 1)) | |
| ) { | |
| result += '\\0'; | |
| continue; | |
| } | |
| if (regexSingleEscape.test(character)) { | |
| // no need for a `hasOwnProperty` check here | |
| result += singleEscapes[character]; | |
| continue; | |
| } | |
| const charCode = character.charCodeAt(0); | |
| if (options.minimal && charCode != 0x2028 && charCode != 0x2029) { | |
| result += character; | |
| continue; | |
| } | |
| let hexadecimal = charCode.toString(16); | |
| if (!lowercaseHex) { | |
| hexadecimal = hexadecimal.toUpperCase(); | |
| } | |
| const longhand = hexadecimal.length > 2 || json; | |
| const escaped = '\\' + (longhand ? 'u' : 'x') + | |
| ('0000' + hexadecimal).slice(longhand ? -4 : -2); | |
| result += escaped; | |
| continue; | |
| } | |
| if (options.wrap) { | |
| result = quote + result + quote; | |
| } | |
| if (quote == '`') { | |
| result = result.replace(/\$\{/g, '\\\$\{'); | |
| } | |
| if (options.isScriptContext) { | |
| // https://mathiasbynens.be/notes/etago | |
| return result | |
| .replace(/<\/(script|style)/gi, '<\\/$1') | |
| .replace(/<!--/g, json ? '\\u003C!--' : '\\x3C!--'); | |
| } | |
| return result; | |
| }; | |
| jsesc.version = '2.5.2'; | |
| module.exports = jsesc; |
| Copyright Mathias Bynens <https://mathiasbynens.be/> | |
| 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. |
| .Dd May 13, 2016 | |
| .Dt jsesc 1 | |
| .Sh NAME | |
| .Nm jsesc | |
| .Nd escape strings for use in JavaScript string literals | |
| .Sh SYNOPSIS | |
| .Nm | |
| .Op Fl s | -single-quotes Ar string | |
| .br | |
| .Op Fl d | -double-quotes Ar string | |
| .br | |
| .Op Fl w | -wrap Ar string | |
| .br | |
| .Op Fl e | -escape-everything Ar string | |
| .br | |
| .Op Fl 6 | -es6 Ar string | |
| .br | |
| .Op Fl l | -lowercase-hex Ar string | |
| .br | |
| .Op Fl j | -json Ar string | |
| .br | |
| .Op Fl p | -object Ar string | |
| .br | |
| .Op Fl p | -pretty Ar string | |
| .br | |
| .Op Fl v | -version | |
| .br | |
| .Op Fl h | -help | |
| .Sh DESCRIPTION | |
| .Nm | |
| escapes strings for use in JavaScript string literals while generating the shortest possible valid ASCII-only output. | |
| .Sh OPTIONS | |
| .Bl -ohang -offset | |
| .It Sy "-s, --single-quotes" | |
| Escape any occurrences of ' in the input string as \\', so that the output can be used in a JavaScript string literal wrapped in single quotes. | |
| .It Sy "-d, --double-quotes" | |
| Escape any occurrences of " in the input string as \\", so that the output can be used in a JavaScript string literal wrapped in double quotes. | |
| .It Sy "-w, --wrap" | |
| Make sure the output is a valid JavaScript string literal wrapped in quotes. The type of quotes can be specified using the | |
| .Ar -s | --single-quotes | |
| or | |
| .Ar -d | --double-quotes | |
| settings. | |
| .It Sy "-6, --es6" | |
| Escape any astral Unicode symbols using ECMAScript 6 Unicode code point escape sequences. | |
| .It Sy "-e, --escape-everything" | |
| Escape all the symbols in the output, even printable ASCII symbols. | |
| .It Sy "-j, --json" | |
| Make sure the output is valid JSON. Hexadecimal character escape sequences and the \\v or \\0 escape sequences will not be used. Setting this flag enables the | |
| .Ar -d | --double-quotes | |
| and | |
| .Ar -w | --wrap | |
| settings. | |
| .It Sy "-o, --object" | |
| Treat the input as a JavaScript object rather than a string. Accepted values are flat arrays containing only string values, and flat objects containing only string values. | |
| .It Sy "-p, --pretty" | |
| Pretty-print the output for objects, using whitespace to make it more readable. Setting this flag enables the | |
| .It Sy "-l, --lowercase-hex" | |
| Use lowercase for alphabetical hexadecimal digits in escape sequences. | |
| .Ar -o | --object | |
| setting. | |
| .It Sy "-v, --version" | |
| Print jsesc's version. | |
| .It Sy "-h, --help" | |
| Show the help screen. | |
| .El | |
| .Sh EXIT STATUS | |
| The | |
| .Nm jsesc | |
| utility exits with one of the following values: | |
| .Pp | |
| .Bl -tag -width flag -compact | |
| .It Li 0 | |
| .Nm | |
| successfully escaped the given string and printed the result. | |
| .It Li 1 | |
| .Nm | |
| wasn't instructed to escape anything (for example, the | |
| .Ar --help | |
| flag was set); or, an error occurred. | |
| .El | |
| .Sh EXAMPLES | |
| .Bl -ohang -offset | |
| .It Sy "jsesc 'foo bar baz'" | |
| Print an escaped version of the given string. | |
| .It Sy echo\ 'foo bar baz'\ |\ jsesc | |
| Print an escaped version of the string that gets piped in. | |
| .El | |
| .Sh BUGS | |
| jsesc's bug tracker is located at <https://github.com/mathiasbynens/jsesc/issues>. | |
| .Sh AUTHOR | |
| Mathias Bynens <https://mathiasbynens.be/> | |
| .Sh WWW | |
| <https://mths.be/jsesc> |
| { | |
| "name": "jsesc", | |
| "version": "2.5.2", | |
| "description": "Given some data, jsesc returns the shortest possible stringified & ASCII-safe representation of that data.", | |
| "homepage": "https://mths.be/jsesc", | |
| "engines": { | |
| "node": ">=4" | |
| }, | |
| "main": "jsesc.js", | |
| "bin": "bin/jsesc", | |
| "man": "man/jsesc.1", | |
| "keywords": [ | |
| "buffer", | |
| "escape", | |
| "javascript", | |
| "json", | |
| "map", | |
| "set", | |
| "string", | |
| "stringify", | |
| "tool" | |
| ], | |
| "license": "MIT", | |
| "author": { | |
| "name": "Mathias Bynens", | |
| "url": "https://mathiasbynens.be/" | |
| }, | |
| "repository": { | |
| "type": "git", | |
| "url": "https://github.com/mathiasbynens/jsesc.git" | |
| }, | |
| "bugs": "https://github.com/mathiasbynens/jsesc/issues", | |
| "files": [ | |
| "LICENSE-MIT.txt", | |
| "jsesc.js", | |
| "bin/", | |
| "man/" | |
| ], | |
| "scripts": { | |
| "build": "grunt template", | |
| "coveralls": "istanbul cover --verbose --dir 'coverage' 'tests/tests.js' && coveralls < coverage/lcov.info'", | |
| "cover": "istanbul cover --report 'html' --verbose --dir 'coverage' 'tests/tests.js'", | |
| "test": "mocha tests" | |
| }, | |
| "devDependencies": { | |
| "coveralls": "^2.11.6", | |
| "grunt": "^0.4.5", | |
| "grunt-template": "^0.2.3", | |
| "istanbul": "^0.4.2", | |
| "mocha": "*", | |
| "regenerate": "^1.3.0", | |
| "requirejs": "^2.1.22" | |
| } | |
| } |
Given some data, jsesc returns a stringified representation of that data. jsesc is similar to JSON.stringify() except:
For any input, jsesc generates the shortest possible valid printable-ASCII-only output. Here’s an online demo.
jsesc’s output can be used instead of JSON.stringify’s to avoid mojibake and other encoding issues, or even to avoid errors when passing JSON-formatted data (which may contain U+2028 LINE SEPARATOR, U+2029 PARAGRAPH SEPARATOR, or lone surrogates) to a JavaScript parser or an UTF-8 encoder.
Via npm:
npm install jsescIn Node.js:
const jsesc = require('jsesc');This function takes a value and returns an escaped version of the value where any characters that are not printable ASCII symbols are escaped using the shortest possible (but valid) escape sequences for use in JavaScript strings. The first supported value type is strings:
jsesc('Ich ♥ Bücher');
// → 'Ich \\u2665 B\\xFCcher'
jsesc('foo 𝌆 bar');
// → 'foo \\uD834\\uDF06 bar'Instead of a string, the value can also be an array, an object, a map, a set, or a buffer. In such cases, jsesc returns a stringified version of the value where any characters that are not printable ASCII symbols are escaped in the same way.
// Escaping an array
jsesc([
'Ich ♥ Bücher', 'foo 𝌆 bar'
]);
// → '[\'Ich \\u2665 B\\xFCcher\',\'foo \\uD834\\uDF06 bar\']'
// Escaping an object
jsesc({
'Ich ♥ Bücher': 'foo 𝌆 bar'
});
// → '{\'Ich \\u2665 B\\xFCcher\':\'foo \\uD834\\uDF06 bar\'}'The optional options argument accepts an object with the following options:
The default value for the quotes option is 'single'. This means that any occurrences of ' in the input string are escaped as \', so that the output can be used in a string literal wrapped in single quotes.
jsesc('`Lorem` ipsum "dolor" sit \'amet\' etc.');
// → 'Lorem ipsum "dolor" sit \\\'amet\\\' etc.'
jsesc('`Lorem` ipsum "dolor" sit \'amet\' etc.', {
'quotes': 'single'
});
// → '`Lorem` ipsum "dolor" sit \\\'amet\\\' etc.'
// → "`Lorem` ipsum \"dolor\" sit \\'amet\\' etc."If you want to use the output as part of a string literal wrapped in double quotes, set the quotes option to 'double'.
jsesc('`Lorem` ipsum "dolor" sit \'amet\' etc.', {
'quotes': 'double'
});
// → '`Lorem` ipsum \\"dolor\\" sit \'amet\' etc.'
// → "`Lorem` ipsum \\\"dolor\\\" sit 'amet' etc."If you want to use the output as part of a template literal (i.e. wrapped in backticks), set the quotes option to 'backtick'.
jsesc('`Lorem` ipsum "dolor" sit \'amet\' etc.', {
'quotes': 'backtick'
});
// → '\\`Lorem\\` ipsum "dolor" sit \'amet\' etc.'
// → "\\`Lorem\\` ipsum \"dolor\" sit 'amet' etc."
// → `\\\`Lorem\\\` ipsum "dolor" sit 'amet' etc.`This setting also affects the output for arrays and objects:
jsesc({ 'Ich ♥ Bücher': 'foo 𝌆 bar' }, {
'quotes': 'double'
});
// → '{"Ich \\u2665 B\\xFCcher":"foo \\uD834\\uDF06 bar"}'
jsesc([ 'Ich ♥ Bücher', 'foo 𝌆 bar' ], {
'quotes': 'double'
});
// → '["Ich \\u2665 B\\xFCcher","foo \\uD834\\uDF06 bar"]'The default value for the numbers option is 'decimal'. This means that any numeric values are represented using decimal integer literals. Other valid options are binary, octal, and hexadecimal, which result in binary integer literals, octal integer literals, and hexadecimal integer literals, respectively.
jsesc(42, {
'numbers': 'binary'
});
// → '0b101010'
jsesc(42, {
'numbers': 'octal'
});
// → '0o52'
jsesc(42, {
'numbers': 'decimal'
});
// → '42'
jsesc(42, {
'numbers': 'hexadecimal'
});
// → '0x2A'The wrap option takes a boolean value (true or false), and defaults to false (disabled). When enabled, the output is a valid JavaScript string literal wrapped in quotes. The type of quotes can be specified through the quotes setting.
jsesc('Lorem ipsum "dolor" sit \'amet\' etc.', {
'quotes': 'single',
'wrap': true
});
// → '\'Lorem ipsum "dolor" sit \\\'amet\\\' etc.\''
// → "\'Lorem ipsum \"dolor\" sit \\\'amet\\\' etc.\'"
jsesc('Lorem ipsum "dolor" sit \'amet\' etc.', {
'quotes': 'double',
'wrap': true
});
// → '"Lorem ipsum \\"dolor\\" sit \'amet\' etc."'
// → "\"Lorem ipsum \\\"dolor\\\" sit \'amet\' etc.\""The es6 option takes a boolean value (true or false), and defaults to false (disabled). When enabled, any astral Unicode symbols in the input are escaped using ECMAScript 6 Unicode code point escape sequences instead of using separate escape sequences for each surrogate half. If backwards compatibility with ES5 environments is a concern, don’t enable this setting. If the json setting is enabled, the value for the es6 setting is ignored (as if it was false).
// By default, the `es6` option is disabled:
jsesc('foo 𝌆 bar 💩 baz');
// → 'foo \\uD834\\uDF06 bar \\uD83D\\uDCA9 baz'
// To explicitly disable it:
jsesc('foo 𝌆 bar 💩 baz', {
'es6': false
});
// → 'foo \\uD834\\uDF06 bar \\uD83D\\uDCA9 baz'
// To enable it:
jsesc('foo 𝌆 bar 💩 baz', {
'es6': true
});
// → 'foo \\u{1D306} bar \\u{1F4A9} baz'The escapeEverything option takes a boolean value (true or false), and defaults to false (disabled). When enabled, all the symbols in the output are escaped — even printable ASCII symbols.
jsesc('lolwat"foo\'bar', {
'escapeEverything': true
});
// → '\\x6C\\x6F\\x6C\\x77\\x61\\x74\\"\\x66\\x6F\\x6F\\\'\\x62\\x61\\x72'
// → "\\x6C\\x6F\\x6C\\x77\\x61\\x74\\\"\\x66\\x6F\\x6F\\'\\x62\\x61\\x72"This setting also affects the output for string literals within arrays and objects.
The minimal option takes a boolean value (true or false), and defaults to false (disabled). When enabled, only a limited set of symbols in the output are escaped:
\0\b\t\n\f\r\\\u2028\u2029quotes option)Note: with this option enabled, jsesc output is no longer guaranteed to be ASCII-safe.
jsesc('foo\u2029bar\nbaz©qux𝌆flops', {
'minimal': false
});
// → 'foo\\u2029bar\\nbaz©qux𝌆flops'The isScriptContext option takes a boolean value (true or false), and defaults to false (disabled). When enabled, occurrences of </script and </style in the output are escaped as <\/script and <\/style, and <!-- is escaped as \x3C!-- (or \u003C!-- when the json option is enabled). This setting is useful when jsesc’s output ends up as part of a <script> or <style> element in an HTML document.
jsesc('foo</script>bar', {
'isScriptContext': true
});
// → 'foo<\\/script>bar'The compact option takes a boolean value (true or false), and defaults to true (enabled). When enabled, the output for arrays and objects is as compact as possible; it’s not formatted nicely.
jsesc({ 'Ich ♥ Bücher': 'foo 𝌆 bar' }, {
'compact': true // this is the default
});
// → '{\'Ich \u2665 B\xFCcher\':\'foo \uD834\uDF06 bar\'}'
jsesc({ 'Ich ♥ Bücher': 'foo 𝌆 bar' }, {
'compact': false
});
// → '{\n\t\'Ich \u2665 B\xFCcher\': \'foo \uD834\uDF06 bar\'\n}'
jsesc([ 'Ich ♥ Bücher', 'foo 𝌆 bar' ], {
'compact': false
});
// → '[\n\t\'Ich \u2665 B\xFCcher\',\n\t\'foo \uD834\uDF06 bar\'\n]'This setting has no effect on the output for strings.
The indent option takes a string value, and defaults to '\t'. When the compact setting is enabled (true), the value of the indent option is used to format the output for arrays and objects.
jsesc({ 'Ich ♥ Bücher': 'foo 𝌆 bar' }, {
'compact': false,
'indent': '\t' // this is the default
});
// → '{\n\t\'Ich \u2665 B\xFCcher\': \'foo \uD834\uDF06 bar\'\n}'
jsesc({ 'Ich ♥ Bücher': 'foo 𝌆 bar' }, {
'compact': false,
'indent': ' '
});
// → '{\n \'Ich \u2665 B\xFCcher\': \'foo \uD834\uDF06 bar\'\n}'
jsesc([ 'Ich ♥ Bücher', 'foo 𝌆 bar' ], {
'compact': false,
'indent': ' '
});
// → '[\n \'Ich \u2665 B\xFCcher\',\n\ t\'foo \uD834\uDF06 bar\'\n]'This setting has no effect on the output for strings.
The indentLevel option takes a numeric value, and defaults to 0. It represents the current indentation level, i.e. the number of times the value of the indent option is repeated.
jsesc(['a', 'b', 'c'], {
'compact': false,
'indentLevel': 1
});
// → '[\n\t\t\'a\',\n\t\t\'b\',\n\t\t\'c\'\n\t]'
jsesc(['a', 'b', 'c'], {
'compact': false,
'indentLevel': 2
});
// → '[\n\t\t\t\'a\',\n\t\t\t\'b\',\n\t\t\t\'c\'\n\t\t]'The json option takes a boolean value (true or false), and defaults to false (disabled). When enabled, the output is valid JSON. Hexadecimal character escape sequences and the \v or \0 escape sequences are not used. Setting json: true implies quotes: 'double', wrap: true, es6: false, although these values can still be overridden if needed — but in such cases, the output won’t be valid JSON anymore.
jsesc('foo\x00bar\xFF\uFFFDbaz', {
'json': true
});
// → '"foo\\u0000bar\\u00FF\\uFFFDbaz"'
jsesc({ 'foo\x00bar\xFF\uFFFDbaz': 'foo\x00bar\xFF\uFFFDbaz' }, {
'json': true
});
// → '{"foo\\u0000bar\\u00FF\\uFFFDbaz":"foo\\u0000bar\\u00FF\\uFFFDbaz"}'
jsesc([ 'foo\x00bar\xFF\uFFFDbaz', 'foo\x00bar\xFF\uFFFDbaz' ], {
'json': true
});
// → '["foo\\u0000bar\\u00FF\\uFFFDbaz","foo\\u0000bar\\u00FF\\uFFFDbaz"]'
// Values that are acceptable in JSON but aren’t strings, arrays, or object
// literals can’t be escaped, so they’ll just be preserved:
jsesc([ 'foo\x00bar', [1, '©', { 'foo': true, 'qux': null }], 42 ], {
'json': true
});
// → '["foo\\u0000bar",[1,"\\u00A9",{"foo":true,"qux":null}],42]'
// Values that aren’t allowed in JSON are run through `JSON.stringify()`:
jsesc([ undefined, -Infinity ], {
'json': true
});
// → '[null,null]'Note: Using this option on objects or arrays that contain non-string values relies on JSON.stringify(). For legacy environments like IE ≤ 7, use a JSON polyfill.
The lowercaseHex option takes a boolean value (true or false), and defaults to false (disabled). When enabled, any alphabetical hexadecimal digits in escape sequences as well as any hexadecimal integer literals (see the numbers option) in the output are in lowercase.
jsesc('Ich ♥ Bücher', {
'lowercaseHex': true
});
// → 'Ich \\u2665 B\\xfccher'
// ^^
jsesc(42, {
'numbers': 'hexadecimal',
'lowercaseHex': true
});
// → '0x2a'
// ^^A string representing the semantic version number.
To use the jsesc binary in your shell, simply install jsesc globally using npm:
npm install -g jsescAfter that you’re able to escape strings from the command line:
$ jsesc 'föo ♥ bår 𝌆 baz'
f\xF6o \u2665 b\xE5r \uD834\uDF06 bazTo escape arrays or objects containing string values, use the -o/--object option:
$ jsesc --object '{ "föo": "♥", "bår": "𝌆 baz" }'
{'f\xF6o':'\u2665','b\xE5r':'\uD834\uDF06 baz'}To prettify the output in such cases, use the -p/--pretty option:
$ jsesc --pretty '{ "föo": "♥", "bår": "𝌆 baz" }'
{
'f\xF6o': '\u2665',
'b\xE5r': '\uD834\uDF06 baz'
}For valid JSON output, use the -j/--json option:
$ jsesc --json --pretty '{ "föo": "♥", "bår": "𝌆 baz" }'
{
"f\u00F6o": "\u2665",
"b\u00E5r": "\uD834\uDF06 baz"
}Read a local JSON file, escape any non-ASCII symbols, and save the result to a new file:
$ jsesc --json --object < data-raw.json > data-escaped.jsonOr do the same with an online JSON file:
$ curl -sL "http://git.io/aorKgQ" | jsesc --json --object > data-escaped.jsonSee jsesc --help for the full list of options.
As of v2.0.0, jsesc supports Node.js v4+ only.
Older versions (up to jsesc v1.3.0) support Chrome 27, Firefox 3, Safari 4, Opera 10, IE 6, Node.js v6.0.0, Narwhal 0.3.2, RingoJS 0.8-0.11, PhantomJS 1.9.0, and Rhino 1.7RC4. Note: Using the json option on objects or arrays that contain non-string values relies on JSON.parse(). For legacy environments like IE ≤ 7, use a JSON polyfill.
| Mathias Bynens |
This library is available under the MIT license.
| { | |
| "name": "@babel/generator", | |
| "version": "7.3.4", | |
| "description": "Turns an AST into code.", | |
| "author": "Sebastian McKenzie <[email protected]>", | |
| "homepage": "https://babeljs.io/", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-generator", | |
| "main": "lib/index.js", | |
| "files": [ | |
| "lib" | |
| ], | |
| "dependencies": { | |
| "@babel/types": "^7.3.4", | |
| "jsesc": "^2.5.1", | |
| "lodash": "^4.17.11", | |
| "source-map": "^0.5.0", | |
| "trim-right": "^1.0.1" | |
| }, | |
| "devDependencies": { | |
| "@babel/helper-fixtures": "^7.2.0", | |
| "@babel/parser": "^7.3.4" | |
| }, | |
| "gitHead": "1f6454cc90fe33e0a32260871212e2f719f35741" | |
| } |
Turns an AST into code.
See our website @babel/generator for more information or the issues associated with this package.
Using npm:
npm install --save-dev @babel/generatoror using yarn:
yarn add @babel/generator --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = annotateAsPure; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| const PURE_ANNOTATION = "#__PURE__"; | |
| const isPureAnnotated = ({ | |
| leadingComments | |
| }) => !!leadingComments && leadingComments.some(comment => /[@#]__PURE__/.test(comment.value)); | |
| function annotateAsPure(pathOrNode) { | |
| const node = pathOrNode.node || pathOrNode; | |
| if (isPureAnnotated(node)) { | |
| return; | |
| } | |
| t().addComment(node, "leading", PURE_ANNOTATION); | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 Sebastian McKenzie <[email protected]> | |
| 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. |
| { | |
| "name": "@babel/helper-annotate-as-pure", | |
| "version": "7.0.0", | |
| "description": "Helper function to annotate paths and nodes with #__PURE__ comment", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-annotate-as-pure", | |
| "license": "MIT", | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
Helper function to annotate paths and nodes with #PURE comment
See our website @babel/helper-annotate-as-pure for more information.
Using npm:
npm install --save-dev @babel/helper-annotate-as-pureor using yarn:
yarn add @babel/helper-annotate-as-pure --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function _helperExplodeAssignableExpression() { | |
| const data = _interopRequireDefault(require("@babel/helper-explode-assignable-expression")); | |
| _helperExplodeAssignableExpression = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function _default(opts) { | |
| const { | |
| build, | |
| operator | |
| } = opts; | |
| return { | |
| AssignmentExpression(path) { | |
| const { | |
| node, | |
| scope | |
| } = path; | |
| if (node.operator !== operator + "=") return; | |
| const nodes = []; | |
| const exploded = (0, _helperExplodeAssignableExpression().default)(node.left, nodes, this, scope); | |
| nodes.push(t().assignmentExpression("=", exploded.ref, build(exploded.uid, node.right))); | |
| path.replaceWith(t().sequenceExpression(nodes)); | |
| }, | |
| BinaryExpression(path) { | |
| const { | |
| node | |
| } = path; | |
| if (node.operator === operator) { | |
| path.replaceWith(build(node.left, node.right)); | |
| } | |
| } | |
| }; | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 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. |
| { | |
| "name": "@babel/helper-builder-binary-assignment-operator-visitor", | |
| "version": "7.1.0", | |
| "description": "Helper function to build binary assignment operator visitors", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-builder-binary-assignment-operator-visitor", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/helper-explode-assignable-expression": "^7.1.0", | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
Helper function to build binary assignment operator visitors
See our website @babel/helper-builder-binary-assignment-operator-visitor for more information.
Using npm:
npm install --save-dev @babel/helper-builder-binary-assignment-operator-visitoror using yarn:
yarn add @babel/helper-builder-binary-assignment-operator-visitor --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function _esutils() { | |
| const data = _interopRequireDefault(require("esutils")); | |
| _esutils = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function _default(opts) { | |
| const visitor = {}; | |
| visitor.JSXNamespacedName = function (path) { | |
| if (opts.throwIfNamespace) { | |
| throw path.buildCodeFrameError(`Namespace tags are not supported by default. React's JSX doesn't support namespace tags. \ | |
| You can turn on the 'throwIfNamespace' flag to bypass this warning.`); | |
| } | |
| }; | |
| visitor.JSXSpreadChild = function (path) { | |
| throw path.buildCodeFrameError("Spread children are not supported in React."); | |
| }; | |
| visitor.JSXElement = { | |
| exit(path, file) { | |
| const callExpr = buildElementCall(path, file); | |
| if (callExpr) { | |
| path.replaceWith(t().inherits(callExpr, path.node)); | |
| } | |
| } | |
| }; | |
| visitor.JSXFragment = { | |
| exit(path, file) { | |
| if (opts.compat) { | |
| throw path.buildCodeFrameError("Fragment tags are only supported in React 16 and up."); | |
| } | |
| const callExpr = buildFragmentCall(path, file); | |
| if (callExpr) { | |
| path.replaceWith(t().inherits(callExpr, path.node)); | |
| } | |
| } | |
| }; | |
| return visitor; | |
| function convertJSXIdentifier(node, parent) { | |
| if (t().isJSXIdentifier(node)) { | |
| if (node.name === "this" && t().isReferenced(node, parent)) { | |
| return t().thisExpression(); | |
| } else if (_esutils().default.keyword.isIdentifierNameES6(node.name)) { | |
| node.type = "Identifier"; | |
| } else { | |
| return t().stringLiteral(node.name); | |
| } | |
| } else if (t().isJSXMemberExpression(node)) { | |
| return t().memberExpression(convertJSXIdentifier(node.object, node), convertJSXIdentifier(node.property, node)); | |
| } else if (t().isJSXNamespacedName(node)) { | |
| return t().stringLiteral(`${node.namespace.name}:${node.name.name}`); | |
| } | |
| return node; | |
| } | |
| function convertAttributeValue(node) { | |
| if (t().isJSXExpressionContainer(node)) { | |
| return node.expression; | |
| } else { | |
| return node; | |
| } | |
| } | |
| function convertAttribute(node) { | |
| const value = convertAttributeValue(node.value || t().booleanLiteral(true)); | |
| if (t().isStringLiteral(value) && !t().isJSXExpressionContainer(node.value)) { | |
| value.value = value.value.replace(/\n\s+/g, " "); | |
| if (value.extra && value.extra.raw) { | |
| delete value.extra.raw; | |
| } | |
| } | |
| if (t().isJSXNamespacedName(node.name)) { | |
| node.name = t().stringLiteral(node.name.namespace.name + ":" + node.name.name.name); | |
| } else if (_esutils().default.keyword.isIdentifierNameES6(node.name.name)) { | |
| node.name.type = "Identifier"; | |
| } else { | |
| node.name = t().stringLiteral(node.name.name); | |
| } | |
| return t().inherits(t().objectProperty(node.name, value), node); | |
| } | |
| function buildElementCall(path, file) { | |
| if (opts.filter && !opts.filter(path.node, file)) return; | |
| const openingPath = path.get("openingElement"); | |
| openingPath.parent.children = t().react.buildChildren(openingPath.parent); | |
| const tagExpr = convertJSXIdentifier(openingPath.node.name, openingPath.node); | |
| const args = []; | |
| let tagName; | |
| if (t().isIdentifier(tagExpr)) { | |
| tagName = tagExpr.name; | |
| } else if (t().isLiteral(tagExpr)) { | |
| tagName = tagExpr.value; | |
| } | |
| const state = { | |
| tagExpr: tagExpr, | |
| tagName: tagName, | |
| args: args | |
| }; | |
| if (opts.pre) { | |
| opts.pre(state, file); | |
| } | |
| let attribs = openingPath.node.attributes; | |
| if (attribs.length) { | |
| attribs = buildOpeningElementAttributes(attribs, file); | |
| } else { | |
| attribs = t().nullLiteral(); | |
| } | |
| args.push(attribs, ...path.node.children); | |
| if (opts.post) { | |
| opts.post(state, file); | |
| } | |
| return state.call || t().callExpression(state.callee, args); | |
| } | |
| function pushProps(_props, objs) { | |
| if (!_props.length) return _props; | |
| objs.push(t().objectExpression(_props)); | |
| return []; | |
| } | |
| function buildOpeningElementAttributes(attribs, file) { | |
| let _props = []; | |
| const objs = []; | |
| const useBuiltIns = file.opts.useBuiltIns || false; | |
| if (typeof useBuiltIns !== "boolean") { | |
| throw new Error("transform-react-jsx currently only accepts a boolean option for " + "useBuiltIns (defaults to false)"); | |
| } | |
| while (attribs.length) { | |
| const prop = attribs.shift(); | |
| if (t().isJSXSpreadAttribute(prop)) { | |
| _props = pushProps(_props, objs); | |
| objs.push(prop.argument); | |
| } else { | |
| _props.push(convertAttribute(prop)); | |
| } | |
| } | |
| pushProps(_props, objs); | |
| if (objs.length === 1) { | |
| attribs = objs[0]; | |
| } else { | |
| if (!t().isObjectExpression(objs[0])) { | |
| objs.unshift(t().objectExpression([])); | |
| } | |
| const helper = useBuiltIns ? t().memberExpression(t().identifier("Object"), t().identifier("assign")) : file.addHelper("extends"); | |
| attribs = t().callExpression(helper, objs); | |
| } | |
| return attribs; | |
| } | |
| function buildFragmentCall(path, file) { | |
| if (opts.filter && !opts.filter(path.node, file)) return; | |
| const openingPath = path.get("openingElement"); | |
| openingPath.parent.children = t().react.buildChildren(openingPath.parent); | |
| const args = []; | |
| const tagName = null; | |
| const tagExpr = file.get("jsxFragIdentifier")(); | |
| const state = { | |
| tagExpr: tagExpr, | |
| tagName: tagName, | |
| args: args | |
| }; | |
| if (opts.pre) { | |
| opts.pre(state, file); | |
| } | |
| args.push(t().nullLiteral(), ...path.node.children); | |
| if (opts.post) { | |
| opts.post(state, file); | |
| } | |
| file.set("usedFragment", true); | |
| return state.call || t().callExpression(state.callee, args); | |
| } | |
| } |
| 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. |
| { | |
| "name": "@babel/helper-builder-react-jsx", | |
| "version": "7.3.0", | |
| "description": "Helper function to build react jsx", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-builder-react-jsx", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/types": "^7.3.0", | |
| "esutils": "^2.0.0" | |
| } | |
| } |
Helper function to build react jsx
See our website @babel/helper-builder-react-jsx for more information.
Using npm:
npm install --save-dev @babel/helper-builder-react-jsxor using yarn:
yarn add @babel/helper-builder-react-jsx --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function _helperHoistVariables() { | |
| const data = _interopRequireDefault(require("@babel/helper-hoist-variables")); | |
| _helperHoistVariables = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const visitor = { | |
| enter(path, state) { | |
| if (path.isThisExpression()) { | |
| state.foundThis = true; | |
| } | |
| if (path.isReferencedIdentifier({ | |
| name: "arguments" | |
| })) { | |
| state.foundArguments = true; | |
| } | |
| }, | |
| Function(path) { | |
| path.skip(); | |
| } | |
| }; | |
| function _default(path, scope = path.scope) { | |
| const { | |
| node | |
| } = path; | |
| const container = t().functionExpression(null, [], node.body, node.generator, node.async); | |
| let callee = container; | |
| let args = []; | |
| (0, _helperHoistVariables().default)(path, id => scope.push({ | |
| id | |
| })); | |
| const state = { | |
| foundThis: false, | |
| foundArguments: false | |
| }; | |
| path.traverse(visitor, state); | |
| if (state.foundArguments) { | |
| callee = t().memberExpression(container, t().identifier("apply")); | |
| args = []; | |
| if (state.foundThis) { | |
| args.push(t().thisExpression()); | |
| } | |
| if (state.foundArguments) { | |
| if (!state.foundThis) args.push(t().nullLiteral()); | |
| args.push(t().identifier("arguments")); | |
| } | |
| } | |
| let call = t().callExpression(callee, args); | |
| if (node.generator) call = t().yieldExpression(call, true); | |
| return t().returnStatement(call); | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 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. |
| { | |
| "name": "@babel/helper-call-delegate", | |
| "version": "7.1.0", | |
| "description": "Helper function to call delegate", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-call-delegate", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/helper-hoist-variables": "^7.0.0", | |
| "@babel/traverse": "^7.1.0", | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
Helper function to call delegate
See our website @babel/helper-call-delegate for more information.
Using npm:
npm install --save-dev @babel/helper-call-delegateor using yarn:
yarn add @babel/helper-call-delegate --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.push = push; | |
| exports.hasComputed = hasComputed; | |
| exports.toComputedObjectFromClass = toComputedObjectFromClass; | |
| exports.toClassObject = toClassObject; | |
| exports.toDefineObject = toDefineObject; | |
| function _helperFunctionName() { | |
| const data = _interopRequireDefault(require("@babel/helper-function-name")); | |
| _helperFunctionName = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _has() { | |
| const data = _interopRequireDefault(require("lodash/has")); | |
| _has = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function toKind(node) { | |
| if (t().isClassMethod(node) || t().isObjectMethod(node)) { | |
| if (node.kind === "get" || node.kind === "set") { | |
| return node.kind; | |
| } | |
| } | |
| return "value"; | |
| } | |
| function push(mutatorMap, node, kind, file, scope) { | |
| const alias = t().toKeyAlias(node); | |
| let map = {}; | |
| if ((0, _has().default)(mutatorMap, alias)) map = mutatorMap[alias]; | |
| mutatorMap[alias] = map; | |
| map._inherits = map._inherits || []; | |
| map._inherits.push(node); | |
| map._key = node.key; | |
| if (node.computed) { | |
| map._computed = true; | |
| } | |
| if (node.decorators) { | |
| const decorators = map.decorators = map.decorators || t().arrayExpression([]); | |
| decorators.elements = decorators.elements.concat(node.decorators.map(dec => dec.expression).reverse()); | |
| } | |
| if (map.value || map.initializer) { | |
| throw file.buildCodeFrameError(node, "Key conflict with sibling node"); | |
| } | |
| let key, value; | |
| if (t().isObjectProperty(node) || t().isObjectMethod(node) || t().isClassMethod(node)) { | |
| key = t().toComputedKey(node, node.key); | |
| } | |
| if (t().isProperty(node)) { | |
| value = node.value; | |
| } else if (t().isObjectMethod(node) || t().isClassMethod(node)) { | |
| value = t().functionExpression(null, node.params, node.body, node.generator, node.async); | |
| value.returnType = node.returnType; | |
| } | |
| const inheritedKind = toKind(node); | |
| if (!kind || inheritedKind !== "value") { | |
| kind = inheritedKind; | |
| } | |
| if (scope && t().isStringLiteral(key) && (kind === "value" || kind === "initializer") && t().isFunctionExpression(value)) { | |
| value = (0, _helperFunctionName().default)({ | |
| id: key, | |
| node: value, | |
| scope | |
| }); | |
| } | |
| if (value) { | |
| t().inheritsComments(value, node); | |
| map[kind] = value; | |
| } | |
| return map; | |
| } | |
| function hasComputed(mutatorMap) { | |
| for (const key in mutatorMap) { | |
| if (mutatorMap[key]._computed) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| function toComputedObjectFromClass(obj) { | |
| const objExpr = t().arrayExpression([]); | |
| for (let i = 0; i < obj.properties.length; i++) { | |
| const prop = obj.properties[i]; | |
| const val = prop.value; | |
| val.properties.unshift(t().objectProperty(t().identifier("key"), t().toComputedKey(prop))); | |
| objExpr.elements.push(val); | |
| } | |
| return objExpr; | |
| } | |
| function toClassObject(mutatorMap) { | |
| const objExpr = t().objectExpression([]); | |
| Object.keys(mutatorMap).forEach(function (mutatorMapKey) { | |
| const map = mutatorMap[mutatorMapKey]; | |
| const mapNode = t().objectExpression([]); | |
| const propNode = t().objectProperty(map._key, mapNode, map._computed); | |
| Object.keys(map).forEach(function (key) { | |
| const node = map[key]; | |
| if (key[0] === "_") return; | |
| const prop = t().objectProperty(t().identifier(key), node); | |
| t().inheritsComments(prop, node); | |
| t().removeComments(node); | |
| mapNode.properties.push(prop); | |
| }); | |
| objExpr.properties.push(propNode); | |
| }); | |
| return objExpr; | |
| } | |
| function toDefineObject(mutatorMap) { | |
| Object.keys(mutatorMap).forEach(function (key) { | |
| const map = mutatorMap[key]; | |
| if (map.value) map.writable = t().booleanLiteral(true); | |
| map.configurable = t().booleanLiteral(true); | |
| map.enumerable = t().booleanLiteral(true); | |
| }); | |
| return toClassObject(mutatorMap); | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 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. |
| { | |
| "name": "@babel/helper-define-map", | |
| "version": "7.1.0", | |
| "description": "Helper function to define a map", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-define-map", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/helper-function-name": "^7.1.0", | |
| "@babel/types": "^7.0.0", | |
| "lodash": "^4.17.10" | |
| } | |
| } |
Helper function to define a map
See our website @babel/helper-define-map for more information.
Using npm:
npm install --save-dev @babel/helper-define-mapor using yarn:
yarn add @babel/helper-define-map --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function getObjRef(node, nodes, file, scope) { | |
| let ref; | |
| if (t().isSuper(node)) { | |
| return node; | |
| } else if (t().isIdentifier(node)) { | |
| if (scope.hasBinding(node.name)) { | |
| return node; | |
| } else { | |
| ref = node; | |
| } | |
| } else if (t().isMemberExpression(node)) { | |
| ref = node.object; | |
| if (t().isSuper(ref) || t().isIdentifier(ref) && scope.hasBinding(ref.name)) { | |
| return ref; | |
| } | |
| } else { | |
| throw new Error(`We can't explode this node type ${node.type}`); | |
| } | |
| const temp = scope.generateUidIdentifierBasedOnNode(ref); | |
| scope.push({ | |
| id: temp | |
| }); | |
| nodes.push(t().assignmentExpression("=", t().cloneNode(temp), t().cloneNode(ref))); | |
| return temp; | |
| } | |
| function getPropRef(node, nodes, file, scope) { | |
| const prop = node.property; | |
| const key = t().toComputedKey(node, prop); | |
| if (t().isLiteral(key) && t().isPureish(key)) return key; | |
| const temp = scope.generateUidIdentifierBasedOnNode(prop); | |
| scope.push({ | |
| id: temp | |
| }); | |
| nodes.push(t().assignmentExpression("=", t().cloneNode(temp), t().cloneNode(prop))); | |
| return temp; | |
| } | |
| function _default(node, nodes, file, scope, allowedSingleIdent) { | |
| let obj; | |
| if (t().isIdentifier(node) && allowedSingleIdent) { | |
| obj = node; | |
| } else { | |
| obj = getObjRef(node, nodes, file, scope); | |
| } | |
| let ref, uid; | |
| if (t().isIdentifier(node)) { | |
| ref = t().cloneNode(node); | |
| uid = obj; | |
| } else { | |
| const prop = getPropRef(node, nodes, file, scope); | |
| const computed = node.computed || t().isLiteral(prop); | |
| uid = t().memberExpression(t().cloneNode(obj), t().cloneNode(prop), computed); | |
| ref = t().memberExpression(t().cloneNode(obj), t().cloneNode(prop), computed); | |
| } | |
| return { | |
| uid: uid, | |
| ref: ref | |
| }; | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 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. |
| { | |
| "name": "@babel/helper-explode-assignable-expression", | |
| "version": "7.1.0", | |
| "description": "Helper function to explode an assignable expression", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-explode-assignable-expression", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/traverse": "^7.1.0", | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
Helper function to explode an assignable expression
See our website @babel/helper-explode-assignable-expression for more information.
Using npm:
npm install --save-dev @babel/helper-explode-assignable-expressionor using yarn:
yarn add @babel/helper-explode-assignable-expression --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function _helperGetFunctionArity() { | |
| const data = _interopRequireDefault(require("@babel/helper-get-function-arity")); | |
| _helperGetFunctionArity = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _template() { | |
| const data = _interopRequireDefault(require("@babel/template")); | |
| _template = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const buildPropertyMethodAssignmentWrapper = (0, _template().default)(` | |
| (function (FUNCTION_KEY) { | |
| function FUNCTION_ID() { | |
| return FUNCTION_KEY.apply(this, arguments); | |
| } | |
| FUNCTION_ID.toString = function () { | |
| return FUNCTION_KEY.toString(); | |
| } | |
| return FUNCTION_ID; | |
| })(FUNCTION) | |
| `); | |
| const buildGeneratorPropertyMethodAssignmentWrapper = (0, _template().default)(` | |
| (function (FUNCTION_KEY) { | |
| function* FUNCTION_ID() { | |
| return yield* FUNCTION_KEY.apply(this, arguments); | |
| } | |
| FUNCTION_ID.toString = function () { | |
| return FUNCTION_KEY.toString(); | |
| }; | |
| return FUNCTION_ID; | |
| })(FUNCTION) | |
| `); | |
| const visitor = { | |
| "ReferencedIdentifier|BindingIdentifier"(path, state) { | |
| if (path.node.name !== state.name) return; | |
| const localDeclar = path.scope.getBindingIdentifier(state.name); | |
| if (localDeclar !== state.outerDeclar) return; | |
| state.selfReference = true; | |
| path.stop(); | |
| } | |
| }; | |
| function getNameFromLiteralId(id) { | |
| if (t().isNullLiteral(id)) { | |
| return "null"; | |
| } | |
| if (t().isRegExpLiteral(id)) { | |
| return `_${id.pattern}_${id.flags}`; | |
| } | |
| if (t().isTemplateLiteral(id)) { | |
| return id.quasis.map(quasi => quasi.value.raw).join(""); | |
| } | |
| if (id.value !== undefined) { | |
| return id.value + ""; | |
| } | |
| return ""; | |
| } | |
| function wrap(state, method, id, scope) { | |
| if (state.selfReference) { | |
| if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) { | |
| scope.rename(id.name); | |
| } else { | |
| if (!t().isFunction(method)) return; | |
| let build = buildPropertyMethodAssignmentWrapper; | |
| if (method.generator) { | |
| build = buildGeneratorPropertyMethodAssignmentWrapper; | |
| } | |
| const template = build({ | |
| FUNCTION: method, | |
| FUNCTION_ID: id, | |
| FUNCTION_KEY: scope.generateUidIdentifier(id.name) | |
| }).expression; | |
| const params = template.callee.body.body[0].params; | |
| for (let i = 0, len = (0, _helperGetFunctionArity().default)(method); i < len; i++) { | |
| params.push(scope.generateUidIdentifier("x")); | |
| } | |
| return template; | |
| } | |
| } | |
| method.id = id; | |
| scope.getProgramParent().references[id.name] = true; | |
| } | |
| function visit(node, name, scope) { | |
| const state = { | |
| selfAssignment: false, | |
| selfReference: false, | |
| outerDeclar: scope.getBindingIdentifier(name), | |
| references: [], | |
| name: name | |
| }; | |
| const binding = scope.getOwnBinding(name); | |
| if (binding) { | |
| if (binding.kind === "param") { | |
| state.selfReference = true; | |
| } else {} | |
| } else if (state.outerDeclar || scope.hasGlobal(name)) { | |
| scope.traverse(node, visitor, state); | |
| } | |
| return state; | |
| } | |
| function _default({ | |
| node, | |
| parent, | |
| scope, | |
| id | |
| }, localBinding = false) { | |
| if (node.id) return; | |
| if ((t().isObjectProperty(parent) || t().isObjectMethod(parent, { | |
| kind: "method" | |
| })) && (!parent.computed || t().isLiteral(parent.key))) { | |
| id = parent.key; | |
| } else if (t().isVariableDeclarator(parent)) { | |
| id = parent.id; | |
| if (t().isIdentifier(id) && !localBinding) { | |
| const binding = scope.parent.getBinding(id.name); | |
| if (binding && binding.constant && scope.getBinding(id.name) === binding) { | |
| node.id = t().cloneNode(id); | |
| node.id[t().NOT_LOCAL_BINDING] = true; | |
| return; | |
| } | |
| } | |
| } else if (t().isAssignmentExpression(parent)) { | |
| id = parent.left; | |
| } else if (!id) { | |
| return; | |
| } | |
| let name; | |
| if (id && t().isLiteral(id)) { | |
| name = getNameFromLiteralId(id); | |
| } else if (id && t().isIdentifier(id)) { | |
| name = id.name; | |
| } | |
| if (name === undefined) { | |
| return; | |
| } | |
| name = t().toBindingIdentifierName(name); | |
| id = t().identifier(name); | |
| id[t().NOT_LOCAL_BINDING] = true; | |
| const state = visit(node, name, scope); | |
| return wrap(state, node, id, scope) || node; | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 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. |
| { | |
| "name": "@babel/helper-function-name", | |
| "version": "7.1.0", | |
| "description": "Helper function to change the property 'name' of every function", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-function-name", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/helper-get-function-arity": "^7.0.0", | |
| "@babel/template": "^7.1.0", | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
Helper function to change the property 'name' of every function
See our website @babel/helper-function-name for more information.
Using npm:
npm install --save-dev @babel/helper-function-nameor using yarn:
yarn add @babel/helper-function-name --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _default(node) { | |
| const params = node.params; | |
| for (let i = 0; i < params.length; i++) { | |
| const param = params[i]; | |
| if (t().isAssignmentPattern(param) || t().isRestElement(param)) { | |
| return i; | |
| } | |
| } | |
| return params.length; | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 Sebastian McKenzie <[email protected]> | |
| 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. |
| { | |
| "name": "@babel/helper-get-function-arity", | |
| "version": "7.0.0", | |
| "description": "Helper function to get function arity", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-get-function-arity", | |
| "license": "MIT", | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
Helper function to get function arity
See our website @babel/helper-get-function-arity for more information.
Using npm:
npm install --save-dev @babel/helper-get-function-arityor using yarn:
yarn add @babel/helper-get-function-arity --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| const visitor = { | |
| Scope(path, state) { | |
| if (state.kind === "let") path.skip(); | |
| }, | |
| Function(path) { | |
| path.skip(); | |
| }, | |
| VariableDeclaration(path, state) { | |
| if (state.kind && path.node.kind !== state.kind) return; | |
| const nodes = []; | |
| const declarations = path.get("declarations"); | |
| let firstId; | |
| for (const declar of declarations) { | |
| firstId = declar.node.id; | |
| if (declar.node.init) { | |
| nodes.push(t().expressionStatement(t().assignmentExpression("=", declar.node.id, declar.node.init))); | |
| } | |
| for (const name in declar.getBindingIdentifiers()) { | |
| state.emit(t().identifier(name), name, declar.node.init !== null); | |
| } | |
| } | |
| if (path.parentPath.isFor({ | |
| left: path.node | |
| })) { | |
| path.replaceWith(firstId); | |
| } else { | |
| path.replaceWithMultiple(nodes); | |
| } | |
| } | |
| }; | |
| function _default(path, emit, kind = "var") { | |
| path.traverse(visitor, { | |
| kind, | |
| emit | |
| }); | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 Sebastian McKenzie <[email protected]> | |
| 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. |
| { | |
| "name": "@babel/helper-hoist-variables", | |
| "version": "7.0.0", | |
| "description": "Helper function to hoist variables", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-hoist-variables", | |
| "license": "MIT", | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
Helper function to hoist variables
See our website @babel/helper-hoist-variables for more information.
Using npm:
npm install --save-dev @babel/helper-hoist-variablesor using yarn:
yarn add @babel/helper-hoist-variables --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = memberExpressionToFunctions; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| class AssignmentMemoiser { | |
| constructor() { | |
| this._map = new WeakMap(); | |
| } | |
| has(key) { | |
| return this._map.has(key); | |
| } | |
| get(key) { | |
| if (!this.has(key)) return; | |
| const record = this._map.get(key); | |
| const { | |
| value | |
| } = record; | |
| record.count--; | |
| if (record.count === 0) { | |
| return t().assignmentExpression("=", value, key); | |
| } | |
| return value; | |
| } | |
| set(key, value, count) { | |
| return this._map.set(key, { | |
| count, | |
| value | |
| }); | |
| } | |
| } | |
| const handle = { | |
| memoise() {}, | |
| handle(member) { | |
| const { | |
| node, | |
| parent, | |
| parentPath | |
| } = member; | |
| if (parentPath.isUpdateExpression({ | |
| argument: node | |
| })) { | |
| const { | |
| operator, | |
| prefix | |
| } = parent; | |
| this.memoise(member, 2); | |
| const value = t().binaryExpression(operator[0], t().unaryExpression("+", this.get(member)), t().numericLiteral(1)); | |
| if (prefix) { | |
| parentPath.replaceWith(this.set(member, value)); | |
| } else { | |
| const { | |
| scope | |
| } = member; | |
| const ref = scope.generateUidIdentifierBasedOnNode(node); | |
| scope.push({ | |
| id: ref | |
| }); | |
| value.left = t().assignmentExpression("=", t().cloneNode(ref), value.left); | |
| parentPath.replaceWith(t().sequenceExpression([this.set(member, value), t().cloneNode(ref)])); | |
| } | |
| return; | |
| } | |
| if (parentPath.isAssignmentExpression({ | |
| left: node | |
| })) { | |
| const { | |
| operator, | |
| right | |
| } = parent; | |
| let value = right; | |
| if (operator !== "=") { | |
| this.memoise(member, 2); | |
| value = t().binaryExpression(operator.slice(0, -1), this.get(member), value); | |
| } | |
| parentPath.replaceWith(this.set(member, value)); | |
| return; | |
| } | |
| if (parentPath.isCallExpression({ | |
| callee: node | |
| })) { | |
| const { | |
| arguments: args | |
| } = parent; | |
| parentPath.replaceWith(this.call(member, args)); | |
| return; | |
| } | |
| member.replaceWith(this.get(member)); | |
| } | |
| }; | |
| function memberExpressionToFunctions(path, visitor, state) { | |
| path.traverse(visitor, Object.assign({}, handle, state, { | |
| memoiser: new AssignmentMemoiser() | |
| })); | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 Sebastian McKenzie <[email protected]> | |
| 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. |
| { | |
| "name": "@babel/helper-member-expression-to-functions", | |
| "version": "7.0.0", | |
| "description": "Helper function to replace certain member expressions with function calls", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-member-expression-to-functions", | |
| "license": "MIT", | |
| "main": "lib/index.js", | |
| "author": "Justin Ridgewell <[email protected]>", | |
| "dependencies": { | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
Helper function to replace certain member expressions with function calls
See our website @babel/helper-member-expression-to-functions for more information.
Using npm:
npm install --save-dev @babel/helper-member-expression-to-functionsor using yarn:
yarn add @babel/helper-member-expression-to-functions --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| function _assert() { | |
| const data = _interopRequireDefault(require("assert")); | |
| _assert = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| class ImportBuilder { | |
| constructor(importedSource, scope, hub) { | |
| this._statements = []; | |
| this._resultName = null; | |
| this._scope = null; | |
| this._hub = null; | |
| this._scope = scope; | |
| this._hub = hub; | |
| this._importedSource = importedSource; | |
| } | |
| done() { | |
| return { | |
| statements: this._statements, | |
| resultName: this._resultName | |
| }; | |
| } | |
| import() { | |
| this._statements.push(t().importDeclaration([], t().stringLiteral(this._importedSource))); | |
| return this; | |
| } | |
| require() { | |
| this._statements.push(t().expressionStatement(t().callExpression(t().identifier("require"), [t().stringLiteral(this._importedSource)]))); | |
| return this; | |
| } | |
| namespace(name = "namespace") { | |
| name = this._scope.generateUidIdentifier(name); | |
| const statement = this._statements[this._statements.length - 1]; | |
| (0, _assert().default)(statement.type === "ImportDeclaration"); | |
| (0, _assert().default)(statement.specifiers.length === 0); | |
| statement.specifiers = [t().importNamespaceSpecifier(name)]; | |
| this._resultName = t().cloneNode(name); | |
| return this; | |
| } | |
| default(name) { | |
| name = this._scope.generateUidIdentifier(name); | |
| const statement = this._statements[this._statements.length - 1]; | |
| (0, _assert().default)(statement.type === "ImportDeclaration"); | |
| (0, _assert().default)(statement.specifiers.length === 0); | |
| statement.specifiers = [t().importDefaultSpecifier(name)]; | |
| this._resultName = t().cloneNode(name); | |
| return this; | |
| } | |
| named(name, importName) { | |
| if (importName === "default") return this.default(name); | |
| name = this._scope.generateUidIdentifier(name); | |
| const statement = this._statements[this._statements.length - 1]; | |
| (0, _assert().default)(statement.type === "ImportDeclaration"); | |
| (0, _assert().default)(statement.specifiers.length === 0); | |
| statement.specifiers = [t().importSpecifier(name, t().identifier(importName))]; | |
| this._resultName = t().cloneNode(name); | |
| return this; | |
| } | |
| var(name) { | |
| name = this._scope.generateUidIdentifier(name); | |
| let statement = this._statements[this._statements.length - 1]; | |
| if (statement.type !== "ExpressionStatement") { | |
| (0, _assert().default)(this._resultName); | |
| statement = t().expressionStatement(this._resultName); | |
| this._statements.push(statement); | |
| } | |
| this._statements[this._statements.length - 1] = t().variableDeclaration("var", [t().variableDeclarator(name, statement.expression)]); | |
| this._resultName = t().cloneNode(name); | |
| return this; | |
| } | |
| defaultInterop() { | |
| return this._interop(this._hub.addHelper("interopRequireDefault")); | |
| } | |
| wildcardInterop() { | |
| return this._interop(this._hub.addHelper("interopRequireWildcard")); | |
| } | |
| _interop(callee) { | |
| const statement = this._statements[this._statements.length - 1]; | |
| if (statement.type === "ExpressionStatement") { | |
| statement.expression = t().callExpression(callee, [statement.expression]); | |
| } else if (statement.type === "VariableDeclaration") { | |
| (0, _assert().default)(statement.declarations.length === 1); | |
| statement.declarations[0].init = t().callExpression(callee, [statement.declarations[0].init]); | |
| } else { | |
| _assert().default.fail("Unexpected type."); | |
| } | |
| return this; | |
| } | |
| prop(name) { | |
| const statement = this._statements[this._statements.length - 1]; | |
| if (statement.type === "ExpressionStatement") { | |
| statement.expression = t().memberExpression(statement.expression, t().identifier(name)); | |
| } else if (statement.type === "VariableDeclaration") { | |
| (0, _assert().default)(statement.declarations.length === 1); | |
| statement.declarations[0].init = t().memberExpression(statement.declarations[0].init, t().identifier(name)); | |
| } else { | |
| _assert().default.fail("Unexpected type:" + statement.type); | |
| } | |
| return this; | |
| } | |
| read(name) { | |
| this._resultName = t().memberExpression(this._resultName, t().identifier(name)); | |
| } | |
| } | |
| exports.default = ImportBuilder; |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| function _assert() { | |
| const data = _interopRequireDefault(require("assert")); | |
| _assert = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _importBuilder = _interopRequireDefault(require("./import-builder")); | |
| var _isModule = _interopRequireDefault(require("./is-module")); | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| class ImportInjector { | |
| constructor(path, importedSource, opts) { | |
| this._defaultOpts = { | |
| importedSource: null, | |
| importedType: "commonjs", | |
| importedInterop: "babel", | |
| importingInterop: "babel", | |
| ensureLiveReference: false, | |
| ensureNoContext: false | |
| }; | |
| const programPath = path.find(p => p.isProgram()); | |
| this._programPath = programPath; | |
| this._programScope = programPath.scope; | |
| this._hub = programPath.hub; | |
| this._defaultOpts = this._applyDefaults(importedSource, opts, true); | |
| } | |
| addDefault(importedSourceIn, opts) { | |
| return this.addNamed("default", importedSourceIn, opts); | |
| } | |
| addNamed(importName, importedSourceIn, opts) { | |
| (0, _assert().default)(typeof importName === "string"); | |
| return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName); | |
| } | |
| addNamespace(importedSourceIn, opts) { | |
| return this._generateImport(this._applyDefaults(importedSourceIn, opts), null); | |
| } | |
| addSideEffect(importedSourceIn, opts) { | |
| return this._generateImport(this._applyDefaults(importedSourceIn, opts), false); | |
| } | |
| _applyDefaults(importedSource, opts, isInit = false) { | |
| const optsList = []; | |
| if (typeof importedSource === "string") { | |
| optsList.push({ | |
| importedSource | |
| }); | |
| optsList.push(opts); | |
| } else { | |
| (0, _assert().default)(!opts, "Unexpected secondary arguments."); | |
| optsList.push(importedSource); | |
| } | |
| const newOpts = Object.assign({}, this._defaultOpts); | |
| for (const opts of optsList) { | |
| if (!opts) continue; | |
| Object.keys(newOpts).forEach(key => { | |
| if (opts[key] !== undefined) newOpts[key] = opts[key]; | |
| }); | |
| if (!isInit) { | |
| if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint; | |
| if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist; | |
| } | |
| } | |
| return newOpts; | |
| } | |
| _generateImport(opts, importName) { | |
| const isDefault = importName === "default"; | |
| const isNamed = !!importName && !isDefault; | |
| const isNamespace = importName === null; | |
| const { | |
| importedSource, | |
| importedType, | |
| importedInterop, | |
| importingInterop, | |
| ensureLiveReference, | |
| ensureNoContext, | |
| nameHint, | |
| blockHoist | |
| } = opts; | |
| let name = nameHint || importName; | |
| const isMod = (0, _isModule.default)(this._programPath); | |
| const isModuleForNode = isMod && importingInterop === "node"; | |
| const isModuleForBabel = isMod && importingInterop === "babel"; | |
| const builder = new _importBuilder.default(importedSource, this._programScope, this._hub); | |
| if (importedType === "es6") { | |
| if (!isModuleForNode && !isModuleForBabel) { | |
| throw new Error("Cannot import an ES6 module from CommonJS"); | |
| } | |
| builder.import(); | |
| if (isNamespace) { | |
| builder.namespace(nameHint || importedSource); | |
| } else if (isDefault || isNamed) { | |
| builder.named(name, importName); | |
| } | |
| } else if (importedType !== "commonjs") { | |
| throw new Error(`Unexpected interopType "${importedType}"`); | |
| } else if (importedInterop === "babel") { | |
| if (isModuleForNode) { | |
| name = name !== "default" ? name : importedSource; | |
| const es6Default = `${importedSource}$es6Default`; | |
| builder.import(); | |
| if (isNamespace) { | |
| builder.default(es6Default).var(name || importedSource).wildcardInterop(); | |
| } else if (isDefault) { | |
| if (ensureLiveReference) { | |
| builder.default(es6Default).var(name || importedSource).defaultInterop().read("default"); | |
| } else { | |
| builder.default(es6Default).var(name).defaultInterop().prop(importName); | |
| } | |
| } else if (isNamed) { | |
| builder.default(es6Default).read(importName); | |
| } | |
| } else if (isModuleForBabel) { | |
| builder.import(); | |
| if (isNamespace) { | |
| builder.namespace(name || importedSource); | |
| } else if (isDefault || isNamed) { | |
| builder.named(name, importName); | |
| } | |
| } else { | |
| builder.require(); | |
| if (isNamespace) { | |
| builder.var(name || importedSource).wildcardInterop(); | |
| } else if ((isDefault || isNamed) && ensureLiveReference) { | |
| if (isDefault) { | |
| name = name !== "default" ? name : importedSource; | |
| builder.var(name).read(importName); | |
| builder.defaultInterop(); | |
| } else { | |
| builder.var(importedSource).read(importName); | |
| } | |
| } else if (isDefault) { | |
| builder.var(name).defaultInterop().prop(importName); | |
| } else if (isNamed) { | |
| builder.var(name).prop(importName); | |
| } | |
| } | |
| } else if (importedInterop === "compiled") { | |
| if (isModuleForNode) { | |
| builder.import(); | |
| if (isNamespace) { | |
| builder.default(name || importedSource); | |
| } else if (isDefault || isNamed) { | |
| builder.default(importedSource).read(name); | |
| } | |
| } else if (isModuleForBabel) { | |
| builder.import(); | |
| if (isNamespace) { | |
| builder.namespace(name || importedSource); | |
| } else if (isDefault || isNamed) { | |
| builder.named(name, importName); | |
| } | |
| } else { | |
| builder.require(); | |
| if (isNamespace) { | |
| builder.var(name || importedSource); | |
| } else if (isDefault || isNamed) { | |
| if (ensureLiveReference) { | |
| builder.var(importedSource).read(name); | |
| } else { | |
| builder.prop(importName).var(name); | |
| } | |
| } | |
| } | |
| } else if (importedInterop === "uncompiled") { | |
| if (isDefault && ensureLiveReference) { | |
| throw new Error("No live reference for commonjs default"); | |
| } | |
| if (isModuleForNode) { | |
| builder.import(); | |
| if (isNamespace) { | |
| builder.default(name || importedSource); | |
| } else if (isDefault) { | |
| builder.default(name); | |
| } else if (isNamed) { | |
| builder.default(importedSource).read(name); | |
| } | |
| } else if (isModuleForBabel) { | |
| builder.import(); | |
| if (isNamespace) { | |
| builder.default(name || importedSource); | |
| } else if (isDefault) { | |
| builder.default(name); | |
| } else if (isNamed) { | |
| builder.named(name, importName); | |
| } | |
| } else { | |
| builder.require(); | |
| if (isNamespace) { | |
| builder.var(name || importedSource); | |
| } else if (isDefault) { | |
| builder.var(name); | |
| } else if (isNamed) { | |
| if (ensureLiveReference) { | |
| builder.var(importedSource).read(name); | |
| } else { | |
| builder.var(name).prop(importName); | |
| } | |
| } | |
| } | |
| } else { | |
| throw new Error(`Unknown importedInterop "${importedInterop}".`); | |
| } | |
| const { | |
| statements, | |
| resultName | |
| } = builder.done(); | |
| this._insertStatements(statements, blockHoist); | |
| if ((isDefault || isNamed) && ensureNoContext && resultName.type !== "Identifier") { | |
| return t().sequenceExpression([t().numericLiteral(0), resultName]); | |
| } | |
| return resultName; | |
| } | |
| _insertStatements(statements, blockHoist = 3) { | |
| statements.forEach(node => { | |
| node._blockHoist = blockHoist; | |
| }); | |
| const targetPath = this._programPath.get("body").filter(p => { | |
| const val = p.node._blockHoist; | |
| return Number.isFinite(val) && val < 4; | |
| })[0]; | |
| if (targetPath) { | |
| targetPath.insertBefore(statements); | |
| } else { | |
| this._programPath.unshiftContainer("body", statements); | |
| } | |
| } | |
| } | |
| exports.default = ImportInjector; |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.addDefault = addDefault; | |
| exports.addNamed = addNamed; | |
| exports.addNamespace = addNamespace; | |
| exports.addSideEffect = addSideEffect; | |
| Object.defineProperty(exports, "ImportInjector", { | |
| enumerable: true, | |
| get: function () { | |
| return _importInjector.default; | |
| } | |
| }); | |
| Object.defineProperty(exports, "isModule", { | |
| enumerable: true, | |
| get: function () { | |
| return _isModule.default; | |
| } | |
| }); | |
| var _importInjector = _interopRequireDefault(require("./import-injector")); | |
| var _isModule = _interopRequireDefault(require("./is-module")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function addDefault(path, importedSource, opts) { | |
| return new _importInjector.default(path).addDefault(importedSource, opts); | |
| } | |
| function addNamed(path, name, importedSource, opts) { | |
| return new _importInjector.default(path).addNamed(name, importedSource, opts); | |
| } | |
| function addNamespace(path, importedSource, opts) { | |
| return new _importInjector.default(path).addNamespace(importedSource, opts); | |
| } | |
| function addSideEffect(path, importedSource, opts) { | |
| return new _importInjector.default(path).addSideEffect(importedSource, opts); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = isModule; | |
| function isModule(path) { | |
| const { | |
| sourceType | |
| } = path.node; | |
| if (sourceType !== "module" && sourceType !== "script") { | |
| throw path.buildCodeFrameError(`Unknown sourceType "${sourceType}", cannot transform.`); | |
| } | |
| return path.node.sourceType === "module"; | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 Sebastian McKenzie <[email protected]> | |
| 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. |
| { | |
| "name": "@babel/helper-module-imports", | |
| "version": "7.0.0", | |
| "description": "Babel helper functions for inserting module loads", | |
| "author": "Logan Smyth <[email protected]>", | |
| "homepage": "https://babeljs.io/", | |
| "license": "MIT", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-module-imports", | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/types": "^7.0.0" | |
| }, | |
| "devDependencies": { | |
| "@babel/core": "^7.0.0" | |
| } | |
| } |
Babel helper functions for inserting module loads
See our website @babel/helper-module-imports for more information.
Using npm:
npm install --save-dev @babel/helper-module-importsor using yarn:
yarn add @babel/helper-module-imports --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.rewriteModuleStatementsAndPrepareHeader = rewriteModuleStatementsAndPrepareHeader; | |
| exports.ensureStatementsHoisted = ensureStatementsHoisted; | |
| exports.wrapInterop = wrapInterop; | |
| exports.buildNamespaceInitStatements = buildNamespaceInitStatements; | |
| Object.defineProperty(exports, "isModule", { | |
| enumerable: true, | |
| get: function () { | |
| return _helperModuleImports().isModule; | |
| } | |
| }); | |
| Object.defineProperty(exports, "hasExports", { | |
| enumerable: true, | |
| get: function () { | |
| return _normalizeAndLoadMetadata.hasExports; | |
| } | |
| }); | |
| Object.defineProperty(exports, "isSideEffectImport", { | |
| enumerable: true, | |
| get: function () { | |
| return _normalizeAndLoadMetadata.isSideEffectImport; | |
| } | |
| }); | |
| function _assert() { | |
| const data = _interopRequireDefault(require("assert")); | |
| _assert = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _template() { | |
| const data = _interopRequireDefault(require("@babel/template")); | |
| _template = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _chunk() { | |
| const data = _interopRequireDefault(require("lodash/chunk")); | |
| _chunk = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _helperModuleImports() { | |
| const data = require("@babel/helper-module-imports"); | |
| _helperModuleImports = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _rewriteThis = _interopRequireDefault(require("./rewrite-this")); | |
| var _rewriteLiveReferences = _interopRequireDefault(require("./rewrite-live-references")); | |
| var _normalizeAndLoadMetadata = _interopRequireWildcard(require("./normalize-and-load-metadata")); | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function rewriteModuleStatementsAndPrepareHeader(path, { | |
| exportName, | |
| strict, | |
| allowTopLevelThis, | |
| strictMode, | |
| loose, | |
| noInterop, | |
| lazy, | |
| esNamespaceOnly | |
| }) { | |
| (0, _assert().default)((0, _helperModuleImports().isModule)(path), "Cannot process module statements in a script"); | |
| path.node.sourceType = "script"; | |
| const meta = (0, _normalizeAndLoadMetadata.default)(path, exportName, { | |
| noInterop, | |
| loose, | |
| lazy, | |
| esNamespaceOnly | |
| }); | |
| if (!allowTopLevelThis) { | |
| (0, _rewriteThis.default)(path); | |
| } | |
| (0, _rewriteLiveReferences.default)(path, meta); | |
| if (strictMode !== false) { | |
| const hasStrict = path.node.directives.some(directive => { | |
| return directive.value.value === "use strict"; | |
| }); | |
| if (!hasStrict) { | |
| path.unshiftContainer("directives", t().directive(t().directiveLiteral("use strict"))); | |
| } | |
| } | |
| const headers = []; | |
| if ((0, _normalizeAndLoadMetadata.hasExports)(meta) && !strict) { | |
| headers.push(buildESModuleHeader(meta, loose)); | |
| } | |
| const nameList = buildExportNameListDeclaration(path, meta); | |
| if (nameList) { | |
| meta.exportNameListName = nameList.name; | |
| headers.push(nameList.statement); | |
| } | |
| headers.push(...buildExportInitializationStatements(path, meta, loose)); | |
| return { | |
| meta, | |
| headers | |
| }; | |
| } | |
| function ensureStatementsHoisted(statements) { | |
| statements.forEach(header => { | |
| header._blockHoist = 3; | |
| }); | |
| } | |
| function wrapInterop(programPath, expr, type) { | |
| if (type === "none") { | |
| return null; | |
| } | |
| let helper; | |
| if (type === "default") { | |
| helper = "interopRequireDefault"; | |
| } else if (type === "namespace") { | |
| helper = "interopRequireWildcard"; | |
| } else { | |
| throw new Error(`Unknown interop: ${type}`); | |
| } | |
| return t().callExpression(programPath.hub.addHelper(helper), [expr]); | |
| } | |
| function buildNamespaceInitStatements(metadata, sourceMetadata, loose = false) { | |
| const statements = []; | |
| let srcNamespace = t().identifier(sourceMetadata.name); | |
| if (sourceMetadata.lazy) srcNamespace = t().callExpression(srcNamespace, []); | |
| for (const localName of sourceMetadata.importsNamespace) { | |
| if (localName === sourceMetadata.name) continue; | |
| statements.push(_template().default.statement`var NAME = SOURCE;`({ | |
| NAME: localName, | |
| SOURCE: t().cloneNode(srcNamespace) | |
| })); | |
| } | |
| if (loose) { | |
| statements.push(...buildReexportsFromMeta(metadata, sourceMetadata, loose)); | |
| } | |
| for (const exportName of sourceMetadata.reexportNamespace) { | |
| statements.push((sourceMetadata.lazy ? _template().default.statement` | |
| Object.defineProperty(EXPORTS, "NAME", { | |
| enumerable: true, | |
| get: function() { | |
| return NAMESPACE; | |
| } | |
| }); | |
| ` : _template().default.statement`EXPORTS.NAME = NAMESPACE;`)({ | |
| EXPORTS: metadata.exportName, | |
| NAME: exportName, | |
| NAMESPACE: t().cloneNode(srcNamespace) | |
| })); | |
| } | |
| if (sourceMetadata.reexportAll) { | |
| const statement = buildNamespaceReexport(metadata, t().cloneNode(srcNamespace), loose); | |
| statement.loc = sourceMetadata.reexportAll.loc; | |
| statements.push(statement); | |
| } | |
| return statements; | |
| } | |
| const getTemplateForReexport = loose => { | |
| return loose ? _template().default.statement`EXPORTS.EXPORT_NAME = NAMESPACE.IMPORT_NAME;` : _template().default` | |
| Object.defineProperty(EXPORTS, "EXPORT_NAME", { | |
| enumerable: true, | |
| get: function() { | |
| return NAMESPACE.IMPORT_NAME; | |
| }, | |
| }); | |
| `; | |
| }; | |
| const buildReexportsFromMeta = (meta, metadata, loose) => { | |
| const namespace = metadata.lazy ? t().callExpression(t().identifier(metadata.name), []) : t().identifier(metadata.name); | |
| const templateForCurrentMode = getTemplateForReexport(loose); | |
| return Array.from(metadata.reexports, ([exportName, importName]) => templateForCurrentMode({ | |
| EXPORTS: meta.exportName, | |
| EXPORT_NAME: exportName, | |
| NAMESPACE: t().cloneNode(namespace), | |
| IMPORT_NAME: importName | |
| })); | |
| }; | |
| function buildESModuleHeader(metadata, enumerable = false) { | |
| return (enumerable ? _template().default.statement` | |
| EXPORTS.__esModule = true; | |
| ` : _template().default.statement` | |
| Object.defineProperty(EXPORTS, "__esModule", { | |
| value: true, | |
| }); | |
| `)({ | |
| EXPORTS: metadata.exportName | |
| }); | |
| } | |
| function buildNamespaceReexport(metadata, namespace, loose) { | |
| return (loose ? _template().default.statement` | |
| Object.keys(NAMESPACE).forEach(function(key) { | |
| if (key === "default" || key === "__esModule") return; | |
| VERIFY_NAME_LIST; | |
| EXPORTS[key] = NAMESPACE[key]; | |
| }); | |
| ` : _template().default.statement` | |
| Object.keys(NAMESPACE).forEach(function(key) { | |
| if (key === "default" || key === "__esModule") return; | |
| VERIFY_NAME_LIST; | |
| Object.defineProperty(EXPORTS, key, { | |
| enumerable: true, | |
| get: function() { | |
| return NAMESPACE[key]; | |
| }, | |
| }); | |
| }); | |
| `)({ | |
| NAMESPACE: namespace, | |
| EXPORTS: metadata.exportName, | |
| VERIFY_NAME_LIST: metadata.exportNameListName ? _template().default` | |
| if (Object.prototype.hasOwnProperty.call(EXPORTS_LIST, key)) return; | |
| `({ | |
| EXPORTS_LIST: metadata.exportNameListName | |
| }) : null | |
| }); | |
| } | |
| function buildExportNameListDeclaration(programPath, metadata) { | |
| const exportedVars = Object.create(null); | |
| for (const data of metadata.local.values()) { | |
| for (const name of data.names) { | |
| exportedVars[name] = true; | |
| } | |
| } | |
| let hasReexport = false; | |
| for (const data of metadata.source.values()) { | |
| for (const exportName of data.reexports.keys()) { | |
| exportedVars[exportName] = true; | |
| } | |
| for (const exportName of data.reexportNamespace) { | |
| exportedVars[exportName] = true; | |
| } | |
| hasReexport = hasReexport || data.reexportAll; | |
| } | |
| if (!hasReexport || Object.keys(exportedVars).length === 0) return null; | |
| const name = programPath.scope.generateUidIdentifier("exportNames"); | |
| delete exportedVars.default; | |
| return { | |
| name: name.name, | |
| statement: t().variableDeclaration("var", [t().variableDeclarator(name, t().valueToNode(exportedVars))]) | |
| }; | |
| } | |
| function buildExportInitializationStatements(programPath, metadata, loose = false) { | |
| const initStatements = []; | |
| const exportNames = []; | |
| for (const [localName, data] of metadata.local) { | |
| if (data.kind === "import") {} else if (data.kind === "hoisted") { | |
| initStatements.push(buildInitStatement(metadata, data.names, t().identifier(localName))); | |
| } else { | |
| exportNames.push(...data.names); | |
| } | |
| } | |
| for (const data of metadata.source.values()) { | |
| if (!loose) { | |
| initStatements.push(...buildReexportsFromMeta(metadata, data, loose)); | |
| } | |
| for (const exportName of data.reexportNamespace) { | |
| exportNames.push(exportName); | |
| } | |
| } | |
| initStatements.push(...(0, _chunk().default)(exportNames, 100).map(members => { | |
| return buildInitStatement(metadata, members, programPath.scope.buildUndefinedNode()); | |
| })); | |
| return initStatements; | |
| } | |
| function buildInitStatement(metadata, exportNames, initExpr) { | |
| return t().expressionStatement(exportNames.reduce((acc, exportName) => _template().default.expression`EXPORTS.NAME = VALUE`({ | |
| EXPORTS: metadata.exportName, | |
| NAME: exportName, | |
| VALUE: acc | |
| }), initExpr)); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.hasExports = hasExports; | |
| exports.isSideEffectImport = isSideEffectImport; | |
| exports.default = normalizeModuleAndLoadMetadata; | |
| function _path() { | |
| const data = require("path"); | |
| _path = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _helperSplitExportDeclaration() { | |
| const data = _interopRequireDefault(require("@babel/helper-split-export-declaration")); | |
| _helperSplitExportDeclaration = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function hasExports(metadata) { | |
| return metadata.hasExports; | |
| } | |
| function isSideEffectImport(source) { | |
| return source.imports.size === 0 && source.importsNamespace.size === 0 && source.reexports.size === 0 && source.reexportNamespace.size === 0 && !source.reexportAll; | |
| } | |
| function normalizeModuleAndLoadMetadata(programPath, exportName, { | |
| noInterop = false, | |
| loose = false, | |
| lazy = false, | |
| esNamespaceOnly = false | |
| } = {}) { | |
| if (!exportName) { | |
| exportName = programPath.scope.generateUidIdentifier("exports").name; | |
| } | |
| nameAnonymousExports(programPath); | |
| const { | |
| local, | |
| source, | |
| hasExports | |
| } = getModuleMetadata(programPath, { | |
| loose, | |
| lazy | |
| }); | |
| removeModuleDeclarations(programPath); | |
| for (const [, metadata] of source) { | |
| if (metadata.importsNamespace.size > 0) { | |
| metadata.name = metadata.importsNamespace.values().next().value; | |
| } | |
| if (noInterop) metadata.interop = "none";else if (esNamespaceOnly) { | |
| if (metadata.interop === "namespace") { | |
| metadata.interop = "default"; | |
| } | |
| } | |
| } | |
| return { | |
| exportName, | |
| exportNameListName: null, | |
| hasExports, | |
| local, | |
| source | |
| }; | |
| } | |
| function getModuleMetadata(programPath, { | |
| loose, | |
| lazy | |
| }) { | |
| const localData = getLocalExportMetadata(programPath, loose); | |
| const sourceData = new Map(); | |
| const getData = sourceNode => { | |
| const source = sourceNode.value; | |
| let data = sourceData.get(source); | |
| if (!data) { | |
| data = { | |
| name: programPath.scope.generateUidIdentifier((0, _path().basename)(source, (0, _path().extname)(source))).name, | |
| interop: "none", | |
| loc: null, | |
| imports: new Map(), | |
| importsNamespace: new Set(), | |
| reexports: new Map(), | |
| reexportNamespace: new Set(), | |
| reexportAll: null, | |
| lazy: false | |
| }; | |
| sourceData.set(source, data); | |
| } | |
| return data; | |
| }; | |
| let hasExports = false; | |
| programPath.get("body").forEach(child => { | |
| if (child.isImportDeclaration()) { | |
| const data = getData(child.node.source); | |
| if (!data.loc) data.loc = child.node.loc; | |
| child.get("specifiers").forEach(spec => { | |
| if (spec.isImportDefaultSpecifier()) { | |
| const localName = spec.get("local").node.name; | |
| data.imports.set(localName, "default"); | |
| const reexport = localData.get(localName); | |
| if (reexport) { | |
| localData.delete(localName); | |
| reexport.names.forEach(name => { | |
| data.reexports.set(name, "default"); | |
| }); | |
| } | |
| } else if (spec.isImportNamespaceSpecifier()) { | |
| const localName = spec.get("local").node.name; | |
| data.importsNamespace.add(localName); | |
| const reexport = localData.get(localName); | |
| if (reexport) { | |
| localData.delete(localName); | |
| reexport.names.forEach(name => { | |
| data.reexportNamespace.add(name); | |
| }); | |
| } | |
| } else if (spec.isImportSpecifier()) { | |
| const importName = spec.get("imported").node.name; | |
| const localName = spec.get("local").node.name; | |
| data.imports.set(localName, importName); | |
| const reexport = localData.get(localName); | |
| if (reexport) { | |
| localData.delete(localName); | |
| reexport.names.forEach(name => { | |
| data.reexports.set(name, importName); | |
| }); | |
| } | |
| } | |
| }); | |
| } else if (child.isExportAllDeclaration()) { | |
| hasExports = true; | |
| const data = getData(child.node.source); | |
| if (!data.loc) data.loc = child.node.loc; | |
| data.reexportAll = { | |
| loc: child.node.loc | |
| }; | |
| } else if (child.isExportNamedDeclaration() && child.node.source) { | |
| hasExports = true; | |
| const data = getData(child.node.source); | |
| if (!data.loc) data.loc = child.node.loc; | |
| child.get("specifiers").forEach(spec => { | |
| if (!spec.isExportSpecifier()) { | |
| throw spec.buildCodeFrameError("Unexpected export specifier type"); | |
| } | |
| const importName = spec.get("local").node.name; | |
| const exportName = spec.get("exported").node.name; | |
| data.reexports.set(exportName, importName); | |
| if (exportName === "__esModule") { | |
| throw exportName.buildCodeFrameError('Illegal export "__esModule".'); | |
| } | |
| }); | |
| } else if (child.isExportNamedDeclaration() || child.isExportDefaultDeclaration()) { | |
| hasExports = true; | |
| } | |
| }); | |
| for (const metadata of sourceData.values()) { | |
| let needsDefault = false; | |
| let needsNamed = false; | |
| if (metadata.importsNamespace.size > 0) { | |
| needsDefault = true; | |
| needsNamed = true; | |
| } | |
| if (metadata.reexportAll) { | |
| needsNamed = true; | |
| } | |
| for (const importName of metadata.imports.values()) { | |
| if (importName === "default") needsDefault = true;else needsNamed = true; | |
| } | |
| for (const importName of metadata.reexports.values()) { | |
| if (importName === "default") needsDefault = true;else needsNamed = true; | |
| } | |
| if (needsDefault && needsNamed) { | |
| metadata.interop = "namespace"; | |
| } else if (needsDefault) { | |
| metadata.interop = "default"; | |
| } | |
| } | |
| for (const [source, metadata] of sourceData) { | |
| if (lazy !== false && !(isSideEffectImport(metadata) || metadata.reexportAll)) { | |
| if (lazy === true) { | |
| metadata.lazy = !/\./.test(source); | |
| } else if (Array.isArray(lazy)) { | |
| metadata.lazy = lazy.indexOf(source); | |
| } else if (typeof lazy === "function") { | |
| metadata.lazy = lazy(source); | |
| } else { | |
| throw new Error(`.lazy must be a boolean, string array, or function`); | |
| } | |
| } | |
| } | |
| return { | |
| hasExports, | |
| local: localData, | |
| source: sourceData | |
| }; | |
| } | |
| function getLocalExportMetadata(programPath, loose) { | |
| const bindingKindLookup = new Map(); | |
| programPath.get("body").forEach(child => { | |
| let kind; | |
| if (child.isImportDeclaration()) { | |
| kind = "import"; | |
| } else { | |
| if (child.isExportDefaultDeclaration()) child = child.get("declaration"); | |
| if (child.isExportNamedDeclaration()) { | |
| if (child.node.declaration) { | |
| child = child.get("declaration"); | |
| } else if (loose && child.node.source && child.get("source").isStringLiteral()) { | |
| child.node.specifiers.forEach(specifier => { | |
| bindingKindLookup.set(specifier.local.name, "block"); | |
| }); | |
| return; | |
| } | |
| } | |
| if (child.isFunctionDeclaration()) { | |
| kind = "hoisted"; | |
| } else if (child.isClassDeclaration()) { | |
| kind = "block"; | |
| } else if (child.isVariableDeclaration({ | |
| kind: "var" | |
| })) { | |
| kind = "var"; | |
| } else if (child.isVariableDeclaration()) { | |
| kind = "block"; | |
| } else { | |
| return; | |
| } | |
| } | |
| Object.keys(child.getOuterBindingIdentifiers()).forEach(name => { | |
| bindingKindLookup.set(name, kind); | |
| }); | |
| }); | |
| const localMetadata = new Map(); | |
| const getLocalMetadata = idPath => { | |
| const localName = idPath.node.name; | |
| let metadata = localMetadata.get(localName); | |
| if (!metadata) { | |
| const kind = bindingKindLookup.get(localName); | |
| if (kind === undefined) { | |
| throw idPath.buildCodeFrameError(`Exporting local "${localName}", which is not declared.`); | |
| } | |
| metadata = { | |
| names: [], | |
| kind | |
| }; | |
| localMetadata.set(localName, metadata); | |
| } | |
| return metadata; | |
| }; | |
| programPath.get("body").forEach(child => { | |
| if (child.isExportNamedDeclaration() && (loose || !child.node.source)) { | |
| if (child.node.declaration) { | |
| const declaration = child.get("declaration"); | |
| const ids = declaration.getOuterBindingIdentifierPaths(); | |
| Object.keys(ids).forEach(name => { | |
| if (name === "__esModule") { | |
| throw declaration.buildCodeFrameError('Illegal export "__esModule".'); | |
| } | |
| getLocalMetadata(ids[name]).names.push(name); | |
| }); | |
| } else { | |
| child.get("specifiers").forEach(spec => { | |
| const local = spec.get("local"); | |
| const exported = spec.get("exported"); | |
| if (exported.node.name === "__esModule") { | |
| throw exported.buildCodeFrameError('Illegal export "__esModule".'); | |
| } | |
| getLocalMetadata(local).names.push(exported.node.name); | |
| }); | |
| } | |
| } else if (child.isExportDefaultDeclaration()) { | |
| const declaration = child.get("declaration"); | |
| if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) { | |
| getLocalMetadata(declaration.get("id")).names.push("default"); | |
| } else { | |
| throw declaration.buildCodeFrameError("Unexpected default expression export."); | |
| } | |
| } | |
| }); | |
| return localMetadata; | |
| } | |
| function nameAnonymousExports(programPath) { | |
| programPath.get("body").forEach(child => { | |
| if (!child.isExportDefaultDeclaration()) return; | |
| (0, _helperSplitExportDeclaration().default)(child); | |
| }); | |
| } | |
| function removeModuleDeclarations(programPath) { | |
| programPath.get("body").forEach(child => { | |
| if (child.isImportDeclaration()) { | |
| child.remove(); | |
| } else if (child.isExportNamedDeclaration()) { | |
| if (child.node.declaration) { | |
| child.node.declaration._blockHoist = child.node._blockHoist; | |
| child.replaceWith(child.node.declaration); | |
| } else { | |
| child.remove(); | |
| } | |
| } else if (child.isExportDefaultDeclaration()) { | |
| const declaration = child.get("declaration"); | |
| if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) { | |
| declaration._blockHoist = child.node._blockHoist; | |
| child.replaceWith(declaration); | |
| } else { | |
| throw declaration.buildCodeFrameError("Unexpected default expression export."); | |
| } | |
| } else if (child.isExportAllDeclaration()) { | |
| child.remove(); | |
| } | |
| }); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = rewriteLiveReferences; | |
| function _assert() { | |
| const data = _interopRequireDefault(require("assert")); | |
| _assert = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _template() { | |
| const data = _interopRequireDefault(require("@babel/template")); | |
| _template = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _helperSimpleAccess() { | |
| const data = _interopRequireDefault(require("@babel/helper-simple-access")); | |
| _helperSimpleAccess = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function rewriteLiveReferences(programPath, metadata) { | |
| const imported = new Map(); | |
| const exported = new Map(); | |
| const requeueInParent = path => { | |
| programPath.requeue(path); | |
| }; | |
| for (const [source, data] of metadata.source) { | |
| for (const [localName, importName] of data.imports) { | |
| imported.set(localName, [source, importName, null]); | |
| } | |
| for (const localName of data.importsNamespace) { | |
| imported.set(localName, [source, null, localName]); | |
| } | |
| } | |
| for (const [local, data] of metadata.local) { | |
| let exportMeta = exported.get(local); | |
| if (!exportMeta) { | |
| exportMeta = []; | |
| exported.set(local, exportMeta); | |
| } | |
| exportMeta.push(...data.names); | |
| } | |
| programPath.traverse(rewriteBindingInitVisitor, { | |
| metadata, | |
| requeueInParent, | |
| scope: programPath.scope, | |
| exported | |
| }); | |
| (0, _helperSimpleAccess().default)(programPath, new Set([...Array.from(imported.keys()), ...Array.from(exported.keys())])); | |
| programPath.traverse(rewriteReferencesVisitor, { | |
| seen: new WeakSet(), | |
| metadata, | |
| requeueInParent, | |
| scope: programPath.scope, | |
| imported, | |
| exported, | |
| buildImportReference: ([source, importName, localName], identNode) => { | |
| const meta = metadata.source.get(source); | |
| if (localName) { | |
| if (meta.lazy) identNode = t().callExpression(identNode, []); | |
| return identNode; | |
| } | |
| let namespace = t().identifier(meta.name); | |
| if (meta.lazy) namespace = t().callExpression(namespace, []); | |
| return t().memberExpression(namespace, t().identifier(importName)); | |
| } | |
| }); | |
| } | |
| const rewriteBindingInitVisitor = { | |
| ClassProperty(path) { | |
| path.skip(); | |
| }, | |
| Function(path) { | |
| path.skip(); | |
| }, | |
| ClassDeclaration(path) { | |
| const { | |
| requeueInParent, | |
| exported, | |
| metadata | |
| } = this; | |
| const { | |
| id | |
| } = path.node; | |
| if (!id) throw new Error("Expected class to have a name"); | |
| const localName = id.name; | |
| const exportNames = exported.get(localName) || []; | |
| if (exportNames.length > 0) { | |
| const statement = t().expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, t().identifier(localName))); | |
| statement._blockHoist = path.node._blockHoist; | |
| requeueInParent(path.insertAfter(statement)[0]); | |
| } | |
| }, | |
| VariableDeclaration(path) { | |
| const { | |
| requeueInParent, | |
| exported, | |
| metadata | |
| } = this; | |
| Object.keys(path.getOuterBindingIdentifiers()).forEach(localName => { | |
| const exportNames = exported.get(localName) || []; | |
| if (exportNames.length > 0) { | |
| const statement = t().expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, t().identifier(localName))); | |
| statement._blockHoist = path.node._blockHoist; | |
| requeueInParent(path.insertAfter(statement)[0]); | |
| } | |
| }); | |
| } | |
| }; | |
| const buildBindingExportAssignmentExpression = (metadata, exportNames, localExpr) => { | |
| return (exportNames || []).reduce((expr, exportName) => { | |
| return t().assignmentExpression("=", t().memberExpression(t().identifier(metadata.exportName), t().identifier(exportName)), expr); | |
| }, localExpr); | |
| }; | |
| const buildImportThrow = localName => { | |
| return _template().default.expression.ast` | |
| (function() { | |
| throw new Error('"' + '${localName}' + '" is read-only.'); | |
| })() | |
| `; | |
| }; | |
| const rewriteReferencesVisitor = { | |
| ReferencedIdentifier(path) { | |
| const { | |
| seen, | |
| buildImportReference, | |
| scope, | |
| imported, | |
| requeueInParent | |
| } = this; | |
| if (seen.has(path.node)) return; | |
| seen.add(path.node); | |
| const localName = path.node.name; | |
| const localBinding = path.scope.getBinding(localName); | |
| const rootBinding = scope.getBinding(localName); | |
| if (rootBinding !== localBinding) return; | |
| const importData = imported.get(localName); | |
| if (importData) { | |
| const ref = buildImportReference(importData, path.node); | |
| ref.loc = path.node.loc; | |
| if (path.parentPath.isCallExpression({ | |
| callee: path.node | |
| }) && t().isMemberExpression(ref)) { | |
| path.replaceWith(t().sequenceExpression([t().numericLiteral(0), ref])); | |
| } else if (path.isJSXIdentifier() && t().isMemberExpression(ref)) { | |
| const { | |
| object, | |
| property | |
| } = ref; | |
| path.replaceWith(t().JSXMemberExpression(t().JSXIdentifier(object.name), t().JSXIdentifier(property.name))); | |
| } else { | |
| path.replaceWith(ref); | |
| } | |
| requeueInParent(path); | |
| path.skip(); | |
| } | |
| }, | |
| AssignmentExpression: { | |
| exit(path) { | |
| const { | |
| scope, | |
| seen, | |
| imported, | |
| exported, | |
| requeueInParent, | |
| buildImportReference | |
| } = this; | |
| if (seen.has(path.node)) return; | |
| seen.add(path.node); | |
| const left = path.get("left"); | |
| if (left.isIdentifier()) { | |
| const localName = left.node.name; | |
| if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { | |
| return; | |
| } | |
| const exportedNames = exported.get(localName) || []; | |
| const importData = imported.get(localName); | |
| if (exportedNames.length > 0 || importData) { | |
| (0, _assert().default)(path.node.operator === "=", "Path was not simplified"); | |
| const assignment = path.node; | |
| if (importData) { | |
| assignment.left = buildImportReference(importData, assignment.left); | |
| assignment.right = t().sequenceExpression([assignment.right, buildImportThrow(localName)]); | |
| } | |
| path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, assignment)); | |
| requeueInParent(path); | |
| } | |
| } else if (left.isMemberExpression()) {} else { | |
| const ids = left.getOuterBindingIdentifiers(); | |
| const id = Object.keys(ids).filter(localName => imported.has(localName)).pop(); | |
| if (id) { | |
| path.node.right = t().sequenceExpression([path.node.right, buildImportThrow(id)]); | |
| } | |
| const items = []; | |
| Object.keys(ids).forEach(localName => { | |
| if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { | |
| return; | |
| } | |
| const exportedNames = exported.get(localName) || []; | |
| if (exportedNames.length > 0) { | |
| items.push(buildBindingExportAssignmentExpression(this.metadata, exportedNames, t().identifier(localName))); | |
| } | |
| }); | |
| if (items.length > 0) { | |
| let node = t().sequenceExpression(items); | |
| if (path.parentPath.isExpressionStatement()) { | |
| node = t().expressionStatement(node); | |
| node._blockHoist = path.parentPath.node._blockHoist; | |
| } | |
| const statement = path.insertAfter(node)[0]; | |
| requeueInParent(statement); | |
| } | |
| } | |
| } | |
| } | |
| }; |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = rewriteThis; | |
| function rewriteThis(programPath) { | |
| programPath.traverse(rewriteThisVisitor); | |
| } | |
| const rewriteThisVisitor = { | |
| ThisExpression(path) { | |
| path.replaceWith(path.scope.buildUndefinedNode()); | |
| }, | |
| Function(path) { | |
| if (!path.isArrowFunctionExpression()) path.skip(); | |
| }, | |
| ClassProperty(path) { | |
| path.skip(); | |
| } | |
| }; |
| MIT License | |
| Copyright (c) 2014-2018 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. |
| { | |
| "name": "@babel/helper-module-transforms", | |
| "version": "7.2.2", | |
| "description": "Babel helper functions for implementing ES6 module transformations", | |
| "author": "Logan Smyth <[email protected]>", | |
| "homepage": "https://babeljs.io/", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-module-transforms", | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/helper-module-imports": "^7.0.0", | |
| "@babel/helper-simple-access": "^7.1.0", | |
| "@babel/helper-split-export-declaration": "^7.0.0", | |
| "@babel/template": "^7.2.2", | |
| "@babel/types": "^7.2.2", | |
| "lodash": "^4.17.10" | |
| } | |
| } |
Babel helper functions for implementing ES6 module transformations
See our website @babel/helper-module-transforms for more information.
Using npm:
npm install --save-dev @babel/helper-module-transformsor using yarn:
yarn add @babel/helper-module-transforms --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _default(callee, thisNode, args) { | |
| if (args.length === 1 && t().isSpreadElement(args[0]) && t().isIdentifier(args[0].argument, { | |
| name: "arguments" | |
| })) { | |
| return t().callExpression(t().memberExpression(callee, t().identifier("apply")), [thisNode, args[0].argument]); | |
| } else { | |
| return t().callExpression(t().memberExpression(callee, t().identifier("call")), [thisNode, ...args]); | |
| } | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 Sebastian McKenzie <[email protected]> | |
| 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. |
| { | |
| "name": "@babel/helper-optimise-call-expression", | |
| "version": "7.0.0", | |
| "description": "Helper function to optimise call expression", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-optimise-call-expression", | |
| "license": "MIT", | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
Helper function to optimise call expression
See our website @babel/helper-optimise-call-expression for more information.
Using npm:
npm install --save-dev @babel/helper-optimise-call-expressionor using yarn:
yarn add @babel/helper-optimise-call-expression --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.declare = declare; | |
| function declare(builder) { | |
| return (api, options, dirname) => { | |
| if (!api.assertVersion) { | |
| api = Object.assign(copyApiObject(api), { | |
| assertVersion(range) { | |
| throwVersionError(range, api.version); | |
| } | |
| }); | |
| } | |
| return builder(api, options || {}, dirname); | |
| }; | |
| } | |
| function copyApiObject(api) { | |
| let proto = null; | |
| if (typeof api.version === "string" && /^7\./.test(api.version)) { | |
| proto = Object.getPrototypeOf(api); | |
| if (proto && (!has(proto, "version") || !has(proto, "transform") || !has(proto, "template") || !has(proto, "types"))) { | |
| proto = null; | |
| } | |
| } | |
| return Object.assign({}, proto, api); | |
| } | |
| function has(obj, key) { | |
| return Object.prototype.hasOwnProperty.call(obj, key); | |
| } | |
| function throwVersionError(range, version) { | |
| if (typeof range === "number") { | |
| if (!Number.isInteger(range)) { | |
| throw new Error("Expected string or integer value."); | |
| } | |
| range = `^${range}.0.0-0`; | |
| } | |
| if (typeof range !== "string") { | |
| throw new Error("Expected string or integer value."); | |
| } | |
| const limit = Error.stackTraceLimit; | |
| if (typeof limit === "number" && limit < 25) { | |
| Error.stackTraceLimit = 25; | |
| } | |
| let err; | |
| if (version.slice(0, 2) === "7.") { | |
| err = new Error(`Requires Babel "^7.0.0-beta.41", but was loaded with "${version}". ` + `You'll need to update your @babel/core version.`); | |
| } else { | |
| err = new Error(`Requires Babel "${range}", but was loaded with "${version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`); | |
| } | |
| if (typeof limit === "number") { | |
| Error.stackTraceLimit = limit; | |
| } | |
| throw Object.assign(err, { | |
| code: "BABEL_VERSION_UNSUPPORTED", | |
| version, | |
| range | |
| }); | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 Sebastian McKenzie <[email protected]> | |
| 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. |
| { | |
| "name": "@babel/helper-plugin-utils", | |
| "version": "7.0.0", | |
| "description": "General utilities for plugins to use", | |
| "author": "Logan Smyth <[email protected]>", | |
| "homepage": "https://babeljs.io/", | |
| "license": "MIT", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-plugin-utils", | |
| "main": "lib/index.js" | |
| } |
General utilities for plugins to use
See our website @babel/helper-plugin-utils for more information.
Using npm:
npm install --save-dev @babel/helper-plugin-utilsor using yarn:
yarn add @babel/helper-plugin-utils --dev| export function declare(builder) { | |
| return (api, options, dirname) => { | |
| if (!api.assertVersion) { | |
| // Inject a custom version of 'assertVersion' for Babel 6 and early | |
| // versions of Babel 7's beta that didn't have it. | |
| api = Object.assign(copyApiObject(api), { | |
| assertVersion(range) { | |
| throwVersionError(range, api.version); | |
| }, | |
| }); | |
| } | |
| return builder(api, options || {}, dirname); | |
| }; | |
| } | |
| function copyApiObject(api) { | |
| // Babel >= 7 <= beta.41 passed the API as a new object that had | |
| // babel/core as the prototype. While slightly faster, it also | |
| // means that the Object.assign copy below fails. Rather than | |
| // keep complexity, the Babel 6 behavior has been reverted and this | |
| // normalizes all that for Babel 7. | |
| let proto = null; | |
| if (typeof api.version === "string" && /^7\./.test(api.version)) { | |
| proto = Object.getPrototypeOf(api); | |
| if ( | |
| proto && | |
| (!has(proto, "version") || | |
| !has(proto, "transform") || | |
| !has(proto, "template") || | |
| !has(proto, "types")) | |
| ) { | |
| proto = null; | |
| } | |
| } | |
| return { | |
| ...proto, | |
| ...api, | |
| }; | |
| } | |
| function has(obj, key) { | |
| return Object.prototype.hasOwnProperty.call(obj, key); | |
| } | |
| function throwVersionError(range, version) { | |
| if (typeof range === "number") { | |
| if (!Number.isInteger(range)) { | |
| throw new Error("Expected string or integer value."); | |
| } | |
| range = `^${range}.0.0-0`; | |
| } | |
| if (typeof range !== "string") { | |
| throw new Error("Expected string or integer value."); | |
| } | |
| const limit = Error.stackTraceLimit; | |
| if (typeof limit === "number" && limit < 25) { | |
| // Bump up the limit if needed so that users are more likely | |
| // to be able to see what is calling Babel. | |
| Error.stackTraceLimit = 25; | |
| } | |
| let err; | |
| if (version.slice(0, 2) === "7.") { | |
| err = new Error( | |
| `Requires Babel "^7.0.0-beta.41", but was loaded with "${version}". ` + | |
| `You'll need to update your @babel/core version.`, | |
| ); | |
| } else { | |
| err = new Error( | |
| `Requires Babel "${range}", but was loaded with "${version}". ` + | |
| `If you are sure you have a compatible version of @babel/core, ` + | |
| `it is likely that something in your build process is loading the ` + | |
| `wrong version. Inspect the stack trace of this error to look for ` + | |
| `the first entry that doesn't mention "@babel/core" or "babel-core" ` + | |
| `to see what is calling Babel.`, | |
| ); | |
| } | |
| if (typeof limit === "number") { | |
| Error.stackTraceLimit = limit; | |
| } | |
| throw Object.assign( | |
| err, | |
| ({ | |
| code: "BABEL_VERSION_UNSUPPORTED", | |
| version, | |
| range, | |
| }: any), | |
| ); | |
| } |
| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.is = is; | |
| exports.pullFlag = pullFlag; | |
| function _pull() { | |
| const data = _interopRequireDefault(require("lodash/pull")); | |
| _pull = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function is(node, flag) { | |
| return node.type === "RegExpLiteral" && node.flags.indexOf(flag) >= 0; | |
| } | |
| function pullFlag(node, flag) { | |
| const flags = node.flags.split(""); | |
| if (node.flags.indexOf(flag) < 0) return; | |
| (0, _pull().default)(flags, flag); | |
| node.flags = flags.join(""); | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 Sebastian McKenzie <[email protected]> | |
| 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. |
| { | |
| "name": "@babel/helper-regex", | |
| "version": "7.0.0", | |
| "description": "Helper function to check for literal RegEx", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-regex", | |
| "license": "MIT", | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "lodash": "^4.17.10" | |
| } | |
| } |
Helper function to check for literal RegEx
See our website @babel/helper-regex for more information.
Using npm:
npm install --save-dev @babel/helper-regexor using yarn:
yarn add @babel/helper-regex --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = _default; | |
| function _helperWrapFunction() { | |
| const data = _interopRequireDefault(require("@babel/helper-wrap-function")); | |
| _helperWrapFunction = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _helperAnnotateAsPure() { | |
| const data = _interopRequireDefault(require("@babel/helper-annotate-as-pure")); | |
| _helperAnnotateAsPure = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const awaitVisitor = { | |
| Function(path) { | |
| path.skip(); | |
| }, | |
| AwaitExpression(path, { | |
| wrapAwait | |
| }) { | |
| const argument = path.get("argument"); | |
| if (path.parentPath.isYieldExpression()) { | |
| path.replaceWith(argument.node); | |
| return; | |
| } | |
| path.replaceWith(t().yieldExpression(wrapAwait ? t().callExpression(t().cloneNode(wrapAwait), [argument.node]) : argument.node)); | |
| } | |
| }; | |
| function _default(path, helpers) { | |
| path.traverse(awaitVisitor, { | |
| wrapAwait: helpers.wrapAwait | |
| }); | |
| const isIIFE = checkIsIIFE(path); | |
| path.node.async = false; | |
| path.node.generator = true; | |
| (0, _helperWrapFunction().default)(path, t().cloneNode(helpers.wrapAsync)); | |
| const isProperty = path.isObjectMethod() || path.isClassMethod() || path.parentPath.isObjectProperty() || path.parentPath.isClassProperty(); | |
| if (!isProperty && !isIIFE && path.isExpression()) { | |
| (0, _helperAnnotateAsPure().default)(path); | |
| } | |
| function checkIsIIFE(path) { | |
| if (path.parentPath.isCallExpression({ | |
| callee: path.node | |
| })) { | |
| return true; | |
| } | |
| const { | |
| parentPath | |
| } = path; | |
| if (parentPath.isMemberExpression() && t().isIdentifier(parentPath.node.property, { | |
| name: "bind" | |
| })) { | |
| const { | |
| parentPath: bindCall | |
| } = parentPath; | |
| return bindCall.isCallExpression() && bindCall.node.arguments.length === 1 && t().isThisExpression(bindCall.node.arguments[0]) && bindCall.parentPath.isCallExpression({ | |
| callee: bindCall.node | |
| }); | |
| } | |
| return false; | |
| } | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 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. |
| { | |
| "name": "@babel/helper-remap-async-to-generator", | |
| "version": "7.1.0", | |
| "description": "Helper function to remap async functions to generators", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-remap-async-to-generator", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/helper-annotate-as-pure": "^7.0.0", | |
| "@babel/helper-wrap-function": "^7.1.0", | |
| "@babel/template": "^7.1.0", | |
| "@babel/traverse": "^7.1.0", | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
Helper function to remap async functions to generators
See our website @babel/helper-remap-async-to-generator for more information.
Using npm:
npm install --save-dev @babel/helper-remap-async-to-generatoror using yarn:
yarn add @babel/helper-remap-async-to-generator --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = exports.environmentVisitor = void 0; | |
| function _traverse() { | |
| const data = _interopRequireDefault(require("@babel/traverse")); | |
| _traverse = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _helperMemberExpressionToFunctions() { | |
| const data = _interopRequireDefault(require("@babel/helper-member-expression-to-functions")); | |
| _helperMemberExpressionToFunctions = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _helperOptimiseCallExpression() { | |
| const data = _interopRequireDefault(require("@babel/helper-optimise-call-expression")); | |
| _helperOptimiseCallExpression = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| function getPrototypeOfExpression(objectRef, isStatic, file) { | |
| objectRef = t().cloneNode(objectRef); | |
| const targetRef = isStatic ? objectRef : t().memberExpression(objectRef, t().identifier("prototype")); | |
| return t().callExpression(file.addHelper("getPrototypeOf"), [targetRef]); | |
| } | |
| function skipAllButComputedKey(path) { | |
| if (!path.node.computed) { | |
| path.skip(); | |
| return; | |
| } | |
| const keys = t().VISITOR_KEYS[path.type]; | |
| for (const key of keys) { | |
| if (key !== "key") path.skipKey(key); | |
| } | |
| } | |
| const environmentVisitor = { | |
| TypeAnnotation(path) { | |
| path.skip(); | |
| }, | |
| Function(path) { | |
| if (path.isMethod()) return; | |
| if (path.isArrowFunctionExpression()) return; | |
| path.skip(); | |
| }, | |
| "Method|ClassProperty|ClassPrivateProperty"(path) { | |
| skipAllButComputedKey(path); | |
| } | |
| }; | |
| exports.environmentVisitor = environmentVisitor; | |
| const visitor = _traverse().default.visitors.merge([environmentVisitor, { | |
| Super(path, state) { | |
| const { | |
| node, | |
| parentPath | |
| } = path; | |
| if (!parentPath.isMemberExpression({ | |
| object: node | |
| })) return; | |
| state.handle(parentPath); | |
| } | |
| }]); | |
| const specHandlers = { | |
| memoise(superMember, count) { | |
| const { | |
| scope, | |
| node | |
| } = superMember; | |
| const { | |
| computed, | |
| property | |
| } = node; | |
| if (!computed) { | |
| return; | |
| } | |
| const memo = scope.maybeGenerateMemoised(property); | |
| if (!memo) { | |
| return; | |
| } | |
| this.memoiser.set(property, memo, count); | |
| }, | |
| prop(superMember) { | |
| const { | |
| computed, | |
| property | |
| } = superMember.node; | |
| if (this.memoiser.has(property)) { | |
| return t().cloneNode(this.memoiser.get(property)); | |
| } | |
| if (computed) { | |
| return t().cloneNode(property); | |
| } | |
| return t().stringLiteral(property.name); | |
| }, | |
| get(superMember) { | |
| return t().callExpression(this.file.addHelper("get"), [getPrototypeOfExpression(this.getObjectRef(), this.isStatic, this.file), this.prop(superMember), t().thisExpression()]); | |
| }, | |
| set(superMember, value) { | |
| return t().callExpression(this.file.addHelper("set"), [getPrototypeOfExpression(this.getObjectRef(), this.isStatic, this.file), this.prop(superMember), value, t().thisExpression(), t().booleanLiteral(superMember.isInStrictMode())]); | |
| }, | |
| call(superMember, args) { | |
| return (0, _helperOptimiseCallExpression().default)(this.get(superMember), t().thisExpression(), args); | |
| } | |
| }; | |
| const looseHandlers = Object.assign({}, specHandlers, { | |
| prop(superMember) { | |
| const { | |
| property | |
| } = superMember.node; | |
| if (this.memoiser.has(property)) { | |
| return t().cloneNode(this.memoiser.get(property)); | |
| } | |
| return t().cloneNode(property); | |
| }, | |
| get(superMember) { | |
| const { | |
| isStatic, | |
| superRef | |
| } = this; | |
| const { | |
| computed | |
| } = superMember.node; | |
| const prop = this.prop(superMember); | |
| let object; | |
| if (isStatic) { | |
| object = superRef ? t().cloneNode(superRef) : t().memberExpression(t().identifier("Function"), t().identifier("prototype")); | |
| } else { | |
| object = superRef ? t().memberExpression(t().cloneNode(superRef), t().identifier("prototype")) : t().memberExpression(t().identifier("Object"), t().identifier("prototype")); | |
| } | |
| return t().memberExpression(object, prop, computed); | |
| }, | |
| set(superMember, value) { | |
| const { | |
| computed | |
| } = superMember.node; | |
| const prop = this.prop(superMember); | |
| return t().assignmentExpression("=", t().memberExpression(t().thisExpression(), prop, computed), value); | |
| } | |
| }); | |
| class ReplaceSupers { | |
| constructor(opts) { | |
| const path = opts.methodPath; | |
| this.methodPath = path; | |
| this.isStatic = path.isClassMethod({ | |
| static: true | |
| }) || path.isObjectMethod(); | |
| this.file = opts.file; | |
| this.superRef = opts.superRef; | |
| this.isLoose = opts.isLoose; | |
| this.opts = opts; | |
| } | |
| getObjectRef() { | |
| return t().cloneNode(this.opts.objectRef || this.opts.getObjectRef()); | |
| } | |
| replace() { | |
| const handler = this.isLoose ? looseHandlers : specHandlers; | |
| (0, _helperMemberExpressionToFunctions().default)(this.methodPath, visitor, Object.assign({ | |
| file: this.file, | |
| isStatic: this.isStatic, | |
| getObjectRef: this.getObjectRef.bind(this), | |
| superRef: this.superRef | |
| }, handler)); | |
| } | |
| } | |
| exports.default = ReplaceSupers; |
| 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. |
| { | |
| "name": "@babel/helper-replace-supers", | |
| "version": "7.3.4", | |
| "description": "Helper function to replace supers", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-replace-supers", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/helper-member-expression-to-functions": "^7.0.0", | |
| "@babel/helper-optimise-call-expression": "^7.0.0", | |
| "@babel/traverse": "^7.3.4", | |
| "@babel/types": "^7.3.4" | |
| }, | |
| "gitHead": "1f6454cc90fe33e0a32260871212e2f719f35741" | |
| } |
Helper function to replace supers
See our website @babel/helper-replace-supers for more information.
Using npm:
npm install --save-dev @babel/helper-replace-supersor using yarn:
yarn add @babel/helper-replace-supers --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = simplifyAccess; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function simplifyAccess(path, bindingNames) { | |
| path.traverse(simpleAssignmentVisitor, { | |
| scope: path.scope, | |
| bindingNames, | |
| seen: new WeakSet() | |
| }); | |
| } | |
| const simpleAssignmentVisitor = { | |
| UpdateExpression: { | |
| exit(path) { | |
| const { | |
| scope, | |
| bindingNames | |
| } = this; | |
| const arg = path.get("argument"); | |
| if (!arg.isIdentifier()) return; | |
| const localName = arg.node.name; | |
| if (!bindingNames.has(localName)) return; | |
| if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { | |
| return; | |
| } | |
| if (path.parentPath.isExpressionStatement() && !path.isCompletionRecord()) { | |
| const operator = path.node.operator == "++" ? "+=" : "-="; | |
| path.replaceWith(t().assignmentExpression(operator, arg.node, t().numericLiteral(1))); | |
| } else if (path.node.prefix) { | |
| path.replaceWith(t().assignmentExpression("=", t().identifier(localName), t().binaryExpression(path.node.operator[0], t().unaryExpression("+", arg.node), t().numericLiteral(1)))); | |
| } else { | |
| const old = path.scope.generateUidIdentifierBasedOnNode(arg.node, "old"); | |
| const varName = old.name; | |
| path.scope.push({ | |
| id: old | |
| }); | |
| const binary = t().binaryExpression(path.node.operator[0], t().identifier(varName), t().numericLiteral(1)); | |
| path.replaceWith(t().sequenceExpression([t().assignmentExpression("=", t().identifier(varName), t().unaryExpression("+", arg.node)), t().assignmentExpression("=", t().cloneNode(arg.node), binary), t().identifier(varName)])); | |
| } | |
| } | |
| }, | |
| AssignmentExpression: { | |
| exit(path) { | |
| const { | |
| scope, | |
| seen, | |
| bindingNames | |
| } = this; | |
| if (path.node.operator === "=") return; | |
| if (seen.has(path.node)) return; | |
| seen.add(path.node); | |
| const left = path.get("left"); | |
| if (!left.isIdentifier()) return; | |
| const localName = left.node.name; | |
| if (!bindingNames.has(localName)) return; | |
| if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { | |
| return; | |
| } | |
| path.node.right = t().binaryExpression(path.node.operator.slice(0, -1), t().cloneNode(path.node.left), path.node.right); | |
| path.node.operator = "="; | |
| } | |
| } | |
| }; |
| MIT License | |
| Copyright (c) 2014-2018 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. |
| { | |
| "name": "@babel/helper-simple-access", | |
| "version": "7.1.0", | |
| "description": "Babel helper for ensuring that access to a given value is performed through simple accesses", | |
| "author": "Logan Smyth <[email protected]>", | |
| "homepage": "https://babeljs.io/", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-simple-access", | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/template": "^7.1.0", | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
Babel helper for ensuring that access to a given value is performed through simple accesses
See our website @babel/helper-simple-access for more information.
Using npm:
npm install --save-dev @babel/helper-simple-accessor using yarn:
yarn add @babel/helper-simple-access --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = splitExportDeclaration; | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function splitExportDeclaration(exportDeclaration) { | |
| if (!exportDeclaration.isExportDeclaration()) { | |
| throw new Error("Only export declarations can be splitted."); | |
| } | |
| const isDefault = exportDeclaration.isExportDefaultDeclaration(); | |
| const declaration = exportDeclaration.get("declaration"); | |
| const isClassDeclaration = declaration.isClassDeclaration(); | |
| if (isDefault) { | |
| const standaloneDeclaration = declaration.isFunctionDeclaration() || isClassDeclaration; | |
| const scope = declaration.isScope() ? declaration.scope.parent : declaration.scope; | |
| let id = declaration.node.id; | |
| let needBindingRegistration = false; | |
| if (!id) { | |
| needBindingRegistration = true; | |
| id = scope.generateUidIdentifier("default"); | |
| if (standaloneDeclaration || declaration.isFunctionExpression() || declaration.isClassExpression()) { | |
| declaration.node.id = t().cloneNode(id); | |
| } | |
| } | |
| const updatedDeclaration = standaloneDeclaration ? declaration : t().variableDeclaration("var", [t().variableDeclarator(t().cloneNode(id), declaration.node)]); | |
| const updatedExportDeclaration = t().exportNamedDeclaration(null, [t().exportSpecifier(t().cloneNode(id), t().identifier("default"))]); | |
| exportDeclaration.insertAfter(updatedExportDeclaration); | |
| exportDeclaration.replaceWith(updatedDeclaration); | |
| if (needBindingRegistration) { | |
| scope.registerBinding(isClassDeclaration ? "let" : "var", exportDeclaration); | |
| } | |
| return exportDeclaration; | |
| } | |
| if (exportDeclaration.get("specifiers").length > 0) { | |
| throw new Error("It doesn't make sense to split exported specifiers."); | |
| } | |
| const bindingIdentifiers = declaration.getOuterBindingIdentifiers(); | |
| const specifiers = Object.keys(bindingIdentifiers).map(name => { | |
| return t().exportSpecifier(t().identifier(name), t().identifier(name)); | |
| }); | |
| const aliasDeclar = t().exportNamedDeclaration(null, specifiers); | |
| exportDeclaration.insertAfter(aliasDeclar); | |
| exportDeclaration.replaceWith(declaration.node); | |
| return exportDeclaration; | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 Sebastian McKenzie <[email protected]> | |
| 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. |
| { | |
| "name": "@babel/helper-split-export-declaration", | |
| "version": "7.0.0", | |
| "description": "", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-split-export-declaration", | |
| "license": "MIT", | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/types": "^7.0.0" | |
| } | |
| } |
See our website @babel/helper-split-export-declaration for more information.
Using npm:
npm install --save-dev @babel/helper-split-export-declarationor using yarn:
yarn add @babel/helper-split-export-declaration --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = wrapFunction; | |
| function _helperFunctionName() { | |
| const data = _interopRequireDefault(require("@babel/helper-function-name")); | |
| _helperFunctionName = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _template() { | |
| const data = _interopRequireDefault(require("@babel/template")); | |
| _template = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function t() { | |
| const data = _interopRequireWildcard(require("@babel/types")); | |
| t = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const buildAnonymousExpressionWrapper = _template().default.expression(` | |
| (function () { | |
| var REF = FUNCTION; | |
| return function NAME(PARAMS) { | |
| return REF.apply(this, arguments); | |
| }; | |
| })() | |
| `); | |
| const buildNamedExpressionWrapper = _template().default.expression(` | |
| (function () { | |
| var REF = FUNCTION; | |
| function NAME(PARAMS) { | |
| return REF.apply(this, arguments); | |
| } | |
| return NAME; | |
| })() | |
| `); | |
| const buildDeclarationWrapper = (0, _template().default)(` | |
| function NAME(PARAMS) { return REF.apply(this, arguments); } | |
| function REF() { | |
| REF = FUNCTION; | |
| return REF.apply(this, arguments); | |
| } | |
| `); | |
| function classOrObjectMethod(path, callId) { | |
| const node = path.node; | |
| const body = node.body; | |
| const container = t().functionExpression(null, [], t().blockStatement(body.body), true); | |
| body.body = [t().returnStatement(t().callExpression(t().callExpression(callId, [container]), []))]; | |
| node.async = false; | |
| node.generator = false; | |
| path.get("body.body.0.argument.callee.arguments.0").unwrapFunctionEnvironment(); | |
| } | |
| function plainFunction(path, callId) { | |
| const node = path.node; | |
| const isDeclaration = path.isFunctionDeclaration(); | |
| const functionId = node.id; | |
| const wrapper = isDeclaration ? buildDeclarationWrapper : functionId ? buildNamedExpressionWrapper : buildAnonymousExpressionWrapper; | |
| if (path.isArrowFunctionExpression()) { | |
| path.arrowFunctionToExpression(); | |
| } | |
| node.id = null; | |
| if (isDeclaration) { | |
| node.type = "FunctionExpression"; | |
| } | |
| const built = t().callExpression(callId, [node]); | |
| const container = wrapper({ | |
| NAME: functionId || null, | |
| REF: path.scope.generateUidIdentifier(functionId ? functionId.name : "ref"), | |
| FUNCTION: built, | |
| PARAMS: node.params.reduce((acc, param) => { | |
| acc.done = acc.done || t().isAssignmentPattern(param) || t().isRestElement(param); | |
| if (!acc.done) { | |
| acc.params.push(path.scope.generateUidIdentifier("x")); | |
| } | |
| return acc; | |
| }, { | |
| params: [], | |
| done: false | |
| }).params | |
| }); | |
| if (isDeclaration) { | |
| path.replaceWith(container[0]); | |
| path.insertAfter(container[1]); | |
| } else { | |
| const retFunction = container.callee.body.body[1].argument; | |
| if (!functionId) { | |
| (0, _helperFunctionName().default)({ | |
| node: retFunction, | |
| parent: path.parent, | |
| scope: path.scope | |
| }); | |
| } | |
| if (!retFunction || retFunction.id || node.params.length) { | |
| path.replaceWith(container); | |
| } else { | |
| path.replaceWith(built); | |
| } | |
| } | |
| } | |
| function wrapFunction(path, callId) { | |
| if (path.isClassMethod() || path.isObjectMethod()) { | |
| classOrObjectMethod(path, callId); | |
| } else { | |
| plainFunction(path, callId); | |
| } | |
| } |
| MIT License | |
| Copyright (c) 2014-2018 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. |
| { | |
| "name": "@babel/helper-wrap-function", | |
| "version": "7.2.0", | |
| "description": "Helper to wrap functions inside a function call.", | |
| "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-wrap-function", | |
| "license": "MIT", | |
| "publishConfig": { | |
| "access": "public" | |
| }, | |
| "main": "lib/index.js", | |
| "dependencies": { | |
| "@babel/helper-function-name": "^7.1.0", | |
| "@babel/template": "^7.1.0", | |
| "@babel/traverse": "^7.1.0", | |
| "@babel/types": "^7.2.0" | |
| } | |
| } |
Helper to wrap functions inside a function call.
See our website @babel/helper-wrap-function for more information.
Using npm:
npm install --save-dev @babel/helper-wrap-functionor using yarn:
yarn add @babel/helper-wrap-function --dev| 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. |
Collection of helper functions used by Babel transforms.
See our website @babel/helpers for more information.
Using npm:
npm install --save-dev @babel/helpersor using yarn:
yarn add @babel/helpers --dev| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| function _template() { | |
| const data = _interopRequireDefault(require("@babel/template")); | |
| _template = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| const helpers = Object.create(null); | |
| var _default = helpers; | |
| exports.default = _default; | |
| const helper = minVersion => tpl => ({ | |
| minVersion, | |
| ast: () => _template().default.program.ast(tpl) | |
| }); | |
| helpers.typeof = helper("7.0.0-beta.0")` | |
| export default function _typeof(obj) { | |
| if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { | |
| _typeof = function (obj) { return typeof obj; }; | |
| } else { | |
| _typeof = function (obj) { | |
| return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype | |
| ? "symbol" | |
| : typeof obj; | |
| }; | |
| } | |
| return _typeof(obj); | |
| } | |
| `; | |
| helpers.jsx = helper("7.0.0-beta.0")` | |
| var REACT_ELEMENT_TYPE; | |
| export default function _createRawReactElement(type, props, key, children) { | |
| if (!REACT_ELEMENT_TYPE) { | |
| REACT_ELEMENT_TYPE = ( | |
| typeof Symbol === "function" && Symbol.for && Symbol.for("react.element") | |
| ) || 0xeac7; | |
| } | |
| var defaultProps = type && type.defaultProps; | |
| var childrenLength = arguments.length - 3; | |
| if (!props && childrenLength !== 0) { | |
| // If we're going to assign props.children, we create a new object now | |
| // to avoid mutating defaultProps. | |
| props = { | |
| children: void 0, | |
| }; | |
| } | |
| if (props && defaultProps) { | |
| for (var propName in defaultProps) { | |
| if (props[propName] === void 0) { | |
| props[propName] = defaultProps[propName]; | |
| } | |
| } | |
| } else if (!props) { | |
| props = defaultProps || {}; | |
| } | |
| if (childrenLength === 1) { | |
| props.children = children; | |
| } else if (childrenLength > 1) { | |
| var childArray = new Array(childrenLength); | |
| for (var i = 0; i < childrenLength; i++) { | |
| childArray[i] = arguments[i + 3]; | |
| } | |
| props.children = childArray; | |
| } | |
| return { | |
| $$typeof: REACT_ELEMENT_TYPE, | |
| type: type, | |
| key: key === undefined ? null : '' + key, | |
| ref: null, | |
| props: props, | |
| _owner: null, | |
| }; | |
| } | |
| `; | |
| helpers.asyncIterator = helper("7.0.0-beta.0")` | |
| export default function _asyncIterator(iterable) { | |
| var method | |
| if (typeof Symbol === "function") { | |
| if (Symbol.asyncIterator) { | |
| method = iterable[Symbol.asyncIterator] | |
| if (method != null) return method.call(iterable); | |
| } | |
| if (Symbol.iterator) { | |
| method = iterable[Symbol.iterator] | |
| if (method != null) return method.call(iterable); | |
| } | |
| } | |
| throw new TypeError("Object is not async iterable"); | |
| } | |
| `; | |
| helpers.AwaitValue = helper("7.0.0-beta.0")` | |
| export default function _AwaitValue(value) { | |
| this.wrapped = value; | |
| } | |
| `; | |
| helpers.AsyncGenerator = helper("7.0.0-beta.0")` | |
| import AwaitValue from "AwaitValue"; | |
| export default function AsyncGenerator(gen) { | |
| var front, back; | |
| function send(key, arg) { | |
| return new Promise(function (resolve, reject) { | |
| var request = { | |
| key: key, | |
| arg: arg, | |
| resolve: resolve, | |
| reject: reject, | |
| next: null, | |
| }; | |
| if (back) { | |
| back = back.next = request; | |
| } else { | |
| front = back = request; | |
| resume(key, arg); | |
| } | |
| }); | |
| } | |
| function resume(key, arg) { | |
| try { | |
| var result = gen[key](arg) | |
| var value = result.value; | |
| var wrappedAwait = value instanceof AwaitValue; | |
| Promise.resolve(wrappedAwait ? value.wrapped : value).then( | |
| function (arg) { | |
| if (wrappedAwait) { | |
| resume("next", arg); | |
| return | |
| } | |
| settle(result.done ? "return" : "normal", arg); | |
| }, | |
| function (err) { resume("throw", err); }); | |
| } catch (err) { | |
| settle("throw", err); | |
| } | |
| } | |
| function settle(type, value) { | |
| switch (type) { | |
| case "return": | |
| front.resolve({ value: value, done: true }); | |
| break; | |
| case "throw": | |
| front.reject(value); | |
| break; | |
| default: | |
| front.resolve({ value: value, done: false }); | |
| break; | |
| } | |
| front = front.next; | |
| if (front) { | |
| resume(front.key, front.arg); | |
| } else { | |
| back = null; | |
| } | |
| } | |
| this._invoke = send; | |
| // Hide "return" method if generator return is not supported | |
| if (typeof gen.return !== "function") { | |
| this.return = undefined; | |
| } | |
| } | |
| if (typeof Symbol === "function" && Symbol.asyncIterator) { | |
| AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; | |
| } | |
| AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; | |
| AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; | |
| AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; | |
| `; | |
| helpers.wrapAsyncGenerator = helper("7.0.0-beta.0")` | |
| import AsyncGenerator from "AsyncGenerator"; | |
| export default function _wrapAsyncGenerator(fn) { | |
| return function () { | |
| return new AsyncGenerator(fn.apply(this, arguments)); | |
| }; | |
| } | |
| `; | |
| helpers.awaitAsyncGenerator = helper("7.0.0-beta.0")` | |
| import AwaitValue from "AwaitValue"; | |
| export default function _awaitAsyncGenerator(value) { | |
| return new AwaitValue(value); | |
| } | |
| `; | |
| helpers.asyncGeneratorDelegate = helper("7.0.0-beta.0")` | |
| export default function _asyncGeneratorDelegate(inner, awaitWrap) { | |
| var iter = {}, waiting = false; | |
| function pump(key, value) { | |
| waiting = true; | |
| value = new Promise(function (resolve) { resolve(inner[key](value)); }); | |
| return { done: false, value: awaitWrap(value) }; | |
| }; | |
| if (typeof Symbol === "function" && Symbol.iterator) { | |
| iter[Symbol.iterator] = function () { return this; }; | |
| } | |
| iter.next = function (value) { | |
| if (waiting) { | |
| waiting = false; | |
| return value; | |
| } | |
| return pump("next", value); | |
| }; | |
| if (typeof inner.throw === "function") { | |
| iter.throw = function (value) { | |
| if (waiting) { | |
| waiting = false; | |
| throw value; | |
| } | |
| return pump("throw", value); | |
| }; | |
| } | |
| if (typeof inner.return === "function") { | |
| iter.return = function (value) { | |
| return pump("return", value); | |
| }; | |
| } | |
| return iter; | |
| } | |
| `; | |
| helpers.asyncToGenerator = helper("7.0.0-beta.0")` | |
| function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { | |
| try { | |
| var info = gen[key](arg); | |
| var value = info.value; | |
| } catch (error) { | |
| reject(error); | |
| return; | |
| } | |
| if (info.done) { | |
| resolve(value); | |
| } else { | |
| Promise.resolve(value).then(_next, _throw); | |
| } | |
| } | |
| export default function _asyncToGenerator(fn) { | |
| return function () { | |
| var self = this, args = arguments; | |
| return new Promise(function (resolve, reject) { | |
| var gen = fn.apply(self, args); | |
| function _next(value) { | |
| asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); | |
| } | |
| function _throw(err) { | |
| asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); | |
| } | |
| _next(undefined); | |
| }); | |
| }; | |
| } | |
| `; | |
| helpers.classCallCheck = helper("7.0.0-beta.0")` | |
| export default function _classCallCheck(instance, Constructor) { | |
| if (!(instance instanceof Constructor)) { | |
| throw new TypeError("Cannot call a class as a function"); | |
| } | |
| } | |
| `; | |
| helpers.createClass = helper("7.0.0-beta.0")` | |
| function _defineProperties(target, props) { | |
| for (var i = 0; i < props.length; i ++) { | |
| var descriptor = props[i]; | |
| descriptor.enumerable = descriptor.enumerable || false; | |
| descriptor.configurable = true; | |
| if ("value" in descriptor) descriptor.writable = true; | |
| Object.defineProperty(target, descriptor.key, descriptor); | |
| } | |
| } | |
| export default function _createClass(Constructor, protoProps, staticProps) { | |
| if (protoProps) _defineProperties(Constructor.prototype, protoProps); | |
| if (staticProps) _defineProperties(Constructor, staticProps); | |
| return Constructor; | |
| } | |
| `; | |
| helpers.defineEnumerableProperties = helper("7.0.0-beta.0")` | |
| export default function _defineEnumerableProperties(obj, descs) { | |
| for (var key in descs) { | |
| var desc = descs[key]; | |
| desc.configurable = desc.enumerable = true; | |
| if ("value" in desc) desc.writable = true; | |
| Object.defineProperty(obj, key, desc); | |
| } | |
| // Symbols are not enumerated over by for-in loops. If native | |
| // Symbols are available, fetch all of the descs object's own | |
| // symbol properties and define them on our target object too. | |
| if (Object.getOwnPropertySymbols) { | |
| var objectSymbols = Object.getOwnPropertySymbols(descs); | |
| for (var i = 0; i < objectSymbols.length; i++) { | |
| var sym = objectSymbols[i]; | |
| var desc = descs[sym]; | |
| desc.configurable = desc.enumerable = true; | |
| if ("value" in desc) desc.writable = true; | |
| Object.defineProperty(obj, sym, desc); | |
| } | |
| } | |
| return obj; | |
| } | |
| `; | |
| helpers.defaults = helper("7.0.0-beta.0")` | |
| export default function _defaults(obj, defaults) { | |
| var keys = Object.getOwnPropertyNames(defaults); | |
| for (var i = 0; i < keys.length; i++) { | |
| var key = keys[i]; | |
| var value = Object.getOwnPropertyDescriptor(defaults, key); | |
| if (value && value.configurable && obj[key] === undefined) { | |
| Object.defineProperty(obj, key, value); | |
| } | |
| } | |
| return obj; | |
| } | |
| `; | |
| helpers.defineProperty = helper("7.0.0-beta.0")` | |
| export default function _defineProperty(obj, key, value) { | |
| // Shortcircuit the slow defineProperty path when possible. | |
| // We are trying to avoid issues where setters defined on the | |
| // prototype cause side effects under the fast path of simple | |
| // assignment. By checking for existence of the property with | |
| // the in operator, we can optimize most of this overhead away. | |
| if (key in obj) { | |
| Object.defineProperty(obj, key, { | |
| value: value, | |
| enumerable: true, | |
| configurable: true, | |
| writable: true | |
| }); | |
| } else { | |
| obj[key] = value; | |
| } | |
| return obj; | |
| } | |
| `; | |
| helpers.extends = helper("7.0.0-beta.0")` | |
| export default function _extends() { | |
| _extends = Object.assign || function (target) { | |
| for (var i = 1; i < arguments.length; i++) { | |
| var source = arguments[i]; | |
| for (var key in source) { | |
| if (Object.prototype.hasOwnProperty.call(source, key)) { | |
| target[key] = source[key]; | |
| } | |
| } | |
| } | |
| return target; | |
| }; | |
| return _extends.apply(this, arguments); | |
| } | |
| `; | |
| helpers.objectSpread = helper("7.0.0-beta.0")` | |
| import defineProperty from "defineProperty"; | |
| export default function _objectSpread(target) { | |
| for (var i = 1; i < arguments.length; i++) { | |
| var source = (arguments[i] != null) ? arguments[i] : {}; | |
| var ownKeys = Object.keys(source); | |
| if (typeof Object.getOwnPropertySymbols === 'function') { | |
| ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { | |
| return Object.getOwnPropertyDescriptor(source, sym).enumerable; | |
| })); | |
| } | |
| ownKeys.forEach(function(key) { | |
| defineProperty(target, key, source[key]); | |
| }); | |
| } | |
| return target; | |
| } | |
| `; | |
| helpers.inherits = helper("7.0.0-beta.0")` | |
| import setPrototypeOf from "setPrototypeOf"; | |
| export default function _inherits(subClass, superClass) { | |
| if (typeof superClass !== "function" && superClass !== null) { | |
| throw new TypeError("Super expression must either be null or a function"); | |
| } | |
| subClass.prototype = Object.create(superClass && superClass.prototype, { | |
| constructor: { | |
| value: subClass, | |
| writable: true, | |
| configurable: true | |
| } | |
| }); | |
| if (superClass) setPrototypeOf(subClass, superClass); | |
| } | |
| `; | |
| helpers.inheritsLoose = helper("7.0.0-beta.0")` | |
| export default function _inheritsLoose(subClass, superClass) { | |
| subClass.prototype = Object.create(superClass.prototype); | |
| subClass.prototype.constructor = subClass; | |
| subClass.__proto__ = superClass; | |
| } | |
| `; | |
| helpers.getPrototypeOf = helper("7.0.0-beta.0")` | |
| export default function _getPrototypeOf(o) { | |
| _getPrototypeOf = Object.setPrototypeOf | |
| ? Object.getPrototypeOf | |
| : function _getPrototypeOf(o) { | |
| return o.__proto__ || Object.getPrototypeOf(o); | |
| }; | |
| return _getPrototypeOf(o); | |
| } | |
| `; | |
| helpers.setPrototypeOf = helper("7.0.0-beta.0")` | |
| export default function _setPrototypeOf(o, p) { | |
| _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { | |
| o.__proto__ = p; | |
| return o; | |
| }; | |
| return _setPrototypeOf(o, p); | |
| } | |
| `; | |
| helpers.construct = helper("7.0.0-beta.0")` | |
| import setPrototypeOf from "setPrototypeOf"; | |
| function isNativeReflectConstruct() { | |
| if (typeof Reflect === "undefined" || !Reflect.construct) return false; | |
| // core-js@3 | |
| if (Reflect.construct.sham) return false; | |
| // Proxy can't be polyfilled. Every browser implemented | |
| // proxies before or at the same time as Reflect.construct, | |
| // so if they support Proxy they also support Reflect.construct. | |
| if (typeof Proxy === "function") return true; | |
| // Since Reflect.construct can't be properly polyfilled, some | |
| // implementations (e.g. core-js@2) don't set the correct internal slots. | |
| // Those polyfills don't allow us to subclass built-ins, so we need to | |
| // use our fallback implementation. | |
| try { | |
| // If the internal slots aren't set, this throws an error similar to | |
| // TypeError: this is not a Date object. | |
| Date.prototype.toString.call(Reflect.construct(Date, [], function() {})); | |
| return true; | |
| } catch (e) { | |
| return false; | |
| } | |
| } | |
| export default function _construct(Parent, args, Class) { | |
| if (isNativeReflectConstruct()) { | |
| _construct = Reflect.construct; | |
| } else { | |
| // NOTE: If Parent !== Class, the correct __proto__ is set *after* | |
| // calling the constructor. | |
| _construct = function _construct(Parent, args, Class) { | |
| var a = [null]; | |
| a.push.apply(a, args); | |
| var Constructor = Function.bind.apply(Parent, a); | |
| var instance = new Constructor(); | |
| if (Class) setPrototypeOf(instance, Class.prototype); | |
| return instance; | |
| }; | |
| } | |
| // Avoid issues with Class being present but undefined when it wasn't | |
| // present in the original call. | |
| return _construct.apply(null, arguments); | |
| } | |
| `; | |
| helpers.isNativeFunction = helper("7.0.0-beta.0")` | |
| export default function _isNativeFunction(fn) { | |
| // Note: This function returns "true" for core-js functions. | |
| return Function.toString.call(fn).indexOf("[native code]") !== -1; | |
| } | |
| `; | |
| helpers.wrapNativeSuper = helper("7.0.0-beta.0")` | |
| import getPrototypeOf from "getPrototypeOf"; | |
| import setPrototypeOf from "setPrototypeOf"; | |
| import isNativeFunction from "isNativeFunction"; | |
| import construct from "construct"; | |
| export default function _wrapNativeSuper(Class) { | |
| var _cache = typeof Map === "function" ? new Map() : undefined; | |
| _wrapNativeSuper = function _wrapNativeSuper(Class) { | |
| if (Class === null || !isNativeFunction(Class)) return Class; | |
| if (typeof Class !== "function") { | |
| throw new TypeError("Super expression must either be null or a function"); | |
| } | |
| if (typeof _cache !== "undefined") { | |
| if (_cache.has(Class)) return _cache.get(Class); | |
| _cache.set(Class, Wrapper); | |
| } | |
| function Wrapper() { | |
| return construct(Class, arguments, getPrototypeOf(this).constructor) | |
| } | |
| Wrapper.prototype = Object.create(Class.prototype, { | |
| constructor: { | |
| value: Wrapper, | |
| enumerable: false, | |
| writable: true, | |
| configurable: true, | |
| } | |
| }); | |
| return setPrototypeOf(Wrapper, Class); | |
| } | |
| return _wrapNativeSuper(Class) | |
| } | |
| `; | |
| helpers.instanceof = helper("7.0.0-beta.0")` | |
| export default function _instanceof(left, right) { | |
| if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { | |
| return right[Symbol.hasInstance](left); | |
| } else { | |
| return left instanceof right; | |
| } | |
| } | |
| `; | |
| helpers.interopRequireDefault = helper("7.0.0-beta.0")` | |
| export default function _interopRequireDefault(obj) { | |
| return obj && obj.__esModule ? obj : { default: obj }; | |
| } | |
| `; | |
| helpers.interopRequireWildcard = helper("7.0.0-beta.0")` | |
| export default function _interopRequireWildcard(obj) { | |
| if (obj && obj.__esModule) { | |
| return obj; | |
| } else { | |
| var newObj = {}; | |
| if (obj != null) { | |
| for (var key in obj) { | |
| if (Object.prototype.hasOwnProperty.call(obj, key)) { | |
| var desc = Object.defineProperty && Object.getOwnPropertyDescriptor | |
| ? Object.getOwnPropertyDescriptor(obj, key) | |
| : {}; | |
| if (desc.get || desc.set) { | |
| Object.defineProperty(newObj, key, desc); | |
| } else { | |
| newObj[key] = obj[key]; | |
| } | |
| } | |
| } | |
| } | |
| newObj.default = obj; | |
| return newObj; | |
| } | |
| } | |
| `; | |
| helpers.newArrowCheck = helper("7.0.0-beta.0")` | |
| export default function _newArrowCheck(innerThis, boundThis) { | |
| if (innerThis !== boundThis) { | |
| throw new TypeError("Cannot instantiate an arrow function"); | |
| } | |
| } | |
| `; | |
| helpers.objectDestructuringEmpty = helper("7.0.0-beta.0")` | |
| export default function _objectDestructuringEmpty(obj) { | |
| if (obj == null) throw new TypeError("Cannot destructure undefined"); | |
| } | |
| `; | |
| helpers.objectWithoutPropertiesLoose = helper("7.0.0-beta.0")` | |
| export default function _objectWithoutPropertiesLoose(source, excluded) { | |
| if (source == null) return {}; | |
| var target = {}; | |
| var sourceKeys = Object.keys(source); | |
| var key, i; | |
| for (i = 0; i < sourceKeys.length; i++) { | |
| key = sourceKeys[i]; | |
| if (excluded.indexOf(key) >= 0) continue; | |
| target[key] = source[key]; | |
| } | |
| return target; | |
| } | |
| `; | |
| helpers.objectWithoutProperties = helper("7.0.0-beta.0")` | |
| import objectWithoutPropertiesLoose from "objectWithoutPropertiesLoose"; | |
| export default function _objectWithoutProperties(source, excluded) { | |
| if (source == null) return {}; | |
| var target = objectWithoutPropertiesLoose(source, excluded); | |
| var key, i; | |
| if (Object.getOwnPropertySymbols) { | |
| var sourceSymbolKeys = Object.getOwnPropertySymbols(source); | |
| for (i = 0; i < sourceSymbolKeys.length; i++) { | |
| key = sourceSymbolKeys[i]; | |
| if (excluded.indexOf(key) >= 0) continue; | |
| if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; | |
| target[key] = source[key]; | |
| } | |
| } | |
| return target; | |
| } | |
| `; | |
| helpers.assertThisInitialized = helper("7.0.0-beta.0")` | |
| export default function _assertThisInitialized(self) { | |
| if (self === void 0) { | |
| throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); | |
| } | |
| return self; | |
| } | |
| `; | |
| helpers.possibleConstructorReturn = helper("7.0.0-beta.0")` | |
| import assertThisInitialized from "assertThisInitialized"; | |
| export default function _possibleConstructorReturn(self, call) { | |
| if (call && (typeof call === "object" || typeof call === "function")) { | |
| return call; | |
| } | |
| return assertThisInitialized(self); | |
| } | |
| `; | |
| helpers.superPropBase = helper("7.0.0-beta.0")` | |
| import getPrototypeOf from "getPrototypeOf"; | |
| export default function _superPropBase(object, property) { | |
| // Yes, this throws if object is null to being with, that's on purpose. | |
| while (!Object.prototype.hasOwnProperty.call(object, property)) { | |
| object = getPrototypeOf(object); | |
| if (object === null) break; | |
| } | |
| return object; | |
| } | |
| `; | |
| helpers.get = helper("7.0.0-beta.0")` | |
| import getPrototypeOf from "getPrototypeOf"; | |
| import superPropBase from "superPropBase"; | |
| export default function _get(target, property, receiver) { | |
| if (typeof Reflect !== "undefined" && Reflect.get) { | |
| _get = Reflect.get; | |
| } else { | |
| _get = function _get(target, property, receiver) { | |
| var base = superPropBase(target, property); | |
| if (!base) return; | |
| var desc = Object.getOwnPropertyDescriptor(base, property); | |
| if (desc.get) { | |
| return desc.get.call(receiver); | |
| } | |
| return desc.value; | |
| }; | |
| } | |
| return _get(target, property, receiver || target); | |
| } | |
| `; | |
| helpers.set = helper("7.0.0-beta.0")` | |
| import getPrototypeOf from "getPrototypeOf"; | |
| import superPropBase from "superPropBase"; | |
| import defineProperty from "defineProperty"; | |
| function set(target, property, value, receiver) { | |
| if (typeof Reflect !== "undefined" && Reflect.set) { | |
| set = Reflect.set; | |
| } else { | |
| set = function set(target, property, value, receiver) { | |
| var base = superPropBase(target, property); | |
| var desc; | |
| if (base) { | |
| desc = Object.getOwnPropertyDescriptor(base, property); | |
| if (desc.set) { | |
| desc.set.call(receiver, value); | |
| return true; | |
| } else if (!desc.writable) { | |
| // Both getter and non-writable fall into this. | |
| return false; | |
| } | |
| } | |
| // Without a super that defines the property, spec boils down to | |
| // "define on receiver" for some reason. | |
| desc = Object.getOwnPropertyDescriptor(receiver, property); | |
| if (desc) { | |
| if (!desc.writable) { | |
| // Setter, getter, and non-writable fall into this. | |
| return false; | |
| } | |
| desc.value = value; | |
| Object.defineProperty(receiver, property, desc); | |
| } else { | |
| // Avoid setters that may be defined on Sub's prototype, but not on | |
| // the instance. | |
| defineProperty(receiver, property, value); | |
| } | |
| return true; | |
| }; | |
| } | |
| return set(target, property, value, receiver); | |
| } | |
| export default function _set(target, property, value, receiver, isStrict) { | |
| var s = set(target, property, value, receiver || target); | |
| if (!s && isStrict) { | |
| throw new Error('failed to set property'); | |
| } | |
| return value; | |
| } | |
| `; | |
| helpers.taggedTemplateLiteral = helper("7.0.0-beta.0")` | |
| export default function _taggedTemplateLiteral(strings, raw) { | |
| if (!raw) { raw = strings.slice(0); } | |
| return Object.freeze(Object.defineProperties(strings, { | |
| raw: { value: Object.freeze(raw) } | |
| })); | |
| } | |
| `; | |
| helpers.taggedTemplateLiteralLoose = helper("7.0.0-beta.0")` | |
| export default function _taggedTemplateLiteralLoose(strings, raw) { | |
| if (!raw) { raw = strings.slice(0); } | |
| strings.raw = raw; | |
| return strings; | |
| } | |
| `; | |
| helpers.temporalRef = helper("7.0.0-beta.0")` | |
| import undef from "temporalUndefined"; | |
| export default function _temporalRef(val, name) { | |
| if (val === undef) { | |
| throw new ReferenceError(name + " is not defined - temporal dead zone"); | |
| } else { | |
| return val; | |
| } | |
| } | |
| `; | |
| helpers.readOnlyError = helper("7.0.0-beta.0")` | |
| export default function _readOnlyError(name) { | |
| throw new Error("\\"" + name + "\\" is read-only"); | |
| } | |
| `; | |
| helpers.classNameTDZError = helper("7.0.0-beta.0")` | |
| export default function _classNameTDZError(name) { | |
| throw new Error("Class \\"" + name + "\\" cannot be referenced in computed property keys."); | |
| } | |
| `; | |
| helpers.temporalUndefined = helper("7.0.0-beta.0")` | |
| export default {}; | |
| `; | |
| helpers.slicedToArray = helper("7.0.0-beta.0")` | |
| import arrayWithHoles from "arrayWithHoles"; | |
| import iterableToArrayLimit from "iterableToArrayLimit"; | |
| import nonIterableRest from "nonIterableRest"; | |
| export default function _slicedToArray(arr, i) { | |
| return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest(); | |
| } | |
| `; | |
| helpers.slicedToArrayLoose = helper("7.0.0-beta.0")` | |
| import arrayWithHoles from "arrayWithHoles"; | |
| import iterableToArrayLimitLoose from "iterableToArrayLimitLoose"; | |
| import nonIterableRest from "nonIterableRest"; | |
| export default function _slicedToArrayLoose(arr, i) { | |
| return arrayWithHoles(arr) || iterableToArrayLimitLoose(arr, i) || nonIterableRest(); | |
| } | |
| `; | |
| helpers.toArray = helper("7.0.0-beta.0")` | |
| import arrayWithHoles from "arrayWithHoles"; | |
| import iterableToArray from "iterableToArray"; | |
| import nonIterableRest from "nonIterableRest"; | |
| export default function _toArray(arr) { | |
| return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest(); | |
| } | |
| `; | |
| helpers.toConsumableArray = helper("7.0.0-beta.0")` | |
| import arrayWithoutHoles from "arrayWithoutHoles"; | |
| import iterableToArray from "iterableToArray"; | |
| import nonIterableSpread from "nonIterableSpread"; | |
| export default function _toConsumableArray(arr) { | |
| return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread(); | |
| } | |
| `; | |
| helpers.arrayWithoutHoles = helper("7.0.0-beta.0")` | |
| export default function _arrayWithoutHoles(arr) { | |
| if (Array.isArray(arr)) { | |
| for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; | |
| return arr2; | |
| } | |
| } | |
| `; | |
| helpers.arrayWithHoles = helper("7.0.0-beta.0")` | |
| export default function _arrayWithHoles(arr) { | |
| if (Array.isArray(arr)) return arr; | |
| } | |
| `; | |
| helpers.iterableToArray = helper("7.0.0-beta.0")` | |
| export default function _iterableToArray(iter) { | |
| if ( | |
| Symbol.iterator in Object(iter) || | |
| Object.prototype.toString.call(iter) === "[object Arguments]" | |
| ) return Array.from(iter); | |
| } | |
| `; | |
| helpers.iterableToArrayLimit = helper("7.0.0-beta.0")` | |
| export default function _iterableToArrayLimit(arr, i) { | |
| // this is an expanded form of \`for...of\` that properly supports abrupt completions of | |
| // iterators etc. variable names have been minimised to reduce the size of this massive | |
| // helper. sometimes spec compliancy is annoying :( | |
| // | |
| // _n = _iteratorNormalCompletion | |
| // _d = _didIteratorError | |
| // _e = _iteratorError | |
| // _i = _iterator | |
| // _s = _step | |
| var _arr = []; | |
| var _n = true; | |
| var _d = false; | |
| var _e = undefined; | |
| try { | |
| for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { | |
| _arr.push(_s.value); | |
| if (i && _arr.length === i) break; | |
| } | |
| } catch (err) { | |
| _d = true; | |
| _e = err; | |
| } finally { | |
| try { | |
| if (!_n && _i["return"] != null) _i["return"](); | |
| } finally { | |
| if (_d) throw _e; | |
| } | |
| } | |
| return _arr; | |
| } | |
| `; | |
| helpers.iterableToArrayLimitLoose = helper("7.0.0-beta.0")` | |
| export default function _iterableToArrayLimitLoose(arr, i) { | |
| var _arr = []; | |
| for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) { | |
| _arr.push(_step.value); | |
| if (i && _arr.length === i) break; | |
| } | |
| return _arr; | |
| } | |
| `; | |
| helpers.nonIterableSpread = helper("7.0.0-beta.0")` | |
| export default function _nonIterableSpread() { | |
| throw new TypeError("Invalid attempt to spread non-iterable instance"); | |
| } | |
| `; | |
| helpers.nonIterableRest = helper("7.0.0-beta.0")` | |
| export default function _nonIterableRest() { | |
| throw new TypeError("Invalid attempt to destructure non-iterable instance"); | |
| } | |
| `; | |
| helpers.skipFirstGeneratorNext = helper("7.0.0-beta.0")` | |
| export default function _skipFirstGeneratorNext(fn) { | |
| return function () { | |
| var it = fn.apply(this, arguments); | |
| it.next(); | |
| return it; | |
| } | |
| } | |
| `; | |
| helpers.toPrimitive = helper("7.1.5")` | |
| export default function _toPrimitive( | |
| input, | |
| hint /*: "default" | "string" | "number" | void */ | |
| ) { | |
| if (typeof input !== "object" || input === null) return input; | |
| var prim = input[Symbol.toPrimitive]; | |
| if (prim !== undefined) { | |
| var res = prim.call(input, hint || "default"); | |
| if (typeof res !== "object") return res; | |
| throw new TypeError("@@toPrimitive must return a primitive value."); | |
| } | |
| return (hint === "string" ? String : Number)(input); | |
| } | |
| `; | |
| helpers.toPropertyKey = helper("7.1.5")` | |
| import toPrimitive from "toPrimitive"; | |
| export default function _toPropertyKey(arg) { | |
| var key = toPrimitive(arg, "string"); | |
| return typeof key === "symbol" ? key : String(key); | |
| } | |
| `; | |
| helpers.initializerWarningHelper = helper("7.0.0-beta.0")` | |
| export default function _initializerWarningHelper(descriptor, context){ | |
| throw new Error( | |
| 'Decorating class property failed. Please ensure that ' + | |
| 'proposal-class-properties is enabled and set to use loose mode. ' + | |
| 'To use proposal-class-properties in spec mode with decorators, wait for ' + | |
| 'the next major version of decorators in stage 2.' | |
| ); | |
| } | |
| `; | |
| helpers.initializerDefineProperty = helper("7.0.0-beta.0")` | |
| export default function _initializerDefineProperty(target, property, descriptor, context){ | |
| if (!descriptor) return; | |
| Object.defineProperty(target, property, { | |
| enumerable: descriptor.enumerable, | |
| configurable: descriptor.configurable, | |
| writable: descriptor.writable, | |
| value: descriptor.initializer ? descriptor.initializer.call(context) : void 0, | |
| }); | |
| } | |
| `; | |
| helpers.applyDecoratedDescriptor = helper("7.0.0-beta.0")` | |
| export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context){ | |
| var desc = {}; | |
| Object['ke' + 'ys'](descriptor).forEach(function(key){ | |
| desc[key] = descriptor[key]; | |
| }); | |
| desc.enumerable = !!desc.enumerable; | |
| desc.configurable = !!desc.configurable; | |
| if ('value' in desc || desc.initializer){ | |
| desc.writable = true; | |
| } | |
| desc = decorators.slice().reverse().reduce(function(desc, decorator){ | |
| return decorator(target, property, desc) || desc; | |
| }, desc); | |
| if (context && desc.initializer !== void 0){ | |
| desc.value = desc.initializer ? desc.initializer.call(context) : void 0; | |
| desc.initializer = undefined; | |
| } | |
| if (desc.initializer === void 0){ | |
| // This is a hack to avoid this being processed by 'transform-runtime'. | |
| // See issue #9. | |
| Object['define' + 'Property'](target, property, desc); | |
| desc = null; | |
| } | |
| return desc; | |
| } | |
| `; | |
| helpers.classPrivateFieldLooseKey = helper("7.0.0-beta.0")` | |
| var id = 0; | |
| export default function _classPrivateFieldKey(name) { | |
| return "__private_" + (id++) + "_" + name; | |
| } | |
| `; | |
| helpers.classPrivateFieldLooseBase = helper("7.0.0-beta.0")` | |
| export default function _classPrivateFieldBase(receiver, privateKey) { | |
| if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { | |
| throw new TypeError("attempted to use private field on non-instance"); | |
| } | |
| return receiver; | |
| } | |
| `; | |
| helpers.classPrivateFieldGet = helper("7.0.0-beta.0")` | |
| export default function _classPrivateFieldGet(receiver, privateMap) { | |
| if (!privateMap.has(receiver)) { | |
| throw new TypeError("attempted to get private field on non-instance"); | |
| } | |
| var descriptor = privateMap.get(receiver); | |
| if (descriptor.get) { | |
| return descriptor.get.call(receiver); | |
| } | |
| return descriptor.value; | |
| } | |
| `; | |
| helpers.classPrivateFieldSet = helper("7.0.0-beta.0")` | |
| export default function _classPrivateFieldSet(receiver, privateMap, value) { | |
| if (!privateMap.has(receiver)) { | |
| throw new TypeError("attempted to set private field on non-instance"); | |
| } | |
| var descriptor = privateMap.get(receiver); | |
| if (descriptor.set) { | |
| descriptor.set.call(receiver, value); | |
| } else { | |
| if (!descriptor.writable) { | |
| // This should only throw in strict mode, but class bodies are | |
| // always strict and private fields can only be used inside | |
| // class bodies. | |
| throw new TypeError("attempted to set read only private field"); | |
| } | |
| descriptor.value = value; | |
| } | |
| return value; | |
| } | |
| `; | |
| helpers.classStaticPrivateFieldSpecGet = helper("7.0.2")` | |
| export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { | |
| if (receiver !== classConstructor) { | |
| throw new TypeError("Private static access of wrong provenance"); | |
| } | |
| return descriptor.value; | |
| } | |
| `; | |
| helpers.classStaticPrivateFieldSpecSet = helper("7.0.2")` | |
| export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { | |
| if (receiver !== classConstructor) { | |
| throw new TypeError("Private static access of wrong provenance"); | |
| } | |
| if (!descriptor.writable) { | |
| // This should only throw in strict mode, but class bodies are | |
| // always strict and private fields can only be used inside | |
| // class bodies. | |
| throw new TypeError("attempted to set read only private field"); | |
| } | |
| descriptor.value = value; | |
| return value; | |
| } | |
| `; | |
| helpers.decorate = helper("7.1.5")` | |
| import toArray from "toArray"; | |
| import toPropertyKey from "toPropertyKey"; | |
| // These comments are stripped by @babel/template | |
| /*:: | |
| type PropertyDescriptor = | |
| | { | |
| value: any, | |
| writable: boolean, | |
| configurable: boolean, | |
| enumerable: boolean, | |
| } | |
| | { | |
| get?: () => any, | |
| set?: (v: any) => void, | |
| configurable: boolean, | |
| enumerable: boolean, | |
| }; | |
| type FieldDescriptor ={ | |
| writable: boolean, | |
| configurable: boolean, | |
| enumerable: boolean, | |
| }; | |
| type Placement = "static" | "prototype" | "own"; | |
| type Key = string | symbol; // PrivateName is not supported yet. | |
| type ElementDescriptor = | |
| | { | |
| kind: "method", | |
| key: Key, | |
| placement: Placement, | |
| descriptor: PropertyDescriptor | |
| } | |
| | { | |
| kind: "field", | |
| key: Key, | |
| placement: Placement, | |
| descriptor: FieldDescriptor, | |
| initializer?: () => any, | |
| }; | |
| // This is exposed to the user code | |
| type ElementObjectInput = ElementDescriptor & { | |
| [@@toStringTag]?: "Descriptor" | |
| }; | |
| // This is exposed to the user code | |
| type ElementObjectOutput = ElementDescriptor & { | |
| [@@toStringTag]?: "Descriptor" | |
| extras?: ElementDescriptor[], | |
| finisher?: ClassFinisher, | |
| }; | |
| // This is exposed to the user code | |
| type ClassObject = { | |
| [@@toStringTag]?: "Descriptor", | |
| kind: "class", | |
| elements: ElementDescriptor[], | |
| }; | |
| type ElementDecorator = (descriptor: ElementObjectInput) => ?ElementObjectOutput; | |
| type ClassDecorator = (descriptor: ClassObject) => ?ClassObject; | |
| type ClassFinisher = <A, B>(cl: Class<A>) => Class<B>; | |
| // Only used by Babel in the transform output, not part of the spec. | |
| type ElementDefinition = | |
| | { | |
| kind: "method", | |
| value: any, | |
| key: Key, | |
| static?: boolean, | |
| decorators?: ElementDecorator[], | |
| } | |
| | { | |
| kind: "field", | |
| value: () => any, | |
| key: Key, | |
| static?: boolean, | |
| decorators?: ElementDecorator[], | |
| }; | |
| declare function ClassFactory<C>(initialize: (instance: C) => void): { | |
| F: Class<C>, | |
| d: ElementDefinition[] | |
| } | |
| */ | |
| /*:: | |
| // Various combinations with/without extras and with one or many finishers | |
| type ElementFinisherExtras = { | |
| element: ElementDescriptor, | |
| finisher?: ClassFinisher, | |
| extras?: ElementDescriptor[], | |
| }; | |
| type ElementFinishersExtras = { | |
| element: ElementDescriptor, | |
| finishers: ClassFinisher[], | |
| extras: ElementDescriptor[], | |
| }; | |
| type ElementsFinisher = { | |
| elements: ElementDescriptor[], | |
| finisher?: ClassFinisher, | |
| }; | |
| type ElementsFinishers = { | |
| elements: ElementDescriptor[], | |
| finishers: ClassFinisher[], | |
| }; | |
| */ | |
| /*:: | |
| type Placements = { | |
| static: Key[], | |
| prototype: Key[], | |
| own: Key[], | |
| }; | |
| */ | |
| // ClassDefinitionEvaluation (Steps 26-*) | |
| export default function _decorate( | |
| decorators /*: ClassDecorator[] */, | |
| factory /*: ClassFactory */, | |
| superClass /*: ?Class<*> */, | |
| mixins /*: ?Array<Function> */, | |
| ) /*: Class<*> */ { | |
| var api = _getDecoratorsApi(); | |
| if (mixins) { | |
| for (var i = 0; i < mixins.length; i++) { | |
| api = mixins[i](api); | |
| } | |
| } | |
| var r = factory(function initialize(O) { | |
| api.initializeInstanceElements(O, decorated.elements); | |
| }, superClass); | |
| var decorated = api.decorateClass( | |
| _coalesceClassElements(r.d.map(_createElementDescriptor)), | |
| decorators, | |
| ); | |
| api.initializeClassElements(r.F, decorated.elements); | |
| return api.runClassFinishers(r.F, decorated.finishers); | |
| } | |
| function _getDecoratorsApi() { | |
| _getDecoratorsApi = function() { | |
| return api; | |
| }; | |
| var api = { | |
| elementsDefinitionOrder: [["method"], ["field"]], | |
| // InitializeInstanceElements | |
| initializeInstanceElements: function( | |
| /*::<C>*/ O /*: C */, | |
| elements /*: ElementDescriptor[] */, | |
| ) { | |
| ["method", "field"].forEach(function(kind) { | |
| elements.forEach(function(element /*: ElementDescriptor */) { | |
| if (element.kind === kind && element.placement === "own") { | |
| this.defineClassElement(O, element); | |
| } | |
| }, this); | |
| }, this); | |
| }, | |
| // InitializeClassElements | |
| initializeClassElements: function( | |
| /*::<C>*/ F /*: Class<C> */, | |
| elements /*: ElementDescriptor[] */, | |
| ) { | |
| var proto = F.prototype; | |
| ["method", "field"].forEach(function(kind) { | |
| elements.forEach(function(element /*: ElementDescriptor */) { | |
| var placement = element.placement; | |
| if ( | |
| element.kind === kind && | |
| (placement === "static" || placement === "prototype") | |
| ) { | |
| var receiver = placement === "static" ? F : proto; | |
| this.defineClassElement(receiver, element); | |
| } | |
| }, this); | |
| }, this); | |
| }, | |
| // DefineClassElement | |
| defineClassElement: function( | |
| /*::<C>*/ receiver /*: C | Class<C> */, | |
| element /*: ElementDescriptor */, | |
| ) { | |
| var descriptor /*: PropertyDescriptor */ = element.descriptor; | |
| if (element.kind === "field") { | |
| var initializer = element.initializer; | |
| descriptor = { | |
| enumerable: descriptor.enumerable, | |
| writable: descriptor.writable, | |
| configurable: descriptor.configurable, | |
| value: initializer === void 0 ? void 0 : initializer.call(receiver), | |
| }; | |
| } | |
| Object.defineProperty(receiver, element.key, descriptor); | |
| }, | |
| // DecorateClass | |
| decorateClass: function( | |
| elements /*: ElementDescriptor[] */, | |
| decorators /*: ClassDecorator[] */, | |
| ) /*: ElementsFinishers */ { | |
| var newElements /*: ElementDescriptor[] */ = []; | |
| var finishers /*: ClassFinisher[] */ = []; | |
| var placements /*: Placements */ = { | |
| static: [], | |
| prototype: [], | |
| own: [], | |
| }; | |
| elements.forEach(function(element /*: ElementDescriptor */) { | |
| this.addElementPlacement(element, placements); | |
| }, this); | |
| elements.forEach(function(element /*: ElementDescriptor */) { | |
| if (!_hasDecorators(element)) return newElements.push(element); | |
| var elementFinishersExtras /*: ElementFinishersExtras */ = this.decorateElement( | |
| element, | |
| placements, | |
| ); | |
| newElements.push(elementFinishersExtras.element); | |
| newElements.push.apply(newElements, elementFinishersExtras.extras); | |
| finishers.push.apply(finishers, elementFinishersExtras.finishers); | |
| }, this); | |
| if (!decorators) { | |
| return { elements: newElements, finishers: finishers }; | |
| } | |
| var result /*: ElementsFinishers */ = this.decorateConstructor( | |
| newElements, | |
| decorators, | |
| ); | |
| finishers.push.apply(finishers, result.finishers); | |
| result.finishers = finishers; | |
| return result; | |
| }, | |
| // AddElementPlacement | |
| addElementPlacement: function( | |
| element /*: ElementDescriptor */, | |
| placements /*: Placements */, | |
| silent /*: boolean */, | |
| ) { | |
| var keys = placements[element.placement]; | |
| if (!silent && keys.indexOf(element.key) !== -1) { | |
| throw new TypeError("Duplicated element (" + element.key + ")"); | |
| } | |
| keys.push(element.key); | |
| }, | |
| // DecorateElement | |
| decorateElement: function( | |
| element /*: ElementDescriptor */, | |
| placements /*: Placements */, | |
| ) /*: ElementFinishersExtras */ { | |
| var extras /*: ElementDescriptor[] */ = []; | |
| var finishers /*: ClassFinisher[] */ = []; | |
| for ( | |
| var decorators = element.decorators, i = decorators.length - 1; | |
| i >= 0; | |
| i-- | |
| ) { | |
| // (inlined) RemoveElementPlacement | |
| var keys = placements[element.placement]; | |
| keys.splice(keys.indexOf(element.key), 1); | |
| var elementObject /*: ElementObjectInput */ = this.fromElementDescriptor( | |
| element, | |
| ); | |
| var elementFinisherExtras /*: ElementFinisherExtras */ = this.toElementFinisherExtras( | |
| (0, decorators[i])(elementObject) /*: ElementObjectOutput */ || | |
| elementObject, | |
| ); | |
| element = elementFinisherExtras.element; | |
| this.addElementPlacement(element, placements); | |
| if (elementFinisherExtras.finisher) { | |
| finishers.push(elementFinisherExtras.finisher); | |
| } | |
| var newExtras /*: ElementDescriptor[] | void */ = | |
| elementFinisherExtras.extras; | |
| if (newExtras) { | |
| for (var j = 0; j < newExtras.length; j++) { | |
| this.addElementPlacement(newExtras[j], placements); | |
| } | |
| extras.push.apply(extras, newExtras); | |
| } | |
| } | |
| return { element: element, finishers: finishers, extras: extras }; | |
| }, | |
| // DecorateConstructor | |
| decorateConstructor: function( | |
| elements /*: ElementDescriptor[] */, | |
| decorators /*: ClassDecorator[] */, | |
| ) /*: ElementsFinishers */ { | |
| var finishers /*: ClassFinisher[] */ = []; | |
| for (var i = decorators.length - 1; i >= 0; i--) { | |
| var obj /*: ClassObject */ = this.fromClassDescriptor(elements); | |
| var elementsAndFinisher /*: ElementsFinisher */ = this.toClassDescriptor( | |
| (0, decorators[i])(obj) /*: ClassObject */ || obj, | |
| ); | |
| if (elementsAndFinisher.finisher !== undefined) { | |
| finishers.push(elementsAndFinisher.finisher); | |
| } | |
| if (elementsAndFinisher.elements !== undefined) { | |
| elements = elementsAndFinisher.elements; | |
| for (var j = 0; j < elements.length - 1; j++) { | |
| for (var k = j + 1; k < elements.length; k++) { | |
| if ( | |
| elements[j].key === elements[k].key && | |
| elements[j].placement === elements[k].placement | |
| ) { | |
| throw new TypeError( | |
| "Duplicated element (" + elements[j].key + ")", | |
| ); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| return { elements: elements, finishers: finishers }; | |
| }, | |
| // FromElementDescriptor | |
| fromElementDescriptor: function( | |
| element /*: ElementDescriptor */, | |
| ) /*: ElementObject */ { | |
| var obj /*: ElementObject */ = { | |
| kind: element.kind, | |
| key: element.key, | |
| placement: element.placement, | |
| descriptor: element.descriptor, | |
| }; | |
| var desc = { | |
| value: "Descriptor", | |
| configurable: true, | |
| }; | |
| Object.defineProperty(obj, Symbol.toStringTag, desc); | |
| if (element.kind === "field") obj.initializer = element.initializer; | |
| return obj; | |
| }, | |
| // ToElementDescriptors | |
| toElementDescriptors: function( | |
| elementObjects /*: ElementObject[] */, | |
| ) /*: ElementDescriptor[] */ { | |
| if (elementObjects === undefined) return; | |
| return toArray(elementObjects).map(function(elementObject) { | |
| var element = this.toElementDescriptor(elementObject); | |
| this.disallowProperty(elementObject, "finisher", "An element descriptor"); | |
| this.disallowProperty(elementObject, "extras", "An element descriptor"); | |
| return element; | |
| }, this); | |
| }, | |
| // ToElementDescriptor | |
| toElementDescriptor: function( | |
| elementObject /*: ElementObject */, | |
| ) /*: ElementDescriptor */ { | |
| var kind = String(elementObject.kind); | |
| if (kind !== "method" && kind !== "field") { | |
| throw new TypeError( | |
| 'An element descriptor\\'s .kind property must be either "method" or' + | |
| ' "field", but a decorator created an element descriptor with' + | |
| ' .kind "' + | |
| kind + | |
| '"', | |
| ); | |
| } | |
| var key = toPropertyKey(elementObject.key); | |
| var placement = String(elementObject.placement); | |
| if ( | |
| placement !== "static" && | |
| placement !== "prototype" && | |
| placement !== "own" | |
| ) { | |
| throw new TypeError( | |
| 'An element descriptor\\'s .placement property must be one of "static",' + | |
| ' "prototype" or "own", but a decorator created an element descriptor' + | |
| ' with .placement "' + | |
| placement + | |
| '"', | |
| ); | |
| } | |
| var descriptor /*: PropertyDescriptor */ = elementObject.descriptor; | |
| this.disallowProperty(elementObject, "elements", "An element descriptor"); | |
| var element /*: ElementDescriptor */ = { | |
| kind: kind, | |
| key: key, | |
| placement: placement, | |
| descriptor: Object.assign({}, descriptor), | |
| }; | |
| if (kind !== "field") { | |
| this.disallowProperty(elementObject, "initializer", "A method descriptor"); | |
| } else { | |
| this.disallowProperty( | |
| descriptor, | |
| "get", | |
| "The property descriptor of a field descriptor", | |
| ); | |
| this.disallowProperty( | |
| descriptor, | |
| "set", | |
| "The property descriptor of a field descriptor", | |
| ); | |
| this.disallowProperty( | |
| descriptor, | |
| "value", | |
| "The property descriptor of a field descriptor", | |
| ); | |
| element.initializer = elementObject.initializer; | |
| } | |
| return element; | |
| }, | |
| toElementFinisherExtras: function( | |
| elementObject /*: ElementObject */, | |
| ) /*: ElementFinisherExtras */ { | |
| var element /*: ElementDescriptor */ = this.toElementDescriptor( | |
| elementObject, | |
| ); | |
| var finisher /*: ClassFinisher */ = _optionalCallableProperty( | |
| elementObject, | |
| "finisher", | |
| ); | |
| var extras /*: ElementDescriptors[] */ = this.toElementDescriptors( | |
| elementObject.extras, | |
| ); | |
| return { element: element, finisher: finisher, extras: |
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)