diff options
| author | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-28 02:20:52 +0000 |
|---|---|---|
| committer | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-28 02:20:52 +0000 |
| commit | 4cff38c8f7b65dab1fd72ea835ea7288327d1056 (patch) | |
| tree | ac93acd69e77eef1e352af953d56238d70ea9c5d /node_modules/express-handlebars | |
| parent | e11dd98c9a55cd1742d221e3b1ea90d31e240fa8 (diff) | |
Fixed admin bug
Diffstat (limited to 'node_modules/express-handlebars')
84 files changed, 285 insertions, 4016 deletions
diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json b/node_modules/express-handlebars/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json index 842d22b..de3bfd5 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json @@ -58,5 +58,6 @@ "host": "packages-16-east.internal.npmjs.com", "tmp": "tmp/wrappy-1.0.2.tgz_1463527848281_0.037129373755306005" }, - "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/inflight/package.json b/node_modules/express-handlebars/node_modules/glob/node_modules/inflight/package.json index 4010d03..077c122 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/inflight/package.json +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/inflight/package.json @@ -67,5 +67,6 @@ "tmp": "tmp/inflight-1.0.5.tgz_1463529611443_0.00041943578980863094" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz" + "_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/LICENSE b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/LICENSE new file mode 100644 index 0000000..dea3013 --- /dev/null +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/LICENSE @@ -0,0 +1,16 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/README.md b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/README.md new file mode 100644 index 0000000..b1c5665 --- /dev/null +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/README.md @@ -0,0 +1,42 @@ +Browser-friendly inheritance fully compatible with standard node.js +[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). + +This package exports standard `inherits` from node.js `util` module in +node environment, but also provides alternative browser-friendly +implementation through [browser +field](https://gist.github.com/shtylman/4339901). Alternative +implementation is a literal copy of standard one located in standalone +module to avoid requiring of `util`. It also has a shim for old +browsers with no `Object.create` support. + +While keeping you sure you are using standard `inherits` +implementation in node.js environment, it allows bundlers such as +[browserify](https://github.com/substack/node-browserify) to not +include full `util` package to your client code if all you need is +just `inherits` function. It worth, because browser shim for `util` +package is large and `inherits` is often the single function you need +from it. + +It's recommended to use this package instead of +`require('util').inherits` for any code that has chances to be used +not only in node.js but in browser too. + +## usage + +```js +var inherits = require('inherits'); +// then use exactly as the standard one +``` + +## note on version ~1.0 + +Version ~1.0 had completely different motivation and is not compatible +neither with 2.0 nor with standard node.js `inherits`. + +If you are using version ~1.0 and planning to switch to ~2.0, be +careful: + +* new version uses `super_` instead of `super` for referencing + superclass +* new version overwrites current prototype while old one preserves any + existing fields on it diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/inherits.js b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/inherits.js new file mode 100644 index 0000000..29f5e24 --- /dev/null +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/inherits.js @@ -0,0 +1 @@ +module.exports = require('util').inherits diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/inherits_browser.js b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/inherits_browser.js new file mode 100644 index 0000000..c1e78a7 --- /dev/null +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/inherits_browser.js @@ -0,0 +1,23 @@ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/package.json b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/package.json new file mode 100644 index 0000000..5739f10 --- /dev/null +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/package.json @@ -0,0 +1,50 @@ +{ + "name": "inherits", + "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", + "version": "2.0.1", + "keywords": [ + "inheritance", + "class", + "klass", + "oop", + "object-oriented", + "inherits", + "browser", + "browserify" + ], + "main": "./inherits.js", + "browser": "./inherits_browser.js", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/inherits.git" + }, + "license": "ISC", + "scripts": { + "test": "node test" + }, + "bugs": { + "url": "https://github.com/isaacs/inherits/issues" + }, + "_id": "inherits@2.0.1", + "dist": { + "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", + "tarball": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "_from": "inherits@>=2.0.0 <3.0.0", + "_npmVersion": "1.3.8", + "_npmUser": { + "name": "isaacs", + "email": "i@izs.me" + }, + "maintainers": [ + { + "name": "isaacs", + "email": "i@izs.me" + } + ], + "directories": {}, + "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", + "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/isaacs/inherits#readme" +} diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/test.js b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/test.js new file mode 100644 index 0000000..fc53012 --- /dev/null +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/inherits/test.js @@ -0,0 +1,25 @@ +var inherits = require('./inherits.js') +var assert = require('assert') + +function test(c) { + assert(c.constructor === Child) + assert(c.constructor.super_ === Parent) + assert(Object.getPrototypeOf(c) === Child.prototype) + assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) + assert(c instanceof Child) + assert(c instanceof Parent) +} + +function Child() { + Parent.call(this) + test(this) +} + +function Parent() {} + +inherits(Child, Parent) + +var c = new Child +test(c) + +console.log('ok') diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js index 932718f..955f27c 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js @@ -66,6 +66,16 @@ function expandTop(str) { if (!str) return []; + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + return expand(escapeBraces(str), true).map(unescapeBraces); } diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md index d6880b2..08e918c 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md @@ -47,7 +47,7 @@ object with those keys: If there's no match, `undefined` will be returned. -If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']`. +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`. ### var r = balanced.range(a, b, str) @@ -56,7 +56,7 @@ array with indexes: `[ <a index>, <b index> ]`. If there's no match, `undefined` will be returned. -If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]`. +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`. ## Installation diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js index 4670f7f..e8d8587 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js @@ -30,7 +30,7 @@ function range(a, b, str) { begs = []; left = str.length; - while (i < str.length && i >= 0 && ! result) { + while (i >= 0 && !result) { if (i == ai) { begs.push(i); ai = str.indexOf(a, i + 1); diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json index 8aa3d45..4c87650 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json @@ -1,7 +1,7 @@ { "name": "balanced-match", "description": "Match balanced character pairs, like \"{\" and \"}\"", - "version": "0.4.1", + "version": "0.4.2", "repository": { "type": "git", "url": "git://github.com/juliangruber/balanced-match.git" @@ -13,7 +13,7 @@ }, "dependencies": {}, "devDependencies": { - "tape": "~4.5.0" + "tape": "^4.6.0" }, "keywords": [ "match", @@ -44,22 +44,22 @@ "android-browser/4.2..latest" ] }, - "gitHead": "7004b289baaaab6a832f4901735e29d37cc2a863", + "gitHead": "57c2ea29d89a2844ae3bdcc637c6e2cbb73725e2", "bugs": { "url": "https://github.com/juliangruber/balanced-match/issues" }, - "_id": "balanced-match@0.4.1", - "_shasum": "19053e2e0748eadb379da6c09d455cf5e1039335", + "_id": "balanced-match@0.4.2", + "_shasum": "cb3f3e3c732dc0f01ee70b403f302e61d7709838", "_from": "balanced-match@>=0.4.1 <0.5.0", - "_npmVersion": "3.8.6", - "_nodeVersion": "6.0.0", + "_npmVersion": "2.15.8", + "_nodeVersion": "4.4.7", "_npmUser": { "name": "juliangruber", "email": "julian@juliangruber.com" }, "dist": { - "shasum": "19053e2e0748eadb379da6c09d455cf5e1039335", - "tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz" + "shasum": "cb3f3e3c732dc0f01ee70b403f302e61d7709838", + "tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" }, "maintainers": [ { @@ -68,9 +68,9 @@ } ], "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/balanced-match-0.4.1.tgz_1462129663650_0.39764496590942144" + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/balanced-match-0.4.2.tgz_1468834991581_0.6590619895141572" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz" + "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" } diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json index da4330e..de8b785 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json @@ -78,5 +78,6 @@ } ], "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", - "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json index 807cb31..8c64940 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json @@ -1,7 +1,7 @@ { "name": "brace-expansion", "description": "Brace expansion as known from sh/bash", - "version": "1.1.5", + "version": "1.1.6", "repository": { "type": "git", "url": "git://github.com/juliangruber/brace-expansion.git" @@ -17,7 +17,7 @@ "concat-map": "0.0.1" }, "devDependencies": { - "tape": "4.5.1" + "tape": "^4.6.0" }, "keywords": [], "author": { @@ -42,22 +42,22 @@ "android-browser/4.2..latest" ] }, - "gitHead": "ff31acab078f1bb696ac4c55ca56ea24e6495fb6", + "gitHead": "791262fa06625e9c5594cde529a21d82086af5f2", "bugs": { "url": "https://github.com/juliangruber/brace-expansion/issues" }, - "_id": "brace-expansion@1.1.5", - "_shasum": "f5b4ad574e2cb7ccc1eb83e6fe79b8ecadf7a526", + "_id": "brace-expansion@1.1.6", + "_shasum": "7197d7eaa9b87e648390ea61fc66c84427420df9", "_from": "brace-expansion@>=1.0.0 <2.0.0", - "_npmVersion": "2.15.5", - "_nodeVersion": "4.4.5", + "_npmVersion": "2.15.8", + "_nodeVersion": "4.4.7", "_npmUser": { "name": "juliangruber", "email": "julian@juliangruber.com" }, "dist": { - "shasum": "f5b4ad574e2cb7ccc1eb83e6fe79b8ecadf7a526", - "tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz" + "shasum": "7197d7eaa9b87e648390ea61fc66c84427420df9", + "tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz" }, "maintainers": [ { @@ -71,8 +71,8 @@ ], "_npmOperationalInternal": { "host": "packages-16-east.internal.npmjs.com", - "tmp": "tmp/brace-expansion-1.1.5.tgz_1465989660138_0.34528115345165133" + "tmp": "tmp/brace-expansion-1.1.6.tgz_1469047715600_0.9362958471756428" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz" + "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz" } diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/package.json b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/package.json index 651507f..1bb38d9 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/package.json +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/minimatch/package.json @@ -59,5 +59,6 @@ "tmp": "tmp/minimatch-3.0.2.tgz_1466194379770_0.11417287751100957" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz" + "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/once/node_modules/wrappy/package.json b/node_modules/express-handlebars/node_modules/glob/node_modules/once/node_modules/wrappy/package.json index 842d22b..de3bfd5 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/once/node_modules/wrappy/package.json @@ -58,5 +58,6 @@ "host": "packages-16-east.internal.npmjs.com", "tmp": "tmp/wrappy-1.0.2.tgz_1463527848281_0.037129373755306005" }, - "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/once/package.json b/node_modules/express-handlebars/node_modules/glob/node_modules/once/package.json index 980e6cc..e4ee912 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/once/package.json +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/once/package.json @@ -58,5 +58,6 @@ "email": "i@izs.me" } ], - "_resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" + "_resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/glob/node_modules/path-is-absolute/package.json b/node_modules/express-handlebars/node_modules/glob/node_modules/path-is-absolute/package.json index a14a849..8f41ade 100644 --- a/node_modules/express-handlebars/node_modules/glob/node_modules/path-is-absolute/package.json +++ b/node_modules/express-handlebars/node_modules/glob/node_modules/path-is-absolute/package.json @@ -5,7 +5,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/sindresorhus/path-is-absolute" + "url": "git+https://github.com/sindresorhus/path-is-absolute.git" }, "author": { "name": "Sindre Sorhus", @@ -65,5 +65,6 @@ "tarball": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "_resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/glob/package.json b/node_modules/express-handlebars/node_modules/glob/package.json index 4299dbd..865c2e9 100644 --- a/node_modules/express-handlebars/node_modules/glob/package.json +++ b/node_modules/express-handlebars/node_modules/glob/package.json @@ -68,5 +68,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz" + "_resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/graceful-fs/README.md b/node_modules/express-handlebars/node_modules/graceful-fs/README.md index d0dcd49..5273a50 100644 --- a/node_modules/express-handlebars/node_modules/graceful-fs/README.md +++ b/node_modules/express-handlebars/node_modules/graceful-fs/README.md @@ -7,7 +7,7 @@ The improvements are meant to normalize behavior across different platforms and environments, and to make filesystem access more resilient to errors. -## Improvements over [fs module](http://api.nodejs.org/fs.html) +## Improvements over [fs module](https://nodejs.org/api/fs.html) * Queues up `open` and `readdir` calls, and retries them once something closes if there is an EMFILE error from too many file diff --git a/node_modules/express-handlebars/node_modules/graceful-fs/package.json b/node_modules/express-handlebars/node_modules/graceful-fs/package.json index ff1b7dd..f242e81 100644 --- a/node_modules/express-handlebars/node_modules/graceful-fs/package.json +++ b/node_modules/express-handlebars/node_modules/graceful-fs/package.json @@ -1,7 +1,7 @@ { "name": "graceful-fs", "description": "A drop-in replacement for fs, making various improvements.", - "version": "4.1.4", + "version": "4.1.5", "repository": { "type": "git", "url": "git+https://github.com/isaacs/node-graceful-fs.git" @@ -44,23 +44,23 @@ "legacy-streams.js", "polyfills.js" ], - "gitHead": "fe8f05ccc2779d1dfa6db6173f3ed64f1e9aa72c", + "gitHead": "d170f3f2ceb56adb4d6bd50df4b535bed54120c0", "bugs": { "url": "https://github.com/isaacs/node-graceful-fs/issues" }, "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "_id": "graceful-fs@4.1.4", - "_shasum": "ef089d2880f033b011823ce5c8fae798da775dbd", + "_id": "graceful-fs@4.1.5", + "_shasum": "f4745e8caed5e0dd2ef21bb5e2d229a32e8093c0", "_from": "graceful-fs@>=4.1.2 <5.0.0", - "_npmVersion": "3.8.9", - "_nodeVersion": "5.6.0", + "_npmVersion": "3.10.6", + "_nodeVersion": "4.4.4", "_npmUser": { "name": "isaacs", "email": "i@izs.me" }, "dist": { - "shasum": "ef089d2880f033b011823ce5c8fae798da775dbd", - "tarball": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz" + "shasum": "f4745e8caed5e0dd2ef21bb5e2d229a32e8093c0", + "tarball": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" }, "maintainers": [ { @@ -70,7 +70,7 @@ ], "_npmOperationalInternal": { "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/graceful-fs-4.1.4.tgz_1462474854900_0.9423982477746904" + "tmp": "tmp/graceful-fs-4.1.5.tgz_1469558843062_0.986795610981062" }, - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz" + "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" } diff --git a/node_modules/express-handlebars/node_modules/graceful-fs/polyfills.js b/node_modules/express-handlebars/node_modules/graceful-fs/polyfills.js index 5e4f480..1cc74c8 100644 --- a/node_modules/express-handlebars/node_modules/graceful-fs/polyfills.js +++ b/node_modules/express-handlebars/node_modules/graceful-fs/polyfills.js @@ -44,28 +44,28 @@ function patch (fs) { fs.fchown = chownFix(fs.fchown) fs.lchown = chownFix(fs.lchown) - fs.chmod = chownFix(fs.chmod) - fs.fchmod = chownFix(fs.fchmod) - fs.lchmod = chownFix(fs.lchmod) + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) fs.chownSync = chownFixSync(fs.chownSync) fs.fchownSync = chownFixSync(fs.fchownSync) fs.lchownSync = chownFixSync(fs.lchownSync) - fs.chmodSync = chownFix(fs.chmodSync) - fs.fchmodSync = chownFix(fs.fchmodSync) - fs.lchmodSync = chownFix(fs.lchmodSync) + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) // if lchmod/lchown do not exist, then make them no-ops if (!fs.lchmod) { fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) + if (cb) process.nextTick(cb) } fs.lchmodSync = function () {} } if (!fs.lchown) { fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) + if (cb) process.nextTick(cb) } fs.lchownSync = function () {} } @@ -121,20 +121,19 @@ function patch (fs) { function patchLchmod (fs) { fs.lchmod = function (path, mode, callback) { - callback = callback || noop fs.open( path , constants.O_WRONLY | constants.O_SYMLINK , mode , function (err, fd) { if (err) { - callback(err) + if (callback) callback(err) return } // prefer to return the chmod error, if one occurs, // but still try to close, and report closing errors if they occur. fs.fchmod(fd, mode, function (err) { fs.close(fd, function(err2) { - callback(err || err2) + if (callback) callback(err || err2) }) }) }) @@ -167,11 +166,13 @@ function patchLutimes (fs) { if (constants.hasOwnProperty("O_SYMLINK")) { fs.lutimes = function (path, at, mt, cb) { fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) + if (er) { + if (cb) cb(er) + return + } fs.futimes(fd, at, mt, function (er) { fs.close(fd, function (er2) { - return cb(er || er2) + if (cb) cb(er || er2) }) }) }) @@ -197,17 +198,39 @@ function patchLutimes (fs) { } } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } fs.lutimesSync = function () {} } } +function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er, res) { + if (chownErOk(er)) er = null + if (cb) cb(er, res) + }) + } +} + +function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } + } +} + + function chownFix (orig) { if (!orig) return orig return function (target, uid, gid, cb) { return orig.call(fs, target, uid, gid, function (er, res) { if (chownErOk(er)) er = null - cb(er, res) + if (cb) cb(er, res) }) } } diff --git a/node_modules/express-handlebars/node_modules/handlebars/node_modules/async/package.json b/node_modules/express-handlebars/node_modules/handlebars/node_modules/async/package.json index 8b29a0f..4bcdc92 100644 --- a/node_modules/express-handlebars/node_modules/handlebars/node_modules/async/package.json +++ b/node_modules/express-handlebars/node_modules/handlebars/node_modules/async/package.json @@ -118,5 +118,6 @@ "tarball": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + "_resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/handlebars/node_modules/optimist/node_modules/minimist/package.json b/node_modules/express-handlebars/node_modules/handlebars/node_modules/optimist/node_modules/minimist/package.json index 46e07ce..f0043ff 100644 --- a/node_modules/express-handlebars/node_modules/handlebars/node_modules/optimist/node_modules/minimist/package.json +++ b/node_modules/express-handlebars/node_modules/handlebars/node_modules/optimist/node_modules/minimist/package.json @@ -62,5 +62,6 @@ ], "directories": {}, "_shasum": "de3f98543dbf96082be48ad1a0c7cda836301dcf", - "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/handlebars/node_modules/optimist/package.json b/node_modules/express-handlebars/node_modules/handlebars/node_modules/optimist/package.json index 5b2465b..26df1b8 100644 --- a/node_modules/express-handlebars/node_modules/handlebars/node_modules/optimist/package.json +++ b/node_modules/express-handlebars/node_modules/handlebars/node_modules/optimist/package.json @@ -16,7 +16,7 @@ }, "repository": { "type": "git", - "url": "http://github.com/substack/node-optimist.git" + "url": "git+ssh://git@github.com/substack/node-optimist.git" }, "keywords": [ "argument", @@ -59,5 +59,6 @@ ], "directories": {}, "_shasum": "da3ea74686fa21a19a111c326e90eb15a0196686", - "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz" + "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/handlebars/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/package.json b/node_modules/express-handlebars/node_modules/handlebars/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/package.json index e36d9c2..3cc2e0b 100644 --- a/node_modules/express-handlebars/node_modules/handlebars/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/package.json +++ b/node_modules/express-handlebars/node_modules/handlebars/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/package.json @@ -52,7 +52,7 @@ "gitHead": "7f08e823a54c6bda319d875895813537a66a4c5e", "_id": "align-text@0.1.4", "_shasum": "0cd90a561093f35d0a99256c22b7069433fad117", - "_from": "align-text@>=0.1.1 <0.2.0", + "_from": "align-text@>=0.1.3 <0.2.0", "_npmVersion": "3.6.0", "_nodeVersion": "5.5.0", "_npmUser": { diff --git a/node_modules/express-handlebars/node_modules/handlebars/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/package.json b/node_modules/express-handlebars/node_modules/handlebars/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/package.json index e36d9c2..3cc2e0b 100644 --- a/node_modules/express-handlebars/node_modules/handlebars/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/package.json +++ b/node_modules/express-handlebars/node_modules/handlebars/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/package.json @@ -52,7 +52,7 @@ "gitHead": "7f08e823a54c6bda319d875895813537a66a4c5e", "_id": "align-text@0.1.4", "_shasum": "0cd90a561093f35d0a99256c22b7069433fad117", - "_from": "align-text@>=0.1.1 <0.2.0", + "_from": "align-text@>=0.1.3 <0.2.0", "_npmVersion": "3.6.0", "_nodeVersion": "5.5.0", "_npmUser": { diff --git a/node_modules/express-handlebars/node_modules/handlebars/package.json b/node_modules/express-handlebars/node_modules/handlebars/package.json index b7eeead..88ada41 100644 --- a/node_modules/express-handlebars/node_modules/handlebars/package.json +++ b/node_modules/express-handlebars/node_modules/handlebars/package.json @@ -100,5 +100,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.5.tgz" + "_resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.5.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/object.assign/node_modules/define-properties/node_modules/foreach/package.json b/node_modules/express-handlebars/node_modules/object.assign/node_modules/define-properties/node_modules/foreach/package.json index 4032e0c..f5c9928 100644 --- a/node_modules/express-handlebars/node_modules/object.assign/node_modules/define-properties/node_modules/foreach/package.json +++ b/node_modules/express-handlebars/node_modules/object.assign/node_modules/define-properties/node_modules/foreach/package.json @@ -24,7 +24,7 @@ }, "repository": { "type": "git", - "url": "git://github.com/manuelstofer/foreach" + "url": "git://github.com/manuelstofer/foreach.git" }, "keywords": [ "shim", @@ -79,5 +79,6 @@ "tarball": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" + "_resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/object.assign/node_modules/define-properties/package.json b/node_modules/express-handlebars/node_modules/object.assign/node_modules/define-properties/package.json index 8e1c75a..244e4bb 100644 --- a/node_modules/express-handlebars/node_modules/object.assign/node_modules/define-properties/package.json +++ b/node_modules/express-handlebars/node_modules/object.assign/node_modules/define-properties/package.json @@ -89,5 +89,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz" + "_resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/object.assign/node_modules/function-bind/package.json b/node_modules/express-handlebars/node_modules/object.assign/node_modules/function-bind/package.json index e9ba9b2..644eb4f 100644 --- a/node_modules/express-handlebars/node_modules/object.assign/node_modules/function-bind/package.json +++ b/node_modules/express-handlebars/node_modules/object.assign/node_modules/function-bind/package.json @@ -99,5 +99,6 @@ "tmp": "tmp/function-bind-1.1.0.tgz_1455438520627_0.822420896962285" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz" + "_resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/object.assign/node_modules/object-keys/package.json b/node_modules/express-handlebars/node_modules/object.assign/node_modules/object-keys/package.json index 7e064fb..e4d2b2d 100644 --- a/node_modules/express-handlebars/node_modules/object.assign/node_modules/object-keys/package.json +++ b/node_modules/express-handlebars/node_modules/object.assign/node_modules/object-keys/package.json @@ -116,5 +116,6 @@ "tmp": "tmp/object-keys-1.0.11.tgz_1467740975903_0.8028358130250126" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz" + "_resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/object.assign/package.json b/node_modules/express-handlebars/node_modules/object.assign/package.json index 023ab45..f4f8e72 100644 --- a/node_modules/express-handlebars/node_modules/object.assign/package.json +++ b/node_modules/express-handlebars/node_modules/object.assign/package.json @@ -113,5 +113,6 @@ "tmp": "tmp/object.assign-4.0.4.tgz_1467661525697_0.9803472796920687" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz" + "_resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/express-handlebars/node_modules/promise/.jshintrc b/node_modules/express-handlebars/node_modules/promise/.jshintrc deleted file mode 100644 index 47c256f..0000000 --- a/node_modules/express-handlebars/node_modules/promise/.jshintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asi": true, - "node": true, - "strict": true -} diff --git a/node_modules/express-handlebars/node_modules/promise/.npmignore b/node_modules/express-handlebars/node_modules/promise/.npmignore deleted file mode 100644 index ad5be4a..0000000 --- a/node_modules/express-handlebars/node_modules/promise/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -components -node_modules -test -.gitignore -.travis.yml -component.json -coverage diff --git a/node_modules/express-handlebars/node_modules/promise/LICENSE b/node_modules/express-handlebars/node_modules/promise/LICENSE deleted file mode 100644 index 7a1f763..0000000 --- a/node_modules/express-handlebars/node_modules/promise/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. diff --git a/node_modules/express-handlebars/node_modules/promise/Readme.md b/node_modules/express-handlebars/node_modules/promise/Readme.md deleted file mode 100644 index 61ec052..0000000 --- a/node_modules/express-handlebars/node_modules/promise/Readme.md +++ /dev/null @@ -1,231 +0,0 @@ -<a href="https://promisesaplus.com/"><img src="https://promisesaplus.com/assets/logo-small.png" align="right" /></a> -# promise - -This is a simple implementation of Promises. It is a super set of ES6 Promises designed to have readable, performant code and to provide just the extensions that are absolutely necessary for using promises today. - -For detailed tutorials on its use, see www.promisejs.org - -**N.B.** This promise exposes internals via underscore (`_`) prefixed properties. If you use these, your code will break with each new release. - -[![travis][travis-image]][travis-url] -[![dep][dep-image]][dep-url] -[![npm][npm-image]][npm-url] -[![downloads][downloads-image]][downloads-url] - -[travis-image]: https://img.shields.io/travis/then/promise.svg?style=flat -[travis-url]: https://travis-ci.org/then/promise -[dep-image]: https://img.shields.io/gemnasium/then/promise.svg?style=flat -[dep-url]: https://gemnasium.com/then/promise -[npm-image]: https://img.shields.io/npm/v/promise.svg?style=flat -[npm-url]: https://npmjs.org/package/promise -[downloads-image]: https://img.shields.io/npm/dm/promise.svg?style=flat -[downloads-url]: https://npmjs.org/package/promise - -## Installation - -**Server:** - - $ npm install promise - -**Client:** - -You can use browserify on the client, or use the pre-compiled script that acts as a polyfill. - -```html -<script src="https://www.promisejs.org/polyfills/promise-6.1.0.js"></script> -``` - -Note that the [es5-shim](https://github.com/es-shims/es5-shim) must be loaded before this library to support browsers pre IE9. - -```html -<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/3.4.0/es5-shim.min.js"></script> -``` - -## Usage - -The example below shows how you can load the promise library (in a way that works on both client and server using node or browserify). It then demonstrates creating a promise from scratch. You simply call `new Promise(fn)`. There is a complete specification for what is returned by this method in [Promises/A+](http://promises-aplus.github.com/promises-spec/). - -```javascript -var Promise = require('promise'); - -var promise = new Promise(function (resolve, reject) { - get('http://www.google.com', function (err, res) { - if (err) reject(err); - else resolve(res); - }); -}); -``` - -If you need [domains](https://iojs.org/api/domain.html) support, you should instead use: - -```js -var Promise = require('promise/domains'); -``` - -If you are in an environment that implements `setImmediate` and don't want the optimisations provided by asap, you can use: - -```js -var Promise = require('promise/setimmediate'); -``` - -If you only want part of the features, e.g. just a pure ES6 polyfill: - -```js -var Promise = require('promise/lib/es6-extensions'); -// or require('promise/domains/es6-extensions'); -// or require('promise/setimmediate/es6-extensions'); -``` - -## Unhandled Rejections - -By default, promises silence any unhandled rejections. - -You can enable logging of unhandled ReferenceErrors and TypeErrors via: - -```js -require('promise/lib/rejection-tracking').enable(); -``` - -Due to the performance cost, you should only do this during development. - -You can enable logging of all unhandled rejections if you need to debug an exception you think is being swallowed by promises: - -```js -require('promise/lib/rejection-tracking').enable( - {allRejections: true} -); -``` - -Due to the high probability of false positives, I only recommend using this when debugging specific issues that you think may be being swallowed. For the preferred debugging method, see `Promise#done(onFulfilled, onRejected)`. - -`rejection-tracking.enable(options)` takes the following options: - - - allRejections (`boolean`) - track all exceptions, not just reference errors and type errors. Note that this has a high probability of resulting in false positives if your code loads data optimisticly - - whitelist (`Array<ErrorConstructor>`) - this defaults to `[ReferenceError, TypeError]` but you can override it with your own list of error constructors to track. - - `onUnhandled(id, error)` and `onHandled(id, error)` - you can use these to provide your own customised display for errors. Note that if possible you should indicate that the error was a false positive if `onHandled` is called. `onHandled` is only called if `onUnhandled` has already been called. - -To reduce the chance of false-positives there is a delay of up to 2 seconds before errors are logged. This means that if you attach an error handler within 2 seconds, it won't be logged as a false positive. ReferenceErrors and TypeErrors are only subject to a 100ms delay due to the higher likelihood that the error is due to programmer error. - -## API - -Before all examples, you will need: - -```js -var Promise = require('promise'); -``` - -### new Promise(resolver) - -This creates and returns a new promise. `resolver` must be a function. The `resolver` function is passed two arguments: - - 1. `resolve` should be called with a single argument. If it is called with a non-promise value then the promise is fulfilled with that value. If it is called with a promise (A) then the returned promise takes on the state of that new promise (A). - 2. `reject` should be called with a single argument. The returned promise will be rejected with that argument. - -### Static Functions - - These methods are invoked by calling `Promise.methodName`. - -#### Promise.resolve(value) - -(deprecated aliases: `Promise.from(value)`, `Promise.cast(value)`) - -Converts values and foreign promises into Promises/A+ promises. If you pass it a value then it returns a Promise for that value. If you pass it something that is close to a promise (such as a jQuery attempt at a promise) it returns a Promise that takes on the state of `value` (rejected or fulfilled). - -#### Promise.reject(value) - -Returns a rejected promise with the given value. - -#### Promise.all(array) - -Returns a promise for an array. If it is called with a single argument that `Array.isArray` then this returns a promise for a copy of that array with any promises replaced by their fulfilled values. e.g. - -```js -Promise.all([Promise.resolve('a'), 'b', Promise.resolve('c')]) - .then(function (res) { - assert(res[0] === 'a') - assert(res[1] === 'b') - assert(res[2] === 'c') - }) -``` - -#### Promise.denodeify(fn) - -_Non Standard_ - -Takes a function which accepts a node style callback and returns a new function that returns a promise instead. - -e.g. - -```javascript -var fs = require('fs') - -var read = Promise.denodeify(fs.readFile) -var write = Promise.denodeify(fs.writeFile) - -var p = read('foo.json', 'utf8') - .then(function (str) { - return write('foo.json', JSON.stringify(JSON.parse(str), null, ' '), 'utf8') - }) -``` - -#### Promise.nodeify(fn) - -_Non Standard_ - -The twin to `denodeify` is useful when you want to export an API that can be used by people who haven't learnt about the brilliance of promises yet. - -```javascript -module.exports = Promise.nodeify(awesomeAPI) -function awesomeAPI(a, b) { - return download(a, b) -} -``` - -If the last argument passed to `module.exports` is a function, then it will be treated like a node.js callback and not parsed on to the child function, otherwise the API will just return a promise. - -### Prototype Methods - -These methods are invoked on a promise instance by calling `myPromise.methodName` - -### Promise#then(onFulfilled, onRejected) - -This method follows the [Promises/A+ spec](http://promises-aplus.github.io/promises-spec/). It explains things very clearly so I recommend you read it. - -Either `onFulfilled` or `onRejected` will be called and they will not be called more than once. They will be passed a single argument and will always be called asynchronously (in the next turn of the event loop). - -If the promise is fulfilled then `onFulfilled` is called. If the promise is rejected then `onRejected` is called. - -The call to `.then` also returns a promise. If the handler that is called returns a promise, the promise returned by `.then` takes on the state of that returned promise. If the handler that is called returns a value that is not a promise, the promise returned by `.then` will be fulfilled with that value. If the handler that is called throws an exception then the promise returned by `.then` is rejected with that exception. - -#### Promise#catch(onRejected) - -Sugar for `Promise#then(null, onRejected)`, to mirror `catch` in synchronous code. - -#### Promise#done(onFulfilled, onRejected) - -_Non Standard_ - -The same semantics as `.then` except that it does not return a promise and any exceptions are re-thrown so that they can be logged (crashing the application in non-browser environments) - -#### Promise#nodeify(callback) - -_Non Standard_ - -If `callback` is `null` or `undefined` it just returns `this`. If `callback` is a function it is called with rejection reason as the first argument and result as the second argument (as per the node.js convention). - -This lets you write API functions that look like: - -```javascript -function awesomeAPI(foo, bar, callback) { - return internalAPI(foo, bar) - .then(parseResult) - .then(null, retryErrors) - .nodeify(callback) -} -``` - -People who use typical node.js style callbacks will be able to just pass a callback and get the expected behavior. The enlightened people can not pass a callback and will get awesome promises. - -## License - - MIT diff --git a/node_modules/express-handlebars/node_modules/promise/build.js b/node_modules/express-handlebars/node_modules/promise/build.js deleted file mode 100644 index 1e028e9..0000000 --- a/node_modules/express-handlebars/node_modules/promise/build.js +++ /dev/null @@ -1,69 +0,0 @@ -'use strict'; - -var fs = require('fs'); -var rimraf = require('rimraf'); -var acorn = require('acorn'); -var walk = require('acorn/dist/walk'); - -var ids = []; -var names = {}; - -function getIdFor(name) { - if (name in names) return names[name]; - var id; - do { - id = '_' + Math.floor(Math.random() * 100); - } while (ids.indexOf(id) !== -1) - ids.push(id); - names[name] = id; - return id; -} - -function fixup(src) { - var ast = acorn.parse(src); - src = src.split(''); - walk.simple(ast, { - MemberExpression: function (node) { - if (node.computed) return; - if (node.property.type !== 'Identifier') return; - if (node.property.name[0] !== '_') return; - replace(node.property, getIdFor(node.property.name)); - } - }); - function source(node) { - return src.slice(node.start, node.end).join(''); - } - function replace(node, str) { - for (var i = node.start; i < node.end; i++) { - src[i] = ''; - } - src[node.start] = str; - } - return src.join(''); -} -rimraf.sync(__dirname + '/lib/'); -fs.mkdirSync(__dirname + '/lib/'); -fs.readdirSync(__dirname + '/src').forEach(function (filename) { - var src = fs.readFileSync(__dirname + '/src/' + filename, 'utf8'); - var out = fixup(src); - fs.writeFileSync(__dirname + '/lib/' + filename, out); -}); - -rimraf.sync(__dirname + '/domains/'); -fs.mkdirSync(__dirname + '/domains/'); -fs.readdirSync(__dirname + '/src').forEach(function (filename) { - var src = fs.readFileSync(__dirname + '/src/' + filename, 'utf8'); - var out = fixup(src); - out = out.replace(/require\(\'asap\/raw\'\)/g, "require('asap')"); - fs.writeFileSync(__dirname + '/domains/' + filename, out); -}); - -rimraf.sync(__dirname + '/setimmediate/'); -fs.mkdirSync(__dirname + '/setimmediate/'); -fs.readdirSync(__dirname + '/src').forEach(function (filename) { - var src = fs.readFileSync(__dirname + '/src/' + filename, 'utf8'); - var out = fixup(src); - out = out.replace(/var asap \= require\(\'([a-z\/]+)\'\);/g, ''); - out = out.replace(/asap/g, "setImmediate"); - fs.writeFileSync(__dirname + '/setimmediate/' + filename, out); -}); diff --git a/node_modules/express-handlebars/node_modules/promise/core.js b/node_modules/express-handlebars/node_modules/promise/core.js deleted file mode 100644 index 5f332a2..0000000 --- a/node_modules/express-handlebars/node_modules/promise/core.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -module.exports = require('./lib/core.js'); - -console.error('require("promise/core") is deprecated, use require("promise/lib/core") instead.'); diff --git a/node_modules/express-handlebars/node_modules/promise/domains/core.js b/node_modules/express-handlebars/node_modules/promise/domains/core.js deleted file mode 100644 index bcf1168..0000000 --- a/node_modules/express-handlebars/node_modules/promise/domains/core.js +++ /dev/null @@ -1,213 +0,0 @@ -'use strict'; - -var asap = require('asap'); - -function noop() {} - -// States: -// -// 0 - pending -// 1 - fulfilled with _value -// 2 - rejected with _value -// 3 - adopted the state of another promise, _value -// -// once the state is no longer pending (0) it is immutable - -// All `_` prefixed properties will be reduced to `_{random number}` -// at build time to obfuscate them and discourage their use. -// We don't use symbols or Object.defineProperty to fully hide them -// because the performance isn't good enough. - - -// to avoid using try/catch inside critical functions, we -// extract them to here. -var LAST_ERROR = null; -var IS_ERROR = {}; -function getThen(obj) { - try { - return obj.then; - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} - -function tryCallOne(fn, a) { - try { - return fn(a); - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} -function tryCallTwo(fn, a, b) { - try { - fn(a, b); - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} - -module.exports = Promise; - -function Promise(fn) { - if (typeof this !== 'object') { - throw new TypeError('Promises must be constructed via new'); - } - if (typeof fn !== 'function') { - throw new TypeError('not a function'); - } - this._45 = 0; - this._81 = 0; - this._65 = null; - this._54 = null; - if (fn === noop) return; - doResolve(fn, this); -} -Promise._10 = null; -Promise._97 = null; -Promise._61 = noop; - -Promise.prototype.then = function(onFulfilled, onRejected) { - if (this.constructor !== Promise) { - return safeThen(this, onFulfilled, onRejected); - } - var res = new Promise(noop); - handle(this, new Handler(onFulfilled, onRejected, res)); - return res; -}; - -function safeThen(self, onFulfilled, onRejected) { - return new self.constructor(function (resolve, reject) { - var res = new Promise(noop); - res.then(resolve, reject); - handle(self, new Handler(onFulfilled, onRejected, res)); - }); -}; -function handle(self, deferred) { - while (self._81 === 3) { - self = self._65; - } - if (Promise._10) { - Promise._10(self); - } - if (self._81 === 0) { - if (self._45 === 0) { - self._45 = 1; - self._54 = deferred; - return; - } - if (self._45 === 1) { - self._45 = 2; - self._54 = [self._54, deferred]; - return; - } - self._54.push(deferred); - return; - } - handleResolved(self, deferred); -} - -function handleResolved(self, deferred) { - asap(function() { - var cb = self._81 === 1 ? deferred.onFulfilled : deferred.onRejected; - if (cb === null) { - if (self._81 === 1) { - resolve(deferred.promise, self._65); - } else { - reject(deferred.promise, self._65); - } - return; - } - var ret = tryCallOne(cb, self._65); - if (ret === IS_ERROR) { - reject(deferred.promise, LAST_ERROR); - } else { - resolve(deferred.promise, ret); - } - }); -} -function resolve(self, newValue) { - // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure - if (newValue === self) { - return reject( - self, - new TypeError('A promise cannot be resolved with itself.') - ); - } - if ( - newValue && - (typeof newValue === 'object' || typeof newValue === 'function') - ) { - var then = getThen(newValue); - if (then === IS_ERROR) { - return reject(self, LAST_ERROR); - } - if ( - then === self.then && - newValue instanceof Promise - ) { - self._81 = 3; - self._65 = newValue; - finale(self); - return; - } else if (typeof then === 'function') { - doResolve(then.bind(newValue), self); - return; - } - } - self._81 = 1; - self._65 = newValue; - finale(self); -} - -function reject(self, newValue) { - self._81 = 2; - self._65 = newValue; - if (Promise._97) { - Promise._97(self, newValue); - } - finale(self); -} -function finale(self) { - if (self._45 === 1) { - handle(self, self._54); - self._54 = null; - } - if (self._45 === 2) { - for (var i = 0; i < self._54.length; i++) { - handle(self, self._54[i]); - } - self._54 = null; - } -} - -function Handler(onFulfilled, onRejected, promise){ - this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; - this.onRejected = typeof onRejected === 'function' ? onRejected : null; - this.promise = promise; -} - -/** - * Take a potentially misbehaving resolver function and make sure - * onFulfilled and onRejected are only called once. - * - * Makes no guarantees about asynchrony. - */ -function doResolve(fn, promise) { - var done = false; - var res = tryCallTwo(fn, function (value) { - if (done) return; - done = true; - resolve(promise, value); - }, function (reason) { - if (done) return; - done = true; - reject(promise, reason); - }) - if (!done && res === IS_ERROR) { - done = true; - reject(promise, LAST_ERROR); - } -} diff --git a/node_modules/express-handlebars/node_modules/promise/domains/done.js b/node_modules/express-handlebars/node_modules/promise/domains/done.js deleted file mode 100644 index f879317..0000000 --- a/node_modules/express-handlebars/node_modules/promise/domains/done.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.prototype.done = function (onFulfilled, onRejected) { - var self = arguments.length ? this.then.apply(this, arguments) : this; - self.then(null, function (err) { - setTimeout(function () { - throw err; - }, 0); - }); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/domains/es6-extensions.js b/node_modules/express-handlebars/node_modules/promise/domains/es6-extensions.js deleted file mode 100644 index 1ab6eae..0000000 --- a/node_modules/express-handlebars/node_modules/promise/domains/es6-extensions.js +++ /dev/null @@ -1,107 +0,0 @@ -'use strict'; - -//This file contains the ES6 extensions to the core Promises/A+ API - -var Promise = require('./core.js'); - -module.exports = Promise; - -/* Static Functions */ - -var TRUE = valuePromise(true); -var FALSE = valuePromise(false); -var NULL = valuePromise(null); -var UNDEFINED = valuePromise(undefined); -var ZERO = valuePromise(0); -var EMPTYSTRING = valuePromise(''); - -function valuePromise(value) { - var p = new Promise(Promise._61); - p._81 = 1; - p._65 = value; - return p; -} -Promise.resolve = function (value) { - if (value instanceof Promise) return value; - - if (value === null) return NULL; - if (value === undefined) return UNDEFINED; - if (value === true) return TRUE; - if (value === false) return FALSE; - if (value === 0) return ZERO; - if (value === '') return EMPTYSTRING; - - if (typeof value === 'object' || typeof value === 'function') { - try { - var then = value.then; - if (typeof then === 'function') { - return new Promise(then.bind(value)); - } - } catch (ex) { - return new Promise(function (resolve, reject) { - reject(ex); - }); - } - } - return valuePromise(value); -}; - -Promise.all = function (arr) { - var args = Array.prototype.slice.call(arr); - - return new Promise(function (resolve, reject) { - if (args.length === 0) return resolve([]); - var remaining = args.length; - function res(i, val) { - if (val && (typeof val === 'object' || typeof val === 'function')) { - if (val instanceof Promise && val.then === Promise.prototype.then) { - while (val._81 === 3) { - val = val._65; - } - if (val._81 === 1) return res(i, val._65); - if (val._81 === 2) reject(val._65); - val.then(function (val) { - res(i, val); - }, reject); - return; - } else { - var then = val.then; - if (typeof then === 'function') { - var p = new Promise(then.bind(val)); - p.then(function (val) { - res(i, val); - }, reject); - return; - } - } - } - args[i] = val; - if (--remaining === 0) { - resolve(args); - } - } - for (var i = 0; i < args.length; i++) { - res(i, args[i]); - } - }); -}; - -Promise.reject = function (value) { - return new Promise(function (resolve, reject) { - reject(value); - }); -}; - -Promise.race = function (values) { - return new Promise(function (resolve, reject) { - values.forEach(function(value){ - Promise.resolve(value).then(resolve, reject); - }); - }); -}; - -/* Prototype Methods */ - -Promise.prototype['catch'] = function (onRejected) { - return this.then(null, onRejected); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/domains/finally.js b/node_modules/express-handlebars/node_modules/promise/domains/finally.js deleted file mode 100644 index f5ee0b9..0000000 --- a/node_modules/express-handlebars/node_modules/promise/domains/finally.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.prototype['finally'] = function (f) { - return this.then(function (value) { - return Promise.resolve(f()).then(function () { - return value; - }); - }, function (err) { - return Promise.resolve(f()).then(function () { - throw err; - }); - }); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/domains/index.js b/node_modules/express-handlebars/node_modules/promise/domains/index.js deleted file mode 100644 index 6e674f3..0000000 --- a/node_modules/express-handlebars/node_modules/promise/domains/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -module.exports = require('./core.js'); -require('./done.js'); -require('./finally.js'); -require('./es6-extensions.js'); -require('./node-extensions.js'); -require('./synchronous.js'); diff --git a/node_modules/express-handlebars/node_modules/promise/domains/node-extensions.js b/node_modules/express-handlebars/node_modules/promise/domains/node-extensions.js deleted file mode 100644 index 890ae45..0000000 --- a/node_modules/express-handlebars/node_modules/promise/domains/node-extensions.js +++ /dev/null @@ -1,130 +0,0 @@ -'use strict'; - -// This file contains then/promise specific extensions that are only useful -// for node.js interop - -var Promise = require('./core.js'); -var asap = require('asap'); - -module.exports = Promise; - -/* Static Functions */ - -Promise.denodeify = function (fn, argumentCount) { - if ( - typeof argumentCount === 'number' && argumentCount !== Infinity - ) { - return denodeifyWithCount(fn, argumentCount); - } else { - return denodeifyWithoutCount(fn); - } -} - -var callbackFn = ( - 'function (err, res) {' + - 'if (err) { rj(err); } else { rs(res); }' + - '}' -); -function denodeifyWithCount(fn, argumentCount) { - var args = []; - for (var i = 0; i < argumentCount; i++) { - args.push('a' + i); - } - var body = [ - 'return function (' + args.join(',') + ') {', - 'var self = this;', - 'return new Promise(function (rs, rj) {', - 'var res = fn.call(', - ['self'].concat(args).concat([callbackFn]).join(','), - ');', - 'if (res &&', - '(typeof res === "object" || typeof res === "function") &&', - 'typeof res.then === "function"', - ') {rs(res);}', - '});', - '};' - ].join(''); - return Function(['Promise', 'fn'], body)(Promise, fn); -} -function denodeifyWithoutCount(fn) { - var fnLength = Math.max(fn.length - 1, 3); - var args = []; - for (var i = 0; i < fnLength; i++) { - args.push('a' + i); - } - var body = [ - 'return function (' + args.join(',') + ') {', - 'var self = this;', - 'var args;', - 'var argLength = arguments.length;', - 'if (arguments.length > ' + fnLength + ') {', - 'args = new Array(arguments.length + 1);', - 'for (var i = 0; i < arguments.length; i++) {', - 'args[i] = arguments[i];', - '}', - '}', - 'return new Promise(function (rs, rj) {', - 'var cb = ' + callbackFn + ';', - 'var res;', - 'switch (argLength) {', - args.concat(['extra']).map(function (_, index) { - return ( - 'case ' + (index) + ':' + - 'res = fn.call(' + ['self'].concat(args.slice(0, index)).concat('cb').join(',') + ');' + - 'break;' - ); - }).join(''), - 'default:', - 'args[argLength] = cb;', - 'res = fn.apply(self, args);', - '}', - - 'if (res &&', - '(typeof res === "object" || typeof res === "function") &&', - 'typeof res.then === "function"', - ') {rs(res);}', - '});', - '};' - ].join(''); - - return Function( - ['Promise', 'fn'], - body - )(Promise, fn); -} - -Promise.nodeify = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - var callback = - typeof args[args.length - 1] === 'function' ? args.pop() : null; - var ctx = this; - try { - return fn.apply(this, arguments).nodeify(callback, ctx); - } catch (ex) { - if (callback === null || typeof callback == 'undefined') { - return new Promise(function (resolve, reject) { - reject(ex); - }); - } else { - asap(function () { - callback.call(ctx, ex); - }) - } - } - } -} - -Promise.prototype.nodeify = function (callback, ctx) { - if (typeof callback != 'function') return this; - - this.then(function (value) { - asap(function () { - callback.call(ctx, null, value); - }); - }, function (err) { - asap(function () { - callback.call(ctx, err); - }); - }); -} diff --git a/node_modules/express-handlebars/node_modules/promise/domains/rejection-tracking.js b/node_modules/express-handlebars/node_modules/promise/domains/rejection-tracking.js deleted file mode 100644 index 088a0de..0000000 --- a/node_modules/express-handlebars/node_modules/promise/domains/rejection-tracking.js +++ /dev/null @@ -1,113 +0,0 @@ -'use strict'; - -var Promise = require('./core'); - -var DEFAULT_WHITELIST = [ - ReferenceError, - TypeError, - RangeError -]; - -var enabled = false; -exports.disable = disable; -function disable() { - enabled = false; - Promise._10 = null; - Promise._97 = null; -} - -exports.enable = enable; -function enable(options) { - options = options || {}; - if (enabled) disable(); - enabled = true; - var id = 0; - var displayId = 0; - var rejections = {}; - Promise._10 = function (promise) { - if ( - promise._81 === 2 && // IS REJECTED - rejections[promise._72] - ) { - if (rejections[promise._72].logged) { - onHandled(promise._72); - } else { - clearTimeout(rejections[promise._72].timeout); - } - delete rejections[promise._72]; - } - }; - Promise._97 = function (promise, err) { - if (promise._45 === 0) { // not yet handled - promise._72 = id++; - rejections[promise._72] = { - displayId: null, - error: err, - timeout: setTimeout( - onUnhandled.bind(null, promise._72), - // For reference errors and type errors, this almost always - // means the programmer made a mistake, so log them after just - // 100ms - // otherwise, wait 2 seconds to see if they get handled - matchWhitelist(err, DEFAULT_WHITELIST) - ? 100 - : 2000 - ), - logged: false - }; - } - }; - function onUnhandled(id) { - if ( - options.allRejections || - matchWhitelist( - rejections[id].error, - options.whitelist || DEFAULT_WHITELIST - ) - ) { - rejections[id].displayId = displayId++; - if (options.onUnhandled) { - rejections[id].logged = true; - options.onUnhandled( - rejections[id].displayId, - rejections[id].error - ); - } else { - rejections[id].logged = true; - logError( - rejections[id].displayId, - rejections[id].error - ); - } - } - } - function onHandled(id) { - if (rejections[id].logged) { - if (options.onHandled) { - options.onHandled(rejections[id].displayId, rejections[id].error); - } else if (!rejections[id].onUnhandled) { - console.warn( - 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):' - ); - console.warn( - ' This means you can ignore any previous messages of the form "Possible Unhandled Promise Rejection" with id ' + - rejections[id].displayId + '.' - ); - } - } - } -} - -function logError(id, error) { - console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):'); - var errStr = (error && (error.stack || error)) + ''; - errStr.split('\n').forEach(function (line) { - console.warn(' ' + line); - }); -} - -function matchWhitelist(error, list) { - return list.some(function (cls) { - return error instanceof cls; - }); -}
\ No newline at end of file diff --git a/node_modules/express-handlebars/node_modules/promise/domains/synchronous.js b/node_modules/express-handlebars/node_modules/promise/domains/synchronous.js deleted file mode 100644 index 2f97451..0000000 --- a/node_modules/express-handlebars/node_modules/promise/domains/synchronous.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.enableSynchronous = function () { - Promise.prototype.isPending = function() { - return this.getState() == 0; - }; - - Promise.prototype.isFulfilled = function() { - return this.getState() == 1; - }; - - Promise.prototype.isRejected = function() { - return this.getState() == 2; - }; - - Promise.prototype.getValue = function () { - if (this._81 === 3) { - return this._65.getValue(); - } - - if (!this.isFulfilled()) { - throw new Error('Cannot get a value of an unfulfilled promise.'); - } - - return this._65; - }; - - Promise.prototype.getReason = function () { - if (this._81 === 3) { - return this._65.getReason(); - } - - if (!this.isRejected()) { - throw new Error('Cannot get a rejection reason of a non-rejected promise.'); - } - - return this._65; - }; - - Promise.prototype.getState = function () { - if (this._81 === 3) { - return this._65.getState(); - } - if (this._81 === -1 || this._81 === -2) { - return 0; - } - - return this._81; - }; -}; - -Promise.disableSynchronous = function() { - Promise.prototype.isPending = undefined; - Promise.prototype.isFulfilled = undefined; - Promise.prototype.isRejected = undefined; - Promise.prototype.getValue = undefined; - Promise.prototype.getReason = undefined; - Promise.prototype.getState = undefined; -}; diff --git a/node_modules/express-handlebars/node_modules/promise/index.js b/node_modules/express-handlebars/node_modules/promise/index.js deleted file mode 100644 index 1c38e46..0000000 --- a/node_modules/express-handlebars/node_modules/promise/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./lib') diff --git a/node_modules/express-handlebars/node_modules/promise/lib/core.js b/node_modules/express-handlebars/node_modules/promise/lib/core.js deleted file mode 100644 index 207fb81..0000000 --- a/node_modules/express-handlebars/node_modules/promise/lib/core.js +++ /dev/null @@ -1,213 +0,0 @@ -'use strict'; - -var asap = require('asap/raw'); - -function noop() {} - -// States: -// -// 0 - pending -// 1 - fulfilled with _value -// 2 - rejected with _value -// 3 - adopted the state of another promise, _value -// -// once the state is no longer pending (0) it is immutable - -// All `_` prefixed properties will be reduced to `_{random number}` -// at build time to obfuscate them and discourage their use. -// We don't use symbols or Object.defineProperty to fully hide them -// because the performance isn't good enough. - - -// to avoid using try/catch inside critical functions, we -// extract them to here. -var LAST_ERROR = null; -var IS_ERROR = {}; -function getThen(obj) { - try { - return obj.then; - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} - -function tryCallOne(fn, a) { - try { - return fn(a); - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} -function tryCallTwo(fn, a, b) { - try { - fn(a, b); - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} - -module.exports = Promise; - -function Promise(fn) { - if (typeof this !== 'object') { - throw new TypeError('Promises must be constructed via new'); - } - if (typeof fn !== 'function') { - throw new TypeError('not a function'); - } - this._45 = 0; - this._81 = 0; - this._65 = null; - this._54 = null; - if (fn === noop) return; - doResolve(fn, this); -} -Promise._10 = null; -Promise._97 = null; -Promise._61 = noop; - -Promise.prototype.then = function(onFulfilled, onRejected) { - if (this.constructor !== Promise) { - return safeThen(this, onFulfilled, onRejected); - } - var res = new Promise(noop); - handle(this, new Handler(onFulfilled, onRejected, res)); - return res; -}; - -function safeThen(self, onFulfilled, onRejected) { - return new self.constructor(function (resolve, reject) { - var res = new Promise(noop); - res.then(resolve, reject); - handle(self, new Handler(onFulfilled, onRejected, res)); - }); -}; -function handle(self, deferred) { - while (self._81 === 3) { - self = self._65; - } - if (Promise._10) { - Promise._10(self); - } - if (self._81 === 0) { - if (self._45 === 0) { - self._45 = 1; - self._54 = deferred; - return; - } - if (self._45 === 1) { - self._45 = 2; - self._54 = [self._54, deferred]; - return; - } - self._54.push(deferred); - return; - } - handleResolved(self, deferred); -} - -function handleResolved(self, deferred) { - asap(function() { - var cb = self._81 === 1 ? deferred.onFulfilled : deferred.onRejected; - if (cb === null) { - if (self._81 === 1) { - resolve(deferred.promise, self._65); - } else { - reject(deferred.promise, self._65); - } - return; - } - var ret = tryCallOne(cb, self._65); - if (ret === IS_ERROR) { - reject(deferred.promise, LAST_ERROR); - } else { - resolve(deferred.promise, ret); - } - }); -} -function resolve(self, newValue) { - // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure - if (newValue === self) { - return reject( - self, - new TypeError('A promise cannot be resolved with itself.') - ); - } - if ( - newValue && - (typeof newValue === 'object' || typeof newValue === 'function') - ) { - var then = getThen(newValue); - if (then === IS_ERROR) { - return reject(self, LAST_ERROR); - } - if ( - then === self.then && - newValue instanceof Promise - ) { - self._81 = 3; - self._65 = newValue; - finale(self); - return; - } else if (typeof then === 'function') { - doResolve(then.bind(newValue), self); - return; - } - } - self._81 = 1; - self._65 = newValue; - finale(self); -} - -function reject(self, newValue) { - self._81 = 2; - self._65 = newValue; - if (Promise._97) { - Promise._97(self, newValue); - } - finale(self); -} -function finale(self) { - if (self._45 === 1) { - handle(self, self._54); - self._54 = null; - } - if (self._45 === 2) { - for (var i = 0; i < self._54.length; i++) { - handle(self, self._54[i]); - } - self._54 = null; - } -} - -function Handler(onFulfilled, onRejected, promise){ - this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; - this.onRejected = typeof onRejected === 'function' ? onRejected : null; - this.promise = promise; -} - -/** - * Take a potentially misbehaving resolver function and make sure - * onFulfilled and onRejected are only called once. - * - * Makes no guarantees about asynchrony. - */ -function doResolve(fn, promise) { - var done = false; - var res = tryCallTwo(fn, function (value) { - if (done) return; - done = true; - resolve(promise, value); - }, function (reason) { - if (done) return; - done = true; - reject(promise, reason); - }) - if (!done && res === IS_ERROR) { - done = true; - reject(promise, LAST_ERROR); - } -} diff --git a/node_modules/express-handlebars/node_modules/promise/lib/done.js b/node_modules/express-handlebars/node_modules/promise/lib/done.js deleted file mode 100644 index f879317..0000000 --- a/node_modules/express-handlebars/node_modules/promise/lib/done.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.prototype.done = function (onFulfilled, onRejected) { - var self = arguments.length ? this.then.apply(this, arguments) : this; - self.then(null, function (err) { - setTimeout(function () { - throw err; - }, 0); - }); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/lib/es6-extensions.js b/node_modules/express-handlebars/node_modules/promise/lib/es6-extensions.js deleted file mode 100644 index 1ab6eae..0000000 --- a/node_modules/express-handlebars/node_modules/promise/lib/es6-extensions.js +++ /dev/null @@ -1,107 +0,0 @@ -'use strict'; - -//This file contains the ES6 extensions to the core Promises/A+ API - -var Promise = require('./core.js'); - -module.exports = Promise; - -/* Static Functions */ - -var TRUE = valuePromise(true); -var FALSE = valuePromise(false); -var NULL = valuePromise(null); -var UNDEFINED = valuePromise(undefined); -var ZERO = valuePromise(0); -var EMPTYSTRING = valuePromise(''); - -function valuePromise(value) { - var p = new Promise(Promise._61); - p._81 = 1; - p._65 = value; - return p; -} -Promise.resolve = function (value) { - if (value instanceof Promise) return value; - - if (value === null) return NULL; - if (value === undefined) return UNDEFINED; - if (value === true) return TRUE; - if (value === false) return FALSE; - if (value === 0) return ZERO; - if (value === '') return EMPTYSTRING; - - if (typeof value === 'object' || typeof value === 'function') { - try { - var then = value.then; - if (typeof then === 'function') { - return new Promise(then.bind(value)); - } - } catch (ex) { - return new Promise(function (resolve, reject) { - reject(ex); - }); - } - } - return valuePromise(value); -}; - -Promise.all = function (arr) { - var args = Array.prototype.slice.call(arr); - - return new Promise(function (resolve, reject) { - if (args.length === 0) return resolve([]); - var remaining = args.length; - function res(i, val) { - if (val && (typeof val === 'object' || typeof val === 'function')) { - if (val instanceof Promise && val.then === Promise.prototype.then) { - while (val._81 === 3) { - val = val._65; - } - if (val._81 === 1) return res(i, val._65); - if (val._81 === 2) reject(val._65); - val.then(function (val) { - res(i, val); - }, reject); - return; - } else { - var then = val.then; - if (typeof then === 'function') { - var p = new Promise(then.bind(val)); - p.then(function (val) { - res(i, val); - }, reject); - return; - } - } - } - args[i] = val; - if (--remaining === 0) { - resolve(args); - } - } - for (var i = 0; i < args.length; i++) { - res(i, args[i]); - } - }); -}; - -Promise.reject = function (value) { - return new Promise(function (resolve, reject) { - reject(value); - }); -}; - -Promise.race = function (values) { - return new Promise(function (resolve, reject) { - values.forEach(function(value){ - Promise.resolve(value).then(resolve, reject); - }); - }); -}; - -/* Prototype Methods */ - -Promise.prototype['catch'] = function (onRejected) { - return this.then(null, onRejected); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/lib/finally.js b/node_modules/express-handlebars/node_modules/promise/lib/finally.js deleted file mode 100644 index f5ee0b9..0000000 --- a/node_modules/express-handlebars/node_modules/promise/lib/finally.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.prototype['finally'] = function (f) { - return this.then(function (value) { - return Promise.resolve(f()).then(function () { - return value; - }); - }, function (err) { - return Promise.resolve(f()).then(function () { - throw err; - }); - }); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/lib/index.js b/node_modules/express-handlebars/node_modules/promise/lib/index.js deleted file mode 100644 index 6e674f3..0000000 --- a/node_modules/express-handlebars/node_modules/promise/lib/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -module.exports = require('./core.js'); -require('./done.js'); -require('./finally.js'); -require('./es6-extensions.js'); -require('./node-extensions.js'); -require('./synchronous.js'); diff --git a/node_modules/express-handlebars/node_modules/promise/lib/node-extensions.js b/node_modules/express-handlebars/node_modules/promise/lib/node-extensions.js deleted file mode 100644 index 890ae45..0000000 --- a/node_modules/express-handlebars/node_modules/promise/lib/node-extensions.js +++ /dev/null @@ -1,130 +0,0 @@ -'use strict'; - -// This file contains then/promise specific extensions that are only useful -// for node.js interop - -var Promise = require('./core.js'); -var asap = require('asap'); - -module.exports = Promise; - -/* Static Functions */ - -Promise.denodeify = function (fn, argumentCount) { - if ( - typeof argumentCount === 'number' && argumentCount !== Infinity - ) { - return denodeifyWithCount(fn, argumentCount); - } else { - return denodeifyWithoutCount(fn); - } -} - -var callbackFn = ( - 'function (err, res) {' + - 'if (err) { rj(err); } else { rs(res); }' + - '}' -); -function denodeifyWithCount(fn, argumentCount) { - var args = []; - for (var i = 0; i < argumentCount; i++) { - args.push('a' + i); - } - var body = [ - 'return function (' + args.join(',') + ') {', - 'var self = this;', - 'return new Promise(function (rs, rj) {', - 'var res = fn.call(', - ['self'].concat(args).concat([callbackFn]).join(','), - ');', - 'if (res &&', - '(typeof res === "object" || typeof res === "function") &&', - 'typeof res.then === "function"', - ') {rs(res);}', - '});', - '};' - ].join(''); - return Function(['Promise', 'fn'], body)(Promise, fn); -} -function denodeifyWithoutCount(fn) { - var fnLength = Math.max(fn.length - 1, 3); - var args = []; - for (var i = 0; i < fnLength; i++) { - args.push('a' + i); - } - var body = [ - 'return function (' + args.join(',') + ') {', - 'var self = this;', - 'var args;', - 'var argLength = arguments.length;', - 'if (arguments.length > ' + fnLength + ') {', - 'args = new Array(arguments.length + 1);', - 'for (var i = 0; i < arguments.length; i++) {', - 'args[i] = arguments[i];', - '}', - '}', - 'return new Promise(function (rs, rj) {', - 'var cb = ' + callbackFn + ';', - 'var res;', - 'switch (argLength) {', - args.concat(['extra']).map(function (_, index) { - return ( - 'case ' + (index) + ':' + - 'res = fn.call(' + ['self'].concat(args.slice(0, index)).concat('cb').join(',') + ');' + - 'break;' - ); - }).join(''), - 'default:', - 'args[argLength] = cb;', - 'res = fn.apply(self, args);', - '}', - - 'if (res &&', - '(typeof res === "object" || typeof res === "function") &&', - 'typeof res.then === "function"', - ') {rs(res);}', - '});', - '};' - ].join(''); - - return Function( - ['Promise', 'fn'], - body - )(Promise, fn); -} - -Promise.nodeify = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - var callback = - typeof args[args.length - 1] === 'function' ? args.pop() : null; - var ctx = this; - try { - return fn.apply(this, arguments).nodeify(callback, ctx); - } catch (ex) { - if (callback === null || typeof callback == 'undefined') { - return new Promise(function (resolve, reject) { - reject(ex); - }); - } else { - asap(function () { - callback.call(ctx, ex); - }) - } - } - } -} - -Promise.prototype.nodeify = function (callback, ctx) { - if (typeof callback != 'function') return this; - - this.then(function (value) { - asap(function () { - callback.call(ctx, null, value); - }); - }, function (err) { - asap(function () { - callback.call(ctx, err); - }); - }); -} diff --git a/node_modules/express-handlebars/node_modules/promise/lib/rejection-tracking.js b/node_modules/express-handlebars/node_modules/promise/lib/rejection-tracking.js deleted file mode 100644 index 088a0de..0000000 --- a/node_modules/express-handlebars/node_modules/promise/lib/rejection-tracking.js +++ /dev/null @@ -1,113 +0,0 @@ -'use strict'; - -var Promise = require('./core'); - -var DEFAULT_WHITELIST = [ - ReferenceError, - TypeError, - RangeError -]; - -var enabled = false; -exports.disable = disable; -function disable() { - enabled = false; - Promise._10 = null; - Promise._97 = null; -} - -exports.enable = enable; -function enable(options) { - options = options || {}; - if (enabled) disable(); - enabled = true; - var id = 0; - var displayId = 0; - var rejections = {}; - Promise._10 = function (promise) { - if ( - promise._81 === 2 && // IS REJECTED - rejections[promise._72] - ) { - if (rejections[promise._72].logged) { - onHandled(promise._72); - } else { - clearTimeout(rejections[promise._72].timeout); - } - delete rejections[promise._72]; - } - }; - Promise._97 = function (promise, err) { - if (promise._45 === 0) { // not yet handled - promise._72 = id++; - rejections[promise._72] = { - displayId: null, - error: err, - timeout: setTimeout( - onUnhandled.bind(null, promise._72), - // For reference errors and type errors, this almost always - // means the programmer made a mistake, so log them after just - // 100ms - // otherwise, wait 2 seconds to see if they get handled - matchWhitelist(err, DEFAULT_WHITELIST) - ? 100 - : 2000 - ), - logged: false - }; - } - }; - function onUnhandled(id) { - if ( - options.allRejections || - matchWhitelist( - rejections[id].error, - options.whitelist || DEFAULT_WHITELIST - ) - ) { - rejections[id].displayId = displayId++; - if (options.onUnhandled) { - rejections[id].logged = true; - options.onUnhandled( - rejections[id].displayId, - rejections[id].error - ); - } else { - rejections[id].logged = true; - logError( - rejections[id].displayId, - rejections[id].error - ); - } - } - } - function onHandled(id) { - if (rejections[id].logged) { - if (options.onHandled) { - options.onHandled(rejections[id].displayId, rejections[id].error); - } else if (!rejections[id].onUnhandled) { - console.warn( - 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):' - ); - console.warn( - ' This means you can ignore any previous messages of the form "Possible Unhandled Promise Rejection" with id ' + - rejections[id].displayId + '.' - ); - } - } - } -} - -function logError(id, error) { - console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):'); - var errStr = (error && (error.stack || error)) + ''; - errStr.split('\n').forEach(function (line) { - console.warn(' ' + line); - }); -} - -function matchWhitelist(error, list) { - return list.some(function (cls) { - return error instanceof cls; - }); -}
\ No newline at end of file diff --git a/node_modules/express-handlebars/node_modules/promise/lib/synchronous.js b/node_modules/express-handlebars/node_modules/promise/lib/synchronous.js deleted file mode 100644 index 2f97451..0000000 --- a/node_modules/express-handlebars/node_modules/promise/lib/synchronous.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.enableSynchronous = function () { - Promise.prototype.isPending = function() { - return this.getState() == 0; - }; - - Promise.prototype.isFulfilled = function() { - return this.getState() == 1; - }; - - Promise.prototype.isRejected = function() { - return this.getState() == 2; - }; - - Promise.prototype.getValue = function () { - if (this._81 === 3) { - return this._65.getValue(); - } - - if (!this.isFulfilled()) { - throw new Error('Cannot get a value of an unfulfilled promise.'); - } - - return this._65; - }; - - Promise.prototype.getReason = function () { - if (this._81 === 3) { - return this._65.getReason(); - } - - if (!this.isRejected()) { - throw new Error('Cannot get a rejection reason of a non-rejected promise.'); - } - - return this._65; - }; - - Promise.prototype.getState = function () { - if (this._81 === 3) { - return this._65.getState(); - } - if (this._81 === -1 || this._81 === -2) { - return 0; - } - - return this._81; - }; -}; - -Promise.disableSynchronous = function() { - Promise.prototype.isPending = undefined; - Promise.prototype.isFulfilled = undefined; - Promise.prototype.isRejected = undefined; - Promise.prototype.getValue = undefined; - Promise.prototype.getReason = undefined; - Promise.prototype.getState = undefined; -}; diff --git a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/CHANGES.md b/node_modules/express-handlebars/node_modules/promise/node_modules/asap/CHANGES.md deleted file mode 100644 index e9ffa46..0000000 --- a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/CHANGES.md +++ /dev/null @@ -1,64 +0,0 @@ - -## 2.0.3 - -Version 2.0.3 fixes a bug when adjusting the capacity of the task queue. - -## 2.0.1-2.02 - -Version 2.0.1 fixes a bug in the way redirects were expressed that affected the -function of Browserify, but which Mr would tolerate. - -## 2.0.0 - -Version 2 of ASAP is a full rewrite with a few salient changes. -First, the ASAP source is CommonJS only and designed with [Browserify][] and -[Browserify-compatible][Mr] module loaders in mind. - -[Browserify]: https://github.com/substack/node-browserify -[Mr]: https://github.com/montagejs/mr - -The new version has been refactored in two dimensions. -Support for Node.js and browsers have been separated, using Browserify -redirects and ASAP has been divided into two modules. -The "raw" layer depends on the tasks to catch thrown exceptions and unravel -Node.js domains. - -The full implementation of ASAP is loadable as `require("asap")` in both Node.js -and browsers. - -The raw layer that lacks exception handling overhead is loadable as -`require("asap/raw")`. -The interface is the same for both layers. - -Tasks are no longer required to be functions, but can rather be any object that -implements `task.call()`. -With this feature you can recycle task objects to avoid garbage collector churn -and avoid closures in general. - -The implementation has been rigorously documented so that our successors can -understand the scope of the problem that this module solves and all of its -nuances, ensuring that the next generation of implementations know what details -are essential. - -- [asap.js](https://github.com/kriskowal/asap/blob/master/asap.js) -- [raw.js](https://github.com/kriskowal/asap/blob/master/raw.js) -- [browser-asap.js](https://github.com/kriskowal/asap/blob/master/browser-asap.js) -- [browser-raw.js](https://github.com/kriskowal/asap/blob/master/browser-raw.js) - -The new version has also been rigorously tested across a broad spectrum of -browsers, in both the window and worker context. -The following charts capture the browser test results for the most recent -release. -The first chart shows test results for ASAP running in the main window context. -The second chart shows test results for ASAP running in a web worker context. -Test results are inconclusive (grey) on browsers that do not support web -workers. -These data are captured automatically by [Continuous -Integration][]. - - - - - -[Continuous Integration]: https://github.com/kriskowal/asap/blob/master/CONTRIBUTING.md - diff --git a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/LICENSE.md b/node_modules/express-handlebars/node_modules/promise/node_modules/asap/LICENSE.md deleted file mode 100644 index ba18c61..0000000 --- a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright 2009–2014 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/node_modules/express-handlebars/node_modules/promise/node_modules/asap/README.md b/node_modules/express-handlebars/node_modules/promise/node_modules/asap/README.md deleted file mode 100644 index 452fd8c..0000000 --- a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/README.md +++ /dev/null @@ -1,237 +0,0 @@ -# ASAP - -[](https://travis-ci.org/kriskowal/asap) - -Promise and asynchronous observer libraries, as well as hand-rolled callback -programs and libraries, often need a mechanism to postpone the execution of a -callback until the next available event. -(See [Designing API’s for Asynchrony][Zalgo].) -The `asap` function executes a task **as soon as possible** but not before it -returns, waiting only for the completion of the current event and previously -scheduled tasks. - -```javascript -asap(function () { - // ... -}); -``` - -[Zalgo]: http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony - -This CommonJS package provides an `asap` module that exports a function that -executes a task function *as soon as possible*. - -ASAP strives to schedule events to occur before yielding for IO, reflow, -or redrawing. -Each event receives an independent stack, with only platform code in parent -frames and the events run in the order they are scheduled. - -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 a task gets added to a previously empty event queue, 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 Node.js. - -By design, ASAP prevents input events from being handled until the task -queue is empty. -If the process is busy enough, this may cause incoming connection requests to be -dropped, and may cause existing connections to inform the sender to reduce the -transmission rate or stall. -ASAP allows this on the theory that, if there is enough work to do, there is no -sense in looking for trouble. -As a consequence, ASAP can interfere with smooth animation. -If your task should be tied to the rendering loop, consider using -`requestAnimationFrame` instead. -A long sequence of tasks can also effect the long running script dialog. -If this is a problem, you may be able to use ASAP’s cousin `setImmediate` to -break long processes into shorter intervals and periodically allow the browser -to breathe. -`setImmediate` will yield for IO, reflow, and repaint events. -It also returns a handler and can be canceled. -For a `setImmediate` shim, consider [YuzuJS setImmediate][setImmediate]. - -[setImmediate]: https://github.com/YuzuJS/setImmediate - -Take care. -ASAP can sustain infinite recursive calls without warning. -It will not halt from a stack overflow, and it will not consume unbounded -memory. -This is behaviorally equivalent to an infinite loop. -Just as with infinite loops, you can monitor a Node.js 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(); -``` - -In browsers, 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. -In Node.js, if a task throws an exception, ASAP will resume flushing only if—and -only after—the error is handled by `domain.on("error")` or -`process.on("uncaughtException")`. - -## Raw ASAP - -Checking for exceptions comes at a cost. -The package also provides an `asap/raw` module that exports the underlying -implementation which is faster but stalls if a task throws an exception. -This internal version of the ASAP function does not check for errors. -If a task does throw an error, it will stall the event queue unless you manually -call `rawAsap.requestFlush()` before throwing the error, or any time after. - -In Node.js, `asap/raw` also runs all tasks outside any domain. -If you need a task to be bound to your domain, you will have to do it manually. - -```js -if (process.domain) { - task = process.domain.bind(task); -} -rawAsap(task); -``` - -## Tasks - -A task may be any object that implements `call()`. -A function will suffice, but closures tend not to be reusable and can cause -garbage collector churn. -Both `asap` and `rawAsap` accept task objects to give you the option of -recycling task objects or using higher callable object abstractions. -See the `asap` source for an illustration. - - -## Compatibility - -ASAP is tested on Node.js v0.10 and in a broad spectrum of web browsers. -The following charts capture the browser test results for the most recent -release. -The first chart shows test results for ASAP running in the main window context. -The second chart shows test results for ASAP running in a web worker context. -Test results are inconclusive (grey) on browsers that do not support web -workers. -These data are captured automatically by [Continuous -Integration][]. - -[Continuous Integration]: https://github.com/kriskowal/asap/blob/master/CONTRIBUTING.md - - - - - -## Caveats - -When a task is added to an empty event queue, it is not always possible to -guarantee that the task queue will begin flushing immediately after the current -event. -However, once the task queue begins flushing, it will not yield until the queue -is empty, even if the queue grows while executing tasks. - -The following browsers allow the use of [DOM mutation observers][] to access -the HTML [microtask queue][], and thus begin flushing ASAP's task queue -immediately at the end of the current event loop turn, before any rendering or -IO: - -[microtask queue]: http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#microtask-queue -[DOM mutation observers]: http://dom.spec.whatwg.org/#mutation-observers - -- Android 4–4.3 -- Chrome 26–34 -- Firefox 14–29 -- Internet Explorer 11 -- iPad Safari 6–7.1 -- iPhone Safari 7–7.1 -- Safari 6–7 - -In the absense of mutation observers, there are a few browsers, and situations -like web workers in some of the above browsers, where [message channels][] -would be a useful way to avoid falling back to timers. -Message channels give direct access to the HTML [task queue][], so the ASAP -task queue would flush after any already queued rendering and IO tasks, but -without having the minimum delay imposed by timers. -However, among these browsers, Internet Explorer 10 and Safari do not reliably -dispatch messages, so they are not worth the trouble to implement. - -[message channels]: http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html#message-channels -[task queue]: http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#concept-task - -- Internet Explorer 10 -- Safair 5.0-1 -- Opera 11-12 - -In the absense of mutation observers, these browsers and the following browsers -all fall back to using `setTimeout` and `setInterval` to ensure that a `flush` -occurs. -The implementation uses both and cancels whatever handler loses the race, since -`setTimeout` tends to occasionally skip tasks in unisolated circumstances. -Timers generally delay the flushing of ASAP's task queue for four milliseconds. - -- Firefox 3–13 -- Internet Explorer 6–10 -- iPad Safari 4.3 -- Lynx 2.8.7 - - -## 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 Katić began contributing to Q by measuring the performance of -the internal implementation of `asap`, paying particular attention to -error recovery. -Domenic, Robert, and Kris Kowal 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 Node.js 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/ - -Ember’s RSVP promise implementation later [adopted][RSVP ASAP] the name ASAP but -further developed the implentation. -Particularly, The `MessagePort` implementation was abandoned due to interaction -[problems with Mobile Internet Explorer][IE Problems] in favor of an -implementation backed on the newer and more reliable DOM `MutationObserver` -interface. -These changes were back-ported into this library. - -[IE Problems]: https://github.com/cujojs/when/issues/197 -[RSVP ASAP]: https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js - -In addition, ASAP factored into `asap` and `asap/raw`, such that `asap` remained -exception-safe, but `asap/raw` provided a tight kernel that could be used for -tasks that guaranteed that they would not throw exceptions. -This core is useful for promise implementations that capture thrown errors in -rejected promises and do not need a second safety net. -At the same time, the exception handling in `asap` was factored into separate -implementations for Node.js and browsers, using the the [Browserify][Browser -Config] `browser` property in `package.json` to instruct browser module loaders -and bundlers, including [Browserify][], [Mr][], and [Mop][], to use the -browser-only implementation. - -[Browser Config]: https://gist.github.com/defunctzombie/4339901 -[Browserify]: https://github.com/substack/node-browserify -[Mr]: https://github.com/montagejs/mr -[Mop]: https://github.com/montagejs/mop - -## License - -Copyright 2009-2014 by Contributors -MIT License (enclosed) - diff --git a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/asap.js b/node_modules/express-handlebars/node_modules/promise/node_modules/asap/asap.js deleted file mode 100644 index f04fcd5..0000000 --- a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/asap.js +++ /dev/null @@ -1,65 +0,0 @@ -"use strict"; - -var rawAsap = require("./raw"); -var freeTasks = []; - -/** - * Calls a task as soon as possible after returning, in its own event, with - * priority over IO events. An exception thrown in a task can be handled by - * `process.on("uncaughtException") or `domain.on("error")`, but will otherwise - * crash the process. If the error is handled, all subsequent tasks will - * resume. - * - * @param {{call}} task A callable object, typically a function that takes no - * arguments. - */ -module.exports = asap; -function asap(task) { - var rawTask; - if (freeTasks.length) { - rawTask = freeTasks.pop(); - } else { - rawTask = new RawTask(); - } - rawTask.task = task; - rawTask.domain = process.domain; - rawAsap(rawTask); -} - -function RawTask() { - this.task = null; - this.domain = null; -} - -RawTask.prototype.call = function () { - if (this.domain) { - this.domain.enter(); - } - var threw = true; - try { - this.task.call(); - threw = false; - // If the task throws an exception (presumably) Node.js restores the - // domain stack for the next event. - if (this.domain) { - this.domain.exit(); - } - } finally { - // We use try/finally and a threw flag to avoid messing up stack traces - // when we catch and release errors. - if (threw) { - // In Node.js, uncaught exceptions are considered fatal errors. - // Re-throw them to interrupt flushing! - // Ensure that flushing continues if an uncaught exception is - // suppressed listening process.on("uncaughtException") or - // domain.on("error"). - rawAsap.requestFlush(); - } - // If the task threw an error, we do not want to exit the domain here. - // Exiting the domain would prevent the domain from catching the error. - this.task = null; - this.domain = null; - freeTasks.push(this); - } -}; - diff --git a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/browser-asap.js b/node_modules/express-handlebars/node_modules/promise/node_modules/asap/browser-asap.js deleted file mode 100644 index 805c982..0000000 --- a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/browser-asap.js +++ /dev/null @@ -1,66 +0,0 @@ -"use strict"; - -// rawAsap provides everything we need except exception management. -var rawAsap = require("./raw"); -// RawTasks are recycled to reduce GC churn. -var freeTasks = []; -// We queue errors to ensure they are thrown in right order (FIFO). -// Array-as-queue is good enough here, since we are just dealing with exceptions. -var pendingErrors = []; -var requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError); - -function throwFirstError() { - if (pendingErrors.length) { - throw pendingErrors.shift(); - } -} - -/** - * Calls a task as soon as possible after returning, in its own event, with priority - * over other events like animation, reflow, and repaint. An error thrown from an - * event will not interrupt, nor even substantially slow down the processing of - * other events, but will be rather postponed to a lower priority event. - * @param {{call}} task A callable object, typically a function that takes no - * arguments. - */ -module.exports = asap; -function asap(task) { - var rawTask; - if (freeTasks.length) { - rawTask = freeTasks.pop(); - } else { - rawTask = new RawTask(); - } - rawTask.task = task; - rawAsap(rawTask); -} - -// We wrap tasks with recyclable task objects. A task object implements -// `call`, just like a function. -function RawTask() { - this.task = null; -} - -// The sole purpose of wrapping the task is to catch the exception and recycle -// the task object after its single use. -RawTask.prototype.call = function () { - try { - this.task.call(); - } catch (error) { - if (asap.onerror) { - // This hook exists purely for testing purposes. - // Its name will be periodically randomized to break any code that - // depends on its existence. - asap.onerror(error); - } else { - // In a web browser, exceptions are not fatal. However, to avoid - // slowing down the queue of pending tasks, we rethrow the error in a - // lower priority turn. - pendingErrors.push(error); - requestErrorThrow(); - } - } finally { - this.task = null; - freeTasks[freeTasks.length] = this; - } -}; diff --git a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/browser-raw.js b/node_modules/express-handlebars/node_modules/promise/node_modules/asap/browser-raw.js deleted file mode 100644 index 1cfd772..0000000 --- a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/browser-raw.js +++ /dev/null @@ -1,220 +0,0 @@ -"use strict"; - -// Use the fastest means possible to execute a task in its own turn, with -// priority over other events including IO, animation, reflow, and redraw -// events in browsers. -// -// An exception thrown by a task will permanently interrupt the processing of -// subsequent tasks. The higher level `asap` function ensures that if an -// exception is thrown by a task, that the task queue will continue flushing as -// soon as possible, but if you use `rawAsap` directly, you are responsible to -// either ensure that no exceptions are thrown from your task, or to manually -// call `rawAsap.requestFlush` if an exception is thrown. -module.exports = rawAsap; -function rawAsap(task) { - if (!queue.length) { - requestFlush(); - flushing = true; - } - // Equivalent to push, but avoids a function call. - queue[queue.length] = task; -} - -var queue = []; -// Once a flush has been requested, no further calls to `requestFlush` are -// necessary until the next `flush` completes. -var flushing = false; -// `requestFlush` is an implementation-specific method that attempts to kick -// off a `flush` event as quickly as possible. `flush` will attempt to exhaust -// the event queue before yielding to the browser's own event loop. -var requestFlush; -// The position of the next task to execute in the task queue. This is -// preserved between calls to `flush` so that it can be resumed if -// a task throws an exception. -var index = 0; -// If a task schedules additional tasks recursively, the task queue can grow -// unbounded. To prevent memory exhaustion, the task queue will periodically -// truncate already-completed tasks. -var capacity = 1024; - -// The flush function processes all tasks that have been scheduled with -// `rawAsap` unless and until one of those tasks throws an exception. -// If a task throws an exception, `flush` ensures that its state will remain -// consistent and will resume where it left off when called again. -// However, `flush` does not make any arrangements to be called again if an -// exception is thrown. -function flush() { - while (index < queue.length) { - var currentIndex = index; - // Advance the index before calling the task. This ensures that we will - // begin flushing on the next task the task throws an error. - index = index + 1; - queue[currentIndex].call(); - // Prevent leaking memory for long chains of recursive calls to `asap`. - // If we call `asap` within tasks scheduled by `asap`, the queue will - // grow, but to avoid an O(n) walk for every task we execute, we don't - // shift tasks off the queue after they have been executed. - // Instead, we periodically shift 1024 tasks off the queue. - if (index > capacity) { - // Manually shift all values starting at the index back to the - // beginning of the queue. - for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) { - queue[scan] = queue[scan + index]; - } - queue.length -= index; - index = 0; - } - } - queue.length = 0; - index = 0; - flushing = false; -} - -// `requestFlush` is implemented using a strategy based on data collected from -// every available SauceLabs Selenium web driver worker at time of writing. -// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593 - -// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that -// have WebKitMutationObserver but not un-prefixed MutationObserver. -// Must use `global` instead of `window` to work in both frames and web -// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop. -var BrowserMutationObserver = global.MutationObserver || global.WebKitMutationObserver; - -// MutationObservers are desirable because they have high priority and work -// reliably everywhere they are implemented. -// They are implemented in all modern browsers. -// -// - Android 4-4.3 -// - Chrome 26-34 -// - Firefox 14-29 -// - Internet Explorer 11 -// - iPad Safari 6-7.1 -// - iPhone Safari 7-7.1 -// - Safari 6-7 -if (typeof BrowserMutationObserver === "function") { - requestFlush = makeRequestCallFromMutationObserver(flush); - -// MessageChannels are desirable because they give direct access to the HTML -// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera -// 11-12, and in web workers in many engines. -// Although message channels yield to any queued rendering and IO tasks, they -// would be better than imposing the 4ms delay of timers. -// However, they do not work reliably in Internet Explorer or Safari. - -// Internet Explorer 10 is the only browser that has setImmediate but does -// not have MutationObservers. -// Although setImmediate yields to the browser's renderer, it would be -// preferrable to falling back to setTimeout since it does not have -// the minimum 4ms penalty. -// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and -// Desktop to a lesser extent) that renders both setImmediate and -// MessageChannel useless for the purposes of ASAP. -// https://github.com/kriskowal/q/issues/396 - -// Timers are implemented universally. -// We fall back to timers in workers in most engines, and in foreground -// contexts in the following browsers. -// However, note that even this simple case requires nuances to operate in a -// broad spectrum of browsers. -// -// - Firefox 3-13 -// - Internet Explorer 6-9 -// - iPad Safari 4.3 -// - Lynx 2.8.7 -} else { - requestFlush = makeRequestCallFromTimer(flush); -} - -// `requestFlush` requests that the high priority event queue be flushed as -// soon as possible. -// This is useful to prevent an error thrown in a task from stalling the event -// queue if the exception handled by Node.js’s -// `process.on("uncaughtException")` or by a domain. -rawAsap.requestFlush = requestFlush; - -// To request a high priority event, we induce a mutation observer by toggling -// the text of a text node between "1" and "-1". -function makeRequestCallFromMutationObserver(callback) { - var toggle = 1; - var observer = new BrowserMutationObserver(callback); - var node = document.createTextNode(""); - observer.observe(node, {characterData: true}); - return function requestCall() { - toggle = -toggle; - node.data = toggle; - }; -} - -// The message channel technique was discovered by Malte Ubl and was the -// original foundation for this library. -// http://www.nonblocking.io/2011/06/windownexttick.html - -// Safari 6.0.5 (at least) intermittently fails to create message ports on a -// page's first load. Thankfully, this version of Safari supports -// MutationObservers, so we don't need to fall back in that case. - -// function makeRequestCallFromMessageChannel(callback) { -// var channel = new MessageChannel(); -// channel.port1.onmessage = callback; -// return function requestCall() { -// channel.port2.postMessage(0); -// }; -// } - -// For reasons explained above, we are also unable to use `setImmediate` -// under any circumstances. -// Even if we were, there is another bug in Internet Explorer 10. -// It is not sufficient to assign `setImmediate` to `requestFlush` because -// `setImmediate` must be called *by name* and therefore must be wrapped in a -// closure. -// Never forget. - -// function makeRequestCallFromSetImmediate(callback) { -// return function requestCall() { -// setImmediate(callback); -// }; -// } - -// Safari 6.0 has a problem where timers will get lost while the user is -// scrolling. This problem does not impact ASAP because Safari 6.0 supports -// mutation observers, so that implementation is used instead. -// However, if we ever elect to use timers in Safari, the prevalent work-around -// is to add a scroll event listener that calls for a flush. - -// `setTimeout` does not call the passed callback if the delay is less than -// approximately 7 in web workers in Firefox 8 through 18, and sometimes not -// even then. - -function makeRequestCallFromTimer(callback) { - return function requestCall() { - // We dispatch a timeout with a specified delay of 0 for engines that - // can reliably accommodate that request. This will usually be snapped - // to a 4 milisecond delay, but once we're flushing, there's no delay - // between events. - var timeoutHandle = setTimeout(handleTimer, 0); - // However, since this timer gets frequently dropped in Firefox - // workers, we enlist an interval handle that will try to fire - // an event 20 times per second until it succeeds. - var intervalHandle = setInterval(handleTimer, 50); - - function handleTimer() { - // Whichever timer succeeds will cancel both timers and - // execute the callback. - clearTimeout(timeoutHandle); - clearInterval(intervalHandle); - callback(); - } - }; -} - -// This is for `asap.js` only. -// Its name will be periodically randomized to break any code that depends on -// its existence. -rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer; - -// ASAP was originally a nextTick shim included in Q. This was factored out -// into this ASAP package. It was later adapted to RSVP which made further -// amendments. These decisions, particularly to marginalize MessageChannel and -// to capture the MutationObserver implementation in a closure, were integrated -// back into ASAP proper. -// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js diff --git a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/package.json b/node_modules/express-handlebars/node_modules/promise/node_modules/asap/package.json deleted file mode 100644 index 727ca3a..0000000 --- a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "name": "asap", - "version": "2.0.4", - "description": "High-priority task queue for Node.js and browsers", - "keywords": [ - "event", - "task", - "queue" - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/kriskowal/asap.git" - }, - "main": "./asap.js", - "browser": { - "./asap": "./browser-asap.js", - "./asap.js": "./browser-asap.js", - "./raw": "./browser-raw.js", - "./raw.js": "./browser-raw.js", - "./test/domain.js": "./test/browser-domain.js" - }, - "files": [ - "raw.js", - "asap.js", - "browser-raw.js", - "browser-asap.js" - ], - "scripts": { - "test": "npm run lint && npm run test-node", - "test-travis": "npm run lint && npm run test-node && npm run test-saucelabs && npm run test-saucelabs-worker", - "test-node": "node test/asap-test.js", - "test-publish": "node scripts/publish-bundle.js test/asap-test.js | pbcopy", - "test-browser": "node scripts/publish-bundle.js test/asap-test.js | xargs opener", - "test-saucelabs": "node scripts/saucelabs.js test/asap-test.js scripts/saucelabs-spot-configurations.json", - "test-saucelabs-all": "node scripts/saucelabs.js test/asap-test.js scripts/saucelabs-all-configurations.json", - "test-saucelabs-worker": "node scripts/saucelabs-worker-test.js scripts/saucelabs-spot-configurations.json", - "test-saucelabs-worker-all": "node scripts/saucelabs-worker-test.js scripts/saucelabs-all-configurations.json", - "lint": "jshint raw.js asap.js browser-raw.js browser-asap.js $(find scripts -name '*.js' | grep -v gauntlet)", - "benchmarks": "node benchmarks" - }, - "devDependencies": { - "events": "^1.0.1", - "jshint": "^2.5.1", - "knox": "^0.8.10", - "mr": "^2.0.5", - "opener": "^1.3.0", - "q": "^2.0.3", - "q-io": "^2.0.3", - "saucelabs": "^0.1.1", - "wd": "^0.2.21", - "weak-map": "^1.0.5", - "benchmark": "^1.0.0" - }, - "gitHead": "26e815dafed7bc112924bf7a6be0d997abf1b407", - "bugs": { - "url": "https://github.com/kriskowal/asap/issues" - }, - "homepage": "https://github.com/kriskowal/asap#readme", - "_id": "asap@2.0.4", - "_shasum": "b391bf7f6bfbc65706022fec8f49c4b07fecf589", - "_from": "asap@>=2.0.3 <2.1.0", - "_npmVersion": "2.14.7", - "_nodeVersion": "0.10.32", - "_npmUser": { - "name": "kriskowal", - "email": "kris.kowal@cixar.com" - }, - "dist": { - "shasum": "b391bf7f6bfbc65706022fec8f49c4b07fecf589", - "tarball": "https://registry.npmjs.org/asap/-/asap-2.0.4.tgz" - }, - "maintainers": [ - { - "name": "kriskowal", - "email": "kris.kowal@cixar.com" - }, - { - "name": "forbeslindesay", - "email": "forbes@lindesay.co.uk" - } - ], - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/asap-2.0.4.tgz_1463764720924_0.3805790115147829" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/asap/-/asap-2.0.4.tgz" -} diff --git a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/raw.js b/node_modules/express-handlebars/node_modules/promise/node_modules/asap/raw.js deleted file mode 100644 index ae3b892..0000000 --- a/node_modules/express-handlebars/node_modules/promise/node_modules/asap/raw.js +++ /dev/null @@ -1,101 +0,0 @@ -"use strict"; - -var domain; // The domain module is executed on demand -var hasSetImmediate = typeof setImmediate === "function"; - -// Use the fastest means possible to execute a task in its own turn, with -// priority over other events including network IO events in Node.js. -// -// An exception thrown by a task will permanently interrupt the processing of -// subsequent tasks. The higher level `asap` function ensures that if an -// exception is thrown by a task, that the task queue will continue flushing as -// soon as possible, but if you use `rawAsap` directly, you are responsible to -// either ensure that no exceptions are thrown from your task, or to manually -// call `rawAsap.requestFlush` if an exception is thrown. -module.exports = rawAsap; -function rawAsap(task) { - if (!queue.length) { - requestFlush(); - flushing = true; - } - // Avoids a function call - queue[queue.length] = task; -} - -var queue = []; -// Once a flush has been requested, no further calls to `requestFlush` are -// necessary until the next `flush` completes. -var flushing = false; -// The position of the next task to execute in the task queue. This is -// preserved between calls to `flush` so that it can be resumed if -// a task throws an exception. -var index = 0; -// If a task schedules additional tasks recursively, the task queue can grow -// unbounded. To prevent memory excaustion, the task queue will periodically -// truncate already-completed tasks. -var capacity = 1024; - -// The flush function processes all tasks that have been scheduled with -// `rawAsap` unless and until one of those tasks throws an exception. -// If a task throws an exception, `flush` ensures that its state will remain -// consistent and will resume where it left off when called again. -// However, `flush` does not make any arrangements to be called again if an -// exception is thrown. -function flush() { - while (index < queue.length) { - var currentIndex = index; - // Advance the index before calling the task. This ensures that we will - // begin flushing on the next task the task throws an error. - index = index + 1; - queue[currentIndex].call(); - // Prevent leaking memory for long chains of recursive calls to `asap`. - // If we call `asap` within tasks scheduled by `asap`, the queue will - // grow, but to avoid an O(n) walk for every task we execute, we don't - // shift tasks off the queue after they have been executed. - // Instead, we periodically shift 1024 tasks off the queue. - if (index > capacity) { - // Manually shift all values starting at the index back to the - // beginning of the queue. - for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) { - queue[scan] = queue[scan + index]; - } - queue.length -= index; - index = 0; - } - } - queue.length = 0; - index = 0; - flushing = false; -} - -rawAsap.requestFlush = requestFlush; -function requestFlush() { - // Ensure flushing is not bound to any domain. - // It is not sufficient to exit the domain, because domains exist on a stack. - // To execute code outside of any domain, the following dance is necessary. - var parentDomain = process.domain; - if (parentDomain) { - if (!domain) { - // Lazy execute the domain module. - // Only employed if the user elects to use domains. - domain = require("domain"); - } - domain.active = process.domain = null; - } - - // `setImmediate` is slower that `process.nextTick`, but `process.nextTick` - // cannot handle recursion. - // `requestFlush` will only be called recursively from `asap.js`, to resume - // flushing after an error is thrown into a domain. - // Conveniently, `setImmediate` was introduced in the same version - // `process.nextTick` started throwing recursion errors. - if (flushing && hasSetImmediate) { - setImmediate(flush); - } else { - process.nextTick(flush); - } - - if (parentDomain) { - domain.active = process.domain = parentDomain; - } -} diff --git a/node_modules/express-handlebars/node_modules/promise/package.json b/node_modules/express-handlebars/node_modules/promise/package.json deleted file mode 100644 index 49d00c3..0000000 --- a/node_modules/express-handlebars/node_modules/promise/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "promise", - "version": "7.1.1", - "description": "Bare bones Promises/A+ implementation", - "main": "index.js", - "scripts": { - "prepublish": "node build", - "pretest": "node build", - "pretest-resolve": "node build", - "pretest-extensions": "node build", - "pretest-memory-leak": "node build", - "test": "mocha --bail --timeout 200 --slow 99999 -R dot && npm run test-memory-leak", - "test-resolve": "mocha test/resolver-tests.js --timeout 200 --slow 999999", - "test-extensions": "mocha test/extensions-tests.js --timeout 200 --slow 999999", - "test-memory-leak": "node --expose-gc test/memory-leak.js", - "coverage": "istanbul cover node_modules/mocha/bin/_mocha -- --bail --timeout 200 --slow 99999 -R dot" - }, - "repository": { - "type": "git", - "url": "https://github.com/then/promise.git" - }, - "author": { - "name": "ForbesLindesay" - }, - "license": "MIT", - "devDependencies": { - "acorn": "^1.0.1", - "better-assert": "*", - "istanbul": "^0.3.13", - "mocha": "*", - "promises-aplus-tests": "*", - "rimraf": "^2.3.2" - }, - "dependencies": { - "asap": "~2.0.3" - }, - "gitHead": "90757a38c86975f36893012581b72315b352d482", - "bugs": { - "url": "https://github.com/then/promise/issues" - }, - "homepage": "https://github.com/then/promise", - "_id": "promise@7.1.1", - "_shasum": "489654c692616b8aa55b0724fa809bb7db49c5bf", - "_from": "promise@>=7.0.0 <8.0.0", - "_npmVersion": "2.7.1", - "_nodeVersion": "1.6.2", - "_npmUser": { - "name": "forbeslindesay", - "email": "forbes@lindesay.co.uk" - }, - "dist": { - "shasum": "489654c692616b8aa55b0724fa809bb7db49c5bf", - "tarball": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz" - }, - "maintainers": [ - { - "name": "forbeslindesay", - "email": "forbes@lindesay.co.uk" - }, - { - "name": "nathan7", - "email": "nathan@nathan7.eu" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz" -} diff --git a/node_modules/express-handlebars/node_modules/promise/polyfill-done.js b/node_modules/express-handlebars/node_modules/promise/polyfill-done.js deleted file mode 100644 index e50b4c0..0000000 --- a/node_modules/express-handlebars/node_modules/promise/polyfill-done.js +++ /dev/null @@ -1,12 +0,0 @@ -// should work in any browser without browserify - -if (typeof Promise.prototype.done !== 'function') { - Promise.prototype.done = function (onFulfilled, onRejected) { - var self = arguments.length ? this.then.apply(this, arguments) : this - self.then(null, function (err) { - setTimeout(function () { - throw err - }, 0) - }) - } -}
\ No newline at end of file diff --git a/node_modules/express-handlebars/node_modules/promise/polyfill.js b/node_modules/express-handlebars/node_modules/promise/polyfill.js deleted file mode 100644 index db099f8..0000000 --- a/node_modules/express-handlebars/node_modules/promise/polyfill.js +++ /dev/null @@ -1,10 +0,0 @@ -// not "use strict" so we can declare global "Promise" - -var asap = require('asap'); - -if (typeof Promise === 'undefined') { - Promise = require('./lib/core.js') - require('./lib/es6-extensions.js') -} - -require('./polyfill-done.js'); diff --git a/node_modules/express-handlebars/node_modules/promise/setimmediate/core.js b/node_modules/express-handlebars/node_modules/promise/setimmediate/core.js deleted file mode 100644 index 46c6a2c..0000000 --- a/node_modules/express-handlebars/node_modules/promise/setimmediate/core.js +++ /dev/null @@ -1,213 +0,0 @@ -'use strict'; - - - -function noop() {} - -// States: -// -// 0 - pending -// 1 - fulfilled with _value -// 2 - rejected with _value -// 3 - adopted the state of another promise, _value -// -// once the state is no longer pending (0) it is immutable - -// All `_` prefixed properties will be reduced to `_{random number}` -// at build time to obfuscate them and discourage their use. -// We don't use symbols or Object.defineProperty to fully hide them -// because the performance isn't good enough. - - -// to avoid using try/catch inside critical functions, we -// extract them to here. -var LAST_ERROR = null; -var IS_ERROR = {}; -function getThen(obj) { - try { - return obj.then; - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} - -function tryCallOne(fn, a) { - try { - return fn(a); - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} -function tryCallTwo(fn, a, b) { - try { - fn(a, b); - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} - -module.exports = Promise; - -function Promise(fn) { - if (typeof this !== 'object') { - throw new TypeError('Promises must be constructed via new'); - } - if (typeof fn !== 'function') { - throw new TypeError('not a function'); - } - this._45 = 0; - this._81 = 0; - this._65 = null; - this._54 = null; - if (fn === noop) return; - doResolve(fn, this); -} -Promise._10 = null; -Promise._97 = null; -Promise._61 = noop; - -Promise.prototype.then = function(onFulfilled, onRejected) { - if (this.constructor !== Promise) { - return safeThen(this, onFulfilled, onRejected); - } - var res = new Promise(noop); - handle(this, new Handler(onFulfilled, onRejected, res)); - return res; -}; - -function safeThen(self, onFulfilled, onRejected) { - return new self.constructor(function (resolve, reject) { - var res = new Promise(noop); - res.then(resolve, reject); - handle(self, new Handler(onFulfilled, onRejected, res)); - }); -}; -function handle(self, deferred) { - while (self._81 === 3) { - self = self._65; - } - if (Promise._10) { - Promise._10(self); - } - if (self._81 === 0) { - if (self._45 === 0) { - self._45 = 1; - self._54 = deferred; - return; - } - if (self._45 === 1) { - self._45 = 2; - self._54 = [self._54, deferred]; - return; - } - self._54.push(deferred); - return; - } - handleResolved(self, deferred); -} - -function handleResolved(self, deferred) { - setImmediate(function() { - var cb = self._81 === 1 ? deferred.onFulfilled : deferred.onRejected; - if (cb === null) { - if (self._81 === 1) { - resolve(deferred.promise, self._65); - } else { - reject(deferred.promise, self._65); - } - return; - } - var ret = tryCallOne(cb, self._65); - if (ret === IS_ERROR) { - reject(deferred.promise, LAST_ERROR); - } else { - resolve(deferred.promise, ret); - } - }); -} -function resolve(self, newValue) { - // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure - if (newValue === self) { - return reject( - self, - new TypeError('A promise cannot be resolved with itself.') - ); - } - if ( - newValue && - (typeof newValue === 'object' || typeof newValue === 'function') - ) { - var then = getThen(newValue); - if (then === IS_ERROR) { - return reject(self, LAST_ERROR); - } - if ( - then === self.then && - newValue instanceof Promise - ) { - self._81 = 3; - self._65 = newValue; - finale(self); - return; - } else if (typeof then === 'function') { - doResolve(then.bind(newValue), self); - return; - } - } - self._81 = 1; - self._65 = newValue; - finale(self); -} - -function reject(self, newValue) { - self._81 = 2; - self._65 = newValue; - if (Promise._97) { - Promise._97(self, newValue); - } - finale(self); -} -function finale(self) { - if (self._45 === 1) { - handle(self, self._54); - self._54 = null; - } - if (self._45 === 2) { - for (var i = 0; i < self._54.length; i++) { - handle(self, self._54[i]); - } - self._54 = null; - } -} - -function Handler(onFulfilled, onRejected, promise){ - this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; - this.onRejected = typeof onRejected === 'function' ? onRejected : null; - this.promise = promise; -} - -/** - * Take a potentially misbehaving resolver function and make sure - * onFulfilled and onRejected are only called once. - * - * Makes no guarantees about asynchrony. - */ -function doResolve(fn, promise) { - var done = false; - var res = tryCallTwo(fn, function (value) { - if (done) return; - done = true; - resolve(promise, value); - }, function (reason) { - if (done) return; - done = true; - reject(promise, reason); - }) - if (!done && res === IS_ERROR) { - done = true; - reject(promise, LAST_ERROR); - } -} diff --git a/node_modules/express-handlebars/node_modules/promise/setimmediate/done.js b/node_modules/express-handlebars/node_modules/promise/setimmediate/done.js deleted file mode 100644 index f879317..0000000 --- a/node_modules/express-handlebars/node_modules/promise/setimmediate/done.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.prototype.done = function (onFulfilled, onRejected) { - var self = arguments.length ? this.then.apply(this, arguments) : this; - self.then(null, function (err) { - setTimeout(function () { - throw err; - }, 0); - }); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/setimmediate/es6-extensions.js b/node_modules/express-handlebars/node_modules/promise/setimmediate/es6-extensions.js deleted file mode 100644 index 1ab6eae..0000000 --- a/node_modules/express-handlebars/node_modules/promise/setimmediate/es6-extensions.js +++ /dev/null @@ -1,107 +0,0 @@ -'use strict'; - -//This file contains the ES6 extensions to the core Promises/A+ API - -var Promise = require('./core.js'); - -module.exports = Promise; - -/* Static Functions */ - -var TRUE = valuePromise(true); -var FALSE = valuePromise(false); -var NULL = valuePromise(null); -var UNDEFINED = valuePromise(undefined); -var ZERO = valuePromise(0); -var EMPTYSTRING = valuePromise(''); - -function valuePromise(value) { - var p = new Promise(Promise._61); - p._81 = 1; - p._65 = value; - return p; -} -Promise.resolve = function (value) { - if (value instanceof Promise) return value; - - if (value === null) return NULL; - if (value === undefined) return UNDEFINED; - if (value === true) return TRUE; - if (value === false) return FALSE; - if (value === 0) return ZERO; - if (value === '') return EMPTYSTRING; - - if (typeof value === 'object' || typeof value === 'function') { - try { - var then = value.then; - if (typeof then === 'function') { - return new Promise(then.bind(value)); - } - } catch (ex) { - return new Promise(function (resolve, reject) { - reject(ex); - }); - } - } - return valuePromise(value); -}; - -Promise.all = function (arr) { - var args = Array.prototype.slice.call(arr); - - return new Promise(function (resolve, reject) { - if (args.length === 0) return resolve([]); - var remaining = args.length; - function res(i, val) { - if (val && (typeof val === 'object' || typeof val === 'function')) { - if (val instanceof Promise && val.then === Promise.prototype.then) { - while (val._81 === 3) { - val = val._65; - } - if (val._81 === 1) return res(i, val._65); - if (val._81 === 2) reject(val._65); - val.then(function (val) { - res(i, val); - }, reject); - return; - } else { - var then = val.then; - if (typeof then === 'function') { - var p = new Promise(then.bind(val)); - p.then(function (val) { - res(i, val); - }, reject); - return; - } - } - } - args[i] = val; - if (--remaining === 0) { - resolve(args); - } - } - for (var i = 0; i < args.length; i++) { - res(i, args[i]); - } - }); -}; - -Promise.reject = function (value) { - return new Promise(function (resolve, reject) { - reject(value); - }); -}; - -Promise.race = function (values) { - return new Promise(function (resolve, reject) { - values.forEach(function(value){ - Promise.resolve(value).then(resolve, reject); - }); - }); -}; - -/* Prototype Methods */ - -Promise.prototype['catch'] = function (onRejected) { - return this.then(null, onRejected); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/setimmediate/finally.js b/node_modules/express-handlebars/node_modules/promise/setimmediate/finally.js deleted file mode 100644 index f5ee0b9..0000000 --- a/node_modules/express-handlebars/node_modules/promise/setimmediate/finally.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.prototype['finally'] = function (f) { - return this.then(function (value) { - return Promise.resolve(f()).then(function () { - return value; - }); - }, function (err) { - return Promise.resolve(f()).then(function () { - throw err; - }); - }); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/setimmediate/index.js b/node_modules/express-handlebars/node_modules/promise/setimmediate/index.js deleted file mode 100644 index 6e674f3..0000000 --- a/node_modules/express-handlebars/node_modules/promise/setimmediate/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -module.exports = require('./core.js'); -require('./done.js'); -require('./finally.js'); -require('./es6-extensions.js'); -require('./node-extensions.js'); -require('./synchronous.js'); diff --git a/node_modules/express-handlebars/node_modules/promise/setimmediate/node-extensions.js b/node_modules/express-handlebars/node_modules/promise/setimmediate/node-extensions.js deleted file mode 100644 index 14a0302..0000000 --- a/node_modules/express-handlebars/node_modules/promise/setimmediate/node-extensions.js +++ /dev/null @@ -1,130 +0,0 @@ -'use strict'; - -// This file contains then/promise specific extensions that are only useful -// for node.js interop - -var Promise = require('./core.js'); - - -module.exports = Promise; - -/* Static Functions */ - -Promise.denodeify = function (fn, argumentCount) { - if ( - typeof argumentCount === 'number' && argumentCount !== Infinity - ) { - return denodeifyWithCount(fn, argumentCount); - } else { - return denodeifyWithoutCount(fn); - } -} - -var callbackFn = ( - 'function (err, res) {' + - 'if (err) { rj(err); } else { rs(res); }' + - '}' -); -function denodeifyWithCount(fn, argumentCount) { - var args = []; - for (var i = 0; i < argumentCount; i++) { - args.push('a' + i); - } - var body = [ - 'return function (' + args.join(',') + ') {', - 'var self = this;', - 'return new Promise(function (rs, rj) {', - 'var res = fn.call(', - ['self'].concat(args).concat([callbackFn]).join(','), - ');', - 'if (res &&', - '(typeof res === "object" || typeof res === "function") &&', - 'typeof res.then === "function"', - ') {rs(res);}', - '});', - '};' - ].join(''); - return Function(['Promise', 'fn'], body)(Promise, fn); -} -function denodeifyWithoutCount(fn) { - var fnLength = Math.max(fn.length - 1, 3); - var args = []; - for (var i = 0; i < fnLength; i++) { - args.push('a' + i); - } - var body = [ - 'return function (' + args.join(',') + ') {', - 'var self = this;', - 'var args;', - 'var argLength = arguments.length;', - 'if (arguments.length > ' + fnLength + ') {', - 'args = new Array(arguments.length + 1);', - 'for (var i = 0; i < arguments.length; i++) {', - 'args[i] = arguments[i];', - '}', - '}', - 'return new Promise(function (rs, rj) {', - 'var cb = ' + callbackFn + ';', - 'var res;', - 'switch (argLength) {', - args.concat(['extra']).map(function (_, index) { - return ( - 'case ' + (index) + ':' + - 'res = fn.call(' + ['self'].concat(args.slice(0, index)).concat('cb').join(',') + ');' + - 'break;' - ); - }).join(''), - 'default:', - 'args[argLength] = cb;', - 'res = fn.apply(self, args);', - '}', - - 'if (res &&', - '(typeof res === "object" || typeof res === "function") &&', - 'typeof res.then === "function"', - ') {rs(res);}', - '});', - '};' - ].join(''); - - return Function( - ['Promise', 'fn'], - body - )(Promise, fn); -} - -Promise.nodeify = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - var callback = - typeof args[args.length - 1] === 'function' ? args.pop() : null; - var ctx = this; - try { - return fn.apply(this, arguments).nodeify(callback, ctx); - } catch (ex) { - if (callback === null || typeof callback == 'undefined') { - return new Promise(function (resolve, reject) { - reject(ex); - }); - } else { - setImmediate(function () { - callback.call(ctx, ex); - }) - } - } - } -} - -Promise.prototype.nodeify = function (callback, ctx) { - if (typeof callback != 'function') return this; - - this.then(function (value) { - setImmediate(function () { - callback.call(ctx, null, value); - }); - }, function (err) { - setImmediate(function () { - callback.call(ctx, err); - }); - }); -} diff --git a/node_modules/express-handlebars/node_modules/promise/setimmediate/rejection-tracking.js b/node_modules/express-handlebars/node_modules/promise/setimmediate/rejection-tracking.js deleted file mode 100644 index 088a0de..0000000 --- a/node_modules/express-handlebars/node_modules/promise/setimmediate/rejection-tracking.js +++ /dev/null @@ -1,113 +0,0 @@ -'use strict'; - -var Promise = require('./core'); - -var DEFAULT_WHITELIST = [ - ReferenceError, - TypeError, - RangeError -]; - -var enabled = false; -exports.disable = disable; -function disable() { - enabled = false; - Promise._10 = null; - Promise._97 = null; -} - -exports.enable = enable; -function enable(options) { - options = options || {}; - if (enabled) disable(); - enabled = true; - var id = 0; - var displayId = 0; - var rejections = {}; - Promise._10 = function (promise) { - if ( - promise._81 === 2 && // IS REJECTED - rejections[promise._72] - ) { - if (rejections[promise._72].logged) { - onHandled(promise._72); - } else { - clearTimeout(rejections[promise._72].timeout); - } - delete rejections[promise._72]; - } - }; - Promise._97 = function (promise, err) { - if (promise._45 === 0) { // not yet handled - promise._72 = id++; - rejections[promise._72] = { - displayId: null, - error: err, - timeout: setTimeout( - onUnhandled.bind(null, promise._72), - // For reference errors and type errors, this almost always - // means the programmer made a mistake, so log them after just - // 100ms - // otherwise, wait 2 seconds to see if they get handled - matchWhitelist(err, DEFAULT_WHITELIST) - ? 100 - : 2000 - ), - logged: false - }; - } - }; - function onUnhandled(id) { - if ( - options.allRejections || - matchWhitelist( - rejections[id].error, - options.whitelist || DEFAULT_WHITELIST - ) - ) { - rejections[id].displayId = displayId++; - if (options.onUnhandled) { - rejections[id].logged = true; - options.onUnhandled( - rejections[id].displayId, - rejections[id].error - ); - } else { - rejections[id].logged = true; - logError( - rejections[id].displayId, - rejections[id].error - ); - } - } - } - function onHandled(id) { - if (rejections[id].logged) { - if (options.onHandled) { - options.onHandled(rejections[id].displayId, rejections[id].error); - } else if (!rejections[id].onUnhandled) { - console.warn( - 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):' - ); - console.warn( - ' This means you can ignore any previous messages of the form "Possible Unhandled Promise Rejection" with id ' + - rejections[id].displayId + '.' - ); - } - } - } -} - -function logError(id, error) { - console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):'); - var errStr = (error && (error.stack || error)) + ''; - errStr.split('\n').forEach(function (line) { - console.warn(' ' + line); - }); -} - -function matchWhitelist(error, list) { - return list.some(function (cls) { - return error instanceof cls; - }); -}
\ No newline at end of file diff --git a/node_modules/express-handlebars/node_modules/promise/setimmediate/synchronous.js b/node_modules/express-handlebars/node_modules/promise/setimmediate/synchronous.js deleted file mode 100644 index 2f97451..0000000 --- a/node_modules/express-handlebars/node_modules/promise/setimmediate/synchronous.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.enableSynchronous = function () { - Promise.prototype.isPending = function() { - return this.getState() == 0; - }; - - Promise.prototype.isFulfilled = function() { - return this.getState() == 1; - }; - - Promise.prototype.isRejected = function() { - return this.getState() == 2; - }; - - Promise.prototype.getValue = function () { - if (this._81 === 3) { - return this._65.getValue(); - } - - if (!this.isFulfilled()) { - throw new Error('Cannot get a value of an unfulfilled promise.'); - } - - return this._65; - }; - - Promise.prototype.getReason = function () { - if (this._81 === 3) { - return this._65.getReason(); - } - - if (!this.isRejected()) { - throw new Error('Cannot get a rejection reason of a non-rejected promise.'); - } - - return this._65; - }; - - Promise.prototype.getState = function () { - if (this._81 === 3) { - return this._65.getState(); - } - if (this._81 === -1 || this._81 === -2) { - return 0; - } - - return this._81; - }; -}; - -Promise.disableSynchronous = function() { - Promise.prototype.isPending = undefined; - Promise.prototype.isFulfilled = undefined; - Promise.prototype.isRejected = undefined; - Promise.prototype.getValue = undefined; - Promise.prototype.getReason = undefined; - Promise.prototype.getState = undefined; -}; diff --git a/node_modules/express-handlebars/node_modules/promise/src/core.js b/node_modules/express-handlebars/node_modules/promise/src/core.js deleted file mode 100644 index 7513f27..0000000 --- a/node_modules/express-handlebars/node_modules/promise/src/core.js +++ /dev/null @@ -1,213 +0,0 @@ -'use strict'; - -var asap = require('asap/raw'); - -function noop() {} - -// States: -// -// 0 - pending -// 1 - fulfilled with _value -// 2 - rejected with _value -// 3 - adopted the state of another promise, _value -// -// once the state is no longer pending (0) it is immutable - -// All `_` prefixed properties will be reduced to `_{random number}` -// at build time to obfuscate them and discourage their use. -// We don't use symbols or Object.defineProperty to fully hide them -// because the performance isn't good enough. - - -// to avoid using try/catch inside critical functions, we -// extract them to here. -var LAST_ERROR = null; -var IS_ERROR = {}; -function getThen(obj) { - try { - return obj.then; - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} - -function tryCallOne(fn, a) { - try { - return fn(a); - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} -function tryCallTwo(fn, a, b) { - try { - fn(a, b); - } catch (ex) { - LAST_ERROR = ex; - return IS_ERROR; - } -} - -module.exports = Promise; - -function Promise(fn) { - if (typeof this !== 'object') { - throw new TypeError('Promises must be constructed via new'); - } - if (typeof fn !== 'function') { - throw new TypeError('not a function'); - } - this._deferredState = 0; - this._state = 0; - this._value = null; - this._deferreds = null; - if (fn === noop) return; - doResolve(fn, this); -} -Promise._onHandle = null; -Promise._onReject = null; -Promise._noop = noop; - -Promise.prototype.then = function(onFulfilled, onRejected) { - if (this.constructor !== Promise) { - return safeThen(this, onFulfilled, onRejected); - } - var res = new Promise(noop); - handle(this, new Handler(onFulfilled, onRejected, res)); - return res; -}; - -function safeThen(self, onFulfilled, onRejected) { - return new self.constructor(function (resolve, reject) { - var res = new Promise(noop); - res.then(resolve, reject); - handle(self, new Handler(onFulfilled, onRejected, res)); - }); -}; -function handle(self, deferred) { - while (self._state === 3) { - self = self._value; - } - if (Promise._onHandle) { - Promise._onHandle(self); - } - if (self._state === 0) { - if (self._deferredState === 0) { - self._deferredState = 1; - self._deferreds = deferred; - return; - } - if (self._deferredState === 1) { - self._deferredState = 2; - self._deferreds = [self._deferreds, deferred]; - return; - } - self._deferreds.push(deferred); - return; - } - handleResolved(self, deferred); -} - -function handleResolved(self, deferred) { - asap(function() { - var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected; - if (cb === null) { - if (self._state === 1) { - resolve(deferred.promise, self._value); - } else { - reject(deferred.promise, self._value); - } - return; - } - var ret = tryCallOne(cb, self._value); - if (ret === IS_ERROR) { - reject(deferred.promise, LAST_ERROR); - } else { - resolve(deferred.promise, ret); - } - }); -} -function resolve(self, newValue) { - // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure - if (newValue === self) { - return reject( - self, - new TypeError('A promise cannot be resolved with itself.') - ); - } - if ( - newValue && - (typeof newValue === 'object' || typeof newValue === 'function') - ) { - var then = getThen(newValue); - if (then === IS_ERROR) { - return reject(self, LAST_ERROR); - } - if ( - then === self.then && - newValue instanceof Promise - ) { - self._state = 3; - self._value = newValue; - finale(self); - return; - } else if (typeof then === 'function') { - doResolve(then.bind(newValue), self); - return; - } - } - self._state = 1; - self._value = newValue; - finale(self); -} - -function reject(self, newValue) { - self._state = 2; - self._value = newValue; - if (Promise._onReject) { - Promise._onReject(self, newValue); - } - finale(self); -} -function finale(self) { - if (self._deferredState === 1) { - handle(self, self._deferreds); - self._deferreds = null; - } - if (self._deferredState === 2) { - for (var i = 0; i < self._deferreds.length; i++) { - handle(self, self._deferreds[i]); - } - self._deferreds = null; - } -} - -function Handler(onFulfilled, onRejected, promise){ - this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; - this.onRejected = typeof onRejected === 'function' ? onRejected : null; - this.promise = promise; -} - -/** - * Take a potentially misbehaving resolver function and make sure - * onFulfilled and onRejected are only called once. - * - * Makes no guarantees about asynchrony. - */ -function doResolve(fn, promise) { - var done = false; - var res = tryCallTwo(fn, function (value) { - if (done) return; - done = true; - resolve(promise, value); - }, function (reason) { - if (done) return; - done = true; - reject(promise, reason); - }) - if (!done && res === IS_ERROR) { - done = true; - reject(promise, LAST_ERROR); - } -} diff --git a/node_modules/express-handlebars/node_modules/promise/src/done.js b/node_modules/express-handlebars/node_modules/promise/src/done.js deleted file mode 100644 index f879317..0000000 --- a/node_modules/express-handlebars/node_modules/promise/src/done.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.prototype.done = function (onFulfilled, onRejected) { - var self = arguments.length ? this.then.apply(this, arguments) : this; - self.then(null, function (err) { - setTimeout(function () { - throw err; - }, 0); - }); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/src/es6-extensions.js b/node_modules/express-handlebars/node_modules/promise/src/es6-extensions.js deleted file mode 100644 index 0435813..0000000 --- a/node_modules/express-handlebars/node_modules/promise/src/es6-extensions.js +++ /dev/null @@ -1,107 +0,0 @@ -'use strict'; - -//This file contains the ES6 extensions to the core Promises/A+ API - -var Promise = require('./core.js'); - -module.exports = Promise; - -/* Static Functions */ - -var TRUE = valuePromise(true); -var FALSE = valuePromise(false); -var NULL = valuePromise(null); -var UNDEFINED = valuePromise(undefined); -var ZERO = valuePromise(0); -var EMPTYSTRING = valuePromise(''); - -function valuePromise(value) { - var p = new Promise(Promise._noop); - p._state = 1; - p._value = value; - return p; -} -Promise.resolve = function (value) { - if (value instanceof Promise) return value; - - if (value === null) return NULL; - if (value === undefined) return UNDEFINED; - if (value === true) return TRUE; - if (value === false) return FALSE; - if (value === 0) return ZERO; - if (value === '') return EMPTYSTRING; - - if (typeof value === 'object' || typeof value === 'function') { - try { - var then = value.then; - if (typeof then === 'function') { - return new Promise(then.bind(value)); - } - } catch (ex) { - return new Promise(function (resolve, reject) { - reject(ex); - }); - } - } - return valuePromise(value); -}; - -Promise.all = function (arr) { - var args = Array.prototype.slice.call(arr); - - return new Promise(function (resolve, reject) { - if (args.length === 0) return resolve([]); - var remaining = args.length; - function res(i, val) { - if (val && (typeof val === 'object' || typeof val === 'function')) { - if (val instanceof Promise && val.then === Promise.prototype.then) { - while (val._state === 3) { - val = val._value; - } - if (val._state === 1) return res(i, val._value); - if (val._state === 2) reject(val._value); - val.then(function (val) { - res(i, val); - }, reject); - return; - } else { - var then = val.then; - if (typeof then === 'function') { - var p = new Promise(then.bind(val)); - p.then(function (val) { - res(i, val); - }, reject); - return; - } - } - } - args[i] = val; - if (--remaining === 0) { - resolve(args); - } - } - for (var i = 0; i < args.length; i++) { - res(i, args[i]); - } - }); -}; - -Promise.reject = function (value) { - return new Promise(function (resolve, reject) { - reject(value); - }); -}; - -Promise.race = function (values) { - return new Promise(function (resolve, reject) { - values.forEach(function(value){ - Promise.resolve(value).then(resolve, reject); - }); - }); -}; - -/* Prototype Methods */ - -Promise.prototype['catch'] = function (onRejected) { - return this.then(null, onRejected); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/src/finally.js b/node_modules/express-handlebars/node_modules/promise/src/finally.js deleted file mode 100644 index f5ee0b9..0000000 --- a/node_modules/express-handlebars/node_modules/promise/src/finally.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.prototype['finally'] = function (f) { - return this.then(function (value) { - return Promise.resolve(f()).then(function () { - return value; - }); - }, function (err) { - return Promise.resolve(f()).then(function () { - throw err; - }); - }); -}; diff --git a/node_modules/express-handlebars/node_modules/promise/src/index.js b/node_modules/express-handlebars/node_modules/promise/src/index.js deleted file mode 100644 index 6e674f3..0000000 --- a/node_modules/express-handlebars/node_modules/promise/src/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -module.exports = require('./core.js'); -require('./done.js'); -require('./finally.js'); -require('./es6-extensions.js'); -require('./node-extensions.js'); -require('./synchronous.js'); diff --git a/node_modules/express-handlebars/node_modules/promise/src/node-extensions.js b/node_modules/express-handlebars/node_modules/promise/src/node-extensions.js deleted file mode 100644 index 890ae45..0000000 --- a/node_modules/express-handlebars/node_modules/promise/src/node-extensions.js +++ /dev/null @@ -1,130 +0,0 @@ -'use strict'; - -// This file contains then/promise specific extensions that are only useful -// for node.js interop - -var Promise = require('./core.js'); -var asap = require('asap'); - -module.exports = Promise; - -/* Static Functions */ - -Promise.denodeify = function (fn, argumentCount) { - if ( - typeof argumentCount === 'number' && argumentCount !== Infinity - ) { - return denodeifyWithCount(fn, argumentCount); - } else { - return denodeifyWithoutCount(fn); - } -} - -var callbackFn = ( - 'function (err, res) {' + - 'if (err) { rj(err); } else { rs(res); }' + - '}' -); -function denodeifyWithCount(fn, argumentCount) { - var args = []; - for (var i = 0; i < argumentCount; i++) { - args.push('a' + i); - } - var body = [ - 'return function (' + args.join(',') + ') {', - 'var self = this;', - 'return new Promise(function (rs, rj) {', - 'var res = fn.call(', - ['self'].concat(args).concat([callbackFn]).join(','), - ');', - 'if (res &&', - '(typeof res === "object" || typeof res === "function") &&', - 'typeof res.then === "function"', - ') {rs(res);}', - '});', - '};' - ].join(''); - return Function(['Promise', 'fn'], body)(Promise, fn); -} -function denodeifyWithoutCount(fn) { - var fnLength = Math.max(fn.length - 1, 3); - var args = []; - for (var i = 0; i < fnLength; i++) { - args.push('a' + i); - } - var body = [ - 'return function (' + args.join(',') + ') {', - 'var self = this;', - 'var args;', - 'var argLength = arguments.length;', - 'if (arguments.length > ' + fnLength + ') {', - 'args = new Array(arguments.length + 1);', - 'for (var i = 0; i < arguments.length; i++) {', - 'args[i] = arguments[i];', - '}', - '}', - 'return new Promise(function (rs, rj) {', - 'var cb = ' + callbackFn + ';', - 'var res;', - 'switch (argLength) {', - args.concat(['extra']).map(function (_, index) { - return ( - 'case ' + (index) + ':' + - 'res = fn.call(' + ['self'].concat(args.slice(0, index)).concat('cb').join(',') + ');' + - 'break;' - ); - }).join(''), - 'default:', - 'args[argLength] = cb;', - 'res = fn.apply(self, args);', - '}', - - 'if (res &&', - '(typeof res === "object" || typeof res === "function") &&', - 'typeof res.then === "function"', - ') {rs(res);}', - '});', - '};' - ].join(''); - - return Function( - ['Promise', 'fn'], - body - )(Promise, fn); -} - -Promise.nodeify = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - var callback = - typeof args[args.length - 1] === 'function' ? args.pop() : null; - var ctx = this; - try { - return fn.apply(this, arguments).nodeify(callback, ctx); - } catch (ex) { - if (callback === null || typeof callback == 'undefined') { - return new Promise(function (resolve, reject) { - reject(ex); - }); - } else { - asap(function () { - callback.call(ctx, ex); - }) - } - } - } -} - -Promise.prototype.nodeify = function (callback, ctx) { - if (typeof callback != 'function') return this; - - this.then(function (value) { - asap(function () { - callback.call(ctx, null, value); - }); - }, function (err) { - asap(function () { - callback.call(ctx, err); - }); - }); -} diff --git a/node_modules/express-handlebars/node_modules/promise/src/rejection-tracking.js b/node_modules/express-handlebars/node_modules/promise/src/rejection-tracking.js deleted file mode 100644 index 33a59a1..0000000 --- a/node_modules/express-handlebars/node_modules/promise/src/rejection-tracking.js +++ /dev/null @@ -1,113 +0,0 @@ -'use strict'; - -var Promise = require('./core'); - -var DEFAULT_WHITELIST = [ - ReferenceError, - TypeError, - RangeError -]; - -var enabled = false; -exports.disable = disable; -function disable() { - enabled = false; - Promise._onHandle = null; - Promise._onReject = null; -} - -exports.enable = enable; -function enable(options) { - options = options || {}; - if (enabled) disable(); - enabled = true; - var id = 0; - var displayId = 0; - var rejections = {}; - Promise._onHandle = function (promise) { - if ( - promise._state === 2 && // IS REJECTED - rejections[promise._rejectionId] - ) { - if (rejections[promise._rejectionId].logged) { - onHandled(promise._rejectionId); - } else { - clearTimeout(rejections[promise._rejectionId].timeout); - } - delete rejections[promise._rejectionId]; - } - }; - Promise._onReject = function (promise, err) { - if (promise._deferredState === 0) { // not yet handled - promise._rejectionId = id++; - rejections[promise._rejectionId] = { - displayId: null, - error: err, - timeout: setTimeout( - onUnhandled.bind(null, promise._rejectionId), - // For reference errors and type errors, this almost always - // means the programmer made a mistake, so log them after just - // 100ms - // otherwise, wait 2 seconds to see if they get handled - matchWhitelist(err, DEFAULT_WHITELIST) - ? 100 - : 2000 - ), - logged: false - }; - } - }; - function onUnhandled(id) { - if ( - options.allRejections || - matchWhitelist( - rejections[id].error, - options.whitelist || DEFAULT_WHITELIST - ) - ) { - rejections[id].displayId = displayId++; - if (options.onUnhandled) { - rejections[id].logged = true; - options.onUnhandled( - rejections[id].displayId, - rejections[id].error - ); - } else { - rejections[id].logged = true; - logError( - rejections[id].displayId, - rejections[id].error - ); - } - } - } - function onHandled(id) { - if (rejections[id].logged) { - if (options.onHandled) { - options.onHandled(rejections[id].displayId, rejections[id].error); - } else if (!rejections[id].onUnhandled) { - console.warn( - 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):' - ); - console.warn( - ' This means you can ignore any previous messages of the form "Possible Unhandled Promise Rejection" with id ' + - rejections[id].displayId + '.' - ); - } - } - } -} - -function logError(id, error) { - console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):'); - var errStr = (error && (error.stack || error)) + ''; - errStr.split('\n').forEach(function (line) { - console.warn(' ' + line); - }); -} - -function matchWhitelist(error, list) { - return list.some(function (cls) { - return error instanceof cls; - }); -}
\ No newline at end of file diff --git a/node_modules/express-handlebars/node_modules/promise/src/synchronous.js b/node_modules/express-handlebars/node_modules/promise/src/synchronous.js deleted file mode 100644 index 38b228f..0000000 --- a/node_modules/express-handlebars/node_modules/promise/src/synchronous.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; - -var Promise = require('./core.js'); - -module.exports = Promise; -Promise.enableSynchronous = function () { - Promise.prototype.isPending = function() { - return this.getState() == 0; - }; - - Promise.prototype.isFulfilled = function() { - return this.getState() == 1; - }; - - Promise.prototype.isRejected = function() { - return this.getState() == 2; - }; - - Promise.prototype.getValue = function () { - if (this._state === 3) { - return this._value.getValue(); - } - - if (!this.isFulfilled()) { - throw new Error('Cannot get a value of an unfulfilled promise.'); - } - - return this._value; - }; - - Promise.prototype.getReason = function () { - if (this._state === 3) { - return this._value.getReason(); - } - - if (!this.isRejected()) { - throw new Error('Cannot get a rejection reason of a non-rejected promise.'); - } - - return this._value; - }; - - Promise.prototype.getState = function () { - if (this._state === 3) { - return this._value.getState(); - } - if (this._state === -1 || this._state === -2) { - return 0; - } - - return this._state; - }; -}; - -Promise.disableSynchronous = function() { - Promise.prototype.isPending = undefined; - Promise.prototype.isFulfilled = undefined; - Promise.prototype.isRejected = undefined; - Promise.prototype.getValue = undefined; - Promise.prototype.getReason = undefined; - Promise.prototype.getState = undefined; -}; diff --git a/node_modules/express-handlebars/package.json b/node_modules/express-handlebars/package.json index bf96b49..e628fa6 100644 --- a/node_modules/express-handlebars/package.json +++ b/node_modules/express-handlebars/package.json @@ -46,7 +46,7 @@ "gitHead": "a7076983c39916a6525c244a8e3a39638759a318", "_id": "express-handlebars@3.0.0", "_shasum": "80a070bb819b09e4af2ca6d0780f75ce05e75c2f", - "_from": "express-handlebars@latest", + "_from": "express-handlebars@>=3.0.0 <4.0.0", "_npmVersion": "1.4.29", "_npmUser": { "name": "sahat", @@ -66,5 +66,6 @@ "shasum": "80a070bb819b09e4af2ca6d0780f75ce05e75c2f", "tarball": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-3.0.0.tgz" }, - "_resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-3.0.0.tgz" + "_resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-3.0.0.tgz", + "readme": "ERROR: No README data found!" } |
