diff options
Diffstat (limited to 'node_modules/makeerror')
| -rw-r--r-- | node_modules/makeerror/.travis.yml | 3 | ||||
| -rw-r--r-- | node_modules/makeerror/lib/makeerror.js | 87 | ||||
| -rw-r--r-- | node_modules/makeerror/license | 28 | ||||
| -rw-r--r-- | node_modules/makeerror/package.json | 21 | ||||
| -rw-r--r-- | node_modules/makeerror/readme.md | 77 | 
5 files changed, 216 insertions, 0 deletions
diff --git a/node_modules/makeerror/.travis.yml b/node_modules/makeerror/.travis.yml new file mode 100644 index 0000000..2d26206 --- /dev/null +++ b/node_modules/makeerror/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: +  - 0.6 diff --git a/node_modules/makeerror/lib/makeerror.js b/node_modules/makeerror/lib/makeerror.js new file mode 100644 index 0000000..9dd6d1f --- /dev/null +++ b/node_modules/makeerror/lib/makeerror.js @@ -0,0 +1,87 @@ +var tmpl = require('tmpl') + +module.exports = makeError + +function BaseError() {} +BaseError.prototype = new Error() +BaseError.prototype.toString = function() { +  return this.message +} + + +/** + * Makes an Error function with the signature: + * + *   function(message, data) + * + * You'll typically do something like: + * + *   var UnknownFileTypeError = makeError( + *     'UnknownFileTypeError', + *     'The specified type is not known.' + *   ) + *   var er = UnknownFileTypeError() + * + * `er` will have a prototype chain that ensures: + * + *   er instanceof Error + *   er instanceof UnknownFileTypeError + * + * You can also do `var er = new UnknownFileTypeError()` if you really like the + * `new` keyword. + * + * @param String  The name of the error. + * @param String  The default message string. + * @param Object  The default data object, merged with per instance data. + */ +function makeError(name, defaultMessage, defaultData) { +  defaultMessage = tmpl(defaultMessage || '') +  defaultData = defaultData || {} +  if (defaultData.proto && !(defaultData.proto instanceof BaseError)) +    throw new Error('The custom "proto" must be an Error created via makeError') + +  var CustomError = function(message, data) { +    if (!(this instanceof CustomError)) return new CustomError(message, data) + +    if (typeof message !== 'string' && !data) { +      data = message +      message = null +    } + +    this.name = name +    this.data = data || defaultData + +    if (typeof message === 'string') { +      this.message = tmpl(message, this.data) +    } else { +      this.message = defaultMessage(this.data) +    } + +    var er = new Error() +    this.stack = er.stack +    if (this.stack) { +      // remove TWO stack level: +      if (typeof Components !== 'undefined') { +        // Mozilla: +        this.stack = this.stack.substring(this.stack.indexOf('\n') + 2) +      } else if (typeof chrome !== 'undefined' || typeof process !== 'undefined') { +        // Google Chrome/Node.js: +        this.stack = this.stack.replace(/\n[^\n]*/, '') +        this.stack = this.stack.replace(/\n[^\n]*/, '') +        this.stack = ( +          this.name + +          (this.message ? (': ' + this.message) : '') + +          this.stack.substring(5) +        ) +      } +    } + +    if ('fileName' in er) this.fileName = er.fileName +    if ('lineNumber' in er) this.lineNumber = er.lineNumber +  } + +  CustomError.prototype = defaultData.proto || new BaseError() +  delete defaultData.proto + +  return CustomError +} diff --git a/node_modules/makeerror/license b/node_modules/makeerror/license new file mode 100644 index 0000000..39ae386 --- /dev/null +++ b/node_modules/makeerror/license @@ -0,0 +1,28 @@ +BSD License + +Copyright (c) 2014, Naitik Shah. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this +   list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, +   this list of conditions and the following disclaimer in the documentation +   and/or other materials provided with the distribution. + + * Neither the name Naitik Shah nor the names of its contributors may be used to +   endorse or promote products derived from this software without specific +   prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/makeerror/package.json b/node_modules/makeerror/package.json new file mode 100644 index 0000000..59da193 --- /dev/null +++ b/node_modules/makeerror/package.json @@ -0,0 +1,21 @@ +{ +  "name": "makeerror", +  "description": "A library to make errors.", +  "version": "1.0.12", +  "license": "BSD-3-Clause", +  "author": "Naitik Shah <n@daaku.org>", +  "main": "lib/makeerror", +  "repository": { +    "type": "git", +    "url": "https://github.com/daaku/nodejs-makeerror" +  }, +  "scripts": { +    "test": "NODE_PATH=./lib mocha --ui exports" +  }, +  "dependencies": { +    "tmpl": "1.0.5" +  }, +  "devDependencies": { +    "mocha": "9.1.3" +  } +} diff --git a/node_modules/makeerror/readme.md b/node_modules/makeerror/readme.md new file mode 100644 index 0000000..f4f8eb1 --- /dev/null +++ b/node_modules/makeerror/readme.md @@ -0,0 +1,77 @@ +makeerror [](http://travis-ci.org/nshah/nodejs-makeerror) +========= + +A library to make errors. + + +Basics +------ + +Makes an Error constructor function with the signature below. All arguments are +optional, and if the first argument is not a `String`, it will be assumed to be +`data`: + +```javascript +function(message, data) +``` + +You'll typically do something like: + +```javascript +var makeError = require('makeerror') +var UnknownFileTypeError = makeError( +  'UnknownFileTypeError', +  'The specified type is not known.' +) +var er = UnknownFileTypeError() +``` + +`er` will have a prototype chain that ensures: + +```javascript +er instanceof UnknownFileTypeError +er instanceof Error +``` + + +Templatized Error Messages +-------------------------- + +There is support for simple string substitutions like: + +```javascript +var makeError = require('makeerror') +var UnknownFileTypeError = makeError( +  'UnknownFileTypeError', +  'The specified type "{type}" is not known.' +) +var er = UnknownFileTypeError({ type: 'bmp' }) +``` + +Now `er.message` or `er.toString()` will return `'The specified type "bmp" is +not known.'`. + + +Prototype Hierarchies +--------------------- + +You can create simple hierarchies as well using the `prototype` chain: + +```javascript +var makeError = require('makeerror') +var ParentError = makeError('ParentError') +var ChildError = makeError( +  'ChildError', +  'The child error.', +  { proto: ParentError() } +) +var er = ChildError() +``` + +`er` will have a prototype chain that ensures: + +```javascript +er instanceof ChildError +er instanceof ParentError +er instanceof Error +```  | 
