diff --git a/.idea/misc.xml b/.idea/misc.xml
index 800fcd0..3d7cc4c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,7 @@
-
+
+
+
+
\ No newline at end of file
diff --git a/Museum/app.js b/Museum/app.js
index 83dbdca..025577c 100644
--- a/Museum/app.js
+++ b/Museum/app.js
@@ -263,7 +263,7 @@ router.route('/sales')
if (err)
res.send(err);
else
- res.json({message: 'Ticket created!'});
+ res.json({message: 'Sale created!'});
});
})
@@ -352,7 +352,7 @@ router.route('/exhibit')
if (err)
res.send(err);
else
- res.json({message: 'Person created!'});
+ res.json({message: 'Exhibit created!'});
});
})
@@ -375,6 +375,89 @@ router.route('/exhibit/:id')
delete_function(req, res, ExhibitModel);
});
+//excursion
+router.route('/excursion')
+
+ .post(function (req, res) {
+
+ var excursion = new ExcursionModel({
+ name: reg.bogy.name,
+ time: reg.bogy.time,
+ price : reg.bogy.price,
+ maxPeople: reg.bogy.maxPeople,
+ date: Date.parse(reg.bogy.date),
+ staff: reg.bogy.staff
+ });
+
+ // save the bear and check for errors
+ excursion.save(function (err) {
+ if (err)
+ res.send(err);
+ else
+ res.json({message: 'Excursion created!'});
+ });
+
+ })
+
+ .get(function (req, res) {
+ get_function(req, res, ExcursionModel)
+ });
+
+//do smb by id
+router.route('/excursion/:id')
+ .get(function (req, res) {
+ get_by_id_function(req, res, ExcursionModel);
+ })
+
+ .put(function (req, res) {
+ console.log(req.params.name);
+ put_new_name_function(req, res, ExcursionModel);
+ })
+ .delete(function (req, res) {
+ delete_function(req, res, ExcursionModel);
+ });
+
+//expo
+router.route('/expo')
+
+ .post(function (req, res) {
+
+ var expo = new ExpoModel({
+ name: reg.body.name,
+ startDate: Date.parse(reg.body.startDate),
+ endDate: Date.parse(reg.body.endDate),
+ museum: reg.body.museum,
+ hall: reg.body.hall
+ });
+
+ // save the bear and check for errors
+ expo.save(function (err) {
+ if (err)
+ res.send(err);
+ else
+ res.json({message: 'Expo created!'});
+ });
+
+ })
+
+ .get(function (req, res) {
+ get_function(req, res, ExpoModel)
+ });
+
+//do smb by id
+router.route('/expo/:id')
+ .get(function (req, res) {
+ get_by_id_function(req, res, ExpoModel);
+ })
+
+ .put(function (req, res) {
+ console.log(req.params.name);
+ put_new_name_function(req, res, ExpoModel);
+ })
+ .delete(function (req, res) {
+ delete_function(req, res, ExpoModel);
+ });
+
// catch 404 and forward to error handler
app.use(function (req, res, next) {
var err = new Error('Not Found');
@@ -395,4 +478,4 @@ app.use(function (err, req, res, next) {
});
-module.exports = app;
+module.exports = app;
\ No newline at end of file
diff --git a/Museum/node_modules/.bin/acorn b/Museum/node_modules/.bin/acorn
deleted file mode 100755
index db07909..0000000
--- a/Museum/node_modules/.bin/acorn
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env node
-"use strict";
-
-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)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }
-
-var _path = require("path");
-
-var _fs = require("fs");
-
-var _distAcornJs = require("../dist/acorn.js");
-
-var acorn = _interopRequireWildcard(_distAcornJs);
-
-var infile = undefined,
- forceFile = undefined,
- silent = false,
- compact = false,
- tokenize = false;
-var options = {};
-
-function help(status) {
- var print = status == 0 ? console.log : console.error;
- print("usage: " + (0, _path.basename)(process.argv[1]) + " [--ecma3|--ecma5|--ecma6]");
- print(" [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]");
- process.exit(status);
-}
-
-for (var i = 2; i < process.argv.length; ++i) {
- var arg = process.argv[i];
- if ((arg == "-" || arg[0] != "-") && !infile) infile = arg;else if (arg == "--" && !infile && i + 2 == process.argv.length) forceFile = infile = process.argv[++i];else if (arg == "--ecma3") options.ecmaVersion = 3;else if (arg == "--ecma5") options.ecmaVersion = 5;else if (arg == "--ecma6") options.ecmaVersion = 6;else if (arg == "--locations") options.locations = true;else if (arg == "--allow-hash-bang") options.allowHashBang = true;else if (arg == "--silent") silent = true;else if (arg == "--compact") compact = true;else if (arg == "--help") help(0);else if (arg == "--tokenize") tokenize = true;else if (arg == "--module") options.sourceType = 'module';else help(1);
-}
-
-function run(code) {
- var result = undefined;
- if (!tokenize) {
- try {
- result = acorn.parse(code, options);
- } catch (e) {
- console.error(e.message);process.exit(1);
- }
- } else {
- result = [];
- var tokenizer = acorn.tokenizer(code, options),
- token = undefined;
- while (true) {
- try {
- token = tokenizer.getToken();
- } catch (e) {
- console.error(e.message);process.exit(1);
- }
- result.push(token);
- if (token.type == acorn.tokTypes.eof) break;
- }
- }
- if (!silent) console.log(JSON.stringify(result, null, compact ? null : 2));
-}
-
-if (forceFile || infile && infile != "-") {
- run((0, _fs.readFileSync)(infile, "utf8"));
-} else {
- (function () {
- var code = "";
- process.stdin.resume();
- process.stdin.on("data", function (chunk) {
- return code += chunk;
- });
- process.stdin.on("end", function () {
- return run(code);
- });
- })();
-}
\ No newline at end of file
diff --git a/Museum/node_modules/.bin/cleancss b/Museum/node_modules/.bin/cleancss
deleted file mode 100755
index afe7c84..0000000
--- a/Museum/node_modules/.bin/cleancss
+++ /dev/null
@@ -1,183 +0,0 @@
-#!/usr/bin/env node
-
-var fs = require('fs');
-var path = require('path');
-var CleanCSS = require('../index');
-
-var commands = require('commander');
-
-var packageConfig = fs.readFileSync(path.join(path.dirname(fs.realpathSync(process.argv[1])), '../package.json'));
-var buildVersion = JSON.parse(packageConfig).version;
-
-var isWindows = process.platform == 'win32';
-
-// Specify commander options to parse command line params correctly
-commands
- .version(buildVersion, '-v, --version')
- .usage('[options] source-file, [source-file, ...]')
- .option('-b, --keep-line-breaks', 'Keep line breaks')
- .option('-c, --compatibility [ie7|ie8]', 'Force compatibility mode (see Readme for advanced examples)')
- .option('-d, --debug', 'Shows debug information (minification time & compression efficiency)')
- .option('-o, --output [output-file]', 'Use [output-file] as output instead of STDOUT')
- .option('-r, --root [root-path]', 'Set a root path to which resolve absolute @import rules')
- .option('-s, --skip-import', 'Disable @import processing')
- .option('-t, --timeout [seconds]', 'Per connection timeout when fetching remote @imports (defaults to 5 seconds)')
- .option('--rounding-precision [n]', 'Rounds to `N` decimal places. Defaults to 2. -1 disables rounding', parseInt)
- .option('--s0', 'Remove all special comments, i.e. /*! comment */')
- .option('--s1', 'Remove all special comments but the first one')
- .option('--semantic-merging', 'Enables unsafe mode by assuming BEM-like semantic stylesheets (warning, this may break your styling!)')
- .option('--skip-advanced', 'Disable advanced optimizations - ruleset reordering & merging')
- .option('--skip-aggressive-merging', 'Disable properties merging based on their order')
- .option('--skip-import-from [rules]', 'Disable @import processing for specified rules', function (val) { return val.split(','); }, [])
- .option('--skip-media-merging', 'Disable @media merging')
- .option('--skip-rebase', 'Disable URLs rebasing')
- .option('--skip-restructuring', 'Disable restructuring optimizations')
- .option('--skip-shorthand-compacting', 'Disable shorthand compacting')
- .option('--source-map', 'Enables building input\'s source map')
- .option('--source-map-inline-sources', 'Enables inlining sources inside source maps');
-
-commands.on('--help', function () {
- console.log(' Examples:\n');
- console.log(' %> cleancss one.css');
- console.log(' %> cleancss -o one-min.css one.css');
- if (isWindows) {
- console.log(' %> type one.css two.css three.css | cleancss -o merged-and-minified.css');
- } else {
- console.log(' %> cat one.css two.css three.css | cleancss -o merged-and-minified.css');
- console.log(' %> cat one.css two.css three.css | cleancss | gzip -9 -c > merged-minified-and-gzipped.css.gz');
- }
- console.log('');
- process.exit();
-});
-
-commands.parse(process.argv);
-
-// If no sensible data passed in just print help and exit
-var fromStdin = !process.env.__DIRECT__ && !process.stdin.isTTY;
-if (!fromStdin && commands.args.length === 0) {
- commands.outputHelp();
- return 0;
-}
-
-// Now coerce commands into CleanCSS configuration...
-var options = {
- advanced: commands.skipAdvanced ? false : true,
- aggressiveMerging: commands.skipAggressiveMerging ? false : true,
- compatibility: commands.compatibility,
- debug: commands.debug,
- inliner: commands.timeout ? { timeout: parseFloat(commands.timeout) * 1000 } : undefined,
- keepBreaks: !!commands.keepLineBreaks,
- keepSpecialComments: commands.s0 ? 0 : (commands.s1 ? 1 : '*'),
- mediaMerging: commands.skipMediaMerging ? false : true,
- processImport: commands.skipImport ? false : true,
- processImportFrom: processImportFrom(commands.skipImportFrom),
- rebase: commands.skipRebase ? false : true,
- restructuring: commands.skipRestructuring ? false : true,
- root: commands.root,
- roundingPrecision: commands.roundingPrecision,
- semanticMerging: commands.semanticMerging ? true : false,
- shorthandCompacting: commands.skipShorthandCompacting ? false : true,
- sourceMap: commands.sourceMap,
- sourceMapInlineSources: commands.sourceMapInlineSources,
- target: commands.output
-};
-
-if (options.root || commands.args.length > 0) {
- var relativeTo = options.root || commands.args[0];
-
- if (isRemote(relativeTo)) {
- options.relativeTo = relativeTo;
- } else {
- var resolvedRelativeTo = path.resolve(relativeTo);
-
- options.relativeTo = fs.statSync(resolvedRelativeTo).isFile() ?
- path.dirname(resolvedRelativeTo) :
- resolvedRelativeTo;
- }
-}
-
-if (options.sourceMap && !options.target) {
- outputFeedback(['Source maps will not be built because you have not specified an output file.'], true);
- options.sourceMap = false;
-}
-
-// ... and do the magic!
-if (commands.args.length > 0) {
- minify(commands.args);
-} else {
- var stdin = process.openStdin();
- stdin.setEncoding('utf-8');
- var data = '';
- stdin.on('data', function (chunk) {
- data += chunk;
- });
- stdin.on('end', function () {
- minify(data);
- });
-}
-
-function isRemote(path) {
- return /^https?:\/\//.test(path) || /^\/\//.test(path);
-}
-
-function processImportFrom(rules) {
- if (rules.length === 0) {
- return ['all'];
- } else if (rules.length == 1 && rules[0] == 'all') {
- return [];
- } else {
- return rules.map(function (rule) {
- if (rule == 'local')
- return 'remote';
- else if (rule == 'remote')
- return 'local';
- else
- return '!' + rule;
- });
- }
-}
-
-function minify(data) {
- new CleanCSS(options).minify(data, function (errors, minified) {
- if (options.debug) {
- console.error('Original: %d bytes', minified.stats.originalSize);
- console.error('Minified: %d bytes', minified.stats.minifiedSize);
- console.error('Efficiency: %d%', ~~(minified.stats.efficiency * 10000) / 100.0);
- console.error('Time spent: %dms', minified.stats.timeSpent);
- }
-
- outputFeedback(minified.errors, true);
- outputFeedback(minified.warnings);
-
- if (minified.errors.length > 0)
- process.exit(1);
-
- if (minified.sourceMap) {
- var mapFilename = path.basename(options.target) + '.map';
- output(minified.styles + '/*# sourceMappingURL=' + mapFilename + ' */');
- outputMap(minified.sourceMap, mapFilename);
- } else {
- output(minified.styles);
- }
- });
-}
-
-function output(minified) {
- if (options.target)
- fs.writeFileSync(options.target, minified, 'utf8');
- else
- process.stdout.write(minified);
-}
-
-function outputMap(sourceMap, mapFilename) {
- var mapPath = path.join(path.dirname(options.target), mapFilename);
- fs.writeFileSync(mapPath, sourceMap.toString(), 'utf-8');
-}
-
-function outputFeedback(messages, isError) {
- var prefix = isError ? '\x1B[31mERROR\x1B[39m:' : 'WARNING:';
-
- messages.forEach(function (message) {
- console.error('%s %s', prefix, message);
- });
-}
diff --git a/Museum/node_modules/.bin/jade b/Museum/node_modules/.bin/jade
deleted file mode 100755
index a2c509f..0000000
--- a/Museum/node_modules/.bin/jade
+++ /dev/null
@@ -1,295 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var fs = require('fs')
- , program = require('commander')
- , path = require('path')
- , basename = path.basename
- , dirname = path.dirname
- , resolve = path.resolve
- , normalize = path.normalize
- , join = path.join
- , mkdirp = require('mkdirp')
- , jade = require('../');
-
-// jade options
-
-var options = {};
-
-// options
-
-program
- .version(require('../package.json').version)
- .usage('[options] [dir|file ...]')
- .option('-O, --obj ', 'JavaScript options object or JSON file containing it')
- .option('-o, --out ', 'output the compiled html to ')
- .option('-p, --path ', 'filename used to resolve includes')
- .option('-P, --pretty', 'compile pretty html output')
- .option('-c, --client', 'compile function for client-side runtime.js')
- .option('-n, --name ', 'The name of the compiled template (requires --client)')
- .option('-D, --no-debug', 'compile without debugging (smaller functions)')
- .option('-w, --watch', 'watch files for changes and automatically re-render')
- .option('-E, --extension ', 'specify the output file extension')
- .option('-H, --hierarchy', 'keep directory hierarchy when a directory is specified')
- .option('--name-after-file', 'Name the template after the last section of the file path (requires --client and overriden by --name)')
- .option('--doctype ', 'Specify the doctype on the command line (useful if it is not specified by the template)')
-
-
-program.on('--help', function(){
- console.log(' Examples:');
- console.log('');
- console.log(' # translate jade the templates dir');
- console.log(' $ jade templates');
- console.log('');
- console.log(' # create {foo,bar}.html');
- console.log(' $ jade {foo,bar}.jade');
- console.log('');
- console.log(' # jade over stdio');
- console.log(' $ jade < my.jade > my.html');
- console.log('');
- console.log(' # jade over stdio');
- console.log(' $ echo \'h1 Jade!\' | jade');
- console.log('');
- console.log(' # foo, bar dirs rendering to /tmp');
- console.log(' $ jade foo bar --out /tmp ');
- console.log('');
-});
-
-program.parse(process.argv);
-
-// options given, parse them
-
-if (program.obj) {
- options = parseObj(program.obj);
-}
-
-/**
- * Parse object either in `input` or in the file called `input`. The latter is
- * searched first.
- */
-function parseObj (input) {
- var str, out;
- try {
- str = fs.readFileSync(program.obj);
- } catch (e) {
- return eval('(' + program.obj + ')');
- }
- // We don't want to catch exceptions thrown in JSON.parse() so have to
- // use this two-step approach.
- return JSON.parse(str);
-}
-
-// --path
-
-if (program.path) options.filename = program.path;
-
-// --no-debug
-
-options.compileDebug = program.debug;
-
-// --client
-
-options.client = program.client;
-
-// --pretty
-
-options.pretty = program.pretty;
-
-// --watch
-
-options.watch = program.watch;
-
-// --name
-
-if (typeof program.name === 'string') {
- options.name = program.name;
-}
-
-// --doctype
-
-options.doctype = program.doctype;
-
-// left-over args are file paths
-
-var files = program.args;
-
-// array of paths that are being watched
-
-var watchList = [];
-
-// function for rendering
-var render = program.watch ? tryRender : renderFile;
-
-// compile files
-
-if (files.length) {
- console.log();
- if (options.watch) {
- process.on('SIGINT', function() {
- process.exit(1);
- });
- }
- files.forEach(function (file) {
- render(file);
- });
- process.on('exit', function () {
- console.log();
- });
-// stdio
-} else {
- stdin();
-}
-
-/**
- * Watch for changes on path
- *
- * Renders `base` if specified, otherwise renders `path`.
- */
-function watchFile(path, base, rootPath) {
- path = normalize(path);
- if (watchList.indexOf(path) !== -1) return;
- console.log(" \033[90mwatching \033[36m%s\033[0m", path);
- fs.watchFile(path, {persistent: true, interval: 200},
- function (curr, prev) {
- // File doesn't exist anymore. Keep watching.
- if (curr.mtime.getTime() === 0) return;
- // istanbul ignore if
- if (curr.mtime.getTime() === prev.mtime.getTime()) return;
- tryRender(base || path, rootPath);
- });
- watchList.push(path);
-}
-
-/**
- * Convert error to string
- */
-function errorToString(e) {
- return e.stack || /* istanbul ignore next */ (e.message || e);
-}
-
-/**
- * Try to render `path`; if an exception is thrown it is printed to stderr and
- * otherwise ignored.
- *
- * This is used in watch mode.
- */
-function tryRender(path, rootPath) {
- try {
- renderFile(path, rootPath);
- } catch (e) {
- // keep watching when error occured.
- console.error(errorToString(e));
- }
-}
-
-/**
- * Compile from stdin.
- */
-
-function stdin() {
- var buf = '';
- process.stdin.setEncoding('utf8');
- process.stdin.on('data', function(chunk){ buf += chunk; });
- process.stdin.on('end', function(){
- var output;
- if (options.client) {
- output = jade.compileClient(buf, options);
- } else {
- var fn = jade.compile(buf, options);
- var output = fn(options);
- }
- process.stdout.write(output);
- }).resume();
-
- process.on('SIGINT', function() {
- process.stdout.write('\n');
- process.stdin.emit('end');
- process.stdout.write('\n');
- process.exit();
- })
-}
-
-var hierarchyWarned = false;
-
-/**
- * Process the given path, compiling the jade files found.
- * Always walk the subdirectories.
- *
- * @param path path of the file, might be relative
- * @param rootPath path relative to the directory specified in the command
- */
-
-function renderFile(path, rootPath) {
- var re = /\.jade$/;
- var stat = fs.lstatSync(path);
- // Found jade file/\.jade$/
- if (stat.isFile() && re.test(path)) {
- // Try to watch the file if needed. watchFile takes care of duplicates.
- if (options.watch) watchFile(path, null, rootPath);
- if (program.nameAfterFile) {
- options.name = getNameFromFileName(path);
- }
- var fn = options.client
- ? jade.compileFileClient(path, options)
- : jade.compileFile(path, options);
- if (options.watch && fn.dependencies) {
- // watch dependencies, and recompile the base
- fn.dependencies.forEach(function (dep) {
- watchFile(dep, path, rootPath);
- });
- }
-
- // --extension
- var extname;
- if (program.extension) extname = '.' + program.extension;
- else if (options.client) extname = '.js';
- else extname = '.html';
-
- // path: foo.jade -> foo.
- path = path.replace(re, extname);
- if (program.out) {
- // prepend output directory
- if (rootPath && program.hierarchy) {
- // replace the rootPath of the resolved path with output directory
- path = resolve(path).replace(new RegExp('^' + resolve(rootPath)), '');
- path = join(program.out, path);
- } else {
- if (rootPath && !hierarchyWarned) {
- console.warn('In Jade 2.0.0 --hierarchy will become the default.');
- hierarchyWarned = true;
- }
- // old behavior or if no rootPath handling is needed
- path = join(program.out, basename(path));
- }
- }
- var dir = resolve(dirname(path));
- mkdirp.sync(dir, 0755);
- var output = options.client ? fn : fn(options);
- fs.writeFileSync(path, output);
- console.log(' \033[90mrendered \033[36m%s\033[0m', normalize(path));
- // Found directory
- } else if (stat.isDirectory()) {
- var files = fs.readdirSync(path);
- files.map(function(filename) {
- return path + '/' + filename;
- }).forEach(function (file) {
- render(file, rootPath || path);
- });
- }
-}
-
-/**
- * Get a sensible name for a template function from a file path
- *
- * @param {String} filename
- * @returns {String}
- */
-function getNameFromFileName(filename) {
- var file = basename(filename, '.jade');
- return file.toLowerCase().replace(/[^a-z0-9]+([a-z])/g, function (_, character) {
- return character.toUpperCase();
- }) + 'Template';
-}
diff --git a/Museum/node_modules/.bin/mime b/Museum/node_modules/.bin/mime
deleted file mode 100755
index 20b1ffe..0000000
--- a/Museum/node_modules/.bin/mime
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env node
-
-var mime = require('./mime.js');
-var file = process.argv[2];
-var type = mime.lookup(file);
-
-process.stdout.write(type + '\n');
-
diff --git a/Museum/node_modules/.bin/mkdirp b/Museum/node_modules/.bin/mkdirp
deleted file mode 100755
index d95de15..0000000
--- a/Museum/node_modules/.bin/mkdirp
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/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();
- }
-})();
diff --git a/Museum/node_modules/.bin/uglifyjs b/Museum/node_modules/.bin/uglifyjs
deleted file mode 100755
index ce2e941..0000000
--- a/Museum/node_modules/.bin/uglifyjs
+++ /dev/null
@@ -1,593 +0,0 @@
-#! /usr/bin/env node
-// -*- js -*-
-
-"use strict";
-
-var UglifyJS = require("../tools/node");
-var sys = require("util");
-var yargs = require("yargs");
-var fs = require("fs");
-var path = require("path");
-var async = require("async");
-var acorn;
-var screw_ie8 = true;
-var ARGS = yargs
- .usage("$0 input1.js [input2.js ...] [options]\n\
-Use a single dash to read input from the standard input.\
-\n\n\
-NOTE: by default there is no mangling/compression.\n\
-Without [options] it will simply parse input files and dump the AST\n\
-with whitespace and comments discarded. To achieve compression and\n\
-mangling you need to use `-c` and `-m`.\
-")
- .describe("source-map", "Specify an output file where to generate source map.")
- .describe("source-map-root", "The path to the original source to be included in the source map.")
- .describe("source-map-url", "The path to the source map to be added in //# sourceMappingURL. Defaults to the value passed with --source-map.")
- .describe("source-map-inline", "Write base64-encoded source map to the end of js output. Disabled by default")
- .describe("source-map-include-sources", "Pass this flag if you want to include the content of source files in the source map as sourcesContent property.")
- .describe("in-source-map", "Input source map, useful if you're compressing JS that was generated from some other original code.")
- .describe("screw-ie8", "Do not support Internet Explorer 6-8 quirks. This flag is enabled by default.")
- .describe("support-ie8", "Support non-standard Internet Explorer 6-8 javascript. Note: may break standards compliant `catch` identifiers.")
- .describe("expr", "Parse a single expression, rather than a program (for parsing JSON)")
- .describe("p", "Skip prefix for original filenames that appear in source maps. \
-For example -p 3 will drop 3 directories from file names and ensure they are relative paths. \
-You can also specify -p relative, which will make UglifyJS figure out itself the relative paths between original sources, \
-the source map and the output file.")
- .describe("o", "Output file (default STDOUT).")
- .describe("b", "Beautify output/specify output options.")
- .describe("m", "Mangle names/pass mangler options.")
- .describe("r", "Reserved names to exclude from mangling.")
- .describe("c", "Enable compressor/pass compressor options. \
-Pass options like -c hoist_vars=false,if_return=false. \
-Use -c with no argument to use the default compression options.")
- .describe("d", "Global definitions")
- .describe("e", "Embed everything in a big function, with a configurable parameter/argument list.")
-
- .describe("comments", "Preserve copyright comments in the output. \
-By default this works like Google Closure, keeping JSDoc-style comments that contain \"@license\" or \"@preserve\". \
-You can optionally pass one of the following arguments to this flag:\n\
-- \"all\" to keep all comments\n\
-- a valid JS RegExp like `/foo/`or `/^!/` to keep only matching comments.\n\
-\
-Note that currently not *all* comments can be kept when compression is on, \
-because of dead code removal or cascading statements into sequences.")
-
- .describe("preamble", "Preamble to prepend to the output. You can use this to insert a \
-comment, for example for licensing information. This will not be \
-parsed, but the source map will adjust for its presence.")
-
- .describe("stats", "Display operations run time on STDERR.")
- .describe("acorn", "Use Acorn for parsing.")
- .describe("spidermonkey", "Assume input files are SpiderMonkey AST format (as JSON).")
- .describe("self", "Build itself (UglifyJS2) as a library (implies --wrap=UglifyJS --export-all)")
- .describe("wrap", "Embed everything in a big function, making the “exports” and “global” variables available. \
-You need to pass an argument to this option to specify the name that your module will take when included in, say, a browser.")
- .describe("export-all", "Only used when --wrap, this tells UglifyJS to add code to automatically export all globals.")
- .describe("lint", "Display some scope warnings")
- .describe("v", "Verbose")
- .describe("V", "Print version number and exit.")
- .describe("noerr", "Don't throw an error for unknown options in -c, -b or -m.")
- .describe("bare-returns", "Allow return outside of functions. Useful when minifying CommonJS modules.")
- .describe("keep-fnames", "Do not mangle/drop function names. Useful for code relying on Function.prototype.name.")
- .describe("quotes", "Quote style (0 - auto, 1 - single, 2 - double, 3 - original)")
- .describe("reserved-file", "File containing reserved names")
- .describe("reserve-domprops", "Make (most?) DOM properties reserved for --mangle-props")
- .describe("mangle-props", "Mangle property names (0 - disabled, 1 - mangle all properties, 2 - mangle unquoted properies)")
- .describe("mangle-regex", "Only mangle property names matching the regex")
- .describe("name-cache", "File to hold mangled names mappings")
- .describe("pure-funcs", "List of functions that can be safely removed if their return value is not used")
- .describe("dump-spidermonkey-ast", "Dump SpiderMonkey AST to stdout.")
- .describe("wrap-iife", "Wrap IIFEs in parenthesis. Note: this disables the negate_iife compression option")
-
- .alias("p", "prefix")
- .alias("o", "output")
- .alias("v", "verbose")
- .alias("b", "beautify")
- .alias("m", "mangle")
- .alias("c", "compress")
- .alias("d", "define")
- .alias("r", "reserved")
- .alias("V", "version")
- .alias("e", "enclose")
- .alias("q", "quotes")
-
- .string("source-map")
- .string("source-map-root")
- .string("source-map-url")
- .string("b")
- .string("beautify")
- .string("m")
- .string("mangle")
- .string("c")
- .string("compress")
- .string("d")
- .string("define")
- .string("e")
- .string("enclose")
- .string("comments")
- .string("wrap")
- .string("p")
- .string("prefix")
- .string("name-cache")
-
- .array("reserved-file")
- .array("pure-funcs")
-
- .boolean("expr")
- .boolean("source-map-inline")
- .boolean("source-map-include-sources")
- .boolean("screw-ie8")
- .boolean("support-ie8")
- .boolean("export-all")
- .boolean("self")
- .boolean("v")
- .boolean("verbose")
- .boolean("stats")
- .boolean("acorn")
- .boolean("spidermonkey")
- .boolean("dump-spidermonkey-ast")
- .boolean("lint")
- .boolean("V")
- .boolean("version")
- .boolean("noerr")
- .boolean("bare-returns")
- .boolean("keep-fnames")
- .boolean("reserve-domprops")
- .boolean("wrap-iife")
-
- .wrap(80)
-
- .argv
-;
-
-normalize(ARGS);
-
-if (ARGS.noerr) {
- UglifyJS.DefaultsError.croak = function(msg, defs) {
- print_error("WARN: " + msg);
- };
-}
-
-if (ARGS.version || ARGS.V) {
- var json = require("../package.json");
- print(json.name + ' ' + json.version);
- process.exit(0);
-}
-
-if (ARGS.ast_help) {
- var desc = UglifyJS.describe_ast();
- print(typeof desc == "string" ? desc : JSON.stringify(desc, null, 2));
- process.exit(0);
-}
-
-if (ARGS.h || ARGS.help) {
- print(yargs.help());
- process.exit(0);
-}
-
-if (ARGS.acorn) {
- acorn = require("acorn");
-}
-
-var COMPRESS = getOptions("c", true);
-var MANGLE = getOptions("m", true);
-var BEAUTIFY = getOptions("b", true);
-var RESERVED = null;
-
-if (ARGS.reserved_file) ARGS.reserved_file.forEach(function(filename){
- RESERVED = UglifyJS.readReservedFile(filename, RESERVED);
-});
-
-if (ARGS.reserve_domprops) {
- RESERVED = UglifyJS.readDefaultReservedFile(RESERVED);
-}
-
-if (ARGS.d) {
- if (COMPRESS) COMPRESS.global_defs = getOptions("d");
-}
-
-if (ARGS.pure_funcs) {
- if (COMPRESS) COMPRESS.pure_funcs = ARGS.pure_funcs;
-}
-
-if (ARGS.r) {
- if (MANGLE) MANGLE.except = ARGS.r.replace(/^\s+|\s+$/g).split(/\s*,+\s*/);
-}
-
-if (RESERVED && MANGLE) {
- if (!MANGLE.except) MANGLE.except = RESERVED.vars;
- else MANGLE.except = MANGLE.except.concat(RESERVED.vars);
-}
-
-function readNameCache(key) {
- return UglifyJS.readNameCache(ARGS.name_cache, key);
-}
-
-function writeNameCache(key, cache) {
- return UglifyJS.writeNameCache(ARGS.name_cache, key, cache);
-}
-
-function extractRegex(str) {
- if (/^\/.*\/[a-zA-Z]*$/.test(str)) {
- var regex_pos = str.lastIndexOf("/");
- return new RegExp(str.substr(1, regex_pos - 1), str.substr(regex_pos + 1));
- } else {
- throw new Error("Invalid regular expression: " + str);
- }
-}
-
-if (ARGS.quotes === true) {
- ARGS.quotes = 3;
-}
-
-if (ARGS.mangle_props === true) {
- ARGS.mangle_props = 1;
-} else if (ARGS.mangle_props === "unquoted") {
- ARGS.mangle_props = 2;
-}
-
-var OUTPUT_OPTIONS = {
- beautify : BEAUTIFY ? true : false,
- preamble : ARGS.preamble || null,
- quote_style : ARGS.quotes != null ? ARGS.quotes : 0
-};
-
-if (ARGS.mangle_props == 2) {
- OUTPUT_OPTIONS.keep_quoted_props = true;
- if (COMPRESS && !("properties" in COMPRESS))
- COMPRESS.properties = false;
-}
-
-if (ARGS.support_ie8 === true && ARGS.screw_ie8 !== true) {
- screw_ie8 = false;
-}
-
-if (COMPRESS) COMPRESS.screw_ie8 = screw_ie8;
-if (MANGLE) MANGLE.screw_ie8 = screw_ie8;
-OUTPUT_OPTIONS.screw_ie8 = screw_ie8;
-
-if (ARGS.keep_fnames) {
- if (COMPRESS) COMPRESS.keep_fnames = true;
- if (MANGLE) MANGLE.keep_fnames = true;
-}
-
-if (ARGS.wrap_iife) {
- if (COMPRESS) COMPRESS.negate_iife = false;
- OUTPUT_OPTIONS.wrap_iife = true;
-}
-
-if (BEAUTIFY)
- UglifyJS.merge(OUTPUT_OPTIONS, BEAUTIFY);
-
-if (ARGS.comments === "") {
- OUTPUT_OPTIONS.comments = "some";
-} else {
- OUTPUT_OPTIONS.comments = ARGS.comments;
-}
-
-var files = ARGS._.slice();
-
-if (process.platform === "win32")
- files = UglifyJS.simple_glob(files);
-
-if (ARGS.self) {
- if (files.length > 0) {
- print_error("WARN: Ignoring input files since --self was passed");
- }
- files = UglifyJS.FILES;
- if (!ARGS.wrap) ARGS.wrap = "UglifyJS";
-}
-
-var ORIG_MAP = ARGS.in_source_map;
-
-if (ORIG_MAP) {
- ORIG_MAP = JSON.parse(fs.readFileSync(ORIG_MAP));
- if (files.length == 0) {
- print_error("INFO: Using file from the input source map: " + ORIG_MAP.file);
- files = [ ORIG_MAP.file ];
- }
- if (ARGS.source_map_root == null) {
- ARGS.source_map_root = ORIG_MAP.sourceRoot;
- }
-}
-
-if (files.length == 0) {
- files = [ "-" ];
-}
-
-if (files.indexOf("-") >= 0 && ARGS.source_map) {
- print_error("ERROR: Source map doesn't work with input from STDIN");
- process.exit(1);
-}
-
-if (files.filter(function(el){ return el == "-" }).length > 1) {
- print_error("ERROR: Can read a single file from STDIN (two or more dashes specified)");
- process.exit(1);
-}
-
-var STATS = {};
-var OUTPUT_FILE = ARGS.o;
-var TOPLEVEL = null;
-var P_RELATIVE = ARGS.p && ARGS.p == "relative";
-var SOURCES_CONTENT = {};
-
-var SOURCE_MAP = (ARGS.source_map || ARGS.source_map_inline) ? UglifyJS.SourceMap({
- file: P_RELATIVE ? path.relative(path.dirname(ARGS.source_map), OUTPUT_FILE) : OUTPUT_FILE,
- root: ARGS.source_map_root,
- orig: ORIG_MAP,
-}) : null;
-
-OUTPUT_OPTIONS.source_map = SOURCE_MAP;
-
-try {
- var output = UglifyJS.OutputStream(OUTPUT_OPTIONS);
- var compressor = COMPRESS && UglifyJS.Compressor(COMPRESS);
-} catch(ex) {
- if (ex instanceof UglifyJS.DefaultsError) {
- print_error(ex.msg);
- print_error("Supported options:");
- print_error(sys.inspect(ex.defs));
- process.exit(1);
- }
-}
-
-async.eachLimit(files, 1, function (file, cb) {
- read_whole_file(file, function (err, code) {
- if (err) {
- print_error("ERROR: can't read file: " + file);
- process.exit(1);
- }
- if (ARGS.p != null) {
- if (P_RELATIVE) {
- file = path.relative(path.dirname(ARGS.source_map), file).replace(/\\/g, '/');
- } else {
- var p = parseInt(ARGS.p, 10);
- if (!isNaN(p)) {
- file = file.replace(/^\/+/, "").split(/\/+/).slice(ARGS.p).join("/");
- }
- }
- }
- SOURCES_CONTENT[file] = code;
- time_it("parse", function(){
- if (ARGS.spidermonkey) {
- var program = JSON.parse(code);
- if (!TOPLEVEL) TOPLEVEL = program;
- else TOPLEVEL.body = TOPLEVEL.body.concat(program.body);
- }
- else if (ARGS.acorn) {
- TOPLEVEL = acorn.parse(code, {
- locations : true,
- sourceFile : file,
- program : TOPLEVEL
- });
- }
- else {
- try {
- TOPLEVEL = UglifyJS.parse(code, {
- filename : file,
- toplevel : TOPLEVEL,
- expression : ARGS.expr,
- bare_returns : ARGS.bare_returns,
- });
- } catch(ex) {
- if (ex instanceof UglifyJS.JS_Parse_Error) {
- print_error("Parse error at " + file + ":" + ex.line + "," + ex.col);
- print_error(ex.message);
- print_error(ex.stack);
- process.exit(1);
- }
- throw ex;
- }
- };
- });
- cb();
- });
-}, function () {
- if (ARGS.acorn || ARGS.spidermonkey) time_it("convert_ast", function(){
- TOPLEVEL = UglifyJS.AST_Node.from_mozilla_ast(TOPLEVEL);
- });
-
- if (ARGS.wrap != null) {
- TOPLEVEL = TOPLEVEL.wrap_commonjs(ARGS.wrap, ARGS.export_all);
- }
-
- if (ARGS.enclose != null) {
- var arg_parameter_list = ARGS.enclose;
- if (arg_parameter_list === true) {
- arg_parameter_list = [];
- }
- else if (!(arg_parameter_list instanceof Array)) {
- arg_parameter_list = [arg_parameter_list];
- }
- TOPLEVEL = TOPLEVEL.wrap_enclose(arg_parameter_list);
- }
-
- if (ARGS.mangle_props || ARGS.name_cache) (function(){
- var reserved = RESERVED ? RESERVED.props : null;
- var cache = readNameCache("props");
- var regex;
-
- try {
- regex = ARGS.mangle_regex ? extractRegex(ARGS.mangle_regex) : null;
- } catch (e) {
- print_error("ERROR: Invalid --mangle-regex: " + e.message);
- process.exit(1);
- }
-
- TOPLEVEL = UglifyJS.mangle_properties(TOPLEVEL, {
- reserved : reserved,
- cache : cache,
- only_cache : !ARGS.mangle_props,
- regex : regex,
- ignore_quoted : ARGS.mangle_props == 2
- });
- writeNameCache("props", cache);
- })();
-
- var SCOPE_IS_NEEDED = COMPRESS || MANGLE || ARGS.lint
- var TL_CACHE = readNameCache("vars");
-
- if (SCOPE_IS_NEEDED) {
- time_it("scope", function(){
- TOPLEVEL.figure_out_scope({ screw_ie8: screw_ie8, cache: TL_CACHE });
- if (ARGS.lint) {
- TOPLEVEL.scope_warnings();
- }
- });
- }
-
- if (COMPRESS) {
- time_it("squeeze", function(){
- TOPLEVEL = compressor.compress(TOPLEVEL);
- });
- }
-
- if (SCOPE_IS_NEEDED) {
- time_it("scope", function(){
- TOPLEVEL.figure_out_scope({ screw_ie8: screw_ie8, cache: TL_CACHE });
- if (MANGLE && !TL_CACHE) {
- TOPLEVEL.compute_char_frequency(MANGLE);
- }
- });
- }
-
- if (MANGLE) time_it("mangle", function(){
- MANGLE.cache = TL_CACHE;
- TOPLEVEL.mangle_names(MANGLE);
- });
-
- writeNameCache("vars", TL_CACHE);
-
- if (ARGS.source_map_include_sources) {
- for (var file in SOURCES_CONTENT) {
- if (SOURCES_CONTENT.hasOwnProperty(file)) {
- SOURCE_MAP.get().setSourceContent(file, SOURCES_CONTENT[file]);
- }
- }
- }
-
- if (ARGS.dump_spidermonkey_ast) {
- print(JSON.stringify(TOPLEVEL.to_mozilla_ast(), null, 2));
- } else {
- time_it("generate", function(){
- TOPLEVEL.print(output);
- });
-
- output = output.get();
-
- if (SOURCE_MAP) {
- if (ARGS.source_map_inline) {
- var base64_string = new Buffer(SOURCE_MAP.toString()).toString('base64');
- output += "\n//# sourceMappingURL=data:application/json;charset=utf-8;base64," + base64_string;
- } else {
- fs.writeFileSync(ARGS.source_map, SOURCE_MAP, "utf8");
- var source_map_url = ARGS.source_map_url || (
- P_RELATIVE
- ? path.relative(path.dirname(OUTPUT_FILE), ARGS.source_map)
- : ARGS.source_map
- );
- output += "\n//# sourceMappingURL=" + source_map_url;
- }
- }
-
- if (OUTPUT_FILE) {
- fs.writeFileSync(OUTPUT_FILE, output, "utf8");
- } else {
- print(output);
- }
- }
-
- if (ARGS.stats) {
- print_error(UglifyJS.string_template("Timing information (compressed {count} files):", {
- count: files.length
- }));
- for (var i in STATS) if (STATS.hasOwnProperty(i)) {
- print_error(UglifyJS.string_template("- {name}: {time}s", {
- name: i,
- time: (STATS[i] / 1000).toFixed(3)
- }));
- }
- }
-});
-
-/* -----[ functions ]----- */
-
-function normalize(o) {
- for (var i in o) if (o.hasOwnProperty(i) && /-/.test(i)) {
- o[i.replace(/-/g, "_")] = o[i];
- delete o[i];
- }
-}
-
-function getOptions(flag, constants) {
- var x = ARGS[flag];
- if (x == null || x === false) return null;
- var ret = {};
- if (x !== "") {
- if (Array.isArray(x)) x = x.map(function (v) { return "(" + v + ")"; }).join(", ");
-
- var ast;
- try {
- ast = UglifyJS.parse(x, { expression: true });
- } catch(ex) {
- if (ex instanceof UglifyJS.JS_Parse_Error) {
- print_error("Error parsing arguments for flag `" + flag + "': " + x);
- process.exit(1);
- }
- }
- ast.walk(new UglifyJS.TreeWalker(function(node){
- if (node instanceof UglifyJS.AST_Seq) return; // descend
- if (node instanceof UglifyJS.AST_Assign) {
- var name = node.left.print_to_string({ beautify: false }).replace(/-/g, "_");
- var value = node.right;
- if (constants)
- value = new Function("return (" + value.print_to_string() + ")")();
- ret[name] = value;
- return true; // no descend
- }
- if (node instanceof UglifyJS.AST_Symbol || node instanceof UglifyJS.AST_Binary) {
- var name = node.print_to_string({ beautify: false }).replace(/-/g, "_");
- ret[name] = true;
- return true; // no descend
- }
- print_error(node.TYPE)
- print_error("Error parsing arguments for flag `" + flag + "': " + x);
- process.exit(1);
- }));
- }
- return ret;
-}
-
-function read_whole_file(filename, cb) {
- if (filename == "-") {
- var chunks = [];
- process.stdin.setEncoding('utf-8');
- process.stdin.on('data', function (chunk) {
- chunks.push(chunk);
- }).on('end', function () {
- cb(null, chunks.join(""));
- });
- process.openStdin();
- } else {
- fs.readFile(filename, "utf-8", cb);
- }
-}
-
-function time_it(name, cont) {
- var t1 = new Date().getTime();
- var ret = cont();
- if (ARGS.stats) {
- var spent = new Date().getTime() - t1;
- if (STATS[name]) STATS[name] += spent;
- else STATS[name] = spent;
- }
- return ret;
-}
-
-function print_error(msg) {
- console.error("%s", msg);
-}
-
-function print(txt) {
- console.log("%s", txt);
-}
diff --git a/Museum/node_modules/accepts/HISTORY.md b/Museum/node_modules/accepts/HISTORY.md
deleted file mode 100644
index 0477ed7..0000000
--- a/Museum/node_modules/accepts/HISTORY.md
+++ /dev/null
@@ -1,212 +0,0 @@
-1.3.3 / 2016-05-02
-==================
-
- * deps: mime-types@~2.1.11
- - deps: mime-db@~1.23.0
- * deps: negotiator@0.6.1
- - perf: improve `Accept` parsing speed
- - perf: improve `Accept-Charset` parsing speed
- - perf: improve `Accept-Encoding` parsing speed
- - perf: improve `Accept-Language` parsing speed
-
-1.3.2 / 2016-03-08
-==================
-
- * deps: mime-types@~2.1.10
- - Fix extension of `application/dash+xml`
- - Update primary extension for `audio/mp4`
- - deps: mime-db@~1.22.0
-
-1.3.1 / 2016-01-19
-==================
-
- * deps: mime-types@~2.1.9
- - deps: mime-db@~1.21.0
-
-1.3.0 / 2015-09-29
-==================
-
- * deps: mime-types@~2.1.7
- - deps: mime-db@~1.19.0
- * deps: negotiator@0.6.0
- - Fix including type extensions in parameters in `Accept` parsing
- - Fix parsing `Accept` parameters with quoted equals
- - Fix parsing `Accept` parameters with quoted semicolons
- - Lazy-load modules from main entry point
- - perf: delay type concatenation until needed
- - perf: enable strict mode
- - perf: hoist regular expressions
- - perf: remove closures getting spec properties
- - perf: remove a closure from media type parsing
- - perf: remove property delete from media type parsing
-
-1.2.13 / 2015-09-06
-===================
-
- * deps: mime-types@~2.1.6
- - deps: mime-db@~1.18.0
-
-1.2.12 / 2015-07-30
-===================
-
- * deps: mime-types@~2.1.4
- - deps: mime-db@~1.16.0
-
-1.2.11 / 2015-07-16
-===================
-
- * deps: mime-types@~2.1.3
- - deps: mime-db@~1.15.0
-
-1.2.10 / 2015-07-01
-===================
-
- * deps: mime-types@~2.1.2
- - deps: mime-db@~1.14.0
-
-1.2.9 / 2015-06-08
-==================
-
- * deps: mime-types@~2.1.1
- - perf: fix deopt during mapping
-
-1.2.8 / 2015-06-07
-==================
-
- * deps: mime-types@~2.1.0
- - deps: mime-db@~1.13.0
- * perf: avoid argument reassignment & argument slice
- * perf: avoid negotiator recursive construction
- * perf: enable strict mode
- * perf: remove unnecessary bitwise operator
-
-1.2.7 / 2015-05-10
-==================
-
- * deps: negotiator@0.5.3
- - Fix media type parameter matching to be case-insensitive
-
-1.2.6 / 2015-05-07
-==================
-
- * deps: mime-types@~2.0.11
- - deps: mime-db@~1.9.1
- * deps: negotiator@0.5.2
- - Fix comparing media types with quoted values
- - Fix splitting media types with quoted commas
-
-1.2.5 / 2015-03-13
-==================
-
- * deps: mime-types@~2.0.10
- - deps: mime-db@~1.8.0
-
-1.2.4 / 2015-02-14
-==================
-
- * Support Node.js 0.6
- * deps: mime-types@~2.0.9
- - deps: mime-db@~1.7.0
- * deps: negotiator@0.5.1
- - Fix preference sorting to be stable for long acceptable lists
-
-1.2.3 / 2015-01-31
-==================
-
- * deps: mime-types@~2.0.8
- - deps: mime-db@~1.6.0
-
-1.2.2 / 2014-12-30
-==================
-
- * deps: mime-types@~2.0.7
- - deps: mime-db@~1.5.0
-
-1.2.1 / 2014-12-30
-==================
-
- * deps: mime-types@~2.0.5
- - deps: mime-db@~1.3.1
-
-1.2.0 / 2014-12-19
-==================
-
- * deps: negotiator@0.5.0
- - Fix list return order when large accepted list
- - Fix missing identity encoding when q=0 exists
- - Remove dynamic building of Negotiator class
-
-1.1.4 / 2014-12-10
-==================
-
- * deps: mime-types@~2.0.4
- - deps: mime-db@~1.3.0
-
-1.1.3 / 2014-11-09
-==================
-
- * deps: mime-types@~2.0.3
- - deps: mime-db@~1.2.0
-
-1.1.2 / 2014-10-14
-==================
-
- * deps: negotiator@0.4.9
- - Fix error when media type has invalid parameter
-
-1.1.1 / 2014-09-28
-==================
-
- * deps: mime-types@~2.0.2
- - deps: mime-db@~1.1.0
- * deps: negotiator@0.4.8
- - Fix all negotiations to be case-insensitive
- - Stable sort preferences of same quality according to client order
-
-1.1.0 / 2014-09-02
-==================
-
- * update `mime-types`
-
-1.0.7 / 2014-07-04
-==================
-
- * Fix wrong type returned from `type` when match after unknown extension
-
-1.0.6 / 2014-06-24
-==================
-
- * deps: negotiator@0.4.7
-
-1.0.5 / 2014-06-20
-==================
-
- * fix crash when unknown extension given
-
-1.0.4 / 2014-06-19
-==================
-
- * use `mime-types`
-
-1.0.3 / 2014-06-11
-==================
-
- * deps: negotiator@0.4.6
- - Order by specificity when quality is the same
-
-1.0.2 / 2014-05-29
-==================
-
- * Fix interpretation when header not in request
- * deps: pin negotiator@0.4.5
-
-1.0.1 / 2014-01-18
-==================
-
- * Identity encoding isn't always acceptable
- * deps: negotiator@~0.4.0
-
-1.0.0 / 2013-12-27
-==================
-
- * Genesis
diff --git a/Museum/node_modules/accepts/LICENSE b/Museum/node_modules/accepts/LICENSE
deleted file mode 100644
index 0616607..0000000
--- a/Museum/node_modules/accepts/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 Jonathan Ong
-Copyright (c) 2015 Douglas Christopher Wilson
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Museum/node_modules/accepts/README.md b/Museum/node_modules/accepts/README.md
deleted file mode 100644
index ae36676..0000000
--- a/Museum/node_modules/accepts/README.md
+++ /dev/null
@@ -1,135 +0,0 @@
-# accepts
-
-[![NPM Version][npm-image]][npm-url]
-[![NPM Downloads][downloads-image]][downloads-url]
-[![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][travis-image]][travis-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). Extracted from [koa](https://www.npmjs.com/package/koa) for general use.
-
-In addition to negotiator, it allows:
-
-- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`.
-- Allows type shorthands such as `json`.
-- Returns `false` when no types match
-- Treats non-existent headers as `*`
-
-## Installation
-
-```sh
-npm install accepts
-```
-
-## API
-
-```js
-var accepts = require('accepts')
-```
-
-### accepts(req)
-
-Create a new `Accepts` object for the given `req`.
-
-#### .charset(charsets)
-
-Return the first accepted charset. If nothing in `charsets` is accepted,
-then `false` is returned.
-
-#### .charsets()
-
-Return the charsets that the request accepts, in the order of the client's
-preference (most preferred first).
-
-#### .encoding(encodings)
-
-Return the first accepted encoding. If nothing in `encodings` is accepted,
-then `false` is returned.
-
-#### .encodings()
-
-Return the encodings that the request accepts, in the order of the client's
-preference (most preferred first).
-
-#### .language(languages)
-
-Return the first accepted language. If nothing in `languages` is accepted,
-then `false` is returned.
-
-#### .languages()
-
-Return the languages that the request accepts, in the order of the client's
-preference (most preferred first).
-
-#### .type(types)
-
-Return the first accepted type (and it is returned as the same text as what
-appears in the `types` array). If nothing in `types` is accepted, then `false`
-is returned.
-
-The `types` array can contain full MIME types or file extensions. Any value
-that is not a full MIME types is passed to `require('mime-types').lookup`.
-
-#### .types()
-
-Return the types that the request accepts, in the order of the client's
-preference (most preferred first).
-
-## Examples
-
-### Simple type negotiation
-
-This simple example shows how to use `accepts` to return a different typed
-respond body based on what the client wants to accept. The server lists it's
-preferences in order and will get back the best match between the client and
-server.
-
-```js
-var accepts = require('accepts')
-var http = require('http')
-
-function app(req, res) {
- var accept = accepts(req)
-
- // the order of this list is significant; should be server preferred order
- switch(accept.type(['json', 'html'])) {
- case 'json':
- res.setHeader('Content-Type', 'application/json')
- res.write('{"hello":"world!"}')
- break
- case 'html':
- res.setHeader('Content-Type', 'text/html')
- res.write('hello, world!')
- break
- default:
- // the fallback is text/plain, so no need to specify it above
- res.setHeader('Content-Type', 'text/plain')
- res.write('hello, world!')
- break
- }
-
- res.end()
-}
-
-http.createServer(app).listen(3000)
-```
-
-You can test this out with the cURL program:
-```sh
-curl -I -H'Accept: text/html' http://localhost:3000/
-```
-
-## License
-
-[MIT](LICENSE)
-
-[npm-image]: https://img.shields.io/npm/v/accepts.svg
-[npm-url]: https://npmjs.org/package/accepts
-[node-version-image]: https://img.shields.io/node/v/accepts.svg
-[node-version-url]: http://nodejs.org/download/
-[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg
-[travis-url]: https://travis-ci.org/jshttp/accepts
-[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg
-[coveralls-url]: https://coveralls.io/r/jshttp/accepts
-[downloads-image]: https://img.shields.io/npm/dm/accepts.svg
-[downloads-url]: https://npmjs.org/package/accepts
diff --git a/Museum/node_modules/accepts/index.js b/Museum/node_modules/accepts/index.js
deleted file mode 100644
index e80192a..0000000
--- a/Museum/node_modules/accepts/index.js
+++ /dev/null
@@ -1,231 +0,0 @@
-/*!
- * accepts
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module dependencies.
- * @private
- */
-
-var Negotiator = require('negotiator')
-var mime = require('mime-types')
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = Accepts
-
-/**
- * Create a new Accepts object for the given req.
- *
- * @param {object} req
- * @public
- */
-
-function Accepts(req) {
- if (!(this instanceof Accepts))
- return new Accepts(req)
-
- this.headers = req.headers
- this.negotiator = new Negotiator(req)
-}
-
-/**
- * Check if the given `type(s)` is acceptable, returning
- * the best match when true, otherwise `undefined`, in which
- * case you should respond with 406 "Not Acceptable".
- *
- * The `type` value may be a single mime type string
- * such as "application/json", the extension name
- * such as "json" or an array `["json", "html", "text/plain"]`. When a list
- * or array is given the _best_ match, if any is returned.
- *
- * Examples:
- *
- * // Accept: text/html
- * this.types('html');
- * // => "html"
- *
- * // Accept: text/*, application/json
- * this.types('html');
- * // => "html"
- * this.types('text/html');
- * // => "text/html"
- * this.types('json', 'text');
- * // => "json"
- * this.types('application/json');
- * // => "application/json"
- *
- * // Accept: text/*, application/json
- * this.types('image/png');
- * this.types('png');
- * // => undefined
- *
- * // Accept: text/*;q=.5, application/json
- * this.types(['html', 'json']);
- * this.types('html', 'json');
- * // => "json"
- *
- * @param {String|Array} types...
- * @return {String|Array|Boolean}
- * @public
- */
-
-Accepts.prototype.type =
-Accepts.prototype.types = function (types_) {
- var types = types_
-
- // support flattened arguments
- if (types && !Array.isArray(types)) {
- types = new Array(arguments.length)
- for (var i = 0; i < types.length; i++) {
- types[i] = arguments[i]
- }
- }
-
- // no types, return all requested types
- if (!types || types.length === 0) {
- return this.negotiator.mediaTypes()
- }
-
- if (!this.headers.accept) return types[0];
- var mimes = types.map(extToMime);
- var accepts = this.negotiator.mediaTypes(mimes.filter(validMime));
- var first = accepts[0];
- if (!first) return false;
- return types[mimes.indexOf(first)];
-}
-
-/**
- * Return accepted encodings or best fit based on `encodings`.
- *
- * Given `Accept-Encoding: gzip, deflate`
- * an array sorted by quality is returned:
- *
- * ['gzip', 'deflate']
- *
- * @param {String|Array} encodings...
- * @return {String|Array}
- * @public
- */
-
-Accepts.prototype.encoding =
-Accepts.prototype.encodings = function (encodings_) {
- var encodings = encodings_
-
- // support flattened arguments
- if (encodings && !Array.isArray(encodings)) {
- encodings = new Array(arguments.length)
- for (var i = 0; i < encodings.length; i++) {
- encodings[i] = arguments[i]
- }
- }
-
- // no encodings, return all requested encodings
- if (!encodings || encodings.length === 0) {
- return this.negotiator.encodings()
- }
-
- return this.negotiator.encodings(encodings)[0] || false
-}
-
-/**
- * Return accepted charsets or best fit based on `charsets`.
- *
- * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`
- * an array sorted by quality is returned:
- *
- * ['utf-8', 'utf-7', 'iso-8859-1']
- *
- * @param {String|Array} charsets...
- * @return {String|Array}
- * @public
- */
-
-Accepts.prototype.charset =
-Accepts.prototype.charsets = function (charsets_) {
- var charsets = charsets_
-
- // support flattened arguments
- if (charsets && !Array.isArray(charsets)) {
- charsets = new Array(arguments.length)
- for (var i = 0; i < charsets.length; i++) {
- charsets[i] = arguments[i]
- }
- }
-
- // no charsets, return all requested charsets
- if (!charsets || charsets.length === 0) {
- return this.negotiator.charsets()
- }
-
- return this.negotiator.charsets(charsets)[0] || false
-}
-
-/**
- * Return accepted languages or best fit based on `langs`.
- *
- * Given `Accept-Language: en;q=0.8, es, pt`
- * an array sorted by quality is returned:
- *
- * ['es', 'pt', 'en']
- *
- * @param {String|Array} langs...
- * @return {Array|String}
- * @public
- */
-
-Accepts.prototype.lang =
-Accepts.prototype.langs =
-Accepts.prototype.language =
-Accepts.prototype.languages = function (languages_) {
- var languages = languages_
-
- // support flattened arguments
- if (languages && !Array.isArray(languages)) {
- languages = new Array(arguments.length)
- for (var i = 0; i < languages.length; i++) {
- languages[i] = arguments[i]
- }
- }
-
- // no languages, return all requested languages
- if (!languages || languages.length === 0) {
- return this.negotiator.languages()
- }
-
- return this.negotiator.languages(languages)[0] || false
-}
-
-/**
- * Convert extnames to mime.
- *
- * @param {String} type
- * @return {String}
- * @private
- */
-
-function extToMime(type) {
- return type.indexOf('/') === -1
- ? mime.lookup(type)
- : type
-}
-
-/**
- * Check if mime is valid.
- *
- * @param {String} type
- * @return {String}
- * @private
- */
-
-function validMime(type) {
- return typeof type === 'string';
-}
diff --git a/Museum/node_modules/accepts/package.json b/Museum/node_modules/accepts/package.json
deleted file mode 100644
index 3b90cc3..0000000
--- a/Museum/node_modules/accepts/package.json
+++ /dev/null
@@ -1,104 +0,0 @@
-{
- "_args": [
- [
- "accepts@~1.3.3",
- "/Users/s70c3/WebstormProjects/Museum/node_modules/express"
- ]
- ],
- "_from": "accepts@>=1.3.3 <1.4.0",
- "_id": "accepts@1.3.3",
- "_inCache": true,
- "_installable": true,
- "_location": "/accepts",
- "_nodeVersion": "4.4.3",
- "_npmOperationalInternal": {
- "host": "packages-16-east.internal.npmjs.com",
- "tmp": "tmp/accepts-1.3.3.tgz_1462251932032_0.7092335098423064"
- },
- "_npmUser": {
- "email": "doug@somethingdoug.com",
- "name": "dougwilson"
- },
- "_npmVersion": "2.15.1",
- "_phantomChildren": {},
- "_requested": {
- "name": "accepts",
- "raw": "accepts@~1.3.3",
- "rawSpec": "~1.3.3",
- "scope": null,
- "spec": ">=1.3.3 <1.4.0",
- "type": "range"
- },
- "_requiredBy": [
- "/express"
- ],
- "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
- "_shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca",
- "_shrinkwrap": null,
- "_spec": "accepts@~1.3.3",
- "_where": "/Users/s70c3/WebstormProjects/Museum/node_modules/express",
- "bugs": {
- "url": "https://github.com/jshttp/accepts/issues"
- },
- "contributors": [
- {
- "email": "doug@somethingdoug.com",
- "name": "Douglas Christopher Wilson"
- },
- {
- "email": "me@jongleberry.com",
- "name": "Jonathan Ong",
- "url": "http://jongleberry.com"
- }
- ],
- "dependencies": {
- "mime-types": "~2.1.11",
- "negotiator": "0.6.1"
- },
- "description": "Higher-level content negotiation",
- "devDependencies": {
- "istanbul": "0.4.3",
- "mocha": "~1.21.5"
- },
- "directories": {},
- "dist": {
- "shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca",
- "tarball": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz"
- },
- "engines": {
- "node": ">= 0.6"
- },
- "files": [
- "LICENSE",
- "HISTORY.md",
- "index.js"
- ],
- "gitHead": "3e925b1e65ed7da2798849683d49814680dfa426",
- "homepage": "https://github.com/jshttp/accepts#readme",
- "keywords": [
- "content",
- "negotiation",
- "accept",
- "accepts"
- ],
- "license": "MIT",
- "maintainers": [
- {
- "email": "doug@somethingdoug.com",
- "name": "dougwilson"
- }
- ],
- "name": "accepts",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/jshttp/accepts.git"
- },
- "scripts": {
- "test": "mocha --reporter spec --check-leaks --bail test/",
- "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
- "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
- },
- "version": "1.3.3"
-}
diff --git a/Museum/node_modules/acorn-globals/LICENSE b/Museum/node_modules/acorn-globals/LICENSE
deleted file mode 100644
index 27cc9f3..0000000
--- a/Museum/node_modules/acorn-globals/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 Forbes Lindesay
-
-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.
\ No newline at end of file
diff --git a/Museum/node_modules/acorn-globals/README.md b/Museum/node_modules/acorn-globals/README.md
deleted file mode 100644
index d8cd372..0000000
--- a/Museum/node_modules/acorn-globals/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# acorn-globals
-
-Detect global variables in JavaScript using acorn
-
-[](https://travis-ci.org/ForbesLindesay/acorn-globals)
-[](https://david-dm.org/ForbesLindesay/acorn-globals)
-[](https://www.npmjs.org/package/acorn-globals)
-
-## Installation
-
- npm install acorn-globals
-
-## Usage
-
-detect.js
-
-```js
-var fs = require('fs');
-var detect = require('acorn-globals');
-
-var src = fs.readFileSync(__dirname + '/input.js', 'utf8');
-
-var scope = detect(src);
-console.dir(scope);
-```
-
-input.js
-
-```js
-var x = 5;
-var y = 3, z = 2;
-
-w.foo();
-w = 2;
-
-RAWR=444;
-RAWR.foo();
-
-BLARG=3;
-
-foo(function () {
- var BAR = 3;
- process.nextTick(function (ZZZZZZZZZZZZ) {
- console.log('beep boop');
- var xyz = 4;
- x += 10;
- x.zzzzzz;
- ZZZ=6;
- });
- function doom () {
- }
- ZZZ.foo();
-
-});
-
-console.log(xyz);
-```
-
-output:
-
-```
-$ node example/detect.js
-[ { name: 'BLARG', nodes: [ [Object] ] },
- { name: 'RAWR', nodes: [ [Object], [Object] ] },
- { name: 'ZZZ', nodes: [ [Object], [Object] ] },
- { name: 'console', nodes: [ [Object], [Object] ] },
- { name: 'foo', nodes: [ [Object] ] },
- { name: 'process', nodes: [ [Object] ] },
- { name: 'w', nodes: [ [Object], [Object] ] },
- { name: 'xyz', nodes: [ [Object] ] } ]
-```
-
-
-## License
-
- MIT
diff --git a/Museum/node_modules/acorn-globals/index.js b/Museum/node_modules/acorn-globals/index.js
deleted file mode 100644
index ff924c9..0000000
--- a/Museum/node_modules/acorn-globals/index.js
+++ /dev/null
@@ -1,180 +0,0 @@
-'use strict';
-
-var acorn = require('acorn');
-var walk = require('acorn/dist/walk');
-
-function isScope(node) {
- return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration' || node.type === 'ArrowFunctionExpression' || node.type === 'Program';
-}
-function isBlockScope(node) {
- return node.type === 'BlockStatement' || isScope(node);
-}
-
-function declaresArguments(node) {
- return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration';
-}
-
-function declaresThis(node) {
- return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration';
-}
-
-function reallyParse(source) {
- try {
- return acorn.parse(source, {
- ecmaVersion: 6,
- allowReturnOutsideFunction: true,
- allowImportExportEverywhere: true,
- allowHashBang: true
- });
- } catch (ex) {
- return acorn.parse(source, {
- ecmaVersion: 5,
- allowReturnOutsideFunction: true,
- allowImportExportEverywhere: true,
- allowHashBang: true
- });
- }
-}
-module.exports = findGlobals;
-module.exports.parse = reallyParse;
-function findGlobals(source) {
- var globals = [];
- var ast;
- // istanbul ignore else
- if (typeof source === 'string') {
- ast = reallyParse(source);
- } else {
- ast = source;
- }
- // istanbul ignore if
- if (!(ast && typeof ast === 'object' && ast.type === 'Program')) {
- throw new TypeError('Source must be either a string of JavaScript or an acorn AST');
- }
- var declareFunction = function (node) {
- var fn = node;
- fn.locals = fn.locals || {};
- node.params.forEach(function (node) {
- declarePattern(node, fn);
- });
- if (node.id) {
- fn.locals[node.id.name] = true;
- }
- }
- var declarePattern = function (node, parent) {
- switch (node.type) {
- case 'Identifier':
- parent.locals[node.name] = true;
- break;
- case 'ObjectPattern':
- node.properties.forEach(function (node) {
- declarePattern(node.value, parent);
- });
- break;
- case 'ArrayPattern':
- node.elements.forEach(function (node) {
- if (node) declarePattern(node, parent);
- });
- break;
- case 'RestElement':
- declarePattern(node.argument, parent);
- break;
- case 'AssignmentPattern':
- declarePattern(node.left, parent);
- break;
- // istanbul ignore next
- default:
- throw new Error('Unrecognized pattern type: ' + node.type);
- }
- }
- var declareModuleSpecifier = function (node, parents) {
- ast.locals = ast.locals || {};
- ast.locals[node.local.name] = true;
- }
- walk.ancestor(ast, {
- 'VariableDeclaration': function (node, parents) {
- var parent = null;
- for (var i = parents.length - 1; i >= 0 && parent === null; i--) {
- if (node.kind === 'var' ? isScope(parents[i]) : isBlockScope(parents[i])) {
- parent = parents[i];
- }
- }
- parent.locals = parent.locals || {};
- node.declarations.forEach(function (declaration) {
- declarePattern(declaration.id, parent);
- });
- },
- 'FunctionDeclaration': function (node, parents) {
- var parent = null;
- for (var i = parents.length - 2; i >= 0 && parent === null; i--) {
- if (isScope(parents[i])) {
- parent = parents[i];
- }
- }
- parent.locals = parent.locals || {};
- parent.locals[node.id.name] = true;
- declareFunction(node);
- },
- 'Function': declareFunction,
- 'ClassDeclaration': function (node, parents) {
- var parent = null;
- for (var i = parents.length - 2; i >= 0 && parent === null; i--) {
- if (isScope(parents[i])) {
- parent = parents[i];
- }
- }
- parent.locals = parent.locals || {};
- parent.locals[node.id.name] = true;
- },
- 'TryStatement': function (node) {
- if (node.handler === null) return;
- node.handler.body.locals = node.handler.body.locals || {};
- node.handler.body.locals[node.handler.param.name] = true;
- },
- 'ImportDefaultSpecifier': declareModuleSpecifier,
- 'ImportSpecifier': declareModuleSpecifier,
- 'ImportNamespaceSpecifier': declareModuleSpecifier
- });
- function identifier(node, parents) {
- var name = node.name;
- if (name === 'undefined') return;
- for (var i = 0; i < parents.length; i++) {
- if (name === 'arguments' && declaresArguments(parents[i])) {
- return;
- }
- if (parents[i].locals && name in parents[i].locals) {
- return;
- }
- }
- if (
- parents[parents.length - 2] &&
- parents[parents.length - 2].type === 'TryStatement' &&
- parents[parents.length - 2].handler &&
- node === parents[parents.length - 2].handler.param
- ) {
- return;
- }
- node.parents = parents;
- globals.push(node);
- }
- walk.ancestor(ast, {
- 'VariablePattern': identifier,
- 'Identifier': identifier,
- 'ThisExpression': function (node, parents) {
- for (var i = 0; i < parents.length; i++) {
- if (declaresThis(parents[i])) {
- return;
- }
- }
- node.parents = parents;
- globals.push(node);
- }
- });
- var groupedGlobals = {};
- globals.forEach(function (node) {
- groupedGlobals[node.name] = (groupedGlobals[node.name] || []);
- groupedGlobals[node.name].push(node);
- });
- return Object.keys(groupedGlobals).sort().map(function (name) {
- return {name: name, nodes: groupedGlobals[name]};
- });
-}
diff --git a/Museum/node_modules/acorn-globals/package.json b/Museum/node_modules/acorn-globals/package.json
deleted file mode 100644
index 49b7806..0000000
--- a/Museum/node_modules/acorn-globals/package.json
+++ /dev/null
@@ -1,92 +0,0 @@
-{
- "_args": [
- [
- "acorn-globals@^1.0.3",
- "/Users/s70c3/WebstormProjects/Museum/node_modules/with"
- ]
- ],
- "_from": "acorn-globals@>=1.0.3 <2.0.0",
- "_id": "acorn-globals@1.0.9",
- "_inCache": true,
- "_installable": true,
- "_location": "/acorn-globals",
- "_nodeVersion": "1.6.2",
- "_npmUser": {
- "email": "forbes@lindesay.co.uk",
- "name": "forbeslindesay"
- },
- "_npmVersion": "2.7.1",
- "_phantomChildren": {},
- "_requested": {
- "name": "acorn-globals",
- "raw": "acorn-globals@^1.0.3",
- "rawSpec": "^1.0.3",
- "scope": null,
- "spec": ">=1.0.3 <2.0.0",
- "type": "range"
- },
- "_requiredBy": [
- "/with"
- ],
- "_resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz",
- "_shasum": "55bb5e98691507b74579d0513413217c380c54cf",
- "_shrinkwrap": null,
- "_spec": "acorn-globals@^1.0.3",
- "_where": "/Users/s70c3/WebstormProjects/Museum/node_modules/with",
- "author": {
- "name": "ForbesLindesay"
- },
- "bugs": {
- "url": "https://github.com/ForbesLindesay/acorn-globals/issues"
- },
- "dependencies": {
- "acorn": "^2.1.0"
- },
- "description": "Detect global variables in JavaScript using acorn",
- "devDependencies": {
- "testit": "^2.0.2"
- },
- "directories": {},
- "dist": {
- "shasum": "55bb5e98691507b74579d0513413217c380c54cf",
- "tarball": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz"
- },
- "files": [
- "index.js",
- "LICENSE"
- ],
- "gitHead": "808cab09764b63679138b012602ca1bb51657f97",
- "homepage": "https://github.com/ForbesLindesay/acorn-globals",
- "keywords": [
- "ast",
- "variable",
- "name",
- "lexical",
- "scope",
- "local",
- "global",
- "implicit"
- ],
- "license": "MIT",
- "maintainers": [
- {
- "email": "forbes@lindesay.co.uk",
- "name": "forbeslindesay"
- },
- {
- "email": "timothygu99@gmail.com",
- "name": "timothygu"
- }
- ],
- "name": "acorn-globals",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/ForbesLindesay/acorn-globals.git"
- },
- "scripts": {
- "test": "node test"
- },
- "version": "1.0.9"
-}
diff --git a/Museum/node_modules/acorn/.editorconfig b/Museum/node_modules/acorn/.editorconfig
deleted file mode 100644
index c14d5c6..0000000
--- a/Museum/node_modules/acorn/.editorconfig
+++ /dev/null
@@ -1,7 +0,0 @@
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
diff --git a/Museum/node_modules/acorn/.gitattributes b/Museum/node_modules/acorn/.gitattributes
deleted file mode 100644
index fcadb2c..0000000
--- a/Museum/node_modules/acorn/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-* text eol=lf
diff --git a/Museum/node_modules/acorn/.npmignore b/Museum/node_modules/acorn/.npmignore
deleted file mode 100644
index ecba291..0000000
--- a/Museum/node_modules/acorn/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/.tern-port
-/test
-/local
diff --git a/Museum/node_modules/acorn/.tern-project b/Museum/node_modules/acorn/.tern-project
deleted file mode 100644
index 6718ce0..0000000
--- a/Museum/node_modules/acorn/.tern-project
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "plugins": {
- "node": true,
- "es_modules": true
- }
-}
\ No newline at end of file
diff --git a/Museum/node_modules/acorn/.travis.yml b/Museum/node_modules/acorn/.travis.yml
deleted file mode 100644
index f50c379..0000000
--- a/Museum/node_modules/acorn/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: node_js
-sudo: false
-node_js:
- - '0.10'
- - '0.12'
- - '4'
diff --git a/Museum/node_modules/acorn/AUTHORS b/Museum/node_modules/acorn/AUTHORS
deleted file mode 100644
index 0e8f48b..0000000
--- a/Museum/node_modules/acorn/AUTHORS
+++ /dev/null
@@ -1,43 +0,0 @@
-List of Acorn contributors. Updated before every release.
-
-Adrian Rakovsky
-Alistair Braidwood
-Andres Suarez
-Aparajita Fishman
-Arian Stolwijk
-Artem Govorov
-Brandon Mills
-Charles Hughes
-Conrad Irwin
-David Bonnet
-ForbesLindesay
-Forbes Lindesay
-Gilad Peleg
-impinball
-Ingvar Stepanyan
-Jesse McCarthy
-Jiaxing Wang
-Joel Kemp
-Johannes Herr
-Jürg Lehni
-keeyipchan
-Kevin Kwok
-krator
-Marijn Haverbeke
-Martin Carlberg
-Mathias Bynens
-Mathieu 'p01' Henri
-Max Schaefer
-Max Zerzouri
-Mihai Bazon
-Mike Rennie
-Nick Fitzgerald
-Oskar Schöldström
-Paul Harper
-Peter Rust
-PlNG
-r-e-d
-Rich Harris
-Sebastian McKenzie
-Timothy Gu
-zsjforcn
diff --git a/Museum/node_modules/acorn/LICENSE b/Museum/node_modules/acorn/LICENSE
deleted file mode 100644
index d4c7fc5..0000000
--- a/Museum/node_modules/acorn/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) 2012-2014 by various contributors (see AUTHORS)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/Museum/node_modules/acorn/README.md b/Museum/node_modules/acorn/README.md
deleted file mode 100644
index acd39a8..0000000
--- a/Museum/node_modules/acorn/README.md
+++ /dev/null
@@ -1,396 +0,0 @@
-# Acorn
-
-[](https://travis-ci.org/ternjs/acorn)
-[](https://www.npmjs.com/package/acorn)
-[Author funding status: ](https://marijnhaverbeke.nl/fund/)
-
-A tiny, fast JavaScript parser, written completely in JavaScript.
-
-## Community
-
-Acorn is open source software released under an
-[MIT license](https://github.com/ternjs/acorn/blob/master/LICENSE).
-
-You are welcome to
-[report bugs](https://github.com/ternjs/acorn/issues) or create pull
-requests on [github](https://github.com/ternjs/acorn). For questions
-and discussion, please use the
-[Tern discussion forum](https://discuss.ternjs.net).
-
-## Installation
-
-The easiest way to install acorn is with [`npm`][npm].
-
-[npm]: https://www.npmjs.com/
-
-```sh
-npm install acorn
-```
-
-Alternately, download the source.
-
-```sh
-git clone https://github.com/ternjs/acorn.git
-```
-
-## Components
-
-When run in a CommonJS (node.js) or AMD environment, exported values
-appear in the interfaces exposed by the individual files, as usual.
-When loaded in the browser (Acorn works in any JS-enabled browser more
-recent than IE5) without any kind of module management, a single
-global object `acorn` will be defined, and all the exported properties
-will be added to that.
-
-### Main parser
-
-This is implemented in `dist/acorn.js`, and is what you get when you
-`require("acorn")` in node.js.
-
-**parse**`(input, options)` is used to parse a JavaScript program.
-The `input` parameter is a string, `options` can be undefined or an
-object setting some of the options listed below. The return value will
-be an abstract syntax tree object as specified by the
-[ESTree spec][estree].
-
-When encountering a syntax error, the parser will raise a
-`SyntaxError` object with a meaningful message. The error object will
-have a `pos` property that indicates the character offset at which the
-error occurred, and a `loc` object that contains a `{line, column}`
-object referring to that same position.
-
-[estree]: https://github.com/estree/estree
-
-- **ecmaVersion**: Indicates the ECMAScript version to parse. Must be
- either 3, 5, or 6. This influences support for strict mode, the set
- of reserved words, and support for new syntax features. Default is 5.
-
-- **sourceType**: Indicate the mode the code should be parsed in. Can be
- either `"script"` or `"module"`.
-
-- **onInsertedSemicolon**: If given a callback, that callback will be
- called whenever a missing semicolon is inserted by the parser. The
- callback will be given the character offset of the point where the
- semicolon is inserted as argument, and if `locations` is on, also a
- `{line, column}` object representing this position.
-
-- **onTrailingComma**: Like `onInsertedSemicolon`, but for trailing
- commas.
-
-- **allowReserved**: If `false`, using a reserved word will generate
- an error. Defaults to `true` for `ecmaVersion` 3, `false` for higher
- versions. When given the value `"never"`, reserved words and
- keywords can also not be used as property names (as in Internet
- Explorer's old parser).
-
-- **allowReturnOutsideFunction**: By default, a return statement at
- the top level raises an error. Set this to `true` to accept such
- code.
-
-- **allowImportExportEverywhere**: By default, `import` and `export`
- declarations can only appear at a program's top level. Setting this
- option to `true` allows them anywhere where a statement is allowed.
-
-- **allowHashBang**: When this is enabled (off by default), if the
- code starts with the characters `#!` (as in a shellscript), the
- first line will be treated as a comment.
-
-- **locations**: When `true`, each node has a `loc` object attached
- with `start` and `end` subobjects, each of which contains the
- one-based line and zero-based column numbers in `{line, column}`
- form. Default is `false`.
-
-- **onToken**: If a function is passed for this option, each found
- token will be passed in same format as tokens returned from
- `tokenizer().getToken()`.
-
- If array is passed, each found token is pushed to it.
-
- Note that you are not allowed to call the parser from the
- callback—that will corrupt its internal state.
-
-- **onComment**: If a function is passed for this option, whenever a
- comment is encountered the function will be called with the
- following parameters:
-
- - `block`: `true` if the comment is a block comment, false if it
- is a line comment.
- - `text`: The content of the comment.
- - `start`: Character offset of the start of the comment.
- - `end`: Character offset of the end of the comment.
-
- When the `locations` options is on, the `{line, column}` locations
- of the comment’s start and end are passed as two additional
- parameters.
-
- If array is passed for this option, each found comment is pushed
- to it as object in Esprima format:
-
- ```javascript
- {
- "type": "Line" | "Block",
- "value": "comment text",
- "start": Number,
- "end": Number,
- // If `locations` option is on:
- "loc": {
- "start": {line: Number, column: Number}
- "end": {line: Number, column: Number}
- },
- // If `ranges` option is on:
- "range": [Number, Number]
- }
- ```
-
- Note that you are not allowed to call the parser from the
- callback—that will corrupt its internal state.
-
-- **ranges**: Nodes have their start and end characters offsets
- recorded in `start` and `end` properties (directly on the node,
- rather than the `loc` object, which holds line/column data. To also
- add a [semi-standardized][range] `range` property holding a
- `[start, end]` array with the same numbers, set the `ranges` option
- to `true`.
-
-- **program**: It is possible to parse multiple files into a single
- AST by passing the tree produced by parsing the first file as the
- `program` option in subsequent parses. This will add the toplevel
- forms of the parsed file to the "Program" (top) node of an existing
- parse tree.
-
-- **sourceFile**: When the `locations` option is `true`, you can pass
- this option to add a `source` attribute in every node’s `loc`
- object. Note that the contents of this option are not examined or
- processed in any way; you are free to use whatever format you
- choose.
-
-- **directSourceFile**: Like `sourceFile`, but a `sourceFile` property
- will be added directly to the nodes, rather than the `loc` object.
-
-- **preserveParens**: If this option is `true`, parenthesized expressions
- are represented by (non-standard) `ParenthesizedExpression` nodes
- that have a single `expression` property containing the expression
- inside parentheses.
-
-[range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678
-
-**parseExpressionAt**`(input, offset, options)` will parse a single
-expression in a string, and return its AST. It will not complain if
-there is more of the string left after the expression.
-
-**getLineInfo**`(input, offset)` can be used to get a `{line,
-column}` object for a given program string and character offset.
-
-**tokenizer**`(input, options)` returns an object with a `getToken`
-method that can be called repeatedly to get the next token, a `{start,
-end, type, value}` object (with added `loc` property when the
-`locations` option is enabled and `range` property when the `ranges`
-option is enabled). When the token's type is `tokTypes.eof`, you
-should stop calling the method, since it will keep returning that same
-token forever.
-
-In ES6 environment, returned result can be used as any other
-protocol-compliant iterable:
-
-```javascript
-for (let token of acorn.tokenizer(str)) {
- // iterate over the tokens
-}
-
-// transform code to array of tokens:
-var tokens = [...acorn.tokenizer(str)];
-```
-
-**tokTypes** holds an object mapping names to the token type objects
-that end up in the `type` properties of tokens.
-
-#### Note on using with [Escodegen][escodegen]
-
-Escodegen supports generating comments from AST, attached in
-Esprima-specific format. In order to simulate same format in
-Acorn, consider following example:
-
-```javascript
-var comments = [], tokens = [];
-
-var ast = acorn.parse('var x = 42; // answer', {
- // collect ranges for each node
- ranges: true,
- // collect comments in Esprima's format
- onComment: comments,
- // collect token ranges
- onToken: tokens
-});
-
-// attach comments using collected information
-escodegen.attachComments(ast, comments, tokens);
-
-// generate code
-console.log(escodegen.generate(ast, {comment: true}));
-// > 'var x = 42; // answer'
-```
-
-[escodegen]: https://github.com/estools/escodegen
-
-### dist/acorn_loose.js ###
-
-This file implements an error-tolerant parser. It exposes a single
-function. The loose parser is accessible in node.js via `require("acorn/dist/acorn_loose")`.
-
-**parse_dammit**`(input, options)` takes the same arguments and
-returns the same syntax tree as the `parse` function in `acorn.js`,
-but never raises an error, and will do its best to parse syntactically
-invalid code in as meaningful a way as it can. It'll insert identifier
-nodes with name `"✖"` as placeholders in places where it can't make
-sense of the input. Depends on `acorn.js`, because it uses the same
-tokenizer.
-
-### dist/walk.js ###
-
-Implements an abstract syntax tree walker. Will store its interface in
-`acorn.walk` when loaded without a module system.
-
-**simple**`(node, visitors, base, state)` does a 'simple' walk over
-a tree. `node` should be the AST node to walk, and `visitors` an
-object with properties whose names correspond to node types in the
-[ESTree spec][estree]. The properties should contain functions
-that will be called with the node object and, if applicable the state
-at that point. The last two arguments are optional. `base` is a walker
-algorithm, and `state` is a start state. The default walker will
-simply visit all statements and expressions and not produce a
-meaningful state. (An example of a use of state is to track scope at
-each point in the tree.)
-
-**ancestor**`(node, visitors, base, state)` does a 'simple' walk over
-a tree, building up an array of ancestor nodes (including the current node)
-and passing the array to callbacks in the `state` parameter.
-
-**recursive**`(node, state, functions, base)` does a 'recursive'
-walk, where the walker functions are responsible for continuing the
-walk on the child nodes of their target node. `state` is the start
-state, and `functions` should contain an object that maps node types
-to walker functions. Such functions are called with `(node, state, c)`
-arguments, and can cause the walk to continue on a sub-node by calling
-the `c` argument on it with `(node, state)` arguments. The optional
-`base` argument provides the fallback walker functions for node types
-that aren't handled in the `functions` object. If not given, the
-default walkers will be used.
-
-**make**`(functions, base)` builds a new walker object by using the
-walker functions in `functions` and filling in the missing ones by
-taking defaults from `base`.
-
-**findNodeAt**`(node, start, end, test, base, state)` tries to
-locate a node in a tree at the given start and/or end offsets, which
-satisfies the predicate `test`. `start` and `end` can be either `null`
-(as wildcard) or a number. `test` may be a string (indicating a node
-type) or a function that takes `(nodeType, node)` arguments and
-returns a boolean indicating whether this node is interesting. `base`
-and `state` are optional, and can be used to specify a custom walker.
-Nodes are tested from inner to outer, so if two nodes match the
-boundaries, the inner one will be preferred.
-
-**findNodeAround**`(node, pos, test, base, state)` is a lot like
-`findNodeAt`, but will match any node that exists 'around' (spanning)
-the given position.
-
-**findNodeAfter**`(node, pos, test, base, state)` is similar to
-`findNodeAround`, but will match all nodes *after* the given position
-(testing outer nodes before inner nodes).
-
-## Command line interface
-
-The `bin/acorn` utility can be used to parse a file from the command
-line. It accepts as arguments its input file and the following
-options:
-
-- `--ecma3|--ecma5|--ecma6`: Sets the ECMAScript version to parse. Default is
- version 5.
-
-- `--module`: Sets the parsing mode to `"module"`. Is set to `"script"` otherwise.
-
-- `--locations`: Attaches a "loc" object to each node with "start" and
- "end" subobjects, each of which contains the one-based line and
- zero-based column numbers in `{line, column}` form.
-
-- `--allow-hash-bang`: If the code starts with the characters #! (as in a shellscript), the first line will be treated as a comment.
-
-- `--compact`: No whitespace is used in the AST output.
-
-- `--silent`: Do not output the AST, just return the exit status.
-
-- `--help`: Print the usage information and quit.
-
-The utility spits out the syntax tree as JSON data.
-
-## Build system
-
-Acorn is written in ECMAScript 6, as a set of small modules, in the
-project's `src` directory, and compiled down to bigger ECMAScript 3
-files in `dist` using [Browserify](http://browserify.org) and
-[Babel](http://babeljs.io/). If you are already using Babel, you can
-consider including the modules directly.
-
-The command-line test runner (`npm test`) uses the ES6 modules. The
-browser-based test page (`test/index.html`) uses the compiled modules.
-The `bin/build-acorn.js` script builds the latter from the former.
-
-If you are working on Acorn, you'll probably want to try the code out
-directly, without an intermediate build step. In your scripts, you can
-register the Babel require shim like this:
-
- require("babel-core/register")
-
-That will allow you to directly `require` the ES6 modules.
-
-## Plugins
-
-Acorn is designed support allow plugins which, within reasonable
-bounds, redefine the way the parser works. Plugins can add new token
-types and new tokenizer contexts (if necessary), and extend methods in
-the parser object. This is not a clean, elegant API—using it requires
-an understanding of Acorn's internals, and plugins are likely to break
-whenever those internals are significantly changed. But still, it is
-_possible_, in this way, to create parsers for JavaScript dialects
-without forking all of Acorn. And in principle it is even possible to
-combine such plugins, so that if you have, for example, a plugin for
-parsing types and a plugin for parsing JSX-style XML literals, you
-could load them both and parse code with both JSX tags and types.
-
-A plugin should register itself by adding a property to
-`acorn.plugins`, which holds a function. Calling `acorn.parse`, a
-`plugins` option can be passed, holding an object mapping plugin names
-to configuration values (or just `true` for plugins that don't take
-options). After the parser object has been created, the initialization
-functions for the chosen plugins are called with `(parser,
-configValue)` arguments. They are expected to use the `parser.extend`
-method to extend parser methods. For example, the `readToken` method
-could be extended like this:
-
-```javascript
-parser.extend("readToken", function(nextMethod) {
- return function(code) {
- console.log("Reading a token!")
- return nextMethod.call(this, code)
- }
-})
-```
-
-The `nextMethod` argument passed to `extend`'s second argument is the
-previous value of this method, and should usually be called through to
-whenever the extended method does not handle the call itself.
-
-Similarly, the loose parser allows plugins to register themselves via
-`acorn.pluginsLoose`. The extension mechanism is the same as for the
-normal parser:
-
-```javascript
-looseParser.extend("readToken", function(nextMethod) {
- return function() {
- console.log("Reading a token in the loose parser!")
- return nextMethod.call(this)
- }
-})
-```
-
-There is a proof-of-concept JSX plugin in the [`acorn-jsx`](https://github.com/RReverser/acorn-jsx) project.
diff --git a/Museum/node_modules/acorn/bin/acorn b/Museum/node_modules/acorn/bin/acorn
deleted file mode 100755
index db07909..0000000
--- a/Museum/node_modules/acorn/bin/acorn
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env node
-"use strict";
-
-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)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }
-
-var _path = require("path");
-
-var _fs = require("fs");
-
-var _distAcornJs = require("../dist/acorn.js");
-
-var acorn = _interopRequireWildcard(_distAcornJs);
-
-var infile = undefined,
- forceFile = undefined,
- silent = false,
- compact = false,
- tokenize = false;
-var options = {};
-
-function help(status) {
- var print = status == 0 ? console.log : console.error;
- print("usage: " + (0, _path.basename)(process.argv[1]) + " [--ecma3|--ecma5|--ecma6]");
- print(" [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]");
- process.exit(status);
-}
-
-for (var i = 2; i < process.argv.length; ++i) {
- var arg = process.argv[i];
- if ((arg == "-" || arg[0] != "-") && !infile) infile = arg;else if (arg == "--" && !infile && i + 2 == process.argv.length) forceFile = infile = process.argv[++i];else if (arg == "--ecma3") options.ecmaVersion = 3;else if (arg == "--ecma5") options.ecmaVersion = 5;else if (arg == "--ecma6") options.ecmaVersion = 6;else if (arg == "--locations") options.locations = true;else if (arg == "--allow-hash-bang") options.allowHashBang = true;else if (arg == "--silent") silent = true;else if (arg == "--compact") compact = true;else if (arg == "--help") help(0);else if (arg == "--tokenize") tokenize = true;else if (arg == "--module") options.sourceType = 'module';else help(1);
-}
-
-function run(code) {
- var result = undefined;
- if (!tokenize) {
- try {
- result = acorn.parse(code, options);
- } catch (e) {
- console.error(e.message);process.exit(1);
- }
- } else {
- result = [];
- var tokenizer = acorn.tokenizer(code, options),
- token = undefined;
- while (true) {
- try {
- token = tokenizer.getToken();
- } catch (e) {
- console.error(e.message);process.exit(1);
- }
- result.push(token);
- if (token.type == acorn.tokTypes.eof) break;
- }
- }
- if (!silent) console.log(JSON.stringify(result, null, compact ? null : 2));
-}
-
-if (forceFile || infile && infile != "-") {
- run((0, _fs.readFileSync)(infile, "utf8"));
-} else {
- (function () {
- var code = "";
- process.stdin.resume();
- process.stdin.on("data", function (chunk) {
- return code += chunk;
- });
- process.stdin.on("end", function () {
- return run(code);
- });
- })();
-}
\ No newline at end of file
diff --git a/Museum/node_modules/acorn/bin/build-acorn.js b/Museum/node_modules/acorn/bin/build-acorn.js
deleted file mode 100644
index 71f2cf9..0000000
--- a/Museum/node_modules/acorn/bin/build-acorn.js
+++ /dev/null
@@ -1,82 +0,0 @@
-var fs = require("fs"), path = require("path")
-var stream = require("stream")
-
-var browserify = require("browserify")
-var babel = require('babel-core')
-var babelify = require("babelify").configure({loose: "all"})
-
-process.chdir(path.resolve(__dirname, ".."))
-
-browserify({standalone: "acorn"})
- .plugin(require('browserify-derequire'))
- .transform(babelify)
- .require("./src/index.js", {entry: true})
- .bundle()
- .on("error", function (err) { console.log("Error: " + err.message) })
- .pipe(fs.createWriteStream("dist/acorn.js"))
-
-var ACORN_PLACEHOLDER = "this_function_call_should_be_replaced_with_a_call_to_load_acorn()";
-function acornShimPrepare(file) {
- var tr = new stream.Transform
- if (file == path.resolve(__dirname, "../src/index.js")) {
- var sent = false
- tr._transform = function(chunk, _, callback) {
- if (!sent) {
- sent = true
- callback(null, ACORN_PLACEHOLDER);
- } else {
- callback()
- }
- }
- } else {
- tr._transform = function(chunk, _, callback) { callback(null, chunk) }
- }
- return tr
-}
-function acornShimComplete() {
- var tr = new stream.Transform
- var buffer = "";
- tr._transform = function(chunk, _, callback) {
- buffer += chunk.toString("utf8");
- callback();
- };
- tr._flush = function (callback) {
- tr.push(buffer.replace(ACORN_PLACEHOLDER, "module.exports = typeof acorn != 'undefined' ? acorn : require(\"./acorn\")"));
- callback(null);
- };
- return tr;
-}
-
-browserify({standalone: "acorn.loose"})
- .plugin(require('browserify-derequire'))
- .transform(acornShimPrepare)
- .transform(babelify)
- .require("./src/loose/index.js", {entry: true})
- .bundle()
- .on("error", function (err) { console.log("Error: " + err.message) })
- .pipe(acornShimComplete())
- .pipe(fs.createWriteStream("dist/acorn_loose.js"))
-
-browserify({standalone: "acorn.walk"})
- .plugin(require('browserify-derequire'))
- .transform(acornShimPrepare)
- .transform(babelify)
- .require("./src/walk/index.js", {entry: true})
- .bundle()
- .on("error", function (err) { console.log("Error: " + err.message) })
- .pipe(acornShimComplete())
- .pipe(fs.createWriteStream("dist/walk.js"))
-
-babel.transformFile("./src/bin/acorn.js", function (err, result) {
- if (err) return console.log("Error: " + err.message)
- fs.writeFile("bin/acorn", result.code, function (err) {
- if (err) return console.log("Error: " + err.message)
-
- // Make bin/acorn executable
- if (process.platform === 'win32')
- return
- var stat = fs.statSync("bin/acorn")
- var newPerm = stat.mode | parseInt('111', 8)
- fs.chmodSync("bin/acorn", newPerm)
- })
-})
diff --git a/Museum/node_modules/acorn/bin/generate-identifier-regex.js b/Museum/node_modules/acorn/bin/generate-identifier-regex.js
deleted file mode 100644
index 0d7c50f..0000000
--- a/Museum/node_modules/acorn/bin/generate-identifier-regex.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// Note: run `npm install unicode-7.0.0` first.
-
-// Which Unicode version should be used?
-var version = '7.0.0';
-
-var start = require('unicode-' + version + '/properties/ID_Start/code-points')
- .filter(function(ch) { return ch > 127; });
-var cont = [0x200c, 0x200d].concat(require('unicode-' + version + '/properties/ID_Continue/code-points')
- .filter(function(ch) { return ch > 127 && start.indexOf(ch) == -1; }));
-
-function pad(str, width) {
- while (str.length < width) str = "0" + str;
- return str;
-}
-
-function esc(code) {
- var hex = code.toString(16);
- if (hex.length <= 2) return "\\x" + pad(hex, 2);
- else return "\\u" + pad(hex, 4);
-}
-
-function generate(chars) {
- var astral = [], re = "";
- for (var i = 0, at = 0x10000; i < chars.length; i++) {
- var from = chars[i], to = from;
- while (i < chars.length - 1 && chars[i + 1] == to + 1) {
- i++;
- to++;
- }
- if (to <= 0xffff) {
- if (from == to) re += esc(from);
- else if (from + 1 == to) re += esc(from) + esc(to);
- else re += esc(from) + "-" + esc(to);
- } else {
- astral.push(from - at, to - from);
- at = to;
- }
- }
- return {nonASCII: re, astral: astral};
-}
-
-var startData = generate(start), contData = generate(cont);
-
-console.log(" var nonASCIIidentifierStartChars = \"" + startData.nonASCII + "\";");
-console.log(" var nonASCIIidentifierChars = \"" + contData.nonASCII + "\";");
-console.log(" var astralIdentifierStartCodes = " + JSON.stringify(startData.astral) + ";");
-console.log(" var astralIdentifierCodes = " + JSON.stringify(contData.astral) + ";");
diff --git a/Museum/node_modules/acorn/bin/update_authors.sh b/Museum/node_modules/acorn/bin/update_authors.sh
deleted file mode 100755
index 466c8db..0000000
--- a/Museum/node_modules/acorn/bin/update_authors.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-# Combine existing list of authors with everyone known in git, sort, add header.
-tail --lines=+3 AUTHORS > AUTHORS.tmp
-git log --format='%aN' | grep -v abraidwood >> AUTHORS.tmp
-echo -e "List of Acorn contributors. Updated before every release.\n" > AUTHORS
-sort -u AUTHORS.tmp >> AUTHORS
-rm -f AUTHORS.tmp
diff --git a/Museum/node_modules/acorn/dist/.keep b/Museum/node_modules/acorn/dist/.keep
deleted file mode 100644
index e69de29..0000000
diff --git a/Museum/node_modules/acorn/dist/acorn.js b/Museum/node_modules/acorn/dist/acorn.js
deleted file mode 100644
index 9419f86..0000000
--- a/Museum/node_modules/acorn/dist/acorn.js
+++ /dev/null
@@ -1,3340 +0,0 @@
-(function(f){if(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.acorn = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 6 && (prop.computed || prop.method || prop.shorthand)) return;
- var key = prop.key;var name = undefined;
- switch (key.type) {
- case "Identifier":
- name = key.name;break;
- case "Literal":
- name = String(key.value);break;
- default:
- return;
- }
- var kind = prop.kind;
-
- if (this.options.ecmaVersion >= 6) {
- if (name === "__proto__" && kind === "init") {
- if (propHash.proto) this.raise(key.start, "Redefinition of __proto__ property");
- propHash.proto = true;
- }
- return;
- }
- name = "$" + name;
- var other = propHash[name];
- if (other) {
- var isGetSet = kind !== "init";
- if ((this.strict || isGetSet) && other[kind] || !(isGetSet ^ other.init)) this.raise(key.start, "Redefinition of property");
- } else {
- other = propHash[name] = {
- init: false,
- get: false,
- set: false
- };
- }
- other[kind] = true;
-};
-
-// ### Expression parsing
-
-// These nest, from the most general expression type at the top to
-// 'atomic', nondivisible expression types at the bottom. Most of
-// the functions will simply let the function(s) below them parse,
-// and, *if* the syntactic construct they handle is present, wrap
-// the AST node that the inner parser gave them in another node.
-
-// Parse a full expression. The optional arguments are used to
-// forbid the `in` operator (in for loops initalization expressions)
-// and provide reference for storing '=' operator inside shorthand
-// property assignment in contexts where both object expression
-// and object pattern might appear (so it's possible to raise
-// delayed syntax error at correct position).
-
-pp.parseExpression = function (noIn, refDestructuringErrors) {
- var startPos = this.start,
- startLoc = this.startLoc;
- var expr = this.parseMaybeAssign(noIn, refDestructuringErrors);
- if (this.type === _tokentype.types.comma) {
- var node = this.startNodeAt(startPos, startLoc);
- node.expressions = [expr];
- while (this.eat(_tokentype.types.comma)) node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors));
- return this.finishNode(node, "SequenceExpression");
- }
- return expr;
-};
-
-// Parse an assignment expression. This includes applications of
-// operators like `+=`.
-
-pp.parseMaybeAssign = function (noIn, refDestructuringErrors, afterLeftParse) {
- if (this.type == _tokentype.types._yield && this.inGenerator) return this.parseYield();
-
- var validateDestructuring = false;
- if (!refDestructuringErrors) {
- refDestructuringErrors = { shorthandAssign: 0, trailingComma: 0 };
- validateDestructuring = true;
- }
- var startPos = this.start,
- startLoc = this.startLoc;
- if (this.type == _tokentype.types.parenL || this.type == _tokentype.types.name) this.potentialArrowAt = this.start;
- var left = this.parseMaybeConditional(noIn, refDestructuringErrors);
- if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc);
- if (this.type.isAssign) {
- if (validateDestructuring) this.checkPatternErrors(refDestructuringErrors, true);
- var node = this.startNodeAt(startPos, startLoc);
- node.operator = this.value;
- node.left = this.type === _tokentype.types.eq ? this.toAssignable(left) : left;
- refDestructuringErrors.shorthandAssign = 0; // reset because shorthand default was used correctly
- this.checkLVal(left);
- this.next();
- node.right = this.parseMaybeAssign(noIn);
- return this.finishNode(node, "AssignmentExpression");
- } else {
- if (validateDestructuring) this.checkExpressionErrors(refDestructuringErrors, true);
- }
- return left;
-};
-
-// Parse a ternary conditional (`?:`) operator.
-
-pp.parseMaybeConditional = function (noIn, refDestructuringErrors) {
- var startPos = this.start,
- startLoc = this.startLoc;
- var expr = this.parseExprOps(noIn, refDestructuringErrors);
- if (this.checkExpressionErrors(refDestructuringErrors)) return expr;
- if (this.eat(_tokentype.types.question)) {
- var node = this.startNodeAt(startPos, startLoc);
- node.test = expr;
- node.consequent = this.parseMaybeAssign();
- this.expect(_tokentype.types.colon);
- node.alternate = this.parseMaybeAssign(noIn);
- return this.finishNode(node, "ConditionalExpression");
- }
- return expr;
-};
-
-// Start the precedence parser.
-
-pp.parseExprOps = function (noIn, refDestructuringErrors) {
- var startPos = this.start,
- startLoc = this.startLoc;
- var expr = this.parseMaybeUnary(refDestructuringErrors);
- if (this.checkExpressionErrors(refDestructuringErrors)) return expr;
- return this.parseExprOp(expr, startPos, startLoc, -1, noIn);
-};
-
-// Parse binary operators with the operator precedence parsing
-// algorithm. `left` is the left-hand side of the operator.
-// `minPrec` provides context that allows the function to stop and
-// defer further parser to one of its callers when it encounters an
-// operator that has a lower precedence than the set it is parsing.
-
-pp.parseExprOp = function (left, leftStartPos, leftStartLoc, minPrec, noIn) {
- var prec = this.type.binop;
- if (prec != null && (!noIn || this.type !== _tokentype.types._in)) {
- if (prec > minPrec) {
- var node = this.startNodeAt(leftStartPos, leftStartLoc);
- node.left = left;
- node.operator = this.value;
- var op = this.type;
- this.next();
- var startPos = this.start,
- startLoc = this.startLoc;
- node.right = this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, prec, noIn);
- this.finishNode(node, op === _tokentype.types.logicalOR || op === _tokentype.types.logicalAND ? "LogicalExpression" : "BinaryExpression");
- return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn);
- }
- }
- return left;
-};
-
-// Parse unary operators, both prefix and postfix.
-
-pp.parseMaybeUnary = function (refDestructuringErrors) {
- if (this.type.prefix) {
- var node = this.startNode(),
- update = this.type === _tokentype.types.incDec;
- node.operator = this.value;
- node.prefix = true;
- this.next();
- node.argument = this.parseMaybeUnary();
- this.checkExpressionErrors(refDestructuringErrors, true);
- if (update) this.checkLVal(node.argument);else if (this.strict && node.operator === "delete" && node.argument.type === "Identifier") this.raise(node.start, "Deleting local variable in strict mode");
- return this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression");
- }
- var startPos = this.start,
- startLoc = this.startLoc;
- var expr = this.parseExprSubscripts(refDestructuringErrors);
- if (this.checkExpressionErrors(refDestructuringErrors)) return expr;
- while (this.type.postfix && !this.canInsertSemicolon()) {
- var node = this.startNodeAt(startPos, startLoc);
- node.operator = this.value;
- node.prefix = false;
- node.argument = expr;
- this.checkLVal(expr);
- this.next();
- expr = this.finishNode(node, "UpdateExpression");
- }
- return expr;
-};
-
-// Parse call, dot, and `[]`-subscript expressions.
-
-pp.parseExprSubscripts = function (refDestructuringErrors) {
- var startPos = this.start,
- startLoc = this.startLoc;
- var expr = this.parseExprAtom(refDestructuringErrors);
- var skipArrowSubscripts = expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")";
- if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr;
- return this.parseSubscripts(expr, startPos, startLoc);
-};
-
-pp.parseSubscripts = function (base, startPos, startLoc, noCalls) {
- for (;;) {
- if (this.eat(_tokentype.types.dot)) {
- var node = this.startNodeAt(startPos, startLoc);
- node.object = base;
- node.property = this.parseIdent(true);
- node.computed = false;
- base = this.finishNode(node, "MemberExpression");
- } else if (this.eat(_tokentype.types.bracketL)) {
- var node = this.startNodeAt(startPos, startLoc);
- node.object = base;
- node.property = this.parseExpression();
- node.computed = true;
- this.expect(_tokentype.types.bracketR);
- base = this.finishNode(node, "MemberExpression");
- } else if (!noCalls && this.eat(_tokentype.types.parenL)) {
- var node = this.startNodeAt(startPos, startLoc);
- node.callee = base;
- node.arguments = this.parseExprList(_tokentype.types.parenR, false);
- base = this.finishNode(node, "CallExpression");
- } else if (this.type === _tokentype.types.backQuote) {
- var node = this.startNodeAt(startPos, startLoc);
- node.tag = base;
- node.quasi = this.parseTemplate();
- base = this.finishNode(node, "TaggedTemplateExpression");
- } else {
- return base;
- }
- }
-};
-
-// Parse an atomic expression — either a single token that is an
-// expression, an expression started by a keyword like `function` or
-// `new`, or an expression wrapped in punctuation like `()`, `[]`,
-// or `{}`.
-
-pp.parseExprAtom = function (refDestructuringErrors) {
- var node = undefined,
- canBeArrow = this.potentialArrowAt == this.start;
- switch (this.type) {
- case _tokentype.types._super:
- if (!this.inFunction) this.raise(this.start, "'super' outside of function or class");
- case _tokentype.types._this:
- var type = this.type === _tokentype.types._this ? "ThisExpression" : "Super";
- node = this.startNode();
- this.next();
- return this.finishNode(node, type);
-
- case _tokentype.types._yield:
- if (this.inGenerator) this.unexpected();
-
- case _tokentype.types.name:
- var startPos = this.start,
- startLoc = this.startLoc;
- var id = this.parseIdent(this.type !== _tokentype.types.name);
- if (canBeArrow && !this.canInsertSemicolon() && this.eat(_tokentype.types.arrow)) return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id]);
- return id;
-
- case _tokentype.types.regexp:
- var value = this.value;
- node = this.parseLiteral(value.value);
- node.regex = { pattern: value.pattern, flags: value.flags };
- return node;
-
- case _tokentype.types.num:case _tokentype.types.string:
- return this.parseLiteral(this.value);
-
- case _tokentype.types._null:case _tokentype.types._true:case _tokentype.types._false:
- node = this.startNode();
- node.value = this.type === _tokentype.types._null ? null : this.type === _tokentype.types._true;
- node.raw = this.type.keyword;
- this.next();
- return this.finishNode(node, "Literal");
-
- case _tokentype.types.parenL:
- return this.parseParenAndDistinguishExpression(canBeArrow);
-
- case _tokentype.types.bracketL:
- node = this.startNode();
- this.next();
- // check whether this is array comprehension or regular array
- if (this.options.ecmaVersion >= 7 && this.type === _tokentype.types._for) {
- return this.parseComprehension(node, false);
- }
- node.elements = this.parseExprList(_tokentype.types.bracketR, true, true, refDestructuringErrors);
- return this.finishNode(node, "ArrayExpression");
-
- case _tokentype.types.braceL:
- return this.parseObj(false, refDestructuringErrors);
-
- case _tokentype.types._function:
- node = this.startNode();
- this.next();
- return this.parseFunction(node, false);
-
- case _tokentype.types._class:
- return this.parseClass(this.startNode(), false);
-
- case _tokentype.types._new:
- return this.parseNew();
-
- case _tokentype.types.backQuote:
- return this.parseTemplate();
-
- default:
- this.unexpected();
- }
-};
-
-pp.parseLiteral = function (value) {
- var node = this.startNode();
- node.value = value;
- node.raw = this.input.slice(this.start, this.end);
- this.next();
- return this.finishNode(node, "Literal");
-};
-
-pp.parseParenExpression = function () {
- this.expect(_tokentype.types.parenL);
- var val = this.parseExpression();
- this.expect(_tokentype.types.parenR);
- return val;
-};
-
-pp.parseParenAndDistinguishExpression = function (canBeArrow) {
- var startPos = this.start,
- startLoc = this.startLoc,
- val = undefined;
- if (this.options.ecmaVersion >= 6) {
- this.next();
-
- if (this.options.ecmaVersion >= 7 && this.type === _tokentype.types._for) {
- return this.parseComprehension(this.startNodeAt(startPos, startLoc), true);
- }
-
- var innerStartPos = this.start,
- innerStartLoc = this.startLoc;
- var exprList = [],
- first = true;
- var refDestructuringErrors = { shorthandAssign: 0, trailingComma: 0 },
- spreadStart = undefined,
- innerParenStart = undefined;
- while (this.type !== _tokentype.types.parenR) {
- first ? first = false : this.expect(_tokentype.types.comma);
- if (this.type === _tokentype.types.ellipsis) {
- spreadStart = this.start;
- exprList.push(this.parseParenItem(this.parseRest()));
- break;
- } else {
- if (this.type === _tokentype.types.parenL && !innerParenStart) {
- innerParenStart = this.start;
- }
- exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));
- }
- }
- var innerEndPos = this.start,
- innerEndLoc = this.startLoc;
- this.expect(_tokentype.types.parenR);
-
- if (canBeArrow && !this.canInsertSemicolon() && this.eat(_tokentype.types.arrow)) {
- this.checkPatternErrors(refDestructuringErrors, true);
- if (innerParenStart) this.unexpected(innerParenStart);
- return this.parseParenArrowList(startPos, startLoc, exprList);
- }
-
- if (!exprList.length) this.unexpected(this.lastTokStart);
- if (spreadStart) this.unexpected(spreadStart);
- this.checkExpressionErrors(refDestructuringErrors, true);
-
- if (exprList.length > 1) {
- val = this.startNodeAt(innerStartPos, innerStartLoc);
- val.expressions = exprList;
- this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc);
- } else {
- val = exprList[0];
- }
- } else {
- val = this.parseParenExpression();
- }
-
- if (this.options.preserveParens) {
- var par = this.startNodeAt(startPos, startLoc);
- par.expression = val;
- return this.finishNode(par, "ParenthesizedExpression");
- } else {
- return val;
- }
-};
-
-pp.parseParenItem = function (item) {
- return item;
-};
-
-pp.parseParenArrowList = function (startPos, startLoc, exprList) {
- return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList);
-};
-
-// New's precedence is slightly tricky. It must allow its argument to
-// be a `[]` or dot subscript expression, but not a call — at least,
-// not without wrapping it in parentheses. Thus, it uses the noCalls
-// argument to parseSubscripts to prevent it from consuming the
-// argument list.
-
-var empty = [];
-
-pp.parseNew = function () {
- var node = this.startNode();
- var meta = this.parseIdent(true);
- if (this.options.ecmaVersion >= 6 && this.eat(_tokentype.types.dot)) {
- node.meta = meta;
- node.property = this.parseIdent(true);
- if (node.property.name !== "target") this.raise(node.property.start, "The only valid meta property for new is new.target");
- if (!this.inFunction) this.raise(node.start, "new.target can only be used in functions");
- return this.finishNode(node, "MetaProperty");
- }
- var startPos = this.start,
- startLoc = this.startLoc;
- node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);
- if (this.eat(_tokentype.types.parenL)) node.arguments = this.parseExprList(_tokentype.types.parenR, false);else node.arguments = empty;
- return this.finishNode(node, "NewExpression");
-};
-
-// Parse template expression.
-
-pp.parseTemplateElement = function () {
- var elem = this.startNode();
- elem.value = {
- raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, '\n'),
- cooked: this.value
- };
- this.next();
- elem.tail = this.type === _tokentype.types.backQuote;
- return this.finishNode(elem, "TemplateElement");
-};
-
-pp.parseTemplate = function () {
- var node = this.startNode();
- this.next();
- node.expressions = [];
- var curElt = this.parseTemplateElement();
- node.quasis = [curElt];
- while (!curElt.tail) {
- this.expect(_tokentype.types.dollarBraceL);
- node.expressions.push(this.parseExpression());
- this.expect(_tokentype.types.braceR);
- node.quasis.push(curElt = this.parseTemplateElement());
- }
- this.next();
- return this.finishNode(node, "TemplateLiteral");
-};
-
-// Parse an object literal or binding pattern.
-
-pp.parseObj = function (isPattern, refDestructuringErrors) {
- var node = this.startNode(),
- first = true,
- propHash = {};
- node.properties = [];
- this.next();
- while (!this.eat(_tokentype.types.braceR)) {
- if (!first) {
- this.expect(_tokentype.types.comma);
- if (this.afterTrailingComma(_tokentype.types.braceR)) break;
- } else first = false;
-
- var prop = this.startNode(),
- isGenerator = undefined,
- startPos = undefined,
- startLoc = undefined;
- if (this.options.ecmaVersion >= 6) {
- prop.method = false;
- prop.shorthand = false;
- if (isPattern || refDestructuringErrors) {
- startPos = this.start;
- startLoc = this.startLoc;
- }
- if (!isPattern) isGenerator = this.eat(_tokentype.types.star);
- }
- this.parsePropertyName(prop);
- this.parsePropertyValue(prop, isPattern, isGenerator, startPos, startLoc, refDestructuringErrors);
- this.checkPropClash(prop, propHash);
- node.properties.push(this.finishNode(prop, "Property"));
- }
- return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression");
-};
-
-pp.parsePropertyValue = function (prop, isPattern, isGenerator, startPos, startLoc, refDestructuringErrors) {
- if (this.eat(_tokentype.types.colon)) {
- prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);
- prop.kind = "init";
- } else if (this.options.ecmaVersion >= 6 && this.type === _tokentype.types.parenL) {
- if (isPattern) this.unexpected();
- prop.kind = "init";
- prop.method = true;
- prop.value = this.parseMethod(isGenerator);
- } else if (this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && (this.type != _tokentype.types.comma && this.type != _tokentype.types.braceR)) {
- if (isGenerator || isPattern) this.unexpected();
- prop.kind = prop.key.name;
- this.parsePropertyName(prop);
- prop.value = this.parseMethod(false);
- var paramCount = prop.kind === "get" ? 0 : 1;
- if (prop.value.params.length !== paramCount) {
- var start = prop.value.start;
- if (prop.kind === "get") this.raise(start, "getter should have no params");else this.raise(start, "setter should have exactly one param");
- }
- if (prop.kind === "set" && prop.value.params[0].type === "RestElement") this.raise(prop.value.params[0].start, "Setter cannot use rest params");
- } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") {
- prop.kind = "init";
- if (isPattern) {
- if (this.keywords.test(prop.key.name) || (this.strict ? this.reservedWordsStrictBind : this.reservedWords).test(prop.key.name)) this.raise(prop.key.start, "Binding " + prop.key.name);
- prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);
- } else if (this.type === _tokentype.types.eq && refDestructuringErrors) {
- if (!refDestructuringErrors.shorthandAssign) refDestructuringErrors.shorthandAssign = this.start;
- prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);
- } else {
- prop.value = prop.key;
- }
- prop.shorthand = true;
- } else this.unexpected();
-};
-
-pp.parsePropertyName = function (prop) {
- if (this.options.ecmaVersion >= 6) {
- if (this.eat(_tokentype.types.bracketL)) {
- prop.computed = true;
- prop.key = this.parseMaybeAssign();
- this.expect(_tokentype.types.bracketR);
- return prop.key;
- } else {
- prop.computed = false;
- }
- }
- return prop.key = this.type === _tokentype.types.num || this.type === _tokentype.types.string ? this.parseExprAtom() : this.parseIdent(true);
-};
-
-// Initialize empty function node.
-
-pp.initFunction = function (node) {
- node.id = null;
- if (this.options.ecmaVersion >= 6) {
- node.generator = false;
- node.expression = false;
- }
-};
-
-// Parse object or class method.
-
-pp.parseMethod = function (isGenerator) {
- var node = this.startNode();
- this.initFunction(node);
- this.expect(_tokentype.types.parenL);
- node.params = this.parseBindingList(_tokentype.types.parenR, false, false);
- if (this.options.ecmaVersion >= 6) node.generator = isGenerator;
- this.parseFunctionBody(node, false);
- return this.finishNode(node, "FunctionExpression");
-};
-
-// Parse arrow function expression with given parameters.
-
-pp.parseArrowExpression = function (node, params) {
- this.initFunction(node);
- node.params = this.toAssignableList(params, true);
- this.parseFunctionBody(node, true);
- return this.finishNode(node, "ArrowFunctionExpression");
-};
-
-// Parse function body and check parameters.
-
-pp.parseFunctionBody = function (node, isArrowFunction) {
- var isExpression = isArrowFunction && this.type !== _tokentype.types.braceL;
-
- if (isExpression) {
- node.body = this.parseMaybeAssign();
- node.expression = true;
- } else {
- // Start a new scope with regard to labels and the `inFunction`
- // flag (restore them to their old value afterwards).
- var oldInFunc = this.inFunction,
- oldInGen = this.inGenerator,
- oldLabels = this.labels;
- this.inFunction = true;this.inGenerator = node.generator;this.labels = [];
- node.body = this.parseBlock(true);
- node.expression = false;
- this.inFunction = oldInFunc;this.inGenerator = oldInGen;this.labels = oldLabels;
- }
-
- // If this is a strict mode function, verify that argument names
- // are not repeated, and it does not try to bind the words `eval`
- // or `arguments`.
- if (this.strict || !isExpression && node.body.body.length && this.isUseStrict(node.body.body[0])) {
- var oldStrict = this.strict;
- this.strict = true;
- if (node.id) this.checkLVal(node.id, true);
- this.checkParams(node);
- this.strict = oldStrict;
- } else if (isArrowFunction) {
- this.checkParams(node);
- }
-};
-
-// Checks function params for various disallowed patterns such as using "eval"
-// or "arguments" and duplicate parameters.
-
-pp.checkParams = function (node) {
- var nameHash = {};
- for (var i = 0; i < node.params.length; i++) {
- this.checkLVal(node.params[i], true, nameHash);
- }
-};
-
-// Parses a comma-separated list of expressions, and returns them as
-// an array. `close` is the token type that ends the list, and
-// `allowEmpty` can be turned on to allow subsequent commas with
-// nothing in between them to be parsed as `null` (which is needed
-// for array literals).
-
-pp.parseExprList = function (close, allowTrailingComma, allowEmpty, refDestructuringErrors) {
- var elts = [],
- first = true;
- while (!this.eat(close)) {
- if (!first) {
- this.expect(_tokentype.types.comma);
- if (this.type === close && refDestructuringErrors && !refDestructuringErrors.trailingComma) {
- refDestructuringErrors.trailingComma = this.lastTokStart;
- }
- if (allowTrailingComma && this.afterTrailingComma(close)) break;
- } else first = false;
-
- var elt = undefined;
- if (allowEmpty && this.type === _tokentype.types.comma) elt = null;else if (this.type === _tokentype.types.ellipsis) elt = this.parseSpread(refDestructuringErrors);else elt = this.parseMaybeAssign(false, refDestructuringErrors);
- elts.push(elt);
- }
- return elts;
-};
-
-// Parse the next token as an identifier. If `liberal` is true (used
-// when parsing properties), it will also convert keywords into
-// identifiers.
-
-pp.parseIdent = function (liberal) {
- var node = this.startNode();
- if (liberal && this.options.allowReserved == "never") liberal = false;
- if (this.type === _tokentype.types.name) {
- if (!liberal && (this.strict ? this.reservedWordsStrict : this.reservedWords).test(this.value) && (this.options.ecmaVersion >= 6 || this.input.slice(this.start, this.end).indexOf("\\") == -1)) this.raise(this.start, "The keyword '" + this.value + "' is reserved");
- node.name = this.value;
- } else if (liberal && this.type.keyword) {
- node.name = this.type.keyword;
- } else {
- this.unexpected();
- }
- this.next();
- return this.finishNode(node, "Identifier");
-};
-
-// Parses yield expression inside generator.
-
-pp.parseYield = function () {
- var node = this.startNode();
- this.next();
- if (this.type == _tokentype.types.semi || this.canInsertSemicolon() || this.type != _tokentype.types.star && !this.type.startsExpr) {
- node.delegate = false;
- node.argument = null;
- } else {
- node.delegate = this.eat(_tokentype.types.star);
- node.argument = this.parseMaybeAssign();
- }
- return this.finishNode(node, "YieldExpression");
-};
-
-// Parses array and generator comprehensions.
-
-pp.parseComprehension = function (node, isGenerator) {
- node.blocks = [];
- while (this.type === _tokentype.types._for) {
- var block = this.startNode();
- this.next();
- this.expect(_tokentype.types.parenL);
- block.left = this.parseBindingAtom();
- this.checkLVal(block.left, true);
- this.expectContextual("of");
- block.right = this.parseExpression();
- this.expect(_tokentype.types.parenR);
- node.blocks.push(this.finishNode(block, "ComprehensionBlock"));
- }
- node.filter = this.eat(_tokentype.types._if) ? this.parseParenExpression() : null;
- node.body = this.parseExpression();
- this.expect(isGenerator ? _tokentype.types.parenR : _tokentype.types.bracketR);
- node.generator = isGenerator;
- return this.finishNode(node, "ComprehensionExpression");
-};
-
-},{"./state":10,"./tokentype":14}],2:[function(_dereq_,module,exports){
-// This is a trick taken from Esprima. It turns out that, on
-// non-Chrome browsers, to check whether a string is in a set, a
-// predicate containing a big ugly `switch` statement is faster than
-// a regular expression, and on Chrome the two are about on par.
-// This function uses `eval` (non-lexical) to produce such a
-// predicate from a space-separated string of words.
-//
-// It starts by sorting the words by length.
-
-// Reserved word lists for various dialects of the language
-
-"use strict";
-
-exports.__esModule = true;
-exports.isIdentifierStart = isIdentifierStart;
-exports.isIdentifierChar = isIdentifierChar;
-var reservedWords = {
- 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",
- 5: "class enum extends super const export import",
- 6: "enum",
- strict: "implements interface let package private protected public static yield",
- strictBind: "eval arguments"
-};
-
-exports.reservedWords = reservedWords;
-// And the keywords
-
-var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this";
-
-var keywords = {
- 5: ecma5AndLessKeywords,
- 6: ecma5AndLessKeywords + " let const class extends export import yield super"
-};
-
-exports.keywords = keywords;
-// ## Character categories
-
-// Big ugly regular expressions that match characters in the
-// whitespace, identifier, and identifier-start categories. These
-// are only applied when a character is found to actually have a
-// code point above 128.
-// Generated by `bin/generate-identifier-regex.js`.
-
-var nonASCIIidentifierStartChars = "ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢲऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ";
-var nonASCIIidentifierChars = "·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣤ-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏ᦰ-ᧀᧈᧉ᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷼-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-꣄꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︭︳︴﹍-﹏0-9_";
-
-var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
-var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
-
-nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
-
-// These are a run-length and offset encoded representation of the
-// >0xffff code points that are a valid part of identifiers. The
-// offset starts at 0x10000, and each pair of numbers represents an
-// offset to the next range, and then a size of the range. They were
-// generated by tools/generate-identifier-regex.js
-var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 17, 26, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 99, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 98, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 26, 45, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 955, 52, 76, 44, 33, 24, 27, 35, 42, 34, 4, 0, 13, 47, 15, 3, 22, 0, 38, 17, 2, 24, 133, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 32, 4, 287, 47, 21, 1, 2, 0, 185, 46, 82, 47, 21, 0, 60, 42, 502, 63, 32, 0, 449, 56, 1288, 920, 104, 110, 2962, 1070, 13266, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 881, 68, 12, 0, 67, 12, 16481, 1, 3071, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 4149, 196, 1340, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42710, 42, 4148, 12, 221, 16355, 541];
-var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 1306, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 52, 0, 13, 2, 49, 13, 16, 9, 83, 11, 168, 11, 6, 9, 8, 2, 57, 0, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 316, 19, 13, 9, 214, 6, 3, 8, 112, 16, 16, 9, 82, 12, 9, 9, 535, 9, 20855, 9, 135, 4, 60, 6, 26, 9, 1016, 45, 17, 3, 19723, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 4305, 6, 792618, 239];
-
-// This has a complexity linear to the value of the code. The
-// assumption is that looking up astral identifier characters is
-// rare.
-function isInAstralSet(code, set) {
- var pos = 0x10000;
- for (var i = 0; i < set.length; i += 2) {
- pos += set[i];
- if (pos > code) return false;
- pos += set[i + 1];
- if (pos >= code) return true;
- }
-}
-
-// Test whether a given character code starts an identifier.
-
-function isIdentifierStart(code, astral) {
- if (code < 65) return code === 36;
- if (code < 91) return true;
- if (code < 97) return code === 95;
- if (code < 123) return true;
- if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
- if (astral === false) return false;
- return isInAstralSet(code, astralIdentifierStartCodes);
-}
-
-// Test whether a given character is part of an identifier.
-
-function isIdentifierChar(code, astral) {
- if (code < 48) return code === 36;
- if (code < 58) return true;
- if (code < 65) return false;
- if (code < 91) return true;
- if (code < 97) return code === 95;
- if (code < 123) return true;
- if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
- if (astral === false) return false;
- return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
-}
-
-},{}],3:[function(_dereq_,module,exports){
-// Acorn is a tiny, fast JavaScript parser written in JavaScript.
-//
-// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and
-// various contributors and released under an MIT license.
-//
-// Git repositories for Acorn are available at
-//
-// http://marijnhaverbeke.nl/git/acorn
-// https://github.com/ternjs/acorn.git
-//
-// Please use the [github bug tracker][ghbt] to report issues.
-//
-// [ghbt]: https://github.com/ternjs/acorn/issues
-//
-// This file defines the main parser interface. The library also comes
-// with a [error-tolerant parser][dammit] and an
-// [abstract syntax tree walker][walk], defined in other files.
-//
-// [dammit]: acorn_loose.js
-// [walk]: util/walk.js
-
-"use strict";
-
-exports.__esModule = true;
-exports.parse = parse;
-exports.parseExpressionAt = parseExpressionAt;
-exports.tokenizer = tokenizer;
-
-var _state = _dereq_("./state");
-
-_dereq_("./parseutil");
-
-_dereq_("./statement");
-
-_dereq_("./lval");
-
-_dereq_("./expression");
-
-_dereq_("./location");
-
-exports.Parser = _state.Parser;
-exports.plugins = _state.plugins;
-
-var _options = _dereq_("./options");
-
-exports.defaultOptions = _options.defaultOptions;
-
-var _locutil = _dereq_("./locutil");
-
-exports.Position = _locutil.Position;
-exports.SourceLocation = _locutil.SourceLocation;
-exports.getLineInfo = _locutil.getLineInfo;
-
-var _node = _dereq_("./node");
-
-exports.Node = _node.Node;
-
-var _tokentype = _dereq_("./tokentype");
-
-exports.TokenType = _tokentype.TokenType;
-exports.tokTypes = _tokentype.types;
-
-var _tokencontext = _dereq_("./tokencontext");
-
-exports.TokContext = _tokencontext.TokContext;
-exports.tokContexts = _tokencontext.types;
-
-var _identifier = _dereq_("./identifier");
-
-exports.isIdentifierChar = _identifier.isIdentifierChar;
-exports.isIdentifierStart = _identifier.isIdentifierStart;
-
-var _tokenize = _dereq_("./tokenize");
-
-exports.Token = _tokenize.Token;
-
-var _whitespace = _dereq_("./whitespace");
-
-exports.isNewLine = _whitespace.isNewLine;
-exports.lineBreak = _whitespace.lineBreak;
-exports.lineBreakG = _whitespace.lineBreakG;
-var version = "2.7.0";
-
-exports.version = version;
-// The main exported interface (under `self.acorn` when in the
-// browser) is a `parse` function that takes a code string and
-// returns an abstract syntax tree as specified by [Mozilla parser
-// API][api].
-//
-// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API
-
-function parse(input, options) {
- return new _state.Parser(options, input).parse();
-}
-
-// This function tries to parse a single expression at a given
-// offset in a string. Useful for parsing mixed-language formats
-// that embed JavaScript expressions.
-
-function parseExpressionAt(input, pos, options) {
- var p = new _state.Parser(options, input, pos);
- p.nextToken();
- return p.parseExpression();
-}
-
-// Acorn is organized as a tokenizer and a recursive-descent parser.
-// The `tokenizer` export provides an interface to the tokenizer.
-
-function tokenizer(input, options) {
- return new _state.Parser(options, input);
-}
-
-},{"./expression":1,"./identifier":2,"./location":4,"./locutil":5,"./lval":6,"./node":7,"./options":8,"./parseutil":9,"./state":10,"./statement":11,"./tokencontext":12,"./tokenize":13,"./tokentype":14,"./whitespace":16}],4:[function(_dereq_,module,exports){
-"use strict";
-
-var _state = _dereq_("./state");
-
-var _locutil = _dereq_("./locutil");
-
-var pp = _state.Parser.prototype;
-
-// This function is used to raise exceptions on parse errors. It
-// takes an offset integer (into the current `input`) to indicate
-// the location of the error, attaches the position to the end
-// of the error message, and then raises a `SyntaxError` with that
-// message.
-
-pp.raise = function (pos, message) {
- var loc = _locutil.getLineInfo(this.input, pos);
- message += " (" + loc.line + ":" + loc.column + ")";
- var err = new SyntaxError(message);
- err.pos = pos;err.loc = loc;err.raisedAt = this.pos;
- throw err;
-};
-
-pp.curPosition = function () {
- if (this.options.locations) {
- return new _locutil.Position(this.curLine, this.pos - this.lineStart);
- }
-};
-
-},{"./locutil":5,"./state":10}],5:[function(_dereq_,module,exports){
-"use strict";
-
-exports.__esModule = true;
-exports.getLineInfo = getLineInfo;
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var _whitespace = _dereq_("./whitespace");
-
-// These are used when `options.locations` is on, for the
-// `startLoc` and `endLoc` properties.
-
-var Position = (function () {
- function Position(line, col) {
- _classCallCheck(this, Position);
-
- this.line = line;
- this.column = col;
- }
-
- Position.prototype.offset = function offset(n) {
- return new Position(this.line, this.column + n);
- };
-
- return Position;
-})();
-
-exports.Position = Position;
-
-var SourceLocation = function SourceLocation(p, start, end) {
- _classCallCheck(this, SourceLocation);
-
- this.start = start;
- this.end = end;
- if (p.sourceFile !== null) this.source = p.sourceFile;
-}
-
-// The `getLineInfo` function is mostly useful when the
-// `locations` option is off (for performance reasons) and you
-// want to find the line/column position for a given character
-// offset. `input` should be the code string that the offset refers
-// into.
-
-;
-
-exports.SourceLocation = SourceLocation;
-
-function getLineInfo(input, offset) {
- for (var line = 1, cur = 0;;) {
- _whitespace.lineBreakG.lastIndex = cur;
- var match = _whitespace.lineBreakG.exec(input);
- if (match && match.index < offset) {
- ++line;
- cur = match.index + match[0].length;
- } else {
- return new Position(line, offset - cur);
- }
- }
-}
-
-},{"./whitespace":16}],6:[function(_dereq_,module,exports){
-"use strict";
-
-var _tokentype = _dereq_("./tokentype");
-
-var _state = _dereq_("./state");
-
-var _util = _dereq_("./util");
-
-var pp = _state.Parser.prototype;
-
-// Convert existing expression atom to assignable pattern
-// if possible.
-
-pp.toAssignable = function (node, isBinding) {
- if (this.options.ecmaVersion >= 6 && node) {
- switch (node.type) {
- case "Identifier":
- case "ObjectPattern":
- case "ArrayPattern":
- break;
-
- case "ObjectExpression":
- node.type = "ObjectPattern";
- for (var i = 0; i < node.properties.length; i++) {
- var prop = node.properties[i];
- if (prop.kind !== "init") this.raise(prop.key.start, "Object pattern can't contain getter or setter");
- this.toAssignable(prop.value, isBinding);
- }
- break;
-
- case "ArrayExpression":
- node.type = "ArrayPattern";
- this.toAssignableList(node.elements, isBinding);
- break;
-
- case "AssignmentExpression":
- if (node.operator === "=") {
- node.type = "AssignmentPattern";
- delete node.operator;
- // falls through to AssignmentPattern
- } else {
- this.raise(node.left.end, "Only '=' operator can be used for specifying default value.");
- break;
- }
-
- case "AssignmentPattern":
- if (node.right.type === "YieldExpression") this.raise(node.right.start, "Yield expression cannot be a default value");
- break;
-
- case "ParenthesizedExpression":
- node.expression = this.toAssignable(node.expression, isBinding);
- break;
-
- case "MemberExpression":
- if (!isBinding) break;
-
- default:
- this.raise(node.start, "Assigning to rvalue");
- }
- }
- return node;
-};
-
-// Convert list of expression atoms to binding list.
-
-pp.toAssignableList = function (exprList, isBinding) {
- var end = exprList.length;
- if (end) {
- var last = exprList[end - 1];
- if (last && last.type == "RestElement") {
- --end;
- } else if (last && last.type == "SpreadElement") {
- last.type = "RestElement";
- var arg = last.argument;
- this.toAssignable(arg, isBinding);
- if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern") this.unexpected(arg.start);
- --end;
- }
-
- if (isBinding && last.type === "RestElement" && last.argument.type !== "Identifier") this.unexpected(last.argument.start);
- }
- for (var i = 0; i < end; i++) {
- var elt = exprList[i];
- if (elt) this.toAssignable(elt, isBinding);
- }
- return exprList;
-};
-
-// Parses spread element.
-
-pp.parseSpread = function (refDestructuringErrors) {
- var node = this.startNode();
- this.next();
- node.argument = this.parseMaybeAssign(refDestructuringErrors);
- return this.finishNode(node, "SpreadElement");
-};
-
-pp.parseRest = function (allowNonIdent) {
- var node = this.startNode();
- this.next();
-
- // RestElement inside of a function parameter must be an identifier
- if (allowNonIdent) node.argument = this.type === _tokentype.types.name ? this.parseIdent() : this.unexpected();else node.argument = this.type === _tokentype.types.name || this.type === _tokentype.types.bracketL ? this.parseBindingAtom() : this.unexpected();
-
- return this.finishNode(node, "RestElement");
-};
-
-// Parses lvalue (assignable) atom.
-
-pp.parseBindingAtom = function () {
- if (this.options.ecmaVersion < 6) return this.parseIdent();
- switch (this.type) {
- case _tokentype.types.name:
- return this.parseIdent();
-
- case _tokentype.types.bracketL:
- var node = this.startNode();
- this.next();
- node.elements = this.parseBindingList(_tokentype.types.bracketR, true, true);
- return this.finishNode(node, "ArrayPattern");
-
- case _tokentype.types.braceL:
- return this.parseObj(true);
-
- default:
- this.unexpected();
- }
-};
-
-pp.parseBindingList = function (close, allowEmpty, allowTrailingComma, allowNonIdent) {
- var elts = [],
- first = true;
- while (!this.eat(close)) {
- if (first) first = false;else this.expect(_tokentype.types.comma);
- if (allowEmpty && this.type === _tokentype.types.comma) {
- elts.push(null);
- } else if (allowTrailingComma && this.afterTrailingComma(close)) {
- break;
- } else if (this.type === _tokentype.types.ellipsis) {
- var rest = this.parseRest(allowNonIdent);
- this.parseBindingListItem(rest);
- elts.push(rest);
- this.expect(close);
- break;
- } else {
- var elem = this.parseMaybeDefault(this.start, this.startLoc);
- this.parseBindingListItem(elem);
- elts.push(elem);
- }
- }
- return elts;
-};
-
-pp.parseBindingListItem = function (param) {
- return param;
-};
-
-// Parses assignment pattern around given atom if possible.
-
-pp.parseMaybeDefault = function (startPos, startLoc, left) {
- left = left || this.parseBindingAtom();
- if (this.options.ecmaVersion < 6 || !this.eat(_tokentype.types.eq)) return left;
- var node = this.startNodeAt(startPos, startLoc);
- node.left = left;
- node.right = this.parseMaybeAssign();
- return this.finishNode(node, "AssignmentPattern");
-};
-
-// Verify that a node is an lval — something that can be assigned
-// to.
-
-pp.checkLVal = function (expr, isBinding, checkClashes) {
- switch (expr.type) {
- case "Identifier":
- if (this.strict && this.reservedWordsStrictBind.test(expr.name)) this.raise(expr.start, (isBinding ? "Binding " : "Assigning to ") + expr.name + " in strict mode");
- if (checkClashes) {
- if (_util.has(checkClashes, expr.name)) this.raise(expr.start, "Argument name clash");
- checkClashes[expr.name] = true;
- }
- break;
-
- case "MemberExpression":
- if (isBinding) this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " member expression");
- break;
-
- case "ObjectPattern":
- for (var i = 0; i < expr.properties.length; i++) {
- this.checkLVal(expr.properties[i].value, isBinding, checkClashes);
- }break;
-
- case "ArrayPattern":
- for (var i = 0; i < expr.elements.length; i++) {
- var elem = expr.elements[i];
- if (elem) this.checkLVal(elem, isBinding, checkClashes);
- }
- break;
-
- case "AssignmentPattern":
- this.checkLVal(expr.left, isBinding, checkClashes);
- break;
-
- case "RestElement":
- this.checkLVal(expr.argument, isBinding, checkClashes);
- break;
-
- case "ParenthesizedExpression":
- this.checkLVal(expr.expression, isBinding, checkClashes);
- break;
-
- default:
- this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " rvalue");
- }
-};
-
-},{"./state":10,"./tokentype":14,"./util":15}],7:[function(_dereq_,module,exports){
-"use strict";
-
-exports.__esModule = true;
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var _state = _dereq_("./state");
-
-var _locutil = _dereq_("./locutil");
-
-var Node = function Node(parser, pos, loc) {
- _classCallCheck(this, Node);
-
- this.type = "";
- this.start = pos;
- this.end = 0;
- if (parser.options.locations) this.loc = new _locutil.SourceLocation(parser, loc);
- if (parser.options.directSourceFile) this.sourceFile = parser.options.directSourceFile;
- if (parser.options.ranges) this.range = [pos, 0];
-}
-
-// Start an AST node, attaching a start offset.
-
-;
-
-exports.Node = Node;
-var pp = _state.Parser.prototype;
-
-pp.startNode = function () {
- return new Node(this, this.start, this.startLoc);
-};
-
-pp.startNodeAt = function (pos, loc) {
- return new Node(this, pos, loc);
-};
-
-// Finish an AST node, adding `type` and `end` properties.
-
-function finishNodeAt(node, type, pos, loc) {
- node.type = type;
- node.end = pos;
- if (this.options.locations) node.loc.end = loc;
- if (this.options.ranges) node.range[1] = pos;
- return node;
-}
-
-pp.finishNode = function (node, type) {
- return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc);
-};
-
-// Finish node at given position
-
-pp.finishNodeAt = function (node, type, pos, loc) {
- return finishNodeAt.call(this, node, type, pos, loc);
-};
-
-},{"./locutil":5,"./state":10}],8:[function(_dereq_,module,exports){
-"use strict";
-
-exports.__esModule = true;
-exports.getOptions = getOptions;
-
-var _util = _dereq_("./util");
-
-var _locutil = _dereq_("./locutil");
-
-// A second optional argument can be given to further configure
-// the parser process. These options are recognized:
-
-var defaultOptions = {
- // `ecmaVersion` indicates the ECMAScript version to parse. Must
- // be either 3, or 5, or 6. This influences support for strict
- // mode, the set of reserved words, support for getters and
- // setters and other features.
- ecmaVersion: 5,
- // Source type ("script" or "module") for different semantics
- sourceType: "script",
- // `onInsertedSemicolon` can be a callback that will be called
- // when a semicolon is automatically inserted. It will be passed
- // th position of the comma as an offset, and if `locations` is
- // enabled, it is given the location as a `{line, column}` object
- // as second argument.
- onInsertedSemicolon: null,
- // `onTrailingComma` is similar to `onInsertedSemicolon`, but for
- // trailing commas.
- onTrailingComma: null,
- // By default, reserved words are only enforced if ecmaVersion >= 5.
- // Set `allowReserved` to a boolean value to explicitly turn this on
- // an off. When this option has the value "never", reserved words
- // and keywords can also not be used as property names.
- allowReserved: null,
- // When enabled, a return at the top level is not considered an
- // error.
- allowReturnOutsideFunction: false,
- // When enabled, import/export statements are not constrained to
- // appearing at the top of the program.
- allowImportExportEverywhere: false,
- // When enabled, hashbang directive in the beginning of file
- // is allowed and treated as a line comment.
- allowHashBang: false,
- // When `locations` is on, `loc` properties holding objects with
- // `start` and `end` properties in `{line, column}` form (with
- // line being 1-based and column 0-based) will be attached to the
- // nodes.
- locations: false,
- // A function can be passed as `onToken` option, which will
- // cause Acorn to call that function with object in the same
- // format as tokens returned from `tokenizer().getToken()`. Note
- // that you are not allowed to call the parser from the
- // callback—that will corrupt its internal state.
- onToken: null,
- // A function can be passed as `onComment` option, which will
- // cause Acorn to call that function with `(block, text, start,
- // end)` parameters whenever a comment is skipped. `block` is a
- // boolean indicating whether this is a block (`/* */`) comment,
- // `text` is the content of the comment, and `start` and `end` are
- // character offsets that denote the start and end of the comment.
- // When the `locations` option is on, two more parameters are
- // passed, the full `{line, column}` locations of the start and
- // end of the comments. Note that you are not allowed to call the
- // parser from the callback—that will corrupt its internal state.
- onComment: null,
- // Nodes have their start and end characters offsets recorded in
- // `start` and `end` properties (directly on the node, rather than
- // the `loc` object, which holds line/column data. To also add a
- // [semi-standardized][range] `range` property holding a `[start,
- // end]` array with the same numbers, set the `ranges` option to
- // `true`.
- //
- // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678
- ranges: false,
- // It is possible to parse multiple files into a single AST by
- // passing the tree produced by parsing the first file as
- // `program` option in subsequent parses. This will add the
- // toplevel forms of the parsed file to the `Program` (top) node
- // of an existing parse tree.
- program: null,
- // When `locations` is on, you can pass this to record the source
- // file in every node's `loc` object.
- sourceFile: null,
- // This value, if given, is stored in every node, whether
- // `locations` is on or off.
- directSourceFile: null,
- // When enabled, parenthesized expressions are represented by
- // (non-standard) ParenthesizedExpression nodes
- preserveParens: false,
- plugins: {}
-};
-
-exports.defaultOptions = defaultOptions;
-// Interpret and default an options object
-
-function getOptions(opts) {
- var options = {};
- for (var opt in defaultOptions) {
- options[opt] = opts && _util.has(opts, opt) ? opts[opt] : defaultOptions[opt];
- }if (options.allowReserved == null) options.allowReserved = options.ecmaVersion < 5;
-
- if (_util.isArray(options.onToken)) {
- (function () {
- var tokens = options.onToken;
- options.onToken = function (token) {
- return tokens.push(token);
- };
- })();
- }
- if (_util.isArray(options.onComment)) options.onComment = pushComment(options, options.onComment);
-
- return options;
-}
-
-function pushComment(options, array) {
- return function (block, text, start, end, startLoc, endLoc) {
- var comment = {
- type: block ? 'Block' : 'Line',
- value: text,
- start: start,
- end: end
- };
- if (options.locations) comment.loc = new _locutil.SourceLocation(this, startLoc, endLoc);
- if (options.ranges) comment.range = [start, end];
- array.push(comment);
- };
-}
-
-},{"./locutil":5,"./util":15}],9:[function(_dereq_,module,exports){
-"use strict";
-
-var _tokentype = _dereq_("./tokentype");
-
-var _state = _dereq_("./state");
-
-var _whitespace = _dereq_("./whitespace");
-
-var pp = _state.Parser.prototype;
-
-// ## Parser utilities
-
-// Test whether a statement node is the string literal `"use strict"`.
-
-pp.isUseStrict = function (stmt) {
- return this.options.ecmaVersion >= 5 && stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && stmt.expression.raw.slice(1, -1) === "use strict";
-};
-
-// Predicate that tests whether the next token is of the given
-// type, and if yes, consumes it as a side effect.
-
-pp.eat = function (type) {
- if (this.type === type) {
- this.next();
- return true;
- } else {
- return false;
- }
-};
-
-// Tests whether parsed token is a contextual keyword.
-
-pp.isContextual = function (name) {
- return this.type === _tokentype.types.name && this.value === name;
-};
-
-// Consumes contextual keyword if possible.
-
-pp.eatContextual = function (name) {
- return this.value === name && this.eat(_tokentype.types.name);
-};
-
-// Asserts that following token is given contextual keyword.
-
-pp.expectContextual = function (name) {
- if (!this.eatContextual(name)) this.unexpected();
-};
-
-// Test whether a semicolon can be inserted at the current position.
-
-pp.canInsertSemicolon = function () {
- return this.type === _tokentype.types.eof || this.type === _tokentype.types.braceR || _whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.start));
-};
-
-pp.insertSemicolon = function () {
- if (this.canInsertSemicolon()) {
- if (this.options.onInsertedSemicolon) this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc);
- return true;
- }
-};
-
-// Consume a semicolon, or, failing that, see if we are allowed to
-// pretend that there is a semicolon at this position.
-
-pp.semicolon = function () {
- if (!this.eat(_tokentype.types.semi) && !this.insertSemicolon()) this.unexpected();
-};
-
-pp.afterTrailingComma = function (tokType) {
- if (this.type == tokType) {
- if (this.options.onTrailingComma) this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc);
- this.next();
- return true;
- }
-};
-
-// Expect a token of a given type. If found, consume it, otherwise,
-// raise an unexpected token error.
-
-pp.expect = function (type) {
- this.eat(type) || this.unexpected();
-};
-
-// Raise an unexpected token error.
-
-pp.unexpected = function (pos) {
- this.raise(pos != null ? pos : this.start, "Unexpected token");
-};
-
-pp.checkPatternErrors = function (refDestructuringErrors, andThrow) {
- var pos = refDestructuringErrors && refDestructuringErrors.trailingComma;
- if (!andThrow) return !!pos;
- if (pos) this.raise(pos, "Trailing comma is not permitted in destructuring patterns");
-};
-
-pp.checkExpressionErrors = function (refDestructuringErrors, andThrow) {
- var pos = refDestructuringErrors && refDestructuringErrors.shorthandAssign;
- if (!andThrow) return !!pos;
- if (pos) this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns");
-};
-
-},{"./state":10,"./tokentype":14,"./whitespace":16}],10:[function(_dereq_,module,exports){
-"use strict";
-
-exports.__esModule = true;
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var _identifier = _dereq_("./identifier");
-
-var _tokentype = _dereq_("./tokentype");
-
-var _whitespace = _dereq_("./whitespace");
-
-var _options = _dereq_("./options");
-
-// Registered plugins
-var plugins = {};
-
-exports.plugins = plugins;
-function keywordRegexp(words) {
- return new RegExp("^(" + words.replace(/ /g, "|") + ")$");
-}
-
-var Parser = (function () {
- function Parser(options, input, startPos) {
- _classCallCheck(this, Parser);
-
- this.options = options = _options.getOptions(options);
- this.sourceFile = options.sourceFile;
- this.keywords = keywordRegexp(_identifier.keywords[options.ecmaVersion >= 6 ? 6 : 5]);
- var reserved = options.allowReserved ? "" : _identifier.reservedWords[options.ecmaVersion] + (options.sourceType == "module" ? " await" : "");
- this.reservedWords = keywordRegexp(reserved);
- var reservedStrict = (reserved ? reserved + " " : "") + _identifier.reservedWords.strict;
- this.reservedWordsStrict = keywordRegexp(reservedStrict);
- this.reservedWordsStrictBind = keywordRegexp(reservedStrict + " " + _identifier.reservedWords.strictBind);
- this.input = String(input);
-
- // Used to signal to callers of `readWord1` whether the word
- // contained any escape sequences. This is needed because words with
- // escape sequences must not be interpreted as keywords.
- this.containsEsc = false;
-
- // Load plugins
- this.loadPlugins(options.plugins);
-
- // Set up token state
-
- // The current position of the tokenizer in the input.
- if (startPos) {
- this.pos = startPos;
- this.lineStart = Math.max(0, this.input.lastIndexOf("\n", startPos));
- this.curLine = this.input.slice(0, this.lineStart).split(_whitespace.lineBreak).length;
- } else {
- this.pos = this.lineStart = 0;
- this.curLine = 1;
- }
-
- // Properties of the current token:
- // Its type
- this.type = _tokentype.types.eof;
- // For tokens that include more information than their type, the value
- this.value = null;
- // Its start and end offset
- this.start = this.end = this.pos;
- // And, if locations are used, the {line, column} object
- // corresponding to those offsets
- this.startLoc = this.endLoc = this.curPosition();
-
- // Position information for the previous token
- this.lastTokEndLoc = this.lastTokStartLoc = null;
- this.lastTokStart = this.lastTokEnd = this.pos;
-
- // The context stack is used to superficially track syntactic
- // context to predict whether a regular expression is allowed in a
- // given position.
- this.context = this.initialContext();
- this.exprAllowed = true;
-
- // Figure out if it's a module code.
- this.strict = this.inModule = options.sourceType === "module";
-
- // Used to signify the start of a potential arrow function
- this.potentialArrowAt = -1;
-
- // Flags to track whether we are in a function, a generator.
- this.inFunction = this.inGenerator = false;
- // Labels in scope.
- this.labels = [];
-
- // If enabled, skip leading hashbang line.
- if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === '#!') this.skipLineComment(2);
- }
-
- // DEPRECATED Kept for backwards compatibility until 3.0 in case a plugin uses them
-
- Parser.prototype.isKeyword = function isKeyword(word) {
- return this.keywords.test(word);
- };
-
- Parser.prototype.isReservedWord = function isReservedWord(word) {
- return this.reservedWords.test(word);
- };
-
- Parser.prototype.extend = function extend(name, f) {
- this[name] = f(this[name]);
- };
-
- Parser.prototype.loadPlugins = function loadPlugins(pluginConfigs) {
- for (var _name in pluginConfigs) {
- var plugin = plugins[_name];
- if (!plugin) throw new Error("Plugin '" + _name + "' not found");
- plugin(this, pluginConfigs[_name]);
- }
- };
-
- Parser.prototype.parse = function parse() {
- var node = this.options.program || this.startNode();
- this.nextToken();
- return this.parseTopLevel(node);
- };
-
- return Parser;
-})();
-
-exports.Parser = Parser;
-
-},{"./identifier":2,"./options":8,"./tokentype":14,"./whitespace":16}],11:[function(_dereq_,module,exports){
-"use strict";
-
-var _tokentype = _dereq_("./tokentype");
-
-var _state = _dereq_("./state");
-
-var _whitespace = _dereq_("./whitespace");
-
-var pp = _state.Parser.prototype;
-
-// ### Statement parsing
-
-// Parse a program. Initializes the parser, reads any number of
-// statements, and wraps them in a Program node. Optionally takes a
-// `program` argument. If present, the statements will be appended
-// to its body instead of creating a new node.
-
-pp.parseTopLevel = function (node) {
- var first = true;
- if (!node.body) node.body = [];
- while (this.type !== _tokentype.types.eof) {
- var stmt = this.parseStatement(true, true);
- node.body.push(stmt);
- if (first) {
- if (this.isUseStrict(stmt)) this.setStrict(true);
- first = false;
- }
- }
- this.next();
- if (this.options.ecmaVersion >= 6) {
- node.sourceType = this.options.sourceType;
- }
- return this.finishNode(node, "Program");
-};
-
-var loopLabel = { kind: "loop" },
- switchLabel = { kind: "switch" };
-
-// Parse a single statement.
-//
-// If expecting a statement and finding a slash operator, parse a
-// regular expression literal. This is to handle cases like
-// `if (foo) /blah/.exec(foo)`, where looking at the previous token
-// does not help.
-
-pp.parseStatement = function (declaration, topLevel) {
- var starttype = this.type,
- node = this.startNode();
-
- // Most types of statements are recognized by the keyword they
- // start with. Many are trivial to parse, some require a bit of
- // complexity.
-
- switch (starttype) {
- case _tokentype.types._break:case _tokentype.types._continue:
- return this.parseBreakContinueStatement(node, starttype.keyword);
- case _tokentype.types._debugger:
- return this.parseDebuggerStatement(node);
- case _tokentype.types._do:
- return this.parseDoStatement(node);
- case _tokentype.types._for:
- return this.parseForStatement(node);
- case _tokentype.types._function:
- if (!declaration && this.options.ecmaVersion >= 6) this.unexpected();
- return this.parseFunctionStatement(node);
- case _tokentype.types._class:
- if (!declaration) this.unexpected();
- return this.parseClass(node, true);
- case _tokentype.types._if:
- return this.parseIfStatement(node);
- case _tokentype.types._return:
- return this.parseReturnStatement(node);
- case _tokentype.types._switch:
- return this.parseSwitchStatement(node);
- case _tokentype.types._throw:
- return this.parseThrowStatement(node);
- case _tokentype.types._try:
- return this.parseTryStatement(node);
- case _tokentype.types._let:case _tokentype.types._const:
- if (!declaration) this.unexpected(); // NOTE: falls through to _var
- case _tokentype.types._var:
- return this.parseVarStatement(node, starttype);
- case _tokentype.types._while:
- return this.parseWhileStatement(node);
- case _tokentype.types._with:
- return this.parseWithStatement(node);
- case _tokentype.types.braceL:
- return this.parseBlock();
- case _tokentype.types.semi:
- return this.parseEmptyStatement(node);
- case _tokentype.types._export:
- case _tokentype.types._import:
- if (!this.options.allowImportExportEverywhere) {
- if (!topLevel) this.raise(this.start, "'import' and 'export' may only appear at the top level");
- if (!this.inModule) this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'");
- }
- return starttype === _tokentype.types._import ? this.parseImport(node) : this.parseExport(node);
-
- // If the statement does not start with a statement keyword or a
- // brace, it's an ExpressionStatement or LabeledStatement. We
- // simply start parsing an expression, and afterwards, if the
- // next token is a colon and the expression was a simple
- // Identifier node, we switch to interpreting it as a label.
- default:
- var maybeName = this.value,
- expr = this.parseExpression();
- if (starttype === _tokentype.types.name && expr.type === "Identifier" && this.eat(_tokentype.types.colon)) return this.parseLabeledStatement(node, maybeName, expr);else return this.parseExpressionStatement(node, expr);
- }
-};
-
-pp.parseBreakContinueStatement = function (node, keyword) {
- var isBreak = keyword == "break";
- this.next();
- if (this.eat(_tokentype.types.semi) || this.insertSemicolon()) node.label = null;else if (this.type !== _tokentype.types.name) this.unexpected();else {
- node.label = this.parseIdent();
- this.semicolon();
- }
-
- // Verify that there is an actual destination to break or
- // continue to.
- for (var i = 0; i < this.labels.length; ++i) {
- var lab = this.labels[i];
- if (node.label == null || lab.name === node.label.name) {
- if (lab.kind != null && (isBreak || lab.kind === "loop")) break;
- if (node.label && isBreak) break;
- }
- }
- if (i === this.labels.length) this.raise(node.start, "Unsyntactic " + keyword);
- return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement");
-};
-
-pp.parseDebuggerStatement = function (node) {
- this.next();
- this.semicolon();
- return this.finishNode(node, "DebuggerStatement");
-};
-
-pp.parseDoStatement = function (node) {
- this.next();
- this.labels.push(loopLabel);
- node.body = this.parseStatement(false);
- this.labels.pop();
- this.expect(_tokentype.types._while);
- node.test = this.parseParenExpression();
- if (this.options.ecmaVersion >= 6) this.eat(_tokentype.types.semi);else this.semicolon();
- return this.finishNode(node, "DoWhileStatement");
-};
-
-// Disambiguating between a `for` and a `for`/`in` or `for`/`of`
-// loop is non-trivial. Basically, we have to parse the init `var`
-// statement or expression, disallowing the `in` operator (see
-// the second parameter to `parseExpression`), and then check
-// whether the next token is `in` or `of`. When there is no init
-// part (semicolon immediately after the opening parenthesis), it
-// is a regular `for` loop.
-
-pp.parseForStatement = function (node) {
- this.next();
- this.labels.push(loopLabel);
- this.expect(_tokentype.types.parenL);
- if (this.type === _tokentype.types.semi) return this.parseFor(node, null);
- if (this.type === _tokentype.types._var || this.type === _tokentype.types._let || this.type === _tokentype.types._const) {
- var _init = this.startNode(),
- varKind = this.type;
- this.next();
- this.parseVar(_init, true, varKind);
- this.finishNode(_init, "VariableDeclaration");
- if ((this.type === _tokentype.types._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) && _init.declarations.length === 1 && !(varKind !== _tokentype.types._var && _init.declarations[0].init)) return this.parseForIn(node, _init);
- return this.parseFor(node, _init);
- }
- var refDestructuringErrors = { shorthandAssign: 0, trailingComma: 0 };
- var init = this.parseExpression(true, refDestructuringErrors);
- if (this.type === _tokentype.types._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) {
- this.checkPatternErrors(refDestructuringErrors, true);
- this.toAssignable(init);
- this.checkLVal(init);
- return this.parseForIn(node, init);
- } else {
- this.checkExpressionErrors(refDestructuringErrors, true);
- }
- return this.parseFor(node, init);
-};
-
-pp.parseFunctionStatement = function (node) {
- this.next();
- return this.parseFunction(node, true);
-};
-
-pp.parseIfStatement = function (node) {
- this.next();
- node.test = this.parseParenExpression();
- node.consequent = this.parseStatement(false);
- node.alternate = this.eat(_tokentype.types._else) ? this.parseStatement(false) : null;
- return this.finishNode(node, "IfStatement");
-};
-
-pp.parseReturnStatement = function (node) {
- if (!this.inFunction && !this.options.allowReturnOutsideFunction) this.raise(this.start, "'return' outside of function");
- this.next();
-
- // In `return` (and `break`/`continue`), the keywords with
- // optional arguments, we eagerly look for a semicolon or the
- // possibility to insert one.
-
- if (this.eat(_tokentype.types.semi) || this.insertSemicolon()) node.argument = null;else {
- node.argument = this.parseExpression();this.semicolon();
- }
- return this.finishNode(node, "ReturnStatement");
-};
-
-pp.parseSwitchStatement = function (node) {
- this.next();
- node.discriminant = this.parseParenExpression();
- node.cases = [];
- this.expect(_tokentype.types.braceL);
- this.labels.push(switchLabel);
-
- // Statements under must be grouped (by label) in SwitchCase
- // nodes. `cur` is used to keep the node that we are currently
- // adding statements to.
-
- for (var cur, sawDefault = false; this.type != _tokentype.types.braceR;) {
- if (this.type === _tokentype.types._case || this.type === _tokentype.types._default) {
- var isCase = this.type === _tokentype.types._case;
- if (cur) this.finishNode(cur, "SwitchCase");
- node.cases.push(cur = this.startNode());
- cur.consequent = [];
- this.next();
- if (isCase) {
- cur.test = this.parseExpression();
- } else {
- if (sawDefault) this.raise(this.lastTokStart, "Multiple default clauses");
- sawDefault = true;
- cur.test = null;
- }
- this.expect(_tokentype.types.colon);
- } else {
- if (!cur) this.unexpected();
- cur.consequent.push(this.parseStatement(true));
- }
- }
- if (cur) this.finishNode(cur, "SwitchCase");
- this.next(); // Closing brace
- this.labels.pop();
- return this.finishNode(node, "SwitchStatement");
-};
-
-pp.parseThrowStatement = function (node) {
- this.next();
- if (_whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) this.raise(this.lastTokEnd, "Illegal newline after throw");
- node.argument = this.parseExpression();
- this.semicolon();
- return this.finishNode(node, "ThrowStatement");
-};
-
-// Reused empty array added for node fields that are always empty.
-
-var empty = [];
-
-pp.parseTryStatement = function (node) {
- this.next();
- node.block = this.parseBlock();
- node.handler = null;
- if (this.type === _tokentype.types._catch) {
- var clause = this.startNode();
- this.next();
- this.expect(_tokentype.types.parenL);
- clause.param = this.parseBindingAtom();
- this.checkLVal(clause.param, true);
- this.expect(_tokentype.types.parenR);
- clause.body = this.parseBlock();
- node.handler = this.finishNode(clause, "CatchClause");
- }
- node.finalizer = this.eat(_tokentype.types._finally) ? this.parseBlock() : null;
- if (!node.handler && !node.finalizer) this.raise(node.start, "Missing catch or finally clause");
- return this.finishNode(node, "TryStatement");
-};
-
-pp.parseVarStatement = function (node, kind) {
- this.next();
- this.parseVar(node, false, kind);
- this.semicolon();
- return this.finishNode(node, "VariableDeclaration");
-};
-
-pp.parseWhileStatement = function (node) {
- this.next();
- node.test = this.parseParenExpression();
- this.labels.push(loopLabel);
- node.body = this.parseStatement(false);
- this.labels.pop();
- return this.finishNode(node, "WhileStatement");
-};
-
-pp.parseWithStatement = function (node) {
- if (this.strict) this.raise(this.start, "'with' in strict mode");
- this.next();
- node.object = this.parseParenExpression();
- node.body = this.parseStatement(false);
- return this.finishNode(node, "WithStatement");
-};
-
-pp.parseEmptyStatement = function (node) {
- this.next();
- return this.finishNode(node, "EmptyStatement");
-};
-
-pp.parseLabeledStatement = function (node, maybeName, expr) {
- for (var i = 0; i < this.labels.length; ++i) {
- if (this.labels[i].name === maybeName) this.raise(expr.start, "Label '" + maybeName + "' is already declared");
- }var kind = this.type.isLoop ? "loop" : this.type === _tokentype.types._switch ? "switch" : null;
- for (var i = this.labels.length - 1; i >= 0; i--) {
- var label = this.labels[i];
- if (label.statementStart == node.start) {
- label.statementStart = this.start;
- label.kind = kind;
- } else break;
- }
- this.labels.push({ name: maybeName, kind: kind, statementStart: this.start });
- node.body = this.parseStatement(true);
- this.labels.pop();
- node.label = expr;
- return this.finishNode(node, "LabeledStatement");
-};
-
-pp.parseExpressionStatement = function (node, expr) {
- node.expression = expr;
- this.semicolon();
- return this.finishNode(node, "ExpressionStatement");
-};
-
-// Parse a semicolon-enclosed block of statements, handling `"use
-// strict"` declarations when `allowStrict` is true (used for
-// function bodies).
-
-pp.parseBlock = function (allowStrict) {
- var node = this.startNode(),
- first = true,
- oldStrict = undefined;
- node.body = [];
- this.expect(_tokentype.types.braceL);
- while (!this.eat(_tokentype.types.braceR)) {
- var stmt = this.parseStatement(true);
- node.body.push(stmt);
- if (first && allowStrict && this.isUseStrict(stmt)) {
- oldStrict = this.strict;
- this.setStrict(this.strict = true);
- }
- first = false;
- }
- if (oldStrict === false) this.setStrict(false);
- return this.finishNode(node, "BlockStatement");
-};
-
-// Parse a regular `for` loop. The disambiguation code in
-// `parseStatement` will already have parsed the init statement or
-// expression.
-
-pp.parseFor = function (node, init) {
- node.init = init;
- this.expect(_tokentype.types.semi);
- node.test = this.type === _tokentype.types.semi ? null : this.parseExpression();
- this.expect(_tokentype.types.semi);
- node.update = this.type === _tokentype.types.parenR ? null : this.parseExpression();
- this.expect(_tokentype.types.parenR);
- node.body = this.parseStatement(false);
- this.labels.pop();
- return this.finishNode(node, "ForStatement");
-};
-
-// Parse a `for`/`in` and `for`/`of` loop, which are almost
-// same from parser's perspective.
-
-pp.parseForIn = function (node, init) {
- var type = this.type === _tokentype.types._in ? "ForInStatement" : "ForOfStatement";
- this.next();
- node.left = init;
- node.right = this.parseExpression();
- this.expect(_tokentype.types.parenR);
- node.body = this.parseStatement(false);
- this.labels.pop();
- return this.finishNode(node, type);
-};
-
-// Parse a list of variable declarations.
-
-pp.parseVar = function (node, isFor, kind) {
- node.declarations = [];
- node.kind = kind.keyword;
- for (;;) {
- var decl = this.startNode();
- this.parseVarId(decl);
- if (this.eat(_tokentype.types.eq)) {
- decl.init = this.parseMaybeAssign(isFor);
- } else if (kind === _tokentype.types._const && !(this.type === _tokentype.types._in || this.options.ecmaVersion >= 6 && this.isContextual("of"))) {
- this.unexpected();
- } else if (decl.id.type != "Identifier" && !(isFor && (this.type === _tokentype.types._in || this.isContextual("of")))) {
- this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value");
- } else {
- decl.init = null;
- }
- node.declarations.push(this.finishNode(decl, "VariableDeclarator"));
- if (!this.eat(_tokentype.types.comma)) break;
- }
- return node;
-};
-
-pp.parseVarId = function (decl) {
- decl.id = this.parseBindingAtom();
- this.checkLVal(decl.id, true);
-};
-
-// Parse a function declaration or literal (depending on the
-// `isStatement` parameter).
-
-pp.parseFunction = function (node, isStatement, allowExpressionBody) {
- this.initFunction(node);
- if (this.options.ecmaVersion >= 6) node.generator = this.eat(_tokentype.types.star);
- if (isStatement || this.type === _tokentype.types.name) node.id = this.parseIdent();
- this.parseFunctionParams(node);
- this.parseFunctionBody(node, allowExpressionBody);
- return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression");
-};
-
-pp.parseFunctionParams = function (node) {
- this.expect(_tokentype.types.parenL);
- node.params = this.parseBindingList(_tokentype.types.parenR, false, false, true);
-};
-
-// Parse a class declaration or literal (depending on the
-// `isStatement` parameter).
-
-pp.parseClass = function (node, isStatement) {
- this.next();
- this.parseClassId(node, isStatement);
- this.parseClassSuper(node);
- var classBody = this.startNode();
- var hadConstructor = false;
- classBody.body = [];
- this.expect(_tokentype.types.braceL);
- while (!this.eat(_tokentype.types.braceR)) {
- if (this.eat(_tokentype.types.semi)) continue;
- var method = this.startNode();
- var isGenerator = this.eat(_tokentype.types.star);
- var isMaybeStatic = this.type === _tokentype.types.name && this.value === "static";
- this.parsePropertyName(method);
- method["static"] = isMaybeStatic && this.type !== _tokentype.types.parenL;
- if (method["static"]) {
- if (isGenerator) this.unexpected();
- isGenerator = this.eat(_tokentype.types.star);
- this.parsePropertyName(method);
- }
- method.kind = "method";
- var isGetSet = false;
- if (!method.computed) {
- var key = method.key;
-
- if (!isGenerator && key.type === "Identifier" && this.type !== _tokentype.types.parenL && (key.name === "get" || key.name === "set")) {
- isGetSet = true;
- method.kind = key.name;
- key = this.parsePropertyName(method);
- }
- if (!method["static"] && (key.type === "Identifier" && key.name === "constructor" || key.type === "Literal" && key.value === "constructor")) {
- if (hadConstructor) this.raise(key.start, "Duplicate constructor in the same class");
- if (isGetSet) this.raise(key.start, "Constructor can't have get/set modifier");
- if (isGenerator) this.raise(key.start, "Constructor can't be a generator");
- method.kind = "constructor";
- hadConstructor = true;
- }
- }
- this.parseClassMethod(classBody, method, isGenerator);
- if (isGetSet) {
- var paramCount = method.kind === "get" ? 0 : 1;
- if (method.value.params.length !== paramCount) {
- var start = method.value.start;
- if (method.kind === "get") this.raise(start, "getter should have no params");else this.raise(start, "setter should have exactly one param");
- }
- if (method.kind === "set" && method.value.params[0].type === "RestElement") this.raise(method.value.params[0].start, "Setter cannot use rest params");
- }
- }
- node.body = this.finishNode(classBody, "ClassBody");
- return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression");
-};
-
-pp.parseClassMethod = function (classBody, method, isGenerator) {
- method.value = this.parseMethod(isGenerator);
- classBody.body.push(this.finishNode(method, "MethodDefinition"));
-};
-
-pp.parseClassId = function (node, isStatement) {
- node.id = this.type === _tokentype.types.name ? this.parseIdent() : isStatement ? this.unexpected() : null;
-};
-
-pp.parseClassSuper = function (node) {
- node.superClass = this.eat(_tokentype.types._extends) ? this.parseExprSubscripts() : null;
-};
-
-// Parses module export declaration.
-
-pp.parseExport = function (node) {
- this.next();
- // export * from '...'
- if (this.eat(_tokentype.types.star)) {
- this.expectContextual("from");
- node.source = this.type === _tokentype.types.string ? this.parseExprAtom() : this.unexpected();
- this.semicolon();
- return this.finishNode(node, "ExportAllDeclaration");
- }
- if (this.eat(_tokentype.types._default)) {
- // export default ...
- var expr = this.parseMaybeAssign();
- var needsSemi = true;
- if (expr.type == "FunctionExpression" || expr.type == "ClassExpression") {
- needsSemi = false;
- if (expr.id) {
- expr.type = expr.type == "FunctionExpression" ? "FunctionDeclaration" : "ClassDeclaration";
- }
- }
- node.declaration = expr;
- if (needsSemi) this.semicolon();
- return this.finishNode(node, "ExportDefaultDeclaration");
- }
- // export var|const|let|function|class ...
- if (this.shouldParseExportStatement()) {
- node.declaration = this.parseStatement(true);
- node.specifiers = [];
- node.source = null;
- } else {
- // export { x, y as z } [from '...']
- node.declaration = null;
- node.specifiers = this.parseExportSpecifiers();
- if (this.eatContextual("from")) {
- node.source = this.type === _tokentype.types.string ? this.parseExprAtom() : this.unexpected();
- } else {
- // check for keywords used as local names
- for (var i = 0; i < node.specifiers.length; i++) {
- if (this.keywords.test(node.specifiers[i].local.name) || this.reservedWords.test(node.specifiers[i].local.name)) {
- this.unexpected(node.specifiers[i].local.start);
- }
- }
-
- node.source = null;
- }
- this.semicolon();
- }
- return this.finishNode(node, "ExportNamedDeclaration");
-};
-
-pp.shouldParseExportStatement = function () {
- return this.type.keyword;
-};
-
-// Parses a comma-separated list of module exports.
-
-pp.parseExportSpecifiers = function () {
- var nodes = [],
- first = true;
- // export { x, y as z } [from '...']
- this.expect(_tokentype.types.braceL);
- while (!this.eat(_tokentype.types.braceR)) {
- if (!first) {
- this.expect(_tokentype.types.comma);
- if (this.afterTrailingComma(_tokentype.types.braceR)) break;
- } else first = false;
-
- var node = this.startNode();
- node.local = this.parseIdent(this.type === _tokentype.types._default);
- node.exported = this.eatContextual("as") ? this.parseIdent(true) : node.local;
- nodes.push(this.finishNode(node, "ExportSpecifier"));
- }
- return nodes;
-};
-
-// Parses import declaration.
-
-pp.parseImport = function (node) {
- this.next();
- // import '...'
- if (this.type === _tokentype.types.string) {
- node.specifiers = empty;
- node.source = this.parseExprAtom();
- } else {
- node.specifiers = this.parseImportSpecifiers();
- this.expectContextual("from");
- node.source = this.type === _tokentype.types.string ? this.parseExprAtom() : this.unexpected();
- }
- this.semicolon();
- return this.finishNode(node, "ImportDeclaration");
-};
-
-// Parses a comma-separated list of module imports.
-
-pp.parseImportSpecifiers = function () {
- var nodes = [],
- first = true;
- if (this.type === _tokentype.types.name) {
- // import defaultObj, { x, y as z } from '...'
- var node = this.startNode();
- node.local = this.parseIdent();
- this.checkLVal(node.local, true);
- nodes.push(this.finishNode(node, "ImportDefaultSpecifier"));
- if (!this.eat(_tokentype.types.comma)) return nodes;
- }
- if (this.type === _tokentype.types.star) {
- var node = this.startNode();
- this.next();
- this.expectContextual("as");
- node.local = this.parseIdent();
- this.checkLVal(node.local, true);
- nodes.push(this.finishNode(node, "ImportNamespaceSpecifier"));
- return nodes;
- }
- this.expect(_tokentype.types.braceL);
- while (!this.eat(_tokentype.types.braceR)) {
- if (!first) {
- this.expect(_tokentype.types.comma);
- if (this.afterTrailingComma(_tokentype.types.braceR)) break;
- } else first = false;
-
- var node = this.startNode();
- node.imported = this.parseIdent(true);
- if (this.eatContextual("as")) {
- node.local = this.parseIdent();
- } else {
- node.local = node.imported;
- if (this.isKeyword(node.local.name)) this.unexpected(node.local.start);
- if (this.reservedWordsStrict.test(node.local.name)) this.raise(node.local.start, "The keyword '" + node.local.name + "' is reserved");
- }
- this.checkLVal(node.local, true);
- nodes.push(this.finishNode(node, "ImportSpecifier"));
- }
- return nodes;
-};
-
-},{"./state":10,"./tokentype":14,"./whitespace":16}],12:[function(_dereq_,module,exports){
-// The algorithm used to determine whether a regexp can appear at a
-// given point in the program is loosely based on sweet.js' approach.
-// See https://github.com/mozilla/sweet.js/wiki/design
-
-"use strict";
-
-exports.__esModule = true;
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var _state = _dereq_("./state");
-
-var _tokentype = _dereq_("./tokentype");
-
-var _whitespace = _dereq_("./whitespace");
-
-var TokContext = function TokContext(token, isExpr, preserveSpace, override) {
- _classCallCheck(this, TokContext);
-
- this.token = token;
- this.isExpr = !!isExpr;
- this.preserveSpace = !!preserveSpace;
- this.override = override;
-};
-
-exports.TokContext = TokContext;
-var types = {
- b_stat: new TokContext("{", false),
- b_expr: new TokContext("{", true),
- b_tmpl: new TokContext("${", true),
- p_stat: new TokContext("(", false),
- p_expr: new TokContext("(", true),
- q_tmpl: new TokContext("`", true, true, function (p) {
- return p.readTmplToken();
- }),
- f_expr: new TokContext("function", true)
-};
-
-exports.types = types;
-var pp = _state.Parser.prototype;
-
-pp.initialContext = function () {
- return [types.b_stat];
-};
-
-pp.braceIsBlock = function (prevType) {
- if (prevType === _tokentype.types.colon) {
- var _parent = this.curContext();
- if (_parent === types.b_stat || _parent === types.b_expr) return !_parent.isExpr;
- }
- if (prevType === _tokentype.types._return) return _whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.start));
- if (prevType === _tokentype.types._else || prevType === _tokentype.types.semi || prevType === _tokentype.types.eof || prevType === _tokentype.types.parenR) return true;
- if (prevType == _tokentype.types.braceL) return this.curContext() === types.b_stat;
- return !this.exprAllowed;
-};
-
-pp.updateContext = function (prevType) {
- var update = undefined,
- type = this.type;
- if (type.keyword && prevType == _tokentype.types.dot) this.exprAllowed = false;else if (update = type.updateContext) update.call(this, prevType);else this.exprAllowed = type.beforeExpr;
-};
-
-// Token-specific context update code
-
-_tokentype.types.parenR.updateContext = _tokentype.types.braceR.updateContext = function () {
- if (this.context.length == 1) {
- this.exprAllowed = true;
- return;
- }
- var out = this.context.pop();
- if (out === types.b_stat && this.curContext() === types.f_expr) {
- this.context.pop();
- this.exprAllowed = false;
- } else if (out === types.b_tmpl) {
- this.exprAllowed = true;
- } else {
- this.exprAllowed = !out.isExpr;
- }
-};
-
-_tokentype.types.braceL.updateContext = function (prevType) {
- this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);
- this.exprAllowed = true;
-};
-
-_tokentype.types.dollarBraceL.updateContext = function () {
- this.context.push(types.b_tmpl);
- this.exprAllowed = true;
-};
-
-_tokentype.types.parenL.updateContext = function (prevType) {
- var statementParens = prevType === _tokentype.types._if || prevType === _tokentype.types._for || prevType === _tokentype.types._with || prevType === _tokentype.types._while;
- this.context.push(statementParens ? types.p_stat : types.p_expr);
- this.exprAllowed = true;
-};
-
-_tokentype.types.incDec.updateContext = function () {
- // tokExprAllowed stays unchanged
-};
-
-_tokentype.types._function.updateContext = function () {
- if (this.curContext() !== types.b_stat) this.context.push(types.f_expr);
- this.exprAllowed = false;
-};
-
-_tokentype.types.backQuote.updateContext = function () {
- if (this.curContext() === types.q_tmpl) this.context.pop();else this.context.push(types.q_tmpl);
- this.exprAllowed = false;
-};
-
-},{"./state":10,"./tokentype":14,"./whitespace":16}],13:[function(_dereq_,module,exports){
-"use strict";
-
-exports.__esModule = true;
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var _identifier = _dereq_("./identifier");
-
-var _tokentype = _dereq_("./tokentype");
-
-var _state = _dereq_("./state");
-
-var _locutil = _dereq_("./locutil");
-
-var _whitespace = _dereq_("./whitespace");
-
-// Object type used to represent tokens. Note that normally, tokens
-// simply exist as properties on the parser object. This is only
-// used for the onToken callback and the external tokenizer.
-
-var Token = function Token(p) {
- _classCallCheck(this, Token);
-
- this.type = p.type;
- this.value = p.value;
- this.start = p.start;
- this.end = p.end;
- if (p.options.locations) this.loc = new _locutil.SourceLocation(p, p.startLoc, p.endLoc);
- if (p.options.ranges) this.range = [p.start, p.end];
-}
-
-// ## Tokenizer
-
-;
-
-exports.Token = Token;
-var pp = _state.Parser.prototype;
-
-// Are we running under Rhino?
-var isRhino = typeof Packages == "object" && Object.prototype.toString.call(Packages) == "[object JavaPackage]";
-
-// Move to the next token
-
-pp.next = function () {
- if (this.options.onToken) this.options.onToken(new Token(this));
-
- this.lastTokEnd = this.end;
- this.lastTokStart = this.start;
- this.lastTokEndLoc = this.endLoc;
- this.lastTokStartLoc = this.startLoc;
- this.nextToken();
-};
-
-pp.getToken = function () {
- this.next();
- return new Token(this);
-};
-
-// If we're in an ES6 environment, make parsers iterable
-if (typeof Symbol !== "undefined") pp[Symbol.iterator] = function () {
- var self = this;
- return { next: function next() {
- var token = self.getToken();
- return {
- done: token.type === _tokentype.types.eof,
- value: token
- };
- } };
-};
-
-// Toggle strict mode. Re-reads the next number or string to please
-// pedantic tests (`"use strict"; 010;` should fail).
-
-pp.setStrict = function (strict) {
- this.strict = strict;
- if (this.type !== _tokentype.types.num && this.type !== _tokentype.types.string) return;
- this.pos = this.start;
- if (this.options.locations) {
- while (this.pos < this.lineStart) {
- this.lineStart = this.input.lastIndexOf("\n", this.lineStart - 2) + 1;
- --this.curLine;
- }
- }
- this.nextToken();
-};
-
-pp.curContext = function () {
- return this.context[this.context.length - 1];
-};
-
-// Read a single token, updating the parser object's token-related
-// properties.
-
-pp.nextToken = function () {
- var curContext = this.curContext();
- if (!curContext || !curContext.preserveSpace) this.skipSpace();
-
- this.start = this.pos;
- if (this.options.locations) this.startLoc = this.curPosition();
- if (this.pos >= this.input.length) return this.finishToken(_tokentype.types.eof);
-
- if (curContext.override) return curContext.override(this);else this.readToken(this.fullCharCodeAtPos());
-};
-
-pp.readToken = function (code) {
- // Identifier or keyword. '\uXXXX' sequences are allowed in
- // identifiers, so '\' also dispatches to that.
- if (_identifier.isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) return this.readWord();
-
- return this.getTokenFromCode(code);
-};
-
-pp.fullCharCodeAtPos = function () {
- var code = this.input.charCodeAt(this.pos);
- if (code <= 0xd7ff || code >= 0xe000) return code;
- var next = this.input.charCodeAt(this.pos + 1);
- return (code << 10) + next - 0x35fdc00;
-};
-
-pp.skipBlockComment = function () {
- var startLoc = this.options.onComment && this.curPosition();
- var start = this.pos,
- end = this.input.indexOf("*/", this.pos += 2);
- if (end === -1) this.raise(this.pos - 2, "Unterminated comment");
- this.pos = end + 2;
- if (this.options.locations) {
- _whitespace.lineBreakG.lastIndex = start;
- var match = undefined;
- while ((match = _whitespace.lineBreakG.exec(this.input)) && match.index < this.pos) {
- ++this.curLine;
- this.lineStart = match.index + match[0].length;
- }
- }
- if (this.options.onComment) this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, startLoc, this.curPosition());
-};
-
-pp.skipLineComment = function (startSkip) {
- var start = this.pos;
- var startLoc = this.options.onComment && this.curPosition();
- var ch = this.input.charCodeAt(this.pos += startSkip);
- while (this.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {
- ++this.pos;
- ch = this.input.charCodeAt(this.pos);
- }
- if (this.options.onComment) this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, startLoc, this.curPosition());
-};
-
-// Called at the start of the parse and after every token. Skips
-// whitespace and comments, and.
-
-pp.skipSpace = function () {
- loop: while (this.pos < this.input.length) {
- var ch = this.input.charCodeAt(this.pos);
- switch (ch) {
- case 32:case 160:
- // ' '
- ++this.pos;
- break;
- case 13:
- if (this.input.charCodeAt(this.pos + 1) === 10) {
- ++this.pos;
- }
- case 10:case 8232:case 8233:
- ++this.pos;
- if (this.options.locations) {
- ++this.curLine;
- this.lineStart = this.pos;
- }
- break;
- case 47:
- // '/'
- switch (this.input.charCodeAt(this.pos + 1)) {
- case 42:
- // '*'
- this.skipBlockComment();
- break;
- case 47:
- this.skipLineComment(2);
- break;
- default:
- break loop;
- }
- break;
- default:
- if (ch > 8 && ch < 14 || ch >= 5760 && _whitespace.nonASCIIwhitespace.test(String.fromCharCode(ch))) {
- ++this.pos;
- } else {
- break loop;
- }
- }
- }
-};
-
-// Called at the end of every token. Sets `end`, `val`, and
-// maintains `context` and `exprAllowed`, and skips the space after
-// the token, so that the next one's `start` will point at the
-// right position.
-
-pp.finishToken = function (type, val) {
- this.end = this.pos;
- if (this.options.locations) this.endLoc = this.curPosition();
- var prevType = this.type;
- this.type = type;
- this.value = val;
-
- this.updateContext(prevType);
-};
-
-// ### Token reading
-
-// This is the function that is called to fetch the next token. It
-// is somewhat obscure, because it works in character codes rather
-// than characters, and because operator parsing has been inlined
-// into it.
-//
-// All in the name of speed.
-//
-pp.readToken_dot = function () {
- var next = this.input.charCodeAt(this.pos + 1);
- if (next >= 48 && next <= 57) return this.readNumber(true);
- var next2 = this.input.charCodeAt(this.pos + 2);
- if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) {
- // 46 = dot '.'
- this.pos += 3;
- return this.finishToken(_tokentype.types.ellipsis);
- } else {
- ++this.pos;
- return this.finishToken(_tokentype.types.dot);
- }
-};
-
-pp.readToken_slash = function () {
- // '/'
- var next = this.input.charCodeAt(this.pos + 1);
- if (this.exprAllowed) {
- ++this.pos;return this.readRegexp();
- }
- if (next === 61) return this.finishOp(_tokentype.types.assign, 2);
- return this.finishOp(_tokentype.types.slash, 1);
-};
-
-pp.readToken_mult_modulo = function (code) {
- // '%*'
- var next = this.input.charCodeAt(this.pos + 1);
- if (next === 61) return this.finishOp(_tokentype.types.assign, 2);
- return this.finishOp(code === 42 ? _tokentype.types.star : _tokentype.types.modulo, 1);
-};
-
-pp.readToken_pipe_amp = function (code) {
- // '|&'
- var next = this.input.charCodeAt(this.pos + 1);
- if (next === code) return this.finishOp(code === 124 ? _tokentype.types.logicalOR : _tokentype.types.logicalAND, 2);
- if (next === 61) return this.finishOp(_tokentype.types.assign, 2);
- return this.finishOp(code === 124 ? _tokentype.types.bitwiseOR : _tokentype.types.bitwiseAND, 1);
-};
-
-pp.readToken_caret = function () {
- // '^'
- var next = this.input.charCodeAt(this.pos + 1);
- if (next === 61) return this.finishOp(_tokentype.types.assign, 2);
- return this.finishOp(_tokentype.types.bitwiseXOR, 1);
-};
-
-pp.readToken_plus_min = function (code) {
- // '+-'
- var next = this.input.charCodeAt(this.pos + 1);
- if (next === code) {
- if (next == 45 && this.input.charCodeAt(this.pos + 2) == 62 && _whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.pos))) {
- // A `-->` line comment
- this.skipLineComment(3);
- this.skipSpace();
- return this.nextToken();
- }
- return this.finishOp(_tokentype.types.incDec, 2);
- }
- if (next === 61) return this.finishOp(_tokentype.types.assign, 2);
- return this.finishOp(_tokentype.types.plusMin, 1);
-};
-
-pp.readToken_lt_gt = function (code) {
- // '<>'
- var next = this.input.charCodeAt(this.pos + 1);
- var size = 1;
- if (next === code) {
- size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;
- if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(_tokentype.types.assign, size + 1);
- return this.finishOp(_tokentype.types.bitShift, size);
- }
- if (next == 33 && code == 60 && this.input.charCodeAt(this.pos + 2) == 45 && this.input.charCodeAt(this.pos + 3) == 45) {
- if (this.inModule) this.unexpected();
- // `` line comment
- this.skipLineComment(3)
- this.skipSpace()
- return this.nextToken()
- }
- return this.finishOp(tt.incDec, 2)
- }
- if (next === 61) return this.finishOp(tt.assign, 2)
- return this.finishOp(tt.plusMin, 1)
-}
-
-pp.readToken_lt_gt = function(code) { // '<>'
- let next = this.input.charCodeAt(this.pos + 1)
- let size = 1
- if (next === code) {
- size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2
- if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1)
- return this.finishOp(tt.bitShift, size)
- }
- if (next == 33 && code == 60 && this.input.charCodeAt(this.pos + 2) == 45 &&
- this.input.charCodeAt(this.pos + 3) == 45) {
- if (this.inModule) this.unexpected()
- // `
-
-[assemble]: http://assemble.io
-[template]: https://github.com/jonschlinkert/template
-[verb]: https://github.com/assemble/verb
\ No newline at end of file
diff --git a/Museum/node_modules/array-each/index.js b/Museum/node_modules/array-each/index.js
deleted file mode 100644
index 5412c2e..0000000
--- a/Museum/node_modules/array-each/index.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*!
- * array-each
- *
- * Copyright (c) 2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-/**
- * Loop over each item in an array and call the given function on every element.
- *
- * ```js
- * each(['a', 'b', 'c'], function (ele) {
- * return ele + ele;
- * });
- * //=> ['aa', 'bb', 'cc']
- *
- * each(['a', 'b', 'c'], function (ele, i) {
- * return i + ele;
- * });
- * //=> ['0a', '1b', '2c']
- * ```
- *
- * @name .each
- * @alias .forEach
- * @param {Array} `array`
- * @param {Function} `fn`
- * @param {Object} `thisArg` Optionally pass a `thisArg` to be used as the context in which to call the function.
- * @return {Array}
- * @api public
- */
-
-module.exports = function each(arr, cb, thisArg) {
- if (arr == null) return;
-
- var len = arr.length, i = -1;
-
- while (len--) {
- var ele = arr[++i];
- if (cb.call(thisArg, ele, i, arr) === false) {
- break;
- }
- }
-};
diff --git a/Museum/node_modules/array-each/package.json b/Museum/node_modules/array-each/package.json
deleted file mode 100644
index b300906..0000000
--- a/Museum/node_modules/array-each/package.json
+++ /dev/null
@@ -1,86 +0,0 @@
-{
- "_args": [
- [
- "array-each@^0.1.1",
- "/Users/s70c3/WebstormProjects/MuseumGit/Museum/node_modules/utils"
- ]
- ],
- "_from": "array-each@>=0.1.1 <0.2.0",
- "_id": "array-each@0.1.1",
- "_inCache": true,
- "_installable": true,
- "_location": "/array-each",
- "_nodeVersion": "0.12.0",
- "_npmUser": {
- "email": "github@sellside.com",
- "name": "jonschlinkert"
- },
- "_npmVersion": "2.5.1",
- "_phantomChildren": {},
- "_requested": {
- "name": "array-each",
- "raw": "array-each@^0.1.1",
- "rawSpec": "^0.1.1",
- "scope": null,
- "spec": ">=0.1.1 <0.2.0",
- "type": "range"
- },
- "_requiredBy": [
- "/object.defaults",
- "/utils"
- ],
- "_resolved": "https://registry.npmjs.org/array-each/-/array-each-0.1.1.tgz",
- "_shasum": "c5d52ba8225f36d728178ba7aec413acfaddd0f9",
- "_shrinkwrap": null,
- "_spec": "array-each@^0.1.1",
- "_where": "/Users/s70c3/WebstormProjects/MuseumGit/Museum/node_modules/utils",
- "author": {
- "name": "Jon Schlinkert",
- "url": "https://github.com/jonschlinkert"
- },
- "bugs": {
- "url": "https://github.com/jonschlinkert/array-each/issues"
- },
- "dependencies": {},
- "description": "Loop over each item in an array and call the given function on every element.",
- "devDependencies": {
- "mocha": "*",
- "should": "*"
- },
- "directories": {},
- "dist": {
- "shasum": "c5d52ba8225f36d728178ba7aec413acfaddd0f9",
- "tarball": "https://registry.npmjs.org/array-each/-/array-each-0.1.1.tgz"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "files": [
- "index.js"
- ],
- "gitHead": "3a1a5c20d28b2cf952d5f286934fb31010fed4c8",
- "homepage": "https://github.com/jonschlinkert/array-each",
- "keywords": [],
- "license": {
- "type": "MIT",
- "url": "https://github.com/jonschlinkert/array-each/blob/master/LICENSE"
- },
- "main": "index.js",
- "maintainers": [
- {
- "email": "github@sellside.com",
- "name": "jonschlinkert"
- }
- ],
- "name": "array-each",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "repository": {
- "type": "git",
- "url": "git://github.com/jonschlinkert/array-each.git"
- },
- "scripts": {
- "test": "mocha"
- },
- "version": "0.1.1"
-}
diff --git a/Museum/node_modules/array-flatten/LICENSE b/Museum/node_modules/array-flatten/LICENSE
deleted file mode 100644
index 983fbe8..0000000
--- a/Museum/node_modules/array-flatten/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/Museum/node_modules/array-flatten/README.md b/Museum/node_modules/array-flatten/README.md
deleted file mode 100644
index 91fa5b6..0000000
--- a/Museum/node_modules/array-flatten/README.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# Array Flatten
-
-[![NPM version][npm-image]][npm-url]
-[![NPM downloads][downloads-image]][downloads-url]
-[![Build status][travis-image]][travis-url]
-[![Test coverage][coveralls-image]][coveralls-url]
-
-> Flatten an array of nested arrays into a single flat array. Accepts an optional depth.
-
-## Installation
-
-```
-npm install array-flatten --save
-```
-
-## Usage
-
-```javascript
-var flatten = require('array-flatten')
-
-flatten([1, [2, [3, [4, [5], 6], 7], 8], 9])
-//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
-
-flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
-//=> [1, 2, 3, [4, [5], 6], 7, 8, 9]
-
-(function () {
- flatten(arguments) //=> [1, 2, 3]
-})(1, [2, 3])
-```
-
-## License
-
-MIT
-
-[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat
-[npm-url]: https://npmjs.org/package/array-flatten
-[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat
-[downloads-url]: https://npmjs.org/package/array-flatten
-[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat
-[travis-url]: https://travis-ci.org/blakeembrey/array-flatten
-[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat
-[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master
diff --git a/Museum/node_modules/array-flatten/array-flatten.js b/Museum/node_modules/array-flatten/array-flatten.js
deleted file mode 100644
index 089117b..0000000
--- a/Museum/node_modules/array-flatten/array-flatten.js
+++ /dev/null
@@ -1,64 +0,0 @@
-'use strict'
-
-/**
- * Expose `arrayFlatten`.
- */
-module.exports = arrayFlatten
-
-/**
- * Recursive flatten function with depth.
- *
- * @param {Array} array
- * @param {Array} result
- * @param {Number} depth
- * @return {Array}
- */
-function flattenWithDepth (array, result, depth) {
- for (var i = 0; i < array.length; i++) {
- var value = array[i]
-
- if (depth > 0 && Array.isArray(value)) {
- flattenWithDepth(value, result, depth - 1)
- } else {
- result.push(value)
- }
- }
-
- return result
-}
-
-/**
- * Recursive flatten function. Omitting depth is slightly faster.
- *
- * @param {Array} array
- * @param {Array} result
- * @return {Array}
- */
-function flattenForever (array, result) {
- for (var i = 0; i < array.length; i++) {
- var value = array[i]
-
- if (Array.isArray(value)) {
- flattenForever(value, result)
- } else {
- result.push(value)
- }
- }
-
- return result
-}
-
-/**
- * Flatten an array, with the ability to define a depth.
- *
- * @param {Array} array
- * @param {Number} depth
- * @return {Array}
- */
-function arrayFlatten (array, depth) {
- if (depth == null) {
- return flattenForever(array, [])
- }
-
- return flattenWithDepth(array, [], depth)
-}
diff --git a/Museum/node_modules/array-flatten/package.json b/Museum/node_modules/array-flatten/package.json
deleted file mode 100644
index 5e7562f..0000000
--- a/Museum/node_modules/array-flatten/package.json
+++ /dev/null
@@ -1,88 +0,0 @@
-{
- "_args": [
- [
- "array-flatten@1.1.1",
- "/Users/s70c3/WebstormProjects/Museum/node_modules/express"
- ]
- ],
- "_from": "array-flatten@1.1.1",
- "_id": "array-flatten@1.1.1",
- "_inCache": true,
- "_installable": true,
- "_location": "/array-flatten",
- "_nodeVersion": "2.3.3",
- "_npmUser": {
- "email": "hello@blakeembrey.com",
- "name": "blakeembrey"
- },
- "_npmVersion": "2.11.3",
- "_phantomChildren": {},
- "_requested": {
- "name": "array-flatten",
- "raw": "array-flatten@1.1.1",
- "rawSpec": "1.1.1",
- "scope": null,
- "spec": "1.1.1",
- "type": "version"
- },
- "_requiredBy": [
- "/express"
- ],
- "_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "_shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2",
- "_shrinkwrap": null,
- "_spec": "array-flatten@1.1.1",
- "_where": "/Users/s70c3/WebstormProjects/Museum/node_modules/express",
- "author": {
- "email": "hello@blakeembrey.com",
- "name": "Blake Embrey",
- "url": "http://blakeembrey.me"
- },
- "bugs": {
- "url": "https://github.com/blakeembrey/array-flatten/issues"
- },
- "dependencies": {},
- "description": "Flatten an array of nested arrays into a single flat array",
- "devDependencies": {
- "istanbul": "^0.3.13",
- "mocha": "^2.2.4",
- "pre-commit": "^1.0.7",
- "standard": "^3.7.3"
- },
- "directories": {},
- "dist": {
- "shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2",
- "tarball": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
- },
- "files": [
- "array-flatten.js",
- "LICENSE"
- ],
- "gitHead": "1963a9189229d408e1e8f585a00c8be9edbd1803",
- "homepage": "https://github.com/blakeembrey/array-flatten",
- "keywords": [
- "array",
- "flatten",
- "arguments",
- "depth"
- ],
- "license": "MIT",
- "main": "array-flatten.js",
- "maintainers": [
- {
- "email": "hello@blakeembrey.com",
- "name": "blakeembrey"
- }
- ],
- "name": "array-flatten",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "repository": {
- "type": "git",
- "url": "git://github.com/blakeembrey/array-flatten.git"
- },
- "scripts": {
- "test": "istanbul cover _mocha -- -R spec"
- },
- "version": "1.1.1"
-}
diff --git a/Museum/node_modules/array-slice/LICENSE b/Museum/node_modules/array-slice/LICENSE
deleted file mode 100755
index c2d4bd0..0000000
--- a/Museum/node_modules/array-slice/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2015, Jon Schlinkert.Copyright (c) 2012-2015, The Dojo Foundation.copyright (c) 2009-2015, Jeremy Ashkenas.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/Museum/node_modules/array-slice/README.md b/Museum/node_modules/array-slice/README.md
deleted file mode 100755
index a26c98e..0000000
--- a/Museum/node_modules/array-slice/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# array-slice [](http://badge.fury.io/js/array-slice) [](https://travis-ci.org/jonschlinkert/array-slice)
-
-> Array-slice method. Slices `array` from the `start` index up to, but not including, the `end` index.
-
-This function is used instead of `Array#slice` to support node lists in IE < 9 and to ensure dense arrays are returned.
-
-## Install with [npm](npmjs.org)
-
-```bash
-npm i array-slice --save
-```
-
-## Usage
-
-```js
-var slice = require('array-slice');
-var arr = ['a', 'b', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
-
-slice(arr, 3, 6);
-//=> ['e', 'f', 'g']
-```
-
-## Useful array utils
- * [arr-diff](https://github.com/jonschlinkert/arr-diff): Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.
- * [arr-filter](https://github.com/jonschlinkert/arr-filter): Faster alternative to javascript's native filter method.
- * [arr-flatten](https://github.com/jonschlinkert/arr-flatten): Recursively flatten an array or arrays. This is the fastest implementation of array flatten.
- * [arr-union](https://github.com/jonschlinkert/arr-union): Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons.
- * [array-unique](https://github.com/jonschlinkert/array-unique): Return an array free of duplicate values. Fastest ES5 implementation.
- * [array-intersection](https://github.com/jonschlinkert/array-intersection): Return an array with the unique values present in _all_ given arrays using strict equality for comparisons.
-
-## Running tests
-Install dev dependencies:
-
-```bash
-npm i -d && npm test
-```
-
-## Contributing
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/array-slice/issues)
-
-## Author
-
-**Jon Schlinkert**
-
-+ [github/jonschlinkert](https://github.com/jonschlinkert)
-+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-## License
-Copyright (c) 2015 Jon Schlinkert
-Released under the MIT license
-
-***
-
-_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on April 07, 2015._
diff --git a/Museum/node_modules/array-slice/index.js b/Museum/node_modules/array-slice/index.js
deleted file mode 100755
index 785fd02..0000000
--- a/Museum/node_modules/array-slice/index.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*!
- * array-slice
- *
- * Copyright (c) 2014-2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-module.exports = function slice(arr, start, end) {
- var len = arr.length >>> 0;
- var range = [];
-
- start = idx(arr, start);
- end = idx(arr, end, len);
-
- while (start < end) {
- range.push(arr[start++]);
- }
- return range;
-};
-
-
-function idx(arr, pos, end) {
- var len = arr.length >>> 0;
-
- if (pos == null) {
- pos = end || 0;
- } else if (pos < 0) {
- pos = Math.max(len + pos, 0);
- } else {
- pos = Math.min(pos, len);
- }
-
- return pos;
-}
\ No newline at end of file
diff --git a/Museum/node_modules/array-slice/package.json b/Museum/node_modules/array-slice/package.json
deleted file mode 100644
index 5b471d5..0000000
--- a/Museum/node_modules/array-slice/package.json
+++ /dev/null
@@ -1,94 +0,0 @@
-{
- "_args": [
- [
- "array-slice@^0.2.3",
- "/Users/s70c3/WebstormProjects/MuseumGit/Museum/node_modules/utils"
- ]
- ],
- "_from": "array-slice@>=0.2.3 <0.3.0",
- "_id": "array-slice@0.2.3",
- "_inCache": true,
- "_installable": true,
- "_location": "/array-slice",
- "_nodeVersion": "0.12.0",
- "_npmUser": {
- "email": "github@sellside.com",
- "name": "jonschlinkert"
- },
- "_npmVersion": "2.5.1",
- "_phantomChildren": {},
- "_requested": {
- "name": "array-slice",
- "raw": "array-slice@^0.2.3",
- "rawSpec": "^0.2.3",
- "scope": null,
- "spec": ">=0.2.3 <0.3.0",
- "type": "range"
- },
- "_requiredBy": [
- "/arr-diff",
- "/object.defaults",
- "/utils"
- ],
- "_resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
- "_shasum": "dd3cfb80ed7973a75117cdac69b0b99ec86186f5",
- "_shrinkwrap": null,
- "_spec": "array-slice@^0.2.3",
- "_where": "/Users/s70c3/WebstormProjects/MuseumGit/Museum/node_modules/utils",
- "author": {
- "name": "Jon Schlinkert",
- "url": "https://github.com/jonschlinkert"
- },
- "bugs": {
- "url": "https://github.com/jonschlinkert/array-slice/issues"
- },
- "dependencies": {},
- "description": "Array-slice method. Slices `array` from the `start` index up to, but not including, the `end` index.",
- "devDependencies": {
- "mocha": "*",
- "should": "^5.2.0"
- },
- "directories": {},
- "dist": {
- "shasum": "dd3cfb80ed7973a75117cdac69b0b99ec86186f5",
- "tarball": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "files": [
- "index.js"
- ],
- "gitHead": "15bcb1d3d2d5689a1f519207cecb3ab3a63b8654",
- "homepage": "https://github.com/jonschlinkert/array-slice",
- "keywords": [
- "array",
- "javascript",
- "js",
- "slice",
- "util",
- "utils"
- ],
- "license": {
- "type": "MIT",
- "url": "https://github.com/jonschlinkert/array-slice/blob/master/LICENSE"
- },
- "main": "index.js",
- "maintainers": [
- {
- "email": "github@sellside.com",
- "name": "jonschlinkert"
- }
- ],
- "name": "array-slice",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "repository": {
- "type": "git",
- "url": "git://github.com/jonschlinkert/array-slice.git"
- },
- "scripts": {
- "test": "mocha"
- },
- "version": "0.2.3"
-}
diff --git a/Museum/node_modules/array-unique/LICENSE b/Museum/node_modules/array-unique/LICENSE
deleted file mode 100755
index fa30c4c..0000000
--- a/Museum/node_modules/array-unique/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2015, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/Museum/node_modules/array-unique/README.md b/Museum/node_modules/array-unique/README.md
deleted file mode 100755
index 2e28774..0000000
--- a/Museum/node_modules/array-unique/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# array-unique [](http://badge.fury.io/js/array-unique) [](https://travis-ci.org/jonschlinkert/array-unique)
-
-> Return an array free of duplicate values. Fastest ES5 implementation.
-
-## Install with [npm](npmjs.org)
-
-```bash
-npm i array-unique --save
-```
-
-## Usage
-
-```js
-var unique = require('array-unique');
-
-unique(['a', 'b', 'c', 'c']);
-//=> ['a', 'b', 'c']
-```
-
-## Related
-* [arr-diff](https://github.com/jonschlinkert/arr-diff): Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.
-* [arr-union](https://github.com/jonschlinkert/arr-union): Returns an array of unique values using strict equality for comparisons.
-* [arr-flatten](https://github.com/jonschlinkert/arr-flatten): Recursively flatten an array or arrays. This is the fastest implementation of array flatten.
-* [arr-reduce](https://github.com/jonschlinkert/arr-reduce): Fast array reduce that also loops over sparse elements.
-* [arr-map](https://github.com/jonschlinkert/arr-map): Faster, node.js focused alternative to JavaScript's native array map.
-* [arr-pluck](https://github.com/jonschlinkert/arr-pluck): Retrieves the value of a specified property from all elements in the collection.
-
-## Run tests
-Install dev dependencies.
-
-```bash
-npm i -d && npm test
-```
-
-## Contributing
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/array-unique/issues)
-
-## Author
-
-**Jon Schlinkert**
-
-+ [github/jonschlinkert](https://github.com/jonschlinkert)
-+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-## License
-Copyright (c) 2015 Jon Schlinkert
-Released under the MIT license
-
-***
-
-_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on March 24, 2015._
\ No newline at end of file
diff --git a/Museum/node_modules/array-unique/index.js b/Museum/node_modules/array-unique/index.js
deleted file mode 100755
index 7fa75af..0000000
--- a/Museum/node_modules/array-unique/index.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*!
- * array-unique
- *
- * Copyright (c) 2014-2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-module.exports = function unique(arr) {
- if (!Array.isArray(arr)) {
- throw new TypeError('array-unique expects an array.');
- }
-
- var len = arr.length;
- var i = -1;
-
- while (i++ < len) {
- var j = i + 1;
-
- for (; j < arr.length; ++j) {
- if (arr[i] === arr[j]) {
- arr.splice(j--, 1);
- }
- }
- }
- return arr;
-};
diff --git a/Museum/node_modules/array-unique/package.json b/Museum/node_modules/array-unique/package.json
deleted file mode 100644
index ac64233..0000000
--- a/Museum/node_modules/array-unique/package.json
+++ /dev/null
@@ -1,86 +0,0 @@
-{
- "_args": [
- [
- "array-unique@^0.2.1",
- "/Users/s70c3/WebstormProjects/MuseumGit/Museum/node_modules/utils"
- ]
- ],
- "_from": "array-unique@>=0.2.1 <0.3.0",
- "_id": "array-unique@0.2.1",
- "_inCache": true,
- "_installable": true,
- "_location": "/array-unique",
- "_nodeVersion": "1.6.2",
- "_npmUser": {
- "email": "github@sellside.com",
- "name": "jonschlinkert"
- },
- "_npmVersion": "2.7.1",
- "_phantomChildren": {},
- "_requested": {
- "name": "array-unique",
- "raw": "array-unique@^0.2.1",
- "rawSpec": "^0.2.1",
- "scope": null,
- "spec": ">=0.2.1 <0.3.0",
- "type": "range"
- },
- "_requiredBy": [
- "/utils"
- ],
- "_resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "_shasum": "a1d97ccafcbc2625cc70fadceb36a50c58b01a53",
- "_shrinkwrap": null,
- "_spec": "array-unique@^0.2.1",
- "_where": "/Users/s70c3/WebstormProjects/MuseumGit/Museum/node_modules/utils",
- "author": {
- "name": "Jon Schlinkert",
- "url": "https://github.com/jonschlinkert"
- },
- "bugs": {
- "url": "https://github.com/jonschlinkert/array-unique/issues"
- },
- "dependencies": {},
- "description": "Return an array free of duplicate values. Fastest ES5 implementation.",
- "devDependencies": {
- "array-uniq": "^1.0.2",
- "benchmarked": "^0.1.3",
- "mocha": "*",
- "should": "*"
- },
- "directories": {},
- "dist": {
- "shasum": "a1d97ccafcbc2625cc70fadceb36a50c58b01a53",
- "tarball": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "files": [
- "index.js"
- ],
- "gitHead": "36fde8e586fb7cf880b8b3aa6515df889e64ed85",
- "homepage": "https://github.com/jonschlinkert/array-unique",
- "license": {
- "type": "MIT",
- "url": "https://github.com/jonschlinkert/array-unique/blob/master/LICENSE"
- },
- "main": "index.js",
- "maintainers": [
- {
- "email": "github@sellside.com",
- "name": "jonschlinkert"
- }
- ],
- "name": "array-unique",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "repository": {
- "type": "git",
- "url": "git://github.com/jonschlinkert/array-unique.git"
- },
- "scripts": {
- "test": "mocha"
- },
- "version": "0.2.1"
-}
diff --git a/Museum/node_modules/asap/LICENSE.md b/Museum/node_modules/asap/LICENSE.md
deleted file mode 100644
index 5d98ad8..0000000
--- a/Museum/node_modules/asap/LICENSE.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Copyright 2009–2013 Contributors. All rights reserved.
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-
diff --git a/Museum/node_modules/asap/README.md b/Museum/node_modules/asap/README.md
deleted file mode 100644
index 9a42759..0000000
--- a/Museum/node_modules/asap/README.md
+++ /dev/null
@@ -1,81 +0,0 @@
-
-# ASAP
-
-This `asap` CommonJS package contains a single `asap` module that
-exports a single `asap` function that executes a function **as soon as
-possible**.
-
-```javascript
-asap(function () {
- // ...
-});
-```
-
-More formally, ASAP provides a fast event queue that will execute tasks
-until it is empty before yielding to the JavaScript engine's underlying
-event-loop. When the event queue becomes non-empty, ASAP schedules a
-flush event, preferring for that event to occur before the JavaScript
-engine has an opportunity to perform IO tasks or rendering, thus making
-the first task and subsequent tasks semantically indistinguishable.
-ASAP uses a variety of techniques to preserve this invariant on
-different versions of browsers and NodeJS.
-
-By design, ASAP can starve the event loop on the theory that, if there
-is enough work to be done synchronously, albeit in separate events, long
-enough to starve input or output, it is a strong indicator that the
-program needs to push back on scheduling more work.
-
-Take care. ASAP can sustain infinite recursive calls indefinitely
-without warning. This is behaviorally equivalent to an infinite loop.
-It will not halt from a stack overflow, but it *will* chew through
-memory (which is an oddity I cannot explain at this time). Just as with
-infinite loops, you can monitor a Node process for this behavior with a
-heart-beat signal. As with infinite loops, a very small amount of
-caution goes a long way to avoiding problems.
-
-```javascript
-function loop() {
- asap(loop);
-}
-loop();
-```
-
-ASAP is distinct from `setImmediate` in that it does not suffer the
-overhead of returning a handle and being possible to cancel. For a
-`setImmediate` shim, consider [setImmediate][].
-
-[setImmediate]: https://github.com/noblejs/setimmediate
-
-If a task throws an exception, it will not interrupt the flushing of
-high-priority tasks. The exception will be postponed to a later,
-low-priority event to avoid slow-downs, when the underlying JavaScript
-engine will treat it as it does any unhandled exception.
-
-## Heritage
-
-ASAP has been factored out of the [Q][] asynchronous promise library.
-It originally had a naïve implementation in terms of `setTimeout`, but
-[Malte Ubl][NonBlocking] provided an insight that `postMessage` might be
-useful for creating a high-priority, no-delay event dispatch hack.
-Since then, Internet Explorer proposed and implemented `setImmediate`.
-Robert Kratić began contributing to Q by measuring the performance of
-the internal implementation of `asap`, paying particular attention to
-error recovery. Domenic, Robert, and I collectively settled on the
-current strategy of unrolling the high-priority event queue internally
-regardless of what strategy we used to dispatch the potentially
-lower-priority flush event. Domenic went on to make ASAP cooperate with
-NodeJS domains.
-
-[Q]: https://github.com/kriskowal/q
-[NonBlocking]: http://www.nonblocking.io/2011/06/windownexttick.html
-
-For further reading, Nicholas Zakas provided a thorough article on [The
-Case for setImmediate][NCZ].
-
-[NCZ]: http://www.nczonline.net/blog/2013/07/09/the-case-for-setimmediate/
-
-## License
-
-Copyright 2009-2013 by Contributors
-MIT License (enclosed)
-
diff --git a/Museum/node_modules/asap/asap.js b/Museum/node_modules/asap/asap.js
deleted file mode 100644
index 2f85516..0000000
--- a/Museum/node_modules/asap/asap.js
+++ /dev/null
@@ -1,113 +0,0 @@
-
-// Use the fastest possible means to execute a task in a future turn
-// of the event loop.
-
-// linked list of tasks (single, with head node)
-var head = {task: void 0, next: null};
-var tail = head;
-var flushing = false;
-var requestFlush = void 0;
-var isNodeJS = false;
-
-function flush() {
- /* jshint loopfunc: true */
-
- while (head.next) {
- head = head.next;
- var task = head.task;
- head.task = void 0;
- var domain = head.domain;
-
- if (domain) {
- head.domain = void 0;
- domain.enter();
- }
-
- try {
- task();
-
- } catch (e) {
- if (isNodeJS) {
- // In node, uncaught exceptions are considered fatal errors.
- // Re-throw them synchronously to interrupt flushing!
-
- // Ensure continuation if the uncaught exception is suppressed
- // listening "uncaughtException" events (as domains does).
- // Continue in next event to avoid tick recursion.
- if (domain) {
- domain.exit();
- }
- setTimeout(flush, 0);
- if (domain) {
- domain.enter();
- }
-
- throw e;
-
- } else {
- // In browsers, uncaught exceptions are not fatal.
- // Re-throw them asynchronously to avoid slow-downs.
- setTimeout(function() {
- throw e;
- }, 0);
- }
- }
-
- if (domain) {
- domain.exit();
- }
- }
-
- flushing = false;
-}
-
-if (typeof process !== "undefined" && process.nextTick) {
- // Node.js before 0.9. Note that some fake-Node environments, like the
- // Mocha test runner, introduce a `process` global without a `nextTick`.
- isNodeJS = true;
-
- requestFlush = function () {
- process.nextTick(flush);
- };
-
-} else if (typeof setImmediate === "function") {
- // In IE10, Node.js 0.9+, or https://github.com/NobleJS/setImmediate
- if (typeof window !== "undefined") {
- requestFlush = setImmediate.bind(window, flush);
- } else {
- requestFlush = function () {
- setImmediate(flush);
- };
- }
-
-} else if (typeof MessageChannel !== "undefined") {
- // modern browsers
- // http://www.nonblocking.io/2011/06/windownexttick.html
- var channel = new MessageChannel();
- channel.port1.onmessage = flush;
- requestFlush = function () {
- channel.port2.postMessage(0);
- };
-
-} else {
- // old browsers
- requestFlush = function () {
- setTimeout(flush, 0);
- };
-}
-
-function asap(task) {
- tail = tail.next = {
- task: task,
- domain: isNodeJS && process.domain,
- next: null
- };
-
- if (!flushing) {
- flushing = true;
- requestFlush();
- }
-};
-
-module.exports = asap;
-
diff --git a/Museum/node_modules/asap/package.json b/Museum/node_modules/asap/package.json
deleted file mode 100644
index 8c80d48..0000000
--- a/Museum/node_modules/asap/package.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "_args": [
- [
- "asap@~1.0.0",
- "/Users/s70c3/WebstormProjects/Museum/node_modules/promise"
- ]
- ],
- "_from": "asap@>=1.0.0 <1.1.0",
- "_id": "asap@1.0.0",
- "_inCache": true,
- "_installable": true,
- "_location": "/asap",
- "_npmUser": {
- "email": "kris.kowal@cixar.com",
- "name": "kriskowal"
- },
- "_npmVersion": "1.2.15",
- "_phantomChildren": {},
- "_requested": {
- "name": "asap",
- "raw": "asap@~1.0.0",
- "rawSpec": "~1.0.0",
- "scope": null,
- "spec": ">=1.0.0 <1.1.0",
- "type": "range"
- },
- "_requiredBy": [
- "/promise"
- ],
- "_resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz",
- "_shasum": "b2a45da5fdfa20b0496fc3768cc27c12fa916a7d",
- "_shrinkwrap": null,
- "_spec": "asap@~1.0.0",
- "_where": "/Users/s70c3/WebstormProjects/Museum/node_modules/promise",
- "dependencies": {},
- "description": "High-priority task queue for Node.js and browsers",
- "devDependencies": {},
- "directories": {},
- "dist": {
- "shasum": "b2a45da5fdfa20b0496fc3768cc27c12fa916a7d",
- "tarball": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz"
- },
- "keywords": [
- "event",
- "task",
- "queue"
- ],
- "licenses": [
- {
- "type": "MIT",
- "url": "https://github.com/kriskowal/asap/raw/master/LICENSE.md"
- }
- ],
- "main": "asap",
- "maintainers": [
- {
- "email": "kris.kowal@cixar.com",
- "name": "kriskowal"
- }
- ],
- "name": "asap",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "version": "1.0.0"
-}
diff --git a/Museum/node_modules/async/LICENSE b/Museum/node_modules/async/LICENSE
deleted file mode 100644
index b7f9d50..0000000
--- a/Museum/node_modules/async/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Caolan McMahon
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/Museum/node_modules/async/README.md b/Museum/node_modules/async/README.md
deleted file mode 100644
index 951f76e..0000000
--- a/Museum/node_modules/async/README.md
+++ /dev/null
@@ -1,1425 +0,0 @@
-# Async.js
-
-Async is a utility module which provides straight-forward, powerful functions
-for working with asynchronous JavaScript. Although originally designed for
-use with [node.js](http://nodejs.org), it can also be used directly in the
-browser. Also supports [component](https://github.com/component/component).
-
-Async provides around 20 functions that include the usual 'functional'
-suspects (map, reduce, filter, each…) as well as some common patterns
-for asynchronous control flow (parallel, series, waterfall…). All these
-functions assume you follow the node.js convention of providing a single
-callback as the last argument of your async function.
-
-
-## Quick Examples
-
-```javascript
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
- // results is now an array of stats for each file
-});
-
-async.filter(['file1','file2','file3'], fs.exists, function(results){
- // results now equals an array of the existing files
-});
-
-async.parallel([
- function(){ ... },
- function(){ ... }
-], callback);
-
-async.series([
- function(){ ... },
- function(){ ... }
-]);
-```
-
-There are many more functions available so take a look at the docs below for a
-full list. This module aims to be comprehensive, so if you feel anything is
-missing please create a GitHub issue for it.
-
-## Common Pitfalls
-
-### Binding a context to an iterator
-
-This section is really about bind, not about async. If you are wondering how to
-make async execute your iterators in a given context, or are confused as to why
-a method of another library isn't working as an iterator, study this example:
-
-```js
-// Here is a simple object with an (unnecessarily roundabout) squaring method
-var AsyncSquaringLibrary = {
- squareExponent: 2,
- square: function(number, callback){
- var result = Math.pow(number, this.squareExponent);
- setTimeout(function(){
- callback(null, result);
- }, 200);
- }
-};
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){
- // result is [NaN, NaN, NaN]
- // This fails because the `this.squareExponent` expression in the square
- // function is not evaluated in the context of AsyncSquaringLibrary, and is
- // therefore undefined.
-});
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){
- // result is [1, 4, 9]
- // With the help of bind we can attach a context to the iterator before
- // passing it to async. Now the square function will be executed in its
- // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`
- // will be as expected.
-});
-```
-
-## Download
-
-The source is available for download from
-[GitHub](http://github.com/caolan/async).
-Alternatively, you can install using Node Package Manager (npm):
-
- npm install async
-
-__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed
-
-## In the Browser
-
-So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:
-
-```html
-
-
-```
-
-## Documentation
-
-### Collections
-
-* [each](#each)
-* [eachSeries](#eachSeries)
-* [eachLimit](#eachLimit)
-* [map](#map)
-* [mapSeries](#mapSeries)
-* [mapLimit](#mapLimit)
-* [filter](#filter)
-* [filterSeries](#filterSeries)
-* [reject](#reject)
-* [rejectSeries](#rejectSeries)
-* [reduce](#reduce)
-* [reduceRight](#reduceRight)
-* [detect](#detect)
-* [detectSeries](#detectSeries)
-* [sortBy](#sortBy)
-* [some](#some)
-* [every](#every)
-* [concat](#concat)
-* [concatSeries](#concatSeries)
-
-### Control Flow
-
-* [series](#series)
-* [parallel](#parallel)
-* [parallelLimit](#parallellimittasks-limit-callback)
-* [whilst](#whilst)
-* [doWhilst](#doWhilst)
-* [until](#until)
-* [doUntil](#doUntil)
-* [forever](#forever)
-* [waterfall](#waterfall)
-* [compose](#compose)
-* [applyEach](#applyEach)
-* [applyEachSeries](#applyEachSeries)
-* [queue](#queue)
-* [cargo](#cargo)
-* [auto](#auto)
-* [iterator](#iterator)
-* [apply](#apply)
-* [nextTick](#nextTick)
-* [times](#times)
-* [timesSeries](#timesSeries)
-
-### Utils
-
-* [memoize](#memoize)
-* [unmemoize](#unmemoize)
-* [log](#log)
-* [dir](#dir)
-* [noConflict](#noConflict)
-
-
-## Collections
-
-
-
-### each(arr, iterator, callback)
-
-Applies an iterator function to each item in an array, in parallel.
-The iterator is called with an item from the list and a callback for when it
-has finished. If the iterator passes an error to this callback, the main
-callback for the each function is immediately called with the error.
-
-Note, that since this function applies the iterator to each item in parallel
-there is no guarantee that the iterator functions will complete in order.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
- The iterator is passed a callback(err) which must be called once it has
- completed. If no error has occured, the callback should be run without
- arguments or with an explicit null argument.
-* callback(err) - A callback which is called after all the iterator functions
- have finished, or an error has occurred.
-
-__Example__
-
-```js
-// assuming openFiles is an array of file names and saveFile is a function
-// to save the modified contents of that file:
-
-async.each(openFiles, saveFile, function(err){
- // if any of the saves produced an error, err would equal that error
-});
-```
-
----------------------------------------
-
-
-
-### eachSeries(arr, iterator, callback)
-
-The same as each only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. This means the iterator functions will complete in order.
-
-
----------------------------------------
-
-
-
-### eachLimit(arr, limit, iterator, callback)
-
-The same as each only no more than "limit" iterators will be simultaneously
-running at any time.
-
-Note that the items are not processed in batches, so there is no guarantee that
- the first "limit" iterator functions will complete before any others are
-started.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* limit - The maximum number of iterators to run at any time.
-* iterator(item, callback) - A function to apply to each item in the array.
- The iterator is passed a callback(err) which must be called once it has
- completed. If no error has occured, the callback should be run without
- arguments or with an explicit null argument.
-* callback(err) - A callback which is called after all the iterator functions
- have finished, or an error has occurred.
-
-__Example__
-
-```js
-// Assume documents is an array of JSON objects and requestApi is a
-// function that interacts with a rate-limited REST api.
-
-async.eachLimit(documents, 20, requestApi, function(err){
- // if any of the saves produced an error, err would equal that error
-});
-```
-
----------------------------------------
-
-
-### map(arr, iterator, callback)
-
-Produces a new array of values by mapping each value in the given array through
-the iterator function. The iterator is called with an item from the array and a
-callback for when it has finished processing. The callback takes 2 arguments,
-an error and the transformed item from the array. If the iterator passes an
-error to this callback, the main callback for the map function is immediately
-called with the error.
-
-Note, that since this function applies the iterator to each item in parallel
-there is no guarantee that the iterator functions will complete in order, however
-the results array will be in the same order as the original array.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
- The iterator is passed a callback(err, transformed) which must be called once
- it has completed with an error (which can be null) and a transformed item.
-* callback(err, results) - A callback which is called after all the iterator
- functions have finished, or an error has occurred. Results is an array of the
- transformed items from the original array.
-
-__Example__
-
-```js
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
- // results is now an array of stats for each file
-});
-```
-
----------------------------------------
-
-
-### mapSeries(arr, iterator, callback)
-
-The same as map only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. The results array will be in the same order as the original.
-
-
----------------------------------------
-
-
-### mapLimit(arr, limit, iterator, callback)
-
-The same as map only no more than "limit" iterators will be simultaneously
-running at any time.
-
-Note that the items are not processed in batches, so there is no guarantee that
- the first "limit" iterator functions will complete before any others are
-started.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* limit - The maximum number of iterators to run at any time.
-* iterator(item, callback) - A function to apply to each item in the array.
- The iterator is passed a callback(err, transformed) which must be called once
- it has completed with an error (which can be null) and a transformed item.
-* callback(err, results) - A callback which is called after all the iterator
- functions have finished, or an error has occurred. Results is an array of the
- transformed items from the original array.
-
-__Example__
-
-```js
-async.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){
- // results is now an array of stats for each file
-});
-```
-
----------------------------------------
-
-
-### filter(arr, iterator, callback)
-
-__Alias:__ select
-
-Returns a new array of all the values which pass an async truth test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like fs.exists. This operation is
-performed in parallel, but the results array will be in the same order as the
-original.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
- The iterator is passed a callback(truthValue) which must be called with a
- boolean argument once it has completed.
-* callback(results) - A callback which is called after all the iterator
- functions have finished.
-
-__Example__
-
-```js
-async.filter(['file1','file2','file3'], fs.exists, function(results){
- // results now equals an array of the existing files
-});
-```
-
----------------------------------------
-
-
-### filterSeries(arr, iterator, callback)
-
-__alias:__ selectSeries
-
-The same as filter only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. The results array will be in the same order as the original.
-
----------------------------------------
-
-
-### reject(arr, iterator, callback)
-
-The opposite of filter. Removes values that pass an async truth test.
-
----------------------------------------
-
-
-### rejectSeries(arr, iterator, callback)
-
-The same as reject, only the iterator is applied to each item in the array
-in series.
-
-
----------------------------------------
-
-
-### reduce(arr, memo, iterator, callback)
-
-__aliases:__ inject, foldl
-
-Reduces a list of values into a single value using an async iterator to return
-each successive step. Memo is the initial state of the reduction. This
-function only operates in series. For performance reasons, it may make sense to
-split a call to this function into a parallel map, then use the normal
-Array.prototype.reduce on the results. This function is for situations where
-each step in the reduction needs to be async, if you can get the data before
-reducing it then it's probably a good idea to do so.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* memo - The initial state of the reduction.
-* iterator(memo, item, callback) - A function applied to each item in the
- array to produce the next step in the reduction. The iterator is passed a
- callback(err, reduction) which accepts an optional error as its first
- argument, and the state of the reduction as the second. If an error is
- passed to the callback, the reduction is stopped and the main callback is
- immediately called with the error.
-* callback(err, result) - A callback which is called after all the iterator
- functions have finished. Result is the reduced value.
-
-__Example__
-
-```js
-async.reduce([1,2,3], 0, function(memo, item, callback){
- // pointless async:
- process.nextTick(function(){
- callback(null, memo + item)
- });
-}, function(err, result){
- // result is now equal to the last value of memo, which is 6
-});
-```
-
----------------------------------------
-
-
-### reduceRight(arr, memo, iterator, callback)
-
-__Alias:__ foldr
-
-Same as reduce, only operates on the items in the array in reverse order.
-
-
----------------------------------------
-
-
-### detect(arr, iterator, callback)
-
-Returns the first value in a list that passes an async truth test. The
-iterator is applied in parallel, meaning the first iterator to return true will
-fire the detect callback with that result. That means the result might not be
-the first item in the original array (in terms of order) that passes the test.
-
-If order within the original array is important then look at detectSeries.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
- The iterator is passed a callback(truthValue) which must be called with a
- boolean argument once it has completed.
-* callback(result) - A callback which is called as soon as any iterator returns
- true, or after all the iterator functions have finished. Result will be
- the first item in the array that passes the truth test (iterator) or the
- value undefined if none passed.
-
-__Example__
-
-```js
-async.detect(['file1','file2','file3'], fs.exists, function(result){
- // result now equals the first file in the list that exists
-});
-```
-
----------------------------------------
-
-
-### detectSeries(arr, iterator, callback)
-
-The same as detect, only the iterator is applied to each item in the array
-in series. This means the result is always the first in the original array (in
-terms of array order) that passes the truth test.
-
-
----------------------------------------
-
-
-### sortBy(arr, iterator, callback)
-
-Sorts a list by the results of running each value through an async iterator.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
- The iterator is passed a callback(err, sortValue) which must be called once it
- has completed with an error (which can be null) and a value to use as the sort
- criteria.
-* callback(err, results) - A callback which is called after all the iterator
- functions have finished, or an error has occurred. Results is the items from
- the original array sorted by the values returned by the iterator calls.
-
-__Example__
-
-```js
-async.sortBy(['file1','file2','file3'], function(file, callback){
- fs.stat(file, function(err, stats){
- callback(err, stats.mtime);
- });
-}, function(err, results){
- // results is now the original array of files sorted by
- // modified date
-});
-```
-
----------------------------------------
-
-
-### some(arr, iterator, callback)
-
-__Alias:__ any
-
-Returns true if at least one element in the array satisfies an async test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like fs.exists. Once any iterator
-call returns true, the main callback is immediately called.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
- The iterator is passed a callback(truthValue) which must be called with a
- boolean argument once it has completed.
-* callback(result) - A callback which is called as soon as any iterator returns
- true, or after all the iterator functions have finished. Result will be
- either true or false depending on the values of the async tests.
-
-__Example__
-
-```js
-async.some(['file1','file2','file3'], fs.exists, function(result){
- // if result is true then at least one of the files exists
-});
-```
-
----------------------------------------
-
-
-### every(arr, iterator, callback)
-
-__Alias:__ all
-
-Returns true if every element in the array satisfies an async test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like fs.exists.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
- The iterator is passed a callback(truthValue) which must be called with a
- boolean argument once it has completed.
-* callback(result) - A callback which is called after all the iterator
- functions have finished. Result will be either true or false depending on
- the values of the async tests.
-
-__Example__
-
-```js
-async.every(['file1','file2','file3'], fs.exists, function(result){
- // if result is true then every file exists
-});
-```
-
----------------------------------------
-
-
-### concat(arr, iterator, callback)
-
-Applies an iterator to each item in a list, concatenating the results. Returns the
-concatenated list. The iterators are called in parallel, and the results are
-concatenated as they return. There is no guarantee that the results array will
-be returned in the original order of the arguments passed to the iterator function.
-
-__Arguments__
-
-* arr - An array to iterate over
-* iterator(item, callback) - A function to apply to each item in the array.
- The iterator is passed a callback(err, results) which must be called once it
- has completed with an error (which can be null) and an array of results.
-* callback(err, results) - A callback which is called after all the iterator
- functions have finished, or an error has occurred. Results is an array containing
- the concatenated results of the iterator function.
-
-__Example__
-
-```js
-async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){
- // files is now a list of filenames that exist in the 3 directories
-});
-```
-
----------------------------------------
-
-
-### concatSeries(arr, iterator, callback)
-
-Same as async.concat, but executes in series instead of parallel.
-
-
-## Control Flow
-
-
-### series(tasks, [callback])
-
-Run an array of functions in series, each one running once the previous
-function has completed. If any functions in the series pass an error to its
-callback, no more functions are run and the callback for the series is
-immediately called with the value of the error. Once the tasks have completed,
-the results are passed to the final callback as an array.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function and the results will be passed to the final callback as an object
-instead of an array. This can be a more readable way of handling results from
-async.series.
-
-
-__Arguments__
-
-* tasks - An array or object containing functions to run, each function is passed
- a callback(err, result) it must call on completion with an error (which can
- be null) and an optional result value.
-* callback(err, results) - An optional callback to run once all the functions
- have completed. This function gets a results array (or object) containing all
- the result arguments passed to the task callbacks.
-
-__Example__
-
-```js
-async.series([
- function(callback){
- // do some stuff ...
- callback(null, 'one');
- },
- function(callback){
- // do some more stuff ...
- callback(null, 'two');
- }
-],
-// optional callback
-function(err, results){
- // results is now equal to ['one', 'two']
-});
-
-
-// an example using an object instead of an array
-async.series({
- one: function(callback){
- setTimeout(function(){
- callback(null, 1);
- }, 200);
- },
- two: function(callback){
- setTimeout(function(){
- callback(null, 2);
- }, 100);
- }
-},
-function(err, results) {
- // results is now equal to: {one: 1, two: 2}
-});
-```
-
----------------------------------------
-
-
-### parallel(tasks, [callback])
-
-Run an array of functions in parallel, without waiting until the previous
-function has completed. If any of the functions pass an error to its
-callback, the main callback is immediately called with the value of the error.
-Once the tasks have completed, the results are passed to the final callback as an
-array.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function and the results will be passed to the final callback as an object
-instead of an array. This can be a more readable way of handling results from
-async.parallel.
-
-
-__Arguments__
-
-* tasks - An array or object containing functions to run, each function is passed
- a callback(err, result) it must call on completion with an error (which can
- be null) and an optional result value.
-* callback(err, results) - An optional callback to run once all the functions
- have completed. This function gets a results array (or object) containing all
- the result arguments passed to the task callbacks.
-
-__Example__
-
-```js
-async.parallel([
- function(callback){
- setTimeout(function(){
- callback(null, 'one');
- }, 200);
- },
- function(callback){
- setTimeout(function(){
- callback(null, 'two');
- }, 100);
- }
-],
-// optional callback
-function(err, results){
- // the results array will equal ['one','two'] even though
- // the second function had a shorter timeout.
-});
-
-
-// an example using an object instead of an array
-async.parallel({
- one: function(callback){
- setTimeout(function(){
- callback(null, 1);
- }, 200);
- },
- two: function(callback){
- setTimeout(function(){
- callback(null, 2);
- }, 100);
- }
-},
-function(err, results) {
- // results is now equals to: {one: 1, two: 2}
-});
-```
-
----------------------------------------
-
-
-### parallelLimit(tasks, limit, [callback])
-
-The same as parallel only the tasks are executed in parallel with a maximum of "limit"
-tasks executing at any time.
-
-Note that the tasks are not executed in batches, so there is no guarantee that
-the first "limit" tasks will complete before any others are started.
-
-__Arguments__
-
-* tasks - An array or object containing functions to run, each function is passed
- a callback(err, result) it must call on completion with an error (which can
- be null) and an optional result value.
-* limit - The maximum number of tasks to run at any time.
-* callback(err, results) - An optional callback to run once all the functions
- have completed. This function gets a results array (or object) containing all
- the result arguments passed to the task callbacks.
-
----------------------------------------
-
-
-### whilst(test, fn, callback)
-
-Repeatedly call fn, while test returns true. Calls the callback when stopped,
-or an error occurs.
-
-__Arguments__
-
-* test() - synchronous truth test to perform before each execution of fn.
-* fn(callback) - A function to call each time the test passes. The function is
- passed a callback(err) which must be called once it has completed with an
- optional error argument.
-* callback(err) - A callback which is called after the test fails and repeated
- execution of fn has stopped.
-
-__Example__
-
-```js
-var count = 0;
-
-async.whilst(
- function () { return count < 5; },
- function (callback) {
- count++;
- setTimeout(callback, 1000);
- },
- function (err) {
- // 5 seconds have passed
- }
-);
-```
-
----------------------------------------
-
-
-### doWhilst(fn, test, callback)
-
-The post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.
-
----------------------------------------
-
-
-### until(test, fn, callback)
-
-Repeatedly call fn, until test returns true. Calls the callback when stopped,
-or an error occurs.
-
-The inverse of async.whilst.
-
----------------------------------------
-
-
-### doUntil(fn, test, callback)
-
-Like doWhilst except the test is inverted. Note the argument ordering differs from `until`.
-
----------------------------------------
-
-
-### forever(fn, callback)
-
-Calls the asynchronous function 'fn' repeatedly, in series, indefinitely.
-If an error is passed to fn's callback then 'callback' is called with the
-error, otherwise it will never be called.
-
----------------------------------------
-
-
-### waterfall(tasks, [callback])
-
-Runs an array of functions in series, each passing their results to the next in
-the array. However, if any of the functions pass an error to the callback, the
-next function is not executed and the main callback is immediately called with
-the error.
-
-__Arguments__
-
-* tasks - An array of functions to run, each function is passed a
- callback(err, result1, result2, ...) it must call on completion. The first
- argument is an error (which can be null) and any further arguments will be
- passed as arguments in order to the next task.
-* callback(err, [results]) - An optional callback to run once all the functions
- have completed. This will be passed the results of the last task's callback.
-
-
-
-__Example__
-
-```js
-async.waterfall([
- function(callback){
- callback(null, 'one', 'two');
- },
- function(arg1, arg2, callback){
- callback(null, 'three');
- },
- function(arg1, callback){
- // arg1 now equals 'three'
- callback(null, 'done');
- }
-], function (err, result) {
- // result now equals 'done'
-});
-```
-
----------------------------------------
-
-### compose(fn1, fn2...)
-
-Creates a function which is a composition of the passed asynchronous
-functions. Each function consumes the return value of the function that
-follows. Composing functions f(), g() and h() would produce the result of
-f(g(h())), only this version uses callbacks to obtain the return values.
-
-Each function is executed with the `this` binding of the composed function.
-
-__Arguments__
-
-* functions... - the asynchronous functions to compose
-
-
-__Example__
-
-```js
-function add1(n, callback) {
- setTimeout(function () {
- callback(null, n + 1);
- }, 10);
-}
-
-function mul3(n, callback) {
- setTimeout(function () {
- callback(null, n * 3);
- }, 10);
-}
-
-var add1mul3 = async.compose(mul3, add1);
-
-add1mul3(4, function (err, result) {
- // result now equals 15
-});
-```
-
----------------------------------------
-
-### applyEach(fns, args..., callback)
-
-Applies the provided arguments to each function in the array, calling the
-callback after all functions have completed. If you only provide the first
-argument then it will return a function which lets you pass in the
-arguments as if it were a single function call.
-
-__Arguments__
-
-* fns - the asynchronous functions to all call with the same arguments
-* args... - any number of separate arguments to pass to the function
-* callback - the final argument should be the callback, called when all
- functions have completed processing
-
-
-__Example__
-
-```js
-async.applyEach([enableSearch, updateSchema], 'bucket', callback);
-
-// partial application example:
-async.each(
- buckets,
- async.applyEach([enableSearch, updateSchema]),
- callback
-);
-```
-
----------------------------------------
-
-
-### applyEachSeries(arr, iterator, callback)
-
-The same as applyEach only the functions are applied in series.
-
----------------------------------------
-
-
-### queue(worker, concurrency)
-
-Creates a queue object with the specified concurrency. Tasks added to the
-queue will be processed in parallel (up to the concurrency limit). If all
-workers are in progress, the task is queued until one is available. Once
-a worker has completed a task, the task's callback is called.
-
-__Arguments__
-
-* worker(task, callback) - An asynchronous function for processing a queued
- task, which must call its callback(err) argument when finished, with an
- optional error as an argument.
-* concurrency - An integer for determining how many worker functions should be
- run in parallel.
-
-__Queue objects__
-
-The queue object returned by this function has the following properties and
-methods:
-
-* length() - a function returning the number of items waiting to be processed.
-* concurrency - an integer for determining how many worker functions should be
- run in parallel. This property can be changed after a queue is created to
- alter the concurrency on-the-fly.
-* push(task, [callback]) - add a new task to the queue, the callback is called
- once the worker has finished processing the task.
- instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.
-* unshift(task, [callback]) - add a new task to the front of the queue.
-* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued
-* empty - a callback that is called when the last item from the queue is given to a worker
-* drain - a callback that is called when the last item from the queue has returned from the worker
-
-__Example__
-
-```js
-// create a queue object with concurrency 2
-
-var q = async.queue(function (task, callback) {
- console.log('hello ' + task.name);
- callback();
-}, 2);
-
-
-// assign a callback
-q.drain = function() {
- console.log('all items have been processed');
-}
-
-// add some items to the queue
-
-q.push({name: 'foo'}, function (err) {
- console.log('finished processing foo');
-});
-q.push({name: 'bar'}, function (err) {
- console.log('finished processing bar');
-});
-
-// add some items to the queue (batch-wise)
-
-q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {
- console.log('finished processing bar');
-});
-
-// add some items to the front of the queue
-
-q.unshift({name: 'bar'}, function (err) {
- console.log('finished processing bar');
-});
-```
-
----------------------------------------
-
-
-### cargo(worker, [payload])
-
-Creates a cargo object with the specified payload. Tasks added to the
-cargo will be processed altogether (up to the payload limit). If the
-worker is in progress, the task is queued until it is available. Once
-the worker has completed some tasks, each callback of those tasks is called.
-
-__Arguments__
-
-* worker(tasks, callback) - An asynchronous function for processing an array of
- queued tasks, which must call its callback(err) argument when finished, with
- an optional error as an argument.
-* payload - An optional integer for determining how many tasks should be
- processed per round; if omitted, the default is unlimited.
-
-__Cargo objects__
-
-The cargo object returned by this function has the following properties and
-methods:
-
-* length() - a function returning the number of items waiting to be processed.
-* payload - an integer for determining how many tasks should be
- process per round. This property can be changed after a cargo is created to
- alter the payload on-the-fly.
-* push(task, [callback]) - add a new task to the queue, the callback is called
- once the worker has finished processing the task.
- instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.
-* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued
-* empty - a callback that is called when the last item from the queue is given to a worker
-* drain - a callback that is called when the last item from the queue has returned from the worker
-
-__Example__
-
-```js
-// create a cargo object with payload 2
-
-var cargo = async.cargo(function (tasks, callback) {
- for(var i=0; i
-### auto(tasks, [callback])
-
-Determines the best order for running functions based on their requirements.
-Each function can optionally depend on other functions being completed first,
-and each function is run as soon as its requirements are satisfied. If any of
-the functions pass an error to their callback, that function will not complete
-(so any other functions depending on it will not run) and the main callback
-will be called immediately with the error. Functions also receive an object
-containing the results of functions which have completed so far.
-
-Note, all functions are called with a results object as a second argument,
-so it is unsafe to pass functions in the tasks object which cannot handle the
-extra argument. For example, this snippet of code:
-
-```js
-async.auto({
- readData: async.apply(fs.readFile, 'data.txt', 'utf-8')
-}, callback);
-```
-
-will have the effect of calling readFile with the results object as the last
-argument, which will fail:
-
-```js
-fs.readFile('data.txt', 'utf-8', cb, {});
-```
-
-Instead, wrap the call to readFile in a function which does not forward the
-results object:
-
-```js
-async.auto({
- readData: function(cb, results){
- fs.readFile('data.txt', 'utf-8', cb);
- }
-}, callback);
-```
-
-__Arguments__
-
-* tasks - An object literal containing named functions or an array of
- requirements, with the function itself the last item in the array. The key
- used for each function or array is used when specifying requirements. The
- function receives two arguments: (1) a callback(err, result) which must be
- called when finished, passing an error (which can be null) and the result of
- the function's execution, and (2) a results object, containing the results of
- the previously executed functions.
-* callback(err, results) - An optional callback which is called when all the
- tasks have been completed. The callback will receive an error as an argument
- if any tasks pass an error to their callback. Results will always be passed
- but if an error occurred, no other tasks will be performed, and the results
- object will only contain partial results.
-
-
-__Example__
-
-```js
-async.auto({
- get_data: function(callback){
- // async code to get some data
- },
- make_folder: function(callback){
- // async code to create a directory to store a file in
- // this is run at the same time as getting the data
- },
- write_file: ['get_data', 'make_folder', function(callback){
- // once there is some data and the directory exists,
- // write the data to a file in the directory
- callback(null, filename);
- }],
- email_link: ['write_file', function(callback, results){
- // once the file is written let's email a link to it...
- // results.write_file contains the filename returned by write_file.
- }]
-});
-```
-
-This is a fairly trivial example, but to do this using the basic parallel and
-series functions would look like this:
-
-```js
-async.parallel([
- function(callback){
- // async code to get some data
- },
- function(callback){
- // async code to create a directory to store a file in
- // this is run at the same time as getting the data
- }
-],
-function(err, results){
- async.series([
- function(callback){
- // once there is some data and the directory exists,
- // write the data to a file in the directory
- },
- function(callback){
- // once the file is written let's email a link to it...
- }
- ]);
-});
-```
-
-For a complicated series of async tasks using the auto function makes adding
-new tasks much easier and makes the code more readable.
-
-
----------------------------------------
-
-
-### iterator(tasks)
-
-Creates an iterator function which calls the next function in the array,
-returning a continuation to call the next one after that. It's also possible to
-'peek' the next iterator by doing iterator.next().
-
-This function is used internally by the async module but can be useful when
-you want to manually control the flow of functions in series.
-
-__Arguments__
-
-* tasks - An array of functions to run.
-
-__Example__
-
-```js
-var iterator = async.iterator([
- function(){ sys.p('one'); },
- function(){ sys.p('two'); },
- function(){ sys.p('three'); }
-]);
-
-node> var iterator2 = iterator();
-'one'
-node> var iterator3 = iterator2();
-'two'
-node> iterator3();
-'three'
-node> var nextfn = iterator2.next();
-node> nextfn();
-'three'
-```
-
----------------------------------------
-
-
-### apply(function, arguments..)
-
-Creates a continuation function with some arguments already applied, a useful
-shorthand when combined with other control flow functions. Any arguments
-passed to the returned function are added to the arguments originally passed
-to apply.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to automatically apply when the
- continuation is called.
-
-__Example__
-
-```js
-// using apply
-
-async.parallel([
- async.apply(fs.writeFile, 'testfile1', 'test1'),
- async.apply(fs.writeFile, 'testfile2', 'test2'),
-]);
-
-
-// the same process without using apply
-
-async.parallel([
- function(callback){
- fs.writeFile('testfile1', 'test1', callback);
- },
- function(callback){
- fs.writeFile('testfile2', 'test2', callback);
- }
-]);
-```
-
-It's possible to pass any number of additional arguments when calling the
-continuation:
-
-```js
-node> var fn = async.apply(sys.puts, 'one');
-node> fn('two', 'three');
-one
-two
-three
-```
-
----------------------------------------
-
-
-### nextTick(callback)
-
-Calls the callback on a later loop around the event loop. In node.js this just
-calls process.nextTick, in the browser it falls back to setImmediate(callback)
-if available, otherwise setTimeout(callback, 0), which means other higher priority
-events may precede the execution of the callback.
-
-This is used internally for browser-compatibility purposes.
-
-__Arguments__
-
-* callback - The function to call on a later loop around the event loop.
-
-__Example__
-
-```js
-var call_order = [];
-async.nextTick(function(){
- call_order.push('two');
- // call_order now equals ['one','two']
-});
-call_order.push('one')
-```
-
-
-### times(n, callback)
-
-Calls the callback n times and accumulates results in the same manner
-you would use with async.map.
-
-__Arguments__
-
-* n - The number of times to run the function.
-* callback - The function to call n times.
-
-__Example__
-
-```js
-// Pretend this is some complicated async factory
-var createUser = function(id, callback) {
- callback(null, {
- id: 'user' + id
- })
-}
-// generate 5 users
-async.times(5, function(n, next){
- createUser(n, function(err, user) {
- next(err, user)
- })
-}, function(err, users) {
- // we should now have 5 users
-});
-```
-
-
-### timesSeries(n, callback)
-
-The same as times only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. The results array will be in the same order as the original.
-
-
-## Utils
-
-
-### memoize(fn, [hasher])
-
-Caches the results of an async function. When creating a hash to store function
-results against, the callback is omitted from the hash and an optional hash
-function can be used.
-
-The cache of results is exposed as the `memo` property of the function returned
-by `memoize`.
-
-__Arguments__
-
-* fn - the function you to proxy and cache results from.
-* hasher - an optional function for generating a custom hash for storing
- results, it has all the arguments applied to it apart from the callback, and
- must be synchronous.
-
-__Example__
-
-```js
-var slow_fn = function (name, callback) {
- // do something
- callback(null, result);
-};
-var fn = async.memoize(slow_fn);
-
-// fn can now be used as if it were slow_fn
-fn('some name', function () {
- // callback
-});
-```
-
-
-### unmemoize(fn)
-
-Undoes a memoized function, reverting it to the original, unmemoized
-form. Comes handy in tests.
-
-__Arguments__
-
-* fn - the memoized function
-
-
-### log(function, arguments)
-
-Logs the result of an async function to the console. Only works in node.js or
-in browsers that support console.log and console.error (such as FF and Chrome).
-If multiple arguments are returned from the async function, console.log is
-called on each argument in order.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
- setTimeout(function(){
- callback(null, 'hello ' + name);
- }, 1000);
-};
-```
-```js
-node> async.log(hello, 'world');
-'hello world'
-```
-
----------------------------------------
-
-
-### dir(function, arguments)
-
-Logs the result of an async function to the console using console.dir to
-display the properties of the resulting object. Only works in node.js or
-in browsers that support console.dir and console.error (such as FF and Chrome).
-If multiple arguments are returned from the async function, console.dir is
-called on each argument in order.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
- setTimeout(function(){
- callback(null, {hello: name});
- }, 1000);
-};
-```
-```js
-node> async.dir(hello, 'world');
-{hello: 'world'}
-```
-
----------------------------------------
-
-
-### noConflict()
-
-Changes the value of async back to its original value, returning a reference to the
-async object.
diff --git a/Museum/node_modules/async/component.json b/Museum/node_modules/async/component.json
deleted file mode 100644
index bbb0115..0000000
--- a/Museum/node_modules/async/component.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "name": "async",
- "repo": "caolan/async",
- "description": "Higher-order functions and common patterns for asynchronous code",
- "version": "0.1.23",
- "keywords": [],
- "dependencies": {},
- "development": {},
- "main": "lib/async.js",
- "scripts": [ "lib/async.js" ]
-}
diff --git a/Museum/node_modules/async/lib/async.js b/Museum/node_modules/async/lib/async.js
deleted file mode 100755
index 1eebb15..0000000
--- a/Museum/node_modules/async/lib/async.js
+++ /dev/null
@@ -1,958 +0,0 @@
-/*global setImmediate: false, setTimeout: false, console: false */
-(function () {
-
- var async = {};
-
- // global on the server, window in the browser
- var root, previous_async;
-
- root = this;
- if (root != null) {
- previous_async = root.async;
- }
-
- async.noConflict = function () {
- root.async = previous_async;
- return async;
- };
-
- function only_once(fn) {
- var called = false;
- return function() {
- if (called) throw new Error("Callback was already called.");
- called = true;
- fn.apply(root, arguments);
- }
- }
-
- //// cross-browser compatiblity functions ////
-
- var _each = function (arr, iterator) {
- if (arr.forEach) {
- return arr.forEach(iterator);
- }
- for (var i = 0; i < arr.length; i += 1) {
- iterator(arr[i], i, arr);
- }
- };
-
- var _map = function (arr, iterator) {
- if (arr.map) {
- return arr.map(iterator);
- }
- var results = [];
- _each(arr, function (x, i, a) {
- results.push(iterator(x, i, a));
- });
- return results;
- };
-
- var _reduce = function (arr, iterator, memo) {
- if (arr.reduce) {
- return arr.reduce(iterator, memo);
- }
- _each(arr, function (x, i, a) {
- memo = iterator(memo, x, i, a);
- });
- return memo;
- };
-
- var _keys = function (obj) {
- if (Object.keys) {
- return Object.keys(obj);
- }
- var keys = [];
- for (var k in obj) {
- if (obj.hasOwnProperty(k)) {
- keys.push(k);
- }
- }
- return keys;
- };
-
- //// exported async module functions ////
-
- //// nextTick implementation with browser-compatible fallback ////
- if (typeof process === 'undefined' || !(process.nextTick)) {
- if (typeof setImmediate === 'function') {
- async.nextTick = function (fn) {
- // not a direct alias for IE10 compatibility
- setImmediate(fn);
- };
- async.setImmediate = async.nextTick;
- }
- else {
- async.nextTick = function (fn) {
- setTimeout(fn, 0);
- };
- async.setImmediate = async.nextTick;
- }
- }
- else {
- async.nextTick = process.nextTick;
- if (typeof setImmediate !== 'undefined') {
- async.setImmediate = function (fn) {
- // not a direct alias for IE10 compatibility
- setImmediate(fn);
- };
- }
- else {
- async.setImmediate = async.nextTick;
- }
- }
-
- async.each = function (arr, iterator, callback) {
- callback = callback || function () {};
- if (!arr.length) {
- return callback();
- }
- var completed = 0;
- _each(arr, function (x) {
- iterator(x, only_once(function (err) {
- if (err) {
- callback(err);
- callback = function () {};
- }
- else {
- completed += 1;
- if (completed >= arr.length) {
- callback(null);
- }
- }
- }));
- });
- };
- async.forEach = async.each;
-
- async.eachSeries = function (arr, iterator, callback) {
- callback = callback || function () {};
- if (!arr.length) {
- return callback();
- }
- var completed = 0;
- var iterate = function () {
- iterator(arr[completed], function (err) {
- if (err) {
- callback(err);
- callback = function () {};
- }
- else {
- completed += 1;
- if (completed >= arr.length) {
- callback(null);
- }
- else {
- iterate();
- }
- }
- });
- };
- iterate();
- };
- async.forEachSeries = async.eachSeries;
-
- async.eachLimit = function (arr, limit, iterator, callback) {
- var fn = _eachLimit(limit);
- fn.apply(null, [arr, iterator, callback]);
- };
- async.forEachLimit = async.eachLimit;
-
- var _eachLimit = function (limit) {
-
- return function (arr, iterator, callback) {
- callback = callback || function () {};
- if (!arr.length || limit <= 0) {
- return callback();
- }
- var completed = 0;
- var started = 0;
- var running = 0;
-
- (function replenish () {
- if (completed >= arr.length) {
- return callback();
- }
-
- while (running < limit && started < arr.length) {
- started += 1;
- running += 1;
- iterator(arr[started - 1], function (err) {
- if (err) {
- callback(err);
- callback = function () {};
- }
- else {
- completed += 1;
- running -= 1;
- if (completed >= arr.length) {
- callback();
- }
- else {
- replenish();
- }
- }
- });
- }
- })();
- };
- };
-
-
- var doParallel = function (fn) {
- return function () {
- var args = Array.prototype.slice.call(arguments);
- return fn.apply(null, [async.each].concat(args));
- };
- };
- var doParallelLimit = function(limit, fn) {
- return function () {
- var args = Array.prototype.slice.call(arguments);
- return fn.apply(null, [_eachLimit(limit)].concat(args));
- };
- };
- var doSeries = function (fn) {
- return function () {
- var args = Array.prototype.slice.call(arguments);
- return fn.apply(null, [async.eachSeries].concat(args));
- };
- };
-
-
- var _asyncMap = function (eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, callback) {
- iterator(x.value, function (err, v) {
- results[x.index] = v;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- };
- async.map = doParallel(_asyncMap);
- async.mapSeries = doSeries(_asyncMap);
- async.mapLimit = function (arr, limit, iterator, callback) {
- return _mapLimit(limit)(arr, iterator, callback);
- };
-
- var _mapLimit = function(limit) {
- return doParallelLimit(limit, _asyncMap);
- };
-
- // reduce only has a series version, as doing reduce in parallel won't
- // work in many situations.
- async.reduce = function (arr, memo, iterator, callback) {
- async.eachSeries(arr, function (x, callback) {
- iterator(memo, x, function (err, v) {
- memo = v;
- callback(err);
- });
- }, function (err) {
- callback(err, memo);
- });
- };
- // inject alias
- async.inject = async.reduce;
- // foldl alias
- async.foldl = async.reduce;
-
- async.reduceRight = function (arr, memo, iterator, callback) {
- var reversed = _map(arr, function (x) {
- return x;
- }).reverse();
- async.reduce(reversed, memo, iterator, callback);
- };
- // foldr alias
- async.foldr = async.reduceRight;
-
- var _filter = function (eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, callback) {
- iterator(x.value, function (v) {
- if (v) {
- results.push(x);
- }
- callback();
- });
- }, function (err) {
- callback(_map(results.sort(function (a, b) {
- return a.index - b.index;
- }), function (x) {
- return x.value;
- }));
- });
- };
- async.filter = doParallel(_filter);
- async.filterSeries = doSeries(_filter);
- // select alias
- async.select = async.filter;
- async.selectSeries = async.filterSeries;
-
- var _reject = function (eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, callback) {
- iterator(x.value, function (v) {
- if (!v) {
- results.push(x);
- }
- callback();
- });
- }, function (err) {
- callback(_map(results.sort(function (a, b) {
- return a.index - b.index;
- }), function (x) {
- return x.value;
- }));
- });
- };
- async.reject = doParallel(_reject);
- async.rejectSeries = doSeries(_reject);
-
- var _detect = function (eachfn, arr, iterator, main_callback) {
- eachfn(arr, function (x, callback) {
- iterator(x, function (result) {
- if (result) {
- main_callback(x);
- main_callback = function () {};
- }
- else {
- callback();
- }
- });
- }, function (err) {
- main_callback();
- });
- };
- async.detect = doParallel(_detect);
- async.detectSeries = doSeries(_detect);
-
- async.some = function (arr, iterator, main_callback) {
- async.each(arr, function (x, callback) {
- iterator(x, function (v) {
- if (v) {
- main_callback(true);
- main_callback = function () {};
- }
- callback();
- });
- }, function (err) {
- main_callback(false);
- });
- };
- // any alias
- async.any = async.some;
-
- async.every = function (arr, iterator, main_callback) {
- async.each(arr, function (x, callback) {
- iterator(x, function (v) {
- if (!v) {
- main_callback(false);
- main_callback = function () {};
- }
- callback();
- });
- }, function (err) {
- main_callback(true);
- });
- };
- // all alias
- async.all = async.every;
-
- async.sortBy = function (arr, iterator, callback) {
- async.map(arr, function (x, callback) {
- iterator(x, function (err, criteria) {
- if (err) {
- callback(err);
- }
- else {
- callback(null, {value: x, criteria: criteria});
- }
- });
- }, function (err, results) {
- if (err) {
- return callback(err);
- }
- else {
- var fn = function (left, right) {
- var a = left.criteria, b = right.criteria;
- return a < b ? -1 : a > b ? 1 : 0;
- };
- callback(null, _map(results.sort(fn), function (x) {
- return x.value;
- }));
- }
- });
- };
-
- async.auto = function (tasks, callback) {
- callback = callback || function () {};
- var keys = _keys(tasks);
- if (!keys.length) {
- return callback(null);
- }
-
- var results = {};
-
- var listeners = [];
- var addListener = function (fn) {
- listeners.unshift(fn);
- };
- var removeListener = function (fn) {
- for (var i = 0; i < listeners.length; i += 1) {
- if (listeners[i] === fn) {
- listeners.splice(i, 1);
- return;
- }
- }
- };
- var taskComplete = function () {
- _each(listeners.slice(0), function (fn) {
- fn();
- });
- };
-
- addListener(function () {
- if (_keys(results).length === keys.length) {
- callback(null, results);
- callback = function () {};
- }
- });
-
- _each(keys, function (k) {
- var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k];
- var taskCallback = function (err) {
- var args = Array.prototype.slice.call(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- if (err) {
- var safeResults = {};
- _each(_keys(results), function(rkey) {
- safeResults[rkey] = results[rkey];
- });
- safeResults[k] = args;
- callback(err, safeResults);
- // stop subsequent errors hitting callback multiple times
- callback = function () {};
- }
- else {
- results[k] = args;
- async.setImmediate(taskComplete);
- }
- };
- var requires = task.slice(0, Math.abs(task.length - 1)) || [];
- var ready = function () {
- return _reduce(requires, function (a, x) {
- return (a && results.hasOwnProperty(x));
- }, true) && !results.hasOwnProperty(k);
- };
- if (ready()) {
- task[task.length - 1](taskCallback, results);
- }
- else {
- var listener = function () {
- if (ready()) {
- removeListener(listener);
- task[task.length - 1](taskCallback, results);
- }
- };
- addListener(listener);
- }
- });
- };
-
- async.waterfall = function (tasks, callback) {
- callback = callback || function () {};
- if (tasks.constructor !== Array) {
- var err = new Error('First argument to waterfall must be an array of functions');
- return callback(err);
- }
- if (!tasks.length) {
- return callback();
- }
- var wrapIterator = function (iterator) {
- return function (err) {
- if (err) {
- callback.apply(null, arguments);
- callback = function () {};
- }
- else {
- var args = Array.prototype.slice.call(arguments, 1);
- var next = iterator.next();
- if (next) {
- args.push(wrapIterator(next));
- }
- else {
- args.push(callback);
- }
- async.setImmediate(function () {
- iterator.apply(null, args);
- });
- }
- };
- };
- wrapIterator(async.iterator(tasks))();
- };
-
- var _parallel = function(eachfn, tasks, callback) {
- callback = callback || function () {};
- if (tasks.constructor === Array) {
- eachfn.map(tasks, function (fn, callback) {
- if (fn) {
- fn(function (err) {
- var args = Array.prototype.slice.call(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- callback.call(null, err, args);
- });
- }
- }, callback);
- }
- else {
- var results = {};
- eachfn.each(_keys(tasks), function (k, callback) {
- tasks[k](function (err) {
- var args = Array.prototype.slice.call(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- results[k] = args;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
- };
-
- async.parallel = function (tasks, callback) {
- _parallel({ map: async.map, each: async.each }, tasks, callback);
- };
-
- async.parallelLimit = function(tasks, limit, callback) {
- _parallel({ map: _mapLimit(limit), each: _eachLimit(limit) }, tasks, callback);
- };
-
- async.series = function (tasks, callback) {
- callback = callback || function () {};
- if (tasks.constructor === Array) {
- async.mapSeries(tasks, function (fn, callback) {
- if (fn) {
- fn(function (err) {
- var args = Array.prototype.slice.call(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- callback.call(null, err, args);
- });
- }
- }, callback);
- }
- else {
- var results = {};
- async.eachSeries(_keys(tasks), function (k, callback) {
- tasks[k](function (err) {
- var args = Array.prototype.slice.call(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- results[k] = args;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
- };
-
- async.iterator = function (tasks) {
- var makeCallback = function (index) {
- var fn = function () {
- if (tasks.length) {
- tasks[index].apply(null, arguments);
- }
- return fn.next();
- };
- fn.next = function () {
- return (index < tasks.length - 1) ? makeCallback(index + 1): null;
- };
- return fn;
- };
- return makeCallback(0);
- };
-
- async.apply = function (fn) {
- var args = Array.prototype.slice.call(arguments, 1);
- return function () {
- return fn.apply(
- null, args.concat(Array.prototype.slice.call(arguments))
- );
- };
- };
-
- var _concat = function (eachfn, arr, fn, callback) {
- var r = [];
- eachfn(arr, function (x, cb) {
- fn(x, function (err, y) {
- r = r.concat(y || []);
- cb(err);
- });
- }, function (err) {
- callback(err, r);
- });
- };
- async.concat = doParallel(_concat);
- async.concatSeries = doSeries(_concat);
-
- async.whilst = function (test, iterator, callback) {
- if (test()) {
- iterator(function (err) {
- if (err) {
- return callback(err);
- }
- async.whilst(test, iterator, callback);
- });
- }
- else {
- callback();
- }
- };
-
- async.doWhilst = function (iterator, test, callback) {
- iterator(function (err) {
- if (err) {
- return callback(err);
- }
- if (test()) {
- async.doWhilst(iterator, test, callback);
- }
- else {
- callback();
- }
- });
- };
-
- async.until = function (test, iterator, callback) {
- if (!test()) {
- iterator(function (err) {
- if (err) {
- return callback(err);
- }
- async.until(test, iterator, callback);
- });
- }
- else {
- callback();
- }
- };
-
- async.doUntil = function (iterator, test, callback) {
- iterator(function (err) {
- if (err) {
- return callback(err);
- }
- if (!test()) {
- async.doUntil(iterator, test, callback);
- }
- else {
- callback();
- }
- });
- };
-
- async.queue = function (worker, concurrency) {
- if (concurrency === undefined) {
- concurrency = 1;
- }
- function _insert(q, data, pos, callback) {
- if(data.constructor !== Array) {
- data = [data];
- }
- _each(data, function(task) {
- var item = {
- data: task,
- callback: typeof callback === 'function' ? callback : null
- };
-
- if (pos) {
- q.tasks.unshift(item);
- } else {
- q.tasks.push(item);
- }
-
- if (q.saturated && q.tasks.length === concurrency) {
- q.saturated();
- }
- async.setImmediate(q.process);
- });
- }
-
- var workers = 0;
- var q = {
- tasks: [],
- concurrency: concurrency,
- saturated: null,
- empty: null,
- drain: null,
- push: function (data, callback) {
- _insert(q, data, false, callback);
- },
- unshift: function (data, callback) {
- _insert(q, data, true, callback);
- },
- process: function () {
- if (workers < q.concurrency && q.tasks.length) {
- var task = q.tasks.shift();
- if (q.empty && q.tasks.length === 0) {
- q.empty();
- }
- workers += 1;
- var next = function () {
- workers -= 1;
- if (task.callback) {
- task.callback.apply(task, arguments);
- }
- if (q.drain && q.tasks.length + workers === 0) {
- q.drain();
- }
- q.process();
- };
- var cb = only_once(next);
- worker(task.data, cb);
- }
- },
- length: function () {
- return q.tasks.length;
- },
- running: function () {
- return workers;
- }
- };
- return q;
- };
-
- async.cargo = function (worker, payload) {
- var working = false,
- tasks = [];
-
- var cargo = {
- tasks: tasks,
- payload: payload,
- saturated: null,
- empty: null,
- drain: null,
- push: function (data, callback) {
- if(data.constructor !== Array) {
- data = [data];
- }
- _each(data, function(task) {
- tasks.push({
- data: task,
- callback: typeof callback === 'function' ? callback : null
- });
- if (cargo.saturated && tasks.length === payload) {
- cargo.saturated();
- }
- });
- async.setImmediate(cargo.process);
- },
- process: function process() {
- if (working) return;
- if (tasks.length === 0) {
- if(cargo.drain) cargo.drain();
- return;
- }
-
- var ts = typeof payload === 'number'
- ? tasks.splice(0, payload)
- : tasks.splice(0);
-
- var ds = _map(ts, function (task) {
- return task.data;
- });
-
- if(cargo.empty) cargo.empty();
- working = true;
- worker(ds, function () {
- working = false;
-
- var args = arguments;
- _each(ts, function (data) {
- if (data.callback) {
- data.callback.apply(null, args);
- }
- });
-
- process();
- });
- },
- length: function () {
- return tasks.length;
- },
- running: function () {
- return working;
- }
- };
- return cargo;
- };
-
- var _console_fn = function (name) {
- return function (fn) {
- var args = Array.prototype.slice.call(arguments, 1);
- fn.apply(null, args.concat([function (err) {
- var args = Array.prototype.slice.call(arguments, 1);
- if (typeof console !== 'undefined') {
- if (err) {
- if (console.error) {
- console.error(err);
- }
- }
- else if (console[name]) {
- _each(args, function (x) {
- console[name](x);
- });
- }
- }
- }]));
- };
- };
- async.log = _console_fn('log');
- async.dir = _console_fn('dir');
- /*async.info = _console_fn('info');
- async.warn = _console_fn('warn');
- async.error = _console_fn('error');*/
-
- async.memoize = function (fn, hasher) {
- var memo = {};
- var queues = {};
- hasher = hasher || function (x) {
- return x;
- };
- var memoized = function () {
- var args = Array.prototype.slice.call(arguments);
- var callback = args.pop();
- var key = hasher.apply(null, args);
- if (key in memo) {
- callback.apply(null, memo[key]);
- }
- else if (key in queues) {
- queues[key].push(callback);
- }
- else {
- queues[key] = [callback];
- fn.apply(null, args.concat([function () {
- memo[key] = arguments;
- var q = queues[key];
- delete queues[key];
- for (var i = 0, l = q.length; i < l; i++) {
- q[i].apply(null, arguments);
- }
- }]));
- }
- };
- memoized.memo = memo;
- memoized.unmemoized = fn;
- return memoized;
- };
-
- async.unmemoize = function (fn) {
- return function () {
- return (fn.unmemoized || fn).apply(null, arguments);
- };
- };
-
- async.times = function (count, iterator, callback) {
- var counter = [];
- for (var i = 0; i < count; i++) {
- counter.push(i);
- }
- return async.map(counter, iterator, callback);
- };
-
- async.timesSeries = function (count, iterator, callback) {
- var counter = [];
- for (var i = 0; i < count; i++) {
- counter.push(i);
- }
- return async.mapSeries(counter, iterator, callback);
- };
-
- async.compose = function (/* functions... */) {
- var fns = Array.prototype.reverse.call(arguments);
- return function () {
- var that = this;
- var args = Array.prototype.slice.call(arguments);
- var callback = args.pop();
- async.reduce(fns, args, function (newargs, fn, cb) {
- fn.apply(that, newargs.concat([function () {
- var err = arguments[0];
- var nextargs = Array.prototype.slice.call(arguments, 1);
- cb(err, nextargs);
- }]))
- },
- function (err, results) {
- callback.apply(that, [err].concat(results));
- });
- };
- };
-
- var _applyEach = function (eachfn, fns /*args...*/) {
- var go = function () {
- var that = this;
- var args = Array.prototype.slice.call(arguments);
- var callback = args.pop();
- return eachfn(fns, function (fn, cb) {
- fn.apply(that, args.concat([cb]));
- },
- callback);
- };
- if (arguments.length > 2) {
- var args = Array.prototype.slice.call(arguments, 2);
- return go.apply(this, args);
- }
- else {
- return go;
- }
- };
- async.applyEach = doParallel(_applyEach);
- async.applyEachSeries = doSeries(_applyEach);
-
- async.forever = function (fn, callback) {
- function next(err) {
- if (err) {
- if (callback) {
- return callback(err);
- }
- throw err;
- }
- fn(next);
- }
- next();
- };
-
- // AMD / RequireJS
- if (typeof define !== 'undefined' && define.amd) {
- define([], function () {
- return async;
- });
- }
- // Node.js
- else if (typeof module !== 'undefined' && module.exports) {
- module.exports = async;
- }
- // included directly via
-
-
-
Jade - node template engine
-
-
You are amazing
-
Jade is a terse and simple templating language with a strong focus on performance and powerful features.