- Running on Node Version %NODE_VERSION_STRING%
172 |
LevelDown DB entries
174 |
├── .gitignore
├── README.md
├── app.js
├── package-lock.json
├── package.json
└── page.html
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | dbout/
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # N-API demo
2 | This project is a simple npm module http server which uses the N-API port of leveldown in order to test Node.js with N-API.
3 |
4 | **Cloning**
5 | Clone the napi_demo project to run the app:
6 |
7 | ```
8 | git clone https://github.com/boingoing/napi_demo.git
9 | ```
10 |
11 | **Installing**
12 | Install the app via standard npm method:
13 |
14 | ```
15 | npm install
16 | ```
17 |
18 | **Building**
19 | The leveldown module we are using here is N-API-enabled but this module does not have a published binary so we will need to build it to run this demo app. Our recommendation is to build leveldown with node-gyp which you can install globally:
20 |
21 | ```
22 | npm install node-gyp -g
23 | ```
24 |
25 | Building leveldown itself:
26 |
27 | ```
28 | cd [path_to_napi_demo]/node_modules/leveldown
29 | node-gyp configure
30 | node-gyp build
31 | ```
32 |
33 | **Running**
34 | If you are running a v8.x nightly build of Node.js with N-API as an experimental feature, you will need to add the `--napi-modules` command line argument in order to load the N-API version of leveldown.
35 |
36 | ```
37 | node [--napi-modules] app.js [--port number] [--path leveldb_path] [--verbose] [--test]
38 | ```
39 |
40 | **Using**
41 | This module starts an http server on the localhost by default listening on port 1338.
42 |
43 | ```
44 | Options:
45 | --port Start an http server listening on this port [number] [default: 1338]
46 | --path Path in which we will create a leveldb database
47 | [string] [default: "./dbout"]
48 | --verbose Enable verbose logging [boolean] [default: false]
49 | --test Perform a simple test of the leveldown module (Does not start the
50 | http server) [boolean] [default: false]
51 | --help Show help [boolean]
52 | --version Show version number [boolean]
53 | ```
54 |
--------------------------------------------------------------------------------
/app.js:
--------------------------------------------------------------------------------
1 | var leveldown = require('leveldown');
2 | var http = require('http');
3 | var fs = require("fs");
4 | var yargs = require("yargs");
5 | require('es6-shim');
6 |
7 | var argv = parseArgs(yargs);
8 | const useLogFile = argv.log != '';
9 | const logFileStream = useLogFile ? fs.createWriteStream(argv.log, { flags: 'a' }) : undefined;
10 |
11 | trace('Detected Node: ' + getNodeVersion());
12 |
13 | if (argv.test) {
14 | simpleTest();
15 | } else {
16 | createServer();
17 | }
18 |
19 | function createServer() {
20 | var server = http.createServer(createHomePage);
21 | server.listen(argv.port);
22 | trace(`Server running at http://127.0.0.1:${argv.port}`);
23 | }
24 |
25 | function createHomePage(request, response) {
26 | var rqUrl = request.url;
27 |
28 | trace('Request: ' + rqUrl);
29 |
30 | if(rqUrl === '/') {
31 | function databaseReadCallback(dbValues) {
32 | trace(`Found ${dbValues.length} entries.`);
33 |
34 | //build dynamic values for replacement in HTML Template
35 | var variableReplacementMap = new Map();
36 | variableReplacementMap.set('%NODE_VERSION_STRING%', getNodeVersion());
37 | variableReplacementMap.set('%DB_VALUES%', JSON.stringify(dbValues));
38 |
39 | //render HTML
40 | response.writeHead(200, { "Content-Type": "text/html", 'Cache-control': 'no-cache' });
41 | response.write(buildFinalHTML(variableReplacementMap));
42 | response.end();
43 | }
44 |
45 | trace('Fetching entries from leveldown database...');
46 | readFromDatabase(databaseReadCallback);
47 | }
48 | if(rqUrl === "/OnButtonClicked") {
49 | function successCallback() {
50 | trace('Successfully added entry.');
51 |
52 | response.setHeader('Cache-Control', 'no-cache');
53 | response.end();
54 | }
55 |
56 | var key = getTime();
57 | var value = getNodeVersion();
58 | trace(`Adding entry for "${key}" to leveldown database...`);
59 | addToDatabase(key, value, successCallback);
60 | }
61 | if(rqUrl === "/favicon.ico") {
62 | response.writeHead(404, { "Content-Type": "text/html", 'Cache-control': 'no-cache' });
63 | response.end();
64 | }
65 | }
66 |
67 | function buildFinalHTML(variableMap) {
68 | var htmlPageTemplate = fs.readFileSync(__dirname + "/page.html", 'utf8');
69 |
70 | variableMap.forEach(function (value, key) {
71 | //Bad values that are likely an error.
72 | //We don't want to abort but we should report them for later triage.
73 | if (value === undefined || value === NaN || value === Infinity) {
74 | trace(`Potentially bad value encountered in templating -- ${value} @ timestamp ${Date.now()}.`);
75 | }
76 |
77 | var allregex = new RegExp(key, 'g')
78 | htmlPageTemplate = htmlPageTemplate.replace(allregex, value);
79 | });
80 | return htmlPageTemplate;
81 | }
82 |
83 | function padUnder10(v) {
84 | return v < 10 ? '0' + v : v;
85 | }
86 |
87 | function getNodeVersion() {
88 | return process.versions.node + (process.jsEngine === "chakracore" ? ' (ChakraCore)' : '');
89 | }
90 |
91 | function getTime() {
92 | var date = new Date();
93 | var y = date.getFullYear();
94 | var mon = padUnder10(date.getMonth() + 1);
95 | var d = padUnder10(date.getDate());
96 | var h = padUnder10(date.getHours());
97 | var min = padUnder10(date.getMinutes());
98 | var s = padUnder10(date.getSeconds());
99 | return `${y}/${mon}/${d} ${h}:${min}:${s}`;
100 | }
101 |
102 | function getDatabase() {
103 | return leveldown(argv.path);
104 | }
105 |
106 | function readFromDatabase(callback) {
107 | var db = getDatabase();
108 | var dbValues = [];
109 |
110 | verboseTrace('leveldown#open...');
111 | db.open(function(err) {
112 | if(!err) {
113 | verboseTrace('leveldown#open succeeded');
114 | var count = 0;
115 |
116 | verboseTrace('leveldown#iterator...');
117 | var iterator = db.iterator({
118 | keyAsBuffer: false,
119 | valueAsBuffer: false,
120 | fillCache: true
121 | });
122 | verboseTrace('leveldown#iterator succeeded');
123 |
124 | function endCallback(err) {
125 | if (!err) {
126 | verboseTrace(`iterator#end succeeded: Found ${count} entries.`);
127 | } else {
128 | verboseTrace(`iterator#end failed: ${err}`);
129 | }
130 | verboseTrace('leveldown#close...');
131 | db.close(function(err){
132 | if (!err) {
133 | verboseTrace('leveldown#close succeeded');
134 | callback(dbValues);
135 | } else {
136 | verboseTrace('leveldown#close failed: ' + err);
137 | }
138 | });
139 | }
140 |
141 | function nextCallback(err, key, value) {
142 | if (!err) {
143 | verboseTrace(`iterator#next succeeded: key="${key}" value="${value}"`);
144 |
145 | if (err === undefined && key === undefined && value === undefined) {
146 | verboseTrace('iterator#end...');
147 | iterator.end(endCallback);
148 | } else {
149 | dbValues.push([key, value]);
150 | count++;
151 |
152 | verboseTrace('iterator#next...')
153 | iterator.next(nextCallback);
154 | }
155 | } else {
156 | verboseTrace("iterator#next failed: " + err);
157 | }
158 | }
159 |
160 | verboseTrace("iterator#next...");
161 | iterator.next(nextCallback);
162 | } else {
163 | verboseTrace('leveldown#open failed: ' + err);
164 | }
165 | });
166 | }
167 |
168 | function addToDatabase(key, value, callback) {
169 | var db = getDatabase();
170 |
171 | verboseTrace('leveldown#open...');
172 | db.open(function(err) {
173 | if(!err) {
174 | verboseTrace('leveldown#open succeeded');
175 | verboseTrace('leveldown#put("' + key + '", "' + value + '")...');
176 |
177 | db.put(key, value, { sync: true }, function(err) {
178 | if(!err) {
179 | verboseTrace('leveldown#put succeeded');
180 | } else {
181 | verboseTrace('leveldown#put failed: ' + err);
182 | }
183 |
184 | verboseTrace('leveldown#close...');
185 | db.close(function(err) {
186 | if (!err) {
187 | verboseTrace('leveldown#close succeeded');
188 | callback();
189 | } else {
190 | verboseTrace('leveldown#close failed: ' + err);
191 | }
192 | });
193 | });
194 | } else {
195 | verboseTrace('leveldown#open failed: ' + err);
196 | }
197 | });
198 | }
199 |
200 | function trace(msg) {
201 | console.log(msg);
202 | if (useLogFile) {
203 | logFileStream.write(`${msg}\n`);
204 | }
205 | }
206 |
207 | function verboseTrace(msg) {
208 | if (argv.verbose) {
209 | trace(msg);
210 | }
211 | }
212 |
213 | function parseArgs(yargs) {
214 | var _argv = yargs
215 | .option('port', {
216 | default: 1338,
217 | type: 'number',
218 | describe: 'Start an http server listening on this port'
219 | })
220 | .option('path', {
221 | default: './dbout',
222 | type: 'string',
223 | describe: 'Path in which we will create a leveldb database'
224 | })
225 | .option('verbose', {
226 | default: false,
227 | type: 'boolean',
228 | describe: 'Enable verbose logging'
229 | })
230 | .option('test', {
231 | default: false,
232 | type: 'boolean',
233 | describe: 'Perform a simple test of the leveldown module (Does not start the http server)'
234 | })
235 | .option('log', {
236 | default: '',
237 | type: 'string',
238 | describe: 'Filename of an optional log'
239 | })
240 | .usage('Simple http server using leveldown to test Node.js with N-API.\nUsage: $0 --port [number] --path [database_path] --verbose --test --log [filename]')
241 | .help('help')
242 | .version()
243 | .argv;
244 |
245 | return _argv;
246 | }
247 |
248 | function simpleTest() {
249 | var time = getTime();
250 | function testAddCallback() {
251 | function testReadCallback(values) {
252 | if (values.find(v => { return v[0] === time; })) {
253 | trace('Test passed!');
254 | } else {
255 | trace('Test failed!');
256 | }
257 | }
258 | readFromDatabase(testReadCallback);
259 | }
260 | addToDatabase(time, getNodeVersion(), testAddCallback);
261 | }
262 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "napi-demo",
3 | "version": "1.1.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "abbrev": {
8 | "version": "1.1.1",
9 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
10 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
11 | },
12 | "abstract-leveldown": {
13 | "version": "2.4.1",
14 | "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz",
15 | "integrity": "sha1-s7/tuITraToSd18MVenwpCDM7mQ=",
16 | "requires": {
17 | "xtend": "4.0.1"
18 | }
19 | },
20 | "after": {
21 | "version": "0.8.2",
22 | "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
23 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
24 | },
25 | "ajv": {
26 | "version": "5.2.3",
27 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz",
28 | "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=",
29 | "requires": {
30 | "co": "4.6.0",
31 | "fast-deep-equal": "1.0.0",
32 | "json-schema-traverse": "0.3.1",
33 | "json-stable-stringify": "1.0.1"
34 | }
35 | },
36 | "ansi": {
37 | "version": "0.3.1",
38 | "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz",
39 | "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE="
40 | },
41 | "ansi-regex": {
42 | "version": "2.1.1",
43 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
44 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
45 | },
46 | "are-we-there-yet": {
47 | "version": "1.1.4",
48 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
49 | "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
50 | "requires": {
51 | "delegates": "1.0.0",
52 | "readable-stream": "2.0.6"
53 | }
54 | },
55 | "array-index": {
56 | "version": "1.0.0",
57 | "resolved": "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz",
58 | "integrity": "sha1-7FanSe4QPk4Ix5C5w1PfFgVbl/k=",
59 | "requires": {
60 | "debug": "2.6.9",
61 | "es6-symbol": "3.1.1"
62 | }
63 | },
64 | "asn1": {
65 | "version": "0.2.3",
66 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
67 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
68 | },
69 | "assert-plus": {
70 | "version": "1.0.0",
71 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
72 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
73 | },
74 | "async": {
75 | "version": "1.5.2",
76 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
77 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
78 | },
79 | "asynckit": {
80 | "version": "0.4.0",
81 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
82 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
83 | },
84 | "aws-sign2": {
85 | "version": "0.7.0",
86 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
87 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
88 | },
89 | "aws4": {
90 | "version": "1.6.0",
91 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
92 | "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
93 | },
94 | "balanced-match": {
95 | "version": "1.0.0",
96 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
97 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
98 | },
99 | "bcrypt-pbkdf": {
100 | "version": "1.0.1",
101 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
102 | "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
103 | "optional": true,
104 | "requires": {
105 | "tweetnacl": "0.14.5"
106 | }
107 | },
108 | "bindings": {
109 | "version": "1.2.1",
110 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
111 | "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE="
112 | },
113 | "bl": {
114 | "version": "1.0.3",
115 | "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz",
116 | "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=",
117 | "requires": {
118 | "readable-stream": "2.0.6"
119 | }
120 | },
121 | "block-stream": {
122 | "version": "0.0.9",
123 | "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
124 | "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
125 | "requires": {
126 | "inherits": "2.0.3"
127 | }
128 | },
129 | "boom": {
130 | "version": "4.3.1",
131 | "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
132 | "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
133 | "requires": {
134 | "hoek": "4.2.0"
135 | }
136 | },
137 | "brace-expansion": {
138 | "version": "1.1.8",
139 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
140 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
141 | "requires": {
142 | "balanced-match": "1.0.0",
143 | "concat-map": "0.0.1"
144 | }
145 | },
146 | "builtin-modules": {
147 | "version": "1.1.1",
148 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
149 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8="
150 | },
151 | "camelcase": {
152 | "version": "4.1.0",
153 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
154 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
155 | },
156 | "caseless": {
157 | "version": "0.12.0",
158 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
159 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
160 | },
161 | "chownr": {
162 | "version": "1.0.1",
163 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
164 | "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE="
165 | },
166 | "cliui": {
167 | "version": "3.2.0",
168 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
169 | "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
170 | "requires": {
171 | "string-width": "1.0.2",
172 | "strip-ansi": "3.0.1",
173 | "wrap-ansi": "2.1.0"
174 | },
175 | "dependencies": {
176 | "string-width": {
177 | "version": "1.0.2",
178 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
179 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
180 | "requires": {
181 | "code-point-at": "1.1.0",
182 | "is-fullwidth-code-point": "1.0.0",
183 | "strip-ansi": "3.0.1"
184 | }
185 | }
186 | }
187 | },
188 | "co": {
189 | "version": "4.6.0",
190 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
191 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
192 | },
193 | "code-point-at": {
194 | "version": "1.1.0",
195 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
196 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
197 | },
198 | "combined-stream": {
199 | "version": "1.0.5",
200 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
201 | "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
202 | "requires": {
203 | "delayed-stream": "1.0.0"
204 | }
205 | },
206 | "concat-map": {
207 | "version": "0.0.1",
208 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
209 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
210 | },
211 | "core-util-is": {
212 | "version": "1.0.2",
213 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
214 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
215 | },
216 | "cross-spawn": {
217 | "version": "5.1.0",
218 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
219 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
220 | "requires": {
221 | "lru-cache": "4.1.1",
222 | "shebang-command": "1.2.0",
223 | "which": "1.3.0"
224 | }
225 | },
226 | "cryptiles": {
227 | "version": "3.1.2",
228 | "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
229 | "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
230 | "requires": {
231 | "boom": "5.2.0"
232 | },
233 | "dependencies": {
234 | "boom": {
235 | "version": "5.2.0",
236 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
237 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
238 | "requires": {
239 | "hoek": "4.2.0"
240 | }
241 | }
242 | }
243 | },
244 | "d": {
245 | "version": "1.0.0",
246 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
247 | "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
248 | "requires": {
249 | "es5-ext": "0.10.30"
250 | }
251 | },
252 | "dashdash": {
253 | "version": "1.14.1",
254 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
255 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
256 | "requires": {
257 | "assert-plus": "1.0.0"
258 | }
259 | },
260 | "debug": {
261 | "version": "2.6.9",
262 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
263 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
264 | "requires": {
265 | "ms": "2.0.0"
266 | }
267 | },
268 | "decamelize": {
269 | "version": "1.2.0",
270 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
271 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
272 | },
273 | "deep-extend": {
274 | "version": "0.4.2",
275 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
276 | "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8="
277 | },
278 | "delayed-stream": {
279 | "version": "1.0.0",
280 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
281 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
282 | },
283 | "delegates": {
284 | "version": "1.0.0",
285 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
286 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
287 | },
288 | "duplexer2": {
289 | "version": "0.0.2",
290 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
291 | "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
292 | "requires": {
293 | "readable-stream": "1.1.14"
294 | },
295 | "dependencies": {
296 | "isarray": {
297 | "version": "0.0.1",
298 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
299 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
300 | },
301 | "readable-stream": {
302 | "version": "1.1.14",
303 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
304 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
305 | "requires": {
306 | "core-util-is": "1.0.2",
307 | "inherits": "2.0.3",
308 | "isarray": "0.0.1",
309 | "string_decoder": "0.10.31"
310 | }
311 | }
312 | }
313 | },
314 | "ecc-jsbn": {
315 | "version": "0.1.1",
316 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
317 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
318 | "optional": true,
319 | "requires": {
320 | "jsbn": "0.1.1"
321 | }
322 | },
323 | "end-of-stream": {
324 | "version": "1.4.0",
325 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
326 | "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
327 | "requires": {
328 | "once": "1.4.0"
329 | }
330 | },
331 | "errno": {
332 | "version": "0.1.4",
333 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz",
334 | "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=",
335 | "requires": {
336 | "prr": "0.0.0"
337 | }
338 | },
339 | "error-ex": {
340 | "version": "1.3.1",
341 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
342 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
343 | "requires": {
344 | "is-arrayish": "0.2.1"
345 | }
346 | },
347 | "es5-ext": {
348 | "version": "0.10.30",
349 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz",
350 | "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=",
351 | "requires": {
352 | "es6-iterator": "2.0.1",
353 | "es6-symbol": "3.1.1"
354 | }
355 | },
356 | "es6-iterator": {
357 | "version": "2.0.1",
358 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz",
359 | "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=",
360 | "requires": {
361 | "d": "1.0.0",
362 | "es5-ext": "0.10.30",
363 | "es6-symbol": "3.1.1"
364 | }
365 | },
366 | "es6-shim": {
367 | "version": "0.35.3",
368 | "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.3.tgz",
369 | "integrity": "sha1-m/tzY/7//4emzbbNk+QF7DxLbyY="
370 | },
371 | "es6-symbol": {
372 | "version": "3.1.1",
373 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
374 | "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
375 | "requires": {
376 | "d": "1.0.0",
377 | "es5-ext": "0.10.30"
378 | }
379 | },
380 | "execa": {
381 | "version": "0.7.0",
382 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
383 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
384 | "requires": {
385 | "cross-spawn": "5.1.0",
386 | "get-stream": "3.0.0",
387 | "is-stream": "1.1.0",
388 | "npm-run-path": "2.0.2",
389 | "p-finally": "1.0.0",
390 | "signal-exit": "3.0.2",
391 | "strip-eof": "1.0.0"
392 | }
393 | },
394 | "execspawn": {
395 | "version": "1.0.1",
396 | "resolved": "https://registry.npmjs.org/execspawn/-/execspawn-1.0.1.tgz",
397 | "integrity": "sha1-gob53efOzeeQX73ATiTzaPI/jaY=",
398 | "requires": {
399 | "util-extend": "1.0.3"
400 | }
401 | },
402 | "expand-template": {
403 | "version": "1.1.0",
404 | "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.0.tgz",
405 | "integrity": "sha512-kkjwkMqj0h4w/sb32ERCDxCQkREMCAgS39DscDnSwDsbxnwwM1BTZySdC3Bn1lhY7vL08n9GoO/fVTynjDgRyQ=="
406 | },
407 | "extend": {
408 | "version": "3.0.1",
409 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
410 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
411 | },
412 | "extsprintf": {
413 | "version": "1.3.0",
414 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
415 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
416 | },
417 | "fast-deep-equal": {
418 | "version": "1.0.0",
419 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
420 | "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8="
421 | },
422 | "fast-future": {
423 | "version": "1.0.2",
424 | "resolved": "https://registry.npmjs.org/fast-future/-/fast-future-1.0.2.tgz",
425 | "integrity": "sha1-hDWpqqAteSSNF9cE52JZMB2ZKAo="
426 | },
427 | "find-up": {
428 | "version": "2.1.0",
429 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
430 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
431 | "requires": {
432 | "locate-path": "2.0.0"
433 | }
434 | },
435 | "forever-agent": {
436 | "version": "0.6.1",
437 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
438 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
439 | },
440 | "form-data": {
441 | "version": "2.3.1",
442 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
443 | "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
444 | "requires": {
445 | "asynckit": "0.4.0",
446 | "combined-stream": "1.0.5",
447 | "mime-types": "2.1.17"
448 | }
449 | },
450 | "fs.realpath": {
451 | "version": "1.0.0",
452 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
453 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
454 | },
455 | "fstream": {
456 | "version": "1.0.11",
457 | "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
458 | "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
459 | "requires": {
460 | "graceful-fs": "4.1.11",
461 | "inherits": "2.0.3",
462 | "mkdirp": "0.5.1",
463 | "rimraf": "2.6.2"
464 | }
465 | },
466 | "gauge": {
467 | "version": "1.2.7",
468 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz",
469 | "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=",
470 | "requires": {
471 | "ansi": "0.3.1",
472 | "has-unicode": "2.0.1",
473 | "lodash.pad": "4.5.1",
474 | "lodash.padend": "4.6.1",
475 | "lodash.padstart": "4.6.1"
476 | }
477 | },
478 | "get-caller-file": {
479 | "version": "1.0.2",
480 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
481 | "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U="
482 | },
483 | "get-stream": {
484 | "version": "3.0.0",
485 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
486 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
487 | },
488 | "getpass": {
489 | "version": "0.1.7",
490 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
491 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
492 | "requires": {
493 | "assert-plus": "1.0.0"
494 | }
495 | },
496 | "ghreleases": {
497 | "version": "1.0.6",
498 | "resolved": "https://registry.npmjs.org/ghreleases/-/ghreleases-1.0.6.tgz",
499 | "integrity": "sha512-uySVPT5T9uP1xeWR7nl3WD8/JjJJXAph/0zdgUQJ7ovFpL3rxBT/HT0sO6w0GDWCj2gwXvzxBKrIeJAgBhs+fw==",
500 | "requires": {
501 | "after": "0.8.2",
502 | "ghrepos": "2.0.0",
503 | "ghutils": "3.2.1",
504 | "simple-mime": "0.1.0",
505 | "url-template": "2.0.8",
506 | "xtend": "4.0.1"
507 | }
508 | },
509 | "ghrepos": {
510 | "version": "2.0.0",
511 | "resolved": "https://registry.npmjs.org/ghrepos/-/ghrepos-2.0.0.tgz",
512 | "integrity": "sha1-1m6unZijtTmORg1tt+EKdCaS6Bs=",
513 | "requires": {
514 | "ghutils": "3.2.1"
515 | }
516 | },
517 | "ghutils": {
518 | "version": "3.2.1",
519 | "resolved": "https://registry.npmjs.org/ghutils/-/ghutils-3.2.1.tgz",
520 | "integrity": "sha1-T87f+sk1/KzgbhKhfGF04sKf/k8=",
521 | "requires": {
522 | "jsonist": "1.3.0",
523 | "xtend": "4.0.1"
524 | }
525 | },
526 | "github-from-package": {
527 | "version": "0.0.0",
528 | "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
529 | "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4="
530 | },
531 | "glob": {
532 | "version": "7.1.2",
533 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
534 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
535 | "requires": {
536 | "fs.realpath": "1.0.0",
537 | "inflight": "1.0.6",
538 | "inherits": "2.0.3",
539 | "minimatch": "3.0.4",
540 | "once": "1.4.0",
541 | "path-is-absolute": "1.0.1"
542 | }
543 | },
544 | "graceful-fs": {
545 | "version": "4.1.11",
546 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
547 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
548 | },
549 | "har-schema": {
550 | "version": "2.0.0",
551 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
552 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
553 | },
554 | "har-validator": {
555 | "version": "5.0.3",
556 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
557 | "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
558 | "requires": {
559 | "ajv": "5.2.3",
560 | "har-schema": "2.0.0"
561 | }
562 | },
563 | "has-unicode": {
564 | "version": "2.0.1",
565 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
566 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
567 | },
568 | "hawk": {
569 | "version": "6.0.2",
570 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
571 | "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
572 | "requires": {
573 | "boom": "4.3.1",
574 | "cryptiles": "3.1.2",
575 | "hoek": "4.2.0",
576 | "sntp": "2.0.2"
577 | }
578 | },
579 | "hoek": {
580 | "version": "4.2.0",
581 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
582 | "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ=="
583 | },
584 | "hosted-git-info": {
585 | "version": "2.5.0",
586 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
587 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg=="
588 | },
589 | "http-signature": {
590 | "version": "1.2.0",
591 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
592 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
593 | "requires": {
594 | "assert-plus": "1.0.0",
595 | "jsprim": "1.4.1",
596 | "sshpk": "1.13.1"
597 | }
598 | },
599 | "hyperquest": {
600 | "version": "1.2.0",
601 | "resolved": "https://registry.npmjs.org/hyperquest/-/hyperquest-1.2.0.tgz",
602 | "integrity": "sha1-OeH+9miI3Hzg3sbA3YFPb8iUStU=",
603 | "requires": {
604 | "duplexer2": "0.0.2",
605 | "through2": "0.6.5"
606 | }
607 | },
608 | "inflight": {
609 | "version": "1.0.6",
610 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
611 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
612 | "requires": {
613 | "once": "1.4.0",
614 | "wrappy": "1.0.2"
615 | }
616 | },
617 | "inherits": {
618 | "version": "2.0.3",
619 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
620 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
621 | },
622 | "ini": {
623 | "version": "1.3.4",
624 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
625 | "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4="
626 | },
627 | "invert-kv": {
628 | "version": "1.0.0",
629 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
630 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
631 | },
632 | "is-arrayish": {
633 | "version": "0.2.1",
634 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
635 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
636 | },
637 | "is-builtin-module": {
638 | "version": "1.0.0",
639 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
640 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
641 | "requires": {
642 | "builtin-modules": "1.1.1"
643 | }
644 | },
645 | "is-fullwidth-code-point": {
646 | "version": "1.0.0",
647 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
648 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
649 | "requires": {
650 | "number-is-nan": "1.0.1"
651 | }
652 | },
653 | "is-stream": {
654 | "version": "1.1.0",
655 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
656 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
657 | },
658 | "is-typedarray": {
659 | "version": "1.0.0",
660 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
661 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
662 | },
663 | "isarray": {
664 | "version": "1.0.0",
665 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
666 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
667 | },
668 | "isexe": {
669 | "version": "2.0.0",
670 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
671 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
672 | },
673 | "isstream": {
674 | "version": "0.1.2",
675 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
676 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
677 | },
678 | "jsbn": {
679 | "version": "0.1.1",
680 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
681 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
682 | "optional": true
683 | },
684 | "json-schema": {
685 | "version": "0.2.3",
686 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
687 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
688 | },
689 | "json-schema-traverse": {
690 | "version": "0.3.1",
691 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
692 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
693 | },
694 | "json-stable-stringify": {
695 | "version": "1.0.1",
696 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
697 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
698 | "requires": {
699 | "jsonify": "0.0.0"
700 | }
701 | },
702 | "json-stringify-safe": {
703 | "version": "5.0.1",
704 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
705 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
706 | },
707 | "jsonify": {
708 | "version": "0.0.0",
709 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
710 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
711 | },
712 | "jsonist": {
713 | "version": "1.3.0",
714 | "resolved": "https://registry.npmjs.org/jsonist/-/jsonist-1.3.0.tgz",
715 | "integrity": "sha1-wMdLle8clSA4YZsp76UgscyYdVY=",
716 | "requires": {
717 | "bl": "1.0.3",
718 | "hyperquest": "1.2.0",
719 | "json-stringify-safe": "5.0.1",
720 | "xtend": "4.0.1"
721 | }
722 | },
723 | "jsprim": {
724 | "version": "1.4.1",
725 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
726 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
727 | "requires": {
728 | "assert-plus": "1.0.0",
729 | "extsprintf": "1.3.0",
730 | "json-schema": "0.2.3",
731 | "verror": "1.10.0"
732 | }
733 | },
734 | "lcid": {
735 | "version": "1.0.0",
736 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
737 | "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
738 | "requires": {
739 | "invert-kv": "1.0.0"
740 | }
741 | },
742 | "level-errors": {
743 | "version": "1.1.1",
744 | "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.1.1.tgz",
745 | "integrity": "sha512-9MIIbizlJgWFQ6m45ehVuSrpzFxwJQmZYD6sfmiizhdmWMNUf41mBYpUJEeCslIa3sB4vdsIFCimPdDZkWznwA==",
746 | "requires": {
747 | "errno": "0.1.4"
748 | }
749 | },
750 | "level-iterator-stream": {
751 | "version": "1.3.1",
752 | "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz",
753 | "integrity": "sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0=",
754 | "requires": {
755 | "inherits": "2.0.3",
756 | "level-errors": "1.1.1",
757 | "readable-stream": "1.1.14",
758 | "xtend": "4.0.1"
759 | },
760 | "dependencies": {
761 | "isarray": {
762 | "version": "0.0.1",
763 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
764 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
765 | },
766 | "readable-stream": {
767 | "version": "1.1.14",
768 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
769 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
770 | "requires": {
771 | "core-util-is": "1.0.2",
772 | "inherits": "2.0.3",
773 | "isarray": "0.0.1",
774 | "string_decoder": "0.10.31"
775 | }
776 | }
777 | }
778 | },
779 | "leveldown": {
780 | "version": "git://github.com/sampsongao/leveldown.git#d37a2f7825aad53570a00785226f82e5c00c1a06",
781 | "requires": {
782 | "abstract-leveldown": "2.4.1",
783 | "bindings": "1.2.1",
784 | "fast-future": "1.0.2",
785 | "node-addon-api": "1.0.0",
786 | "prebuild": "4.5.0"
787 | }
788 | },
789 | "load-json-file": {
790 | "version": "2.0.0",
791 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
792 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
793 | "requires": {
794 | "graceful-fs": "4.1.11",
795 | "parse-json": "2.2.0",
796 | "pify": "2.3.0",
797 | "strip-bom": "3.0.0"
798 | }
799 | },
800 | "locate-path": {
801 | "version": "2.0.0",
802 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
803 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
804 | "requires": {
805 | "p-locate": "2.0.0",
806 | "path-exists": "3.0.0"
807 | }
808 | },
809 | "lodash.pad": {
810 | "version": "4.5.1",
811 | "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz",
812 | "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA="
813 | },
814 | "lodash.padend": {
815 | "version": "4.6.1",
816 | "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz",
817 | "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4="
818 | },
819 | "lodash.padstart": {
820 | "version": "4.6.1",
821 | "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz",
822 | "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs="
823 | },
824 | "lru-cache": {
825 | "version": "4.1.1",
826 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
827 | "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
828 | "requires": {
829 | "pseudomap": "1.0.2",
830 | "yallist": "2.1.2"
831 | }
832 | },
833 | "mem": {
834 | "version": "1.1.0",
835 | "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
836 | "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
837 | "requires": {
838 | "mimic-fn": "1.1.0"
839 | }
840 | },
841 | "mime-db": {
842 | "version": "1.30.0",
843 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
844 | "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
845 | },
846 | "mime-types": {
847 | "version": "2.1.17",
848 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
849 | "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
850 | "requires": {
851 | "mime-db": "1.30.0"
852 | }
853 | },
854 | "mimic-fn": {
855 | "version": "1.1.0",
856 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
857 | "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg="
858 | },
859 | "minimatch": {
860 | "version": "3.0.4",
861 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
862 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
863 | "requires": {
864 | "brace-expansion": "1.1.8"
865 | }
866 | },
867 | "minimist": {
868 | "version": "1.2.0",
869 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
870 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
871 | },
872 | "mkdirp": {
873 | "version": "0.5.1",
874 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
875 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
876 | "requires": {
877 | "minimist": "0.0.8"
878 | },
879 | "dependencies": {
880 | "minimist": {
881 | "version": "0.0.8",
882 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
883 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
884 | }
885 | }
886 | },
887 | "ms": {
888 | "version": "2.0.0",
889 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
890 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
891 | },
892 | "node-addon-api": {
893 | "version": "1.0.0",
894 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.0.0.tgz",
895 | "integrity": "sha1-zmK8aGX2D41lwEQfLRpb26XNpZA="
896 | },
897 | "node-gyp": {
898 | "version": "3.6.2",
899 | "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz",
900 | "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=",
901 | "requires": {
902 | "fstream": "1.0.11",
903 | "glob": "7.1.2",
904 | "graceful-fs": "4.1.11",
905 | "minimatch": "3.0.4",
906 | "mkdirp": "0.5.1",
907 | "nopt": "3.0.6",
908 | "npmlog": "2.0.4",
909 | "osenv": "0.1.4",
910 | "request": "2.83.0",
911 | "rimraf": "2.6.2",
912 | "semver": "5.3.0",
913 | "tar": "2.2.1",
914 | "which": "1.3.0"
915 | }
916 | },
917 | "node-ninja": {
918 | "version": "1.0.2",
919 | "resolved": "https://registry.npmjs.org/node-ninja/-/node-ninja-1.0.2.tgz",
920 | "integrity": "sha1-IKCeV7kuLfWRmT1L8JisPnJwYrY=",
921 | "requires": {
922 | "fstream": "1.0.11",
923 | "glob": "7.1.2",
924 | "graceful-fs": "4.1.11",
925 | "minimatch": "3.0.4",
926 | "mkdirp": "0.5.1",
927 | "nopt": "3.0.6",
928 | "npmlog": "2.0.4",
929 | "osenv": "0.1.4",
930 | "path-array": "1.0.1",
931 | "request": "2.83.0",
932 | "rimraf": "2.6.2",
933 | "semver": "5.3.0",
934 | "tar": "2.2.1",
935 | "which": "1.3.0"
936 | }
937 | },
938 | "noop-logger": {
939 | "version": "0.1.1",
940 | "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
941 | "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI="
942 | },
943 | "nopt": {
944 | "version": "3.0.6",
945 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
946 | "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
947 | "requires": {
948 | "abbrev": "1.1.1"
949 | }
950 | },
951 | "normalize-package-data": {
952 | "version": "2.4.0",
953 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
954 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
955 | "requires": {
956 | "hosted-git-info": "2.5.0",
957 | "is-builtin-module": "1.0.0",
958 | "semver": "5.3.0",
959 | "validate-npm-package-license": "3.0.1"
960 | }
961 | },
962 | "npm-run-path": {
963 | "version": "2.0.2",
964 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
965 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
966 | "requires": {
967 | "path-key": "2.0.1"
968 | }
969 | },
970 | "npmlog": {
971 | "version": "2.0.4",
972 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz",
973 | "integrity": "sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI=",
974 | "requires": {
975 | "ansi": "0.3.1",
976 | "are-we-there-yet": "1.1.4",
977 | "gauge": "1.2.7"
978 | }
979 | },
980 | "number-is-nan": {
981 | "version": "1.0.1",
982 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
983 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
984 | },
985 | "oauth-sign": {
986 | "version": "0.8.2",
987 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
988 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
989 | },
990 | "once": {
991 | "version": "1.4.0",
992 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
993 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
994 | "requires": {
995 | "wrappy": "1.0.2"
996 | }
997 | },
998 | "os-homedir": {
999 | "version": "1.0.2",
1000 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
1001 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
1002 | },
1003 | "os-locale": {
1004 | "version": "2.1.0",
1005 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
1006 | "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
1007 | "requires": {
1008 | "execa": "0.7.0",
1009 | "lcid": "1.0.0",
1010 | "mem": "1.1.0"
1011 | }
1012 | },
1013 | "os-tmpdir": {
1014 | "version": "1.0.2",
1015 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1016 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
1017 | },
1018 | "osenv": {
1019 | "version": "0.1.4",
1020 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
1021 | "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
1022 | "requires": {
1023 | "os-homedir": "1.0.2",
1024 | "os-tmpdir": "1.0.2"
1025 | }
1026 | },
1027 | "p-finally": {
1028 | "version": "1.0.0",
1029 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
1030 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
1031 | },
1032 | "p-limit": {
1033 | "version": "1.1.0",
1034 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
1035 | "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw="
1036 | },
1037 | "p-locate": {
1038 | "version": "2.0.0",
1039 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
1040 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
1041 | "requires": {
1042 | "p-limit": "1.1.0"
1043 | }
1044 | },
1045 | "parse-json": {
1046 | "version": "2.2.0",
1047 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
1048 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
1049 | "requires": {
1050 | "error-ex": "1.3.1"
1051 | }
1052 | },
1053 | "path-array": {
1054 | "version": "1.0.1",
1055 | "resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz",
1056 | "integrity": "sha1-fi8PNfB6IBUSK4aLfqwOssT+wnE=",
1057 | "requires": {
1058 | "array-index": "1.0.0"
1059 | }
1060 | },
1061 | "path-exists": {
1062 | "version": "3.0.0",
1063 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
1064 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
1065 | },
1066 | "path-is-absolute": {
1067 | "version": "1.0.1",
1068 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1069 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
1070 | },
1071 | "path-key": {
1072 | "version": "2.0.1",
1073 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
1074 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
1075 | },
1076 | "path-type": {
1077 | "version": "2.0.0",
1078 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
1079 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
1080 | "requires": {
1081 | "pify": "2.3.0"
1082 | }
1083 | },
1084 | "performance-now": {
1085 | "version": "2.1.0",
1086 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
1087 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
1088 | },
1089 | "pify": {
1090 | "version": "2.3.0",
1091 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1092 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
1093 | },
1094 | "prebuild": {
1095 | "version": "4.5.0",
1096 | "resolved": "https://registry.npmjs.org/prebuild/-/prebuild-4.5.0.tgz",
1097 | "integrity": "sha1-KqoN8gY7/4FKgDvU3JT/m2Tl3wA=",
1098 | "requires": {
1099 | "async": "1.5.2",
1100 | "execspawn": "1.0.1",
1101 | "expand-template": "1.1.0",
1102 | "ghreleases": "1.0.6",
1103 | "github-from-package": "0.0.0",
1104 | "minimist": "1.2.0",
1105 | "mkdirp": "0.5.1",
1106 | "node-gyp": "3.6.2",
1107 | "node-ninja": "1.0.2",
1108 | "noop-logger": "0.1.1",
1109 | "npmlog": "2.0.4",
1110 | "os-homedir": "1.0.2",
1111 | "pump": "1.0.2",
1112 | "rc": "1.2.1",
1113 | "simple-get": "1.4.3",
1114 | "tar-fs": "1.15.3",
1115 | "tar-stream": "1.5.4",
1116 | "xtend": "4.0.1"
1117 | }
1118 | },
1119 | "process-nextick-args": {
1120 | "version": "1.0.7",
1121 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
1122 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
1123 | },
1124 | "prr": {
1125 | "version": "0.0.0",
1126 | "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz",
1127 | "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo="
1128 | },
1129 | "pseudomap": {
1130 | "version": "1.0.2",
1131 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
1132 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
1133 | },
1134 | "pump": {
1135 | "version": "1.0.2",
1136 | "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz",
1137 | "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=",
1138 | "requires": {
1139 | "end-of-stream": "1.4.0",
1140 | "once": "1.4.0"
1141 | }
1142 | },
1143 | "punycode": {
1144 | "version": "1.4.1",
1145 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
1146 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
1147 | },
1148 | "qs": {
1149 | "version": "6.5.1",
1150 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
1151 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
1152 | },
1153 | "rc": {
1154 | "version": "1.2.1",
1155 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz",
1156 | "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=",
1157 | "requires": {
1158 | "deep-extend": "0.4.2",
1159 | "ini": "1.3.4",
1160 | "minimist": "1.2.0",
1161 | "strip-json-comments": "2.0.1"
1162 | }
1163 | },
1164 | "read-pkg": {
1165 | "version": "2.0.0",
1166 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
1167 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
1168 | "requires": {
1169 | "load-json-file": "2.0.0",
1170 | "normalize-package-data": "2.4.0",
1171 | "path-type": "2.0.0"
1172 | }
1173 | },
1174 | "read-pkg-up": {
1175 | "version": "2.0.0",
1176 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
1177 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
1178 | "requires": {
1179 | "find-up": "2.1.0",
1180 | "read-pkg": "2.0.0"
1181 | }
1182 | },
1183 | "readable-stream": {
1184 | "version": "2.0.6",
1185 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
1186 | "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
1187 | "requires": {
1188 | "core-util-is": "1.0.2",
1189 | "inherits": "2.0.3",
1190 | "isarray": "1.0.0",
1191 | "process-nextick-args": "1.0.7",
1192 | "string_decoder": "0.10.31",
1193 | "util-deprecate": "1.0.2"
1194 | }
1195 | },
1196 | "request": {
1197 | "version": "2.83.0",
1198 | "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
1199 | "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
1200 | "requires": {
1201 | "aws-sign2": "0.7.0",
1202 | "aws4": "1.6.0",
1203 | "caseless": "0.12.0",
1204 | "combined-stream": "1.0.5",
1205 | "extend": "3.0.1",
1206 | "forever-agent": "0.6.1",
1207 | "form-data": "2.3.1",
1208 | "har-validator": "5.0.3",
1209 | "hawk": "6.0.2",
1210 | "http-signature": "1.2.0",
1211 | "is-typedarray": "1.0.0",
1212 | "isstream": "0.1.2",
1213 | "json-stringify-safe": "5.0.1",
1214 | "mime-types": "2.1.17",
1215 | "oauth-sign": "0.8.2",
1216 | "performance-now": "2.1.0",
1217 | "qs": "6.5.1",
1218 | "safe-buffer": "5.1.1",
1219 | "stringstream": "0.0.5",
1220 | "tough-cookie": "2.3.3",
1221 | "tunnel-agent": "0.6.0",
1222 | "uuid": "3.1.0"
1223 | }
1224 | },
1225 | "require-directory": {
1226 | "version": "2.1.1",
1227 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
1228 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
1229 | },
1230 | "require-main-filename": {
1231 | "version": "1.0.1",
1232 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
1233 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
1234 | },
1235 | "rimraf": {
1236 | "version": "2.6.2",
1237 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
1238 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
1239 | "requires": {
1240 | "glob": "7.1.2"
1241 | }
1242 | },
1243 | "safe-buffer": {
1244 | "version": "5.1.1",
1245 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
1246 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
1247 | },
1248 | "semver": {
1249 | "version": "5.3.0",
1250 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
1251 | "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
1252 | },
1253 | "set-blocking": {
1254 | "version": "2.0.0",
1255 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
1256 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
1257 | },
1258 | "shebang-command": {
1259 | "version": "1.2.0",
1260 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
1261 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
1262 | "requires": {
1263 | "shebang-regex": "1.0.0"
1264 | }
1265 | },
1266 | "shebang-regex": {
1267 | "version": "1.0.0",
1268 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1269 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
1270 | },
1271 | "signal-exit": {
1272 | "version": "3.0.2",
1273 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
1274 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
1275 | },
1276 | "simple-get": {
1277 | "version": "1.4.3",
1278 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz",
1279 | "integrity": "sha1-6XVe2kB+ltpAxeUVjJ6jezO+y+s=",
1280 | "requires": {
1281 | "once": "1.4.0",
1282 | "unzip-response": "1.0.2",
1283 | "xtend": "4.0.1"
1284 | }
1285 | },
1286 | "simple-mime": {
1287 | "version": "0.1.0",
1288 | "resolved": "https://registry.npmjs.org/simple-mime/-/simple-mime-0.1.0.tgz",
1289 | "integrity": "sha1-lfUXxPRm18/1YacfydqyWW6p7y4="
1290 | },
1291 | "sntp": {
1292 | "version": "2.0.2",
1293 | "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz",
1294 | "integrity": "sha1-UGQRDwr4X3z9t9a2ekACjOUrSys=",
1295 | "requires": {
1296 | "hoek": "4.2.0"
1297 | }
1298 | },
1299 | "spdx-correct": {
1300 | "version": "1.0.2",
1301 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
1302 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
1303 | "requires": {
1304 | "spdx-license-ids": "1.2.2"
1305 | }
1306 | },
1307 | "spdx-expression-parse": {
1308 | "version": "1.0.4",
1309 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
1310 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw="
1311 | },
1312 | "spdx-license-ids": {
1313 | "version": "1.2.2",
1314 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
1315 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc="
1316 | },
1317 | "sshpk": {
1318 | "version": "1.13.1",
1319 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
1320 | "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
1321 | "requires": {
1322 | "asn1": "0.2.3",
1323 | "assert-plus": "1.0.0",
1324 | "bcrypt-pbkdf": "1.0.1",
1325 | "dashdash": "1.14.1",
1326 | "ecc-jsbn": "0.1.1",
1327 | "getpass": "0.1.7",
1328 | "jsbn": "0.1.1",
1329 | "tweetnacl": "0.14.5"
1330 | }
1331 | },
1332 | "string-width": {
1333 | "version": "2.1.1",
1334 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
1335 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
1336 | "requires": {
1337 | "is-fullwidth-code-point": "2.0.0",
1338 | "strip-ansi": "4.0.0"
1339 | },
1340 | "dependencies": {
1341 | "ansi-regex": {
1342 | "version": "3.0.0",
1343 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
1344 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
1345 | },
1346 | "is-fullwidth-code-point": {
1347 | "version": "2.0.0",
1348 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
1349 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
1350 | },
1351 | "strip-ansi": {
1352 | "version": "4.0.0",
1353 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
1354 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
1355 | "requires": {
1356 | "ansi-regex": "3.0.0"
1357 | }
1358 | }
1359 | }
1360 | },
1361 | "string_decoder": {
1362 | "version": "0.10.31",
1363 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
1364 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
1365 | },
1366 | "stringstream": {
1367 | "version": "0.0.5",
1368 | "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
1369 | "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
1370 | },
1371 | "strip-ansi": {
1372 | "version": "3.0.1",
1373 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
1374 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
1375 | "requires": {
1376 | "ansi-regex": "2.1.1"
1377 | }
1378 | },
1379 | "strip-bom": {
1380 | "version": "3.0.0",
1381 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
1382 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
1383 | },
1384 | "strip-eof": {
1385 | "version": "1.0.0",
1386 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
1387 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
1388 | },
1389 | "strip-json-comments": {
1390 | "version": "2.0.1",
1391 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1392 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
1393 | },
1394 | "tar": {
1395 | "version": "2.2.1",
1396 | "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
1397 | "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
1398 | "requires": {
1399 | "block-stream": "0.0.9",
1400 | "fstream": "1.0.11",
1401 | "inherits": "2.0.3"
1402 | }
1403 | },
1404 | "tar-fs": {
1405 | "version": "1.15.3",
1406 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.15.3.tgz",
1407 | "integrity": "sha1-7M+TXpQUk9gVECjmNuUc5MPKfyA=",
1408 | "requires": {
1409 | "chownr": "1.0.1",
1410 | "mkdirp": "0.5.1",
1411 | "pump": "1.0.2",
1412 | "tar-stream": "1.5.4"
1413 | }
1414 | },
1415 | "tar-stream": {
1416 | "version": "1.5.4",
1417 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz",
1418 | "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=",
1419 | "requires": {
1420 | "bl": "1.0.3",
1421 | "end-of-stream": "1.4.0",
1422 | "readable-stream": "2.0.6",
1423 | "xtend": "4.0.1"
1424 | }
1425 | },
1426 | "through2": {
1427 | "version": "0.6.5",
1428 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
1429 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
1430 | "requires": {
1431 | "readable-stream": "1.0.34",
1432 | "xtend": "4.0.1"
1433 | },
1434 | "dependencies": {
1435 | "isarray": {
1436 | "version": "0.0.1",
1437 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
1438 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
1439 | },
1440 | "readable-stream": {
1441 | "version": "1.0.34",
1442 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
1443 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
1444 | "requires": {
1445 | "core-util-is": "1.0.2",
1446 | "inherits": "2.0.3",
1447 | "isarray": "0.0.1",
1448 | "string_decoder": "0.10.31"
1449 | }
1450 | }
1451 | }
1452 | },
1453 | "tough-cookie": {
1454 | "version": "2.3.3",
1455 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
1456 | "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
1457 | "requires": {
1458 | "punycode": "1.4.1"
1459 | }
1460 | },
1461 | "tunnel-agent": {
1462 | "version": "0.6.0",
1463 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1464 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
1465 | "requires": {
1466 | "safe-buffer": "5.1.1"
1467 | }
1468 | },
1469 | "tweetnacl": {
1470 | "version": "0.14.5",
1471 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
1472 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
1473 | "optional": true
1474 | },
1475 | "unzip-response": {
1476 | "version": "1.0.2",
1477 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
1478 | "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4="
1479 | },
1480 | "url-template": {
1481 | "version": "2.0.8",
1482 | "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
1483 | "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE="
1484 | },
1485 | "util-deprecate": {
1486 | "version": "1.0.2",
1487 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1488 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
1489 | },
1490 | "util-extend": {
1491 | "version": "1.0.3",
1492 | "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
1493 | "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8="
1494 | },
1495 | "uuid": {
1496 | "version": "3.1.0",
1497 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
1498 | "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
1499 | },
1500 | "validate-npm-package-license": {
1501 | "version": "3.0.1",
1502 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
1503 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
1504 | "requires": {
1505 | "spdx-correct": "1.0.2",
1506 | "spdx-expression-parse": "1.0.4"
1507 | }
1508 | },
1509 | "verror": {
1510 | "version": "1.10.0",
1511 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
1512 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
1513 | "requires": {
1514 | "assert-plus": "1.0.0",
1515 | "core-util-is": "1.0.2",
1516 | "extsprintf": "1.3.0"
1517 | }
1518 | },
1519 | "which": {
1520 | "version": "1.3.0",
1521 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
1522 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
1523 | "requires": {
1524 | "isexe": "2.0.0"
1525 | }
1526 | },
1527 | "which-module": {
1528 | "version": "2.0.0",
1529 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
1530 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
1531 | },
1532 | "wrap-ansi": {
1533 | "version": "2.1.0",
1534 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
1535 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
1536 | "requires": {
1537 | "string-width": "1.0.2",
1538 | "strip-ansi": "3.0.1"
1539 | },
1540 | "dependencies": {
1541 | "string-width": {
1542 | "version": "1.0.2",
1543 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
1544 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
1545 | "requires": {
1546 | "code-point-at": "1.1.0",
1547 | "is-fullwidth-code-point": "1.0.0",
1548 | "strip-ansi": "3.0.1"
1549 | }
1550 | }
1551 | }
1552 | },
1553 | "wrappy": {
1554 | "version": "1.0.2",
1555 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1556 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
1557 | },
1558 | "xtend": {
1559 | "version": "4.0.1",
1560 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
1561 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
1562 | },
1563 | "y18n": {
1564 | "version": "3.2.1",
1565 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
1566 | "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
1567 | },
1568 | "yallist": {
1569 | "version": "2.1.2",
1570 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
1571 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
1572 | },
1573 | "yargs": {
1574 | "version": "8.0.2",
1575 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
1576 | "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
1577 | "requires": {
1578 | "camelcase": "4.1.0",
1579 | "cliui": "3.2.0",
1580 | "decamelize": "1.2.0",
1581 | "get-caller-file": "1.0.2",
1582 | "os-locale": "2.1.0",
1583 | "read-pkg-up": "2.0.0",
1584 | "require-directory": "2.1.1",
1585 | "require-main-filename": "1.0.1",
1586 | "set-blocking": "2.0.0",
1587 | "string-width": "2.1.1",
1588 | "which-module": "2.0.0",
1589 | "y18n": "3.2.1",
1590 | "yargs-parser": "7.0.0"
1591 | }
1592 | },
1593 | "yargs-parser": {
1594 | "version": "7.0.0",
1595 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
1596 | "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
1597 | "requires": {
1598 | "camelcase": "4.1.0"
1599 | }
1600 | }
1601 | }
1602 | }
1603 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "napi-demo",
3 | "description": "Simple http server using leveldown to test Node.js with N-API",
4 | "private": true,
5 | "version": "1.1.0",
6 | "dependencies": {
7 | "leveldown": "git://github.com/sampsongao/leveldown#napi",
8 | "level-iterator-stream": "~1.3.1",
9 | "es6-shim": "~0.35.1",
10 | "yargs": "~8.0.1"
11 | },
12 | "main": "app.js"
13 | }
14 |
--------------------------------------------------------------------------------
/page.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
LevelDown DB entries