aboutsummaryrefslogtreecommitdiff
path: root/node_modules/etag
diff options
context:
space:
mode:
authorWaref Haque <warefhaque@Warefs-MacBook-Pro.local>2016-07-17 20:24:49 +0000
committerWaref Haque <warefhaque@Warefs-MacBook-Pro.local>2016-07-17 20:24:49 +0000
commite58943c3e620f05937656fdde032254ae3373f36 (patch)
tree77072aa55efa1753c8c8ae584669cf3589551268 /node_modules/etag
parent55098c767afb0b119aaeda330eaedba5c1a87dc3 (diff)
redirect commit
Diffstat (limited to 'node_modules/etag')
-rw-r--r--node_modules/etag/HISTORY.md71
-rw-r--r--node_modules/etag/LICENSE22
-rw-r--r--node_modules/etag/README.md165
-rw-r--r--node_modules/etag/index.js132
-rw-r--r--node_modules/etag/package.json107
5 files changed, 497 insertions, 0 deletions
diff --git a/node_modules/etag/HISTORY.md b/node_modules/etag/HISTORY.md
new file mode 100644
index 0000000..bd0f26d
--- /dev/null
+++ b/node_modules/etag/HISTORY.md
@@ -0,0 +1,71 @@
+1.7.0 / 2015-06-08
+==================
+
+ * Always include entity length in ETags for hash length extensions
+ * Generate non-Stats ETags using MD5 only (no longer CRC32)
+ * Improve stat performance by removing hashing
+ * Remove base64 padding in ETags to shorten
+ * Use MD5 instead of MD4 in weak ETags over 1KB
+
+1.6.0 / 2015-05-10
+==================
+
+ * Improve support for JXcore
+ * Remove requirement of `atime` in the stats object
+ * Support "fake" stats objects in environments without `fs`
+
+1.5.1 / 2014-11-19
+==================
+
+ * deps: crc@3.2.1
+ - Minor fixes
+
+1.5.0 / 2014-10-14
+==================
+
+ * Improve string performance
+ * Slightly improve speed for weak ETags over 1KB
+
+1.4.0 / 2014-09-21
+==================
+
+ * Support "fake" stats objects
+ * Support Node.js 0.6
+
+1.3.1 / 2014-09-14
+==================
+
+ * Use the (new and improved) `crc` for crc32
+
+1.3.0 / 2014-08-29
+==================
+
+ * Default strings to strong ETags
+ * Improve speed for weak ETags over 1KB
+
+1.2.1 / 2014-08-29
+==================
+
+ * Use the (much faster) `buffer-crc32` for crc32
+
+1.2.0 / 2014-08-24
+==================
+
+ * Add support for file stat objects
+
+1.1.0 / 2014-08-24
+==================
+
+ * Add fast-path for empty entity
+ * Add weak ETag generation
+ * Shrink size of generated ETags
+
+1.0.1 / 2014-08-24
+==================
+
+ * Fix behavior of string containing Unicode
+
+1.0.0 / 2014-05-18
+==================
+
+ * Initial release
diff --git a/node_modules/etag/LICENSE b/node_modules/etag/LICENSE
new file mode 100644
index 0000000..142ede3
--- /dev/null
+++ b/node_modules/etag/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2014-2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/etag/README.md b/node_modules/etag/README.md
new file mode 100644
index 0000000..8da9e05
--- /dev/null
+++ b/node_modules/etag/README.md
@@ -0,0 +1,165 @@
+# etag
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Create simple ETags
+
+## Installation
+
+```sh
+$ npm install etag
+```
+
+## API
+
+```js
+var etag = require('etag')
+```
+
+### etag(entity, [options])
+
+Generate a strong ETag for the given entity. This should be the complete
+body of the entity. Strings, `Buffer`s, and `fs.Stats` are accepted. By
+default, a strong ETag is generated except for `fs.Stats`, which will
+generate a weak ETag (this can be overwritten by `options.weak`).
+
+```js
+res.setHeader('ETag', etag(body))
+```
+
+#### Options
+
+`etag` accepts these properties in the options object.
+
+##### weak
+
+Specifies if the generated ETag will include the weak validator mark (that
+is, the leading `W/`). The actual entity tag is the same. The default value
+is `false`, unless the `entity` is `fs.Stats`, in which case it is `true`.
+
+## Testing
+
+```sh
+$ npm test
+```
+
+## Benchmark
+
+```bash
+$ npm run-script bench
+
+> etag@1.6.0 bench nodejs-etag
+> node benchmark/index.js
+
+ http_parser@1.0
+ node@0.10.33
+ v8@3.14.5.9
+ ares@1.9.0-DEV
+ uv@0.10.29
+ zlib@1.2.3
+ modules@11
+ openssl@1.0.1j
+
+> node benchmark/body0-100b.js
+
+ 100B body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* buffer - strong x 289,198 ops/sec ±1.09% (190 runs sampled)
+* buffer - weak x 287,838 ops/sec ±0.91% (189 runs sampled)
+* string - strong x 284,586 ops/sec ±1.05% (192 runs sampled)
+* string - weak x 287,439 ops/sec ±0.82% (192 runs sampled)
+
+> node benchmark/body1-1kb.js
+
+ 1KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* buffer - strong x 212,423 ops/sec ±0.75% (193 runs sampled)
+* buffer - weak x 211,871 ops/sec ±0.74% (194 runs sampled)
+ string - strong x 205,291 ops/sec ±0.86% (194 runs sampled)
+ string - weak x 208,463 ops/sec ±0.79% (192 runs sampled)
+
+> node benchmark/body2-5kb.js
+
+ 5KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* buffer - strong x 92,901 ops/sec ±0.58% (195 runs sampled)
+* buffer - weak x 93,045 ops/sec ±0.65% (192 runs sampled)
+ string - strong x 89,621 ops/sec ±0.68% (194 runs sampled)
+ string - weak x 90,070 ops/sec ±0.70% (196 runs sampled)
+
+> node benchmark/body3-10kb.js
+
+ 10KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* buffer - strong x 54,220 ops/sec ±0.85% (192 runs sampled)
+* buffer - weak x 54,069 ops/sec ±0.83% (191 runs sampled)
+ string - strong x 53,078 ops/sec ±0.53% (194 runs sampled)
+ string - weak x 53,849 ops/sec ±0.47% (197 runs sampled)
+
+> node benchmark/body4-100kb.js
+
+ 100KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* buffer - strong x 6,673 ops/sec ±0.15% (197 runs sampled)
+* buffer - weak x 6,716 ops/sec ±0.12% (198 runs sampled)
+ string - strong x 6,357 ops/sec ±0.14% (197 runs sampled)
+ string - weak x 6,344 ops/sec ±0.21% (197 runs sampled)
+
+> node benchmark/stats.js
+
+ stats
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* real - strong x 1,671,989 ops/sec ±0.13% (197 runs sampled)
+* real - weak x 1,681,297 ops/sec ±0.12% (198 runs sampled)
+ fake - strong x 927,063 ops/sec ±0.14% (198 runs sampled)
+ fake - weak x 914,461 ops/sec ±0.41% (191 runs sampled)
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/etag.svg
+[npm-url]: https://npmjs.org/package/etag
+[node-version-image]: https://img.shields.io/node/v/etag.svg
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/etag/master.svg
+[travis-url]: https://travis-ci.org/jshttp/etag
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/etag/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/etag?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/etag.svg
+[downloads-url]: https://npmjs.org/package/etag
diff --git a/node_modules/etag/index.js b/node_modules/etag/index.js
new file mode 100644
index 0000000..b582c84
--- /dev/null
+++ b/node_modules/etag/index.js
@@ -0,0 +1,132 @@
+/*!
+ * etag
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = etag
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var crypto = require('crypto')
+var Stats = require('fs').Stats
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var base64PadCharRegExp = /=+$/
+var toString = Object.prototype.toString
+
+/**
+ * Generate an entity tag.
+ *
+ * @param {Buffer|string} entity
+ * @return {string}
+ * @private
+ */
+
+function entitytag(entity) {
+ if (entity.length === 0) {
+ // fast-path empty
+ return '"0-1B2M2Y8AsgTpgAmY7PhCfg"'
+ }
+
+ // compute hash of entity
+ var hash = crypto
+ .createHash('md5')
+ .update(entity, 'utf8')
+ .digest('base64')
+ .replace(base64PadCharRegExp, '')
+
+ // compute length of entity
+ var len = typeof entity === 'string'
+ ? Buffer.byteLength(entity, 'utf8')
+ : entity.length
+
+ return '"' + len.toString(16) + '-' + hash + '"'
+}
+
+/**
+ * Create a simple ETag.
+ *
+ * @param {string|Buffer|Stats} entity
+ * @param {object} [options]
+ * @param {boolean} [options.weak]
+ * @return {String}
+ * @public
+ */
+
+function etag(entity, options) {
+ if (entity == null) {
+ throw new TypeError('argument entity is required')
+ }
+
+ // support fs.Stats object
+ var isStats = isstats(entity)
+ var weak = options && typeof options.weak === 'boolean'
+ ? options.weak
+ : isStats
+
+ // validate argument
+ if (!isStats && typeof entity !== 'string' && !Buffer.isBuffer(entity)) {
+ throw new TypeError('argument entity must be string, Buffer, or fs.Stats')
+ }
+
+ // generate entity tag
+ var tag = isStats
+ ? stattag(entity)
+ : entitytag(entity)
+
+ return weak
+ ? 'W/' + tag
+ : tag
+}
+
+/**
+ * Determine if object is a Stats object.
+ *
+ * @param {object} obj
+ * @return {boolean}
+ * @api private
+ */
+
+function isstats(obj) {
+ // genuine fs.Stats
+ if (typeof Stats === 'function' && obj instanceof Stats) {
+ return true
+ }
+
+ // quack quack
+ return obj && typeof obj === 'object'
+ && 'ctime' in obj && toString.call(obj.ctime) === '[object Date]'
+ && 'mtime' in obj && toString.call(obj.mtime) === '[object Date]'
+ && 'ino' in obj && typeof obj.ino === 'number'
+ && 'size' in obj && typeof obj.size === 'number'
+}
+
+/**
+ * Generate a tag for a stat.
+ *
+ * @param {object} stat
+ * @return {string}
+ * @private
+ */
+
+function stattag(stat) {
+ var mtime = stat.mtime.getTime().toString(16)
+ var size = stat.size.toString(16)
+
+ return '"' + size + '-' + mtime + '"'
+}
diff --git a/node_modules/etag/package.json b/node_modules/etag/package.json
new file mode 100644
index 0000000..6b998f0
--- /dev/null
+++ b/node_modules/etag/package.json
@@ -0,0 +1,107 @@
+{
+ "_args": [
+ [
+ {
+ "name": "etag",
+ "raw": "etag@~1.7.0",
+ "rawSpec": "~1.7.0",
+ "scope": null,
+ "spec": ">=1.7.0 <1.8.0",
+ "type": "range"
+ },
+ "/Users/warefhaque/CSC309/solutions_repo/node_modules/express"
+ ]
+ ],
+ "_from": "etag@>=1.7.0 <1.8.0",
+ "_id": "etag@1.7.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/etag",
+ "_npmUser": {
+ "email": "doug@somethingdoug.com",
+ "name": "dougwilson"
+ },
+ "_npmVersion": "1.4.28",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "etag",
+ "raw": "etag@~1.7.0",
+ "rawSpec": "~1.7.0",
+ "scope": null,
+ "spec": ">=1.7.0 <1.8.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/express",
+ "/send"
+ ],
+ "_resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz",
+ "_shasum": "03d30b5f67dd6e632d2945d30d6652731a34d5d8",
+ "_shrinkwrap": null,
+ "_spec": "etag@~1.7.0",
+ "_where": "/Users/warefhaque/CSC309/solutions_repo/node_modules/express",
+ "bugs": {
+ "url": "https://github.com/jshttp/etag/issues"
+ },
+ "contributors": [
+ {
+ "email": "doug@somethingdoug.com",
+ "name": "Douglas Christopher Wilson"
+ },
+ {
+ "email": "david.bjorklund@gmail.com",
+ "name": "David Björklund"
+ }
+ ],
+ "dependencies": {},
+ "description": "Create simple ETags",
+ "devDependencies": {
+ "beautify-benchmark": "0.2.4",
+ "benchmark": "1.0.0",
+ "istanbul": "0.3.14",
+ "mocha": "~1.21.4",
+ "seedrandom": "2.3.11"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "03d30b5f67dd6e632d2945d30d6652731a34d5d8",
+ "tarball": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "README.md",
+ "index.js"
+ ],
+ "gitHead": "a511f5c8c930fd9546dbd88acb080f96bc788cfc",
+ "homepage": "https://github.com/jshttp/etag",
+ "keywords": [
+ "etag",
+ "http",
+ "res"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "email": "doug@somethingdoug.com",
+ "name": "dougwilson"
+ }
+ ],
+ "name": "etag",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/etag.git"
+ },
+ "scripts": {
+ "bench": "node benchmark/index.js",
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "version": "1.7.0"
+}