Add sqlite3 modules for tests
This commit is contained in:
parent
c43e902525
commit
1c449eced0
103
node_modules/sqlite3/CHANGELOG.md
generated
vendored
Normal file
103
node_modules/sqlite3/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## 3.0.2
|
||||||
|
|
||||||
|
- Republish for possibly busted npm package.
|
||||||
|
|
||||||
|
## 3.0.1
|
||||||
|
|
||||||
|
- Use ~ in node-pre-gyp semver for more flexible dep management.
|
||||||
|
|
||||||
|
## 3.0.0
|
||||||
|
|
||||||
|
Released September 20nd, 2014
|
||||||
|
|
||||||
|
- Backwards-incompatible change: node versions 0.8.x are no longer supported.
|
||||||
|
- Updated to node-pre-gyp@0.5.27
|
||||||
|
- Updated NAN to 1.3.0
|
||||||
|
- Updated internal libsqlite3 to v3.8.6
|
||||||
|
|
||||||
|
## 2.2.7
|
||||||
|
|
||||||
|
Released August 6th, 2014
|
||||||
|
|
||||||
|
- Removed usage of `npm ls` with `prepublish` target (which breaks node v0.8.x)
|
||||||
|
|
||||||
|
## 2.2.6
|
||||||
|
|
||||||
|
Released August 6th, 2014
|
||||||
|
|
||||||
|
- Fix bundled version of node-pre-gyp
|
||||||
|
|
||||||
|
## 2.2.5
|
||||||
|
|
||||||
|
Released August 5th, 2014
|
||||||
|
|
||||||
|
- Fix leak in complete() callback of Database.each() (#307)
|
||||||
|
- Started using `engineStrict` and improved `engines` declaration to make clear only >= 0.11.13 is supported for the 0.11.x series.
|
||||||
|
|
||||||
|
## 2.2.4
|
||||||
|
|
||||||
|
Released July 14th, 2014
|
||||||
|
|
||||||
|
- Now supporting node v0.11.x (specifically >=0.11.13)
|
||||||
|
- Fix db opening error with absolute path on windows
|
||||||
|
- Updated to node-pre-gyp@0.5.18
|
||||||
|
- updated internal libsqlite3 from 3.8.4.3 -> 3.8.5 (http://www.sqlite.org/news.html)
|
||||||
|
|
||||||
|
## 2.2.3
|
||||||
|
|
||||||
|
- Fixed regression in v2.2.2 for installing from binaries on windows.
|
||||||
|
|
||||||
|
## 2.2.2
|
||||||
|
|
||||||
|
- Fixed packaging problem whereby a `config.gypi` was unintentially packaged and could cause breakages for OS X builds.
|
||||||
|
|
||||||
|
## 2.2.1
|
||||||
|
|
||||||
|
- Now shipping with 64bit FreeBSD binaries against both node v0.10.x and node v0.8.x.
|
||||||
|
- Fixed solaris/smartos source compile by passing `-std=c99` when building internally bundled libsqlite3 (#201)
|
||||||
|
- Reduced size of npm package by ignoring tests and examples.
|
||||||
|
- Various fixes and improvements for building against node-webkit
|
||||||
|
- Upgraded to node-pre-gyp@0.5.x from node-pre-gyp@0.2.5
|
||||||
|
- Improved ability to build from source against `sqlcipher` by passing custom library name: `--sqlite_libname=sqlcipher`
|
||||||
|
- No changes to C++ Core / Existing binaries are exactly the same
|
||||||
|
|
||||||
|
## 2.2.0
|
||||||
|
|
||||||
|
Released Jan 13th, 2014
|
||||||
|
|
||||||
|
- updated internal libsqlite3 from 3.7.17 -> 3.8.2 (http://www.sqlite.org/news.html) which includes the next-generation query planner http://www.sqlite.org/queryplanner-ng.html
|
||||||
|
- improved binary deploy system using https://github.com/springmeyer/node-pre-gyp
|
||||||
|
- binary install now supports http proxies
|
||||||
|
- source compile now supports freebsd
|
||||||
|
- fixed support for node-webkit
|
||||||
|
|
||||||
|
## 2.1.19
|
||||||
|
|
||||||
|
Released October 31st, 2013
|
||||||
|
|
||||||
|
- Started respecting `process.env.npm_config_tmp` as location to download binaries
|
||||||
|
- Removed uneeded `progress` dependency
|
||||||
|
|
||||||
|
## 2.1.18
|
||||||
|
|
||||||
|
Released October 22nd, 2013
|
||||||
|
|
||||||
|
- `node-sqlite3` moved to mapbox github group
|
||||||
|
- Fixed reporting of node-gyp errors
|
||||||
|
- Fixed support for node v0.6.x
|
||||||
|
|
||||||
|
## 2.1.17
|
||||||
|
- Minor fixes to binary deployment
|
||||||
|
|
||||||
|
## 2.1.16
|
||||||
|
- Support for binary deployment
|
||||||
|
|
||||||
|
## 2.1.15
|
||||||
|
|
||||||
|
Released August 7th, 2013
|
||||||
|
|
||||||
|
- Minor readme additions and code optimizations
|
||||||
|
|
||||||
|
|
25
node_modules/sqlite3/LICENSE
generated
vendored
Normal file
25
node_modules/sqlite3/LICENSE
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
Copyright (c) MapBox
|
||||||
|
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 "MapBox" 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.
|
186
node_modules/sqlite3/README.md
generated
vendored
Normal file
186
node_modules/sqlite3/README.md
generated
vendored
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
Asynchronous, non-blocking [SQLite3](http://sqlite.org/) bindings for [Node.js](http://nodejs.org/).
|
||||||
|
|
||||||
|
[![NPM](https://nodei.co/npm/sqlite3.png?downloads=true&downloadRank=true)](https://nodei.co/npm/sqlite3/)
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/mapbox/node-sqlite3.svg?branch=master)](https://travis-ci.org/mapbox/node-sqlite3)
|
||||||
|
|
||||||
|
[![Build status](https://ci.appveyor.com/api/projects/status/gvm7ul0hpmdawqom)](https://ci.appveyor.com/project/Mapbox/node-sqlite3)
|
||||||
|
|
||||||
|
## Supported platforms
|
||||||
|
|
||||||
|
The `sqlite3` module works with Node.js v0.10.x or v0.11.x (though only v0.11.13 and above).
|
||||||
|
|
||||||
|
Binaries for most Node versions and platforms are provided by default via [node-pre-gyp](https://github.com/springmeyer/node-pre-gyp).
|
||||||
|
|
||||||
|
The `sqlite3` module also works with [node-webkit](https://github.com/rogerwang/node-webkit) if node-webkit contains a supported version of Node.js engine. [(See below.)](#building-for-node-webkit)
|
||||||
|
|
||||||
|
SQLite's [SQLCipher extension](https://github.com/sqlcipher/sqlcipher) is also supported. [(See below.)](#building-for-sqlcipher)
|
||||||
|
|
||||||
|
# Usage
|
||||||
|
|
||||||
|
**Note:** the module must be [installed](#installing) before use.
|
||||||
|
|
||||||
|
``` js
|
||||||
|
var sqlite3 = require('sqlite3').verbose();
|
||||||
|
var db = new sqlite3.Database(':memory:');
|
||||||
|
|
||||||
|
db.serialize(function() {
|
||||||
|
db.run("CREATE TABLE lorem (info TEXT)");
|
||||||
|
|
||||||
|
var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
|
||||||
|
for (var i = 0; i < 10; i++) {
|
||||||
|
stmt.run("Ipsum " + i);
|
||||||
|
}
|
||||||
|
stmt.finalize();
|
||||||
|
|
||||||
|
db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
|
||||||
|
console.log(row.id + ": " + row.info);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
db.close();
|
||||||
|
```
|
||||||
|
|
||||||
|
# Features
|
||||||
|
|
||||||
|
- Straightforward query and parameter binding interface
|
||||||
|
- Full Buffer/Blob support
|
||||||
|
- Extensive [debugging support](https://github.com/mapbox/node-sqlite3/wiki/Debugging)
|
||||||
|
- [Query serialization](https://github.com/mapbox/node-sqlite3/wiki/Control-Flow) API
|
||||||
|
- [Extension support](https://github.com/mapbox/node-sqlite3/wiki/Extensions)
|
||||||
|
- Big test suite
|
||||||
|
- Written in modern C++ and tested for memory leaks
|
||||||
|
|
||||||
|
|
||||||
|
# API
|
||||||
|
|
||||||
|
See the [API documentation](https://github.com/mapbox/node-sqlite3/wiki) in the wiki.
|
||||||
|
|
||||||
|
|
||||||
|
# Installing
|
||||||
|
|
||||||
|
You can use [`npm`](https://github.com/isaacs/npm) to download and install:
|
||||||
|
|
||||||
|
* The latest `sqlite3` package: `npm install sqlite3`
|
||||||
|
|
||||||
|
* GitHub's `master` branch: `npm install https://github.com/mapbox/node-sqlite3/tarball/master`
|
||||||
|
|
||||||
|
In both cases the module is automatically built with npm's internal version of `node-gyp`,
|
||||||
|
and thus your system must meet [node-gyp's requirements](https://github.com/TooTallNate/node-gyp#installation).
|
||||||
|
|
||||||
|
It is also possible to make your own build of `sqlite3` from its source instead of its npm package ([see below](#building-from-the-source)).
|
||||||
|
|
||||||
|
It is possible to use the installed package in [node-webkit](https://github.com/rogerwang/node-webkit) instead of the vanilla Node.js. See [Building for node-webkit](#building-for-node-webkit) for details.
|
||||||
|
|
||||||
|
## Source install
|
||||||
|
|
||||||
|
Unless building via `npm install` (which uses its own `node-gyp`) you will need `node-gyp` installed globally:
|
||||||
|
|
||||||
|
npm install node-gyp -g
|
||||||
|
|
||||||
|
The sqlite3 module depends only on libsqlite3. However, by default, an internal/bundled copy of sqlite will be built and statically linked, so an externally installed sqlite3 is not required.
|
||||||
|
|
||||||
|
If you wish to install against an external sqlite then you need to pass the `--sqlite` argument to `node-gyp`, `npm install` or the `configure` wrapper.
|
||||||
|
|
||||||
|
./configure --sqlite=/usr/local
|
||||||
|
make
|
||||||
|
|
||||||
|
Or, using the node-gyp directly:
|
||||||
|
|
||||||
|
node-gyp --sqlite=/usr/local
|
||||||
|
make
|
||||||
|
|
||||||
|
Or, using npm:
|
||||||
|
|
||||||
|
npm install --sqlite=/usr/local
|
||||||
|
|
||||||
|
If building against an external sqlite3 make sure to have the development headers available. Mac OS X ships with these by default. If you don't have them installed, install the `-dev` package with your package manager, e.g. `apt-get install libsqlite3-dev` for Debian/Ubuntu. Make sure that you have at least `libsqlite3` >= 3.6.
|
||||||
|
|
||||||
|
Note, if building against homebrew-installed sqlite on OS X you can do:
|
||||||
|
|
||||||
|
./configure --sqlite=/usr/local/opt/sqlite/
|
||||||
|
make
|
||||||
|
|
||||||
|
## Building for node-webkit
|
||||||
|
|
||||||
|
Because of ABI differences, `sqlite3` must be built in a custom to be used with [node-webkit](https://github.com/rogerwang/node-webkit).
|
||||||
|
|
||||||
|
To build node-sqlite3 for node-webkit:
|
||||||
|
|
||||||
|
1. Install [`nw-gyp`](https://github.com/rogerwang/nw-gyp) globally: `npm install nw-gyp -g` *(unless already installed)*
|
||||||
|
|
||||||
|
2. Build the module with the custom flags of `--runtime`, `--target_arch`, and `--target`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
NODE_WEBKIT_VERSION="0.8.6" # see latest version at https://github.com/rogerwang/node-webkit#downloads
|
||||||
|
npm install sqlite3 --build-from-source --runtime=node-webkit --target_arch=ia32 --target=$(NODE_WEBKIT_VERSION)
|
||||||
|
```
|
||||||
|
|
||||||
|
This command internally calls out to [`node-pre-gyp`](https://github.com/mapbox/node-pre-gyp) which itself calls out to [`nw-gyp`](https://github.com/rogerwang/nw-gyp) when the `--runtime=node-webkit` option is passed.
|
||||||
|
|
||||||
|
You can also run this command from within a `node-sqlite3` checkout:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --build-from-source --runtime=node-webkit --target_arch=ia32 --target=$(NODE_WEBKIT_VERSION)
|
||||||
|
```
|
||||||
|
|
||||||
|
Remember the following:
|
||||||
|
|
||||||
|
* You must provide the right `--target_arch` flag. `ia32` is needed to target 32bit node-webkit builds, while `x64` will target 64bit node-webkit builds (if available for your platform).
|
||||||
|
|
||||||
|
* After the `sqlite3` package is built for node-webkit it cannot run in the vanilla Node.js (and vice versa).
|
||||||
|
* For example, `npm test` of the node-webkit's package would fail.
|
||||||
|
|
||||||
|
Visit the “[Using Node modules](https://github.com/rogerwang/node-webkit/wiki/Using-Node-modules)” article in the node-webkit's wiki for more details.
|
||||||
|
|
||||||
|
## Building for sqlcipher
|
||||||
|
|
||||||
|
To run node-sqlite3 against sqlcipher you need to compile from source by passing build options like:
|
||||||
|
|
||||||
|
npm install sqlite3 --build-from-source --sqlite_libname=sqlcipher --sqlite=/usr/
|
||||||
|
|
||||||
|
If your sqlcipher is installed in a custom location, say if you installed it with homebrew on OS X you also need to do:
|
||||||
|
|
||||||
|
export LDFLAGS="-L`brew --prefix`/opt/sqlcipher/lib"
|
||||||
|
export CPPFLAGS="-I`brew --prefix`/opt/sqlcipher/include"
|
||||||
|
npm install sqlite3 --build-from-source --sqlite_libname=sqlcipher --sqlite=`brew --prefix`
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
|
||||||
|
[mocha](https://github.com/visionmedia/mocha) is required to run unit tests.
|
||||||
|
|
||||||
|
In sqlite3's directory (where its `package.json` resides) run the following:
|
||||||
|
|
||||||
|
npm install mocha
|
||||||
|
npm test
|
||||||
|
|
||||||
|
|
||||||
|
# Contributors
|
||||||
|
|
||||||
|
* [Konstantin Käfer](https://github.com/kkaefer)
|
||||||
|
* [Dane Springmeyer](https://github.com/springmeyer)
|
||||||
|
* [Will White](https://github.com/willwhite)
|
||||||
|
* [Orlando Vazquez](https://github.com/orlandov)
|
||||||
|
* [Artem Kustikov](https://github.com/artiz)
|
||||||
|
* [Eric Fredricksen](https://github.com/grumdrig)
|
||||||
|
* [John Wright](https://github.com/mrjjwright)
|
||||||
|
* [Ryan Dahl](https://github.com/ry)
|
||||||
|
* [Tom MacWright](https://github.com/tmcw)
|
||||||
|
* [Carter Thaxton](https://github.com/carter-thaxton)
|
||||||
|
* [Audrius Kažukauskas](https://github.com/audriusk)
|
||||||
|
* [Johannes Schauer](https://github.com/pyneo)
|
||||||
|
* [Mithgol](https://github.com/Mithgol)
|
||||||
|
|
||||||
|
|
||||||
|
# Acknowledgments
|
||||||
|
|
||||||
|
Thanks to [Orlando Vazquez](https://github.com/orlandov),
|
||||||
|
[Eric Fredricksen](https://github.com/grumdrig) and
|
||||||
|
[Ryan Dahl](https://github.com/ry) for their SQLite bindings for node, and to mraleph on Freenode's #v8 for answering questions.
|
||||||
|
|
||||||
|
Development of this module is sponsored by [MapBox](http://mapbox.org/).
|
||||||
|
|
||||||
|
|
||||||
|
# License
|
||||||
|
|
||||||
|
`node-sqlite3` is [BSD licensed](https://github.com/mapbox/node-sqlite3/raw/master/LICENSE).
|
45
node_modules/sqlite3/appveyor.yml
generated
vendored
Normal file
45
node_modules/sqlite3/appveyor.yml
generated
vendored
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
environment:
|
||||||
|
node_pre_gyp_accessKeyId:
|
||||||
|
secure: 7DrSVc5eIGtmMcki5H+iRft+Tk3MJTwDBQEUuJHWaQ4=
|
||||||
|
node_pre_gyp_secretAccessKey:
|
||||||
|
secure: 1amwJJw9fu0j6dXnc5KsAQbSYf7Cjw/dapT6OZWABa6nc52grkKeLQ+DGaOfQz8i
|
||||||
|
matrix:
|
||||||
|
- nodejs_version: 0.10.30
|
||||||
|
nw_version: 0.8.6
|
||||||
|
PLATFORM: x86
|
||||||
|
- nodejs_version: 0.10.30
|
||||||
|
nw_version: 0.8.6
|
||||||
|
PLATFORM: x64
|
||||||
|
- nodejs_version: 0.11.13
|
||||||
|
nw_version: 0.10.5
|
||||||
|
PLATFORM: x86
|
||||||
|
- nodejs_version: 0.11.13
|
||||||
|
nw_version: 0.10.5
|
||||||
|
PLATFORM: x64
|
||||||
|
|
||||||
|
install:
|
||||||
|
- ps: Update-NodeJsInstallation $env:nodejs_version $env:Platform
|
||||||
|
- node --version
|
||||||
|
- npm --version
|
||||||
|
- echo %PLATFORM%
|
||||||
|
- SET PATH=c:\python27;%PATH%
|
||||||
|
- SET PATH=C:\Program Files (x86)\MSBuild\12.0\bin\;%PATH%
|
||||||
|
- SET PATH=%APPDATA%\npm;%PATH%
|
||||||
|
# add local node-pre-gyp dir to path
|
||||||
|
- SET PATH=node_modules\.bin;%PATH%
|
||||||
|
# # work around old npm problem with ^
|
||||||
|
- npm update npm -g
|
||||||
|
- npm --version
|
||||||
|
# upgrade node-gyp to support --msvs_version=2013
|
||||||
|
- npm install node-gyp
|
||||||
|
- npm install --build-from-source --msvs_version=2013
|
||||||
|
- npm test
|
||||||
|
- node-pre-gyp package
|
||||||
|
# make commit message env var shorter
|
||||||
|
- SET CM=%APPVEYOR_REPO_COMMIT_MESSAGE%
|
||||||
|
- if not "%CM%" == "%CM:[publish binary]=%" node-pre-gyp --msvs_version=2013 publish
|
||||||
|
- call scripts\build_for_node_webkit.cmd %PLATFORM%
|
||||||
|
|
||||||
|
build: OFF
|
||||||
|
test: OFF
|
||||||
|
deploy: OFF
|
52
node_modules/sqlite3/binding.gyp
generated
vendored
Normal file
52
node_modules/sqlite3/binding.gyp
generated
vendored
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"includes": [ "deps/common-sqlite.gypi" ],
|
||||||
|
"variables": {
|
||||||
|
"sqlite%":"internal",
|
||||||
|
"sqlite_libname%":"sqlite3"
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"target_name": "<(module_name)",
|
||||||
|
"include_dirs": ["<!(node -e \"require('nan')\")"],
|
||||||
|
"conditions": [
|
||||||
|
["sqlite != 'internal'", {
|
||||||
|
"include_dirs": [ "<@(sqlite)/include" ],
|
||||||
|
"libraries": [
|
||||||
|
"-l<(sqlite_libname)"
|
||||||
|
],
|
||||||
|
"conditions": [ [ "OS=='linux'", {"libraries+":["-Wl,-rpath=<@(sqlite)/lib"]} ] ],
|
||||||
|
"conditions": [ [ "OS!='win'", {"libraries+":["-L<@(sqlite)/lib"]} ] ],
|
||||||
|
'msvs_settings': {
|
||||||
|
'VCLinkerTool': {
|
||||||
|
'AdditionalLibraryDirectories': [
|
||||||
|
'<@(sqlite)/lib'
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dependencies": [
|
||||||
|
"deps/sqlite3.gyp:sqlite3"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"sources": [
|
||||||
|
"src/database.cc",
|
||||||
|
"src/node_sqlite3.cc",
|
||||||
|
"src/statement.cc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target_name": "action_after_build",
|
||||||
|
"type": "none",
|
||||||
|
"dependencies": [ "<(module_name)" ],
|
||||||
|
"copies": [
|
||||||
|
{
|
||||||
|
"files": [ "<(PRODUCT_DIR)/<(module_name).node" ],
|
||||||
|
"destination": "<(module_path)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
5
node_modules/sqlite3/deps/common-sqlite.gypi
generated
vendored
Normal file
5
node_modules/sqlite3/deps/common-sqlite.gypi
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
'variables': {
|
||||||
|
'sqlite_version%':'3080600'
|
||||||
|
}
|
||||||
|
}
|
9
node_modules/sqlite3/deps/extract.py
generated
vendored
Normal file
9
node_modules/sqlite3/deps/extract.py
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import sys
|
||||||
|
import tarfile
|
||||||
|
import os
|
||||||
|
|
||||||
|
tarball = os.path.abspath(sys.argv[1])
|
||||||
|
dirname = os.path.abspath(sys.argv[2])
|
||||||
|
tfile = tarfile.open(tarball,'r:gz');
|
||||||
|
tfile.extractall(dirname)
|
||||||
|
sys.exit(0)
|
BIN
node_modules/sqlite3/deps/sqlite-autoconf-3080600.tar.gz
generated
vendored
Normal file
BIN
node_modules/sqlite3/deps/sqlite-autoconf-3080600.tar.gz
generated
vendored
Normal file
Binary file not shown.
100
node_modules/sqlite3/deps/sqlite3.gyp
generated
vendored
Executable file
100
node_modules/sqlite3/deps/sqlite3.gyp
generated
vendored
Executable file
@ -0,0 +1,100 @@
|
|||||||
|
{
|
||||||
|
'includes': [ 'common-sqlite.gypi' ],
|
||||||
|
'target_defaults': {
|
||||||
|
'default_configuration': 'Release',
|
||||||
|
'cflags':[
|
||||||
|
'-std=c99'
|
||||||
|
],
|
||||||
|
'configurations': {
|
||||||
|
'Debug': {
|
||||||
|
'defines': [ 'DEBUG', '_DEBUG' ],
|
||||||
|
'msvs_settings': {
|
||||||
|
'VCCLCompilerTool': {
|
||||||
|
'RuntimeLibrary': 1, # static debug
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'Release': {
|
||||||
|
'defines': [ 'NDEBUG' ],
|
||||||
|
'msvs_settings': {
|
||||||
|
'VCCLCompilerTool': {
|
||||||
|
'RuntimeLibrary': 0, # static release
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'msvs_settings': {
|
||||||
|
'VCCLCompilerTool': {
|
||||||
|
},
|
||||||
|
'VCLibrarianTool': {
|
||||||
|
},
|
||||||
|
'VCLinkerTool': {
|
||||||
|
'GenerateDebugInformation': 'true',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'conditions': [
|
||||||
|
['OS == "win"', {
|
||||||
|
'defines': [
|
||||||
|
'WIN32'
|
||||||
|
],
|
||||||
|
}]
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
'targets': [
|
||||||
|
{
|
||||||
|
'target_name': 'action_before_build',
|
||||||
|
'type': 'none',
|
||||||
|
'hard_dependency': 1,
|
||||||
|
'actions': [
|
||||||
|
{
|
||||||
|
'action_name': 'unpack_sqlite_dep',
|
||||||
|
'inputs': [
|
||||||
|
'./sqlite-autoconf-<@(sqlite_version).tar.gz'
|
||||||
|
],
|
||||||
|
'outputs': [
|
||||||
|
'<(SHARED_INTERMEDIATE_DIR)/sqlite-autoconf-<@(sqlite_version)/sqlite3.c'
|
||||||
|
],
|
||||||
|
'action': ['python','./extract.py','./sqlite-autoconf-<@(sqlite_version).tar.gz','<(SHARED_INTERMEDIATE_DIR)']
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'direct_dependent_settings': {
|
||||||
|
'include_dirs': [
|
||||||
|
'<(SHARED_INTERMEDIATE_DIR)/sqlite-autoconf-<@(sqlite_version)/',
|
||||||
|
]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'target_name': 'sqlite3',
|
||||||
|
'type': 'static_library',
|
||||||
|
'include_dirs': [ '<(SHARED_INTERMEDIATE_DIR)/sqlite-autoconf-<@(sqlite_version)/' ],
|
||||||
|
'dependencies': [
|
||||||
|
'action_before_build'
|
||||||
|
],
|
||||||
|
'sources': [
|
||||||
|
'<(SHARED_INTERMEDIATE_DIR)/sqlite-autoconf-<@(sqlite_version)/sqlite3.c'
|
||||||
|
],
|
||||||
|
'direct_dependent_settings': {
|
||||||
|
'include_dirs': [ '<(SHARED_INTERMEDIATE_DIR)/sqlite-autoconf-<@(sqlite_version)/' ],
|
||||||
|
'defines': [
|
||||||
|
'SQLITE_THREADSAFE=1',
|
||||||
|
'SQLITE_ENABLE_FTS3',
|
||||||
|
'SQLITE_ENABLE_RTREE'
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'cflags_cc': [
|
||||||
|
'-Wno-unused-value',
|
||||||
|
'-include ../src/gcc-preinclude.h'
|
||||||
|
],
|
||||||
|
'defines': [
|
||||||
|
'_REENTRANT=1',
|
||||||
|
'SQLITE_THREADSAFE=1',
|
||||||
|
'SQLITE_ENABLE_FTS3',
|
||||||
|
'SQLITE_ENABLE_RTREE'
|
||||||
|
],
|
||||||
|
'export_dependent_settings': [
|
||||||
|
'action_before_build',
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
node_modules/sqlite3/lib/binding/node-v11-linux-x64/node_sqlite3.node
generated
vendored
Executable file
BIN
node_modules/sqlite3/lib/binding/node-v11-linux-x64/node_sqlite3.node
generated
vendored
Executable file
Binary file not shown.
1
node_modules/sqlite3/lib/index.js
generated
vendored
Normal file
1
node_modules/sqlite3/lib/index.js
generated
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
module.exports = require('./sqlite3');
|
187
node_modules/sqlite3/lib/sqlite3.js
generated
vendored
Normal file
187
node_modules/sqlite3/lib/sqlite3.js
generated
vendored
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
var binary = require('node-pre-gyp');
|
||||||
|
var path = require('path');
|
||||||
|
var binding_path = binary.find(path.resolve(path.join(__dirname,'../package.json')));
|
||||||
|
var binding = require(binding_path);
|
||||||
|
var sqlite3 = module.exports = exports = binding;
|
||||||
|
var EventEmitter = require('events').EventEmitter;
|
||||||
|
|
||||||
|
function normalizeMethod (fn) {
|
||||||
|
return function (sql) {
|
||||||
|
var errBack;
|
||||||
|
var args = Array.prototype.slice.call(arguments, 1);
|
||||||
|
if (typeof args[args.length - 1] === 'function') {
|
||||||
|
var callback = args[args.length - 1];
|
||||||
|
errBack = function(err) {
|
||||||
|
if (err) {
|
||||||
|
callback(err);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
var statement = new Statement(this, sql, errBack);
|
||||||
|
return fn.call(this, statement, args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function inherits(target, source) {
|
||||||
|
for (var k in source.prototype)
|
||||||
|
target.prototype[k] = source.prototype[k];
|
||||||
|
}
|
||||||
|
|
||||||
|
sqlite3.cached = {
|
||||||
|
Database: function(file, a, b) {
|
||||||
|
if (file === '' || file === ':memory:') {
|
||||||
|
// Don't cache special databases.
|
||||||
|
return new Database(file, a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
file = path.resolve(file);
|
||||||
|
|
||||||
|
if (!sqlite3.cached.objects[file]) {
|
||||||
|
var db =sqlite3.cached.objects[file] = new Database(file, a, b);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Make sure the callback is called.
|
||||||
|
var db = sqlite3.cached.objects[file];
|
||||||
|
var callback = (typeof a === 'number') ? b : a;
|
||||||
|
if (typeof callback === 'function') {
|
||||||
|
function cb() { callback.call(db, null); }
|
||||||
|
if (db.open) process.nextTick(cb);
|
||||||
|
else db.once('open', cb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return db;
|
||||||
|
},
|
||||||
|
objects: {}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var Database = sqlite3.Database;
|
||||||
|
var Statement = sqlite3.Statement;
|
||||||
|
|
||||||
|
inherits(Database, EventEmitter);
|
||||||
|
inherits(Statement, EventEmitter);
|
||||||
|
|
||||||
|
// Database#prepare(sql, [bind1, bind2, ...], [callback])
|
||||||
|
Database.prototype.prepare = normalizeMethod(function(statement, params) {
|
||||||
|
return params.length
|
||||||
|
? statement.bind.apply(statement, params)
|
||||||
|
: statement;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Database#run(sql, [bind1, bind2, ...], [callback])
|
||||||
|
Database.prototype.run = normalizeMethod(function(statement, params) {
|
||||||
|
statement.run.apply(statement, params).finalize();
|
||||||
|
return this;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Database#get(sql, [bind1, bind2, ...], [callback])
|
||||||
|
Database.prototype.get = normalizeMethod(function(statement, params) {
|
||||||
|
statement.get.apply(statement, params).finalize();
|
||||||
|
return this;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Database#all(sql, [bind1, bind2, ...], [callback])
|
||||||
|
Database.prototype.all = normalizeMethod(function(statement, params) {
|
||||||
|
statement.all.apply(statement, params).finalize();
|
||||||
|
return this;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Database#each(sql, [bind1, bind2, ...], [callback], [complete])
|
||||||
|
Database.prototype.each = normalizeMethod(function(statement, params) {
|
||||||
|
statement.each.apply(statement, params).finalize();
|
||||||
|
return this;
|
||||||
|
});
|
||||||
|
|
||||||
|
Database.prototype.map = normalizeMethod(function(statement, params) {
|
||||||
|
statement.map.apply(statement, params).finalize();
|
||||||
|
return this;
|
||||||
|
});
|
||||||
|
|
||||||
|
Statement.prototype.map = function() {
|
||||||
|
var params = Array.prototype.slice.call(arguments);
|
||||||
|
var callback = params.pop();
|
||||||
|
params.push(function(err, rows) {
|
||||||
|
if (err) return callback(err);
|
||||||
|
var result = {};
|
||||||
|
if (rows.length) {
|
||||||
|
var keys = Object.keys(rows[0]), key = keys[0];
|
||||||
|
if (keys.length > 2) {
|
||||||
|
// Value is an object
|
||||||
|
for (var i = 0; i < rows.length; i++) {
|
||||||
|
result[rows[i][key]] = rows[i];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var value = keys[1];
|
||||||
|
// Value is a plain value
|
||||||
|
for (var i = 0; i < rows.length; i++) {
|
||||||
|
result[rows[i][key]] = rows[i][value];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
callback(err, result);
|
||||||
|
});
|
||||||
|
return this.all.apply(this, params);
|
||||||
|
};
|
||||||
|
|
||||||
|
var isVerbose = false;
|
||||||
|
|
||||||
|
var supportedEvents = [ 'trace', 'profile', 'insert', 'update', 'delete' ];
|
||||||
|
|
||||||
|
Database.prototype.addListener = Database.prototype.on = function(type) {
|
||||||
|
var val = EventEmitter.prototype.addListener.apply(this, arguments);
|
||||||
|
if (supportedEvents.indexOf(type) >= 0) {
|
||||||
|
this.configure(type, true);
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
};
|
||||||
|
|
||||||
|
Database.prototype.removeListener = function(type) {
|
||||||
|
var val = EventEmitter.prototype.removeListener.apply(this, arguments);
|
||||||
|
if (supportedEvents.indexOf(type) >= 0 && !this._events[type]) {
|
||||||
|
this.configure(type, false);
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
};
|
||||||
|
|
||||||
|
Database.prototype.removeAllListeners = function(type) {
|
||||||
|
var val = EventEmitter.prototype.removeAllListeners.apply(this, arguments);
|
||||||
|
if (supportedEvents.indexOf(type) >= 0) {
|
||||||
|
this.configure(type, false);
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Save the stack trace over EIO callbacks.
|
||||||
|
sqlite3.verbose = function() {
|
||||||
|
if (!isVerbose) {
|
||||||
|
var trace = require('./trace');
|
||||||
|
[
|
||||||
|
'prepare',
|
||||||
|
'get',
|
||||||
|
'run',
|
||||||
|
'all',
|
||||||
|
'each',
|
||||||
|
'map',
|
||||||
|
'close',
|
||||||
|
'exec'
|
||||||
|
].forEach(function (name) {
|
||||||
|
trace.extendTrace(Database.prototype, name);
|
||||||
|
});
|
||||||
|
[
|
||||||
|
'bind',
|
||||||
|
'get',
|
||||||
|
'run',
|
||||||
|
'all',
|
||||||
|
'each',
|
||||||
|
'map',
|
||||||
|
'reset',
|
||||||
|
'finalize',
|
||||||
|
].forEach(function (name) {
|
||||||
|
trace.extendTrace(Statement.prototype, name);
|
||||||
|
});
|
||||||
|
isVerbose = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
};
|
42
node_modules/sqlite3/lib/trace.js
generated
vendored
Normal file
42
node_modules/sqlite3/lib/trace.js
generated
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Inspired by https://github.com/tlrobinson/long-stack-traces
|
||||||
|
var EventEmitter = require('events').EventEmitter;
|
||||||
|
var util = require('util');
|
||||||
|
|
||||||
|
function extendTrace(object, property, pos) {
|
||||||
|
var old = object[property];
|
||||||
|
object[property] = function() {
|
||||||
|
var error = new Error();
|
||||||
|
var name = object.constructor.name + '#' + property + '(' +
|
||||||
|
Array.prototype.slice.call(arguments).map(function(el) {
|
||||||
|
return util.inspect(el, false, 0);
|
||||||
|
}).join(', ') + ')';
|
||||||
|
|
||||||
|
if (typeof pos === 'undefined') pos = -1;
|
||||||
|
if (pos < 0) pos += arguments.length;
|
||||||
|
var cb = arguments[pos];
|
||||||
|
if (typeof arguments[pos] === 'function') {
|
||||||
|
arguments[pos] = function replacement() {
|
||||||
|
try {
|
||||||
|
return cb.apply(this, arguments);
|
||||||
|
} catch (err) {
|
||||||
|
if (err && err.stack && !err.__augmented) {
|
||||||
|
err.stack = filter(err).join('\n');
|
||||||
|
err.stack += '\n--> in ' + name;
|
||||||
|
err.stack += '\n' + filter(error).slice(1).join('\n');
|
||||||
|
err.__augmented = true;
|
||||||
|
}
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return old.apply(this, arguments);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
exports.extendTrace = extendTrace;
|
||||||
|
|
||||||
|
|
||||||
|
function filter(error) {
|
||||||
|
return error.stack.split('\n').filter(function(line) {
|
||||||
|
return line.indexOf(__filename) < 0;
|
||||||
|
});
|
||||||
|
}
|
1
node_modules/sqlite3/node_modules/.bin/node-pre-gyp
generated
vendored
Symbolic link
1
node_modules/sqlite3/node_modules/.bin/node-pre-gyp
generated
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../node-pre-gyp/bin/node-pre-gyp
|
30
node_modules/sqlite3/node_modules/nan/.dntrc
generated
vendored
Normal file
30
node_modules/sqlite3/node_modules/nan/.dntrc
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
## DNT config file
|
||||||
|
## see https://github.com/rvagg/dnt
|
||||||
|
|
||||||
|
NODE_VERSIONS="\
|
||||||
|
master \
|
||||||
|
v0.11.13 \
|
||||||
|
v0.10.30 \
|
||||||
|
v0.10.29 \
|
||||||
|
v0.10.28 \
|
||||||
|
v0.10.26 \
|
||||||
|
v0.10.25 \
|
||||||
|
v0.10.24 \
|
||||||
|
v0.10.23 \
|
||||||
|
v0.10.22 \
|
||||||
|
v0.10.21 \
|
||||||
|
v0.10.20 \
|
||||||
|
v0.10.19 \
|
||||||
|
v0.8.28 \
|
||||||
|
v0.8.27 \
|
||||||
|
v0.8.26 \
|
||||||
|
v0.8.24 \
|
||||||
|
"
|
||||||
|
OUTPUT_PREFIX="nan-"
|
||||||
|
TEST_CMD=" \
|
||||||
|
cd /dnt/ && \
|
||||||
|
npm install && \
|
||||||
|
node_modules/.bin/node-gyp --nodedir /usr/src/node/ rebuild --directory test && \
|
||||||
|
node_modules/.bin/tap --gc test/js/*-test.js \
|
||||||
|
"
|
||||||
|
|
200
node_modules/sqlite3/node_modules/nan/CHANGELOG.md
generated
vendored
Normal file
200
node_modules/sqlite3/node_modules/nan/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
# NAN ChangeLog
|
||||||
|
|
||||||
|
### Version 1.3.0: current Node unstable: 0.11.13, Node stable: 0.10.30
|
||||||
|
|
||||||
|
|
||||||
|
**1.3.0 Aug 2 2014**
|
||||||
|
|
||||||
|
- Added NanNew<v8::String, std::string>(std::string)
|
||||||
|
- Added NanNew<v8::String, std::string&>(std::string&)
|
||||||
|
- Added NanAsciiString helper class
|
||||||
|
- Added NanUtf8String helper class
|
||||||
|
- Added NanUcs2String helper class
|
||||||
|
- Deprecated NanRawString()
|
||||||
|
- Deprecated NanCString()
|
||||||
|
- Added NanGetIsolateData(v8::Isolate *isolate)
|
||||||
|
- Added NanMakeCallback(v8::Handle<v8::Object> target, v8::Handle<v8::Function> func, int argc, v8::Handle<v8::Value>* argv)
|
||||||
|
- Added NanMakeCallback(v8::Handle<v8::Object> target, v8::Handle<v8::String> symbol, int argc, v8::Handle<v8::Value>* argv)
|
||||||
|
- Added NanMakeCallback(v8::Handle<v8::Object> target, const char* method, int argc, v8::Handle<v8::Value>* argv)
|
||||||
|
- Added NanSetTemplate(v8::Handle<v8::Template> templ, v8::Handle<v8::String> name , v8::Handle<v8::Data> value, v8::PropertyAttribute attributes)
|
||||||
|
- Added NanSetPrototypeTemplate(v8::Local<v8::FunctionTemplate> templ, v8::Handle<v8::String> name, v8::Handle<v8::Data> value, v8::PropertyAttribute attributes)
|
||||||
|
- Added NanSetInstanceTemplate(v8::Local<v8::FunctionTemplate> templ, const char *name, v8::Handle<v8::Data> value)
|
||||||
|
- Added NanSetInstanceTemplate(v8::Local<v8::FunctionTemplate> templ, v8::Handle<v8::String> name, v8::Handle<v8::Data> value, v8::PropertyAttribute attributes)
|
||||||
|
|
||||||
|
**1.2.0 Jun 5 2014**
|
||||||
|
|
||||||
|
- Add NanSetPrototypeTemplate
|
||||||
|
- Changed NAN_WEAK_CALLBACK internals, switched _NanWeakCallbackData to class,
|
||||||
|
introduced _NanWeakCallbackDispatcher
|
||||||
|
- Removed -Wno-unused-local-typedefs from test builds
|
||||||
|
- Made test builds Windows compatible ('Sleep()')
|
||||||
|
|
||||||
|
**1.1.2 May 28 2014**
|
||||||
|
|
||||||
|
- Release to fix more stuff-ups in 1.1.1
|
||||||
|
|
||||||
|
**1.1.1 May 28 2014**
|
||||||
|
|
||||||
|
- Release to fix version mismatch in nan.h and lack of changelog entry for 1.1.0
|
||||||
|
|
||||||
|
**1.1.0 May 25 2014**
|
||||||
|
|
||||||
|
- Remove nan_isolate, use v8::Isolate::GetCurrent() internally instead
|
||||||
|
- Additional explicit overloads for NanNew(): (char*,int), (uint8_t*[,int]),
|
||||||
|
(uint16_t*[,int), double, int, unsigned int, bool, v8::String::ExternalStringResource*,
|
||||||
|
v8::String::ExternalAsciiStringResource*
|
||||||
|
- Deprecate NanSymbol()
|
||||||
|
- Added SetErrorMessage() and ErrorMessage() to NanAsyncWorker
|
||||||
|
|
||||||
|
**1.0.0 May 4 2014**
|
||||||
|
|
||||||
|
- Heavy API changes for V8 3.25 / Node 0.11.13
|
||||||
|
- Use cpplint.py
|
||||||
|
- Removed NanInitPersistent
|
||||||
|
- Removed NanPersistentToLocal
|
||||||
|
- Removed NanFromV8String
|
||||||
|
- Removed NanMakeWeak
|
||||||
|
- Removed NanNewLocal
|
||||||
|
- Removed NAN_WEAK_CALLBACK_OBJECT
|
||||||
|
- Removed NAN_WEAK_CALLBACK_DATA
|
||||||
|
- Introduce NanNew, replaces NanNewLocal, NanPersistentToLocal, adds many overloaded typed versions
|
||||||
|
- Introduce NanUndefined, NanNull, NanTrue and NanFalse
|
||||||
|
- Introduce NanEscapableScope and NanEscapeScope
|
||||||
|
- Introduce NanMakeWeakPersistent (requires a special callback to work on both old and new node)
|
||||||
|
- Introduce NanMakeCallback for node::MakeCallback
|
||||||
|
- Introduce NanSetTemplate
|
||||||
|
- Introduce NanGetCurrentContext
|
||||||
|
- Introduce NanCompileScript and NanRunScript
|
||||||
|
- Introduce NanAdjustExternalMemory
|
||||||
|
- Introduce NanAddGCEpilogueCallback, NanAddGCPrologueCallback, NanRemoveGCEpilogueCallback, NanRemoveGCPrologueCallback
|
||||||
|
- Introduce NanGetHeapStatistics
|
||||||
|
- Rename NanAsyncWorker#SavePersistent() to SaveToPersistent()
|
||||||
|
|
||||||
|
**0.8.0 Jan 9 2014**
|
||||||
|
|
||||||
|
- NanDispose -> NanDisposePersistent, deprecate NanDispose
|
||||||
|
- Extract _NAN_*_RETURN_TYPE, pull up NAN_*()
|
||||||
|
|
||||||
|
**0.7.1 Jan 9 2014**
|
||||||
|
|
||||||
|
- Fixes to work against debug builds of Node
|
||||||
|
- Safer NanPersistentToLocal (avoid reinterpret_cast)
|
||||||
|
- Speed up common NanRawString case by only extracting flattened string when necessary
|
||||||
|
|
||||||
|
**0.7.0 Dec 17 2013**
|
||||||
|
|
||||||
|
- New no-arg form of NanCallback() constructor.
|
||||||
|
- NanCallback#Call takes Handle rather than Local
|
||||||
|
- Removed deprecated NanCallback#Run method, use NanCallback#Call instead
|
||||||
|
- Split off _NAN_*_ARGS_TYPE from _NAN_*_ARGS
|
||||||
|
- Restore (unofficial) Node 0.6 compatibility at NanCallback#Call()
|
||||||
|
- Introduce NanRawString() for char* (or appropriate void*) from v8::String
|
||||||
|
(replacement for NanFromV8String)
|
||||||
|
- Introduce NanCString() for null-terminated char* from v8::String
|
||||||
|
|
||||||
|
**0.6.0 Nov 21 2013**
|
||||||
|
|
||||||
|
- Introduce NanNewLocal<T>(v8::Handle<T> value) for use in place of
|
||||||
|
v8::Local<T>::New(...) since v8 started requiring isolate in Node 0.11.9
|
||||||
|
|
||||||
|
**0.5.2 Nov 16 2013**
|
||||||
|
|
||||||
|
- Convert SavePersistent and GetFromPersistent in NanAsyncWorker from protected and public
|
||||||
|
|
||||||
|
**0.5.1 Nov 12 2013**
|
||||||
|
|
||||||
|
- Use node::MakeCallback() instead of direct v8::Function::Call()
|
||||||
|
|
||||||
|
**0.5.0 Nov 11 2013**
|
||||||
|
|
||||||
|
- Added @TooTallNate as collaborator
|
||||||
|
- New, much simpler, "include_dirs" for binding.gyp
|
||||||
|
- Added full range of NAN_INDEX_* macros to match NAN_PROPERTY_* macros
|
||||||
|
|
||||||
|
**0.4.4 Nov 2 2013**
|
||||||
|
|
||||||
|
- Isolate argument from v8::Persistent::MakeWeak removed for 0.11.8+
|
||||||
|
|
||||||
|
**0.4.3 Nov 2 2013**
|
||||||
|
|
||||||
|
- Include node_object_wrap.h, removed from node.h for Node 0.11.8.
|
||||||
|
|
||||||
|
**0.4.2 Nov 2 2013**
|
||||||
|
|
||||||
|
- Handle deprecation of v8::Persistent::Dispose(v8::Isolate* isolate)) for
|
||||||
|
Node 0.11.8 release.
|
||||||
|
|
||||||
|
**0.4.1 Sep 16 2013**
|
||||||
|
|
||||||
|
- Added explicit `#include <uv.h>` as it was removed from node.h for v0.11.8
|
||||||
|
|
||||||
|
**0.4.0 Sep 2 2013**
|
||||||
|
|
||||||
|
- Added NAN_INLINE and NAN_DEPRECATED and made use of them
|
||||||
|
- Added NanError, NanTypeError and NanRangeError
|
||||||
|
- Cleaned up code
|
||||||
|
|
||||||
|
**0.3.2 Aug 30 2013**
|
||||||
|
|
||||||
|
- Fix missing scope declaration in GetFromPersistent() and SaveToPersistent
|
||||||
|
in NanAsyncWorker
|
||||||
|
|
||||||
|
**0.3.1 Aug 20 2013**
|
||||||
|
|
||||||
|
- fix "not all control paths return a value" compile warning on some platforms
|
||||||
|
|
||||||
|
**0.3.0 Aug 19 2013**
|
||||||
|
|
||||||
|
- Made NAN work with NPM
|
||||||
|
- Lots of fixes to NanFromV8String, pulling in features from new Node core
|
||||||
|
- Changed node::encoding to Nan::Encoding in NanFromV8String to unify the API
|
||||||
|
- Added optional error number argument for NanThrowError()
|
||||||
|
- Added NanInitPersistent()
|
||||||
|
- Added NanReturnNull() and NanReturnEmptyString()
|
||||||
|
- Added NanLocker and NanUnlocker
|
||||||
|
- Added missing scopes
|
||||||
|
- Made sure to clear disposed Persistent handles
|
||||||
|
- Changed NanAsyncWorker to allocate error messages on the heap
|
||||||
|
- Changed NanThrowError(Local<Value>) to NanThrowError(Handle<Value>)
|
||||||
|
- Fixed leak in NanAsyncWorker when errmsg is used
|
||||||
|
|
||||||
|
**0.2.2 Aug 5 2013**
|
||||||
|
|
||||||
|
- Fixed usage of undefined variable with node::BASE64 in NanFromV8String()
|
||||||
|
|
||||||
|
**0.2.1 Aug 5 2013**
|
||||||
|
|
||||||
|
- Fixed 0.8 breakage, node::BUFFER encoding type not available in 0.8 for
|
||||||
|
NanFromV8String()
|
||||||
|
|
||||||
|
**0.2.0 Aug 5 2013**
|
||||||
|
|
||||||
|
- Added NAN_PROPERTY_GETTER, NAN_PROPERTY_SETTER, NAN_PROPERTY_ENUMERATOR,
|
||||||
|
NAN_PROPERTY_DELETER, NAN_PROPERTY_QUERY
|
||||||
|
- Extracted _NAN_METHOD_ARGS, _NAN_GETTER_ARGS, _NAN_SETTER_ARGS,
|
||||||
|
_NAN_PROPERTY_GETTER_ARGS, _NAN_PROPERTY_SETTER_ARGS,
|
||||||
|
_NAN_PROPERTY_ENUMERATOR_ARGS, _NAN_PROPERTY_DELETER_ARGS,
|
||||||
|
_NAN_PROPERTY_QUERY_ARGS
|
||||||
|
- Added NanGetInternalFieldPointer, NanSetInternalFieldPointer
|
||||||
|
- Added NAN_WEAK_CALLBACK, NAN_WEAK_CALLBACK_OBJECT,
|
||||||
|
NAN_WEAK_CALLBACK_DATA, NanMakeWeak
|
||||||
|
- Renamed THROW_ERROR to _NAN_THROW_ERROR
|
||||||
|
- Added NanNewBufferHandle(char*, size_t, node::smalloc::FreeCallback, void*)
|
||||||
|
- Added NanBufferUse(char*, uint32_t)
|
||||||
|
- Added NanNewContextHandle(v8::ExtensionConfiguration*,
|
||||||
|
v8::Handle<v8::ObjectTemplate>, v8::Handle<v8::Value>)
|
||||||
|
- Fixed broken NanCallback#GetFunction()
|
||||||
|
- Added optional encoding and size arguments to NanFromV8String()
|
||||||
|
- Added NanGetPointerSafe() and NanSetPointerSafe()
|
||||||
|
- Added initial test suite (to be expanded)
|
||||||
|
- Allow NanUInt32OptionValue to convert any Number object
|
||||||
|
|
||||||
|
**0.1.0 Jul 21 2013**
|
||||||
|
|
||||||
|
- Added `NAN_GETTER`, `NAN_SETTER`
|
||||||
|
- Added `NanThrowError` with single Local<Value> argument
|
||||||
|
- Added `NanNewBufferHandle` with single uint32_t argument
|
||||||
|
- Added `NanHasInstance(Persistent<FunctionTemplate>&, Handle<Value>)`
|
||||||
|
- Added `Local<Function> NanCallback#GetFunction()`
|
||||||
|
- Added `NanCallback#Call(int, Local<Value>[])`
|
||||||
|
- Deprecated `NanCallback#Run(int, Local<Value>[])` in favour of Call
|
46
node_modules/sqlite3/node_modules/nan/LICENSE
generated
vendored
Normal file
46
node_modules/sqlite3/node_modules/nan/LICENSE
generated
vendored
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
Copyright 2013, NAN contributors:
|
||||||
|
- Rod Vagg <https://github.com/rvagg>
|
||||||
|
- Benjamin Byholm <https://github.com/kkoopa>
|
||||||
|
- Trevor Norris <https://github.com/trevnorris>
|
||||||
|
- Nathan Rajlich <https://github.com/TooTallNate>
|
||||||
|
- Brett Lawson <https://github.com/brett19>
|
||||||
|
- Ben Noordhuis <https://github.com/bnoordhuis>
|
||||||
|
(the "Original Author")
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
MIT +no-false-attribs License
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Distributions of all or part of the Software intended to be used
|
||||||
|
by the recipients as they would use the unmodified Software,
|
||||||
|
containing modifications that substantially alter, remove, or
|
||||||
|
disable functionality of the Software, outside of the documented
|
||||||
|
configuration mechanisms provided by the Software, shall be
|
||||||
|
modified such that the Original Author's bug reporting email
|
||||||
|
addresses and urls are either replaced with the contact information
|
||||||
|
of the parties responsible for the changes, or removed entirely.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
Except where noted, this license applies to any and all software
|
||||||
|
programs and associated documentation files created by the
|
||||||
|
Original Author, when distributed with the Software.
|
1054
node_modules/sqlite3/node_modules/nan/README.md
generated
vendored
Normal file
1054
node_modules/sqlite3/node_modules/nan/README.md
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
32
node_modules/sqlite3/node_modules/nan/appveyor.yml
generated
vendored
Normal file
32
node_modules/sqlite3/node_modules/nan/appveyor.yml
generated
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# http://www.appveyor.com/docs/appveyor-yml
|
||||||
|
|
||||||
|
# Test against these versions of Node.js.
|
||||||
|
environment:
|
||||||
|
matrix:
|
||||||
|
- nodejs_version: "0.8"
|
||||||
|
- nodejs_version: "0.10"
|
||||||
|
- nodejs_version: "0.11"
|
||||||
|
|
||||||
|
# Install scripts. (runs after repo cloning)
|
||||||
|
install:
|
||||||
|
# Get the latest stable version of Node 0.STABLE.latest
|
||||||
|
- npm install npm
|
||||||
|
- move node_modules npm
|
||||||
|
- ps: Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version)
|
||||||
|
# Typical npm stuff.
|
||||||
|
- npm/.bin/npm install
|
||||||
|
- npm/.bin/npm run rebuild-tests
|
||||||
|
|
||||||
|
# Post-install test scripts.
|
||||||
|
test_script:
|
||||||
|
# Output useful info for debugging.
|
||||||
|
- node --version
|
||||||
|
- npm --version
|
||||||
|
- cmd: npm test
|
||||||
|
|
||||||
|
# Don't actually build.
|
||||||
|
build: off
|
||||||
|
|
||||||
|
# Set build version format here instead of in the admin panel.
|
||||||
|
version: "{build}"
|
||||||
|
|
1
node_modules/sqlite3/node_modules/nan/include_dirs.js
generated
vendored
Normal file
1
node_modules/sqlite3/node_modules/nan/include_dirs.js
generated
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
console.log(require('path').relative('.', __dirname));
|
2331
node_modules/sqlite3/node_modules/nan/nan.h
generated
vendored
Normal file
2331
node_modules/sqlite3/node_modules/nan/nan.h
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
79
node_modules/sqlite3/node_modules/nan/package.json
generated
vendored
Normal file
79
node_modules/sqlite3/node_modules/nan/package.json
generated
vendored
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
"name": "nan",
|
||||||
|
"version": "1.3.0",
|
||||||
|
"description": "Native Abstractions for Node.js: C++ header for Node 0.8->0.12 compatibility",
|
||||||
|
"main": "include_dirs.js",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/rvagg/nan.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "tap --gc test/js/*-test.js",
|
||||||
|
"rebuild-tests": "node-gyp rebuild --directory test"
|
||||||
|
},
|
||||||
|
"contributors": [
|
||||||
|
{
|
||||||
|
"name": "Rod Vagg",
|
||||||
|
"email": "r@va.gg",
|
||||||
|
"url": "https://github.com/rvagg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Benjamin Byholm",
|
||||||
|
"email": "bbyholm@abo.fi",
|
||||||
|
"url": "https://github.com/kkoopa/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Trevor Norris",
|
||||||
|
"email": "trev.norris@gmail.com",
|
||||||
|
"url": "https://github.com/trevnorris"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Nathan Rajlich",
|
||||||
|
"email": "nathan@tootallnate.net",
|
||||||
|
"url": "https://github.com/TooTallNate"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Brett Lawson",
|
||||||
|
"email": "brett19@gmail.com",
|
||||||
|
"url": "https://github.com/brett19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ben Noordhuis",
|
||||||
|
"email": "info@bnoordhuis.nl",
|
||||||
|
"url": "https://github.com/bnoordhuis"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"devDependencies": {
|
||||||
|
"bindings": "~1.2.1",
|
||||||
|
"node-gyp": "~1.0.1",
|
||||||
|
"tap": "~0.4.12",
|
||||||
|
"xtend": "~4.0.0"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"gitHead": "e482fbe142e58373d5a24f4e5a60c61e22a13f83",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/rvagg/nan/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/rvagg/nan",
|
||||||
|
"_id": "nan@1.3.0",
|
||||||
|
"_shasum": "9a5b8d5ef97a10df3050e59b2c362d3baf779742",
|
||||||
|
"_from": "nan@1.3.0",
|
||||||
|
"_npmVersion": "1.4.21",
|
||||||
|
"_npmUser": {
|
||||||
|
"name": "rvagg",
|
||||||
|
"email": "rod@vagg.org"
|
||||||
|
},
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"name": "rvagg",
|
||||||
|
"email": "rod@vagg.org"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dist": {
|
||||||
|
"shasum": "9a5b8d5ef97a10df3050e59b2c362d3baf779742",
|
||||||
|
"tarball": "http://registry.npmjs.org/nan/-/nan-1.3.0.tgz"
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"_resolved": "https://registry.npmjs.org/nan/-/nan-1.3.0.tgz",
|
||||||
|
"readme": "ERROR: No README data found!"
|
||||||
|
}
|
161
node_modules/sqlite3/node_modules/node-pre-gyp/CHANGELOG.md
generated
vendored
Normal file
161
node_modules/sqlite3/node_modules/node-pre-gyp/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
# node-pre-gyp changelog
|
||||||
|
|
||||||
|
## 0.5.27
|
||||||
|
|
||||||
|
- Fixed support for auto-detecting s3 bucket name when it contains `.` - @taavo
|
||||||
|
- Fixed support for installing when path contains a `'` - @halfdan
|
||||||
|
- Ported tests to mocha
|
||||||
|
|
||||||
|
## 0.5.26
|
||||||
|
|
||||||
|
- Fix node-webkit support when `--target` option is not provided
|
||||||
|
|
||||||
|
## 0.5.25
|
||||||
|
|
||||||
|
- Fix bundling of deps
|
||||||
|
|
||||||
|
## 0.5.24
|
||||||
|
|
||||||
|
- Updated ABI crosswalk to incldue node v0.10.30 and v0.10.31
|
||||||
|
|
||||||
|
## 0.5.23
|
||||||
|
|
||||||
|
- Added `reveal` command. Pass no options to get all versioning data as json. Pass a second arg to grab a single versioned property value
|
||||||
|
- Added support for `--silent` (shortcut for `--loglevel=silent`)
|
||||||
|
|
||||||
|
## 0.5.22
|
||||||
|
|
||||||
|
- Fixed node-webkit versioning name (NOTE: node-webkit support still experimental)
|
||||||
|
|
||||||
|
## 0.5.21
|
||||||
|
|
||||||
|
- New package to fix `shasum check failed` error with v0.5.20
|
||||||
|
|
||||||
|
## 0.5.20
|
||||||
|
|
||||||
|
- Now versioning node-webkit binaries based on major.minor.patch - assuming no compatible ABI across versions (#90)
|
||||||
|
|
||||||
|
## 0.5.19
|
||||||
|
|
||||||
|
- Updated to know about more node-webkit releases
|
||||||
|
|
||||||
|
## 0.5.18
|
||||||
|
|
||||||
|
- Updated to know about more node-webkit releases
|
||||||
|
|
||||||
|
## 0.5.17
|
||||||
|
|
||||||
|
- Updated to know about node v0.10.29 release
|
||||||
|
|
||||||
|
## 0.5.16
|
||||||
|
|
||||||
|
- Now supporting all aws-sdk configuration parameters (http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html) (#86)
|
||||||
|
|
||||||
|
## 0.5.15
|
||||||
|
|
||||||
|
- Fixed installation of windows packages sub directories on unix systems (#84)
|
||||||
|
|
||||||
|
## 0.5.14
|
||||||
|
|
||||||
|
- Finished support for cross building using `--target_platform` option (#82)
|
||||||
|
- Now skipping binary validation on install if target arch/platform do not match the host.
|
||||||
|
- Removed multi-arch validing for OS X since it required a FAT node.js binary
|
||||||
|
|
||||||
|
## 0.5.13
|
||||||
|
|
||||||
|
- Fix problem in 0.5.12 whereby the wrong versions of mkdirp and semver where bundled.
|
||||||
|
|
||||||
|
## 0.5.12
|
||||||
|
|
||||||
|
- Improved support for node-webkit (@Mithgol)
|
||||||
|
|
||||||
|
## 0.5.11
|
||||||
|
|
||||||
|
- Updated target versions listing
|
||||||
|
|
||||||
|
## 0.5.10
|
||||||
|
|
||||||
|
- Fixed handling of `-debug` flag passed directory to node-pre-gyp (#72)
|
||||||
|
- Added optional second arg to `node_pre_gyp.find` to customize the default versioning options used to locate the runtime binary
|
||||||
|
- Failed install due to `testbinary` check failure no longer leaves behind binary (#70)
|
||||||
|
|
||||||
|
## 0.5.9
|
||||||
|
|
||||||
|
- Fixed regression in `testbinary` command causing installs to fail on windows with 0.5.7 (#60)
|
||||||
|
|
||||||
|
## 0.5.8
|
||||||
|
|
||||||
|
- Started bundling deps
|
||||||
|
|
||||||
|
## 0.5.7
|
||||||
|
|
||||||
|
- Fixed the `testbinary` check, which is used to determine whether to re-download or source compile, to work even in complex dependency situations (#63)
|
||||||
|
- Exposed the internal `testbinary` command in node-pre-gyp command line tool
|
||||||
|
- Fixed minor bug so that `fallback_to_build` option is always respected
|
||||||
|
|
||||||
|
## 0.5.6
|
||||||
|
|
||||||
|
- Added support for versioning on the `name` value in `package.json` (#57).
|
||||||
|
- Moved to using streams for reading tarball when publishing (#52)
|
||||||
|
|
||||||
|
## 0.5.5
|
||||||
|
|
||||||
|
- Improved binary validation that also now works with node-webkit (@Mithgol)
|
||||||
|
- Upgraded test apps to work with node v0.11.x
|
||||||
|
- Improved test coverage
|
||||||
|
|
||||||
|
## 0.5.4
|
||||||
|
|
||||||
|
- No longer depends on external install of node-gyp for compiling builds.
|
||||||
|
|
||||||
|
## 0.5.3
|
||||||
|
|
||||||
|
- Reverted fix for debian/nodejs since it broke windows (#45)
|
||||||
|
|
||||||
|
## 0.5.2
|
||||||
|
|
||||||
|
- Support for debian systems where the node binary is named `nodejs` (#45)
|
||||||
|
- Added `bin/node-pre-gyp.cmd` to be able to run command on windows locally (npm creates an .npm automatically when globally installed)
|
||||||
|
- Updated abi-crosswalk with node v0.10.26 entry.
|
||||||
|
|
||||||
|
## 0.5.1
|
||||||
|
|
||||||
|
- Various minor bug fixes, several improving windows support for publishing.
|
||||||
|
|
||||||
|
## 0.5.0
|
||||||
|
|
||||||
|
- Changed property names in `binary` object: now required are `module_name`, `module_path`, and `host`.
|
||||||
|
- Now `module_path` supports versioning, which allows developers to opt-in to using a versioned install path (#18).
|
||||||
|
- Added `remote_path` which also supports versioning.
|
||||||
|
- Changed `remote_uri` to `host`.
|
||||||
|
|
||||||
|
## 0.4.2
|
||||||
|
|
||||||
|
- Added support for `--target` flag to request cross-compile against a specific node/node-webkit version.
|
||||||
|
- Added preliminary support for node-webkit
|
||||||
|
- Fixed support for `--target_arch` option being respected in all cases.
|
||||||
|
|
||||||
|
## 0.4.1
|
||||||
|
|
||||||
|
- Fixed exception when only stderr is available in binary test (@bendi / #31)
|
||||||
|
|
||||||
|
## 0.4.0
|
||||||
|
|
||||||
|
- Enforce only `https:` based remote publishing access.
|
||||||
|
- Added `node-pre-gyp info` command to display listing of published binaries
|
||||||
|
- Added support for changing the directory node-pre-gyp should build in with the `-C/--directory` option.
|
||||||
|
- Added support for S3 prefixes.
|
||||||
|
|
||||||
|
## 0.3.1
|
||||||
|
|
||||||
|
- Added `unpublish` command.
|
||||||
|
- Fixed module path construction in tests.
|
||||||
|
- Added ability to disable falling back to build behavior via `npm install --fallback-to-build=false` which overrides setting in a depedencies package.json `install` target.
|
||||||
|
|
||||||
|
## 0.3.0
|
||||||
|
|
||||||
|
- Support for packaging all files in `module_path` directory - see `app4` for example
|
||||||
|
- Added `testpackage` command.
|
||||||
|
- Changed `clean` command to only delete `.node` not entire `build` directory since node-gyp will handle that.
|
||||||
|
- `.node` modules must be in a folder of there own since tar-pack will remove everything when it unpacks.
|
||||||
|
|
27
node_modules/sqlite3/node_modules/node-pre-gyp/LICENSE
generated
vendored
Normal file
27
node_modules/sqlite3/node_modules/node-pre-gyp/LICENSE
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Copyright (c), MapBox
|
||||||
|
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 of the {organization} 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.
|
515
node_modules/sqlite3/node_modules/node-pre-gyp/README.md
generated
vendored
Normal file
515
node_modules/sqlite3/node_modules/node-pre-gyp/README.md
generated
vendored
Normal file
@ -0,0 +1,515 @@
|
|||||||
|
# node-pre-gyp
|
||||||
|
|
||||||
|
#### node-pre-gyp makes it easy to publish and install Node.js C++ addons from binaries
|
||||||
|
|
||||||
|
[![NPM](https://nodei.co/npm/node-pre-gyp.png)](https://nodei.co/npm/node-pre-gyp/)
|
||||||
|
|
||||||
|
[![Build Status](https://api.travis-ci.org/mapbox/node-pre-gyp.svg)](https://travis-ci.org/mapbox/node-pre-gyp)
|
||||||
|
[![Build status](https://ci.appveyor.com/api/projects/status/3nxewb425y83c0gv)](https://ci.appveyor.com/project/Mapbox/node-pre-gyp)
|
||||||
|
[![Dependencies](https://david-dm.org/mapbox/node-pre-gyp.svg)](https://david-dm.org/mapbox/node-pre-gyp)
|
||||||
|
|
||||||
|
`node-pre-gyp` stands between [npm](https://github.com/npm/npm) and [node-gyp](https://github.com/Tootallnate/node-gyp) and offers a cross-platform method of binary deployment.
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- A command line tool called `node-pre-gyp` that can install your package's c++ module from a binary.
|
||||||
|
- A variety of developer targeted commands for packaging, testing, and publishing binaries.
|
||||||
|
- A Javascript module that can dynamically require your installed binary: `require('node-pre-gyp').find`
|
||||||
|
|
||||||
|
For a hello world example of a module packaged with `node-pre-gyp` see <https://github.com/springmeyer/node-addon-example> and [the wiki ](https://github.com/mapbox/node-pre-gyp/wiki/Modules-using-node-pre-gyp) for real world examples.
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
- The module is modeled after [node-gyp](https://github.com/Tootallnate/node-gyp) by [@Tootallnate](https://github.com/Tootallnate)
|
||||||
|
- Motivation for initial development came from [@ErisDS](https://github.com/ErisDS) and the [Ghost Project](https://github.com/TryGhost/Ghost).
|
||||||
|
- Development is sponsored by [Mapbox](https://www.mapbox.com/)
|
||||||
|
|
||||||
|
## Depends
|
||||||
|
|
||||||
|
- Node.js 0.10.x or 0.8.x
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
`node-pre-gyp` is designed to be installed as a local dependency of your Node.js C++ addon and accessed like:
|
||||||
|
|
||||||
|
./node_modules/.bin/node-pre-gyp --help
|
||||||
|
|
||||||
|
But you can also install it globally:
|
||||||
|
|
||||||
|
npm install node-pre-gyp -g
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Commands
|
||||||
|
|
||||||
|
View all possible commands:
|
||||||
|
|
||||||
|
node-pre-gyp --help
|
||||||
|
|
||||||
|
- clean - Removes the entire folder containing the compiled .node module
|
||||||
|
- install - Attempts to install pre-built binary for module
|
||||||
|
- reinstall - Runs "clean" and "install" at once
|
||||||
|
- build - Attempts to compile the module by dispatching to node-gyp or nw-gyp
|
||||||
|
- rebuild - Runs "clean" and "build" at once
|
||||||
|
- package - Packs binary into tarball
|
||||||
|
- testpackage - Tests that the staged package is valid
|
||||||
|
- publish - Publishes pre-built binary
|
||||||
|
- unpublish - Unpublishes pre-built binary
|
||||||
|
- info - Fetches info on published binaries
|
||||||
|
|
||||||
|
You can also chain commands:
|
||||||
|
|
||||||
|
node-pre-gyp clean build unpublish publish info
|
||||||
|
|
||||||
|
### Options
|
||||||
|
|
||||||
|
Options include:
|
||||||
|
|
||||||
|
- `-C/--directory`: run the command in this directory
|
||||||
|
- `--build-from-source`: build from source instead of using pre-built binary
|
||||||
|
- `--runtime=node-webkit`: customize the runtime: `node` and `node-webkit` are the valid options
|
||||||
|
- `--fallback-to-build`: fallback to building from source if pre-built binary is not available
|
||||||
|
- `--target=0.10.25`: Pass the target node or node-webkit version to compile against
|
||||||
|
- `--target_arch=ia32`: Pass the target arch and override the host `arch`. Valid values are 'ia32','x64', or `arm`.
|
||||||
|
- `--target_platform=win32`: Pass the target platform and override the host `platform`. Valid values are `linux`, `darwin`, `win32`, `sunos`, `freebsd`, `openbsd`, and `aix`.
|
||||||
|
|
||||||
|
Both `--build-from-source` and `--fallback-to-build` can be passed alone or they can provide values. You can pass `--fallback-to-build=false` to override the option as declared in package.json. In addition to being able to pass `--build-from-source` you can also pass `--build-from-source=myapp` where `myapp` is the name of your module.
|
||||||
|
|
||||||
|
For example: `npm install --build-from-source=myapp`. This is useful if:
|
||||||
|
|
||||||
|
- `myapp` is referenced in the package.json of a larger app and therefore `myapp` is being installed as a dependent with `npm install`.
|
||||||
|
- The larger app also depends on other modules installed with `node-pre-gyp`
|
||||||
|
- You only want to trigger a source compile for `myapp` and the other modules.
|
||||||
|
|
||||||
|
### Configuring
|
||||||
|
|
||||||
|
This is a guide to configuring your module to use node-pre-gyp.
|
||||||
|
|
||||||
|
#### 1) Add new entries to your `package.json`
|
||||||
|
|
||||||
|
- Add `node-pre-gyp` to `bundledDependencies`
|
||||||
|
- Add `aws-sdk` as a `devDependency`
|
||||||
|
- Add a custom `install` script
|
||||||
|
- Declare a `binary` object
|
||||||
|
|
||||||
|
This looks like:
|
||||||
|
|
||||||
|
```js
|
||||||
|
"dependencies" : {
|
||||||
|
"node-pre-gyp": "0.5.x"
|
||||||
|
},
|
||||||
|
"bundledDependencies":["node-pre-gyp"],
|
||||||
|
"devDependencies": {
|
||||||
|
"aws-sdk": "~2.0.0-rc.15"
|
||||||
|
}
|
||||||
|
"scripts": {
|
||||||
|
"install": "node-pre-gyp install --fallback-to-build",
|
||||||
|
},
|
||||||
|
"binary": {
|
||||||
|
"module_name": "your_module",
|
||||||
|
"module_path": "./lib/binding/",
|
||||||
|
"host": "https://your_module.s3-us-west-1.amazonaws.com"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
For a full example see [node-addon-examples's package.json](https://github.com/springmeyer/node-addon-example/blob/2ff60a8ded7f042864ad21db00c3a5a06cf47075/package.json#L11-L22).
|
||||||
|
|
||||||
|
##### The `binary` object has three required properties
|
||||||
|
|
||||||
|
###### module_name
|
||||||
|
|
||||||
|
The name of your native node module. This value must:
|
||||||
|
|
||||||
|
- Match the name passed to [the NODE_MODULE macro](http://nodejs.org/api/addons.html#addons_hello_world)
|
||||||
|
- Must be a valid C variable name (e.g. it cannot contain `-`)
|
||||||
|
- Should not include the `.node` extension.
|
||||||
|
|
||||||
|
###### module_path
|
||||||
|
|
||||||
|
The location your native module is placed after a build. This should be an empty directory without other javascript files. This entire directory will be packaged in the binary tarball. When installing from a remote package this directory will be overwritten with the contents of the tarball.
|
||||||
|
|
||||||
|
Note: This property supports variables based on [Versioning](#versioning).
|
||||||
|
|
||||||
|
###### host
|
||||||
|
|
||||||
|
A url to the remote location where you've published tarball binaries (must be `https` not `http`).
|
||||||
|
|
||||||
|
It is highly recommended that you use Amazon S3. The reasons are:
|
||||||
|
|
||||||
|
- Various node-pre-gyp commands like `publish` and `info` only work with an S3 host.
|
||||||
|
- S3 is a very solid hosting platform for distributing large files, even [Github recommends using it instead of github](https://help.github.com/articles/distributing-large-binaries).
|
||||||
|
- We provide detail documentation for using [S3 hosting](#s3-hosting) with node-pre-gyp.
|
||||||
|
|
||||||
|
Why then not require S3? Because while some applications using node-pre-gyp need to distribute binaries as large as 20-30 MB, others might have very small binaries and might wish to store them in a github repo. This is not recommended, but if an author really wants to host in a non-s3 location then it should be possible.
|
||||||
|
|
||||||
|
##### The `binary` object has two optional properties
|
||||||
|
|
||||||
|
###### remote_path
|
||||||
|
|
||||||
|
It **is recommended** that you customize this property. This is an extra path to use for publishing and finding remote tarballs. The default value for `remote_path` is `""` meaning that if you do not provide it then all packages will be published at the base of the `host`. It is recommended to provide a value like `./{name}/v{version}` to help organize remote packages in the case that you choose to publish multiple node addons to the same `host`.
|
||||||
|
|
||||||
|
Note: This property supports variables based on [Versioning](#versioning).
|
||||||
|
|
||||||
|
###### package_name
|
||||||
|
|
||||||
|
It is **not recommended** to override this property unless you are also overriding the `remote_path`. This is the versioned name of the remote tarball containing the binary `.node` module and any supporting files you've placed inside the `module_path` directory. Unless you specify `package_name` in your `package.json` then it defaults to `{module_name}-v{version}-{node_abi}-{platform}-{arch}.tar.gz` which allows your binary to work across node versions, platforms, and architectures. If you are using `remote_path` that is also versioned by `./{module_name}/v{version}` then you could remove these variables from the `package_name` and just use: `{node_abi}-{platform}-{arch}.tar.gz`. Then your remote tarball will be looked up at, for example, `https://example.com/your-module/v0.1.0/node-v11-linux-x64.tar.gz`.
|
||||||
|
|
||||||
|
Note: This property supports variables based on [Versioning](#versioning).
|
||||||
|
|
||||||
|
#### 2) Add a new target to binding.gyp
|
||||||
|
|
||||||
|
`node-pre-gyp` calls out to `node-gyp` to compile the module and passes variables along like [module_name](#module_name) and [module_path](#module_path).
|
||||||
|
|
||||||
|
A new target must be added to `binding.gyp` that moves the compiled `.node` module from `./build/Release/module_name.node` into the directory specified by `module_path`.
|
||||||
|
|
||||||
|
Add a target like this at the end of your `targets` list:
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
"target_name": "action_after_build",
|
||||||
|
"type": "none",
|
||||||
|
"dependencies": [ "<(module_name)" ],
|
||||||
|
"copies": [
|
||||||
|
{
|
||||||
|
"files": [ "<(PRODUCT_DIR)/<(module_name).node" ],
|
||||||
|
"destination": "<(module_path)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
For a full example see [node-addon-example's binding.gyp](https://github.com/springmeyer/node-addon-example/blob/2ff60a8ded7f042864ad21db00c3a5a06cf47075/binding.gyp).
|
||||||
|
|
||||||
|
#### 3) Dynamically require your `.node`
|
||||||
|
|
||||||
|
Inside the main js file that requires your addon module you are likely currently doing:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var binding = require('../build/Release/binding.node');
|
||||||
|
```
|
||||||
|
|
||||||
|
or:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var bindings = require('./bindings')
|
||||||
|
```
|
||||||
|
|
||||||
|
Change those lines to:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var binary = require('node-pre-gyp');
|
||||||
|
var path = require('path');
|
||||||
|
var binding_path = binary.find(path.resolve(path.join(__dirname,'./package.json')));
|
||||||
|
var binding = require(binding_path);
|
||||||
|
```
|
||||||
|
|
||||||
|
For a full example see [node-addon-example's index.js](https://github.com/springmeyer/node-addon-example/blob/2ff60a8ded7f042864ad21db00c3a5a06cf47075/index.js#L1-L4)
|
||||||
|
|
||||||
|
#### 4) Build and package your app
|
||||||
|
|
||||||
|
Now build your module from source:
|
||||||
|
|
||||||
|
npm install --build-from-source
|
||||||
|
|
||||||
|
The `--build-from-source` tells `node-pre-gyp` to not look for a remote package and instead dispatch to node-gyp to build.
|
||||||
|
|
||||||
|
Now `node-pre-gyp` should now also be installed as a local dependency so the command line tool it offers can be found at `./node_modules/.bin/node-pre-gyp`.
|
||||||
|
|
||||||
|
#### 5) Test
|
||||||
|
|
||||||
|
Now `npm test` should work just as it did before.
|
||||||
|
|
||||||
|
#### 6) Publish the tarball
|
||||||
|
|
||||||
|
Then package your app:
|
||||||
|
|
||||||
|
./node_modules/.bin/node-pre-gyp package
|
||||||
|
|
||||||
|
Once packaged, now you can publish:
|
||||||
|
|
||||||
|
./node_modules/.bin/node-pre-gyp publish
|
||||||
|
|
||||||
|
Currently the `publish` command pushes your binary to S3. This requires:
|
||||||
|
|
||||||
|
- You have installed `aws-sdk` with `npm install aws-sdk`
|
||||||
|
- You have created a bucket already.
|
||||||
|
- The `host` points to an S3 http or https endpoint.
|
||||||
|
- You have configured node-pre-gyp to read your S3 credentials (see [S3 hosting](#s3-hosting) for details).
|
||||||
|
|
||||||
|
You can also host your binaries elsewhere. To do this requires:
|
||||||
|
|
||||||
|
- You manually publish the binary created by the `package` command to an `https` endpoint
|
||||||
|
- Ensure that the `host` value points to your custom `https` endpoint.
|
||||||
|
|
||||||
|
#### 7) Automate builds
|
||||||
|
|
||||||
|
Now you need to publish builds for all the platforms and node versions you wish to support. This is best automated.
|
||||||
|
|
||||||
|
- See [Appveyor Automation](#appveyor-automation) for how to auto-publish builds on Windows.
|
||||||
|
- See [Travis Automation](#travis-automation) for how to auto-publish builds on OS X and Linux.
|
||||||
|
|
||||||
|
#### 8) You're done!
|
||||||
|
|
||||||
|
Now publish your module to the npm registry. Users will now be able to install your module from a binary.
|
||||||
|
|
||||||
|
What will happen is this:
|
||||||
|
|
||||||
|
1. `npm install <your package>` will pull from the npm registry
|
||||||
|
2. npm will run the `install` script which will call out to `node-pre-gyp`
|
||||||
|
3. `node-pre-gyp` will fetch the binary `.node` module and unpack in the right place
|
||||||
|
4. Assuming that all worked, you are done
|
||||||
|
|
||||||
|
If a a binary was not available for a given platform and `--fallback-to-build` was used then `node-gyp rebuild` will be called to try to source compile the module.
|
||||||
|
|
||||||
|
## S3 Hosting
|
||||||
|
|
||||||
|
You can host wherever you choose but S3 is cheap, `node-pre-gyp publish` expects it, and S3 can be integrated well with [travis.ci](http://travis-ci.org) to automate builds for OS X and Ubuntu. Here is an approach to do this:
|
||||||
|
|
||||||
|
First, get setup locally and test the workflow:
|
||||||
|
|
||||||
|
#### 1) Create an S3 bucket
|
||||||
|
|
||||||
|
And have your **key** and **secret key** ready for writing to the bucket.
|
||||||
|
|
||||||
|
It is recommended to create a IAM user with a policy that only gives permissions to the specific bucket you plan to publish to. This can be done in the [IAM console](https://console.aws.amazon.com/iam/) by: 1) adding a new user, 2) choosing `Attach User Policy`, 3) Using the `Policy Generator`, 4) selecting `Amazon S3` for the service, 5) adding the actions: `DeleteObject`, `GetObject`, `GetObjectAcl`, `ListBucket`, `PutObject`, `PutObjectAcl`, 6) adding an ARN of `arn:aws:s3:::bucket/*` (replacing `bucket` with your bucket name), and finally 7) clicking `Add Statement` and saving the policy. It should generate a policy like:
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
"Version": "2012-10-17",
|
||||||
|
"Statement": [
|
||||||
|
{
|
||||||
|
"Sid": "Stmt1394587197000",
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": [
|
||||||
|
"s3:DeleteObject",
|
||||||
|
"s3:GetObject",
|
||||||
|
"s3:GetObjectAcl",
|
||||||
|
"s3:ListBucket",
|
||||||
|
"s3:PutObject",
|
||||||
|
"s3:PutObjectAcl"
|
||||||
|
],
|
||||||
|
"Resource": [
|
||||||
|
"arn:aws:s3:::node-pre-gyp-tests/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2) Install node-pre-gyp
|
||||||
|
|
||||||
|
Either install it globally:
|
||||||
|
|
||||||
|
npm install node-pre-gyp -g
|
||||||
|
|
||||||
|
Or put the local version on your PATH
|
||||||
|
|
||||||
|
export PATH=`pwd`/node_modules/.bin/:$PATH
|
||||||
|
|
||||||
|
#### 3) Configure AWS credentials
|
||||||
|
|
||||||
|
There are several ways to do this.
|
||||||
|
|
||||||
|
You can use any of the methods described at http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html.
|
||||||
|
|
||||||
|
Or you can create a `~/.node_pre_gyprc`
|
||||||
|
|
||||||
|
Or pass options in any way supported by [RC](https://github.com/dominictarr/rc#standards)
|
||||||
|
|
||||||
|
A `~/.node_pre_gyprc` looks like:
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
"accessKeyId": "xxx",
|
||||||
|
"secretAccessKey": "xxx"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Another way is to use your environment:
|
||||||
|
|
||||||
|
export node_pre_gyp_accessKeyId=xxx
|
||||||
|
export node_pre_gyp_secretAccessKey=xxx
|
||||||
|
|
||||||
|
You may also need to specify the `region` if it is not explicit in the `host` value you use. The `bucket` can also be specified but it is optional because `node-pre-gyp` will detect it from the `host` value.
|
||||||
|
|
||||||
|
#### 4) Package and publish your build
|
||||||
|
|
||||||
|
Install the `aws-sdk`:
|
||||||
|
|
||||||
|
npm install aws-sdk
|
||||||
|
|
||||||
|
Then publish:
|
||||||
|
|
||||||
|
node-pre-gyp package publish
|
||||||
|
|
||||||
|
Note: if you hit an error like `Hostname/IP doesn't match certificate's altnames` it may mean that you need to provide the `region` option in your config.
|
||||||
|
|
||||||
|
## Appveyor Automation
|
||||||
|
|
||||||
|
[Appveyor](http://www.appveyor.com/) can build binaries and publish the results per commit and supports:
|
||||||
|
|
||||||
|
- Windows Visual Studio 2013 and related compilers
|
||||||
|
- Both 64 bit (x64) and 32 bit (x86) build configurations
|
||||||
|
- Multiple Node.js versions
|
||||||
|
|
||||||
|
For an example of doing this see [node-sqlite3's appveyor.yml](https://github.com/mapbox/node-sqlite3/blob/master/appveyor.yml).
|
||||||
|
|
||||||
|
Below is a guide to getting set up:
|
||||||
|
|
||||||
|
#### 1) Create a free Appveyor account
|
||||||
|
|
||||||
|
Go to https://ci.appveyor.com/signup/free and sign in with your github account.
|
||||||
|
|
||||||
|
#### 2) Create a new project
|
||||||
|
|
||||||
|
Go to https://ci.appveyor.com/projects/new and select the github repo for your module
|
||||||
|
|
||||||
|
#### 3) Add appveyor.yml and push it
|
||||||
|
|
||||||
|
Once you have committed an `appveyor.yml` ([appveyor.yml reference](http://www.appveyor.com/docs/appveyor-yml)) to your github repo and pushed it appveyor should automatically start building your project.
|
||||||
|
|
||||||
|
#### 4) Create secure variables
|
||||||
|
|
||||||
|
Encrypt your S3 AWS keys by going to <https://ci.appveyor.com/tools/encrypt> and hitting the `encrypt` button.
|
||||||
|
|
||||||
|
Then paste the result into your `appveyor.yml`
|
||||||
|
|
||||||
|
```yml
|
||||||
|
environment:
|
||||||
|
node_pre_gyp_accessKeyId:
|
||||||
|
secure: Dn9HKdLNYvDgPdQOzRq/DqZ/MPhjknRHB1o+/lVU8MA=
|
||||||
|
node_pre_gyp_secretAccessKey:
|
||||||
|
secure: W1rwNoSnOku1r+28gnoufO8UA8iWADmL1LiiwH9IOkIVhDTNGdGPJqAlLjNqwLnL
|
||||||
|
```
|
||||||
|
|
||||||
|
NOTE: keys are per account but not per repo (this is difference than travis where keys are per repo but not related to the account used to encrypt them).
|
||||||
|
|
||||||
|
#### 5) Hook up publishing
|
||||||
|
|
||||||
|
Just put `node-pre-gyp package publish` in your `appveyor.yml` after `npm install`.
|
||||||
|
|
||||||
|
#### 6) Publish when you want
|
||||||
|
|
||||||
|
You might wish to publish binaries only on a specific commit. To do this you could borrow from the [travis.ci idea of commit keywords](http://about.travis-ci.org/docs/user/how-to-skip-a-build/) and add special handling for commit messages with `[publish binary]`:
|
||||||
|
|
||||||
|
SET CM=%APPVEYOR_REPO_COMMIT_MESSAGE%
|
||||||
|
if not "%CM%" == "%CM:[publish binary]=%" node-pre-gyp --msvs_version=2013 publish
|
||||||
|
|
||||||
|
If your commit message contains special characters (e.g. `&`) this method might fail. An alternative is to use PowerShell, which gives you additional possibilites, like ignoring case by using `ToLower()`:
|
||||||
|
|
||||||
|
ps: if($env:APPVEYOR_REPO_COMMIT_MESSAGE.ToLower().Contains('[publish binary]')) { node-pre-gyp --msvs_version=2013 publish }
|
||||||
|
|
||||||
|
Remember this publishing is not the same as `npm publish`. We're just talking about the binary module here and not your entire npm package. To automate the publishing of your entire package to npm on travis see http://about.travis-ci.org/docs/user/deployment/npm/
|
||||||
|
|
||||||
|
|
||||||
|
## Travis Automation
|
||||||
|
|
||||||
|
[Travis](https://travis-ci.org/) can push to S3 after a successful build and supports both:
|
||||||
|
|
||||||
|
- Ubuntu Precise and OS X
|
||||||
|
- Multiple Node.js versions
|
||||||
|
|
||||||
|
For an example of doing this see [node-add-example's .travis.yml](https://github.com/springmeyer/node-addon-example/blob/2ff60a8ded7f042864ad21db00c3a5a06cf47075/.travis.yml).
|
||||||
|
|
||||||
|
Below is a guide to getting set up:
|
||||||
|
|
||||||
|
#### 1) Install the travis gem
|
||||||
|
|
||||||
|
gem install travis
|
||||||
|
|
||||||
|
#### 2) Create secure variables
|
||||||
|
|
||||||
|
Make sure you run this command from within the directory of your module.
|
||||||
|
|
||||||
|
Use `travis-encrypt` like:
|
||||||
|
|
||||||
|
travis encrypt node_pre_gyp_accessKeyId=${node_pre_gyp_accessKeyId}
|
||||||
|
travis encrypt node_pre_gyp_secretAccessKey=${node_pre_gyp_secretAccessKey}
|
||||||
|
|
||||||
|
Then put those values in your `.travis.yml` like:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- secure: F+sEL/v56CzHqmCSSES4pEyC9NeQlkoR0Gs/ZuZxX1ytrj8SKtp3MKqBj7zhIclSdXBz4Ev966Da5ctmcTd410p0b240MV6BVOkLUtkjZJyErMBOkeb8n8yVfSoeMx8RiIhBmIvEn+rlQq+bSFis61/JkE9rxsjkGRZi14hHr4M=
|
||||||
|
- secure: o2nkUQIiABD139XS6L8pxq3XO5gch27hvm/gOdV+dzNKc/s2KomVPWcOyXNxtJGhtecAkABzaW8KHDDi5QL1kNEFx6BxFVMLO8rjFPsMVaBG9Ks6JiDQkkmrGNcnVdxI/6EKTLHTH5WLsz8+J7caDBzvKbEfTux5EamEhxIWgrI=
|
||||||
|
```
|
||||||
|
|
||||||
|
More details on travis encryption at http://about.travis-ci.org/docs/user/encryption-keys/.
|
||||||
|
|
||||||
|
#### 3) Hook up publishing
|
||||||
|
|
||||||
|
Just put `node-pre-gyp package publish` in your `.travis.yml` after `npm install`.
|
||||||
|
|
||||||
|
If you want binaries for OS X change you have two options:
|
||||||
|
|
||||||
|
- Enable `multi-os` for your repo by emailing a request to `support@travis-ci.com`. More details at <http://docs.travis-ci.com/user/multi-os/>. An example of a repo using multi-os is [node-sqlite3](https://github.com/mapbox/node-sqlite3/blob/f69b89a078e2200fee54a9f897e6957bd627d8b7/.travis.yml#L4-L6).
|
||||||
|
- Or, you can change the `language` and push to a different branch to build on OS X just when you commit to that branch. Details on this below:
|
||||||
|
|
||||||
|
|
||||||
|
##### OS X publishing via a branch
|
||||||
|
|
||||||
|
Tweak your `.travis.yml` to use:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
language: objective-c
|
||||||
|
```
|
||||||
|
|
||||||
|
Keep that change in a different git branch and sync that when you want binaries published.
|
||||||
|
|
||||||
|
Note: using `language: objective-c` instead of `language: nodejs` looses node.js specific travis sugar like a matrix for multiple node.js versions.
|
||||||
|
|
||||||
|
But you can replicate the lost behavior by replacing:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
node_js:
|
||||||
|
- "0.8"
|
||||||
|
- "0.10"
|
||||||
|
```
|
||||||
|
|
||||||
|
With:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
env:
|
||||||
|
matrix:
|
||||||
|
- export NODE_VERSION="0.8"
|
||||||
|
- export NODE_VERSION="0.10"
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- git clone https://github.com/creationix/nvm.git ./.nvm
|
||||||
|
- source ./.nvm/nvm.sh
|
||||||
|
- nvm install $NODE_VERSION
|
||||||
|
- nvm use $NODE_VERSION
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4) Publish when you want
|
||||||
|
|
||||||
|
You might wish to publish binaries only on a specific commit. To do this you could borrow from the [travis.ci idea of commit keywords](http://about.travis-ci.org/docs/user/how-to-skip-a-build/) and add special handling for commit messages with `[publish binary]`:
|
||||||
|
|
||||||
|
COMMIT_MESSAGE=$(git show -s --format=%B $TRAVIS_COMMIT | tr -d '\n')
|
||||||
|
if test "${COMMIT_MESSAGE#*'[publish binary]'}" != "$COMMIT_MESSAGE"; then node-pre-gyp publish; fi;
|
||||||
|
|
||||||
|
Then you can trigger new binaries to be built like:
|
||||||
|
|
||||||
|
git commit -a -m "[publish binary]"
|
||||||
|
|
||||||
|
Or, if you don't have any changes to make simply run:
|
||||||
|
|
||||||
|
git commit --allow-empty -m "[publish binary]"
|
||||||
|
|
||||||
|
Remember this publishing is not the same as `npm publish`. We're just talking about the binary module here and not your entire npm package. To automate the publishing of your entire package to npm on travis see http://about.travis-ci.org/docs/user/deployment/npm/
|
||||||
|
|
||||||
|
# Versioning
|
||||||
|
|
||||||
|
The `binary` properties of `module_path`, `remote_path`, and `package_name` support variable substitution. The strings are evaluated by `node-pre-gyp` depending on your system and any custom build flags you passed.
|
||||||
|
|
||||||
|
- `configuration` - Either 'Release' or 'Debug' depending on if `--debug` is passed during the build.
|
||||||
|
- `module_name` - the `binary.module_name` attribute from `package.json`.
|
||||||
|
- `version` - the semver `version` value for your module from `package.json`.
|
||||||
|
- `major`, `minor`, `patch`, and `prelease` match the individual semver values for your module's `version`
|
||||||
|
- `node_abi`: The node C++ `ABI` number. This value is available in javascript as `process.versions.modules` as of [`>= v0.10.4 >= v0.11.7`](https://github.com/joyent/node/commit/ccabd4a6fa8a6eb79d29bc3bbe9fe2b6531c2d8e) and in C++ as the `NODE_MODULE_VERSION` define much earlier. For versions of Node before this was available we fallback to the V8 major and minor version.
|
||||||
|
- `platform` matches node's `process.platform` like `linux`, `darwin`, and `win32` unless the user passed the `--target_platform` option to override.
|
||||||
|
- `arch` matches node's `process.arch` like `x64` or `ia32` unless the user passes the `--target_arch` option to override.
|
||||||
|
|
||||||
|
|
||||||
|
The options are visible in the code at <https://github.com/mapbox/node-pre-gyp/blob/612b7bca2604508d881e1187614870ba19a7f0c5/lib/util/versioning.js#L114-L127>
|
32
node_modules/sqlite3/node_modules/node-pre-gyp/appveyor.yml
generated
vendored
Normal file
32
node_modules/sqlite3/node_modules/node-pre-gyp/appveyor.yml
generated
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
environment:
|
||||||
|
matrix:
|
||||||
|
#- nodejs_version: 0.8.28
|
||||||
|
- nodejs_version: 0.10.32
|
||||||
|
- nodejs_version: 0.11.13
|
||||||
|
|
||||||
|
platform:
|
||||||
|
- x64
|
||||||
|
- x86
|
||||||
|
|
||||||
|
shallow_clone: true
|
||||||
|
|
||||||
|
install:
|
||||||
|
#- ps: Update-NodeJsInstallation $env:nodejs_version $env:Platform
|
||||||
|
# http://help.appveyor.com/discussions/problems/618-nodejs-10030-doesnt-work-on-appveyor-cant-find-npm#comment_34002825
|
||||||
|
- ps: Install-Product node $env:nodejs_version $env:Platform
|
||||||
|
- ps: gcm node
|
||||||
|
- ps: gcm npm
|
||||||
|
- node --version
|
||||||
|
- npm --version
|
||||||
|
- SET PATH=%APPDATA%\npm;%PATH%
|
||||||
|
- npm update -g npm
|
||||||
|
- npm --version
|
||||||
|
- node -e "console.log(process.arch);"
|
||||||
|
- SET PATH=C:\python27;%PATH%
|
||||||
|
- npm install
|
||||||
|
- npm test
|
||||||
|
- cmd: test.bat
|
||||||
|
|
||||||
|
build: off
|
||||||
|
test: off
|
||||||
|
deploy: off
|
130
node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp
generated
vendored
Executable file
130
node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp
generated
vendored
Executable file
@ -0,0 +1,130 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the title.
|
||||||
|
*/
|
||||||
|
|
||||||
|
process.title = 'node-pre-gyp'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module dependencies.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var node_pre_gyp = require('../')
|
||||||
|
var log = require('npmlog')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process and execute the selected commands.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var prog = new node_pre_gyp.Run()
|
||||||
|
var completed = false
|
||||||
|
prog.parseArgv(process.argv)
|
||||||
|
|
||||||
|
if (prog.todo.length === 0) {
|
||||||
|
if (~process.argv.indexOf('-v') || ~process.argv.indexOf('--version')) {
|
||||||
|
console.log('v%s', prog.version)
|
||||||
|
} else {
|
||||||
|
console.log('%s', prog.usage())
|
||||||
|
}
|
||||||
|
return process.exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// if --no-color is passed
|
||||||
|
if (prog.opts && prog.opts.hasOwnProperty('color') && !prog.opts.color) {
|
||||||
|
log.disableColor();
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info('it worked if it ends with', 'ok')
|
||||||
|
log.verbose('cli', process.argv)
|
||||||
|
log.info('using', process.title + '@%s', prog.version)
|
||||||
|
log.info('using', 'node@%s | %s | %s', process.versions.node, process.platform, process.arch)
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change dir if -C/--directory was passed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var dir = prog.opts.directory
|
||||||
|
if (dir) {
|
||||||
|
var fs = require('fs')
|
||||||
|
try {
|
||||||
|
var stat = fs.statSync(dir)
|
||||||
|
if (stat.isDirectory()) {
|
||||||
|
log.info('chdir', dir)
|
||||||
|
process.chdir(dir)
|
||||||
|
} else {
|
||||||
|
log.warn('chdir', dir + ' is not a directory')
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
if (e.code === 'ENOENT') {
|
||||||
|
log.warn('chdir', dir + ' is not a directory')
|
||||||
|
} else {
|
||||||
|
log.warn('chdir', 'error during chdir() "%s"', e.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function run () {
|
||||||
|
var command = prog.todo.shift()
|
||||||
|
if (!command) {
|
||||||
|
// done!
|
||||||
|
completed = true
|
||||||
|
log.info('ok')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
prog.commands[command.name](command.args, function (err) {
|
||||||
|
if (err) {
|
||||||
|
log.error(command.name + ' error')
|
||||||
|
log.error('stack', err.stack)
|
||||||
|
errorMessage()
|
||||||
|
log.error('not ok')
|
||||||
|
console.log(err.message);
|
||||||
|
return process.exit(1)
|
||||||
|
}
|
||||||
|
var args_array = [].slice.call(arguments, 1)
|
||||||
|
if (args_array.length) {
|
||||||
|
console.log.apply(console, args_array)
|
||||||
|
}
|
||||||
|
// now run the next command in the queue
|
||||||
|
process.nextTick(run)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
process.on('exit', function (code) {
|
||||||
|
if (!completed && !code) {
|
||||||
|
log.error('Completion callback never invoked!')
|
||||||
|
issueMessage()
|
||||||
|
process.exit(6)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
process.on('uncaughtException', function (err) {
|
||||||
|
log.error('UNCAUGHT EXCEPTION')
|
||||||
|
log.error('stack', err.stack)
|
||||||
|
issueMessage()
|
||||||
|
process.exit(7)
|
||||||
|
})
|
||||||
|
|
||||||
|
function errorMessage () {
|
||||||
|
// copied from npm's lib/util/error-handler.js
|
||||||
|
var os = require('os')
|
||||||
|
log.error('System', os.type() + ' ' + os.release())
|
||||||
|
log.error('command', process.argv
|
||||||
|
.map(JSON.stringify).join(' '))
|
||||||
|
log.error('cwd', process.cwd())
|
||||||
|
log.error('node -v', process.version)
|
||||||
|
log.error(process.title+' -v', 'v' + prog.package.version)
|
||||||
|
}
|
||||||
|
|
||||||
|
function issueMessage () {
|
||||||
|
errorMessage()
|
||||||
|
log.error('', [ 'This is a bug in `'+process.title+'`.'
|
||||||
|
, 'Try to update '+process.title+' and file an issue if it does not help:'
|
||||||
|
, ' <https://github.com/mapbox/'+process.title+'/issues>'
|
||||||
|
].join('\n'))
|
||||||
|
}
|
||||||
|
|
||||||
|
// start running the given commands!
|
||||||
|
run()
|
2
node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd
generated
vendored
Normal file
2
node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
@echo off
|
||||||
|
node "%~dp0\node-pre-gyp" %*
|
52
node_modules/sqlite3/node_modules/node-pre-gyp/lib/build.js
generated
vendored
Normal file
52
node_modules/sqlite3/node_modules/node-pre-gyp/lib/build.js
generated
vendored
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
module.exports = exports = build
|
||||||
|
|
||||||
|
exports.usage = 'Attempts to compile the module by dispatching to node-gyp or nw-gyp'
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, compile = require('./util/compile.js')
|
||||||
|
, versioning = require('./util/versioning.js')
|
||||||
|
, path = require('path')
|
||||||
|
, fs = require('fs')
|
||||||
|
, mkdirp = require('mkdirp')
|
||||||
|
|
||||||
|
function build(gyp, argv, callback) {
|
||||||
|
var gyp_args = [];
|
||||||
|
if (argv.length && argv[0] == 'rebuild') {
|
||||||
|
gyp_args.push('rebuild');
|
||||||
|
} else {
|
||||||
|
gyp_args.push('configure');
|
||||||
|
gyp_args.push('build');
|
||||||
|
}
|
||||||
|
var package_json = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
var opts = versioning.evaluate(package_json, gyp.opts);
|
||||||
|
// options look different depending on whether node-pre-gyp is called directly
|
||||||
|
// or whether it is called from npm install, hence the following line.
|
||||||
|
// TODO: check if this is really necessary with latest npm/nopt versions
|
||||||
|
var original_args = (typeof(gyp.opts.argv.original) === 'string') ? JSON.parse(gyp.opts.argv).original : gyp.opts.argv.original || [];
|
||||||
|
// add command line options to existing opts
|
||||||
|
original_args.forEach(function(opt) {
|
||||||
|
// we ignore any args like 'install' since we know
|
||||||
|
// we are either running 'build' or 'rebuild' but we
|
||||||
|
// do want to pass along to node-gyp/nw-gyp any command
|
||||||
|
// line options like --option or --option=value passed in
|
||||||
|
if (opt.length > 2 && opt.slice(0,2) == '--') {
|
||||||
|
var parts = opt.split('=');
|
||||||
|
if (parts.length > 1) {
|
||||||
|
var key = parts[0];
|
||||||
|
opts[key.slice(2)] = parts[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var command_line_args = [];
|
||||||
|
// turn back into command line options
|
||||||
|
Object.keys(opts).forEach(function(o) {
|
||||||
|
var val = opts[o];
|
||||||
|
if (val) {
|
||||||
|
command_line_args.push('--' + o + '=' + val);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
compile.run_gyp(gyp_args.concat(command_line_args),opts,function(err,gopts) {
|
||||||
|
return callback(err);
|
||||||
|
});
|
||||||
|
}
|
24
node_modules/sqlite3/node_modules/node-pre-gyp/lib/clean.js
generated
vendored
Normal file
24
node_modules/sqlite3/node_modules/node-pre-gyp/lib/clean.js
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
module.exports = exports = clean
|
||||||
|
|
||||||
|
exports.usage = 'Removes the entire folder containing the compiled .node module'
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, rm = require('rimraf')
|
||||||
|
, path = require('path')
|
||||||
|
, exists = require('fs').exists || require('path').exists
|
||||||
|
, log = require('npmlog')
|
||||||
|
, versioning = require('./util/versioning.js')
|
||||||
|
|
||||||
|
function clean (gyp, argv, callback) {
|
||||||
|
var package_json = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
var opts = versioning.evaluate(package_json, gyp.opts);
|
||||||
|
var to_delete = opts.module_path;
|
||||||
|
exists(to_delete, function(found) {
|
||||||
|
if (found) {
|
||||||
|
if (!gyp.opts.silent_clean) console.log('['+package_json.name+'] Removing "%s"', to_delete);
|
||||||
|
return rm(to_delete, callback);
|
||||||
|
}
|
||||||
|
return callback();
|
||||||
|
})
|
||||||
|
}
|
40
node_modules/sqlite3/node_modules/node-pre-gyp/lib/info.js
generated
vendored
Normal file
40
node_modules/sqlite3/node_modules/node-pre-gyp/lib/info.js
generated
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
|
||||||
|
module.exports = exports = unpublish
|
||||||
|
|
||||||
|
exports.usage = 'Lists all published binaries (requires aws-sdk)'
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, path = require('path')
|
||||||
|
, log = require('npmlog')
|
||||||
|
, versioning = require('./util/versioning.js')
|
||||||
|
, s3_setup = require('./util/s3_setup.js')
|
||||||
|
, config = require('rc')("node_pre_gyp",{acl:"public-read"});
|
||||||
|
|
||||||
|
function unpublish(gyp, argv, callback) {
|
||||||
|
var AWS = require("aws-sdk");
|
||||||
|
var package_json = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
var opts = versioning.evaluate(package_json, gyp.opts);
|
||||||
|
s3_setup.detect(opts.hosted_path,config);
|
||||||
|
AWS.config.update(config);
|
||||||
|
var s3 = new AWS.S3();
|
||||||
|
var s3_opts = { Bucket: config.bucket,
|
||||||
|
Prefix: config.prefix
|
||||||
|
};
|
||||||
|
s3.listObjects(s3_opts, function(err, meta){
|
||||||
|
if (err && err.code == 'NotFound') {
|
||||||
|
return callback(new Error('['+package_json.name+'] Not found: https://' + s3_opts.Bucket + '.s3.amazonaws.com/'+config.prefix));
|
||||||
|
} else if(err) {
|
||||||
|
return callback(err);
|
||||||
|
} else {
|
||||||
|
log.verbose(JSON.stringify(meta,null,1));
|
||||||
|
if (meta && meta.Contents) {
|
||||||
|
meta.Contents.forEach(function(obj) {
|
||||||
|
console.log(obj.Key);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.error('['+package_json.name+'] No objects found at https://' + s3_opts.Bucket + '.s3.amazonaws.com/'+config.prefix )
|
||||||
|
}
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
198
node_modules/sqlite3/node_modules/node-pre-gyp/lib/install.js
generated
vendored
Normal file
198
node_modules/sqlite3/node_modules/node-pre-gyp/lib/install.js
generated
vendored
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
|
||||||
|
module.exports = exports = install
|
||||||
|
|
||||||
|
exports.usage = 'Attempts to install pre-built binary for module'
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, tar = require('tar')
|
||||||
|
, path = require('path')
|
||||||
|
, zlib = require('zlib')
|
||||||
|
, log = require('npmlog')
|
||||||
|
, request = require('request')
|
||||||
|
, existsAsync = fs.exists || path.exists
|
||||||
|
, versioning = require('./util/versioning.js')
|
||||||
|
, compile = require('./util/compile.js')
|
||||||
|
, testbinary = require('./testbinary.js')
|
||||||
|
, clean = require('./clean.js')
|
||||||
|
|
||||||
|
function download(uri,opts,callback) {
|
||||||
|
log.http('GET', uri)
|
||||||
|
|
||||||
|
var req = null
|
||||||
|
var requestOpts = {
|
||||||
|
uri: uri
|
||||||
|
, headers: {
|
||||||
|
'User-Agent': 'node-pre-gyp (node ' + process.version + ')'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var proxyUrl = opts.proxy
|
||||||
|
|| process.env.http_proxy
|
||||||
|
|| process.env.HTTP_PROXY
|
||||||
|
|| process.env.npm_config_proxy
|
||||||
|
if (proxyUrl) {
|
||||||
|
if (/^https?:\/\//i.test(proxyUrl)) {
|
||||||
|
log.verbose('download', 'using proxy url: "%s"', proxyUrl)
|
||||||
|
requestOpts.proxy = proxyUrl
|
||||||
|
} else {
|
||||||
|
log.warn('download', 'ignoring invalid "proxy" config setting: "%s"', proxyUrl)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
req = request(requestOpts)
|
||||||
|
} catch (e) {
|
||||||
|
return callback(e)
|
||||||
|
}
|
||||||
|
if (req) {
|
||||||
|
req.on('response', function (res) {
|
||||||
|
log.http(res.statusCode, uri)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return callback(null,req);
|
||||||
|
}
|
||||||
|
|
||||||
|
function place_binary(from,to,opts,callback) {
|
||||||
|
download(from,opts,function(err,req) {
|
||||||
|
if (err) return callback(err);
|
||||||
|
if (!req) return callback(new Error("empty req"));
|
||||||
|
var badDownload = false
|
||||||
|
, extractCount = 0
|
||||||
|
, gunzip = zlib.createGunzip()
|
||||||
|
, extracter = tar.Extract({ path: to, strip: 1});
|
||||||
|
function afterTarball(err) {
|
||||||
|
if (err) return callback(err);
|
||||||
|
if (badDownload) return callback(new Error("bad download"));
|
||||||
|
if (extractCount === 0) {
|
||||||
|
return callback(new Error('There was a fatal problem while downloading/extracting the tarball'))
|
||||||
|
}
|
||||||
|
log.info('tarball', 'done parsing tarball')
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
function filter_func(entry) {
|
||||||
|
// ensure directories are +x
|
||||||
|
// https://github.com/mapnik/node-mapnik/issues/262
|
||||||
|
entry.props.mode |= (entry.props.mode >>> 2) & 0111;
|
||||||
|
log.info('install','unpacking ' + entry.path);
|
||||||
|
extractCount++
|
||||||
|
}
|
||||||
|
gunzip.on('error', callback)
|
||||||
|
extracter.on('entry', filter_func)
|
||||||
|
extracter.on('error', callback)
|
||||||
|
extracter.on('end', afterTarball)
|
||||||
|
|
||||||
|
req.on('error', function (err) {
|
||||||
|
badDownload = true
|
||||||
|
callback(err)
|
||||||
|
})
|
||||||
|
|
||||||
|
req.on('close', function () {
|
||||||
|
if (extractCount === 0) {
|
||||||
|
callback(new Error('Connection closed while downloading tarball file'))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
req.on('response', function (res) {
|
||||||
|
if (res.statusCode !== 200) {
|
||||||
|
badDownload = true
|
||||||
|
if (res.statusCode == 404) {
|
||||||
|
return callback(new Error('Pre-built binary not available for your system'));
|
||||||
|
} else {
|
||||||
|
return callback(new Error(res.statusCode + ' status code downloading tarball'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// start unzipping and untaring
|
||||||
|
req.pipe(gunzip).pipe(extracter)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_build(gyp,argv,callback) {
|
||||||
|
gyp.todo.push( { name: 'build', args: ['rebuild'] } );
|
||||||
|
process.nextTick(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
function install(gyp, argv, callback) {
|
||||||
|
var package_json = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
var source_build = gyp.opts['build-from-source'] || gyp.opts['build_from_source'];
|
||||||
|
var should_do_source_build = source_build === package_json.name || (source_build === true || source_build === 'true');
|
||||||
|
if (should_do_source_build) {
|
||||||
|
log.info('build','requesting source compile');
|
||||||
|
return do_build(gyp,argv,callback);
|
||||||
|
} else {
|
||||||
|
var fallback_to_build = gyp.opts['fallback-to-build'] || gyp.opts['fallback_to_build'];
|
||||||
|
var should_do_fallback_build = fallback_to_build === package_json.name || (fallback_to_build === true || fallback_to_build === 'true');
|
||||||
|
// but allow override from npm
|
||||||
|
if (process.env.npm_config_argv) {
|
||||||
|
var cooked = JSON.parse(process.env.npm_config_argv).cooked;
|
||||||
|
var match = cooked.indexOf("--fallback-to-build");
|
||||||
|
if (match > -1 && cooked.length > match && cooked[match+1] == "false") {
|
||||||
|
should_do_fallback_build = false;
|
||||||
|
log.info('install','Build fallback disabled via npm flag: --fallback-to-build=false');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
var opts = versioning.evaluate(package_json, gyp.opts);
|
||||||
|
} catch (err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
var from = opts.hosted_tarball;
|
||||||
|
var to = opts.module_path;
|
||||||
|
var binary_module = path.join(to,opts.module_name + '.node');
|
||||||
|
if (existsAsync(binary_module,function(found) {
|
||||||
|
if (found) {
|
||||||
|
testbinary(gyp, argv, function(err) {
|
||||||
|
if (err) {
|
||||||
|
console.error('['+package_json.name+'] ' + err.message);
|
||||||
|
log.error("Testing local pre-built binary failed, attempting to re-download");
|
||||||
|
place_binary(from,to,opts,function(err) {
|
||||||
|
if (err) {
|
||||||
|
if (should_do_fallback_build) {
|
||||||
|
log.http(err.message + ' (falling back to source compile with node-gyp)');
|
||||||
|
return do_build(gyp,argv,callback);
|
||||||
|
} else {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('['+package_json.name+'] Success: "' + binary_module + '" is reinstalled via remote');
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log('['+package_json.name+'] Success: "' + binary_module + '" already installed');
|
||||||
|
console.log('Pass --build-from-source to recompile');
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
log.info('check','checked for "' + binary_module + '" (not found)')
|
||||||
|
place_binary(from,to,opts,function(err) {
|
||||||
|
if (err && should_do_fallback_build) {
|
||||||
|
log.http(err.message + ' (falling back to source compile with node-gyp)');
|
||||||
|
return do_build(gyp,argv,callback);
|
||||||
|
} else if (err) {
|
||||||
|
return callback(err);
|
||||||
|
} else {
|
||||||
|
testbinary(gyp, argv, function(err) {
|
||||||
|
if (err) {
|
||||||
|
gyp.opts.silent_clean = true;
|
||||||
|
clean(gyp, argv, function(error) {
|
||||||
|
if (error) console.log(error);
|
||||||
|
if (should_do_fallback_build) {
|
||||||
|
console.error('['+package_json.name+'] ' + err.message);
|
||||||
|
log.error("Testing pre-built binary failed, attempting to source compile");
|
||||||
|
return do_build(gyp,argv,callback);
|
||||||
|
} else {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log('['+package_json.name+'] Success: "' + binary_module + '" is installed via remote');
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
};
|
194
node_modules/sqlite3/node_modules/node-pre-gyp/lib/node-pre-gyp.js
generated
vendored
Normal file
194
node_modules/sqlite3/node_modules/node-pre-gyp/lib/node-pre-gyp.js
generated
vendored
Normal file
@ -0,0 +1,194 @@
|
|||||||
|
|
||||||
|
/**
|
||||||
|
* Module exports.
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports = exports;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module dependencies.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, path = require('path')
|
||||||
|
, nopt = require('nopt')
|
||||||
|
, log = require('npmlog')
|
||||||
|
, child_process = require('child_process')
|
||||||
|
, EE = require('events').EventEmitter
|
||||||
|
, inherits = require('util').inherits
|
||||||
|
, commands = [
|
||||||
|
'clean',
|
||||||
|
'install',
|
||||||
|
'reinstall',
|
||||||
|
'build',
|
||||||
|
'rebuild',
|
||||||
|
'package',
|
||||||
|
'testpackage',
|
||||||
|
'publish',
|
||||||
|
'unpublish',
|
||||||
|
'info',
|
||||||
|
'testbinary',
|
||||||
|
'reveal'
|
||||||
|
]
|
||||||
|
, aliases = {
|
||||||
|
}
|
||||||
|
|
||||||
|
// differentiate node-pre-gyp's logs from npm's
|
||||||
|
log.heading = 'node-pre-gyp'
|
||||||
|
|
||||||
|
exports.find = require('./pre-binding').find;
|
||||||
|
|
||||||
|
function Run() {
|
||||||
|
var self = this
|
||||||
|
|
||||||
|
this.commands = {}
|
||||||
|
|
||||||
|
commands.forEach(function (command) {
|
||||||
|
self.commands[command] = function (argv, callback) {
|
||||||
|
log.verbose('command', command, argv)
|
||||||
|
return require('./' + command)(self, argv, callback)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
inherits(Run, EE)
|
||||||
|
exports.Run = Run
|
||||||
|
var proto = Run.prototype
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Export the contents of the package.json.
|
||||||
|
*/
|
||||||
|
|
||||||
|
proto.package = require('../package')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* nopt configuration definitions
|
||||||
|
*/
|
||||||
|
|
||||||
|
proto.configDefs = {
|
||||||
|
help: Boolean // everywhere
|
||||||
|
, arch: String // 'configure'
|
||||||
|
, debug: Boolean // 'build'
|
||||||
|
, directory: String // bin
|
||||||
|
, proxy: String // 'install'
|
||||||
|
, loglevel: String // everywhere
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* nopt shorthands
|
||||||
|
*/
|
||||||
|
|
||||||
|
proto.shorthands = {
|
||||||
|
release: '--no-debug'
|
||||||
|
, C: '--directory'
|
||||||
|
, debug: '--debug'
|
||||||
|
, j: '--jobs'
|
||||||
|
, silent: '--loglevel=silent'
|
||||||
|
, silly: '--loglevel=silly'
|
||||||
|
, verbose: '--loglevel=verbose'
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* expose the command aliases for the bin file to use.
|
||||||
|
*/
|
||||||
|
|
||||||
|
proto.aliases = aliases
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses the given argv array and sets the 'opts',
|
||||||
|
* 'argv' and 'command' properties.
|
||||||
|
*/
|
||||||
|
|
||||||
|
proto.parseArgv = function parseOpts (argv) {
|
||||||
|
this.opts = nopt(this.configDefs, this.shorthands, argv)
|
||||||
|
this.argv = this.opts.argv.remain.slice()
|
||||||
|
|
||||||
|
var commands = this.todo = []
|
||||||
|
|
||||||
|
// create a copy of the argv array with aliases mapped
|
||||||
|
argv = this.argv.map(function (arg) {
|
||||||
|
// is this an alias?
|
||||||
|
if (arg in this.aliases) {
|
||||||
|
arg = this.aliases[arg]
|
||||||
|
}
|
||||||
|
return arg
|
||||||
|
}, this)
|
||||||
|
|
||||||
|
// process the mapped args into "command" objects ("name" and "args" props)
|
||||||
|
argv.slice().forEach(function (arg) {
|
||||||
|
if (arg in this.commands) {
|
||||||
|
var args = argv.splice(0, argv.indexOf(arg))
|
||||||
|
argv.shift()
|
||||||
|
if (commands.length > 0) {
|
||||||
|
commands[commands.length - 1].args = args
|
||||||
|
}
|
||||||
|
commands.push({ name: arg, args: [] })
|
||||||
|
}
|
||||||
|
}, this)
|
||||||
|
if (commands.length > 0) {
|
||||||
|
commands[commands.length - 1].args = argv.splice(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// support for inheriting config env variables from npm
|
||||||
|
var npm_config_prefix = 'npm_config_'
|
||||||
|
Object.keys(process.env).forEach(function (name) {
|
||||||
|
if (name.indexOf(npm_config_prefix) !== 0) return
|
||||||
|
var val = process.env[name]
|
||||||
|
if (name === npm_config_prefix + 'loglevel') {
|
||||||
|
log.level = val
|
||||||
|
} else {
|
||||||
|
// add the user-defined options to the config
|
||||||
|
name = name.substring(npm_config_prefix.length)
|
||||||
|
// avoid npm argv clobber already present args
|
||||||
|
// which avoids problem of 'npm test' calling
|
||||||
|
// script that runs unique npm install commands
|
||||||
|
if (name === 'argv') {
|
||||||
|
if (this.opts.argv &&
|
||||||
|
this.opts.argv.remain &&
|
||||||
|
this.opts.argv.remain.length) {
|
||||||
|
// do nothing
|
||||||
|
} else {
|
||||||
|
this.opts[name] = val
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.opts[name] = val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, this)
|
||||||
|
|
||||||
|
if (this.opts.loglevel) {
|
||||||
|
log.level = this.opts.loglevel
|
||||||
|
}
|
||||||
|
log.resume()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the usage instructions for node-pre-gyp.
|
||||||
|
*/
|
||||||
|
|
||||||
|
proto.usage = function usage () {
|
||||||
|
var str = [
|
||||||
|
''
|
||||||
|
, ' Usage: node-pre-gyp <command> [options]'
|
||||||
|
, ''
|
||||||
|
, ' where <command> is one of:'
|
||||||
|
, commands.map(function (c) {
|
||||||
|
return ' - ' + c + ' - ' + require('./' + c).usage
|
||||||
|
}).join('\n')
|
||||||
|
, ''
|
||||||
|
, 'node-pre-gyp@' + this.version + ' ' + path.resolve(__dirname, '..')
|
||||||
|
, 'node@' + process.versions.node
|
||||||
|
].join('\n')
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Version number getter.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Object.defineProperty(proto, 'version', {
|
||||||
|
get: function () {
|
||||||
|
return this.package.version
|
||||||
|
}
|
||||||
|
, enumerable: true
|
||||||
|
})
|
||||||
|
|
46
node_modules/sqlite3/node_modules/node-pre-gyp/lib/package.js
generated
vendored
Normal file
46
node_modules/sqlite3/node_modules/node-pre-gyp/lib/package.js
generated
vendored
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
module.exports = exports = package
|
||||||
|
|
||||||
|
exports.usage = 'Packs binary (and enclosing directory) into locally staged tarball'
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, path = require('path')
|
||||||
|
, log = require('npmlog')
|
||||||
|
, versioning = require('./util/versioning.js')
|
||||||
|
, compile = require('./util/compile.js')
|
||||||
|
, write = require('fs').createWriteStream
|
||||||
|
, pack = require('tar-pack').pack
|
||||||
|
, existsAsync = fs.exists || path.exists
|
||||||
|
, mkdirp = require('mkdirp');
|
||||||
|
|
||||||
|
function package(gyp, argv, callback) {
|
||||||
|
var package_json = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
var opts = versioning.evaluate(package_json, gyp.opts);
|
||||||
|
var from = opts.module_path;
|
||||||
|
var binary_module = path.join(from,opts.module_name + '.node');
|
||||||
|
existsAsync(binary_module,function(found) {
|
||||||
|
if (!found) {
|
||||||
|
return callback(new Error("Cannot package because " + binary_module + " missing: run `node-pre-gyp rebuild` first"))
|
||||||
|
}
|
||||||
|
var tarball = opts.staged_tarball;
|
||||||
|
var basedir = path.basename(from);
|
||||||
|
var filter_func = function (entry) {
|
||||||
|
// ensure directories are +x
|
||||||
|
// https://github.com/mapnik/node-mapnik/issues/262
|
||||||
|
log.info('package','packing ' + entry.path);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
mkdirp(path.dirname(tarball),function(err) {
|
||||||
|
pack(from, { filter: filter_func })
|
||||||
|
.pipe(write(tarball))
|
||||||
|
.on('error', function (err) {
|
||||||
|
if (err) console.error('['+package_json.name+'] ' + err.message);
|
||||||
|
return callback(err);
|
||||||
|
})
|
||||||
|
.on('close', function () {
|
||||||
|
log.info('package','Binary staged at "' + tarball + '"');
|
||||||
|
return callback();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
24
node_modules/sqlite3/node_modules/node-pre-gyp/lib/pre-binding.js
generated
vendored
Normal file
24
node_modules/sqlite3/node_modules/node-pre-gyp/lib/pre-binding.js
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
var fs = require('fs');
|
||||||
|
var versioning = require('../lib/util/versioning.js')
|
||||||
|
var existsSync = require('fs').existsSync || require('path').existsSync;
|
||||||
|
var path = require('path');
|
||||||
|
|
||||||
|
module.exports = exports;
|
||||||
|
|
||||||
|
exports.usage = 'Finds the require path for the node-pre-gyp installed module'
|
||||||
|
|
||||||
|
exports.validate = function(package_json) {
|
||||||
|
versioning.validate_config(package_json);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.find = function(package_json_path,opts) {
|
||||||
|
if (!existsSync(package_json_path)) {
|
||||||
|
throw new Error("package.json does not exist at " + package_json_path);
|
||||||
|
}
|
||||||
|
var package_json = require(package_json_path);
|
||||||
|
versioning.validate_config(package_json);
|
||||||
|
opts = opts || {};
|
||||||
|
if (!opts.module_root) opts.module_root = path.dirname(package_json_path);
|
||||||
|
var meta = versioning.evaluate(package_json,opts);
|
||||||
|
return meta.module;
|
||||||
|
}
|
58
node_modules/sqlite3/node_modules/node-pre-gyp/lib/publish.js
generated
vendored
Normal file
58
node_modules/sqlite3/node_modules/node-pre-gyp/lib/publish.js
generated
vendored
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
|
||||||
|
module.exports = exports = publish
|
||||||
|
|
||||||
|
exports.usage = 'Publishes pre-built binary (requires aws-sdk)'
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, path = require('path')
|
||||||
|
, log = require('npmlog')
|
||||||
|
, versioning = require('./util/versioning.js')
|
||||||
|
, s3_setup = require('./util/s3_setup.js')
|
||||||
|
, mkdirp = require('mkdirp')
|
||||||
|
, existsAsync = fs.exists || path.exists
|
||||||
|
, url = require('url')
|
||||||
|
, config = require('rc')("node_pre_gyp",{acl:"public-read"});
|
||||||
|
|
||||||
|
function publish(gyp, argv, callback) {
|
||||||
|
var AWS = require("aws-sdk");
|
||||||
|
var package_json = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
var opts = versioning.evaluate(package_json, gyp.opts);
|
||||||
|
var tarball = opts.staged_tarball;
|
||||||
|
existsAsync(tarball,function(found) {
|
||||||
|
if (!found) {
|
||||||
|
return callback(new Error("Cannot publish because " + tarball + " missing: run `node-pre-gyp package` first"))
|
||||||
|
}
|
||||||
|
s3_setup.detect(opts.hosted_path,config);
|
||||||
|
var key_name = url.resolve(config.prefix,opts.package_name)
|
||||||
|
AWS.config.update(config);
|
||||||
|
var s3 = new AWS.S3();
|
||||||
|
var s3_opts = { Bucket: config.bucket,
|
||||||
|
Key: key_name
|
||||||
|
};
|
||||||
|
s3.headObject(s3_opts, function(err, meta){
|
||||||
|
if (err && err.code == 'NotFound') {
|
||||||
|
// we are safe to publish because
|
||||||
|
// the object does not already exist
|
||||||
|
var s3 = new AWS.S3();
|
||||||
|
var s3_obj_opts = { ACL: config.acl,
|
||||||
|
Body: fs.createReadStream(tarball),
|
||||||
|
Bucket: config.bucket,
|
||||||
|
Key: key_name
|
||||||
|
};
|
||||||
|
s3.putObject(s3_obj_opts, function(err, resp){
|
||||||
|
if(err) return callback(err);
|
||||||
|
console.log('['+package_json.name+'] Success: published to https://' + s3_opts.Bucket + '.s3.amazonaws.com/' + s3_opts.Key);
|
||||||
|
return callback();
|
||||||
|
});
|
||||||
|
} else if(err) {
|
||||||
|
return callback(err);
|
||||||
|
} else {
|
||||||
|
log.error('publish','Cannot publish over existing version');
|
||||||
|
log.error('publish',"Update the 'version' field in package.json and try again");
|
||||||
|
log.error('publish','If the previous version was published in error see:');
|
||||||
|
log.error('publish','\t node-pre-gyp unpublish');
|
||||||
|
return callback(new Error('Failed publishing to https://' + s3_opts.Bucket + '.s3.amazonaws.com/' + s3_opts.Key));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
12
node_modules/sqlite3/node_modules/node-pre-gyp/lib/rebuild.js
generated
vendored
Normal file
12
node_modules/sqlite3/node_modules/node-pre-gyp/lib/rebuild.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
module.exports = exports = rebuild
|
||||||
|
|
||||||
|
exports.usage = 'Runs "clean" and "build" at once'
|
||||||
|
|
||||||
|
function rebuild (gyp, argv, callback) {
|
||||||
|
gyp.todo.unshift(
|
||||||
|
{ name: 'clean', args: [] }
|
||||||
|
, { name: 'build', args: ['rebuild'] }
|
||||||
|
)
|
||||||
|
process.nextTick(callback)
|
||||||
|
}
|
12
node_modules/sqlite3/node_modules/node-pre-gyp/lib/reinstall.js
generated
vendored
Normal file
12
node_modules/sqlite3/node_modules/node-pre-gyp/lib/reinstall.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
module.exports = exports = rebuild
|
||||||
|
|
||||||
|
exports.usage = 'Runs "clean" and "install" at once'
|
||||||
|
|
||||||
|
function rebuild (gyp, argv, callback) {
|
||||||
|
gyp.todo.unshift(
|
||||||
|
{ name: 'clean', args: [] }
|
||||||
|
, { name: 'install', args: [] }
|
||||||
|
)
|
||||||
|
process.nextTick(callback)
|
||||||
|
}
|
28
node_modules/sqlite3/node_modules/node-pre-gyp/lib/reveal.js
generated
vendored
Normal file
28
node_modules/sqlite3/node_modules/node-pre-gyp/lib/reveal.js
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
module.exports = exports = reveal
|
||||||
|
|
||||||
|
exports.usage = 'Reveals data on the versioned binary'
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, path = require('path')
|
||||||
|
, log = require('npmlog')
|
||||||
|
, versioning = require('./util/versioning.js');
|
||||||
|
|
||||||
|
function reveal(gyp, argv, callback) {
|
||||||
|
var package_json = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
var opts = versioning.evaluate(package_json, gyp.opts);
|
||||||
|
var hit = false;
|
||||||
|
// if a second arg is passed look to see
|
||||||
|
// if it is a known option
|
||||||
|
var args = gyp.opts.argv.cooked;
|
||||||
|
var find_val = args[args.indexOf('reveal')+1];
|
||||||
|
if (find_val && opts.hasOwnProperty(find_val)) {
|
||||||
|
console.log(opts[find_val]);
|
||||||
|
hit = true;
|
||||||
|
}
|
||||||
|
// otherwise return all options as json
|
||||||
|
if (!hit) {
|
||||||
|
console.log(JSON.stringify(opts,null,2));
|
||||||
|
}
|
||||||
|
return callback();
|
||||||
|
}
|
71
node_modules/sqlite3/node_modules/node-pre-gyp/lib/testbinary.js
generated
vendored
Normal file
71
node_modules/sqlite3/node_modules/node-pre-gyp/lib/testbinary.js
generated
vendored
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
module.exports = exports = testbinary
|
||||||
|
|
||||||
|
exports.usage = 'Tests that the binary.node can be required'
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, path = require('path')
|
||||||
|
, log = require('npmlog')
|
||||||
|
, cp = require('child_process')
|
||||||
|
, versioning = require('./util/versioning.js')
|
||||||
|
, path = require('path')
|
||||||
|
|
||||||
|
function testbinary(gyp, argv, callback) {
|
||||||
|
var args = [];
|
||||||
|
var options = {}
|
||||||
|
var shell_cmd = process.execPath;
|
||||||
|
var package_json = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
var opts = versioning.evaluate(package_json, gyp.opts);
|
||||||
|
// ensure on windows that / are used for require path
|
||||||
|
var binary_module = opts.module.replace(/\\/g, '/');
|
||||||
|
var nw = (opts.runtime && opts.runtime === 'node-webkit');
|
||||||
|
if (nw) {
|
||||||
|
options.timeout = 5000;
|
||||||
|
if (process.platform === 'darwin') {
|
||||||
|
shell_cmd = 'node-webkit';
|
||||||
|
} else if (process.platform === 'win32') {
|
||||||
|
shell_cmd = 'nw.exe';
|
||||||
|
} else {
|
||||||
|
shell_cmd = 'nw';
|
||||||
|
}
|
||||||
|
var modulePath = path.resolve(binary_module);
|
||||||
|
var appDir = path.join(__dirname, 'util', 'nw-pre-gyp');
|
||||||
|
args.push(appDir);
|
||||||
|
args.push(modulePath);
|
||||||
|
log.info("validate","Running test command: '" + shell_cmd + ' ' + args.join(' ') + "'");
|
||||||
|
cp.execFile(shell_cmd, args, options, function(err, stdout, stderr) {
|
||||||
|
// check for normal timeout for node-webkit
|
||||||
|
if (err) {
|
||||||
|
if (err.killed == true && err.signal && err.signal.indexOf('SIG') > -1) {
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
var stderrLog = stderr.toString();
|
||||||
|
log.info('stderr', stderrLog);
|
||||||
|
if( /^\s*Xlib:\s*extension\s*"RANDR"\s*missing\s*on\s*display\s*":\d+\.\d+"\.\s*$/.test(stderrLog) ){
|
||||||
|
log.info('RANDR', 'stderr contains only RANDR error, ignored');
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
return callback();
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ((process.arch != opts.target_arch) ||
|
||||||
|
(process.platform != opts.target_platform)) {
|
||||||
|
var msg = "skipping validation since host platform/arch (";
|
||||||
|
msg += process.platform+'/'+process.arch+")";
|
||||||
|
msg += " does not match target (";
|
||||||
|
msg += opts.target_platform+'/'+opts.target_arch+")";
|
||||||
|
log.info('validate', msg);
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
args.push('--eval');
|
||||||
|
args.push("require('" + binary_module.replace(/\'/g, '\\\'') +"')");
|
||||||
|
log.info("validate","Running test command: '" + shell_cmd + ' ' + args.join(' ') + "'");
|
||||||
|
cp.execFile(shell_cmd, args, options, function(err, stdout, stderr) {
|
||||||
|
if (err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
return callback();
|
||||||
|
});
|
||||||
|
}
|
49
node_modules/sqlite3/node_modules/node-pre-gyp/lib/testpackage.js
generated
vendored
Normal file
49
node_modules/sqlite3/node_modules/node-pre-gyp/lib/testpackage.js
generated
vendored
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
module.exports = exports = testpackage
|
||||||
|
|
||||||
|
exports.usage = 'Tests that the staged package is valid'
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, path = require('path')
|
||||||
|
, log = require('npmlog')
|
||||||
|
, existsAsync = fs.exists || path.exists
|
||||||
|
, versioning = require('./util/versioning.js')
|
||||||
|
, testbinary = require('./testbinary.js')
|
||||||
|
, read = require('fs').createReadStream
|
||||||
|
, tar = require('tar')
|
||||||
|
, zlib = require('zlib')
|
||||||
|
|
||||||
|
function testpackage(gyp, argv, callback) {
|
||||||
|
var package_json = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
var opts = versioning.evaluate(package_json, gyp.opts);
|
||||||
|
var tarball = opts.staged_tarball;
|
||||||
|
existsAsync(tarball, function(found) {
|
||||||
|
if (!found) {
|
||||||
|
return callback(new Error("Cannot test package because " + tarball + " missing: run `node-pre-gyp package` first"))
|
||||||
|
}
|
||||||
|
var to = opts.module_path;
|
||||||
|
var gunzip = zlib.createGunzip()
|
||||||
|
var extracter = tar.Extract({ path: to, strip: 1 });
|
||||||
|
function filter_func(entry) {
|
||||||
|
// ensure directories are +x
|
||||||
|
// https://github.com/mapnik/node-mapnik/issues/262
|
||||||
|
entry.props.mode |= (entry.props.mode >>> 2) & 0111;
|
||||||
|
log.info('install','unpacking ' + entry.path);
|
||||||
|
}
|
||||||
|
gunzip.on('error', callback)
|
||||||
|
extracter.on('error', callback)
|
||||||
|
extracter.on('entry', filter_func)
|
||||||
|
extracter.on('end', function(err) {
|
||||||
|
if (err) return callback(err);
|
||||||
|
testbinary(gyp,argv,function(err) {
|
||||||
|
if (err) {
|
||||||
|
return callback(err);
|
||||||
|
} else {
|
||||||
|
console.log('['+package_json.name+'] Package appears valid');
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
read(tarball).pipe(gunzip).pipe(extracter);
|
||||||
|
});
|
||||||
|
}
|
41
node_modules/sqlite3/node_modules/node-pre-gyp/lib/unpublish.js
generated
vendored
Normal file
41
node_modules/sqlite3/node_modules/node-pre-gyp/lib/unpublish.js
generated
vendored
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
|
||||||
|
module.exports = exports = unpublish
|
||||||
|
|
||||||
|
exports.usage = 'Unpublishes pre-built binary (requires aws-sdk)'
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, path = require('path')
|
||||||
|
, log = require('npmlog')
|
||||||
|
, versioning = require('./util/versioning.js')
|
||||||
|
, s3_setup = require('./util/s3_setup.js')
|
||||||
|
, url = require('url')
|
||||||
|
, config = require('rc')("node_pre_gyp",{acl:"public-read"});
|
||||||
|
|
||||||
|
function unpublish(gyp, argv, callback) {
|
||||||
|
var AWS = require("aws-sdk");
|
||||||
|
var package_json = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
var opts = versioning.evaluate(package_json, gyp.opts);
|
||||||
|
s3_setup.detect(opts.hosted_path,config);
|
||||||
|
AWS.config.update(config);
|
||||||
|
var key_name = url.resolve(config.prefix,opts.package_name)
|
||||||
|
var s3 = new AWS.S3();
|
||||||
|
var s3_opts = { Bucket: config.bucket,
|
||||||
|
Key: key_name
|
||||||
|
};
|
||||||
|
s3.headObject(s3_opts, function(err, meta) {
|
||||||
|
if (err && err.code == 'NotFound') {
|
||||||
|
console.log('['+package_json.name+'] Not found: https://' + s3_opts.Bucket + '.s3.amazonaws.com/' + s3_opts.Key);
|
||||||
|
return callback();
|
||||||
|
} else if(err) {
|
||||||
|
return callback(err);
|
||||||
|
} else {
|
||||||
|
log.info(JSON.stringify(meta));
|
||||||
|
s3.deleteObject(s3_opts, function(err, resp) {
|
||||||
|
if (err) return callback(err);
|
||||||
|
log.info(JSON.stringify(resp));
|
||||||
|
console.log('['+package_json.name+'] Success: removed https://' + s3_opts.Bucket + '.s3.amazonaws.com/' + s3_opts.Key);
|
||||||
|
return callback();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
474
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json
generated
vendored
Normal file
474
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json
generated
vendored
Normal file
@ -0,0 +1,474 @@
|
|||||||
|
{
|
||||||
|
"0.6.3": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.4": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.5": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.6": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.7": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.8": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.9": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.10": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.11": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.12": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.13": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.14": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.15": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.16": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.17": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.18": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.19": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.20": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.6.21": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.6"
|
||||||
|
},
|
||||||
|
"0.7.0": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.8"
|
||||||
|
},
|
||||||
|
"0.7.1": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.8"
|
||||||
|
},
|
||||||
|
"0.7.2": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.8"
|
||||||
|
},
|
||||||
|
"0.7.3": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.9"
|
||||||
|
},
|
||||||
|
"0.7.4": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.9"
|
||||||
|
},
|
||||||
|
"0.7.5": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.9"
|
||||||
|
},
|
||||||
|
"0.7.6": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.9"
|
||||||
|
},
|
||||||
|
"0.7.7": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.9"
|
||||||
|
},
|
||||||
|
"0.7.8": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.9"
|
||||||
|
},
|
||||||
|
"0.7.9": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.7.10": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.9"
|
||||||
|
},
|
||||||
|
"0.7.11": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.7.12": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.0": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.1": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.2": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.3": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.4": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.5": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.6": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.7": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.8": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.9": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.10": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.11": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.12": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.13": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.14": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.15": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.16": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.17": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.18": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.19": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.20": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.21": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.22": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.23": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.24": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.25": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.8.26": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.9.0": {
|
||||||
|
"node_abi": 1,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.9.1": {
|
||||||
|
"node_abi": 10,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.9.2": {
|
||||||
|
"node_abi": 10,
|
||||||
|
"v8": "3.11"
|
||||||
|
},
|
||||||
|
"0.9.3": {
|
||||||
|
"node_abi": 10,
|
||||||
|
"v8": "3.13"
|
||||||
|
},
|
||||||
|
"0.9.4": {
|
||||||
|
"node_abi": 10,
|
||||||
|
"v8": "3.13"
|
||||||
|
},
|
||||||
|
"0.9.5": {
|
||||||
|
"node_abi": 10,
|
||||||
|
"v8": "3.13"
|
||||||
|
},
|
||||||
|
"0.9.6": {
|
||||||
|
"node_abi": 10,
|
||||||
|
"v8": "3.15"
|
||||||
|
},
|
||||||
|
"0.9.7": {
|
||||||
|
"node_abi": 10,
|
||||||
|
"v8": "3.15"
|
||||||
|
},
|
||||||
|
"0.9.8": {
|
||||||
|
"node_abi": 10,
|
||||||
|
"v8": "3.15"
|
||||||
|
},
|
||||||
|
"0.9.9": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.15"
|
||||||
|
},
|
||||||
|
"0.9.10": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.15"
|
||||||
|
},
|
||||||
|
"0.9.11": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.9.12": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.0": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.1": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.2": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.3": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.4": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.5": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.6": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.7": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.8": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.9": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.10": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.11": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.12": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.13": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.14": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.15": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.16": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.17": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.18": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.19": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.20": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.21": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.22": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.23": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.24": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.25": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.26": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.27": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.28": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.29": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.30": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.10.31": {
|
||||||
|
"node_abi": 11,
|
||||||
|
"v8": "3.14"
|
||||||
|
},
|
||||||
|
"0.11.0": {
|
||||||
|
"node_abi": 12,
|
||||||
|
"v8": "3.17"
|
||||||
|
},
|
||||||
|
"0.11.1": {
|
||||||
|
"node_abi": 12,
|
||||||
|
"v8": "3.18"
|
||||||
|
},
|
||||||
|
"0.11.2": {
|
||||||
|
"node_abi": 12,
|
||||||
|
"v8": "3.19"
|
||||||
|
},
|
||||||
|
"0.11.3": {
|
||||||
|
"node_abi": 12,
|
||||||
|
"v8": "3.19"
|
||||||
|
},
|
||||||
|
"0.11.4": {
|
||||||
|
"node_abi": 12,
|
||||||
|
"v8": "3.20"
|
||||||
|
},
|
||||||
|
"0.11.5": {
|
||||||
|
"node_abi": 12,
|
||||||
|
"v8": "3.20"
|
||||||
|
},
|
||||||
|
"0.11.6": {
|
||||||
|
"node_abi": 12,
|
||||||
|
"v8": "3.20"
|
||||||
|
},
|
||||||
|
"0.11.7": {
|
||||||
|
"node_abi": 12,
|
||||||
|
"v8": "3.20"
|
||||||
|
},
|
||||||
|
"0.11.8": {
|
||||||
|
"node_abi": 13,
|
||||||
|
"v8": "3.21"
|
||||||
|
},
|
||||||
|
"0.11.9": {
|
||||||
|
"node_abi": 13,
|
||||||
|
"v8": "3.22"
|
||||||
|
},
|
||||||
|
"0.11.10": {
|
||||||
|
"node_abi": 13,
|
||||||
|
"v8": "3.22"
|
||||||
|
},
|
||||||
|
"0.11.11": {
|
||||||
|
"node_abi": 14,
|
||||||
|
"v8": "3.22"
|
||||||
|
},
|
||||||
|
"0.11.12": {
|
||||||
|
"node_abi": 14,
|
||||||
|
"v8": "3.22"
|
||||||
|
},
|
||||||
|
"0.11.13": {
|
||||||
|
"node_abi": 14,
|
||||||
|
"v8": "3.25"
|
||||||
|
}
|
||||||
|
}
|
80
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/compile.js
generated
vendored
Normal file
80
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/compile.js
generated
vendored
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
|
||||||
|
module.exports = exports;
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, tar = require('tar')
|
||||||
|
, path = require('path')
|
||||||
|
, zlib = require('zlib')
|
||||||
|
, log = require('npmlog')
|
||||||
|
, semver = require('semver')
|
||||||
|
, request = require('request')
|
||||||
|
, win = process.platform == 'win32'
|
||||||
|
, os = require('os')
|
||||||
|
, existsSync = fs.existsSync || path.existsSync
|
||||||
|
, cp = require('child_process')
|
||||||
|
|
||||||
|
// try to build up the complete path to node-gyp
|
||||||
|
/* priority:
|
||||||
|
- node-gyp on NODE_PATH
|
||||||
|
- node-gyp inside npm on NODE_PATH
|
||||||
|
- node-gyp inside npm beside node exe
|
||||||
|
*/
|
||||||
|
function which_node_gyp() {
|
||||||
|
try {
|
||||||
|
var node_gyp_main = require.resolve('node-gyp');
|
||||||
|
var node_gyp_bin = path.join(path.dirname(
|
||||||
|
path.dirname(node_gyp_main))
|
||||||
|
,'bin/node-gyp.js');
|
||||||
|
if (existsSync(node_gyp_bin)) {
|
||||||
|
return node_gyp_bin;
|
||||||
|
}
|
||||||
|
} catch (err) { }
|
||||||
|
try {
|
||||||
|
var npm_main = require.resolve('npm');
|
||||||
|
var node_gyp_bin = path.join(path.dirname(
|
||||||
|
path.dirname(npm_main))
|
||||||
|
,'node_modules/node-gyp/bin/node-gyp.js');
|
||||||
|
if (existsSync(node_gyp_bin)) {
|
||||||
|
return node_gyp_bin;
|
||||||
|
}
|
||||||
|
} catch (err) { }
|
||||||
|
var npm_base = path.join(path.dirname(
|
||||||
|
path.dirname(process.execPath))
|
||||||
|
,'lib/node_modules/npm/')
|
||||||
|
var node_gyp_bin = path.join(npm_base,'node_modules/node-gyp/bin/node-gyp.js');
|
||||||
|
if (existsSync(node_gyp_bin)) {
|
||||||
|
return node_gyp_bin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.run_gyp = function(args,opts,callback) {
|
||||||
|
var shell_cmd = '';
|
||||||
|
var cmd_args = [];
|
||||||
|
if (opts.runtime && opts.runtime == 'node-webkit') {
|
||||||
|
shell_cmd = 'nw-gyp';
|
||||||
|
if (win) shell_cmd += '.cmd';
|
||||||
|
} else {
|
||||||
|
var node_gyp_path = which_node_gyp();
|
||||||
|
if (node_gyp_path) {
|
||||||
|
shell_cmd = process.execPath;
|
||||||
|
cmd_args.push(node_gyp_path);
|
||||||
|
} else {
|
||||||
|
shell_cmd = 'node-gyp';
|
||||||
|
if (win) shell_cmd += '.cmd';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var final_args = cmd_args.concat(args);
|
||||||
|
var cmd = cp.spawn(shell_cmd, final_args, {cwd: undefined, env: process.env, customFds: [ 0, 1, 2]});
|
||||||
|
cmd.on('error', function (err) {
|
||||||
|
if (err) {
|
||||||
|
return callback(new Error("Failed to execute '" + shell_cmd + ' ' + final_args.join(' ') + "' (" + err + ")"));
|
||||||
|
}
|
||||||
|
callback(null,opts);
|
||||||
|
});
|
||||||
|
cmd.on('close', function (code, signal) {
|
||||||
|
if (code && code !== 0) {
|
||||||
|
return callback(new Error("Failed to execute '" + shell_cmd + ' ' + final_args.join(' ') + "' (" + code + ")"));
|
||||||
|
}
|
||||||
|
callback(null,opts);
|
||||||
|
});
|
||||||
|
}
|
26
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html
generated
vendored
Normal file
26
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Node-webkit-based module test</title>
|
||||||
|
<script>
|
||||||
|
function nwModuleTest(){
|
||||||
|
var util = require('util');
|
||||||
|
var moduleFolder = require('nw.gui').App.argv[0];
|
||||||
|
try {
|
||||||
|
require(moduleFolder);
|
||||||
|
} catch(e) {
|
||||||
|
if( process.platform !== 'win32' ){
|
||||||
|
util.log('nw-pre-gyp error:');
|
||||||
|
util.log(e.stack);
|
||||||
|
}
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body onload="nwModuleTest()">
|
||||||
|
<h1>Node-webkit-based module test</h1>
|
||||||
|
</body>
|
||||||
|
</html>
|
9
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json
generated
vendored
Normal file
9
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"main": "index.html",
|
||||||
|
"name": "nw-pre-gyp-module-test",
|
||||||
|
"description": "Node-webkit-based module test.",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"window": {
|
||||||
|
"show": false
|
||||||
|
}
|
||||||
|
}
|
30
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/s3_setup.js
generated
vendored
Normal file
30
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/s3_setup.js
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
module.exports = exports;
|
||||||
|
|
||||||
|
var url = require('url')
|
||||||
|
|
||||||
|
var URI_REGEX="^(.*)\.(s3(?:-.*)?)\.amazonaws\.com$";
|
||||||
|
|
||||||
|
module.exports.detect = function(to,config) {
|
||||||
|
var uri = url.parse(to);
|
||||||
|
var hostname_matches = uri.hostname.match(URI_REGEX);
|
||||||
|
|
||||||
|
config.prefix = (!uri.pathname || uri.pathname == '/') ? '' : uri.pathname.replace('/','');
|
||||||
|
|
||||||
|
if(!hostname_matches) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!config.bucket) {
|
||||||
|
config.bucket = hostname_matches[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!config.region) {
|
||||||
|
var s3_domain = hostname_matches[2];
|
||||||
|
if (s3_domain.slice(0,3) == 's3-' &&
|
||||||
|
s3_domain.length >= 3) {
|
||||||
|
// it appears the region is explicit in the url
|
||||||
|
config.region = s3_domain.replace('s3-','');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
159
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/versioning.js
generated
vendored
Normal file
159
node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/versioning.js
generated
vendored
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
module.exports = exports;
|
||||||
|
|
||||||
|
var path = require('path')
|
||||||
|
, semver = require('semver')
|
||||||
|
, url = require('url')
|
||||||
|
, abi_crosswalk = require('./abi_crosswalk.json')
|
||||||
|
|
||||||
|
|
||||||
|
function get_node_abi(runtime, target) {
|
||||||
|
if (target) {
|
||||||
|
// abi_crosswalk generated with ./scripts/abi_crosswalk.js
|
||||||
|
var abi = '';
|
||||||
|
if (runtime === 'node-webkit') {
|
||||||
|
return runtime + '-v' + target;
|
||||||
|
} else {
|
||||||
|
if (abi_crosswalk[target]) {
|
||||||
|
abi = abi_crosswalk[target].node_abi;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!abi) {
|
||||||
|
throw new Error("Unsupported target version: " + target);
|
||||||
|
}
|
||||||
|
if (abi > 1) {
|
||||||
|
return runtime+'-v' + (+abi);
|
||||||
|
} else {
|
||||||
|
// no support for node-webkit unless > 0.10.x
|
||||||
|
if (runtime != 'node') {
|
||||||
|
throw new Error("Runtime '" + runtime + "' unsupported for target version: " + target);
|
||||||
|
}
|
||||||
|
if (!abi_crosswalk[target]) {
|
||||||
|
throw new Error("Unsupported target version: " + target);
|
||||||
|
}
|
||||||
|
abi = abi_crosswalk[target].v8;
|
||||||
|
return 'v8-' + abi;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (runtime === 'node-webkit') {
|
||||||
|
if (typeof process.versions['node-webkit'] === 'undefined') {
|
||||||
|
// erroneous CLI call
|
||||||
|
throw new Error("Empty target version is not supported if node-webkit is the target.");
|
||||||
|
}
|
||||||
|
return runtime + '-v' + process.versions['node-webkit'];
|
||||||
|
}
|
||||||
|
// process.versions.modules added in >= v0.10.4 and v0.11.7
|
||||||
|
// https://github.com/joyent/node/commit/ccabd4a6fa8a6eb79d29bc3bbe9fe2b6531c2d8e
|
||||||
|
return process.versions.modules ? runtime+'-v' + (+process.versions.modules) :
|
||||||
|
'v8-' + process.versions.v8.split('.').slice(0,2).join('.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var required_parameters = [
|
||||||
|
'module_name',
|
||||||
|
'module_path',
|
||||||
|
'host'
|
||||||
|
];
|
||||||
|
|
||||||
|
function validate_config(package_json,callback) {
|
||||||
|
var msg = package_json.name + ' package.json is not node-pre-gyp ready:\n';
|
||||||
|
var missing = [];
|
||||||
|
if (!package_json.main) {
|
||||||
|
missing.push('main');
|
||||||
|
}
|
||||||
|
if (!package_json.name) {
|
||||||
|
missing.push('name');
|
||||||
|
}
|
||||||
|
if (!package_json.binary) {
|
||||||
|
missing.push('binary');
|
||||||
|
}
|
||||||
|
var o = package_json.binary;
|
||||||
|
required_parameters.forEach(function(p) {
|
||||||
|
if (missing.indexOf('binary') > -1) {
|
||||||
|
missing.pop('binary');
|
||||||
|
}
|
||||||
|
if (!o || o[p] == undefined) {
|
||||||
|
missing.push('binary.' + p);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (missing.length >= 1) {
|
||||||
|
throw new Error(msg+"package.json must declare these properties: \n" + missing.join('\n'));
|
||||||
|
}
|
||||||
|
if (o) {
|
||||||
|
// enforce https over http
|
||||||
|
var protocol = url.parse(o.host).protocol;
|
||||||
|
if (protocol === 'http:') {
|
||||||
|
throw new Error("'host' protocol ("+protocol+") is invalid - only 'https:' is accepted");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.validate_config = validate_config;
|
||||||
|
|
||||||
|
function eval_template(template,opts) {
|
||||||
|
Object.keys(opts).forEach(function(key) {
|
||||||
|
var pattern = '{'+key+'}';
|
||||||
|
while (template.indexOf(pattern) > -1) {
|
||||||
|
template = template.replace(pattern,opts[key]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return template;
|
||||||
|
}
|
||||||
|
|
||||||
|
// url.resolve needs single trailing slash
|
||||||
|
// to behave correctly, otherwise a double slash
|
||||||
|
// may end up in the url which breaks requests
|
||||||
|
// and a lacking slash may not lead to proper joining
|
||||||
|
function add_trailing_slash(pathname) {
|
||||||
|
if (pathname.slice(-1) != '/') {
|
||||||
|
return pathname + '/';
|
||||||
|
}
|
||||||
|
return pathname;
|
||||||
|
}
|
||||||
|
|
||||||
|
var default_package_name = '{module_name}-v{version}-{node_abi}-{platform}-{arch}.tar.gz';
|
||||||
|
var default_remote_path = '';
|
||||||
|
|
||||||
|
module.exports.evaluate = function(package_json,options) {
|
||||||
|
options = options || {};
|
||||||
|
validate_config(package_json);
|
||||||
|
var v = package_json.version;
|
||||||
|
var module_version = semver.parse(v);
|
||||||
|
var runtime = options.runtime || (process.versions['node-webkit'] ? 'node-webkit' : 'node');
|
||||||
|
var opts = {
|
||||||
|
name: package_json.name
|
||||||
|
, configuration: Boolean(options.debug) ? 'Debug' : 'Release'
|
||||||
|
, debug: options.debug
|
||||||
|
, module_name: package_json.binary.module_name
|
||||||
|
, version: module_version.version
|
||||||
|
, prerelease: module_version.prerelease.length ? v.slice(v.indexOf(module_version.prerelease[0])) : ''
|
||||||
|
, major: module_version.major
|
||||||
|
, minor: module_version.minor
|
||||||
|
, patch: module_version.patch
|
||||||
|
, runtime: runtime
|
||||||
|
, node_abi: get_node_abi(runtime,options.target)
|
||||||
|
, target: options.target || ''
|
||||||
|
, platform: options.target_platform || process.platform
|
||||||
|
, target_platform: options.target_platform || process.platform
|
||||||
|
, arch: options.target_arch || process.arch
|
||||||
|
, target_arch: options.target_arch || process.arch
|
||||||
|
, module_main: package_json.main
|
||||||
|
}
|
||||||
|
opts.host = add_trailing_slash(eval_template(package_json.binary.host,opts));
|
||||||
|
opts.module_path = eval_template(package_json.binary.module_path,opts);
|
||||||
|
// now we resolve the module_path to ensure it is absolute so that binding.gyp variables work predictably
|
||||||
|
if (options.module_root) {
|
||||||
|
// resolve relative to known module root: works for pre-binding require
|
||||||
|
opts.module_path = path.join(options.module_root,opts.module_path);
|
||||||
|
} else {
|
||||||
|
// resolve relative to current working directory: works for node-pre-gyp commands
|
||||||
|
opts.module_path = path.resolve(opts.module_path);
|
||||||
|
}
|
||||||
|
opts.module = path.join(opts.module_path,opts.module_name + '.node')
|
||||||
|
opts.remote_path = package_json.binary.remote_path ? add_trailing_slash(eval_template(package_json.binary.remote_path,opts)) : default_remote_path;
|
||||||
|
var package_name = package_json.binary.package_name ? package_json.binary.package_name : default_package_name;
|
||||||
|
opts.package_name = eval_template(package_name,opts);
|
||||||
|
opts.staged_tarball = path.join('build/stage',opts.remote_path,opts.package_name);
|
||||||
|
opts.hosted_path = url.resolve(opts.host,opts.remote_path);
|
||||||
|
opts.hosted_tarball = url.resolve(opts.hosted_path,opts.package_name);
|
||||||
|
return opts;
|
||||||
|
}
|
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/mkdirp
generated
vendored
Symbolic link
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/mkdirp
generated
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../mkdirp/bin/cmd.js
|
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/nopt
generated
vendored
Symbolic link
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/nopt
generated
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../nopt/bin/nopt.js
|
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rc
generated
vendored
Symbolic link
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rc
generated
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../rc/index.js
|
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rimraf
generated
vendored
Symbolic link
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rimraf
generated
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../rimraf/bin.js
|
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/semver
generated
vendored
Symbolic link
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/semver
generated
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../semver/bin/semver
|
2
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.npmignore
generated
vendored
Normal file
2
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.npmignore
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
node_modules/
|
||||||
|
npm-debug.log
|
5
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.travis.yml
generated
vendored
Normal file
5
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
language: node_js
|
||||||
|
node_js:
|
||||||
|
- 0.6
|
||||||
|
- 0.8
|
||||||
|
- "0.10"
|
21
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/LICENSE
generated
vendored
Normal file
21
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Copyright 2010 James Halliday (mail@substack.net)
|
||||||
|
|
||||||
|
This project is free software released under the MIT/X11 license:
|
||||||
|
|
||||||
|
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.
|
33
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/cmd.js
generated
vendored
Executable file
33
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/cmd.js
generated
vendored
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
var mkdirp = require('../');
|
||||||
|
var minimist = require('minimist');
|
||||||
|
var fs = require('fs');
|
||||||
|
|
||||||
|
var argv = minimist(process.argv.slice(2), {
|
||||||
|
alias: { m: 'mode', h: 'help' },
|
||||||
|
string: [ 'mode' ]
|
||||||
|
});
|
||||||
|
if (argv.help) {
|
||||||
|
fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var paths = argv._.slice();
|
||||||
|
var mode = argv.mode ? parseInt(argv.mode, 8) : undefined;
|
||||||
|
|
||||||
|
(function next () {
|
||||||
|
if (paths.length === 0) return;
|
||||||
|
var p = paths.shift();
|
||||||
|
|
||||||
|
if (mode === undefined) mkdirp(p, cb)
|
||||||
|
else mkdirp(p, mode, cb)
|
||||||
|
|
||||||
|
function cb (err) {
|
||||||
|
if (err) {
|
||||||
|
console.error(err.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
else next();
|
||||||
|
}
|
||||||
|
})();
|
12
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/usage.txt
generated
vendored
Normal file
12
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/usage.txt
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
usage: mkdirp [DIR1,DIR2..] {OPTIONS}
|
||||||
|
|
||||||
|
Create each supplied directory including any necessary parent directories that
|
||||||
|
don't yet exist.
|
||||||
|
|
||||||
|
If the directory already exists, do nothing.
|
||||||
|
|
||||||
|
OPTIONS are:
|
||||||
|
|
||||||
|
-m, --mode If a directory needs to be created, set the mode as an octal
|
||||||
|
permission string.
|
||||||
|
|
6
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/examples/pow.js
generated
vendored
Normal file
6
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/examples/pow.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
var mkdirp = require('mkdirp');
|
||||||
|
|
||||||
|
mkdirp('/tmp/foo/bar/baz', function (err) {
|
||||||
|
if (err) console.error(err)
|
||||||
|
else console.log('pow!')
|
||||||
|
});
|
97
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/index.js
generated
vendored
Normal file
97
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/index.js
generated
vendored
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
|
||||||
|
module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
|
||||||
|
|
||||||
|
function mkdirP (p, opts, f, made) {
|
||||||
|
if (typeof opts === 'function') {
|
||||||
|
f = opts;
|
||||||
|
opts = {};
|
||||||
|
}
|
||||||
|
else if (!opts || typeof opts !== 'object') {
|
||||||
|
opts = { mode: opts };
|
||||||
|
}
|
||||||
|
|
||||||
|
var mode = opts.mode;
|
||||||
|
var xfs = opts.fs || fs;
|
||||||
|
|
||||||
|
if (mode === undefined) {
|
||||||
|
mode = 0777 & (~process.umask());
|
||||||
|
}
|
||||||
|
if (!made) made = null;
|
||||||
|
|
||||||
|
var cb = f || function () {};
|
||||||
|
p = path.resolve(p);
|
||||||
|
|
||||||
|
xfs.mkdir(p, mode, function (er) {
|
||||||
|
if (!er) {
|
||||||
|
made = made || p;
|
||||||
|
return cb(null, made);
|
||||||
|
}
|
||||||
|
switch (er.code) {
|
||||||
|
case 'ENOENT':
|
||||||
|
mkdirP(path.dirname(p), opts, function (er, made) {
|
||||||
|
if (er) cb(er, made);
|
||||||
|
else mkdirP(p, opts, cb, made);
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
// In the case of any other error, just see if there's a dir
|
||||||
|
// there already. If so, then hooray! If not, then something
|
||||||
|
// is borked.
|
||||||
|
default:
|
||||||
|
xfs.stat(p, function (er2, stat) {
|
||||||
|
// if the stat fails, then that's super weird.
|
||||||
|
// let the original error be the failure reason.
|
||||||
|
if (er2 || !stat.isDirectory()) cb(er, made)
|
||||||
|
else cb(null, made);
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
mkdirP.sync = function sync (p, opts, made) {
|
||||||
|
if (!opts || typeof opts !== 'object') {
|
||||||
|
opts = { mode: opts };
|
||||||
|
}
|
||||||
|
|
||||||
|
var mode = opts.mode;
|
||||||
|
var xfs = opts.fs || fs;
|
||||||
|
|
||||||
|
if (mode === undefined) {
|
||||||
|
mode = 0777 & (~process.umask());
|
||||||
|
}
|
||||||
|
if (!made) made = null;
|
||||||
|
|
||||||
|
p = path.resolve(p);
|
||||||
|
|
||||||
|
try {
|
||||||
|
xfs.mkdirSync(p, mode);
|
||||||
|
made = made || p;
|
||||||
|
}
|
||||||
|
catch (err0) {
|
||||||
|
switch (err0.code) {
|
||||||
|
case 'ENOENT' :
|
||||||
|
made = sync(path.dirname(p), opts, made);
|
||||||
|
sync(p, opts, made);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// In the case of any other error, just see if there's a dir
|
||||||
|
// there already. If so, then hooray! If not, then something
|
||||||
|
// is borked.
|
||||||
|
default:
|
||||||
|
var stat;
|
||||||
|
try {
|
||||||
|
stat = xfs.statSync(p);
|
||||||
|
}
|
||||||
|
catch (err1) {
|
||||||
|
throw err0;
|
||||||
|
}
|
||||||
|
if (!stat.isDirectory()) throw err0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return made;
|
||||||
|
};
|
4
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/.travis.yml
generated
vendored
Normal file
4
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
language: node_js
|
||||||
|
node_js:
|
||||||
|
- "0.8"
|
||||||
|
- "0.10"
|
18
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/LICENSE
generated
vendored
Normal file
18
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/LICENSE
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
This software is released under the MIT license:
|
||||||
|
|
||||||
|
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.
|
2
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/example/parse.js
generated
vendored
Normal file
2
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/example/parse.js
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
var argv = require('../')(process.argv.slice(2));
|
||||||
|
console.dir(argv);
|
187
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/index.js
generated
vendored
Normal file
187
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/index.js
generated
vendored
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
module.exports = function (args, opts) {
|
||||||
|
if (!opts) opts = {};
|
||||||
|
|
||||||
|
var flags = { bools : {}, strings : {} };
|
||||||
|
|
||||||
|
[].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
|
||||||
|
flags.bools[key] = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
[].concat(opts.string).filter(Boolean).forEach(function (key) {
|
||||||
|
flags.strings[key] = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
var aliases = {};
|
||||||
|
Object.keys(opts.alias || {}).forEach(function (key) {
|
||||||
|
aliases[key] = [].concat(opts.alias[key]);
|
||||||
|
aliases[key].forEach(function (x) {
|
||||||
|
aliases[x] = [key].concat(aliases[key].filter(function (y) {
|
||||||
|
return x !== y;
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var defaults = opts['default'] || {};
|
||||||
|
|
||||||
|
var argv = { _ : [] };
|
||||||
|
Object.keys(flags.bools).forEach(function (key) {
|
||||||
|
setArg(key, defaults[key] === undefined ? false : defaults[key]);
|
||||||
|
});
|
||||||
|
|
||||||
|
var notFlags = [];
|
||||||
|
|
||||||
|
if (args.indexOf('--') !== -1) {
|
||||||
|
notFlags = args.slice(args.indexOf('--')+1);
|
||||||
|
args = args.slice(0, args.indexOf('--'));
|
||||||
|
}
|
||||||
|
|
||||||
|
function setArg (key, val) {
|
||||||
|
var value = !flags.strings[key] && isNumber(val)
|
||||||
|
? Number(val) : val
|
||||||
|
;
|
||||||
|
setKey(argv, key.split('.'), value);
|
||||||
|
|
||||||
|
(aliases[key] || []).forEach(function (x) {
|
||||||
|
setKey(argv, x.split('.'), value);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < args.length; i++) {
|
||||||
|
var arg = args[i];
|
||||||
|
|
||||||
|
if (/^--.+=/.test(arg)) {
|
||||||
|
// Using [\s\S] instead of . because js doesn't support the
|
||||||
|
// 'dotall' regex modifier. See:
|
||||||
|
// http://stackoverflow.com/a/1068308/13216
|
||||||
|
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
||||||
|
setArg(m[1], m[2]);
|
||||||
|
}
|
||||||
|
else if (/^--no-.+/.test(arg)) {
|
||||||
|
var key = arg.match(/^--no-(.+)/)[1];
|
||||||
|
setArg(key, false);
|
||||||
|
}
|
||||||
|
else if (/^--.+/.test(arg)) {
|
||||||
|
var key = arg.match(/^--(.+)/)[1];
|
||||||
|
var next = args[i + 1];
|
||||||
|
if (next !== undefined && !/^-/.test(next)
|
||||||
|
&& !flags.bools[key]
|
||||||
|
&& (aliases[key] ? !flags.bools[aliases[key]] : true)) {
|
||||||
|
setArg(key, next);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else if (/^(true|false)$/.test(next)) {
|
||||||
|
setArg(key, next === 'true');
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setArg(key, flags.strings[key] ? '' : true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (/^-[^-]+/.test(arg)) {
|
||||||
|
var letters = arg.slice(1,-1).split('');
|
||||||
|
|
||||||
|
var broken = false;
|
||||||
|
for (var j = 0; j < letters.length; j++) {
|
||||||
|
var next = arg.slice(j+2);
|
||||||
|
|
||||||
|
if (next === '-') {
|
||||||
|
setArg(letters[j], next)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/[A-Za-z]/.test(letters[j])
|
||||||
|
&& /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
|
||||||
|
setArg(letters[j], next);
|
||||||
|
broken = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (letters[j+1] && letters[j+1].match(/\W/)) {
|
||||||
|
setArg(letters[j], arg.slice(j+2));
|
||||||
|
broken = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setArg(letters[j], flags.strings[letters[j]] ? '' : true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var key = arg.slice(-1)[0];
|
||||||
|
if (!broken && key !== '-') {
|
||||||
|
if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
|
||||||
|
&& !flags.bools[key]
|
||||||
|
&& (aliases[key] ? !flags.bools[aliases[key]] : true)) {
|
||||||
|
setArg(key, args[i+1]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else if (args[i+1] && /true|false/.test(args[i+1])) {
|
||||||
|
setArg(key, args[i+1] === 'true');
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setArg(key, flags.strings[key] ? '' : true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
argv._.push(
|
||||||
|
flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.keys(defaults).forEach(function (key) {
|
||||||
|
if (!hasKey(argv, key.split('.'))) {
|
||||||
|
setKey(argv, key.split('.'), defaults[key]);
|
||||||
|
|
||||||
|
(aliases[key] || []).forEach(function (x) {
|
||||||
|
setKey(argv, x.split('.'), defaults[key]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
notFlags.forEach(function(key) {
|
||||||
|
argv._.push(key);
|
||||||
|
});
|
||||||
|
|
||||||
|
return argv;
|
||||||
|
};
|
||||||
|
|
||||||
|
function hasKey (obj, keys) {
|
||||||
|
var o = obj;
|
||||||
|
keys.slice(0,-1).forEach(function (key) {
|
||||||
|
o = (o[key] || {});
|
||||||
|
});
|
||||||
|
|
||||||
|
var key = keys[keys.length - 1];
|
||||||
|
return key in o;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setKey (obj, keys, value) {
|
||||||
|
var o = obj;
|
||||||
|
keys.slice(0,-1).forEach(function (key) {
|
||||||
|
if (o[key] === undefined) o[key] = {};
|
||||||
|
o = o[key];
|
||||||
|
});
|
||||||
|
|
||||||
|
var key = keys[keys.length - 1];
|
||||||
|
if (o[key] === undefined || typeof o[key] === 'boolean') {
|
||||||
|
o[key] = value;
|
||||||
|
}
|
||||||
|
else if (Array.isArray(o[key])) {
|
||||||
|
o[key].push(value);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
o[key] = [ o[key], value ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isNumber (x) {
|
||||||
|
if (typeof x === 'number') return true;
|
||||||
|
if (/^0x[0-9a-f]+$/i.test(x)) return true;
|
||||||
|
return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
function longest (xs) {
|
||||||
|
return Math.max.apply(null, xs.map(function (x) { return x.length }));
|
||||||
|
}
|
67
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/package.json
generated
vendored
Normal file
67
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/package.json
generated
vendored
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
{
|
||||||
|
"name": "minimist",
|
||||||
|
"version": "0.0.8",
|
||||||
|
"description": "parse argument options",
|
||||||
|
"main": "index.js",
|
||||||
|
"devDependencies": {
|
||||||
|
"tape": "~1.0.4",
|
||||||
|
"tap": "~0.4.0"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "tap test/*.js"
|
||||||
|
},
|
||||||
|
"testling": {
|
||||||
|
"files": "test/*.js",
|
||||||
|
"browsers": [
|
||||||
|
"ie/6..latest",
|
||||||
|
"ff/5",
|
||||||
|
"firefox/latest",
|
||||||
|
"chrome/10",
|
||||||
|
"chrome/latest",
|
||||||
|
"safari/5.1",
|
||||||
|
"safari/latest",
|
||||||
|
"opera/12"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/substack/minimist.git"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/substack/minimist",
|
||||||
|
"keywords": [
|
||||||
|
"argv",
|
||||||
|
"getopt",
|
||||||
|
"parser",
|
||||||
|
"optimist"
|
||||||
|
],
|
||||||
|
"author": {
|
||||||
|
"name": "James Halliday",
|
||||||
|
"email": "mail@substack.net",
|
||||||
|
"url": "http://substack.net"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/substack/minimist/issues"
|
||||||
|
},
|
||||||
|
"_id": "minimist@0.0.8",
|
||||||
|
"dist": {
|
||||||
|
"shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d",
|
||||||
|
"tarball": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
|
||||||
|
},
|
||||||
|
"_from": "minimist@0.0.8",
|
||||||
|
"_npmVersion": "1.4.3",
|
||||||
|
"_npmUser": {
|
||||||
|
"name": "substack",
|
||||||
|
"email": "mail@substack.net"
|
||||||
|
},
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"name": "substack",
|
||||||
|
"email": "mail@substack.net"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"directories": {},
|
||||||
|
"_shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d",
|
||||||
|
"_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||||
|
"readme": "ERROR: No README data found!"
|
||||||
|
}
|
73
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/readme.markdown
generated
vendored
Normal file
73
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/readme.markdown
generated
vendored
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
# minimist
|
||||||
|
|
||||||
|
parse argument options
|
||||||
|
|
||||||
|
This module is the guts of optimist's argument parser without all the
|
||||||
|
fanciful decoration.
|
||||||
|
|
||||||
|
[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)
|
||||||
|
|
||||||
|
[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)
|
||||||
|
|
||||||
|
# example
|
||||||
|
|
||||||
|
``` js
|
||||||
|
var argv = require('minimist')(process.argv.slice(2));
|
||||||
|
console.dir(argv);
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
$ node example/parse.js -a beep -b boop
|
||||||
|
{ _: [], a: 'beep', b: 'boop' }
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
|
||||||
|
{ _: [ 'foo', 'bar', 'baz' ],
|
||||||
|
x: 3,
|
||||||
|
y: 4,
|
||||||
|
n: 5,
|
||||||
|
a: true,
|
||||||
|
b: true,
|
||||||
|
c: true,
|
||||||
|
beep: 'boop' }
|
||||||
|
```
|
||||||
|
|
||||||
|
# methods
|
||||||
|
|
||||||
|
``` js
|
||||||
|
var parseArgs = require('minimist')
|
||||||
|
```
|
||||||
|
|
||||||
|
## var argv = parseArgs(args, opts={})
|
||||||
|
|
||||||
|
Return an argument object `argv` populated with the array arguments from `args`.
|
||||||
|
|
||||||
|
`argv._` contains all the arguments that didn't have an option associated with
|
||||||
|
them.
|
||||||
|
|
||||||
|
Numeric-looking arguments will be returned as numbers unless `opts.string` or
|
||||||
|
`opts.boolean` is set for that argument name.
|
||||||
|
|
||||||
|
Any arguments after `'--'` will not be parsed and will end up in `argv._`.
|
||||||
|
|
||||||
|
options can be:
|
||||||
|
|
||||||
|
* `opts.string` - a string or array of strings argument names to always treat as
|
||||||
|
strings
|
||||||
|
* `opts.boolean` - a string or array of strings to always treat as booleans
|
||||||
|
* `opts.alias` - an object mapping string names to strings or arrays of string
|
||||||
|
argument names to use as aliases
|
||||||
|
* `opts.default` - an object mapping string argument names to default values
|
||||||
|
|
||||||
|
# install
|
||||||
|
|
||||||
|
With [npm](https://npmjs.org) do:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install minimist
|
||||||
|
```
|
||||||
|
|
||||||
|
# license
|
||||||
|
|
||||||
|
MIT
|
24
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dash.js
generated
vendored
Normal file
24
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dash.js
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
var parse = require('../');
|
||||||
|
var test = require('tape');
|
||||||
|
|
||||||
|
test('-', function (t) {
|
||||||
|
t.plan(5);
|
||||||
|
t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
|
||||||
|
t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
|
||||||
|
t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '-b', '-' ], { boolean: 'b' }),
|
||||||
|
{ b: true, _: [ '-' ] }
|
||||||
|
);
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '-s', '-' ], { string: 's' }),
|
||||||
|
{ s: '-', _: [] }
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('-a -- b', function (t) {
|
||||||
|
t.plan(3);
|
||||||
|
t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
|
||||||
|
t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
|
||||||
|
t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
|
||||||
|
});
|
20
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/default_bool.js
generated
vendored
Normal file
20
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/default_bool.js
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
var test = require('tape');
|
||||||
|
var parse = require('../');
|
||||||
|
|
||||||
|
test('boolean default true', function (t) {
|
||||||
|
var argv = parse([], {
|
||||||
|
boolean: 'sometrue',
|
||||||
|
default: { sometrue: true }
|
||||||
|
});
|
||||||
|
t.equal(argv.sometrue, true);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('boolean default false', function (t) {
|
||||||
|
var argv = parse([], {
|
||||||
|
boolean: 'somefalse',
|
||||||
|
default: { somefalse: false }
|
||||||
|
});
|
||||||
|
t.equal(argv.somefalse, false);
|
||||||
|
t.end();
|
||||||
|
});
|
16
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dotted.js
generated
vendored
Normal file
16
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dotted.js
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
var parse = require('../');
|
||||||
|
var test = require('tape');
|
||||||
|
|
||||||
|
test('dotted alias', function (t) {
|
||||||
|
var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
|
||||||
|
t.equal(argv.a.b, 22);
|
||||||
|
t.equal(argv.aa.bb, 22);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('dotted default', function (t) {
|
||||||
|
var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
|
||||||
|
t.equal(argv.a.b, 11);
|
||||||
|
t.equal(argv.aa.bb, 11);
|
||||||
|
t.end();
|
||||||
|
});
|
31
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/long.js
generated
vendored
Normal file
31
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/long.js
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
var test = require('tape');
|
||||||
|
var parse = require('../');
|
||||||
|
|
||||||
|
test('long opts', function (t) {
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '--bool' ]),
|
||||||
|
{ bool : true, _ : [] },
|
||||||
|
'long boolean'
|
||||||
|
);
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '--pow', 'xixxle' ]),
|
||||||
|
{ pow : 'xixxle', _ : [] },
|
||||||
|
'long capture sp'
|
||||||
|
);
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '--pow=xixxle' ]),
|
||||||
|
{ pow : 'xixxle', _ : [] },
|
||||||
|
'long capture eq'
|
||||||
|
);
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '--host', 'localhost', '--port', '555' ]),
|
||||||
|
{ host : 'localhost', port : 555, _ : [] },
|
||||||
|
'long captures sp'
|
||||||
|
);
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '--host=localhost', '--port=555' ]),
|
||||||
|
{ host : 'localhost', port : 555, _ : [] },
|
||||||
|
'long captures eq'
|
||||||
|
);
|
||||||
|
t.end();
|
||||||
|
});
|
318
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse.js
generated
vendored
Normal file
318
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse.js
generated
vendored
Normal file
@ -0,0 +1,318 @@
|
|||||||
|
var parse = require('../');
|
||||||
|
var test = require('tape');
|
||||||
|
|
||||||
|
test('parse args', function (t) {
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '--no-moo' ]),
|
||||||
|
{ moo : false, _ : [] },
|
||||||
|
'no'
|
||||||
|
);
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
|
||||||
|
{ v : ['a','b','c'], _ : [] },
|
||||||
|
'multi'
|
||||||
|
);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('comprehensive', function (t) {
|
||||||
|
t.deepEqual(
|
||||||
|
parse([
|
||||||
|
'--name=meowmers', 'bare', '-cats', 'woo',
|
||||||
|
'-h', 'awesome', '--multi=quux',
|
||||||
|
'--key', 'value',
|
||||||
|
'-b', '--bool', '--no-meep', '--multi=baz',
|
||||||
|
'--', '--not-a-flag', 'eek'
|
||||||
|
]),
|
||||||
|
{
|
||||||
|
c : true,
|
||||||
|
a : true,
|
||||||
|
t : true,
|
||||||
|
s : 'woo',
|
||||||
|
h : 'awesome',
|
||||||
|
b : true,
|
||||||
|
bool : true,
|
||||||
|
key : 'value',
|
||||||
|
multi : [ 'quux', 'baz' ],
|
||||||
|
meep : false,
|
||||||
|
name : 'meowmers',
|
||||||
|
_ : [ 'bare', '--not-a-flag', 'eek' ]
|
||||||
|
}
|
||||||
|
);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('nums', function (t) {
|
||||||
|
var argv = parse([
|
||||||
|
'-x', '1234',
|
||||||
|
'-y', '5.67',
|
||||||
|
'-z', '1e7',
|
||||||
|
'-w', '10f',
|
||||||
|
'--hex', '0xdeadbeef',
|
||||||
|
'789'
|
||||||
|
]);
|
||||||
|
t.deepEqual(argv, {
|
||||||
|
x : 1234,
|
||||||
|
y : 5.67,
|
||||||
|
z : 1e7,
|
||||||
|
w : '10f',
|
||||||
|
hex : 0xdeadbeef,
|
||||||
|
_ : [ 789 ]
|
||||||
|
});
|
||||||
|
t.deepEqual(typeof argv.x, 'number');
|
||||||
|
t.deepEqual(typeof argv.y, 'number');
|
||||||
|
t.deepEqual(typeof argv.z, 'number');
|
||||||
|
t.deepEqual(typeof argv.w, 'string');
|
||||||
|
t.deepEqual(typeof argv.hex, 'number');
|
||||||
|
t.deepEqual(typeof argv._[0], 'number');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('flag boolean', function (t) {
|
||||||
|
var argv = parse([ '-t', 'moo' ], { boolean: 't' });
|
||||||
|
t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
|
||||||
|
t.deepEqual(typeof argv.t, 'boolean');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('flag boolean value', function (t) {
|
||||||
|
var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
|
||||||
|
boolean: [ 't', 'verbose' ],
|
||||||
|
default: { verbose: true }
|
||||||
|
});
|
||||||
|
|
||||||
|
t.deepEqual(argv, {
|
||||||
|
verbose: false,
|
||||||
|
t: true,
|
||||||
|
_: ['moo']
|
||||||
|
});
|
||||||
|
|
||||||
|
t.deepEqual(typeof argv.verbose, 'boolean');
|
||||||
|
t.deepEqual(typeof argv.t, 'boolean');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('flag boolean default false', function (t) {
|
||||||
|
var argv = parse(['moo'], {
|
||||||
|
boolean: ['t', 'verbose'],
|
||||||
|
default: { verbose: false, t: false }
|
||||||
|
});
|
||||||
|
|
||||||
|
t.deepEqual(argv, {
|
||||||
|
verbose: false,
|
||||||
|
t: false,
|
||||||
|
_: ['moo']
|
||||||
|
});
|
||||||
|
|
||||||
|
t.deepEqual(typeof argv.verbose, 'boolean');
|
||||||
|
t.deepEqual(typeof argv.t, 'boolean');
|
||||||
|
t.end();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
test('boolean groups', function (t) {
|
||||||
|
var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
|
||||||
|
boolean: ['x','y','z']
|
||||||
|
});
|
||||||
|
|
||||||
|
t.deepEqual(argv, {
|
||||||
|
x : true,
|
||||||
|
y : false,
|
||||||
|
z : true,
|
||||||
|
_ : [ 'one', 'two', 'three' ]
|
||||||
|
});
|
||||||
|
|
||||||
|
t.deepEqual(typeof argv.x, 'boolean');
|
||||||
|
t.deepEqual(typeof argv.y, 'boolean');
|
||||||
|
t.deepEqual(typeof argv.z, 'boolean');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('newlines in params' , function (t) {
|
||||||
|
var args = parse([ '-s', "X\nX" ])
|
||||||
|
t.deepEqual(args, { _ : [], s : "X\nX" });
|
||||||
|
|
||||||
|
// reproduce in bash:
|
||||||
|
// VALUE="new
|
||||||
|
// line"
|
||||||
|
// node program.js --s="$VALUE"
|
||||||
|
args = parse([ "--s=X\nX" ])
|
||||||
|
t.deepEqual(args, { _ : [], s : "X\nX" });
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('strings' , function (t) {
|
||||||
|
var s = parse([ '-s', '0001234' ], { string: 's' }).s;
|
||||||
|
t.equal(s, '0001234');
|
||||||
|
t.equal(typeof s, 'string');
|
||||||
|
|
||||||
|
var x = parse([ '-x', '56' ], { string: 'x' }).x;
|
||||||
|
t.equal(x, '56');
|
||||||
|
t.equal(typeof x, 'string');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('stringArgs', function (t) {
|
||||||
|
var s = parse([ ' ', ' ' ], { string: '_' })._;
|
||||||
|
t.same(s.length, 2);
|
||||||
|
t.same(typeof s[0], 'string');
|
||||||
|
t.same(s[0], ' ');
|
||||||
|
t.same(typeof s[1], 'string');
|
||||||
|
t.same(s[1], ' ');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('empty strings', function(t) {
|
||||||
|
var s = parse([ '-s' ], { string: 's' }).s;
|
||||||
|
t.equal(s, '');
|
||||||
|
t.equal(typeof s, 'string');
|
||||||
|
|
||||||
|
var str = parse([ '--str' ], { string: 'str' }).str;
|
||||||
|
t.equal(str, '');
|
||||||
|
t.equal(typeof str, 'string');
|
||||||
|
|
||||||
|
var letters = parse([ '-art' ], {
|
||||||
|
string: [ 'a', 't' ]
|
||||||
|
});
|
||||||
|
|
||||||
|
t.equal(letters.a, '');
|
||||||
|
t.equal(letters.r, true);
|
||||||
|
t.equal(letters.t, '');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('slashBreak', function (t) {
|
||||||
|
t.same(
|
||||||
|
parse([ '-I/foo/bar/baz' ]),
|
||||||
|
{ I : '/foo/bar/baz', _ : [] }
|
||||||
|
);
|
||||||
|
t.same(
|
||||||
|
parse([ '-xyz/foo/bar/baz' ]),
|
||||||
|
{ x : true, y : true, z : '/foo/bar/baz', _ : [] }
|
||||||
|
);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('alias', function (t) {
|
||||||
|
var argv = parse([ '-f', '11', '--zoom', '55' ], {
|
||||||
|
alias: { z: 'zoom' }
|
||||||
|
});
|
||||||
|
t.equal(argv.zoom, 55);
|
||||||
|
t.equal(argv.z, argv.zoom);
|
||||||
|
t.equal(argv.f, 11);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('multiAlias', function (t) {
|
||||||
|
var argv = parse([ '-f', '11', '--zoom', '55' ], {
|
||||||
|
alias: { z: [ 'zm', 'zoom' ] }
|
||||||
|
});
|
||||||
|
t.equal(argv.zoom, 55);
|
||||||
|
t.equal(argv.z, argv.zoom);
|
||||||
|
t.equal(argv.z, argv.zm);
|
||||||
|
t.equal(argv.f, 11);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('nested dotted objects', function (t) {
|
||||||
|
var argv = parse([
|
||||||
|
'--foo.bar', '3', '--foo.baz', '4',
|
||||||
|
'--foo.quux.quibble', '5', '--foo.quux.o_O',
|
||||||
|
'--beep.boop'
|
||||||
|
]);
|
||||||
|
|
||||||
|
t.same(argv.foo, {
|
||||||
|
bar : 3,
|
||||||
|
baz : 4,
|
||||||
|
quux : {
|
||||||
|
quibble : 5,
|
||||||
|
o_O : true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
t.same(argv.beep, { boop : true });
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('boolean and alias with chainable api', function (t) {
|
||||||
|
var aliased = [ '-h', 'derp' ];
|
||||||
|
var regular = [ '--herp', 'derp' ];
|
||||||
|
var opts = {
|
||||||
|
herp: { alias: 'h', boolean: true }
|
||||||
|
};
|
||||||
|
var aliasedArgv = parse(aliased, {
|
||||||
|
boolean: 'herp',
|
||||||
|
alias: { h: 'herp' }
|
||||||
|
});
|
||||||
|
var propertyArgv = parse(regular, {
|
||||||
|
boolean: 'herp',
|
||||||
|
alias: { h: 'herp' }
|
||||||
|
});
|
||||||
|
var expected = {
|
||||||
|
herp: true,
|
||||||
|
h: true,
|
||||||
|
'_': [ 'derp' ]
|
||||||
|
};
|
||||||
|
|
||||||
|
t.same(aliasedArgv, expected);
|
||||||
|
t.same(propertyArgv, expected);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('boolean and alias with options hash', function (t) {
|
||||||
|
var aliased = [ '-h', 'derp' ];
|
||||||
|
var regular = [ '--herp', 'derp' ];
|
||||||
|
var opts = {
|
||||||
|
alias: { 'h': 'herp' },
|
||||||
|
boolean: 'herp'
|
||||||
|
};
|
||||||
|
var aliasedArgv = parse(aliased, opts);
|
||||||
|
var propertyArgv = parse(regular, opts);
|
||||||
|
var expected = {
|
||||||
|
herp: true,
|
||||||
|
h: true,
|
||||||
|
'_': [ 'derp' ]
|
||||||
|
};
|
||||||
|
t.same(aliasedArgv, expected);
|
||||||
|
t.same(propertyArgv, expected);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('boolean and alias using explicit true', function (t) {
|
||||||
|
var aliased = [ '-h', 'true' ];
|
||||||
|
var regular = [ '--herp', 'true' ];
|
||||||
|
var opts = {
|
||||||
|
alias: { h: 'herp' },
|
||||||
|
boolean: 'h'
|
||||||
|
};
|
||||||
|
var aliasedArgv = parse(aliased, opts);
|
||||||
|
var propertyArgv = parse(regular, opts);
|
||||||
|
var expected = {
|
||||||
|
herp: true,
|
||||||
|
h: true,
|
||||||
|
'_': [ ]
|
||||||
|
};
|
||||||
|
|
||||||
|
t.same(aliasedArgv, expected);
|
||||||
|
t.same(propertyArgv, expected);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
// regression, see https://github.com/substack/node-optimist/issues/71
|
||||||
|
test('boolean and --x=true', function(t) {
|
||||||
|
var parsed = parse(['--boool', '--other=true'], {
|
||||||
|
boolean: 'boool'
|
||||||
|
});
|
||||||
|
|
||||||
|
t.same(parsed.boool, true);
|
||||||
|
t.same(parsed.other, 'true');
|
||||||
|
|
||||||
|
parsed = parse(['--boool', '--other=false'], {
|
||||||
|
boolean: 'boool'
|
||||||
|
});
|
||||||
|
|
||||||
|
t.same(parsed.boool, true);
|
||||||
|
t.same(parsed.other, 'false');
|
||||||
|
t.end();
|
||||||
|
});
|
9
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js
generated
vendored
Normal file
9
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
var parse = require('../');
|
||||||
|
var test = require('tape');
|
||||||
|
|
||||||
|
test('parse with modifier functions' , function (t) {
|
||||||
|
t.plan(1);
|
||||||
|
|
||||||
|
var argv = parse([ '-b', '123' ], { boolean: 'b' });
|
||||||
|
t.deepEqual(argv, { b: true, _: ['123'] });
|
||||||
|
});
|
67
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/short.js
generated
vendored
Normal file
67
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/short.js
generated
vendored
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
var parse = require('../');
|
||||||
|
var test = require('tape');
|
||||||
|
|
||||||
|
test('numeric short args', function (t) {
|
||||||
|
t.plan(2);
|
||||||
|
t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '-123', '456' ]),
|
||||||
|
{ 1: true, 2: true, 3: 456, _: [] }
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('short', function (t) {
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '-b' ]),
|
||||||
|
{ b : true, _ : [] },
|
||||||
|
'short boolean'
|
||||||
|
);
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ 'foo', 'bar', 'baz' ]),
|
||||||
|
{ _ : [ 'foo', 'bar', 'baz' ] },
|
||||||
|
'bare'
|
||||||
|
);
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '-cats' ]),
|
||||||
|
{ c : true, a : true, t : true, s : true, _ : [] },
|
||||||
|
'group'
|
||||||
|
);
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '-cats', 'meow' ]),
|
||||||
|
{ c : true, a : true, t : true, s : 'meow', _ : [] },
|
||||||
|
'short group next'
|
||||||
|
);
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '-h', 'localhost' ]),
|
||||||
|
{ h : 'localhost', _ : [] },
|
||||||
|
'short capture'
|
||||||
|
);
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '-h', 'localhost', '-p', '555' ]),
|
||||||
|
{ h : 'localhost', p : 555, _ : [] },
|
||||||
|
'short captures'
|
||||||
|
);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('mixed short bool and capture', function (t) {
|
||||||
|
t.same(
|
||||||
|
parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
|
||||||
|
{
|
||||||
|
f : true, p : 555, h : 'localhost',
|
||||||
|
_ : [ 'script.js' ]
|
||||||
|
}
|
||||||
|
);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('short and long', function (t) {
|
||||||
|
t.deepEqual(
|
||||||
|
parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
|
||||||
|
{
|
||||||
|
f : true, p : 555, h : 'localhost',
|
||||||
|
_ : [ 'script.js' ]
|
||||||
|
}
|
||||||
|
);
|
||||||
|
t.end();
|
||||||
|
});
|
8
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/whitespace.js
generated
vendored
Normal file
8
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/whitespace.js
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
var parse = require('../');
|
||||||
|
var test = require('tape');
|
||||||
|
|
||||||
|
test('whitespace should be whitespace' , function (t) {
|
||||||
|
t.plan(1);
|
||||||
|
var x = parse([ '-x', '\t' ]).x;
|
||||||
|
t.equal(x, '\t');
|
||||||
|
});
|
58
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/package.json
generated
vendored
Normal file
58
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/package.json
generated
vendored
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
"name": "mkdirp",
|
||||||
|
"description": "Recursively mkdir, like `mkdir -p`",
|
||||||
|
"version": "0.5.0",
|
||||||
|
"author": {
|
||||||
|
"name": "James Halliday",
|
||||||
|
"email": "mail@substack.net",
|
||||||
|
"url": "http://substack.net"
|
||||||
|
},
|
||||||
|
"main": "./index",
|
||||||
|
"keywords": [
|
||||||
|
"mkdir",
|
||||||
|
"directory"
|
||||||
|
],
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/substack/node-mkdirp.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "tap test/*.js"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"minimist": "0.0.8"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"tap": "~0.4.0",
|
||||||
|
"mock-fs": "~2.2.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"mkdirp": "bin/cmd.js"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/substack/node-mkdirp/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/substack/node-mkdirp",
|
||||||
|
"_id": "mkdirp@0.5.0",
|
||||||
|
"dist": {
|
||||||
|
"shasum": "1d73076a6df986cd9344e15e71fcc05a4c9abf12",
|
||||||
|
"tarball": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz"
|
||||||
|
},
|
||||||
|
"_from": "mkdirp@~0.5.0",
|
||||||
|
"_npmVersion": "1.4.3",
|
||||||
|
"_npmUser": {
|
||||||
|
"name": "substack",
|
||||||
|
"email": "mail@substack.net"
|
||||||
|
},
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"name": "substack",
|
||||||
|
"email": "mail@substack.net"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"directories": {},
|
||||||
|
"_shasum": "1d73076a6df986cd9344e15e71fcc05a4c9abf12",
|
||||||
|
"_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
|
||||||
|
"readme": "ERROR: No README data found!"
|
||||||
|
}
|
100
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/readme.markdown
generated
vendored
Normal file
100
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/readme.markdown
generated
vendored
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
# mkdirp
|
||||||
|
|
||||||
|
Like `mkdir -p`, but in node.js!
|
||||||
|
|
||||||
|
[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)
|
||||||
|
|
||||||
|
# example
|
||||||
|
|
||||||
|
## pow.js
|
||||||
|
|
||||||
|
```js
|
||||||
|
var mkdirp = require('mkdirp');
|
||||||
|
|
||||||
|
mkdirp('/tmp/foo/bar/baz', function (err) {
|
||||||
|
if (err) console.error(err)
|
||||||
|
else console.log('pow!')
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Output
|
||||||
|
|
||||||
|
```
|
||||||
|
pow!
|
||||||
|
```
|
||||||
|
|
||||||
|
And now /tmp/foo/bar/baz exists, huzzah!
|
||||||
|
|
||||||
|
# methods
|
||||||
|
|
||||||
|
```js
|
||||||
|
var mkdirp = require('mkdirp');
|
||||||
|
```
|
||||||
|
|
||||||
|
## mkdirp(dir, opts, cb)
|
||||||
|
|
||||||
|
Create a new directory and any necessary subdirectories at `dir` with octal
|
||||||
|
permission string `opts.mode`. If `opts` is a non-object, it will be treated as
|
||||||
|
the `opts.mode`.
|
||||||
|
|
||||||
|
If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.
|
||||||
|
|
||||||
|
`cb(err, made)` fires with the error or the first directory `made`
|
||||||
|
that had to be created, if any.
|
||||||
|
|
||||||
|
You can optionally pass in an alternate `fs` implementation by passing in
|
||||||
|
`opts.fs`. Your implementation should have `opts.fs.mkdir(path, mode, cb)` and
|
||||||
|
`opts.fs.stat(path, cb)`.
|
||||||
|
|
||||||
|
## mkdirp.sync(dir, opts)
|
||||||
|
|
||||||
|
Synchronously create a new directory and any necessary subdirectories at `dir`
|
||||||
|
with octal permission string `opts.mode`. If `opts` is a non-object, it will be
|
||||||
|
treated as the `opts.mode`.
|
||||||
|
|
||||||
|
If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.
|
||||||
|
|
||||||
|
Returns the first directory that had to be created, if any.
|
||||||
|
|
||||||
|
You can optionally pass in an alternate `fs` implementation by passing in
|
||||||
|
`opts.fs`. Your implementation should have `opts.fs.mkdirSync(path, mode)` and
|
||||||
|
`opts.fs.statSync(path)`.
|
||||||
|
|
||||||
|
# usage
|
||||||
|
|
||||||
|
This package also ships with a `mkdirp` command.
|
||||||
|
|
||||||
|
```
|
||||||
|
usage: mkdirp [DIR1,DIR2..] {OPTIONS}
|
||||||
|
|
||||||
|
Create each supplied directory including any necessary parent directories that
|
||||||
|
don't yet exist.
|
||||||
|
|
||||||
|
If the directory already exists, do nothing.
|
||||||
|
|
||||||
|
OPTIONS are:
|
||||||
|
|
||||||
|
-m, --mode If a directory needs to be created, set the mode as an octal
|
||||||
|
permission string.
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
# install
|
||||||
|
|
||||||
|
With [npm](http://npmjs.org) do:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install mkdirp
|
||||||
|
```
|
||||||
|
|
||||||
|
to get the library, or
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install -g mkdirp
|
||||||
|
```
|
||||||
|
|
||||||
|
to get the command.
|
||||||
|
|
||||||
|
# license
|
||||||
|
|
||||||
|
MIT
|
38
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/chmod.js
generated
vendored
Normal file
38
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/chmod.js
generated
vendored
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
var mkdirp = require('../').mkdirp;
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
var ps = [ '', 'tmp' ];
|
||||||
|
|
||||||
|
for (var i = 0; i < 25; i++) {
|
||||||
|
var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
ps.push(dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
var file = ps.join('/');
|
||||||
|
|
||||||
|
test('chmod-pre', function (t) {
|
||||||
|
var mode = 0744
|
||||||
|
mkdirp(file, mode, function (er) {
|
||||||
|
t.ifError(er, 'should not error');
|
||||||
|
fs.stat(file, function (er, stat) {
|
||||||
|
t.ifError(er, 'should exist');
|
||||||
|
t.ok(stat && stat.isDirectory(), 'should be directory');
|
||||||
|
t.equal(stat && stat.mode & 0777, mode, 'should be 0744');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('chmod', function (t) {
|
||||||
|
var mode = 0755
|
||||||
|
mkdirp(file, mode, function (er) {
|
||||||
|
t.ifError(er, 'should not error');
|
||||||
|
fs.stat(file, function (er, stat) {
|
||||||
|
t.ifError(er, 'should exist');
|
||||||
|
t.ok(stat && stat.isDirectory(), 'should be directory');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
37
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/clobber.js
generated
vendored
Normal file
37
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/clobber.js
generated
vendored
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
var mkdirp = require('../').mkdirp;
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
var ps = [ '', 'tmp' ];
|
||||||
|
|
||||||
|
for (var i = 0; i < 25; i++) {
|
||||||
|
var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
ps.push(dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
var file = ps.join('/');
|
||||||
|
|
||||||
|
// a file in the way
|
||||||
|
var itw = ps.slice(0, 3).join('/');
|
||||||
|
|
||||||
|
|
||||||
|
test('clobber-pre', function (t) {
|
||||||
|
console.error("about to write to "+itw)
|
||||||
|
fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.');
|
||||||
|
|
||||||
|
fs.stat(itw, function (er, stat) {
|
||||||
|
t.ifError(er)
|
||||||
|
t.ok(stat && stat.isFile(), 'should be file')
|
||||||
|
t.end()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
test('clobber', function (t) {
|
||||||
|
t.plan(2);
|
||||||
|
mkdirp(file, 0755, function (err) {
|
||||||
|
t.ok(err);
|
||||||
|
t.equal(err.code, 'ENOTDIR');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
});
|
26
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/mkdirp.js
generated
vendored
Normal file
26
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/mkdirp.js
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var exists = fs.exists || path.exists;
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
test('woo', function (t) {
|
||||||
|
t.plan(5);
|
||||||
|
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
|
||||||
|
var file = '/tmp/' + [x,y,z].join('/');
|
||||||
|
|
||||||
|
mkdirp(file, 0755, function (err) {
|
||||||
|
t.ifError(err);
|
||||||
|
exists(file, function (ex) {
|
||||||
|
t.ok(ex, 'file created');
|
||||||
|
fs.stat(file, function (err, stat) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.equal(stat.mode & 0777, 0755);
|
||||||
|
t.ok(stat.isDirectory(), 'target not a directory');
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
27
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs.js
generated
vendored
Normal file
27
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs.js
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var test = require('tap').test;
|
||||||
|
var mockfs = require('mock-fs');
|
||||||
|
|
||||||
|
test('opts.fs', function (t) {
|
||||||
|
t.plan(5);
|
||||||
|
|
||||||
|
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
|
||||||
|
var file = '/beep/boop/' + [x,y,z].join('/');
|
||||||
|
var xfs = mockfs.fs();
|
||||||
|
|
||||||
|
mkdirp(file, { fs: xfs, mode: 0755 }, function (err) {
|
||||||
|
t.ifError(err);
|
||||||
|
xfs.exists(file, function (ex) {
|
||||||
|
t.ok(ex, 'created file');
|
||||||
|
xfs.stat(file, function (err, stat) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.equal(stat.mode & 0777, 0755);
|
||||||
|
t.ok(stat.isDirectory(), 'target not a directory');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
25
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs_sync.js
generated
vendored
Normal file
25
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs_sync.js
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var test = require('tap').test;
|
||||||
|
var mockfs = require('mock-fs');
|
||||||
|
|
||||||
|
test('opts.fs sync', function (t) {
|
||||||
|
t.plan(4);
|
||||||
|
|
||||||
|
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
|
||||||
|
var file = '/beep/boop/' + [x,y,z].join('/');
|
||||||
|
var xfs = mockfs.fs();
|
||||||
|
|
||||||
|
mkdirp.sync(file, { fs: xfs, mode: 0755 });
|
||||||
|
xfs.exists(file, function (ex) {
|
||||||
|
t.ok(ex, 'created file');
|
||||||
|
xfs.stat(file, function (err, stat) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.equal(stat.mode & 0777, 0755);
|
||||||
|
t.ok(stat.isDirectory(), 'target not a directory');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
30
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm.js
generated
vendored
Normal file
30
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm.js
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var exists = fs.exists || path.exists;
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
test('async perm', function (t) {
|
||||||
|
t.plan(5);
|
||||||
|
var file = '/tmp/' + (Math.random() * (1<<30)).toString(16);
|
||||||
|
|
||||||
|
mkdirp(file, 0755, function (err) {
|
||||||
|
t.ifError(err);
|
||||||
|
exists(file, function (ex) {
|
||||||
|
t.ok(ex, 'file created');
|
||||||
|
fs.stat(file, function (err, stat) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.equal(stat.mode & 0777, 0755);
|
||||||
|
t.ok(stat.isDirectory(), 'target not a directory');
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('async root perm', function (t) {
|
||||||
|
mkdirp('/tmp', 0755, function (err) {
|
||||||
|
if (err) t.fail(err);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
t.end();
|
||||||
|
});
|
34
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm_sync.js
generated
vendored
Normal file
34
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm_sync.js
generated
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var exists = fs.exists || path.exists;
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
test('sync perm', function (t) {
|
||||||
|
t.plan(4);
|
||||||
|
var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json';
|
||||||
|
|
||||||
|
mkdirp.sync(file, 0755);
|
||||||
|
exists(file, function (ex) {
|
||||||
|
t.ok(ex, 'file created');
|
||||||
|
fs.stat(file, function (err, stat) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.equal(stat.mode & 0777, 0755);
|
||||||
|
t.ok(stat.isDirectory(), 'target not a directory');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('sync root perm', function (t) {
|
||||||
|
t.plan(3);
|
||||||
|
|
||||||
|
var file = '/tmp';
|
||||||
|
mkdirp.sync(file, 0755);
|
||||||
|
exists(file, function (ex) {
|
||||||
|
t.ok(ex, 'file created');
|
||||||
|
fs.stat(file, function (err, stat) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.ok(stat.isDirectory(), 'target not a directory');
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
40
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/race.js
generated
vendored
Normal file
40
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/race.js
generated
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
var mkdirp = require('../').mkdirp;
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var exists = fs.exists || path.exists;
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
test('race', function (t) {
|
||||||
|
t.plan(6);
|
||||||
|
var ps = [ '', 'tmp' ];
|
||||||
|
|
||||||
|
for (var i = 0; i < 25; i++) {
|
||||||
|
var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
ps.push(dir);
|
||||||
|
}
|
||||||
|
var file = ps.join('/');
|
||||||
|
|
||||||
|
var res = 2;
|
||||||
|
mk(file, function () {
|
||||||
|
if (--res === 0) t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
mk(file, function () {
|
||||||
|
if (--res === 0) t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
function mk (file, cb) {
|
||||||
|
mkdirp(file, 0755, function (err) {
|
||||||
|
t.ifError(err);
|
||||||
|
exists(file, function (ex) {
|
||||||
|
t.ok(ex, 'file created');
|
||||||
|
fs.stat(file, function (err, stat) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.equal(stat.mode & 0777, 0755);
|
||||||
|
t.ok(stat.isDirectory(), 'target not a directory');
|
||||||
|
if (cb) cb();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
30
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/rel.js
generated
vendored
Normal file
30
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/rel.js
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var exists = fs.exists || path.exists;
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
test('rel', function (t) {
|
||||||
|
t.plan(5);
|
||||||
|
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
|
||||||
|
var cwd = process.cwd();
|
||||||
|
process.chdir('/tmp');
|
||||||
|
|
||||||
|
var file = [x,y,z].join('/');
|
||||||
|
|
||||||
|
mkdirp(file, 0755, function (err) {
|
||||||
|
t.ifError(err);
|
||||||
|
exists(file, function (ex) {
|
||||||
|
t.ok(ex, 'file created');
|
||||||
|
fs.stat(file, function (err, stat) {
|
||||||
|
t.ifError(err);
|
||||||
|
process.chdir(cwd);
|
||||||
|
t.equal(stat.mode & 0777, 0755);
|
||||||
|
t.ok(stat.isDirectory(), 'target not a directory');
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
25
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return.js
generated
vendored
Normal file
25
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return.js
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
test('return value', function (t) {
|
||||||
|
t.plan(4);
|
||||||
|
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
|
||||||
|
var file = '/tmp/' + [x,y,z].join('/');
|
||||||
|
|
||||||
|
// should return the first dir created.
|
||||||
|
// By this point, it would be profoundly surprising if /tmp didn't
|
||||||
|
// already exist, since every other test makes things in there.
|
||||||
|
mkdirp(file, function (err, made) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.equal(made, '/tmp/' + x);
|
||||||
|
mkdirp(file, function (err, made) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.equal(made, null);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
24
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return_sync.js
generated
vendored
Normal file
24
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return_sync.js
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
test('return value', function (t) {
|
||||||
|
t.plan(2);
|
||||||
|
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
|
||||||
|
var file = '/tmp/' + [x,y,z].join('/');
|
||||||
|
|
||||||
|
// should return the first dir created.
|
||||||
|
// By this point, it would be profoundly surprising if /tmp didn't
|
||||||
|
// already exist, since every other test makes things in there.
|
||||||
|
// Note that this will throw on failure, which will fail the test.
|
||||||
|
var made = mkdirp.sync(file);
|
||||||
|
t.equal(made, '/tmp/' + x);
|
||||||
|
|
||||||
|
// making the same file again should have no effect.
|
||||||
|
made = mkdirp.sync(file);
|
||||||
|
t.equal(made, null);
|
||||||
|
});
|
18
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/root.js
generated
vendored
Normal file
18
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/root.js
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
test('root', function (t) {
|
||||||
|
// '/' on unix, 'c:/' on windows.
|
||||||
|
var file = path.resolve('/');
|
||||||
|
|
||||||
|
mkdirp(file, 0755, function (err) {
|
||||||
|
if (err) throw err
|
||||||
|
fs.stat(file, function (er, stat) {
|
||||||
|
if (er) throw er
|
||||||
|
t.ok(stat.isDirectory(), 'target is a directory');
|
||||||
|
t.end();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
30
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/sync.js
generated
vendored
Normal file
30
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/sync.js
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var exists = fs.exists || path.exists;
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
test('sync', function (t) {
|
||||||
|
t.plan(4);
|
||||||
|
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
|
||||||
|
var file = '/tmp/' + [x,y,z].join('/');
|
||||||
|
|
||||||
|
try {
|
||||||
|
mkdirp.sync(file, 0755);
|
||||||
|
} catch (err) {
|
||||||
|
t.fail(err);
|
||||||
|
return t.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
exists(file, function (ex) {
|
||||||
|
t.ok(ex, 'file created');
|
||||||
|
fs.stat(file, function (err, stat) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.equal(stat.mode & 0777, 0755);
|
||||||
|
t.ok(stat.isDirectory(), 'target not a directory');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
26
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask.js
generated
vendored
Normal file
26
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask.js
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var exists = fs.exists || path.exists;
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
test('implicit mode from umask', function (t) {
|
||||||
|
t.plan(5);
|
||||||
|
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
|
||||||
|
var file = '/tmp/' + [x,y,z].join('/');
|
||||||
|
|
||||||
|
mkdirp(file, function (err) {
|
||||||
|
t.ifError(err);
|
||||||
|
exists(file, function (ex) {
|
||||||
|
t.ok(ex, 'file created');
|
||||||
|
fs.stat(file, function (err, stat) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.equal(stat.mode & 0777, 0777 & (~process.umask()));
|
||||||
|
t.ok(stat.isDirectory(), 'target not a directory');
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
30
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask_sync.js
generated
vendored
Normal file
30
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask_sync.js
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
var mkdirp = require('../');
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var exists = fs.exists || path.exists;
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
test('umask sync modes', function (t) {
|
||||||
|
t.plan(4);
|
||||||
|
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
|
||||||
|
|
||||||
|
var file = '/tmp/' + [x,y,z].join('/');
|
||||||
|
|
||||||
|
try {
|
||||||
|
mkdirp.sync(file);
|
||||||
|
} catch (err) {
|
||||||
|
t.fail(err);
|
||||||
|
return t.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
exists(file, function (ex) {
|
||||||
|
t.ok(ex, 'file created');
|
||||||
|
fs.stat(file, function (err, stat) {
|
||||||
|
t.ifError(err);
|
||||||
|
t.equal(stat.mode & 0777, (0777 & (~process.umask())));
|
||||||
|
t.ok(stat.isDirectory(), 'target not a directory');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/.npmignore
generated
vendored
Normal file
1
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/.npmignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
node_modules
|
23
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/LICENSE
generated
vendored
Normal file
23
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/LICENSE
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
Copyright 2009, 2010, 2011 Isaac Z. Schlueter.
|
||||||
|
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.
|
209
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/README.md
generated
vendored
Normal file
209
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/README.md
generated
vendored
Normal file
@ -0,0 +1,209 @@
|
|||||||
|
If you want to write an option parser, and have it be good, there are
|
||||||
|
two ways to do it. The Right Way, and the Wrong Way.
|
||||||
|
|
||||||
|
The Wrong Way is to sit down and write an option parser. We've all done
|
||||||
|
that.
|
||||||
|
|
||||||
|
The Right Way is to write some complex configurable program with so many
|
||||||
|
options that you go half-insane just trying to manage them all, and put
|
||||||
|
it off with duct-tape solutions until you see exactly to the core of the
|
||||||
|
problem, and finally snap and write an awesome option parser.
|
||||||
|
|
||||||
|
If you want to write an option parser, don't write an option parser.
|
||||||
|
Write a package manager, or a source control system, or a service
|
||||||
|
restarter, or an operating system. You probably won't end up with a
|
||||||
|
good one of those, but if you don't give up, and you are relentless and
|
||||||
|
diligent enough in your procrastination, you may just end up with a very
|
||||||
|
nice option parser.
|
||||||
|
|
||||||
|
## USAGE
|
||||||
|
|
||||||
|
// my-program.js
|
||||||
|
var nopt = require("nopt")
|
||||||
|
, Stream = require("stream").Stream
|
||||||
|
, path = require("path")
|
||||||
|
, knownOpts = { "foo" : [String, null]
|
||||||
|
, "bar" : [Stream, Number]
|
||||||
|
, "baz" : path
|
||||||
|
, "bloo" : [ "big", "medium", "small" ]
|
||||||
|
, "flag" : Boolean
|
||||||
|
, "pick" : Boolean
|
||||||
|
, "many" : [String, Array]
|
||||||
|
}
|
||||||
|
, shortHands = { "foofoo" : ["--foo", "Mr. Foo"]
|
||||||
|
, "b7" : ["--bar", "7"]
|
||||||
|
, "m" : ["--bloo", "medium"]
|
||||||
|
, "p" : ["--pick"]
|
||||||
|
, "f" : ["--flag"]
|
||||||
|
}
|
||||||
|
// everything is optional.
|
||||||
|
// knownOpts and shorthands default to {}
|
||||||
|
// arg list defaults to process.argv
|
||||||
|
// slice defaults to 2
|
||||||
|
, parsed = nopt(knownOpts, shortHands, process.argv, 2)
|
||||||
|
console.log(parsed)
|
||||||
|
|
||||||
|
This would give you support for any of the following:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ node my-program.js --foo "blerp" --no-flag
|
||||||
|
{ "foo" : "blerp", "flag" : false }
|
||||||
|
|
||||||
|
$ node my-program.js ---bar 7 --foo "Mr. Hand" --flag
|
||||||
|
{ bar: 7, foo: "Mr. Hand", flag: true }
|
||||||
|
|
||||||
|
$ node my-program.js --foo "blerp" -f -----p
|
||||||
|
{ foo: "blerp", flag: true, pick: true }
|
||||||
|
|
||||||
|
$ node my-program.js -fp --foofoo
|
||||||
|
{ foo: "Mr. Foo", flag: true, pick: true }
|
||||||
|
|
||||||
|
$ node my-program.js --foofoo -- -fp # -- stops the flag parsing.
|
||||||
|
{ foo: "Mr. Foo", argv: { remain: ["-fp"] } }
|
||||||
|
|
||||||
|
$ node my-program.js --blatzk -fp # unknown opts are ok.
|
||||||
|
{ blatzk: true, flag: true, pick: true }
|
||||||
|
|
||||||
|
$ node my-program.js --blatzk=1000 -fp # but you need to use = if they have a value
|
||||||
|
{ blatzk: 1000, flag: true, pick: true }
|
||||||
|
|
||||||
|
$ node my-program.js --no-blatzk -fp # unless they start with "no-"
|
||||||
|
{ blatzk: false, flag: true, pick: true }
|
||||||
|
|
||||||
|
$ node my-program.js --baz b/a/z # known paths are resolved.
|
||||||
|
{ baz: "/Users/isaacs/b/a/z" }
|
||||||
|
|
||||||
|
# if Array is one of the types, then it can take many
|
||||||
|
# values, and will always be an array. The other types provided
|
||||||
|
# specify what types are allowed in the list.
|
||||||
|
|
||||||
|
$ node my-program.js --many 1 --many null --many foo
|
||||||
|
{ many: ["1", "null", "foo"] }
|
||||||
|
|
||||||
|
$ node my-program.js --many foo
|
||||||
|
{ many: ["foo"] }
|
||||||
|
```
|
||||||
|
|
||||||
|
Read the tests at the bottom of `lib/nopt.js` for more examples of
|
||||||
|
what this puppy can do.
|
||||||
|
|
||||||
|
## Types
|
||||||
|
|
||||||
|
The following types are supported, and defined on `nopt.typeDefs`
|
||||||
|
|
||||||
|
* String: A normal string. No parsing is done.
|
||||||
|
* path: A file system path. Gets resolved against cwd if not absolute.
|
||||||
|
* url: A url. If it doesn't parse, it isn't accepted.
|
||||||
|
* Number: Must be numeric.
|
||||||
|
* Date: Must parse as a date. If it does, and `Date` is one of the options,
|
||||||
|
then it will return a Date object, not a string.
|
||||||
|
* Boolean: Must be either `true` or `false`. If an option is a boolean,
|
||||||
|
then it does not need a value, and its presence will imply `true` as
|
||||||
|
the value. To negate boolean flags, do `--no-whatever` or `--whatever
|
||||||
|
false`
|
||||||
|
* NaN: Means that the option is strictly not allowed. Any value will
|
||||||
|
fail.
|
||||||
|
* Stream: An object matching the "Stream" class in node. Valuable
|
||||||
|
for use when validating programmatically. (npm uses this to let you
|
||||||
|
supply any WriteStream on the `outfd` and `logfd` config options.)
|
||||||
|
* Array: If `Array` is specified as one of the types, then the value
|
||||||
|
will be parsed as a list of options. This means that multiple values
|
||||||
|
can be specified, and that the value will always be an array.
|
||||||
|
|
||||||
|
If a type is an array of values not on this list, then those are
|
||||||
|
considered valid values. For instance, in the example above, the
|
||||||
|
`--bloo` option can only be one of `"big"`, `"medium"`, or `"small"`,
|
||||||
|
and any other value will be rejected.
|
||||||
|
|
||||||
|
When parsing unknown fields, `"true"`, `"false"`, and `"null"` will be
|
||||||
|
interpreted as their JavaScript equivalents.
|
||||||
|
|
||||||
|
You can also mix types and values, or multiple types, in a list. For
|
||||||
|
instance `{ blah: [Number, null] }` would allow a value to be set to
|
||||||
|
either a Number or null. When types are ordered, this implies a
|
||||||
|
preference, and the first type that can be used to properly interpret
|
||||||
|
the value will be used.
|
||||||
|
|
||||||
|
To define a new type, add it to `nopt.typeDefs`. Each item in that
|
||||||
|
hash is an object with a `type` member and a `validate` method. The
|
||||||
|
`type` member is an object that matches what goes in the type list. The
|
||||||
|
`validate` method is a function that gets called with `validate(data,
|
||||||
|
key, val)`. Validate methods should assign `data[key]` to the valid
|
||||||
|
value of `val` if it can be handled properly, or return boolean
|
||||||
|
`false` if it cannot.
|
||||||
|
|
||||||
|
You can also call `nopt.clean(data, types, typeDefs)` to clean up a
|
||||||
|
config object and remove its invalid properties.
|
||||||
|
|
||||||
|
## Error Handling
|
||||||
|
|
||||||
|
By default, nopt outputs a warning to standard error when invalid
|
||||||
|
options are found. You can change this behavior by assigning a method
|
||||||
|
to `nopt.invalidHandler`. This method will be called with
|
||||||
|
the offending `nopt.invalidHandler(key, val, types)`.
|
||||||
|
|
||||||
|
If no `nopt.invalidHandler` is assigned, then it will console.error
|
||||||
|
its whining. If it is assigned to boolean `false` then the warning is
|
||||||
|
suppressed.
|
||||||
|
|
||||||
|
## Abbreviations
|
||||||
|
|
||||||
|
Yes, they are supported. If you define options like this:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
{ "foolhardyelephants" : Boolean
|
||||||
|
, "pileofmonkeys" : Boolean }
|
||||||
|
```
|
||||||
|
|
||||||
|
Then this will work:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
node program.js --foolhar --pil
|
||||||
|
node program.js --no-f --pileofmon
|
||||||
|
# etc.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Shorthands
|
||||||
|
|
||||||
|
Shorthands are a hash of shorter option names to a snippet of args that
|
||||||
|
they expand to.
|
||||||
|
|
||||||
|
If multiple one-character shorthands are all combined, and the
|
||||||
|
combination does not unambiguously match any other option or shorthand,
|
||||||
|
then they will be broken up into their constituent parts. For example:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{ "s" : ["--loglevel", "silent"]
|
||||||
|
, "g" : "--global"
|
||||||
|
, "f" : "--force"
|
||||||
|
, "p" : "--parseable"
|
||||||
|
, "l" : "--long"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm ls -sgflp
|
||||||
|
# just like doing this:
|
||||||
|
npm ls --loglevel silent --global --force --long --parseable
|
||||||
|
```
|
||||||
|
|
||||||
|
## The Rest of the args
|
||||||
|
|
||||||
|
The config object returned by nopt is given a special member called
|
||||||
|
`argv`, which is an object with the following fields:
|
||||||
|
|
||||||
|
* `remain`: The remaining args after all the parsing has occurred.
|
||||||
|
* `original`: The args as they originally appeared.
|
||||||
|
* `cooked`: The args after flags and shorthands are expanded.
|
||||||
|
|
||||||
|
## Slicing
|
||||||
|
|
||||||
|
Node programs are called with more or less the exact argv as it appears
|
||||||
|
in C land, after the v8 and node-specific options have been plucked off.
|
||||||
|
As such, `argv[0]` is always `node` and `argv[1]` is always the
|
||||||
|
JavaScript program being run.
|
||||||
|
|
||||||
|
That's usually not very useful to you. So they're sliced off by
|
||||||
|
default. If you want them, then you can pass in `0` as the last
|
||||||
|
argument, or any other number that you'd like to slice off the start of
|
||||||
|
the list.
|
54
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/bin/nopt.js
generated
vendored
Executable file
54
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/bin/nopt.js
generated
vendored
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
var nopt = require("../lib/nopt")
|
||||||
|
, path = require("path")
|
||||||
|
, types = { num: Number
|
||||||
|
, bool: Boolean
|
||||||
|
, help: Boolean
|
||||||
|
, list: Array
|
||||||
|
, "num-list": [Number, Array]
|
||||||
|
, "str-list": [String, Array]
|
||||||
|
, "bool-list": [Boolean, Array]
|
||||||
|
, str: String
|
||||||
|
, clear: Boolean
|
||||||
|
, config: Boolean
|
||||||
|
, length: Number
|
||||||
|
, file: path
|
||||||
|
}
|
||||||
|
, shorthands = { s: [ "--str", "astring" ]
|
||||||
|
, b: [ "--bool" ]
|
||||||
|
, nb: [ "--no-bool" ]
|
||||||
|
, tft: [ "--bool-list", "--no-bool-list", "--bool-list", "true" ]
|
||||||
|
, "?": ["--help"]
|
||||||
|
, h: ["--help"]
|
||||||
|
, H: ["--help"]
|
||||||
|
, n: [ "--num", "125" ]
|
||||||
|
, c: ["--config"]
|
||||||
|
, l: ["--length"]
|
||||||
|
, f: ["--file"]
|
||||||
|
}
|
||||||
|
, parsed = nopt( types
|
||||||
|
, shorthands
|
||||||
|
, process.argv
|
||||||
|
, 2 )
|
||||||
|
|
||||||
|
console.log("parsed", parsed)
|
||||||
|
|
||||||
|
if (parsed.help) {
|
||||||
|
console.log("")
|
||||||
|
console.log("nopt cli tester")
|
||||||
|
console.log("")
|
||||||
|
console.log("types")
|
||||||
|
console.log(Object.keys(types).map(function M (t) {
|
||||||
|
var type = types[t]
|
||||||
|
if (Array.isArray(type)) {
|
||||||
|
return [t, type.map(function (type) { return type.name })]
|
||||||
|
}
|
||||||
|
return [t, type && type.name]
|
||||||
|
}).reduce(function (s, i) {
|
||||||
|
s[i[0]] = i[1]
|
||||||
|
return s
|
||||||
|
}, {}))
|
||||||
|
console.log("")
|
||||||
|
console.log("shorthands")
|
||||||
|
console.log(shorthands)
|
||||||
|
}
|
30
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/examples/my-program.js
generated
vendored
Executable file
30
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/examples/my-program.js
generated
vendored
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
//process.env.DEBUG_NOPT = 1
|
||||||
|
|
||||||
|
// my-program.js
|
||||||
|
var nopt = require("../lib/nopt")
|
||||||
|
, Stream = require("stream").Stream
|
||||||
|
, path = require("path")
|
||||||
|
, knownOpts = { "foo" : [String, null]
|
||||||
|
, "bar" : [Stream, Number]
|
||||||
|
, "baz" : path
|
||||||
|
, "bloo" : [ "big", "medium", "small" ]
|
||||||
|
, "flag" : Boolean
|
||||||
|
, "pick" : Boolean
|
||||||
|
}
|
||||||
|
, shortHands = { "foofoo" : ["--foo", "Mr. Foo"]
|
||||||
|
, "b7" : ["--bar", "7"]
|
||||||
|
, "m" : ["--bloo", "medium"]
|
||||||
|
, "p" : ["--pick"]
|
||||||
|
, "f" : ["--flag", "true"]
|
||||||
|
, "g" : ["--flag"]
|
||||||
|
, "s" : "--flag"
|
||||||
|
}
|
||||||
|
// everything is optional.
|
||||||
|
// knownOpts and shorthands default to {}
|
||||||
|
// arg list defaults to process.argv
|
||||||
|
// slice defaults to 2
|
||||||
|
, parsed = nopt(knownOpts, shortHands, process.argv, 2)
|
||||||
|
|
||||||
|
console.log("parsed =\n"+ require("util").inspect(parsed))
|
414
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/lib/nopt.js
generated
vendored
Normal file
414
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/lib/nopt.js
generated
vendored
Normal file
@ -0,0 +1,414 @@
|
|||||||
|
// info about each config option.
|
||||||
|
|
||||||
|
var debug = process.env.DEBUG_NOPT || process.env.NOPT_DEBUG
|
||||||
|
? function () { console.error.apply(console, arguments) }
|
||||||
|
: function () {}
|
||||||
|
|
||||||
|
var url = require("url")
|
||||||
|
, path = require("path")
|
||||||
|
, Stream = require("stream").Stream
|
||||||
|
, abbrev = require("abbrev")
|
||||||
|
|
||||||
|
module.exports = exports = nopt
|
||||||
|
exports.clean = clean
|
||||||
|
|
||||||
|
exports.typeDefs =
|
||||||
|
{ String : { type: String, validate: validateString }
|
||||||
|
, Boolean : { type: Boolean, validate: validateBoolean }
|
||||||
|
, url : { type: url, validate: validateUrl }
|
||||||
|
, Number : { type: Number, validate: validateNumber }
|
||||||
|
, path : { type: path, validate: validatePath }
|
||||||
|
, Stream : { type: Stream, validate: validateStream }
|
||||||
|
, Date : { type: Date, validate: validateDate }
|
||||||
|
}
|
||||||
|
|
||||||
|
function nopt (types, shorthands, args, slice) {
|
||||||
|
args = args || process.argv
|
||||||
|
types = types || {}
|
||||||
|
shorthands = shorthands || {}
|
||||||
|
if (typeof slice !== "number") slice = 2
|
||||||
|
|
||||||
|
debug(types, shorthands, args, slice)
|
||||||
|
|
||||||
|
args = args.slice(slice)
|
||||||
|
var data = {}
|
||||||
|
, key
|
||||||
|
, remain = []
|
||||||
|
, cooked = args
|
||||||
|
, original = args.slice(0)
|
||||||
|
|
||||||
|
parse(args, data, remain, types, shorthands)
|
||||||
|
// now data is full
|
||||||
|
clean(data, types, exports.typeDefs)
|
||||||
|
data.argv = {remain:remain,cooked:cooked,original:original}
|
||||||
|
Object.defineProperty(data.argv, 'toString', { value: function () {
|
||||||
|
return this.original.map(JSON.stringify).join(" ")
|
||||||
|
}, enumerable: false })
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
|
function clean (data, types, typeDefs) {
|
||||||
|
typeDefs = typeDefs || exports.typeDefs
|
||||||
|
var remove = {}
|
||||||
|
, typeDefault = [false, true, null, String, Array]
|
||||||
|
|
||||||
|
Object.keys(data).forEach(function (k) {
|
||||||
|
if (k === "argv") return
|
||||||
|
var val = data[k]
|
||||||
|
, isArray = Array.isArray(val)
|
||||||
|
, type = types[k]
|
||||||
|
if (!isArray) val = [val]
|
||||||
|
if (!type) type = typeDefault
|
||||||
|
if (type === Array) type = typeDefault.concat(Array)
|
||||||
|
if (!Array.isArray(type)) type = [type]
|
||||||
|
|
||||||
|
debug("val=%j", val)
|
||||||
|
debug("types=", type)
|
||||||
|
val = val.map(function (val) {
|
||||||
|
// if it's an unknown value, then parse false/true/null/numbers/dates
|
||||||
|
if (typeof val === "string") {
|
||||||
|
debug("string %j", val)
|
||||||
|
val = val.trim()
|
||||||
|
if ((val === "null" && ~type.indexOf(null))
|
||||||
|
|| (val === "true" &&
|
||||||
|
(~type.indexOf(true) || ~type.indexOf(Boolean)))
|
||||||
|
|| (val === "false" &&
|
||||||
|
(~type.indexOf(false) || ~type.indexOf(Boolean)))) {
|
||||||
|
val = JSON.parse(val)
|
||||||
|
debug("jsonable %j", val)
|
||||||
|
} else if (~type.indexOf(Number) && !isNaN(val)) {
|
||||||
|
debug("convert to number", val)
|
||||||
|
val = +val
|
||||||
|
} else if (~type.indexOf(Date) && !isNaN(Date.parse(val))) {
|
||||||
|
debug("convert to date", val)
|
||||||
|
val = new Date(val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!types.hasOwnProperty(k)) {
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
|
||||||
|
// allow `--no-blah` to set 'blah' to null if null is allowed
|
||||||
|
if (val === false && ~type.indexOf(null) &&
|
||||||
|
!(~type.indexOf(false) || ~type.indexOf(Boolean))) {
|
||||||
|
val = null
|
||||||
|
}
|
||||||
|
|
||||||
|
var d = {}
|
||||||
|
d[k] = val
|
||||||
|
debug("prevalidated val", d, val, types[k])
|
||||||
|
if (!validate(d, k, val, types[k], typeDefs)) {
|
||||||
|
if (exports.invalidHandler) {
|
||||||
|
exports.invalidHandler(k, val, types[k], data)
|
||||||
|
} else if (exports.invalidHandler !== false) {
|
||||||
|
debug("invalid: "+k+"="+val, types[k])
|
||||||
|
}
|
||||||
|
return remove
|
||||||
|
}
|
||||||
|
debug("validated val", d, val, types[k])
|
||||||
|
return d[k]
|
||||||
|
}).filter(function (val) { return val !== remove })
|
||||||
|
|
||||||
|
if (!val.length) delete data[k]
|
||||||
|
else if (isArray) {
|
||||||
|
debug(isArray, data[k], val)
|
||||||
|
data[k] = val
|
||||||
|
} else data[k] = val[0]
|
||||||
|
|
||||||
|
debug("k=%s val=%j", k, val, data[k])
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateString (data, k, val) {
|
||||||
|
data[k] = String(val)
|
||||||
|
}
|
||||||
|
|
||||||
|
function validatePath (data, k, val) {
|
||||||
|
if (val === true) return false
|
||||||
|
if (val === null) return true
|
||||||
|
|
||||||
|
val = String(val)
|
||||||
|
var homePattern = process.platform === 'win32' ? /^~(\/|\\)/ : /^~\//
|
||||||
|
if (val.match(homePattern) && process.env.HOME) {
|
||||||
|
val = path.resolve(process.env.HOME, val.substr(2))
|
||||||
|
}
|
||||||
|
data[k] = path.resolve(String(val))
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateNumber (data, k, val) {
|
||||||
|
debug("validate Number %j %j %j", k, val, isNaN(val))
|
||||||
|
if (isNaN(val)) return false
|
||||||
|
data[k] = +val
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateDate (data, k, val) {
|
||||||
|
debug("validate Date %j %j %j", k, val, Date.parse(val))
|
||||||
|
var s = Date.parse(val)
|
||||||
|
if (isNaN(s)) return false
|
||||||
|
data[k] = new Date(val)
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateBoolean (data, k, val) {
|
||||||
|
if (val instanceof Boolean) val = val.valueOf()
|
||||||
|
else if (typeof val === "string") {
|
||||||
|
if (!isNaN(val)) val = !!(+val)
|
||||||
|
else if (val === "null" || val === "false") val = false
|
||||||
|
else val = true
|
||||||
|
} else val = !!val
|
||||||
|
data[k] = val
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateUrl (data, k, val) {
|
||||||
|
val = url.parse(String(val))
|
||||||
|
if (!val.host) return false
|
||||||
|
data[k] = val.href
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateStream (data, k, val) {
|
||||||
|
if (!(val instanceof Stream)) return false
|
||||||
|
data[k] = val
|
||||||
|
}
|
||||||
|
|
||||||
|
function validate (data, k, val, type, typeDefs) {
|
||||||
|
// arrays are lists of types.
|
||||||
|
if (Array.isArray(type)) {
|
||||||
|
for (var i = 0, l = type.length; i < l; i ++) {
|
||||||
|
if (type[i] === Array) continue
|
||||||
|
if (validate(data, k, val, type[i], typeDefs)) return true
|
||||||
|
}
|
||||||
|
delete data[k]
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// an array of anything?
|
||||||
|
if (type === Array) return true
|
||||||
|
|
||||||
|
// NaN is poisonous. Means that something is not allowed.
|
||||||
|
if (type !== type) {
|
||||||
|
debug("Poison NaN", k, val, type)
|
||||||
|
delete data[k]
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// explicit list of values
|
||||||
|
if (val === type) {
|
||||||
|
debug("Explicitly allowed %j", val)
|
||||||
|
// if (isArray) (data[k] = data[k] || []).push(val)
|
||||||
|
// else data[k] = val
|
||||||
|
data[k] = val
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// now go through the list of typeDefs, validate against each one.
|
||||||
|
var ok = false
|
||||||
|
, types = Object.keys(typeDefs)
|
||||||
|
for (var i = 0, l = types.length; i < l; i ++) {
|
||||||
|
debug("test type %j %j %j", k, val, types[i])
|
||||||
|
var t = typeDefs[types[i]]
|
||||||
|
if (t && type === t.type) {
|
||||||
|
var d = {}
|
||||||
|
ok = false !== t.validate(d, k, val)
|
||||||
|
val = d[k]
|
||||||
|
if (ok) {
|
||||||
|
// if (isArray) (data[k] = data[k] || []).push(val)
|
||||||
|
// else data[k] = val
|
||||||
|
data[k] = val
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
debug("OK? %j (%j %j %j)", ok, k, val, types[i])
|
||||||
|
|
||||||
|
if (!ok) delete data[k]
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
function parse (args, data, remain, types, shorthands) {
|
||||||
|
debug("parse", args, data, remain)
|
||||||
|
|
||||||
|
var key = null
|
||||||
|
, abbrevs = abbrev(Object.keys(types))
|
||||||
|
, shortAbbr = abbrev(Object.keys(shorthands))
|
||||||
|
|
||||||
|
for (var i = 0; i < args.length; i ++) {
|
||||||
|
var arg = args[i]
|
||||||
|
debug("arg", arg)
|
||||||
|
|
||||||
|
if (arg.match(/^-{2,}$/)) {
|
||||||
|
// done with keys.
|
||||||
|
// the rest are args.
|
||||||
|
remain.push.apply(remain, args.slice(i + 1))
|
||||||
|
args[i] = "--"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
var hadEq = false
|
||||||
|
if (arg.charAt(0) === "-" && arg.length > 1) {
|
||||||
|
if (arg.indexOf("=") !== -1) {
|
||||||
|
hadEq = true
|
||||||
|
var v = arg.split("=")
|
||||||
|
arg = v.shift()
|
||||||
|
v = v.join("=")
|
||||||
|
args.splice.apply(args, [i, 1].concat([arg, v]))
|
||||||
|
}
|
||||||
|
|
||||||
|
// see if it's a shorthand
|
||||||
|
// if so, splice and back up to re-parse it.
|
||||||
|
var shRes = resolveShort(arg, shorthands, shortAbbr, abbrevs)
|
||||||
|
debug("arg=%j shRes=%j", arg, shRes)
|
||||||
|
if (shRes) {
|
||||||
|
debug(arg, shRes)
|
||||||
|
args.splice.apply(args, [i, 1].concat(shRes))
|
||||||
|
if (arg !== shRes[0]) {
|
||||||
|
i --
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
arg = arg.replace(/^-+/, "")
|
||||||
|
var no = null
|
||||||
|
while (arg.toLowerCase().indexOf("no-") === 0) {
|
||||||
|
no = !no
|
||||||
|
arg = arg.substr(3)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (abbrevs[arg]) arg = abbrevs[arg]
|
||||||
|
|
||||||
|
var isArray = types[arg] === Array ||
|
||||||
|
Array.isArray(types[arg]) && types[arg].indexOf(Array) !== -1
|
||||||
|
|
||||||
|
// allow unknown things to be arrays if specified multiple times.
|
||||||
|
if (!types.hasOwnProperty(arg) && data.hasOwnProperty(arg)) {
|
||||||
|
if (!Array.isArray(data[arg]))
|
||||||
|
data[arg] = [data[arg]]
|
||||||
|
isArray = true
|
||||||
|
}
|
||||||
|
|
||||||
|
var val
|
||||||
|
, la = args[i + 1]
|
||||||
|
|
||||||
|
var isBool = typeof no === 'boolean' ||
|
||||||
|
types[arg] === Boolean ||
|
||||||
|
Array.isArray(types[arg]) && types[arg].indexOf(Boolean) !== -1 ||
|
||||||
|
(typeof types[arg] === 'undefined' && !hadEq) ||
|
||||||
|
(la === "false" &&
|
||||||
|
(types[arg] === null ||
|
||||||
|
Array.isArray(types[arg]) && ~types[arg].indexOf(null)))
|
||||||
|
|
||||||
|
if (isBool) {
|
||||||
|
// just set and move along
|
||||||
|
val = !no
|
||||||
|
// however, also support --bool true or --bool false
|
||||||
|
if (la === "true" || la === "false") {
|
||||||
|
val = JSON.parse(la)
|
||||||
|
la = null
|
||||||
|
if (no) val = !val
|
||||||
|
i ++
|
||||||
|
}
|
||||||
|
|
||||||
|
// also support "foo":[Boolean, "bar"] and "--foo bar"
|
||||||
|
if (Array.isArray(types[arg]) && la) {
|
||||||
|
if (~types[arg].indexOf(la)) {
|
||||||
|
// an explicit type
|
||||||
|
val = la
|
||||||
|
i ++
|
||||||
|
} else if ( la === "null" && ~types[arg].indexOf(null) ) {
|
||||||
|
// null allowed
|
||||||
|
val = null
|
||||||
|
i ++
|
||||||
|
} else if ( !la.match(/^-{2,}[^-]/) &&
|
||||||
|
!isNaN(la) &&
|
||||||
|
~types[arg].indexOf(Number) ) {
|
||||||
|
// number
|
||||||
|
val = +la
|
||||||
|
i ++
|
||||||
|
} else if ( !la.match(/^-[^-]/) && ~types[arg].indexOf(String) ) {
|
||||||
|
// string
|
||||||
|
val = la
|
||||||
|
i ++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isArray) (data[arg] = data[arg] || []).push(val)
|
||||||
|
else data[arg] = val
|
||||||
|
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if (types[arg] === String && la === undefined)
|
||||||
|
la = ""
|
||||||
|
|
||||||
|
if (la && la.match(/^-{2,}$/)) {
|
||||||
|
la = undefined
|
||||||
|
i --
|
||||||
|
}
|
||||||
|
|
||||||
|
val = la === undefined ? true : la
|
||||||
|
if (isArray) (data[arg] = data[arg] || []).push(val)
|
||||||
|
else data[arg] = val
|
||||||
|
|
||||||
|
i ++
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
remain.push(arg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function resolveShort (arg, shorthands, shortAbbr, abbrevs) {
|
||||||
|
// handle single-char shorthands glommed together, like
|
||||||
|
// npm ls -glp, but only if there is one dash, and only if
|
||||||
|
// all of the chars are single-char shorthands, and it's
|
||||||
|
// not a match to some other abbrev.
|
||||||
|
arg = arg.replace(/^-+/, '')
|
||||||
|
|
||||||
|
// if it's an exact known option, then don't go any further
|
||||||
|
if (abbrevs[arg] === arg)
|
||||||
|
return null
|
||||||
|
|
||||||
|
// if it's an exact known shortopt, same deal
|
||||||
|
if (shorthands[arg]) {
|
||||||
|
// make it an array, if it's a list of words
|
||||||
|
if (shorthands[arg] && !Array.isArray(shorthands[arg]))
|
||||||
|
shorthands[arg] = shorthands[arg].split(/\s+/)
|
||||||
|
|
||||||
|
return shorthands[arg]
|
||||||
|
}
|
||||||
|
|
||||||
|
// first check to see if this arg is a set of single-char shorthands
|
||||||
|
var singles = shorthands.___singles
|
||||||
|
if (!singles) {
|
||||||
|
singles = Object.keys(shorthands).filter(function (s) {
|
||||||
|
return s.length === 1
|
||||||
|
}).reduce(function (l,r) {
|
||||||
|
l[r] = true
|
||||||
|
return l
|
||||||
|
}, {})
|
||||||
|
shorthands.___singles = singles
|
||||||
|
debug('shorthand singles', singles)
|
||||||
|
}
|
||||||
|
|
||||||
|
var chrs = arg.split("").filter(function (c) {
|
||||||
|
return singles[c]
|
||||||
|
})
|
||||||
|
|
||||||
|
if (chrs.join("") === arg) return chrs.map(function (c) {
|
||||||
|
return shorthands[c]
|
||||||
|
}).reduce(function (l, r) {
|
||||||
|
return l.concat(r)
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
|
||||||
|
// if it's an arg abbrev, and not a literal shorthand, then prefer the arg
|
||||||
|
if (abbrevs[arg] && !shorthands[arg])
|
||||||
|
return null
|
||||||
|
|
||||||
|
// if it's an abbr for a shorthand, then use that
|
||||||
|
if (shortAbbr[arg])
|
||||||
|
arg = shortAbbr[arg]
|
||||||
|
|
||||||
|
// make it an array, if it's a list of words
|
||||||
|
if (shorthands[arg] && !Array.isArray(shorthands[arg]))
|
||||||
|
shorthands[arg] = shorthands[arg].split(/\s+/)
|
||||||
|
|
||||||
|
return shorthands[arg]
|
||||||
|
}
|
3
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/CONTRIBUTING.md
generated
vendored
Normal file
3
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/CONTRIBUTING.md
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
To get started, <a
|
||||||
|
href="http://www.clahub.com/agreements/isaacs/abbrev-js">sign the
|
||||||
|
Contributor License Agreement</a>.
|
23
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/LICENSE
generated
vendored
Normal file
23
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/LICENSE
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
Copyright 2009, 2010, 2011 Isaac Z. Schlueter.
|
||||||
|
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.
|
23
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/README.md
generated
vendored
Normal file
23
node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/README.md
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# abbrev-js
|
||||||
|
|
||||||
|
Just like [ruby's Abbrev](http://apidock.com/ruby/Abbrev).
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
var abbrev = require("abbrev");
|
||||||
|
abbrev("foo", "fool", "folding", "flop");
|
||||||
|
|
||||||
|
// returns:
|
||||||
|
{ fl: 'flop'
|
||||||
|
, flo: 'flop'
|
||||||
|
, flop: 'flop'
|
||||||
|
, fol: 'folding'
|
||||||
|
, fold: 'folding'
|
||||||
|
, foldi: 'folding'
|
||||||
|
, foldin: 'folding'
|
||||||
|
, folding: 'folding'
|
||||||
|
, foo: 'foo'
|
||||||
|
, fool: 'fool'
|
||||||
|
}
|
||||||
|
|
||||||
|
This is handy for command-line scripts, or other cases where you want to be able to accept shorthands.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user