From 6b4e7c9f7adf76bfcfb31313bb9c1294e69f7ac5 Mon Sep 17 00:00:00 2001 From: "Timothy J. Warren" Date: Wed, 28 Jan 2015 16:40:39 -0500 Subject: [PATCH] Remove sqlite3 bundled module --- node_modules/sqlite3/CHANGELOG.md | 112 - node_modules/sqlite3/LICENSE | 25 - node_modules/sqlite3/README.md | 186 - node_modules/sqlite3/appveyor.yml | 90 - node_modules/sqlite3/binding.gyp | 52 - node_modules/sqlite3/deps/common-sqlite.gypi | 56 - node_modules/sqlite3/deps/extract.py | 9 - .../deps/sqlite-autoconf-3080701.tar.gz | Bin 1998389 -> 0 bytes node_modules/sqlite3/deps/sqlite3.gyp | 100 - .../node-v11-linux-x64/node_sqlite3.node | Bin 984781 -> 0 bytes node_modules/sqlite3/lib/index.js | 1 - node_modules/sqlite3/lib/sqlite3.js | 187 - node_modules/sqlite3/lib/trace.js | 42 - .../sqlite3/node_modules/.bin/node-pre-gyp | 1 - node_modules/sqlite3/node_modules/nan/.dntrc | 30 - .../sqlite3/node_modules/nan/.nan.h.un~ | Bin 83139 -> 0 bytes .../sqlite3/node_modules/nan/CHANGELOG.md | 216 - .../sqlite3/node_modules/nan/LICENSE.md | 13 - .../sqlite3/node_modules/nan/appveyor.yml | 32 - .../sqlite3/node_modules/nan/include_dirs.js | 1 - node_modules/sqlite3/node_modules/nan/nan.h | 2412 -------- .../sqlite3/node_modules/nan/nan.h.orig | 2484 -------- .../sqlite3/node_modules/nan/package.json | 81 - .../node_modules/node-pre-gyp/CHANGELOG.md | 191 - .../sqlite3/node_modules/node-pre-gyp/LICENSE | 27 - .../node_modules/node-pre-gyp/README.md | 523 -- .../node_modules/node-pre-gyp/appveyor.yml | 31 - .../node-pre-gyp/bin/node-pre-gyp | 130 - .../node-pre-gyp/bin/node-pre-gyp.cmd | 2 - .../node_modules/node-pre-gyp/lib/build.js | 61 - .../node_modules/node-pre-gyp/lib/clean.js | 24 - .../node_modules/node-pre-gyp/lib/info.js | 40 - .../node_modules/node-pre-gyp/lib/install.js | 203 - .../node-pre-gyp/lib/node-pre-gyp.js | 194 - .../node_modules/node-pre-gyp/lib/package.js | 46 - .../node-pre-gyp/lib/pre-binding.js | 24 - .../node_modules/node-pre-gyp/lib/publish.js | 77 - .../node_modules/node-pre-gyp/lib/rebuild.js | 12 - .../node-pre-gyp/lib/reinstall.js | 12 - .../node_modules/node-pre-gyp/lib/reveal.js | 32 - .../node-pre-gyp/lib/testbinary.js | 71 - .../node-pre-gyp/lib/testpackage.js | 49 - .../node-pre-gyp/lib/unpublish.js | 41 - .../node-pre-gyp/lib/util/abi_crosswalk.json | 314 - .../node-pre-gyp/lib/util/compile.js | 80 - .../lib/util/nw-pre-gyp/index.html | 26 - .../lib/util/nw-pre-gyp/package.json | 9 - .../node-pre-gyp/lib/util/s3_setup.js | 30 - .../node-pre-gyp/lib/util/versioning.js | 209 - .../node-pre-gyp/node_modules/.bin/mkdirp | 1 - .../node-pre-gyp/node_modules/.bin/nopt | 1 - .../node-pre-gyp/node_modules/.bin/rc | 1 - .../node-pre-gyp/node_modules/.bin/rimraf | 1 - .../node-pre-gyp/node_modules/.bin/semver | 1 - .../node_modules/mkdirp/.npmignore | 2 - .../node_modules/mkdirp/.travis.yml | 5 - .../node-pre-gyp/node_modules/mkdirp/LICENSE | 21 - .../node_modules/mkdirp/bin/cmd.js | 33 - .../node_modules/mkdirp/bin/usage.txt | 12 - .../node_modules/mkdirp/examples/pow.js | 6 - .../node-pre-gyp/node_modules/mkdirp/index.js | 97 - .../mkdirp/node_modules/minimist/.travis.yml | 4 - .../mkdirp/node_modules/minimist/LICENSE | 18 - .../node_modules/minimist/example/parse.js | 2 - .../mkdirp/node_modules/minimist/index.js | 187 - .../mkdirp/node_modules/minimist/package.json | 67 - .../node_modules/minimist/readme.markdown | 73 - .../mkdirp/node_modules/minimist/test/dash.js | 24 - .../minimist/test/default_bool.js | 20 - .../node_modules/minimist/test/dotted.js | 16 - .../mkdirp/node_modules/minimist/test/long.js | 31 - .../node_modules/minimist/test/parse.js | 318 - .../minimist/test/parse_modified.js | 9 - .../node_modules/minimist/test/short.js | 67 - .../node_modules/minimist/test/whitespace.js | 8 - .../node_modules/mkdirp/package.json | 58 - .../node_modules/mkdirp/readme.markdown | 100 - .../node_modules/mkdirp/test/chmod.js | 38 - .../node_modules/mkdirp/test/clobber.js | 37 - .../node_modules/mkdirp/test/mkdirp.js | 26 - .../node_modules/mkdirp/test/opts_fs.js | 27 - .../node_modules/mkdirp/test/opts_fs_sync.js | 25 - .../node_modules/mkdirp/test/perm.js | 30 - .../node_modules/mkdirp/test/perm_sync.js | 34 - .../node_modules/mkdirp/test/race.js | 40 - .../node_modules/mkdirp/test/rel.js | 30 - .../node_modules/mkdirp/test/return.js | 25 - .../node_modules/mkdirp/test/return_sync.js | 24 - .../node_modules/mkdirp/test/root.js | 18 - .../node_modules/mkdirp/test/sync.js | 30 - .../node_modules/mkdirp/test/umask.js | 26 - .../node_modules/mkdirp/test/umask_sync.js | 30 - .../node-pre-gyp/node_modules/nopt/.npmignore | 1 - .../node-pre-gyp/node_modules/nopt/LICENSE | 23 - .../node-pre-gyp/node_modules/nopt/README.md | 209 - .../node_modules/nopt/bin/nopt.js | 54 - .../node_modules/nopt/examples/my-program.js | 30 - .../node_modules/nopt/lib/nopt.js | 414 -- .../nopt/node_modules/abbrev/CONTRIBUTING.md | 3 - .../nopt/node_modules/abbrev/LICENSE | 23 - .../nopt/node_modules/abbrev/README.md | 23 - .../nopt/node_modules/abbrev/abbrev.js | 62 - .../nopt/node_modules/abbrev/package.json | 46 - .../nopt/node_modules/abbrev/test.js | 47 - .../node_modules/nopt/package.json | 57 - .../node_modules/nopt/test/basic.js | 251 - .../node-pre-gyp/node_modules/npmlog/.npmrc | 2 - .../node-pre-gyp/node_modules/npmlog/LICENSE | 27 - .../node_modules/npmlog/README.md | 153 - .../node_modules/npmlog/example.js | 39 - .../node-pre-gyp/node_modules/npmlog/log.js | 154 - .../npmlog/node_modules/ansi/.jshintrc | 4 - .../npmlog/node_modules/ansi/.npmignore | 1 - .../npmlog/node_modules/ansi/History.md | 16 - .../npmlog/node_modules/ansi/README.md | 98 - .../node_modules/ansi/examples/beep/index.js | 16 - .../node_modules/ansi/examples/clear/index.js | 15 - .../ansi/examples/cursorPosition.js | 32 - .../ansi/examples/progress/index.js | 87 - .../npmlog/node_modules/ansi/lib/ansi.js | 405 -- .../npmlog/node_modules/ansi/lib/newlines.js | 71 - .../npmlog/node_modules/ansi/package.json | 54 - .../node_modules/npmlog/package.json | 51 - .../node_modules/npmlog/test/basic.js | 228 - .../node-pre-gyp/node_modules/rc/.npmignore | 3 - .../node_modules/rc/LICENSE.APACHE2 | 15 - .../node-pre-gyp/node_modules/rc/LICENSE.BSD | 26 - .../node-pre-gyp/node_modules/rc/LICENSE.MIT | 24 - .../node-pre-gyp/node_modules/rc/README.md | 128 - .../node-pre-gyp/node_modules/rc/browser.js | 7 - .../node-pre-gyp/node_modules/rc/index.js | 46 - .../node-pre-gyp/node_modules/rc/lib/utils.js | 97 - .../rc/node_modules/deep-extend/.npmignore | 1 - .../rc/node_modules/deep-extend/LICENSE | 20 - .../rc/node_modules/deep-extend/README.md | 52 - .../rc/node_modules/deep-extend/index.js | 90 - .../rc/node_modules/deep-extend/package.json | 59 - .../deep-extend/test/index.spec.js | 57 - .../node_modules/deep-extend/test/mocha.opts | 1 - .../node_modules/rc/node_modules/ini/LICENSE | 23 - .../rc/node_modules/ini/README.md | 79 - .../node_modules/rc/node_modules/ini/ini.js | 166 - .../rc/node_modules/ini/package.json | 50 - .../rc/node_modules/ini/test/bar.js | 23 - .../rc/node_modules/ini/test/fixtures/foo.ini | 47 - .../rc/node_modules/ini/test/foo.js | 71 - .../rc/node_modules/minimist/.travis.yml | 4 - .../rc/node_modules/minimist/LICENSE | 18 - .../rc/node_modules/minimist/example/parse.js | 2 - .../rc/node_modules/minimist/index.js | 187 - .../rc/node_modules/minimist/package.json | 67 - .../rc/node_modules/minimist/readme.markdown | 73 - .../rc/node_modules/minimist/test/bool.js | 119 - .../rc/node_modules/minimist/test/dash.js | 24 - .../minimist/test/default_bool.js | 20 - .../rc/node_modules/minimist/test/dotted.js | 22 - .../rc/node_modules/minimist/test/long.js | 31 - .../rc/node_modules/minimist/test/num.js | 36 - .../rc/node_modules/minimist/test/parse.js | 197 - .../minimist/test/parse_modified.js | 9 - .../rc/node_modules/minimist/test/short.js | 67 - .../node_modules/minimist/test/whitespace.js | 8 - .../node_modules/strip-json-comments/cli.js | 41 - .../strip-json-comments/package.json | 77 - .../strip-json-comments/readme.md | 74 - .../strip-json-comments.js | 64 - .../node-pre-gyp/node_modules/rc/package.json | 65 - .../node-pre-gyp/node_modules/rc/test/ini.js | 16 - .../node_modules/rc/test/nested-env-vars.js | 39 - .../node-pre-gyp/node_modules/rc/test/test.js | 56 - .../node_modules/request/.eslintrc | 22 - .../node_modules/request/.npmignore | 2 - .../node_modules/request/.travis.yml | 9 - .../node_modules/request/CHANGELOG.md | 375 -- .../node_modules/request/CONTRIBUTING.md | 44 - .../node-pre-gyp/node_modules/request/LICENSE | 55 - .../node_modules/request/README.md | 805 --- .../request/disabled.appveyor.yml | 36 - .../node_modules/request/index.js | 176 - .../node_modules/request/lib/cookies.js | 39 - .../node_modules/request/lib/copy.js | 10 - .../node_modules/request/lib/debug.js | 11 - .../node_modules/request/lib/helpers.js | 89 - .../request/node_modules/aws-sign2/LICENSE | 55 - .../request/node_modules/aws-sign2/README.md | 4 - .../request/node_modules/aws-sign2/index.js | 202 - .../node_modules/aws-sign2/package.json | 46 - .../request/node_modules/bl/.jshintrc | 59 - .../request/node_modules/bl/.npmignore | 1 - .../request/node_modules/bl/.travis.yml | 11 - .../request/node_modules/bl/LICENSE.md | 13 - .../request/node_modules/bl/README.md | 195 - .../request/node_modules/bl/bl.js | 216 - .../node_modules/readable-stream/.npmignore | 5 - .../bl/node_modules/readable-stream/LICENSE | 18 - .../bl/node_modules/readable-stream/README.md | 15 - .../bl/node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 982 ---- .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 386 -- .../node_modules/core-util-is/README.md | 3 - .../node_modules/core-util-is/float.patch | 604 -- .../node_modules/core-util-is/lib/util.js | 107 - .../node_modules/core-util-is/package.json | 54 - .../node_modules/core-util-is/util.js | 106 - .../node_modules/inherits/LICENSE | 16 - .../node_modules/inherits/README.md | 42 - .../node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../node_modules/inherits/package.json | 51 - .../node_modules/inherits/test.js | 25 - .../node_modules/isarray/README.md | 54 - .../node_modules/isarray/component.json | 19 - .../node_modules/isarray/index.js | 3 - .../node_modules/isarray/package.json | 54 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 221 - .../node_modules/string_decoder/package.json | 54 - .../node_modules/readable-stream/package.json | 70 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 8 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../request/node_modules/bl/package.json | 61 - .../node_modules/bl/test/basic-test.js | 541 -- .../request/node_modules/bl/test/sauce.js | 38 - .../request/node_modules/bl/test/test.js | 9 - .../request/node_modules/caseless/README.md | 45 - .../request/node_modules/caseless/index.js | 65 - .../node_modules/caseless/package.json | 53 - .../request/node_modules/caseless/test.js | 40 - .../node_modules/combined-stream/License | 19 - .../node_modules/combined-stream/Readme.md | 132 - .../combined-stream/lib/combined_stream.js | 188 - .../node_modules/delayed-stream/.npmignore | 2 - .../node_modules/delayed-stream/License | 19 - .../node_modules/delayed-stream/Makefile | 7 - .../node_modules/delayed-stream/Readme.md | 154 - .../delayed-stream/lib/delayed_stream.js | 99 - .../node_modules/delayed-stream/package.json | 42 - .../delayed-stream/test/common.js | 6 - .../integration/test-delayed-http-upload.js | 38 - .../test-delayed-stream-auto-pause.js | 21 - .../integration/test-delayed-stream-pause.js | 14 - .../test/integration/test-delayed-stream.js | 48 - .../integration/test-handle-source-errors.js | 15 - .../test/integration/test-max-data-size.js | 18 - .../test/integration/test-pipe-resumes.js | 13 - .../test/integration/test-proxy-readable.js | 13 - .../node_modules/delayed-stream/test/run.js | 7 - .../node_modules/combined-stream/package.json | 60 - .../node_modules/forever-agent/LICENSE | 55 - .../node_modules/forever-agent/README.md | 4 - .../node_modules/forever-agent/index.js | 119 - .../node_modules/forever-agent/package.json | 45 - .../request/node_modules/form-data/License | 19 - .../request/node_modules/form-data/Readme.md | 175 - .../node_modules/form-data/lib/form_data.js | 351 -- .../form-data/node_modules/async/.travis.yml | 3 - .../form-data/node_modules/async/LICENSE | 19 - .../form-data/node_modules/async/README.md | 1646 ------ .../node_modules/async/component.json | 11 - .../form-data/node_modules/async/lib/async.js | 1123 ---- .../form-data/node_modules/async/package.json | 60 - .../form-data/node_modules/mime/LICENSE | 19 - .../form-data/node_modules/mime/README.md | 66 - .../form-data/node_modules/mime/mime.js | 114 - .../form-data/node_modules/mime/package.json | 58 - .../form-data/node_modules/mime/test.js | 84 - .../node_modules/mime/types/mime.types | 1588 ----- .../node_modules/mime/types/node.types | 77 - .../node_modules/form-data/package.json | 80 - .../request/node_modules/hawk/.npmignore | 18 - .../request/node_modules/hawk/.travis.yml | 5 - .../request/node_modules/hawk/LICENSE | 24 - .../request/node_modules/hawk/Makefile | 10 - .../request/node_modules/hawk/README.md | 625 -- .../node_modules/hawk/example/usage.js | 78 - .../request/node_modules/hawk/images/hawk.png | Bin 6945 -> 0 bytes .../request/node_modules/hawk/images/logo.png | Bin 71732 -> 0 bytes .../request/node_modules/hawk/index.js | 1 - .../request/node_modules/hawk/lib/browser.js | 507 -- .../request/node_modules/hawk/lib/client.js | 371 -- .../request/node_modules/hawk/lib/crypto.js | 118 - .../request/node_modules/hawk/lib/index.js | 15 - .../request/node_modules/hawk/lib/server.js | 523 -- .../request/node_modules/hawk/lib/utils.js | 183 - .../hawk/node_modules/boom/.npmignore | 18 - .../hawk/node_modules/boom/.travis.yml | 5 - .../hawk/node_modules/boom/LICENSE | 24 - .../hawk/node_modules/boom/Makefile | 11 - .../hawk/node_modules/boom/README.md | 6 - .../hawk/node_modules/boom/images/boom.png | Bin 29479 -> 0 bytes .../hawk/node_modules/boom/index.js | 1 - .../hawk/node_modules/boom/lib/index.js | 207 - .../hawk/node_modules/boom/package.json | 64 - .../hawk/node_modules/boom/test/index.js | 245 - .../hawk/node_modules/cryptiles/.npmignore | 18 - .../hawk/node_modules/cryptiles/.travis.yml | 5 - .../hawk/node_modules/cryptiles/LICENSE | 24 - .../hawk/node_modules/cryptiles/Makefile | 11 - .../hawk/node_modules/cryptiles/README.md | 6 - .../hawk/node_modules/cryptiles/index.js | 1 - .../hawk/node_modules/cryptiles/lib/index.js | 68 - .../hawk/node_modules/cryptiles/package.json | 65 - .../hawk/node_modules/cryptiles/test/index.js | 101 - .../hawk/node_modules/hoek/.npmignore | 18 - .../hawk/node_modules/hoek/.travis.yml | 5 - .../hawk/node_modules/hoek/LICENSE | 33 - .../hawk/node_modules/hoek/Makefile | 10 - .../hawk/node_modules/hoek/README.md | 436 -- .../hawk/node_modules/hoek/images/hoek.png | Bin 37939 -> 0 bytes .../hawk/node_modules/hoek/index.js | 1 - .../hawk/node_modules/hoek/lib/escape.js | 132 - .../hawk/node_modules/hoek/lib/index.js | 585 -- .../hawk/node_modules/hoek/package.json | 70 - .../hawk/node_modules/hoek/test/escaper.js | 86 - .../hawk/node_modules/hoek/test/index.js | 1078 ---- .../node_modules/hoek/test/modules/test1.js | 1 - .../node_modules/hoek/test/modules/test2.js | 1 - .../node_modules/hoek/test/modules/test3.js | 1 - .../hawk/node_modules/sntp/.npmignore | 18 - .../hawk/node_modules/sntp/.travis.yml | 5 - .../hawk/node_modules/sntp/LICENSE | 24 - .../hawk/node_modules/sntp/Makefile | 11 - .../hawk/node_modules/sntp/README.md | 68 - .../hawk/node_modules/sntp/examples/offset.js | 16 - .../hawk/node_modules/sntp/examples/time.js | 25 - .../hawk/node_modules/sntp/index.js | 1 - .../hawk/node_modules/sntp/lib/index.js | 409 -- .../hawk/node_modules/sntp/package.json | 65 - .../hawk/node_modules/sntp/test/index.js | 359 -- .../request/node_modules/hawk/package.json | 70 - .../request/node_modules/hawk/test/browser.js | 817 --- .../request/node_modules/hawk/test/client.js | 206 - .../request/node_modules/hawk/test/crypto.js | 86 - .../request/node_modules/hawk/test/index.js | 316 - .../request/node_modules/hawk/test/message.js | 246 - .../request/node_modules/hawk/test/readme.js | 98 - .../request/node_modules/hawk/test/server.js | 686 --- .../request/node_modules/hawk/test/uri.js | 456 -- .../request/node_modules/hawk/test/utils.js | 120 - .../http-signature/.dir-locals.el | 6 - .../node_modules/http-signature/.npmignore | 7 - .../node_modules/http-signature/LICENSE | 18 - .../node_modules/http-signature/README.md | 75 - .../http-signature/http_signing.md | 296 - .../node_modules/http-signature/lib/index.js | 25 - .../node_modules/http-signature/lib/parser.js | 304 - .../node_modules/http-signature/lib/signer.js | 179 - .../node_modules/http-signature/lib/util.js | 249 - .../node_modules/http-signature/lib/verify.js | 42 - .../node_modules/asn1/.npmignore | 2 - .../http-signature/node_modules/asn1/LICENSE | 19 - .../node_modules/asn1/README.md | 50 - .../node_modules/asn1/lib/ber/errors.js | 13 - .../node_modules/asn1/lib/ber/index.js | 27 - .../node_modules/asn1/lib/ber/reader.js | 267 - .../node_modules/asn1/lib/ber/types.js | 36 - .../node_modules/asn1/lib/ber/writer.js | 317 - .../node_modules/asn1/lib/index.js | 20 - .../node_modules/asn1/package.json | 63 - .../node_modules/asn1/tst/ber/reader.test.js | 172 - .../node_modules/asn1/tst/ber/writer.test.js | 296 - .../node_modules/assert-plus/README.md | 126 - .../node_modules/assert-plus/assert.js | 196 - .../node_modules/assert-plus/package.json | 37 - .../node_modules/ctype/CHANGELOG | 71 - .../http-signature/node_modules/ctype/LICENSE | 24 - .../http-signature/node_modules/ctype/README | 82 - .../node_modules/ctype/README.old | 298 - .../http-signature/node_modules/ctype/ctf.js | 245 - .../http-signature/node_modules/ctype/ctio.js | 1485 ----- .../node_modules/ctype/ctype.js | 944 --- .../ctype/man/man3ctype/ctio.3ctype | 241 - .../node_modules/ctype/package.json | 35 - .../node_modules/ctype/tools/jsl.conf | 129 - .../node_modules/ctype/tools/jsstyle | 839 --- .../node_modules/ctype/tst/ctf/float.json | 13 - .../node_modules/ctype/tst/ctf/int.json | 13 - .../node_modules/ctype/tst/ctf/psinfo.json | 104 - .../node_modules/ctype/tst/ctf/struct.json | 19 - .../node_modules/ctype/tst/ctf/tst.fail.js | 39 - .../node_modules/ctype/tst/ctf/tst.float.js | 14 - .../node_modules/ctype/tst/ctf/tst.int.js | 14 - .../node_modules/ctype/tst/ctf/tst.psinfo.js | 17 - .../node_modules/ctype/tst/ctf/tst.struct.js | 18 - .../node_modules/ctype/tst/ctf/tst.typedef.js | 15 - .../node_modules/ctype/tst/ctf/typedef.json | 14 - .../ctype/tst/ctio/float/tst.rfloat.js | 767 --- .../ctype/tst/ctio/float/tst.wfloat.js | 753 --- .../node_modules/ctype/tst/ctio/int/tst.64.js | 638 -- .../ctype/tst/ctio/int/tst.rint.js | 101 - .../ctype/tst/ctio/int/tst.wbounds.js | 53 - .../ctype/tst/ctio/int/tst.wint.js | 92 - .../ctype/tst/ctio/uint/tst.64.js | 451 -- .../ctype/tst/ctio/uint/tst.roundtrip.js | 81 - .../ctype/tst/ctio/uint/tst.ruint.js | 95 - .../ctype/tst/ctio/uint/tst.wuint.js | 156 - .../ctype/tst/ctype/tst.basicr.js | 50 - .../ctype/tst/ctype/tst.basicw.js | 44 - .../node_modules/ctype/tst/ctype/tst.char.js | 42 - .../ctype/tst/ctype/tst.endian.js | 45 - .../ctype/tst/ctype/tst.oldwrite.js | 28 - .../ctype/tst/ctype/tst.readSize.js | 128 - .../ctype/tst/ctype/tst.structw.js | 28 - .../ctype/tst/ctype/tst.writeStruct.js | 31 - .../node_modules/http-signature/package.json | 54 - .../node_modules/json-stringify-safe/LICENSE | 27 - .../json-stringify-safe/README.md | 49 - .../json-stringify-safe/package.json | 50 - .../json-stringify-safe/stringify.js | 39 - .../node_modules/json-stringify-safe/test.js | 128 - .../node_modules/mime-types/.npmignore | 14 - .../node_modules/mime-types/.travis.yml | 12 - .../request/node_modules/mime-types/LICENSE | 22 - .../request/node_modules/mime-types/Makefile | 9 - .../request/node_modules/mime-types/README.md | 101 - .../node_modules/mime-types/SOURCES.md | 17 - .../node_modules/mime-types/component.json | 16 - .../node_modules/mime-types/lib/custom.json | 27 - .../node_modules/mime-types/lib/index.js | 75 - .../node_modules/mime-types/lib/mime.json | 3317 ----------- .../node_modules/mime-types/lib/node.json | 55 - .../node_modules/mime-types/package.json | 69 - .../request/node_modules/node-uuid/.npmignore | 2 - .../request/node_modules/node-uuid/LICENSE.md | 2 - .../request/node_modules/node-uuid/README.md | 207 - .../node-uuid/benchmark/README.md | 53 - .../node-uuid/benchmark/bench.gnu | 174 - .../node_modules/node-uuid/benchmark/bench.sh | 34 - .../node-uuid/benchmark/benchmark-native.c | 34 - .../node-uuid/benchmark/benchmark.js | 84 - .../node_modules/node-uuid/component.json | 18 - .../node_modules/node-uuid/package.json | 53 - .../node_modules/node-uuid/test/compare_v1.js | 63 - .../node_modules/node-uuid/test/test.html | 17 - .../node_modules/node-uuid/test/test.js | 228 - .../request/node_modules/node-uuid/uuid.js | 245 - .../request/node_modules/oauth-sign/LICENSE | 55 - .../request/node_modules/oauth-sign/README.md | 4 - .../request/node_modules/oauth-sign/index.js | 116 - .../node_modules/oauth-sign/package.json | 49 - .../request/node_modules/oauth-sign/test.js | 63 - .../request/node_modules/qs/.jshintignore | 1 - .../request/node_modules/qs/.jshintrc | 10 - .../request/node_modules/qs/.npmignore | 18 - .../request/node_modules/qs/.travis.yml | 4 - .../request/node_modules/qs/CHANGELOG.md | 68 - .../request/node_modules/qs/CONTRIBUTING.md | 1 - .../request/node_modules/qs/LICENSE | 28 - .../request/node_modules/qs/Makefile | 8 - .../request/node_modules/qs/README.md | 222 - .../request/node_modules/qs/index.js | 1 - .../request/node_modules/qs/lib/index.js | 15 - .../request/node_modules/qs/lib/parse.js | 157 - .../request/node_modules/qs/lib/stringify.js | 77 - .../request/node_modules/qs/lib/utils.js | 132 - .../request/node_modules/qs/package.json | 58 - .../request/node_modules/qs/test/parse.js | 413 -- .../request/node_modules/qs/test/stringify.js | 179 - .../node_modules/stringstream/.npmignore | 15 - .../node_modules/stringstream/.travis.yml | 4 - .../node_modules/stringstream/LICENSE.txt | 4 - .../node_modules/stringstream/README.md | 38 - .../node_modules/stringstream/example.js | 27 - .../node_modules/stringstream/package.json | 48 - .../node_modules/stringstream/stringstream.js | 102 - .../node_modules/tough-cookie/.jshintrc | 70 - .../node_modules/tough-cookie/.npmignore | 3 - .../node_modules/tough-cookie/.travis.yml | 8 - .../request/node_modules/tough-cookie/LICENSE | 78 - .../node_modules/tough-cookie/README.md | 412 -- .../tough-cookie/generate-pubsuffix.js | 239 - .../node_modules/tough-cookie/lib/cookie.js | 1107 ---- .../node_modules/tough-cookie/lib/memstore.js | 123 - .../tough-cookie/lib/pubsuffix.js | 69 - .../node_modules/tough-cookie/lib/store.js | 37 - .../node_modules/punycode/LICENSE-MIT.txt | 20 - .../node_modules/punycode/README.md | 176 - .../node_modules/punycode/package.json | 81 - .../node_modules/punycode/punycode.js | 530 -- .../node_modules/tough-cookie/package.json | 67 - .../tough-cookie/public-suffix.txt | 5229 ----------------- .../request/node_modules/tough-cookie/test.js | 1625 ----- .../node_modules/tunnel-agent/.jshintrc | 5 - .../request/node_modules/tunnel-agent/LICENSE | 55 - .../node_modules/tunnel-agent/README.md | 4 - .../node_modules/tunnel-agent/index.js | 236 - .../node_modules/tunnel-agent/package.json | 45 - .../node_modules/request/package.json | 82 - .../node_modules/request/release.sh | 45 - .../node_modules/request/request.js | 1761 ------ .../node-pre-gyp/node_modules/rimraf/AUTHORS | 6 - .../node-pre-gyp/node_modules/rimraf/LICENSE | 23 - .../node_modules/rimraf/README.md | 30 - .../node-pre-gyp/node_modules/rimraf/bin.js | 33 - .../node_modules/rimraf/package.json | 73 - .../node_modules/rimraf/rimraf.js | 248 - .../node_modules/rimraf/test/run.sh | 16 - .../node_modules/rimraf/test/setup.sh | 47 - .../node_modules/rimraf/test/test-async.js | 5 - .../node_modules/rimraf/test/test-sync.js | 3 - .../node_modules/semver/.npmignore | 1 - .../node-pre-gyp/node_modules/semver/LICENSE | 27 - .../node-pre-gyp/node_modules/semver/Makefile | 24 - .../node_modules/semver/README.md | 275 - .../node_modules/semver/bin/semver | 133 - .../node_modules/semver/foot.js.txt | 6 - .../node_modules/semver/head.js.txt | 2 - .../node_modules/semver/package.json | 55 - .../node_modules/semver/semver.browser.js | 1120 ---- .../node_modules/semver/semver.browser.js.gz | Bin 7595 -> 0 bytes .../node_modules/semver/semver.js | 1124 ---- .../node_modules/semver/semver.min.js | 1 - .../node_modules/semver/semver.min.js.gz | Bin 3472 -> 0 bytes .../node_modules/semver/test/amd.js | 15 - .../node_modules/semver/test/clean.js | 29 - .../node_modules/semver/test/gtr.js | 173 - .../node_modules/semver/test/index.js | 653 -- .../node_modules/semver/test/ltr.js | 181 - .../node_modules/semver/test/no-module.js | 19 - .../node_modules/tar-pack/.npmignore | 14 - .../node_modules/tar-pack/.travis.yml | 4 - .../node_modules/tar-pack/README.md | 81 - .../node_modules/tar-pack/index.js | 246 - .../tar-pack/node_modules/debug/Readme.md | 115 - .../tar-pack/node_modules/debug/debug.js | 137 - .../tar-pack/node_modules/debug/index.js | 5 - .../tar-pack/node_modules/debug/lib/debug.js | 147 - .../tar-pack/node_modules/debug/package.json | 63 - .../node_modules/fstream-ignore/.npmignore | 1 - .../node_modules/fstream-ignore/LICENSE | 27 - .../node_modules/fstream-ignore/README.md | 22 - .../fstream-ignore/example/basic.js | 13 - .../node_modules/fstream-ignore/ignore.js | 275 - .../node_modules/inherits/LICENSE | 16 - .../node_modules/inherits/README.md | 42 - .../node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../node_modules/inherits/package.json | 51 - .../node_modules/inherits/test.js | 25 - .../node_modules/minimatch/.npmignore | 1 - .../node_modules/minimatch/LICENSE | 23 - .../node_modules/minimatch/README.md | 218 - .../node_modules/minimatch/minimatch.js | 1055 ---- .../node_modules/lru-cache/.npmignore | 1 - .../node_modules/lru-cache/CONTRIBUTORS | 14 - .../minimatch/node_modules/lru-cache/LICENSE | 23 - .../node_modules/lru-cache/README.md | 97 - .../node_modules/lru-cache/lib/lru-cache.js | 252 - .../node_modules/lru-cache/package.json | 50 - .../node_modules/lru-cache/test/basic.js | 369 -- .../node_modules/lru-cache/test/foreach.js | 52 - .../lru-cache/test/memory-leak.js | 50 - .../minimatch/node_modules/sigmund/LICENSE | 27 - .../minimatch/node_modules/sigmund/README.md | 53 - .../minimatch/node_modules/sigmund/bench.js | 283 - .../node_modules/sigmund/package.json | 58 - .../minimatch/node_modules/sigmund/sigmund.js | 39 - .../node_modules/sigmund/test/basic.js | 24 - .../node_modules/minimatch/package.json | 57 - .../node_modules/minimatch/test/basic.js | 399 -- .../minimatch/test/brace-expand.js | 33 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../test/extglob-ending-with-state-char.js | 8 - .../node_modules/fstream-ignore/package.json | 54 - .../node_modules/fstream-ignore/test/.ignore | 2 - .../fstream-ignore/test/.npmignore | 1 - .../fstream-ignore/test/00-setup.js | 71 - .../node_modules/fstream-ignore/test/basic.js | 28 - .../fstream-ignore/test/common.js | 40 - .../fstream-ignore/test/ignore-most.js | 41 - .../fstream-ignore/test/nested-ignores.js | 51 - .../fstream-ignore/test/unignore-child.js | 38 - .../fstream-ignore/test/zz-cleanup.js | 10 - .../tar-pack/node_modules/fstream/.npmignore | 5 - .../tar-pack/node_modules/fstream/.travis.yml | 3 - .../tar-pack/node_modules/fstream/LICENSE | 27 - .../tar-pack/node_modules/fstream/README.md | 76 - .../fstream/examples/filter-pipe.js | 131 - .../node_modules/fstream/examples/pipe.js | 115 - .../node_modules/fstream/examples/reader.js | 54 - .../fstream/examples/symlink-write.js | 24 - .../tar-pack/node_modules/fstream/fstream.js | 31 - .../node_modules/fstream/lib/abstract.js | 85 - .../node_modules/fstream/lib/collect.js | 67 - .../node_modules/fstream/lib/dir-reader.js | 251 - .../node_modules/fstream/lib/dir-writer.js | 171 - .../node_modules/fstream/lib/file-reader.js | 147 - .../node_modules/fstream/lib/file-writer.js | 104 - .../node_modules/fstream/lib/get-type.js | 32 - .../node_modules/fstream/lib/link-reader.js | 54 - .../node_modules/fstream/lib/link-writer.js | 95 - .../node_modules/fstream/lib/proxy-reader.js | 93 - .../node_modules/fstream/lib/proxy-writer.js | 109 - .../node_modules/fstream/lib/reader.js | 262 - .../node_modules/fstream/lib/socket-reader.js | 38 - .../node_modules/fstream/lib/writer.js | 389 -- .../node_modules/graceful-fs/.npmignore | 1 - .../fstream/node_modules/graceful-fs/LICENSE | 27 - .../node_modules/graceful-fs/README.md | 36 - .../fstream/node_modules/graceful-fs/fs.js | 11 - .../node_modules/graceful-fs/graceful-fs.js | 158 - .../node_modules/graceful-fs/package.json | 71 - .../node_modules/graceful-fs/polyfills.js | 255 - .../node_modules/graceful-fs/test/max-open.js | 69 - .../node_modules/graceful-fs/test/open.js | 39 - .../graceful-fs/test/readdir-sort.js | 20 - .../graceful-fs/test/write-then-read.js | 45 - .../fstream/node_modules/inherits/LICENSE | 16 - .../fstream/node_modules/inherits/README.md | 42 - .../fstream/node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../node_modules/inherits/package.json | 51 - .../fstream/node_modules/inherits/test.js | 25 - .../node_modules/fstream/package.json | 57 - .../node_modules/graceful-fs/.npmignore | 1 - .../tar-pack/node_modules/graceful-fs/LICENSE | 27 - .../node_modules/graceful-fs/README.md | 33 - .../node_modules/graceful-fs/graceful-fs.js | 442 -- .../node_modules/graceful-fs/package.json | 65 - .../node_modules/graceful-fs/test/open.js | 46 - .../node_modules/graceful-fs/test/ulimit.js | 158 - .../tar-pack/node_modules/once/LICENSE | 27 - .../tar-pack/node_modules/once/README.md | 33 - .../tar-pack/node_modules/once/once.js | 19 - .../tar-pack/node_modules/once/package.json | 56 - .../tar-pack/node_modules/once/test/once.js | 18 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 982 ---- .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 386 -- .../node_modules/core-util-is/README.md | 3 - .../node_modules/core-util-is/float.patch | 604 -- .../node_modules/core-util-is/lib/util.js | 107 - .../node_modules/core-util-is/package.json | 54 - .../node_modules/core-util-is/util.js | 106 - .../node_modules/inherits/LICENSE | 16 - .../node_modules/inherits/README.md | 42 - .../node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../node_modules/inherits/package.json | 51 - .../node_modules/inherits/test.js | 25 - .../node_modules/isarray/README.md | 54 - .../node_modules/isarray/component.json | 19 - .../node_modules/isarray/index.js | 3 - .../node_modules/isarray/package.json | 54 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 221 - .../node_modules/string_decoder/package.json | 54 - .../node_modules/readable-stream/package.json | 70 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 8 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../tar-pack/node_modules/tar/.npmignore | 5 - .../tar-pack/node_modules/tar/.travis.yml | 3 - .../tar-pack/node_modules/tar/LICENCE | 25 - .../tar-pack/node_modules/tar/README.md | 48 - .../node_modules/tar/examples/extracter.js | 11 - .../node_modules/tar/examples/packer.js | 10 - .../node_modules/tar/examples/reader.js | 36 - .../node_modules/tar/lib/buffer-entry.js | 30 - .../node_modules/tar/lib/entry-writer.js | 169 - .../tar-pack/node_modules/tar/lib/entry.js | 213 - .../tar/lib/extended-header-writer.js | 191 - .../node_modules/tar/lib/extended-header.js | 140 - .../tar-pack/node_modules/tar/lib/extract.js | 78 - .../tar/lib/global-header-writer.js | 14 - .../tar-pack/node_modules/tar/lib/header.js | 385 -- .../tar-pack/node_modules/tar/lib/pack.js | 231 - .../tar-pack/node_modules/tar/lib/parse.js | 271 - .../tar/node_modules/block-stream/LICENCE | 25 - .../tar/node_modules/block-stream/README.md | 14 - .../block-stream/bench/block-stream-pause.js | 70 - .../block-stream/bench/block-stream.js | 68 - .../block-stream/bench/dropper-pause.js | 70 - .../block-stream/bench/dropper.js | 68 - .../node_modules/block-stream/block-stream.js | 209 - .../node_modules/block-stream/package.json | 54 - .../node_modules/block-stream/test/basic.js | 27 - .../block-stream/test/nopad-thorough.js | 68 - .../node_modules/block-stream/test/nopad.js | 57 - .../block-stream/test/pause-resume.js | 73 - .../block-stream/test/thorough.js | 68 - .../block-stream/test/two-stream.js | 59 - .../tar/node_modules/inherits/LICENSE | 16 - .../tar/node_modules/inherits/README.md | 42 - .../tar/node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../tar/node_modules/inherits/package.json | 51 - .../tar/node_modules/inherits/test.js | 25 - .../tar-pack/node_modules/tar/package.json | 54 - .../tar-pack/node_modules/tar/tar.js | 173 - .../tar/test/00-setup-fixtures.js | 53 - .../tar-pack/node_modules/tar/test/extract.js | 367 -- .../node_modules/tar/test/fixtures.tgz | Bin 19205 -> 0 bytes .../tar-pack/node_modules/tar/test/header.js | 183 - .../tar/test/pack-no-proprietary.js | 854 --- .../tar-pack/node_modules/tar/test/pack.js | 897 --- .../tar-pack/node_modules/tar/test/parse.js | 359 -- .../node_modules/tar/test/zz-cleanup.js | 20 - .../tar-pack/node_modules/uid-number/LICENCE | 25 - .../node_modules/uid-number/README.md | 17 - .../node_modules/uid-number/get-uid-gid.js | 24 - .../node_modules/uid-number/package.json | 45 - .../node_modules/uid-number/uid-number.js | 54 - .../node_modules/tar-pack/package.json | 58 - .../tar-pack/test/fixtures/packed-file.txt | 1 - .../tar-pack/test/fixtures/packed.tar | Bin 3584 -> 0 bytes .../tar-pack/test/fixtures/packed.tar.gz | Bin 152 -> 0 bytes .../tar-pack/test/fixtures/to-pack/bar.txt | 1 - .../tar-pack/test/fixtures/to-pack/foo.txt | 1 - .../node_modules/tar-pack/test/index.js | 67 - .../node-pre-gyp/node_modules/tar/.npmignore | 5 - .../node-pre-gyp/node_modules/tar/.travis.yml | 4 - .../node-pre-gyp/node_modules/tar/LICENCE | 25 - .../node-pre-gyp/node_modules/tar/README.md | 48 - .../node_modules/tar/examples/extracter.js | 19 - .../node_modules/tar/examples/packer.js | 24 - .../node_modules/tar/examples/reader.js | 36 - .../node_modules/tar/lib/buffer-entry.js | 30 - .../node_modules/tar/lib/entry-writer.js | 169 - .../node_modules/tar/lib/entry.js | 213 - .../tar/lib/extended-header-writer.js | 191 - .../node_modules/tar/lib/extended-header.js | 140 - .../node_modules/tar/lib/extract.js | 82 - .../tar/lib/global-header-writer.js | 14 - .../node_modules/tar/lib/header.js | 385 -- .../node-pre-gyp/node_modules/tar/lib/pack.js | 231 - .../node_modules/tar/lib/parse.js | 271 - .../tar/node_modules/block-stream/LICENCE | 25 - .../tar/node_modules/block-stream/README.md | 14 - .../block-stream/bench/block-stream-pause.js | 70 - .../block-stream/bench/block-stream.js | 68 - .../block-stream/bench/dropper-pause.js | 70 - .../block-stream/bench/dropper.js | 68 - .../node_modules/block-stream/block-stream.js | 209 - .../node_modules/block-stream/package.json | 54 - .../node_modules/block-stream/test/basic.js | 27 - .../block-stream/test/nopad-thorough.js | 68 - .../node_modules/block-stream/test/nopad.js | 57 - .../block-stream/test/pause-resume.js | 73 - .../block-stream/test/thorough.js | 68 - .../block-stream/test/two-stream.js | 59 - .../tar/node_modules/fstream/.npmignore | 5 - .../tar/node_modules/fstream/.travis.yml | 3 - .../tar/node_modules/fstream/LICENSE | 27 - .../tar/node_modules/fstream/README.md | 76 - .../fstream/examples/filter-pipe.js | 131 - .../tar/node_modules/fstream/examples/pipe.js | 115 - .../node_modules/fstream/examples/reader.js | 54 - .../fstream/examples/symlink-write.js | 24 - .../tar/node_modules/fstream/fstream.js | 31 - .../tar/node_modules/fstream/lib/abstract.js | 85 - .../tar/node_modules/fstream/lib/collect.js | 67 - .../node_modules/fstream/lib/dir-reader.js | 251 - .../node_modules/fstream/lib/dir-writer.js | 171 - .../node_modules/fstream/lib/file-reader.js | 147 - .../node_modules/fstream/lib/file-writer.js | 104 - .../tar/node_modules/fstream/lib/get-type.js | 32 - .../node_modules/fstream/lib/link-reader.js | 54 - .../node_modules/fstream/lib/link-writer.js | 95 - .../node_modules/fstream/lib/proxy-reader.js | 93 - .../node_modules/fstream/lib/proxy-writer.js | 109 - .../tar/node_modules/fstream/lib/reader.js | 262 - .../node_modules/fstream/lib/socket-reader.js | 38 - .../tar/node_modules/fstream/lib/writer.js | 392 -- .../node_modules/graceful-fs/.npmignore | 1 - .../fstream/node_modules/graceful-fs/LICENSE | 27 - .../node_modules/graceful-fs/README.md | 36 - .../fstream/node_modules/graceful-fs/fs.js | 11 - .../node_modules/graceful-fs/graceful-fs.js | 158 - .../node_modules/graceful-fs/package.json | 71 - .../node_modules/graceful-fs/polyfills.js | 255 - .../node_modules/graceful-fs/test/max-open.js | 69 - .../node_modules/graceful-fs/test/open.js | 39 - .../graceful-fs/test/readdir-sort.js | 20 - .../graceful-fs/test/write-then-read.js | 45 - .../tar/node_modules/fstream/package.json | 57 - .../tar/node_modules/inherits/LICENSE | 16 - .../tar/node_modules/inherits/README.md | 42 - .../tar/node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../tar/node_modules/inherits/package.json | 51 - .../tar/node_modules/inherits/test.js | 25 - .../node_modules/tar/package.json | 57 - .../node-pre-gyp/node_modules/tar/tar.js | 173 - .../tar/test/00-setup-fixtures.js | 53 - .../node_modules/tar/test/extract-move.js | 132 - .../node_modules/tar/test/extract.js | 367 -- .../node_modules/tar/test/fixtures.tgz | Bin 19352 -> 0 bytes .../node_modules/tar/test/header.js | 183 - .../tar/test/pack-no-proprietary.js | 886 --- .../node_modules/tar/test/pack.js | 934 --- .../node_modules/tar/test/parse.js | 359 -- .../node_modules/tar/test/zz-cleanup.js | 20 - .../node_modules/node-pre-gyp/package.json | 72 - node_modules/sqlite3/package.json | 145 - node_modules/sqlite3/sqlite3.js | 1 - node_modules/sqlite3/src/async.h | 89 - node_modules/sqlite3/src/database.cc | 673 --- node_modules/sqlite3/src/database.h | 189 - node_modules/sqlite3/src/gcc-preinclude.h | 4 - node_modules/sqlite3/src/macros.h | 150 - node_modules/sqlite3/src/node_sqlite3.cc | 107 - node_modules/sqlite3/src/statement.cc | 900 --- node_modules/sqlite3/src/statement.h | 249 - node_modules/sqlite3/src/threading.h | 48 - 822 files changed, 103995 deletions(-) delete mode 100644 node_modules/sqlite3/CHANGELOG.md delete mode 100644 node_modules/sqlite3/LICENSE delete mode 100644 node_modules/sqlite3/README.md delete mode 100644 node_modules/sqlite3/appveyor.yml delete mode 100644 node_modules/sqlite3/binding.gyp delete mode 100644 node_modules/sqlite3/deps/common-sqlite.gypi delete mode 100644 node_modules/sqlite3/deps/extract.py delete mode 100644 node_modules/sqlite3/deps/sqlite-autoconf-3080701.tar.gz delete mode 100755 node_modules/sqlite3/deps/sqlite3.gyp delete mode 100755 node_modules/sqlite3/lib/binding/node-v11-linux-x64/node_sqlite3.node delete mode 100644 node_modules/sqlite3/lib/index.js delete mode 100644 node_modules/sqlite3/lib/sqlite3.js delete mode 100644 node_modules/sqlite3/lib/trace.js delete mode 120000 node_modules/sqlite3/node_modules/.bin/node-pre-gyp delete mode 100644 node_modules/sqlite3/node_modules/nan/.dntrc delete mode 100644 node_modules/sqlite3/node_modules/nan/.nan.h.un~ delete mode 100644 node_modules/sqlite3/node_modules/nan/CHANGELOG.md delete mode 100644 node_modules/sqlite3/node_modules/nan/LICENSE.md delete mode 100644 node_modules/sqlite3/node_modules/nan/appveyor.yml delete mode 100644 node_modules/sqlite3/node_modules/nan/include_dirs.js delete mode 100644 node_modules/sqlite3/node_modules/nan/nan.h delete mode 100644 node_modules/sqlite3/node_modules/nan/nan.h.orig delete mode 100644 node_modules/sqlite3/node_modules/nan/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/CHANGELOG.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/appveyor.yml delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/build.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/clean.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/info.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/install.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/node-pre-gyp.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/package.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/pre-binding.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/publish.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/rebuild.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/reinstall.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/reveal.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/testbinary.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/testpackage.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/unpublish.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/compile.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/s3_setup.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/versioning.js delete mode 120000 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/mkdirp delete mode 120000 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/nopt delete mode 120000 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rc delete mode 120000 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rimraf delete mode 120000 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/semver delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/LICENSE delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/cmd.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/usage.txt delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/examples/pow.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/example/parse.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/readme.markdown delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dash.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/default_bool.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dotted.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/long.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/short.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/whitespace.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/readme.markdown delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/chmod.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/clobber.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/mkdirp.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs_sync.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm_sync.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/race.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/rel.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return_sync.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/root.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/sync.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask_sync.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/README.md delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/bin/nopt.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/examples/my-program.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/lib/nopt.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/CONTRIBUTING.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/abbrev.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/test/basic.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/.npmrc delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/example.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/log.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/.jshintrc delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/History.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/README.md delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/beep/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/clear/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/cursorPosition.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/progress/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/lib/ansi.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/lib/newlines.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/test/basic.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/LICENSE.APACHE2 delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/LICENSE.BSD delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/LICENSE.MIT delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/browser.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/lib/utils.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/test/index.spec.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/test/mocha.opts delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/ini.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/bar.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/fixtures/foo.ini delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/foo.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/example/parse.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/readme.markdown delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/bool.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dash.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/default_bool.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dotted.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/long.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/num.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse_modified.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/short.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/whitespace.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/cli.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/readme.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/ini.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/nested-env-vars.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.eslintrc delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/CHANGELOG.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/CONTRIBUTING.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/disabled.appveyor.yml delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/cookies.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/copy.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/debug.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/helpers.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.jshintrc delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/LICENSE.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/bl.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/util.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/basic-test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/sauce.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/License delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/Readme.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/lib/combined_stream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/common.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/run.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/License delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/Readme.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/form_data.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/component.json delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/mime/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/mime/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/mime/mime.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/mime/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/mime/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/mime/types/mime.types delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/mime/types/node.types delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/.npmignore delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/.travis.yml delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/LICENSE delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/Makefile delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/README.md delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/example/usage.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/images/hawk.png delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/images/logo.png delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/browser.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/client.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/crypto.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/server.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/utils.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/Makefile delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/README.md delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/package.json delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/README.md delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/README.md delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/package.json delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/package.json delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/browser.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/client.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/crypto.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/message.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/readme.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/server.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/uri.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/utils.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/.dir-locals.el delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/http_signing.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/parser.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/signer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/util.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/verify.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/README delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/stringify.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/Makefile delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/SOURCES.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/component.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/lib/custom.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/lib/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/lib/mime.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/lib/node.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/LICENSE.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.sh delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/component.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/compare_v1.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.html delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/uuid.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.jshintignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.jshintrc delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CHANGELOG.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CONTRIBUTING.md delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/Makefile delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/index.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/parse.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/stringify.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/utils.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/package.json delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/parse.js delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/stringify.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/LICENSE.txt delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/example.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/stringstream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.jshintrc delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/cookie.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/memstore.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/store.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/public-suffix.txt delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/.jshintrc delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/package.json delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/package.json delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/release.sh delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/request.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/AUTHORS delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/README.md delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/bin.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/rimraf.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/run.sh delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/setup.sh delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/test-async.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/test-sync.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/Makefile delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/README.md delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/bin/semver delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/foot.js.txt delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/head.js.txt delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.browser.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.browser.js.gz delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.min.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.min.js.gz delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/amd.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/clean.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/gtr.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/ltr.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/no-module.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/Readme.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/debug.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/lib/debug.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/example/basic.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/ignore.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/minimatch.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/basic.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/foreach.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/bench.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/sigmund.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/test/basic.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/basic.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/brace-expand.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/caching.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/defaults.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/extglob-ending-with-state-char.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/.ignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/00-setup.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/basic.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/common.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/ignore-most.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/nested-ignores.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/unignore-child.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/zz-cleanup.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/filter-pipe.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/pipe.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/symlink-write.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/fstream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/abstract.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/collect.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/get-type.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/socket-reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/fs.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/polyfills.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/max-open.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/open.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/graceful-fs.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/test/open.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/test/ulimit.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/once.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/test/once.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/duplex.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/float.patch delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/lib/util.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/util.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/component.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/passthrough.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/readable.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/transform.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/writable.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/LICENCE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/extracter.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/packer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/buffer-entry.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/entry-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/entry.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extended-header-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extended-header.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extract.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/global-header-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/header.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/pack.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/parse.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/LICENCE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/block-stream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/dropper.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/block-stream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/basic.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/nopad.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/pause-resume.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/thorough.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/two-stream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/inherits.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/tar.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/00-setup-fixtures.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/extract.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/fixtures.tgz delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/header.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/pack-no-proprietary.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/pack.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/parse.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/zz-cleanup.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/LICENCE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/README.md delete mode 100755 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/get-uid-gid.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/uid-number.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed-file.txt delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed.tar delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed.tar.gz delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/bar.txt delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/foo.txt delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/index.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/LICENCE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/extracter.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/packer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/buffer-entry.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/entry-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/entry.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extract.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/global-header-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/header.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/pack.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/parse.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/LICENCE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/block-stream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/dropper.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/block-stream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/basic.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/nopad.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/pause-resume.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/thorough.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/two-stream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/.travis.yml delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/filter-pipe.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/pipe.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/symlink-write.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/fstream.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/abstract.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/collect.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/get-type.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/socket-reader.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/writer.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/fs.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/max-open.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/LICENSE delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/README.md delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/test.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/package.json delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/tar.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/00-setup-fixtures.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/extract-move.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/extract.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/fixtures.tgz delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/header.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/pack-no-proprietary.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/pack.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/parse.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/zz-cleanup.js delete mode 100644 node_modules/sqlite3/node_modules/node-pre-gyp/package.json delete mode 100644 node_modules/sqlite3/package.json delete mode 100644 node_modules/sqlite3/sqlite3.js delete mode 100644 node_modules/sqlite3/src/async.h delete mode 100644 node_modules/sqlite3/src/database.cc delete mode 100644 node_modules/sqlite3/src/database.h delete mode 100644 node_modules/sqlite3/src/gcc-preinclude.h delete mode 100644 node_modules/sqlite3/src/macros.h delete mode 100644 node_modules/sqlite3/src/node_sqlite3.cc delete mode 100644 node_modules/sqlite3/src/statement.cc delete mode 100644 node_modules/sqlite3/src/statement.h delete mode 100644 node_modules/sqlite3/src/threading.h diff --git a/node_modules/sqlite3/CHANGELOG.md b/node_modules/sqlite3/CHANGELOG.md deleted file mode 100644 index cc98230..0000000 --- a/node_modules/sqlite3/CHANGELOG.md +++ /dev/null @@ -1,112 +0,0 @@ -# Changelog - -## 3.0.4 - - - Upgraded node-pre-gyp@0.6.1 - -## 3.0.3 - - - Upgraded to node-pre-gyp@0.6.0 which should fix crashes against node v0.11.14 - - Now providing binaries against Visual Studio 2014 (pass --toolset=v140) and use binaries from https://github.com/mapbox/node-cpp11 - -## 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 - - diff --git a/node_modules/sqlite3/LICENSE b/node_modules/sqlite3/LICENSE deleted file mode 100644 index 6c4ce40..0000000 --- a/node_modules/sqlite3/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -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. \ No newline at end of file diff --git a/node_modules/sqlite3/README.md b/node_modules/sqlite3/README.md deleted file mode 100644 index 90a9904..0000000 --- a/node_modules/sqlite3/README.md +++ /dev/null @@ -1,186 +0,0 @@ -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). diff --git a/node_modules/sqlite3/appveyor.yml b/node_modules/sqlite3/appveyor.yml deleted file mode 100644 index 6736af1..0000000 --- a/node_modules/sqlite3/appveyor.yml +++ /dev/null @@ -1,90 +0,0 @@ -environment: - node_pre_gyp_accessKeyId: - secure: 7DrSVc5eIGtmMcki5H+iRft+Tk3MJTwDBQEUuJHWaQ4= - node_pre_gyp_secretAccessKey: - secure: 1amwJJw9fu0j6dXnc5KsAQbSYf7Cjw/dapT6OZWABa6nc52grkKeLQ+DGaOfQz8i - matrix: - - nodejs_version: 0.10.32 - nw_version: 0.8.6 - PLATFORM: x86 - msvs_toolset: 12 - - nodejs_version: 0.10.32 - nw_version: 0.8.6 - PLATFORM: x64 - msvs_toolset: 12 - - nodejs_version: 0.11.13 - nw_version: 0.10.5 - PLATFORM: x86 - msvs_toolset: 12 - - nodejs_version: 0.11.13 - nw_version: 0.10.5 - PLATFORM: x64 - msvs_toolset: 12 - - nodejs_version: 0.11.13 - nw_version: 0.10.5 - PLATFORM: x86 - msvs_toolset: 12 - BUILD_ARGS: --target=0.11.14 - - nodejs_version: 0.11.13 - nw_version: 0.10.5 - PLATFORM: x64 - msvs_toolset: 12 - BUILD_ARGS: --target=0.11.14 - # custom 64 bit visual studio 2014 builds - - nodejs_version: 0.10.33 - PLATFORM: x64 - msvs_toolset: 14 - BUILD_ARGS: --dist-url=https://s3.amazonaws.com/mapbox/node-cpp11 --toolset=v140 - - nodejs_version: 0.11.14 - PLATFORM: x64 - msvs_toolset: 14 - BUILD_ARGS: --dist-url=https://s3.amazonaws.com/mapbox/node-cpp11 --toolset=v140 - -os: Visual Studio 2014 CTP4 - -install: - # add local node to path (since we install it for msvs_toolset == 14) - - SET PATH=%CD%;%PATH%; - # add local node-pre-gyp dir to path - - SET PATH=node_modules\.bin;%PATH% - # use 64 bit python if platform is 64 bit - - if "%PLATFORM%" == "x64" set PATH=C:\Python27-x64;%PATH% - # install node version per visual studio toolset - - if "%msvs_toolset%" == "12" powershell Install-Product node $env:nodejs_version $env:Platform - - if "%msvs_toolset%" == "14" powershell Write-Output "fetching https://mapbox.s3.amazonaws.com/node-cpp11/v$env:nodejs_version/$env:Platform/node.exe" - - if "%msvs_toolset%" == "14" powershell Start-FileDownload "https://mapbox.s3.amazonaws.com/node-cpp11/v$env:nodejs_version/$env:Platform/node.exe" - # only needed if not using 'os: Visual Studio 2014 CTP4' - #- if "%msvs_toolset%" == "14" powershell Write-Output "https://mapbox.s3.amazonaws.com/node-cpp11/vcredist_$env:Platform.exe" - #- if "%msvs_toolset%" == "14" powershell Start-FileDownload "https://mapbox.s3.amazonaws.com/node-cpp11/vcredist_$env:Platform.exe" - #- if "%msvs_toolset%" == "14" .\vcredist_%platform%.exe /q /norestart - - node -v - - node -e "console.log(process.argv,process.execPath)" - - npm -v - # upgrade node-gyp to support --msvs_version=2013 - - npm install node-gyp - # clear out node-gyp header cache - - if "%msvs_toolset%" == "14" rd /s /q %USERPROFILE%\.node-gyp - - SET PATH=C:\Program Files (x86)\MSBuild\%msvs_toolset%.0\bin;%PATH% - - SET PATH=C:\Program Files (x86)\Microsoft Visual Studio %msvs_toolset%.0\VC\bin;%PATH% - - if %platform% == x64 CALL "C:\Program Files (x86)\Microsoft Visual Studio %msvs_toolset%.0\VC\vcvarsall.bat" amd64 - - if %platform% == x86 CALL "C:\Program Files (x86)\Microsoft Visual Studio %msvs_toolset%.0\VC\vcvarsall.bat" amd64_x86 - - npm install --build-from-source --msvs_version=2013 %BUILD_ARGS% --loglevel=http - - node_modules\.bin\node-pre-gyp reveal module --silent > module.txt - - SET /p MODULE= node_path.txt - - SET /p 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 z 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�(PIq#r8epchPW2S5kgjj7JuLSBhwI2Pxc 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 |ahq^T30(jA6mfm($cENW7-s_e)-C`DOhuptO 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

}=y`h6 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 z

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ðh@6eOZtfI zRP&BoW67)UW0PHd(2FwRxx!5|a#=MipW55pek}oD;ofM5iloyc%>@LmG&u~hj`Q+a zpQV1@O2p$BXokn#*dkzaxDd+2XSY`=A1B3NwZT9Xa<}7jT(5>lG(Gonlp!Ow_cCgrA)%R3Hk=T_BE6g$7H0>*!6^#B(ESic@%^~zyDx;J~lVONIL)lL?#%-TcL4&n1_gu-kBA>Jx@Kpt zNb+=)*gD~QyHDI)oJ=`MBH9v=B;`b^)`DshYXZ(7HD$HWy^oHB0{Z!e){%AY;W`{3 z-8*=>x4YfPilw7DSNt0yZcKJ|2D$11jI>h|7>&-lG?fVrT$9t{+z>6b z8=oqnlwxgh5S!)*1C;3*9@hDI1l8T>_$aG52KKOFe4Jdrrq{DcYe8r!$c!h&7{tG` zQ9h{pb~sdk3<$pHmhPvM_b~7OMdnq0g|o29J74sU`u4AvTf2MqkKI=Xy`!%E^Qe2c zx3%2`a^JKx(=%VOPTlFWL9I2PY@Hf;zSG&@KVeZjoyWcyWIo?L9~aZC(|N+r9cAcw z>2!XqR=I@P=#95|E}qk?s$V>lw#<4FP6ubB`s^y)Ag&$?$Vhh$7Z$@Am0!99*eQt} zG4lmZi~%Hp5ze7T$aENo>1n|b@~4?mRde#cMg)^Ph= zrYBUqV^ZfnU%EZKnCO&%eAq}0@q)rGs@5Yi*AQ(0LpGBA!Eyg+3v4&XuMZE+K78s5 z;LIpc*_HHBs3pQ`?|GIf-S;5E7)3iBxv6Av(j7Q`w84Mg5`ip4T=BHk=cg3$pOP7? zG5@(~rp0KBI4RmVBc_?4kXgmxbjx^b^KY~Q0CAO0TncHBLs^aG{)4fS1T~F5Mg=d< z2wfDi2mrf}R=l62ONn5xH`fNq%6I-es?Z||=M0KXUqL?R_Yr->M}A{{y`3CqlUas# zf%cDz=M(ZdmT?`W`2|R2lbdON{?Xa6s8%-G_d!e=v){NlLvbo0ujaTgJQ{$^Icqdc zz;^?pl`E@eB*L5IrkF#n%z06e?H}CR*=3FqHu@QJ*`OeIo?jZdt}OAQGha-xP+ID~ zB%ebWw#RC8Sg2)WWVbPZhyX@7T3-mK*W6O@Akg4j@L%+^Bo;Q-Z7sOsHaSU9h81bG zOn%>a(WNiM49C8bC1$k*Qfk)6d=J~pgLW*@M(JLLZVae~4#pykhXOMEHXDp*y8-wn zr3E-inG=r+3f#lAUmLdxgr>z+iMwE!L;ZC0sAMBoRLQ2dOb`?oeQ)V>@R4GEhXtdq z8%Z8Ei6w1FzQ_hRz}dpV@Y^hSJ9eXm3weRN7K?Vm#rE0CF#-rrmfGciK)wP7U|bl< zbGnSTOnCBkDUFPd-R^j{_EEHfi+l(L<**EH-I2WgBooQI?kIPX+mBb7pj@j+WGVhyZ@-CE_*B*v^ zIz>bu5S#$Ah!&}YntC8o^I~GR2#K=H4gCznFD|YlUXLlR@_aU#�>#yQIt2RN@y*=>xMfd} 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

  • PuNk7_xM0&%`TW6jNtie6%%dAKO*gJ9 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∋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 z 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
    3yoY}(~f$L~y^Zx!;DLDY{PDfe14=ZD0zR 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⁢z#2R&AGKS8$ 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 biRGD%`~! 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%0Dfb#~^)d=RIns54 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 )lm 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ӻ^(ZrVK=B=AW+bUQ)1#Uarkj3ti=q=g? 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 z%0D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

    I(uxwtB;OpKfH#5$y@OD(fn{(z_nZ3A0m} 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ΜVxS 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

    )sG^|Z&L10c?ji-YmIjppO2zE@M^<< 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 diff --git a/node_modules/sqlite3/lib/index.js b/node_modules/sqlite3/lib/index.js deleted file mode 100644 index 3f8eeb3..0000000 --- a/node_modules/sqlite3/lib/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./sqlite3'); diff --git a/node_modules/sqlite3/lib/sqlite3.js b/node_modules/sqlite3/lib/sqlite3.js deleted file mode 100644 index 466b902..0000000 --- a/node_modules/sqlite3/lib/sqlite3.js +++ /dev/null @@ -1,187 +0,0 @@ -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; -}; diff --git a/node_modules/sqlite3/lib/trace.js b/node_modules/sqlite3/lib/trace.js deleted file mode 100644 index 3ea20bd..0000000 --- a/node_modules/sqlite3/lib/trace.js +++ /dev/null @@ -1,42 +0,0 @@ -// 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; - }); -} diff --git a/node_modules/sqlite3/node_modules/.bin/node-pre-gyp b/node_modules/sqlite3/node_modules/.bin/node-pre-gyp deleted file mode 120000 index 47a90a5..0000000 --- a/node_modules/sqlite3/node_modules/.bin/node-pre-gyp +++ /dev/null @@ -1 +0,0 @@ -../node-pre-gyp/bin/node-pre-gyp \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/nan/.dntrc b/node_modules/sqlite3/node_modules/nan/.dntrc deleted file mode 100644 index 47971da..0000000 --- a/node_modules/sqlite3/node_modules/nan/.dntrc +++ /dev/null @@ -1,30 +0,0 @@ -## 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 \ -" - diff --git a/node_modules/sqlite3/node_modules/nan/.nan.h.un~ b/node_modules/sqlite3/node_modules/nan/.nan.h.un~ deleted file mode 100644 index f2214d30dbc7a81de1163dd9ae4a4091ff12c49e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83139 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 diff --git a/node_modules/sqlite3/node_modules/nan/CHANGELOG.md b/node_modules/sqlite3/node_modules/nan/CHANGELOG.md deleted file mode 100644 index 4408f14..0000000 --- a/node_modules/sqlite3/node_modules/nan/CHANGELOG.md +++ /dev/null @@ -1,216 +0,0 @@ -# NAN ChangeLog - -**Version 1.4.1: current Node unstable: 0.11.14, Node stable: 0.10.33** - -### 1.4.1 Nov 8 2014 - - Bugfix: Handle DEBUG definition correctly - - Bugfix: Accept int as Boolean - -### 1.4.0 Nov 1 2014 - - - Feature: Added NAN_GC_CALLBACK 6a5c245 - - Performance: Removed unnecessary local handle creation 18a7243, 41fe2f8 - - Correctness: Added constness to references in NanHasInstance 02c61cd - - Warnings: Fixed spurious warnings from -Wundef and -Wshadow, 541b122, 99d8cb6 - - Windoze: Shut Visual Studio up when compiling 8d558c1 - - License: Switch to plain MIT from custom hacked MIT license 11de983 - - Build: Added test target to Makefile e232e46 - - Performance: Removed superfluous scope in NanAsyncWorker f4b7821 - - Sugar/Feature: Added NanReturnThis() and NanReturnHolder() shorthands 237a5ff, d697208 - - Feature: Added suitable overload of NanNew for v8::Integer::NewFromUnsigned b27b450 - -### 1.3.0 Aug 2 2014 - - - Added NanNew(std::string) - - Added NanNew(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 target, v8::Handle func, int argc, v8::Handle* argv) - - Added NanMakeCallback(v8::Handle target, v8::Handle symbol, int argc, v8::Handle* argv) - - Added NanMakeCallback(v8::Handle target, const char* method, int argc, v8::Handle* argv) - - Added NanSetTemplate(v8::Handle templ, v8::Handle name , v8::Handle value, v8::PropertyAttribute attributes) - - Added NanSetPrototypeTemplate(v8::Local templ, v8::Handle name, v8::Handle value, v8::PropertyAttribute attributes) - - Added NanSetInstanceTemplate(v8::Local templ, const char *name, v8::Handle value) - - Added NanSetInstanceTemplate(v8::Local templ, v8::Handle name, v8::Handle 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(v8::Handle value) for use in place of - v8::Local::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 ` 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) to NanThrowError(Handle) - - 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::Handle) - - 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 argument - - Added `NanNewBufferHandle` with single uint32_t argument - - Added `NanHasInstance(Persistent&, Handle)` - - Added `Local NanCallback#GetFunction()` - - Added `NanCallback#Call(int, Local[])` - - Deprecated `NanCallback#Run(int, Local[])` in favour of Call diff --git a/node_modules/sqlite3/node_modules/nan/LICENSE.md b/node_modules/sqlite3/node_modules/nan/LICENSE.md deleted file mode 100644 index 6821891..0000000 --- a/node_modules/sqlite3/node_modules/nan/LICENSE.md +++ /dev/null @@ -1,13 +0,0 @@ -The MIT License (MIT) -===================== - -Copyright (c) 2014 NAN contributors ------------------------------------ - -*NAN contributors listed at * - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/nan/appveyor.yml b/node_modules/sqlite3/node_modules/nan/appveyor.yml deleted file mode 100644 index 657eed6..0000000 --- a/node_modules/sqlite3/node_modules/nan/appveyor.yml +++ /dev/null @@ -1,32 +0,0 @@ -# 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}" - diff --git a/node_modules/sqlite3/node_modules/nan/include_dirs.js b/node_modules/sqlite3/node_modules/nan/include_dirs.js deleted file mode 100644 index 4f1dfb4..0000000 --- a/node_modules/sqlite3/node_modules/nan/include_dirs.js +++ /dev/null @@ -1 +0,0 @@ -console.log(require('path').relative('.', __dirname)); diff --git a/node_modules/sqlite3/node_modules/nan/nan.h b/node_modules/sqlite3/node_modules/nan/nan.h deleted file mode 100644 index e490339..0000000 --- a/node_modules/sqlite3/node_modules/nan/nan.h +++ /dev/null @@ -1,2412 +0,0 @@ -/********************************************************************* - * NAN - Native Abstractions for Node.js - * - * Copyright (c) 2014 NAN contributors: - * - Rod Vagg - * - Benjamin Byholm - * - Trevor Norris - * - Nathan Rajlich - * - Brett Lawson - * - Ben Noordhuis - * - * MIT License - * - * Version 1.4.1: current Node unstable: 0.11.14, Node stable: 0.10.33 - * - * See https://github.com/rvagg/nan for the latest update to this file - **********************************************************************************/ - -#ifndef NAN_H_ -#define NAN_H_ - -#include -#include -#include -#include -#include -#include -#include -#if defined(_MSC_VER) -# pragma warning( disable : 4530 ) -#endif -#include - -#if defined(__GNUC__) && !(defined(DEBUG) && DEBUG) -# define NAN_INLINE inline __attribute__((always_inline)) -#elif defined(_MSC_VER) && !(defined(DEBUG) && DEBUG) -# define NAN_INLINE __forceinline -#else -# define NAN_INLINE inline -#endif - -#if defined(__GNUC__) && \ - !(defined(V8_DISABLE_DEPRECATIONS) && V8_DISABLE_DEPRECATIONS) -# define NAN_DEPRECATED __attribute__((deprecated)) -#elif defined(_MSC_VER) && \ - !(defined(V8_DISABLE_DEPRECATIONS) && V8_DISABLE_DEPRECATIONS) -# define NAN_DEPRECATED __declspec(deprecated) -#else -# define NAN_DEPRECATED -#endif - -// some generic helpers - -template NAN_INLINE bool NanSetPointerSafe( - T *var - , T val -) { - if (var) { - *var = val; - return true; - } else { - return false; - } -} - -template NAN_INLINE T NanGetPointerSafe( - T *var - , T fallback = reinterpret_cast(0) -) { - if (var) { - return *var; - } else { - return fallback; - } -} - -NAN_INLINE bool NanBooleanOptionValue( - v8::Local optionsObj - , v8::Handle opt, bool def -) { - if (def) { - return optionsObj.IsEmpty() - || !optionsObj->Has(opt) - || optionsObj->Get(opt)->BooleanValue(); - } else { - return !optionsObj.IsEmpty() - && optionsObj->Has(opt) - && optionsObj->Get(opt)->BooleanValue(); - } -} - -NAN_INLINE bool NanBooleanOptionValue( - v8::Local optionsObj - , v8::Handle opt -) { - return NanBooleanOptionValue(optionsObj, opt, false); -} - -NAN_INLINE uint32_t NanUInt32OptionValue( - v8::Local optionsObj - , v8::Handle opt - , uint32_t def -) { - return !optionsObj.IsEmpty() - && optionsObj->Has(opt) - && optionsObj->Get(opt)->IsNumber() - ? optionsObj->Get(opt)->Uint32Value() - : def; -} - -template -v8::Local NanNew(v8::Handle); - -template -NAN_INLINE v8::Local _NanEnsureLocal(v8::Handle val) { - return NanNew(val); -} - -template -NAN_INLINE v8::Local _NanEnsureLocal(v8::Local val) { - return val; -} - -#if (NODE_MODULE_VERSION > 0x000B) -// Node 0.11+ (0.11.3 and below won't compile with these) - -# define _NAN_METHOD_ARGS_TYPE const v8::FunctionCallbackInfo& -# define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args -# define _NAN_METHOD_RETURN_TYPE void - -# define _NAN_GETTER_ARGS_TYPE const v8::PropertyCallbackInfo& -# define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args -# define _NAN_GETTER_RETURN_TYPE void - -# define _NAN_SETTER_ARGS_TYPE const v8::PropertyCallbackInfo& -# define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args -# define _NAN_SETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_GETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args -# define _NAN_PROPERTY_GETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_SETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args -# define _NAN_PROPERTY_SETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args -# define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE void - -# define _NAN_PROPERTY_DELETER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_DELETER_ARGS \ - _NAN_PROPERTY_DELETER_ARGS_TYPE args -# define _NAN_PROPERTY_DELETER_RETURN_TYPE void - -# define _NAN_PROPERTY_QUERY_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args -# define _NAN_PROPERTY_QUERY_RETURN_TYPE void - -# define _NAN_INDEX_GETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args -# define _NAN_INDEX_GETTER_RETURN_TYPE void - -# define _NAN_INDEX_SETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args -# define _NAN_INDEX_SETTER_RETURN_TYPE void - -# define _NAN_INDEX_ENUMERATOR_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args -# define _NAN_INDEX_ENUMERATOR_RETURN_TYPE void - -# define _NAN_INDEX_DELETER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args -# define _NAN_INDEX_DELETER_RETURN_TYPE void - -# define _NAN_INDEX_QUERY_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args -# define _NAN_INDEX_QUERY_RETURN_TYPE void - - typedef v8::FunctionCallback NanFunctionCallback; - - template - NAN_INLINE v8::Local NanNew() { - return T::New(v8::Isolate::GetCurrent()); - } - - template - NAN_INLINE v8::Local NanNew(P arg1) { - return T::New(v8::Isolate::GetCurrent(), arg1); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle receiver - , int argc - , v8::Handle argv[] = 0) { - return v8::Signature::New(v8::Isolate::GetCurrent(), receiver, argc, argv); - } - - template - NAN_INLINE v8::Local NanNew( - NanFunctionCallback callback - , v8::Handle data = v8::Handle() - , v8::Handle signature = v8::Handle()) { - return T::New(v8::Isolate::GetCurrent(), callback, data, signature); - } - - template - NAN_INLINE v8::Local NanNew(v8::Handle arg1) { - return v8::Local::New(v8::Isolate::GetCurrent(), arg1); - } - - template - NAN_INLINE v8::Local NanNew(const v8::Persistent &arg1) { - return v8::Local::New(v8::Isolate::GetCurrent(), arg1); - } - - template - NAN_INLINE v8::Local NanNew(P arg1, int arg2) { - return T::New(v8::Isolate::GetCurrent(), arg1, arg2); - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::Array::New(v8::Isolate::GetCurrent()); - } - - template<> - NAN_INLINE v8::Local NanNew(int length) { - return v8::Array::New(v8::Isolate::GetCurrent(), length); - } - - template<> - NAN_INLINE v8::Local NanNew(double time) { - return v8::Date::New(v8::Isolate::GetCurrent(), time).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(int time) { - return v8::Date::New(v8::Isolate::GetCurrent(), time).As(); - } - - typedef v8::UnboundScript NanUnboundScript; - typedef v8::Script NanBoundScript; - - template - NAN_INLINE v8::Local NanNew( - P s - , const v8::ScriptOrigin& origin - ) { - v8::ScriptCompiler::Source source(s, origin); - return v8::ScriptCompiler::CompileUnbound( - v8::Isolate::GetCurrent(), &source); - } - - template<> - NAN_INLINE v8::Local NanNew( - v8::Local s - ) { - v8::ScriptCompiler::Source source(s); - return v8::ScriptCompiler::CompileUnbound( - v8::Isolate::GetCurrent(), &source); - } - - template<> - NAN_INLINE v8::Local NanNew(bool value) { - return v8::BooleanObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Local value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Handle value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(double val) { - return v8::NumberObject::New( - v8::Isolate::GetCurrent(), val).As(); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Uint32::NewFromUnsigned( - v8::Isolate::GetCurrent(), val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Uint32::NewFromUnsigned( - v8::Isolate::GetCurrent(), val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Int32::New(v8::Isolate::GetCurrent(), val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Int32::New(v8::Isolate::GetCurrent(), val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Integer::NewFromUnsigned(v8::Isolate::GetCurrent(), val); - } - - template<> - NAN_INLINE v8::Local NanNew( - char *arg - , int length) { - return v8::String::NewFromUtf8( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew( - const char *arg - , int length) { - return v8::String::NewFromUtf8( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew(char *arg) { - return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - const char *arg) { - return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - uint8_t *arg - , int length) { - return v8::String::NewFromOneByte( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg - , int length) { - return v8::String::NewFromOneByte( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew(uint8_t *arg) { - return v8::String::NewFromOneByte(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg) { - return v8::String::NewFromOneByte(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - uint16_t *arg - , int length) { - return v8::String::NewFromTwoByte( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint16_t *arg - , int length) { - return v8::String::NewFromTwoByte( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - template<> - NAN_INLINE v8::Local NanNew( - uint16_t *arg) { - return v8::String::NewFromTwoByte(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint16_t *arg) { - return v8::String::NewFromTwoByte(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - std::string arg) { - return NanNew(arg.c_str(), static_cast(arg.size())); - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::String::Empty(v8::Isolate::GetCurrent()); - } - - NAN_INLINE v8::Local NanNew(const char* arg, int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const uint8_t* arg - , int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const uint16_t* arg - , int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const std::string& arg) { - return NanNew(arg.c_str(), static_cast(arg.size())); - } - - NAN_INLINE v8::Local NanNew(double val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(int val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(unsigned int val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(bool val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalStringResource *resource) { - return v8::String::NewExternal(v8::Isolate::GetCurrent(), resource); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalAsciiStringResource *resource) { - return v8::String::NewExternal(v8::Isolate::GetCurrent(), resource); - } - -# define NanScope() v8::HandleScope scope(v8::Isolate::GetCurrent()) -# define NanEscapableScope() \ - v8::EscapableHandleScope scope(v8::Isolate::GetCurrent()) - -# define NanEscapeScope(val) scope.Escape(_NanEnsureLocal(val)) -# define NanLocker() v8::Locker locker(v8::Isolate::GetCurrent()) -# define NanUnlocker() v8::Unlocker unlocker(v8::Isolate::GetCurrent()) -# define NanReturnValue(value) return args.GetReturnValue().Set(value) -# define NanReturnUndefined() return -# define NanReturnHolder() NanReturnValue(args.Holder()) -# define NanReturnThis() NanReturnValue(args.This()) -# define NanReturnNull() return args.GetReturnValue().SetNull() -# define NanReturnEmptyString() return args.GetReturnValue().SetEmptyString() - -# define NanObjectWrapHandle(obj) obj->handle() - - NAN_INLINE v8::Local NanUndefined() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::Undefined(v8::Isolate::GetCurrent()))); - } - - NAN_INLINE v8::Local NanNull() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::Null(v8::Isolate::GetCurrent()))); - } - - NAN_INLINE v8::Local NanTrue() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::True(v8::Isolate::GetCurrent()))); - } - - NAN_INLINE v8::Local NanFalse() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::False(v8::Isolate::GetCurrent()))); - } - - NAN_INLINE int NanAdjustExternalMemory(int bc) { - return static_cast( - v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(bc)); - } - - NAN_INLINE void NanSetTemplate( - v8::Handle templ - , const char *name - , v8::Handle value) { - templ->Set(v8::Isolate::GetCurrent(), name, value); - } - - NAN_INLINE void NanSetTemplate( - v8::Handle templ - , v8::Handle name - , v8::Handle value - , v8::PropertyAttribute attributes) { - templ->Set(name, value, attributes); - } - - NAN_INLINE v8::Local NanGetCurrentContext() { - return v8::Isolate::GetCurrent()->GetCurrentContext(); - } - - NAN_INLINE void* NanGetInternalFieldPointer( - v8::Handle object - , int index) { - return object->GetAlignedPointerFromInternalField(index); - } - - NAN_INLINE void NanSetInternalFieldPointer( - v8::Handle object - , int index - , void* value) { - object->SetAlignedPointerInInternalField(index, value); - } - -# define NAN_GC_CALLBACK(name) \ - void name(v8::Isolate *isolate, v8::GCType type, v8::GCCallbackFlags flags) - - NAN_INLINE void NanAddGCEpilogueCallback( - v8::Isolate::GCEpilogueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - v8::Isolate::GetCurrent()->AddGCEpilogueCallback(callback, gc_type_filter); - } - - NAN_INLINE void NanRemoveGCEpilogueCallback( - v8::Isolate::GCEpilogueCallback callback) { - v8::Isolate::GetCurrent()->RemoveGCEpilogueCallback(callback); - } - - NAN_INLINE void NanAddGCPrologueCallback( - v8::Isolate::GCPrologueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - v8::Isolate::GetCurrent()->AddGCPrologueCallback(callback, gc_type_filter); - } - - NAN_INLINE void NanRemoveGCPrologueCallback( - v8::Isolate::GCPrologueCallback callback) { - v8::Isolate::GetCurrent()->RemoveGCPrologueCallback(callback); - } - - NAN_INLINE void NanGetHeapStatistics( - v8::HeapStatistics *heap_statistics) { - v8::Isolate::GetCurrent()->GetHeapStatistics(heap_statistics); - } - - NAN_DEPRECATED NAN_INLINE v8::Local NanSymbol( - const char* data, int length = -1) { - return NanNew(data, length); - } - - template - NAN_INLINE void NanAssignPersistent( - v8::Persistent& handle - , v8::Handle obj) { - handle.Reset(v8::Isolate::GetCurrent(), obj); - } - - template - NAN_INLINE void NanAssignPersistent( - v8::Persistent& handle - , const v8::Persistent& obj) { - handle.Reset(v8::Isolate::GetCurrent(), obj); - } - - template - class _NanWeakCallbackData; - - template - struct _NanWeakCallbackInfo { - typedef void (*Callback)(const _NanWeakCallbackData& data); - NAN_INLINE _NanWeakCallbackInfo(v8::Handle handle, P* param, Callback cb) - : parameter(param), callback(cb) { - NanAssignPersistent(persistent, handle); - } - - NAN_INLINE ~_NanWeakCallbackInfo() { - persistent.Reset(); - } - - P* const parameter; - Callback const callback; - v8::Persistent persistent; - }; - - template - class _NanWeakCallbackData { - public: - NAN_INLINE _NanWeakCallbackData(_NanWeakCallbackInfo *info) - : info_(info) { } - - NAN_INLINE v8::Local GetValue() const { - return NanNew(info_->persistent); - } - - NAN_INLINE P* GetParameter() const { return info_->parameter; } - - NAN_INLINE bool IsNearDeath() const { - return info_->persistent.IsNearDeath(); - } - - NAN_INLINE void Revive() const; - - NAN_INLINE _NanWeakCallbackInfo* GetCallbackInfo() const { - return info_; - } - - NAN_DEPRECATED NAN_INLINE void Dispose() const { - } - - private: - _NanWeakCallbackInfo* info_; - }; - - template - static void _NanWeakCallbackDispatcher( - const v8::WeakCallbackData > &data) { - _NanWeakCallbackInfo *info = data.GetParameter(); - _NanWeakCallbackData wcbd(info); - info->callback(wcbd); - if (wcbd.IsNearDeath()) { - delete wcbd.GetCallbackInfo(); - } - } - - template - NAN_INLINE void _NanWeakCallbackData::Revive() const { - info_->persistent.SetWeak(info_, &_NanWeakCallbackDispatcher); - } - -template -NAN_INLINE _NanWeakCallbackInfo* NanMakeWeakPersistent( - v8::Handle handle - , P* parameter - , typename _NanWeakCallbackInfo::Callback callback) { - _NanWeakCallbackInfo *cbinfo = - new _NanWeakCallbackInfo(handle, parameter, callback); - cbinfo->persistent.SetWeak(cbinfo, &_NanWeakCallbackDispatcher); - return cbinfo; -} - -# define NAN_WEAK_CALLBACK(name) \ - template \ - static void name(const _NanWeakCallbackData &data) - -# define _NAN_ERROR(fun, errmsg) fun(NanNew(errmsg)) - -# define _NAN_THROW_ERROR(fun, errmsg) \ - do { \ - NanScope(); \ - v8::Isolate::GetCurrent()->ThrowException(_NAN_ERROR(fun, errmsg)); \ - } while (0); - - NAN_INLINE v8::Local NanError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE void NanThrowError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE void NanThrowError(v8::Handle error) { - NanScope(); - v8::Isolate::GetCurrent()->ThrowException(error); - } - - NAN_INLINE v8::Local NanError( - const char *msg - , const int errorNumber - ) { - v8::Local err = v8::Exception::Error(NanNew(msg)); - v8::Local obj = err.As(); - obj->Set(NanNew("code"), NanNew(errorNumber)); - return err; - } - - NAN_INLINE void NanThrowError( - const char *msg - , const int errorNumber - ) { - NanThrowError(NanError(msg, errorNumber)); - } - - NAN_INLINE v8::Local NanTypeError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE void NanThrowTypeError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE v8::Local NanRangeError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::RangeError, errmsg); - } - - NAN_INLINE void NanThrowRangeError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg); - } - - template NAN_INLINE void NanDisposePersistent( - v8::Persistent &handle - ) { - handle.Reset(); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - char *data - , size_t length - , node::smalloc::FreeCallback callback - , void *hint - ) { - return node::Buffer::New( - v8::Isolate::GetCurrent(), data, length, callback, hint); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - const char *data - , uint32_t size - ) { - return node::Buffer::New(v8::Isolate::GetCurrent(), data, size); - } - - NAN_INLINE v8::Local NanNewBufferHandle (uint32_t size) { - return node::Buffer::New(v8::Isolate::GetCurrent(), size); - } - - NAN_INLINE v8::Local NanBufferUse( - char* data - , uint32_t size - ) { - return node::Buffer::Use(v8::Isolate::GetCurrent(), data, size); - } - - NAN_INLINE bool NanHasInstance( - const v8::Persistent& function_template - , v8::Handle value - ) { - return NanNew(function_template)->HasInstance(value); - } - - NAN_INLINE v8::Local NanNewContextHandle( - v8::ExtensionConfiguration* extensions = NULL - , v8::Handle tmpl = v8::Handle() - , v8::Handle obj = v8::Handle() - ) { - v8::Isolate* isolate = v8::Isolate::GetCurrent(); - return v8::Local::New( - isolate - , v8::Context::New(isolate, extensions, tmpl, obj) - ); - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - , const v8::ScriptOrigin& origin - ) { - v8::ScriptCompiler::Source source(s, origin); - return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &source); - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - ) { - v8::ScriptCompiler::Source source(s); - return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &source); - } - - NAN_INLINE v8::Local NanRunScript( - v8::Handle script - ) { - return script->BindToCurrentContext()->Run(); - } - - NAN_INLINE v8::Local NanRunScript( - v8::Handle script - ) { - return script->Run(); - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , v8::Handle func - , int argc - , v8::Handle* argv) { - return NanNew(node::MakeCallback( - v8::Isolate::GetCurrent(), target, func, argc, argv)); - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , v8::Handle symbol - , int argc - , v8::Handle* argv) { - return NanNew(node::MakeCallback( - v8::Isolate::GetCurrent(), target, symbol, argc, argv)); - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , const char* method - , int argc - , v8::Handle* argv) { - return NanNew(node::MakeCallback( - v8::Isolate::GetCurrent(), target, method, argc, argv)); - } - - template - NAN_INLINE void NanSetIsolateData( - v8::Isolate *isolate - , T *data - ) { - isolate->SetData(0, data); - } - - template - NAN_INLINE T *NanGetIsolateData( - v8::Isolate *isolate - ) { - return static_cast(isolate->GetData(0)); - } - - class NanAsciiString { - public: - NAN_INLINE explicit NanAsciiString(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Length(); - buf = new char[size + 1]; - size = toStr->WriteOneByte(reinterpret_cast(buf)); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - - NAN_INLINE char* operator*() { return buf; } - NAN_INLINE const char* operator*() const { return buf; } - - NAN_INLINE ~NanAsciiString() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanAsciiString(const NanAsciiString&); - void operator=(const NanAsciiString&); - - char *buf; - int size; - }; - - class NanUtf8String { - public: - NAN_INLINE explicit NanUtf8String(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Utf8Length(); - buf = new char[size + 1]; - toStr->WriteUtf8(buf); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - NAN_INLINE char* operator*() { return buf; } - NAN_INLINE const char* operator*() const { return buf; } - - NAN_INLINE ~NanUtf8String() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanUtf8String(const NanUtf8String&); - void operator=(const NanUtf8String&); - - char *buf; - int size; - }; - - class NanUcs2String { - public: - NAN_INLINE explicit NanUcs2String(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Length(); - buf = new uint16_t[size + 1]; - toStr->Write(buf); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - NAN_INLINE uint16_t* operator*() { return buf; } - NAN_INLINE const uint16_t* operator*() const { return buf; } - - NAN_INLINE ~NanUcs2String() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanUcs2String(const NanUcs2String&); - void operator=(const NanUcs2String&); - - uint16_t *buf; - int size; - }; - -#else -// Node 0.8 and 0.10 - -# define _NAN_METHOD_ARGS_TYPE const v8::Arguments& -# define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args -# define _NAN_METHOD_RETURN_TYPE v8::Handle - -# define _NAN_GETTER_ARGS_TYPE const v8::AccessorInfo & -# define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args -# define _NAN_GETTER_RETURN_TYPE v8::Handle - -# define _NAN_SETTER_ARGS_TYPE const v8::AccessorInfo & -# define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args -# define _NAN_SETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_GETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args -# define _NAN_PROPERTY_GETTER_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_SETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args -# define _NAN_PROPERTY_SETTER_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args -# define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_DELETER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_DELETER_ARGS _NAN_PROPERTY_DELETER_ARGS_TYPE args -# define _NAN_PROPERTY_DELETER_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_QUERY_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args -# define _NAN_PROPERTY_QUERY_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_GETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args -# define _NAN_INDEX_GETTER_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_SETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args -# define _NAN_INDEX_SETTER_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args -# define _NAN_INDEX_ENUMERATOR_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_DELETER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args -# define _NAN_INDEX_DELETER_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_QUERY_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args -# define _NAN_INDEX_QUERY_RETURN_TYPE v8::Handle - - typedef v8::InvocationCallback NanFunctionCallback; - - NAN_DEPRECATED NAN_INLINE v8::Local NanSymbol( - const char* data, int length = -1) { - return v8::String::NewSymbol(data, length); - } - - template - NAN_INLINE v8::Local NanNew() { - return T::New(); - } - - template - NAN_INLINE v8::Local NanNew(v8::Handle arg) { - return v8::Local::New(arg); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle receiver - , int argc - , v8::Handle argv[] = 0) { - return v8::Signature::New(receiver, argc, argv); - } - - template - NAN_INLINE v8::Local NanNew( - NanFunctionCallback callback - , v8::Handle data = v8::Handle() - , v8::Handle signature = v8::Handle()) { - return T::New(callback, data, signature); - } - - template - NAN_INLINE v8::Local NanNew(const v8::Persistent &arg) { - return v8::Local::New(arg); - } - - template - NAN_INLINE v8::Local NanNew(P arg) { - return _NanEnsureLocal(T::New(arg)); - } - - template - NAN_INLINE v8::Local NanNew(P arg, int length) { - return _NanEnsureLocal(T::New(arg, length)); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::Array::New(); - } - - template<> - NAN_INLINE v8::Local NanNew(int length) { - return v8::Array::New(length); - } - - template<> - NAN_INLINE v8::Local NanNew(double time) { - return v8::Date::New(time).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(int time) { - return v8::Date::New(time).As(); - } - - typedef v8::Script NanUnboundScript; - typedef v8::Script NanBoundScript; - - template - NAN_INLINE v8::Local NanNew( - P s - , const v8::ScriptOrigin& origin - ) { - return v8::Script::New(s, const_cast(&origin)); - } - - template<> - NAN_INLINE v8::Local NanNew( - v8::Local s - ) { - return v8::Script::New(s); - } - - template<> - NAN_INLINE v8::Local NanNew(bool value) { - return v8::BooleanObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Local value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Handle value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(double val) { - return v8::NumberObject::New(val).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Uint32::NewFromUnsigned(val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Uint32::NewFromUnsigned(val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Int32::New(val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Int32::New(val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Integer::NewFromUnsigned(val); - } - - template<> - NAN_INLINE v8::Local NanNew( - uint8_t *arg - , int length) { - int len = length; - if (len < 0) { - size_t temp = strlen(reinterpret_cast(arg)); - assert(temp <= INT_MAX && "too long string"); - len = static_cast(temp); - } - uint16_t *warg = new uint16_t[len]; - for (int i = 0; i < len; i++) { - warg[i] = arg[i]; - } - v8::Local retval = v8::String::New(warg, len); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg - , int length) { - int len = length; - if (len < 0) { - size_t temp = strlen(reinterpret_cast(arg)); - assert(temp <= INT_MAX && "too long string"); - len = static_cast(temp); - } - uint16_t *warg = new uint16_t[len]; - for (int i = 0; i < len; i++) { - warg[i] = arg[i]; - } - v8::Local retval = v8::String::New(warg, len); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew(uint8_t *arg) { - size_t temp = strlen(reinterpret_cast(arg)); - assert(temp <= INT_MAX && "too long string"); - int length = static_cast(temp); - uint16_t *warg = new uint16_t[length]; - for (int i = 0; i < length; i++) { - warg[i] = arg[i]; - } - - v8::Local retval = v8::String::New(warg, length); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg) { - size_t temp = strlen(reinterpret_cast(arg)); - assert(temp <= INT_MAX && "too long string"); - int length = static_cast(temp); - uint16_t *warg = new uint16_t[length]; - for (int i = 0; i < length; i++) { - warg[i] = arg[i]; - } - v8::Local retval = v8::String::New(warg, length); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew( - std::string arg) { - return NanNew(arg.c_str(), static_cast(arg.size())); - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::String::Empty(); - } - - NAN_INLINE v8::Local NanNew(const char* arg, int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const uint8_t* arg - , int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const uint16_t* arg - , int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const std::string& arg) { - return NanNew(arg.c_str(), static_cast(arg.size())); - } - - NAN_INLINE v8::Local NanNew(double val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(int val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(unsigned int val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(bool val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalStringResource *resource) { - return v8::String::NewExternal(resource); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalAsciiStringResource *resource) { - return v8::String::NewExternal(resource); - } - -# define NanScope() v8::HandleScope scope -# define NanEscapableScope() v8::HandleScope scope -# define NanEscapeScope(val) scope.Close(val) -# define NanLocker() v8::Locker locker -# define NanUnlocker() v8::Unlocker unlocker -# define NanReturnValue(value) return scope.Close(value) -# define NanReturnHolder() NanReturnValue(args.Holder()) -# define NanReturnThis() NanReturnValue(args.This()) -# define NanReturnUndefined() return v8::Undefined() -# define NanReturnNull() return v8::Null() -# define NanReturnEmptyString() return v8::String::Empty() -# define NanObjectWrapHandle(obj) v8::Local::New(obj->handle_) - - NAN_INLINE v8::Local NanUndefined() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::Undefined())); - } - - NAN_INLINE v8::Local NanNull() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::Null())); - } - - NAN_INLINE v8::Local NanTrue() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::True())); - } - - NAN_INLINE v8::Local NanFalse() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::False())); - } - - NAN_INLINE int NanAdjustExternalMemory(int bc) { - return static_cast(v8::V8::AdjustAmountOfExternalAllocatedMemory(bc)); - } - - NAN_INLINE void NanSetTemplate( - v8::Handle templ - , const char *name - , v8::Handle value) { - templ->Set(name, value); - } - - NAN_INLINE void NanSetTemplate( - v8::Handle templ - , v8::Handle name - , v8::Handle value - , v8::PropertyAttribute attributes) { - templ->Set(name, value, attributes); - } - - NAN_INLINE v8::Local NanGetCurrentContext() { - return v8::Context::GetCurrent(); - } - - NAN_INLINE void* NanGetInternalFieldPointer( - v8::Handle object - , int index) { - return object->GetPointerFromInternalField(index); - } - - NAN_INLINE void NanSetInternalFieldPointer( - v8::Handle object - , int index - , void* value) { - object->SetPointerInInternalField(index, value); - } - -# define NAN_GC_CALLBACK(name) \ - void name(v8::GCType type, v8::GCCallbackFlags flags) - - NAN_INLINE void NanAddGCEpilogueCallback( - v8::GCEpilogueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - v8::V8::AddGCEpilogueCallback(callback, gc_type_filter); - } - NAN_INLINE void NanRemoveGCEpilogueCallback( - v8::GCEpilogueCallback callback) { - v8::V8::RemoveGCEpilogueCallback(callback); - } - NAN_INLINE void NanAddGCPrologueCallback( - v8::GCPrologueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - v8::V8::AddGCPrologueCallback(callback, gc_type_filter); - } - NAN_INLINE void NanRemoveGCPrologueCallback( - v8::GCPrologueCallback callback) { - v8::V8::RemoveGCPrologueCallback(callback); - } - NAN_INLINE void NanGetHeapStatistics( - v8::HeapStatistics *heap_statistics) { - v8::V8::GetHeapStatistics(heap_statistics); - } - - template - NAN_INLINE void NanAssignPersistent( - v8::Persistent& handle - , v8::Handle obj) { - handle.Dispose(); - handle = v8::Persistent::New(obj); - } - - template - class _NanWeakCallbackData; - - template - struct _NanWeakCallbackInfo { - typedef void (*Callback)(const _NanWeakCallbackData &data); - NAN_INLINE _NanWeakCallbackInfo(v8::Handle handle, P* param, Callback cb) - : parameter(param) - , callback(cb) - , persistent(v8::Persistent::New(handle)) { } - - NAN_INLINE ~_NanWeakCallbackInfo() { - persistent.Dispose(); - persistent.Clear(); - } - - P* const parameter; - Callback const callback; - v8::Persistent persistent; - }; - - template - class _NanWeakCallbackData { - public: - NAN_INLINE _NanWeakCallbackData(_NanWeakCallbackInfo *info) - : info_(info) { } - - NAN_INLINE v8::Local GetValue() const { - return NanNew(info_->persistent); - } - - NAN_INLINE P* GetParameter() const { return info_->parameter; } - - NAN_INLINE bool IsNearDeath() const { - return info_->persistent.IsNearDeath(); - } - - NAN_INLINE void Revive() const; - - NAN_INLINE _NanWeakCallbackInfo* GetCallbackInfo() const { - return info_; - } - - NAN_DEPRECATED NAN_INLINE void Dispose() const { - } - - private: - _NanWeakCallbackInfo* info_; - }; - - template - static void _NanWeakPersistentDispatcher( - v8::Persistent object, void *data) { - _NanWeakCallbackInfo* info = - static_cast<_NanWeakCallbackInfo*>(data); - _NanWeakCallbackData wcbd(info); - info->callback(wcbd); - if (wcbd.IsNearDeath()) { - delete wcbd.GetCallbackInfo(); - } - } - - template - NAN_INLINE void _NanWeakCallbackData::Revive() const { - info_->persistent.MakeWeak( - info_ - , &_NanWeakPersistentDispatcher); - } - - template - NAN_INLINE _NanWeakCallbackInfo* NanMakeWeakPersistent( - v8::Handle handle - , P* parameter - , typename _NanWeakCallbackInfo::Callback callback) { - _NanWeakCallbackInfo *cbinfo = - new _NanWeakCallbackInfo(handle, parameter, callback); - cbinfo->persistent.MakeWeak( - cbinfo - , &_NanWeakPersistentDispatcher); - return cbinfo; - } - -# define NAN_WEAK_CALLBACK(name) \ - template \ - static void name(const _NanWeakCallbackData &data) - -# define _NAN_ERROR(fun, errmsg) \ - fun(v8::String::New(errmsg)) - -# define _NAN_THROW_ERROR(fun, errmsg) \ - do { \ - NanScope(); \ - return v8::Local::New( \ - v8::ThrowException(_NAN_ERROR(fun, errmsg))); \ - } while (0); - - NAN_INLINE v8::Local NanError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE v8::Local NanThrowError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE v8::Local NanThrowError( - v8::Handle error - ) { - NanScope(); - return v8::Local::New(v8::ThrowException(error)); - } - - NAN_INLINE v8::Local NanError( - const char *msg - , const int errorNumber - ) { - v8::Local err = v8::Exception::Error(v8::String::New(msg)); - v8::Local obj = err.As(); - obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber)); - return err; - } - - NAN_INLINE v8::Local NanThrowError( - const char *msg - , const int errorNumber - ) { - return NanThrowError(NanError(msg, errorNumber)); - } - - NAN_INLINE v8::Local NanTypeError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE v8::Local NanThrowTypeError( - const char* errmsg - ) { - _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE v8::Local NanRangeError( - const char* errmsg - ) { - return _NAN_ERROR(v8::Exception::RangeError, errmsg); - } - - NAN_INLINE v8::Local NanThrowRangeError( - const char* errmsg - ) { - _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg); - } - - template - NAN_INLINE void NanDisposePersistent( - v8::Persistent &handle) { // NOLINT(runtime/references) - handle.Dispose(); - handle.Clear(); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - char *data - , size_t length - , node::Buffer::free_callback callback - , void *hint - ) { - return NanNew( - node::Buffer::New(data, length, callback, hint)->handle_); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - const char *data - , uint32_t size - ) { -#if NODE_MODULE_VERSION >= 0x000B - return NanNew(node::Buffer::New(data, size)->handle_); -#else - return NanNew( - node::Buffer::New(const_cast(data), size)->handle_); -#endif - } - - NAN_INLINE v8::Local NanNewBufferHandle (uint32_t size) { - return NanNew(node::Buffer::New(size)->handle_); - } - - NAN_INLINE void FreeData(char *data, void *hint) { - delete[] data; - } - - NAN_INLINE v8::Local NanBufferUse( - char* data - , uint32_t size - ) { - return NanNew( - node::Buffer::New(data, size, FreeData, NULL)->handle_); - } - - NAN_INLINE bool NanHasInstance( - const v8::Persistent& function_template - , v8::Handle value - ) { - return function_template->HasInstance(value); - } - - NAN_INLINE v8::Local NanNewContextHandle( - v8::ExtensionConfiguration* extensions = NULL - , v8::Handle tmpl = v8::Handle() - , v8::Handle obj = v8::Handle() - ) { - v8::Persistent ctx = v8::Context::New(extensions, tmpl, obj); - v8::Local lctx = NanNew(ctx); - ctx.Dispose(); - return lctx; - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - , const v8::ScriptOrigin& origin - ) { - return v8::Script::Compile(s, const_cast(&origin)); - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - ) { - return v8::Script::Compile(s); - } - - NAN_INLINE v8::Local NanRunScript(v8::Handle script) { - return script->Run(); - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , v8::Handle func - , int argc - , v8::Handle* argv) { -# if NODE_VERSION_AT_LEAST(0, 8, 0) - return NanNew(node::MakeCallback(target, func, argc, argv)); -# else - v8::TryCatch try_catch; - v8::Local result = func->Call(target, argc, argv); - if (try_catch.HasCaught()) { - node::FatalException(try_catch); - } - return result; -# endif - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , v8::Handle symbol - , int argc - , v8::Handle* argv) { -# if NODE_VERSION_AT_LEAST(0, 8, 0) - return NanNew(node::MakeCallback(target, symbol, argc, argv)); -# else - v8::Local callback = target->Get(symbol).As(); - return NanMakeCallback(target, callback, argc, argv); -# endif - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , const char* method - , int argc - , v8::Handle* argv) { -# if NODE_VERSION_AT_LEAST(0, 8, 0) - return NanNew(node::MakeCallback(target, method, argc, argv)); -# else - return NanMakeCallback(target, NanNew(method), argc, argv); -# endif - } - - template - NAN_INLINE void NanSetIsolateData( - v8::Isolate *isolate - , T *data - ) { - isolate->SetData(data); - } - - template - NAN_INLINE T *NanGetIsolateData( - v8::Isolate *isolate - ) { - return static_cast(isolate->GetData()); - } - - class NanAsciiString { - public: - NAN_INLINE explicit NanAsciiString(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Length(); - buf = new char[size + 1]; - size = toStr->WriteAscii(buf); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - - NAN_INLINE char* operator*() { return buf; } - NAN_INLINE const char* operator*() const { return buf; } - - NAN_INLINE ~NanAsciiString() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanAsciiString(const NanAsciiString&); - void operator=(const NanAsciiString&); - - char *buf; - int size; - }; - - class NanUtf8String { - public: - NAN_INLINE explicit NanUtf8String(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Utf8Length(); - buf = new char[size + 1]; - toStr->WriteUtf8(buf); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - NAN_INLINE char* operator*() { return buf; } - NAN_INLINE const char* operator*() const { return buf; } - - NAN_INLINE ~NanUtf8String() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanUtf8String(const NanUtf8String&); - void operator=(const NanUtf8String&); - - char *buf; - int size; - }; - - class NanUcs2String { - public: - NAN_INLINE explicit NanUcs2String(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Length(); - buf = new uint16_t[size + 1]; - toStr->Write(buf); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - NAN_INLINE uint16_t* operator*() { return buf; } - NAN_INLINE const uint16_t* operator*() const { return buf; } - - NAN_INLINE ~NanUcs2String() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanUcs2String(const NanUcs2String&); - void operator=(const NanUcs2String&); - - uint16_t *buf; - int size; - }; - -#endif // NODE_MODULE_VERSION - -typedef void (*NanFreeCallback)(char *data, void *hint); - -#define NAN_METHOD(name) _NAN_METHOD_RETURN_TYPE name(_NAN_METHOD_ARGS) -#define NAN_GETTER(name) \ - _NAN_GETTER_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_GETTER_ARGS) -#define NAN_SETTER(name) \ - _NAN_SETTER_RETURN_TYPE name( \ - v8::Local property \ - , v8::Local value \ - , _NAN_SETTER_ARGS) -#define NAN_PROPERTY_GETTER(name) \ - _NAN_PROPERTY_GETTER_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_PROPERTY_GETTER_ARGS) -#define NAN_PROPERTY_SETTER(name) \ - _NAN_PROPERTY_SETTER_RETURN_TYPE name( \ - v8::Local property \ - , v8::Local value \ - , _NAN_PROPERTY_SETTER_ARGS) -#define NAN_PROPERTY_ENUMERATOR(name) \ - _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE name(_NAN_PROPERTY_ENUMERATOR_ARGS) -#define NAN_PROPERTY_DELETER(name) \ - _NAN_PROPERTY_DELETER_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_PROPERTY_DELETER_ARGS) -#define NAN_PROPERTY_QUERY(name) \ - _NAN_PROPERTY_QUERY_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_PROPERTY_QUERY_ARGS) -# define NAN_INDEX_GETTER(name) \ - _NAN_INDEX_GETTER_RETURN_TYPE name(uint32_t index, _NAN_INDEX_GETTER_ARGS) -#define NAN_INDEX_SETTER(name) \ - _NAN_INDEX_SETTER_RETURN_TYPE name( \ - uint32_t index \ - , v8::Local value \ - , _NAN_INDEX_SETTER_ARGS) -#define NAN_INDEX_ENUMERATOR(name) \ - _NAN_INDEX_ENUMERATOR_RETURN_TYPE name(_NAN_INDEX_ENUMERATOR_ARGS) -#define NAN_INDEX_DELETER(name) \ - _NAN_INDEX_DELETER_RETURN_TYPE name( \ - uint32_t index \ - , _NAN_INDEX_DELETER_ARGS) -#define NAN_INDEX_QUERY(name) \ - _NAN_INDEX_QUERY_RETURN_TYPE name(uint32_t index, _NAN_INDEX_QUERY_ARGS) - -class NanCallback { - public: - NanCallback() { - NanScope(); - v8::Local obj = NanNew(); - NanAssignPersistent(handle, obj); - } - - explicit NanCallback(const v8::Handle &fn) { - NanScope(); - v8::Local obj = NanNew(); - NanAssignPersistent(handle, obj); - SetFunction(fn); - } - - ~NanCallback() { - if (handle.IsEmpty()) return; - NanDisposePersistent(handle); - } - - NAN_INLINE void SetFunction(const v8::Handle &fn) { - NanScope(); - NanNew(handle)->Set(kCallbackIndex, fn); - } - - NAN_INLINE v8::Local GetFunction() const { - NanEscapableScope(); - return NanEscapeScope(NanNew(handle)->Get(kCallbackIndex) - .As()); - } - - NAN_INLINE bool IsEmpty() const { - NanScope(); - return NanNew(handle)->Get(kCallbackIndex)->IsUndefined(); - } - - v8::Handle Call(int argc, v8::Handle argv[]) const { - NanEscapableScope(); -#if (NODE_MODULE_VERSION > 0x000B) // 0.11.12+ - v8::Isolate* isolate = v8::Isolate::GetCurrent(); - v8::Local callback = NanNew(handle)-> - Get(kCallbackIndex).As(); - return NanEscapeScope(node::MakeCallback( - isolate - , isolate->GetCurrentContext()->Global() - , callback - , argc - , argv - )); -#else -#if NODE_VERSION_AT_LEAST(0, 8, 0) - v8::Local callback = handle-> - Get(kCallbackIndex).As(); - return NanEscapeScope(node::MakeCallback( - v8::Context::GetCurrent()->Global() - , callback - , argc - , argv - )); -#else - v8::Local callback = handle-> - Get(kCallbackIndex).As(); - return NanEscapeScope(NanMakeCallback( - v8::Context::GetCurrent()->Global(), callback, argc, argv)); -#endif -#endif - } - - private: - v8::Persistent handle; - static const uint32_t kCallbackIndex = 0; -}; - -/* abstract */ class NanAsyncWorker { - public: - explicit NanAsyncWorker(NanCallback *callback_) - : callback(callback_), errmsg_(NULL) { - request.data = this; - - NanScope(); - v8::Local obj = NanNew(); - NanAssignPersistent(persistentHandle, obj); - } - - virtual ~NanAsyncWorker() { - NanScope(); - - if (!persistentHandle.IsEmpty()) - NanDisposePersistent(persistentHandle); - if (callback) - delete callback; - if (errmsg_) - delete[] errmsg_; - } - - virtual void WorkComplete() { - NanScope(); - - if (errmsg_ == NULL) - HandleOKCallback(); - else - HandleErrorCallback(); - delete callback; - callback = NULL; - } - - NAN_INLINE void SaveToPersistent( - const char *key, const v8::Local &obj) { - v8::Local handle = NanNew(persistentHandle); - handle->Set(NanNew(key), obj); - } - - v8::Local GetFromPersistent(const char *key) const { - NanEscapableScope(); - v8::Local handle = NanNew(persistentHandle); - return NanEscapeScope(handle->Get(NanNew(key)).As()); - } - - virtual void Execute() = 0; - - uv_work_t request; - - protected: - v8::Persistent persistentHandle; - NanCallback *callback; - - virtual void HandleOKCallback() { - callback->Call(0, NULL); - } - - virtual void HandleErrorCallback() { - NanScope(); - - v8::Local argv[] = { - v8::Exception::Error(NanNew(ErrorMessage())) - }; - callback->Call(1, argv); - } - - void SetErrorMessage(const char *msg) { - if (errmsg_) { - delete[] errmsg_; - } - - size_t size = strlen(msg) + 1; - errmsg_ = new char[size]; - memcpy(errmsg_, msg, size); - } - - const char* ErrorMessage() const { - return errmsg_; - } - - private: - char *errmsg_; -}; - -NAN_INLINE void NanAsyncExecute (uv_work_t* req) { - NanAsyncWorker *worker = static_cast(req->data); - worker->Execute(); -} - -NAN_INLINE void NanAsyncExecuteComplete (uv_work_t* req) { - NanAsyncWorker* worker = static_cast(req->data); - worker->WorkComplete(); - delete worker; -} - -NAN_INLINE void NanAsyncQueueWorker (NanAsyncWorker* worker) { - uv_queue_work( - uv_default_loop() - , &worker->request - , NanAsyncExecute - , (uv_after_work_cb)NanAsyncExecuteComplete - ); -} - -//// Base 64 //// - -#define _nan_base64_encoded_size(size) ((size + 2 - ((size + 2) % 3)) / 3 * 4) - -// Doesn't check for padding at the end. Can be 1-2 bytes over. -NAN_INLINE size_t _nan_base64_decoded_size_fast(size_t size) { - size_t remainder = size % 4; - - size = (size / 4) * 3; - if (remainder) { - if (size == 0 && remainder == 1) { - // special case: 1-byte input cannot be decoded - size = 0; - } else { - // non-padded input, add 1 or 2 extra bytes - size += 1 + (remainder == 3); - } - } - - return size; -} - -template -NAN_INLINE size_t _nan_base64_decoded_size( - const T* src - , size_t size -) { - if (size == 0) - return 0; - - if (src[size - 1] == '=') - size--; - if (size > 0 && src[size - 1] == '=') - size--; - - return _nan_base64_decoded_size_fast(size); -} - -// supports regular and URL-safe base64 -static const int _nan_unbase64_table[] = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -2, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63 - , 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1 - , -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 - , 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63 - , -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 - , 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 -}; - -#define _nan_unbase64(x) _nan_unbase64_table[(uint8_t)(x)] - -template static size_t _nan_base64_decode( - char* buf - , size_t len - , const T* src - , const size_t srcLen -) { - char* dst = buf; - char* dstEnd = buf + len; - const T* srcEnd = src + srcLen; - - while (src < srcEnd && dst < dstEnd) { - ptrdiff_t remaining = srcEnd - src; - char a, b, c, d; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining == 0 || *src == '=') break; - a = _nan_unbase64(*src++); - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 1 || *src == '=') break; - b = _nan_unbase64(*src++); - - *dst++ = (a << 2) | ((b & 0x30) >> 4); - if (dst == dstEnd) break; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 2 || *src == '=') break; - c = _nan_unbase64(*src++); - - *dst++ = ((b & 0x0F) << 4) | ((c & 0x3C) >> 2); - if (dst == dstEnd) break; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 3 || *src == '=') break; - d = _nan_unbase64(*src++); - - *dst++ = ((c & 0x03) << 6) | (d & 0x3F); - } - - return dst - buf; -} - -//// HEX //// - -template unsigned _nan_hex2bin(T c) { - if (c >= '0' && c <= '9') return c - '0'; - if (c >= 'A' && c <= 'F') return 10 + (c - 'A'); - if (c >= 'a' && c <= 'f') return 10 + (c - 'a'); - return static_cast(-1); -} - -template static size_t _nan_hex_decode( - char* buf - , size_t len - , const T* src - , const size_t srcLen -) { - size_t i; - for (i = 0; i < len && i * 2 + 1 < srcLen; ++i) { - unsigned a = _nan_hex2bin(src[i * 2 + 0]); - unsigned b = _nan_hex2bin(src[i * 2 + 1]); - if (!~a || !~b) return i; - buf[i] = a * 16 + b; - } - - return i; -} - -static bool _NanGetExternalParts( - v8::Handle val - , const char** data - , size_t* len -) { - if (node::Buffer::HasInstance(val)) { - *data = node::Buffer::Data(val.As()); - *len = node::Buffer::Length(val.As()); - return true; - } - - assert(val->IsString()); - v8::Local str = NanNew(val.As()); - - if (str->IsExternalAscii()) { - const v8::String::ExternalAsciiStringResource* ext; - ext = str->GetExternalAsciiStringResource(); - *data = ext->data(); - *len = ext->length(); - return true; - - } else if (str->IsExternal()) { - const v8::String::ExternalStringResource* ext; - ext = str->GetExternalStringResource(); - *data = reinterpret_cast(ext->data()); - *len = ext->length(); - return true; - } - - return false; -} - -namespace Nan { - enum Encoding {ASCII, UTF8, BASE64, UCS2, BINARY, HEX, BUFFER}; -} - -/* NAN_DEPRECATED */ NAN_INLINE void* _NanRawString( - v8::Handle from - , enum Nan::Encoding encoding - , size_t *datalen - , void *buf - , size_t buflen - , int flags -) { - NanScope(); - - size_t sz_; - size_t term_len = !(flags & v8::String::NO_NULL_TERMINATION); - char *data = NULL; - size_t len; - bool is_extern = _NanGetExternalParts( - from - , const_cast(&data) - , &len); - - if (is_extern && !term_len) { - NanSetPointerSafe(datalen, len); - return data; - } - - v8::Local toStr = from->ToString(); - - char *to = static_cast(buf); - - switch (encoding) { - case Nan::ASCII: -#if NODE_MODULE_VERSION < 0x000C - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } - NanSetPointerSafe( - datalen - , toStr->WriteAscii(to, 0, static_cast(sz_ + term_len), flags)); - return to; -#endif - case Nan::BINARY: - case Nan::BUFFER: - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } -#if NODE_MODULE_VERSION < 0x000C - { - uint16_t* twobytebuf = new uint16_t[sz_ + term_len]; - - size_t somelen = toStr->Write(twobytebuf, 0, - static_cast(sz_ + term_len), flags); - - for (size_t i = 0; i < sz_ + term_len && i < somelen + term_len; i++) { - unsigned char *b = reinterpret_cast(&twobytebuf[i]); - to[i] = *b; - } - - NanSetPointerSafe(datalen, somelen); - - delete[] twobytebuf; - return to; - } -#else - NanSetPointerSafe( - datalen, - toStr->WriteOneByte( - reinterpret_cast(to) - , 0 - , static_cast(sz_ + term_len) - , flags)); - return to; -#endif - case Nan::UTF8: - sz_ = toStr->Utf8Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } - NanSetPointerSafe( - datalen - , toStr->WriteUtf8(to, static_cast(sz_ + term_len) - , NULL, flags) - - term_len); - return to; - case Nan::BASE64: - { - v8::String::Value value(toStr); - sz_ = _nan_base64_decoded_size(*value, value.length()); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len); - } - NanSetPointerSafe( - datalen - , _nan_base64_decode(to, sz_, *value, value.length())); - if (term_len) { - to[sz_] = '\0'; - } - return to; - } - case Nan::UCS2: - { - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[(sz_ + term_len) * 2]; - } else { - assert(buflen >= (sz_ + term_len) * 2 && "too small buffer"); - } - - int bc = 2 * toStr->Write( - reinterpret_cast(to) - , 0 - , static_cast(sz_ + term_len) - , flags); - NanSetPointerSafe(datalen, bc); - return to; - } - case Nan::HEX: - { - v8::String::Value value(toStr); - sz_ = value.length(); - assert(!(sz_ & 1) && "bad hex data"); - if (to == NULL) { - to = new char[sz_ / 2 + term_len]; - } else { - assert(buflen >= sz_ / 2 + term_len && "too small buffer"); - } - NanSetPointerSafe( - datalen - , _nan_hex_decode(to, sz_ / 2, *value, value.length())); - } - if (term_len) { - to[sz_ / 2] = '\0'; - } - return to; - default: - assert(0 && "unknown encoding"); - } - return to; -} - -NAN_DEPRECATED NAN_INLINE void* NanRawString( - v8::Handle from - , enum Nan::Encoding encoding - , size_t *datalen - , void *buf - , size_t buflen - , int flags -) { - return _NanRawString(from, encoding, datalen, buf, buflen, flags); -} - - -NAN_DEPRECATED NAN_INLINE char* NanCString( - v8::Handle from - , size_t *datalen - , char *buf = NULL - , size_t buflen = 0 - , int flags = v8::String::NO_OPTIONS -) { - return static_cast( - _NanRawString(from, Nan::UTF8, datalen, buf, buflen, flags) - ); -} - -NAN_INLINE void NanSetPrototypeTemplate( - v8::Local templ - , const char *name - , v8::Handle value -) { - NanSetTemplate(templ->PrototypeTemplate(), name, value); -} - -NAN_INLINE void NanSetPrototypeTemplate( - v8::Local templ - , v8::Handle name - , v8::Handle value - , v8::PropertyAttribute attributes -) { - NanSetTemplate(templ->PrototypeTemplate(), name, value, attributes); -} - -NAN_INLINE void NanSetInstanceTemplate( - v8::Local templ - , const char *name - , v8::Handle value -) { - NanSetTemplate(templ->InstanceTemplate(), name, value); -} - -NAN_INLINE void NanSetInstanceTemplate( - v8::Local templ - , v8::Handle name - , v8::Handle value - , v8::PropertyAttribute attributes -) { - NanSetTemplate(templ->InstanceTemplate(), name, value, attributes); -} - -#endif // NAN_H_ diff --git a/node_modules/sqlite3/node_modules/nan/nan.h.orig b/node_modules/sqlite3/node_modules/nan/nan.h.orig deleted file mode 100644 index cf29006..0000000 --- a/node_modules/sqlite3/node_modules/nan/nan.h.orig +++ /dev/null @@ -1,2484 +0,0 @@ -/********************************************************************* - * NAN - Native Abstractions for Node.js - * - * Copyright (c) 2014 NAN contributors: - * - Rod Vagg - * - Benjamin Byholm - * - Trevor Norris - * - Nathan Rajlich - * - Brett Lawson - * - Ben Noordhuis - * - * MIT License - * - * Version 1.4.0: current Node unstable: 0.11.14, Node stable: 0.10.33 - * - * See https://github.com/rvagg/nan for the latest update to this file - **********************************************************************************/ - -#ifndef NAN_H_ -#define NAN_H_ - -#include -#include -#include -#include -#include -#include -#include -#if defined(_MSC_VER) -# pragma warning( disable : 4530 ) -#endif -#include - -#if defined(__GNUC__) && !(defined(DEBUG) && DEBUG) -# define NAN_INLINE inline __attribute__((always_inline)) -#elif defined(_MSC_VER) && !(defined(DEBUG) && DEBUG) -# define NAN_INLINE __forceinline -#else -# define NAN_INLINE inline -#endif - -#if defined(__GNUC__) && \ - !(defined(V8_DISABLE_DEPRECATIONS) && V8_DISABLE_DEPRECATIONS) -# define NAN_DEPRECATED __attribute__((deprecated)) -#elif defined(_MSC_VER) && \ - !(defined(V8_DISABLE_DEPRECATIONS) && V8_DISABLE_DEPRECATIONS) -# define NAN_DEPRECATED __declspec(deprecated) -#else -# define NAN_DEPRECATED -#endif - -<<<<<<< HEAD -======= -#undef notset - - -#if (NODE_MODULE_VERSION < 12) -typedef v8::InvocationCallback NanFunctionCallback; -typedef v8::Script NanUnboundScript; -typedef v8::Script NanBoundScript; -#else -typedef v8::FunctionCallback NanFunctionCallback; -typedef v8::UnboundScript NanUnboundScript; -typedef v8::Script NanBoundScript; -#endif - -#define NAN_NEW_NAN_NEW - -#ifdef NAN_NEW_NAN_NEW -# include -#endif - ->>>>>>> agnat/feature/NanNew_redesign -// some generic helpers - -template NAN_INLINE bool NanSetPointerSafe( - T *var - , T val -) { - if (var) { - *var = val; - return true; - } else { - return false; - } -} - -template NAN_INLINE T NanGetPointerSafe( - T *var - , T fallback = reinterpret_cast(0) -) { - if (var) { - return *var; - } else { - return fallback; - } -} - -NAN_INLINE bool NanBooleanOptionValue( - v8::Local optionsObj - , v8::Handle opt, bool def -) { - if (def) { - return optionsObj.IsEmpty() - || !optionsObj->Has(opt) - || optionsObj->Get(opt)->BooleanValue(); - } else { - return !optionsObj.IsEmpty() - && optionsObj->Has(opt) - && optionsObj->Get(opt)->BooleanValue(); - } -} - -NAN_INLINE bool NanBooleanOptionValue( - v8::Local optionsObj - , v8::Handle opt -) { - return NanBooleanOptionValue(optionsObj, opt, false); -} - -NAN_INLINE uint32_t NanUInt32OptionValue( - v8::Local optionsObj - , v8::Handle opt - , uint32_t def -) { - return !optionsObj.IsEmpty() - && optionsObj->Has(opt) - && optionsObj->Get(opt)->IsNumber() - ? optionsObj->Get(opt)->Uint32Value() - : def; -} - -template -v8::Local NanNew(v8::Handle); - -template -NAN_INLINE v8::Local _NanEnsureLocal(v8::Handle val) { - return NanNew(val); -} - -template -NAN_INLINE v8::Local _NanEnsureLocal(v8::Local val) { - return val; -} - -#if (NODE_MODULE_VERSION > 0x000B) -// Node 0.11+ (0.11.3 and below won't compile with these) - -# define _NAN_METHOD_ARGS_TYPE const v8::FunctionCallbackInfo& -# define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args -# define _NAN_METHOD_RETURN_TYPE void - -# define _NAN_GETTER_ARGS_TYPE const v8::PropertyCallbackInfo& -# define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args -# define _NAN_GETTER_RETURN_TYPE void - -# define _NAN_SETTER_ARGS_TYPE const v8::PropertyCallbackInfo& -# define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args -# define _NAN_SETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_GETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args -# define _NAN_PROPERTY_GETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_SETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args -# define _NAN_PROPERTY_SETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args -# define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE void - -# define _NAN_PROPERTY_DELETER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_DELETER_ARGS \ - _NAN_PROPERTY_DELETER_ARGS_TYPE args -# define _NAN_PROPERTY_DELETER_RETURN_TYPE void - -# define _NAN_PROPERTY_QUERY_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args -# define _NAN_PROPERTY_QUERY_RETURN_TYPE void - -# define _NAN_INDEX_GETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args -# define _NAN_INDEX_GETTER_RETURN_TYPE void - -# define _NAN_INDEX_SETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args -# define _NAN_INDEX_SETTER_RETURN_TYPE void - -# define _NAN_INDEX_ENUMERATOR_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args -# define _NAN_INDEX_ENUMERATOR_RETURN_TYPE void - -# define _NAN_INDEX_DELETER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args -# define _NAN_INDEX_DELETER_RETURN_TYPE void - -# define _NAN_INDEX_QUERY_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args -# define _NAN_INDEX_QUERY_RETURN_TYPE void - -#ifndef NAN_NEW_NAN_NEW - template - NAN_INLINE v8::Local NanNew() { - return T::New(v8::Isolate::GetCurrent()); - } - - template - NAN_INLINE v8::Local NanNew(P arg1) { - return T::New(v8::Isolate::GetCurrent(), arg1); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle receiver - , int argc - , v8::Handle argv[] = 0) { - return v8::Signature::New(v8::Isolate::GetCurrent(), receiver, argc, argv); - } - - template - NAN_INLINE v8::Local NanNew( - NanFunctionCallback callback - , v8::Handle data = v8::Handle() - , v8::Handle signature = v8::Handle()) { - return T::New(v8::Isolate::GetCurrent(), callback, data, signature); - } - - template - NAN_INLINE v8::Local NanNew(v8::Handle arg1) { - return v8::Local::New(v8::Isolate::GetCurrent(), arg1); - } - - template - NAN_INLINE v8::Local NanNew(const v8::Persistent &arg1) { - return v8::Local::New(v8::Isolate::GetCurrent(), arg1); - } - - template - NAN_INLINE v8::Local NanNew(P arg1, int arg2) { - return T::New(v8::Isolate::GetCurrent(), arg1, arg2); - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::Array::New(v8::Isolate::GetCurrent()); - } - - template<> - NAN_INLINE v8::Local NanNew(int length) { - return v8::Array::New(v8::Isolate::GetCurrent(), length); - } - - template<> - NAN_INLINE v8::Local NanNew(double time) { - return v8::Date::New(v8::Isolate::GetCurrent(), time).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(int time) { - return v8::Date::New(v8::Isolate::GetCurrent(), time).As(); - } - - template - NAN_INLINE v8::Local NanNew( - P s - , const v8::ScriptOrigin& origin - ) { - v8::ScriptCompiler::Source source(s, origin); - return v8::ScriptCompiler::CompileUnbound( - v8::Isolate::GetCurrent(), &source); - } - - template<> - NAN_INLINE v8::Local NanNew( - v8::Local s - ) { - v8::ScriptCompiler::Source source(s); - return v8::ScriptCompiler::CompileUnbound( - v8::Isolate::GetCurrent(), &source); - } - - template<> - NAN_INLINE v8::Local NanNew(bool value) { - return v8::BooleanObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Local value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Handle value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(double val) { - return v8::NumberObject::New( - v8::Isolate::GetCurrent(), val).As(); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Uint32::NewFromUnsigned( - v8::Isolate::GetCurrent(), val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Uint32::NewFromUnsigned( - v8::Isolate::GetCurrent(), val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Int32::New(v8::Isolate::GetCurrent(), val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Int32::New(v8::Isolate::GetCurrent(), val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Integer::NewFromUnsigned(v8::Isolate::GetCurrent(), val); - } - - template<> - NAN_INLINE v8::Local NanNew( - char *arg - , int length) { - return v8::String::NewFromUtf8( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew( - const char *arg - , int length) { - return v8::String::NewFromUtf8( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew(char *arg) { - return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - const char *arg) { - return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - uint8_t *arg - , int length) { - return v8::String::NewFromOneByte( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg - , int length) { - return v8::String::NewFromOneByte( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew(uint8_t *arg) { - return v8::String::NewFromOneByte(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg) { - return v8::String::NewFromOneByte(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - uint16_t *arg - , int length) { - return v8::String::NewFromTwoByte( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint16_t *arg - , int length) { - return v8::String::NewFromTwoByte( - v8::Isolate::GetCurrent() - , arg - , v8::String::kNormalString - , length); - } - template<> - NAN_INLINE v8::Local NanNew( - uint16_t *arg) { - return v8::String::NewFromTwoByte(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint16_t *arg) { - return v8::String::NewFromTwoByte(v8::Isolate::GetCurrent(), arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - std::string arg) { - return NanNew(arg.c_str(), static_cast(arg.size())); - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::String::Empty(v8::Isolate::GetCurrent()); - } - - NAN_INLINE v8::Local NanNew(const char* arg, int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const uint8_t* arg - , int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const uint16_t* arg - , int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const std::string& arg) { - return NanNew(arg.c_str(), static_cast(arg.size())); - } - - NAN_INLINE v8::Local NanNew(double val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(int val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(unsigned int val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(bool val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalStringResource *resource) { - return v8::String::NewExternal(v8::Isolate::GetCurrent(), resource); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalAsciiStringResource *resource) { - return v8::String::NewExternal(v8::Isolate::GetCurrent(), resource); - } -#endif - -# define NanScope() v8::HandleScope scope(v8::Isolate::GetCurrent()) -# define NanEscapableScope() \ - v8::EscapableHandleScope scope(v8::Isolate::GetCurrent()) - -# define NanEscapeScope(val) scope.Escape(_NanEnsureLocal(val)) -# define NanLocker() v8::Locker locker(v8::Isolate::GetCurrent()) -# define NanUnlocker() v8::Unlocker unlocker(v8::Isolate::GetCurrent()) -# define NanReturnValue(value) return args.GetReturnValue().Set(value) -# define NanReturnUndefined() return -# define NanReturnHolder() NanReturnValue(args.Holder()) -# define NanReturnThis() NanReturnValue(args.This()) -# define NanReturnNull() return args.GetReturnValue().SetNull() -# define NanReturnEmptyString() return args.GetReturnValue().SetEmptyString() - -# define NanObjectWrapHandle(obj) obj->handle() - - NAN_INLINE v8::Local NanUndefined() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::Undefined(v8::Isolate::GetCurrent()))); - } - - NAN_INLINE v8::Local NanNull() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::Null(v8::Isolate::GetCurrent()))); - } - - NAN_INLINE v8::Local NanTrue() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::True(v8::Isolate::GetCurrent()))); - } - - NAN_INLINE v8::Local NanFalse() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::False(v8::Isolate::GetCurrent()))); - } - - NAN_INLINE int NanAdjustExternalMemory(int bc) { - return static_cast( - v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(bc)); - } - - NAN_INLINE void NanSetTemplate( - v8::Handle templ - , const char *name - , v8::Handle value) { - templ->Set(v8::Isolate::GetCurrent(), name, value); - } - - NAN_INLINE void NanSetTemplate( - v8::Handle templ - , v8::Handle name - , v8::Handle value - , v8::PropertyAttribute attributes) { - templ->Set(name, value, attributes); - } - - NAN_INLINE v8::Local NanGetCurrentContext() { - return v8::Isolate::GetCurrent()->GetCurrentContext(); - } - - NAN_INLINE void* NanGetInternalFieldPointer( - v8::Handle object - , int index) { - return object->GetAlignedPointerFromInternalField(index); - } - - NAN_INLINE void NanSetInternalFieldPointer( - v8::Handle object - , int index - , void* value) { - object->SetAlignedPointerInInternalField(index, value); - } - -# define NAN_GC_CALLBACK(name) \ - void name(v8::Isolate *isolate, v8::GCType type, v8::GCCallbackFlags flags) - - NAN_INLINE void NanAddGCEpilogueCallback( - v8::Isolate::GCEpilogueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - v8::Isolate::GetCurrent()->AddGCEpilogueCallback(callback, gc_type_filter); - } - - NAN_INLINE void NanRemoveGCEpilogueCallback( - v8::Isolate::GCEpilogueCallback callback) { - v8::Isolate::GetCurrent()->RemoveGCEpilogueCallback(callback); - } - - NAN_INLINE void NanAddGCPrologueCallback( - v8::Isolate::GCPrologueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - v8::Isolate::GetCurrent()->AddGCPrologueCallback(callback, gc_type_filter); - } - - NAN_INLINE void NanRemoveGCPrologueCallback( - v8::Isolate::GCPrologueCallback callback) { - v8::Isolate::GetCurrent()->RemoveGCPrologueCallback(callback); - } - - NAN_INLINE void NanGetHeapStatistics( - v8::HeapStatistics *heap_statistics) { - v8::Isolate::GetCurrent()->GetHeapStatistics(heap_statistics); - } - - NAN_DEPRECATED NAN_INLINE v8::Local NanSymbol( - const char* data, int length = -1) { - return NanNew(data, length); - } - - template - NAN_INLINE void NanAssignPersistent( - v8::Persistent& handle - , v8::Handle obj) { - handle.Reset(v8::Isolate::GetCurrent(), obj); - } - - template - NAN_INLINE void NanAssignPersistent( - v8::Persistent& handle - , const v8::Persistent& obj) { - handle.Reset(v8::Isolate::GetCurrent(), obj); - } - - template - class _NanWeakCallbackData; - - template - struct _NanWeakCallbackInfo { - typedef void (*Callback)(const _NanWeakCallbackData& data); - NAN_INLINE _NanWeakCallbackInfo(v8::Handle handle, P* param, Callback cb) - : parameter(param), callback(cb) { - NanAssignPersistent(persistent, handle); - } - - NAN_INLINE ~_NanWeakCallbackInfo() { - persistent.Reset(); - } - - P* const parameter; - Callback const callback; - v8::Persistent persistent; - }; - - template - class _NanWeakCallbackData { - public: - NAN_INLINE _NanWeakCallbackData(_NanWeakCallbackInfo *info) - : info_(info) { } - - NAN_INLINE v8::Local GetValue() const { - return NanNew(info_->persistent); - } - - NAN_INLINE P* GetParameter() const { return info_->parameter; } - - NAN_INLINE bool IsNearDeath() const { - return info_->persistent.IsNearDeath(); - } - - NAN_INLINE void Revive() const; - - NAN_INLINE _NanWeakCallbackInfo* GetCallbackInfo() const { - return info_; - } - - NAN_DEPRECATED NAN_INLINE void Dispose() const { - } - - private: - _NanWeakCallbackInfo* info_; - }; - - template - static void _NanWeakCallbackDispatcher( - const v8::WeakCallbackData > &data) { - _NanWeakCallbackInfo *info = data.GetParameter(); - _NanWeakCallbackData wcbd(info); - info->callback(wcbd); - if (wcbd.IsNearDeath()) { - delete wcbd.GetCallbackInfo(); - } - } - - template - NAN_INLINE void _NanWeakCallbackData::Revive() const { - info_->persistent.SetWeak(info_, &_NanWeakCallbackDispatcher); - } - -template -NAN_INLINE _NanWeakCallbackInfo* NanMakeWeakPersistent( - v8::Handle handle - , P* parameter - , typename _NanWeakCallbackInfo::Callback callback) { - _NanWeakCallbackInfo *cbinfo = - new _NanWeakCallbackInfo(handle, parameter, callback); - cbinfo->persistent.SetWeak(cbinfo, &_NanWeakCallbackDispatcher); - return cbinfo; -} - -# define NAN_WEAK_CALLBACK(name) \ - template \ - static void name(const _NanWeakCallbackData &data) - -# define _NAN_ERROR(fun, errmsg) fun(NanNew(errmsg)) - -# define _NAN_THROW_ERROR(fun, errmsg) \ - do { \ - NanScope(); \ - v8::Isolate::GetCurrent()->ThrowException(_NAN_ERROR(fun, errmsg)); \ - } while (0); - - NAN_INLINE v8::Local NanError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE void NanThrowError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE void NanThrowError(v8::Handle error) { - NanScope(); - v8::Isolate::GetCurrent()->ThrowException(error); - } - - NAN_INLINE v8::Local NanError( - const char *msg - , const int errorNumber - ) { - v8::Local err = v8::Exception::Error(NanNew(msg)); - v8::Local obj = err.As(); - obj->Set(NanNew("code"), NanNew(errorNumber)); - return err; - } - - NAN_INLINE void NanThrowError( - const char *msg - , const int errorNumber - ) { - NanThrowError(NanError(msg, errorNumber)); - } - - NAN_INLINE v8::Local NanTypeError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE void NanThrowTypeError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE v8::Local NanRangeError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::RangeError, errmsg); - } - - NAN_INLINE void NanThrowRangeError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg); - } - - template NAN_INLINE void NanDisposePersistent( - v8::Persistent &handle - ) { - handle.Reset(); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - char *data - , size_t length - , node::smalloc::FreeCallback callback - , void *hint - ) { - return node::Buffer::New( - v8::Isolate::GetCurrent(), data, length, callback, hint); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - const char *data - , uint32_t size - ) { - return node::Buffer::New(v8::Isolate::GetCurrent(), data, size); - } - - NAN_INLINE v8::Local NanNewBufferHandle (uint32_t size) { - return node::Buffer::New(v8::Isolate::GetCurrent(), size); - } - - NAN_INLINE v8::Local NanBufferUse( - char* data - , uint32_t size - ) { - return node::Buffer::Use(v8::Isolate::GetCurrent(), data, size); - } - - NAN_INLINE bool NanHasInstance( - const v8::Persistent& function_template - , v8::Handle value - ) { - return NanNew(function_template)->HasInstance(value); - } - - NAN_INLINE v8::Local NanNewContextHandle( - v8::ExtensionConfiguration* extensions = NULL - , v8::Handle tmpl = v8::Handle() - , v8::Handle obj = v8::Handle() - ) { - v8::Isolate* isolate = v8::Isolate::GetCurrent(); - return v8::Local::New( - isolate - , v8::Context::New(isolate, extensions, tmpl, obj) - ); - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - , const v8::ScriptOrigin& origin - ) { - v8::ScriptCompiler::Source source(s, origin); - return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &source); - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - ) { - v8::ScriptCompiler::Source source(s); - return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &source); - } - - NAN_INLINE v8::Local NanRunScript( - v8::Handle script - ) { - return script->BindToCurrentContext()->Run(); - } - - NAN_INLINE v8::Local NanRunScript( - v8::Handle script - ) { - return script->Run(); - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , v8::Handle func - , int argc - , v8::Handle* argv) { - return NanNew(node::MakeCallback( - v8::Isolate::GetCurrent(), target, func, argc, argv)); - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , v8::Handle symbol - , int argc - , v8::Handle* argv) { - return NanNew(node::MakeCallback( - v8::Isolate::GetCurrent(), target, symbol, argc, argv)); - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , const char* method - , int argc - , v8::Handle* argv) { - return NanNew(node::MakeCallback( - v8::Isolate::GetCurrent(), target, method, argc, argv)); - } - - template - NAN_INLINE void NanSetIsolateData( - v8::Isolate *isolate - , T *data - ) { - isolate->SetData(0, data); - } - - template - NAN_INLINE T *NanGetIsolateData( - v8::Isolate *isolate - ) { - return static_cast(isolate->GetData(0)); - } - - class NanAsciiString { - public: - NAN_INLINE explicit NanAsciiString(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Length(); - buf = new char[size + 1]; - size = toStr->WriteOneByte(reinterpret_cast(buf)); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - - NAN_INLINE char* operator*() { return buf; } - NAN_INLINE const char* operator*() const { return buf; } - - NAN_INLINE ~NanAsciiString() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanAsciiString(const NanAsciiString&); - void operator=(const NanAsciiString&); - - char *buf; - int size; - }; - - class NanUtf8String { - public: - NAN_INLINE explicit NanUtf8String(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Utf8Length(); - buf = new char[size + 1]; - toStr->WriteUtf8(buf); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - NAN_INLINE char* operator*() { return buf; } - NAN_INLINE const char* operator*() const { return buf; } - - NAN_INLINE ~NanUtf8String() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanUtf8String(const NanUtf8String&); - void operator=(const NanUtf8String&); - - char *buf; - int size; - }; - - class NanUcs2String { - public: - NAN_INLINE explicit NanUcs2String(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Length(); - buf = new uint16_t[size + 1]; - toStr->Write(buf); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - NAN_INLINE uint16_t* operator*() { return buf; } - NAN_INLINE const uint16_t* operator*() const { return buf; } - - NAN_INLINE ~NanUcs2String() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanUcs2String(const NanUcs2String&); - void operator=(const NanUcs2String&); - - uint16_t *buf; - int size; - }; - -#else -// Node 0.8 and 0.10 - -# define _NAN_METHOD_ARGS_TYPE const v8::Arguments& -# define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args -# define _NAN_METHOD_RETURN_TYPE v8::Handle - -# define _NAN_GETTER_ARGS_TYPE const v8::AccessorInfo & -# define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args -# define _NAN_GETTER_RETURN_TYPE v8::Handle - -# define _NAN_SETTER_ARGS_TYPE const v8::AccessorInfo & -# define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args -# define _NAN_SETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_GETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args -# define _NAN_PROPERTY_GETTER_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_SETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args -# define _NAN_PROPERTY_SETTER_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args -# define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_DELETER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_DELETER_ARGS _NAN_PROPERTY_DELETER_ARGS_TYPE args -# define _NAN_PROPERTY_DELETER_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_QUERY_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args -# define _NAN_PROPERTY_QUERY_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_GETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args -# define _NAN_INDEX_GETTER_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_SETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args -# define _NAN_INDEX_SETTER_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args -# define _NAN_INDEX_ENUMERATOR_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_DELETER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args -# define _NAN_INDEX_DELETER_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_QUERY_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args -# define _NAN_INDEX_QUERY_RETURN_TYPE v8::Handle - - NAN_DEPRECATED NAN_INLINE v8::Local NanSymbol( - const char* data, int length = -1) { - return v8::String::NewSymbol(data, length); - } - -#ifndef NAN_NEW_NAN_NEW - template - NAN_INLINE v8::Local NanNew() { - return T::New(); - } - - template - NAN_INLINE v8::Local NanNew(v8::Handle arg) { - return v8::Local::New(arg); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle receiver - , int argc - , v8::Handle argv[] = 0) { - return v8::Signature::New(receiver, argc, argv); - } - - template - NAN_INLINE v8::Local NanNew( - NanFunctionCallback callback - , v8::Handle data = v8::Handle() - , v8::Handle signature = v8::Handle()) { - return T::New(callback, data, signature); - } - - template - NAN_INLINE v8::Local NanNew(const v8::Persistent &arg) { - return v8::Local::New(arg); - } - - template - NAN_INLINE v8::Local NanNew(P arg) { - return _NanEnsureLocal(T::New(arg)); - } - - template - NAN_INLINE v8::Local NanNew(P arg, int length) { - return _NanEnsureLocal(T::New(arg, length)); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::Array::New(); - } - - template<> - NAN_INLINE v8::Local NanNew(int length) { - return v8::Array::New(length); - } - - template<> - NAN_INLINE v8::Local NanNew(double time) { - return v8::Date::New(time).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(int time) { - return v8::Date::New(time).As(); - } - -<<<<<<< HEAD - typedef v8::Script NanUnboundScript; - typedef v8::Script NanBoundScript; -======= - template<> - NAN_INLINE v8::Local NanNew(bool value) { - return v8::Local::New(v8::Boolean::New(value)); - } ->>>>>>> agnat/feature/NanNew_redesign - - template - NAN_INLINE v8::Local NanNew( - P s - , const v8::ScriptOrigin& origin - ) { - return v8::Script::New(s, const_cast(&origin)); - } - - template<> - NAN_INLINE v8::Local NanNew( - v8::Local s - ) { - return v8::Script::New(s); - } - - template<> - NAN_INLINE v8::Local NanNew(bool value) { - return v8::BooleanObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Local value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Handle value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(double val) { - return v8::NumberObject::New(val).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Uint32::NewFromUnsigned(val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Uint32::NewFromUnsigned(val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Int32::New(val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Int32::New(val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Integer::NewFromUnsigned(val); - } - - template<> - NAN_INLINE v8::Local NanNew( - uint8_t *arg - , int length) { - int len = length; - if (len < 0) { - size_t temp = strlen(reinterpret_cast(arg)); - assert(temp <= INT_MAX && "too long string"); - len = static_cast(temp); - } - uint16_t *warg = new uint16_t[len]; - for (int i = 0; i < len; i++) { - warg[i] = arg[i]; - } - v8::Local retval = v8::String::New(warg, len); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg - , int length) { - int len = length; - if (len < 0) { - size_t temp = strlen(reinterpret_cast(arg)); - assert(temp <= INT_MAX && "too long string"); - len = static_cast(temp); - } - uint16_t *warg = new uint16_t[len]; - for (int i = 0; i < len; i++) { - warg[i] = arg[i]; - } - v8::Local retval = v8::String::New(warg, len); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew(uint8_t *arg) { - size_t temp = strlen(reinterpret_cast(arg)); - assert(temp <= INT_MAX && "too long string"); - int length = static_cast(temp); - uint16_t *warg = new uint16_t[length]; - for (int i = 0; i < length; i++) { - warg[i] = arg[i]; - } - - v8::Local retval = v8::String::New(warg, length); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg) { - size_t temp = strlen(reinterpret_cast(arg)); - assert(temp <= INT_MAX && "too long string"); - int length = static_cast(temp); - uint16_t *warg = new uint16_t[length]; - for (int i = 0; i < length; i++) { - warg[i] = arg[i]; - } - v8::Local retval = v8::String::New(warg, length); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew( - std::string arg) { - return NanNew(arg.c_str(), static_cast(arg.size())); - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::String::Empty(); - } - - NAN_INLINE v8::Local NanNew(const char* arg, int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const uint8_t* arg - , int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const uint16_t* arg - , int length = -1) { - return NanNew(arg, length); - } - - NAN_INLINE v8::Local NanNew( - const std::string& arg) { - return NanNew(arg.c_str(), static_cast(arg.size())); - } - - NAN_INLINE v8::Local NanNew(double val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(int val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(unsigned int val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew(bool val) { - return NanNew(val); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalStringResource *resource) { - return v8::String::NewExternal(resource); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalAsciiStringResource *resource) { - return v8::String::NewExternal(resource); - } - -#endif - -# define NanScope() v8::HandleScope scope -# define NanEscapableScope() v8::HandleScope scope -# define NanEscapeScope(val) scope.Close(val) -# define NanLocker() v8::Locker locker -# define NanUnlocker() v8::Unlocker unlocker -# define NanReturnValue(value) return scope.Close(value) -# define NanReturnHolder() NanReturnValue(args.Holder()) -# define NanReturnThis() NanReturnValue(args.This()) -# define NanReturnUndefined() return v8::Undefined() -# define NanReturnNull() return v8::Null() -# define NanReturnEmptyString() return v8::String::Empty() -# define NanObjectWrapHandle(obj) v8::Local::New(obj->handle_) - - NAN_INLINE v8::Local NanUndefined() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::Undefined())); - } - - NAN_INLINE v8::Local NanNull() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::Null())); - } - - NAN_INLINE v8::Local NanTrue() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::True())); - } - - NAN_INLINE v8::Local NanFalse() { - NanEscapableScope(); - return NanEscapeScope(NanNew(v8::False())); - } - - NAN_INLINE int NanAdjustExternalMemory(int bc) { - return static_cast(v8::V8::AdjustAmountOfExternalAllocatedMemory(bc)); - } - - NAN_INLINE void NanSetTemplate( - v8::Handle templ - , const char *name - , v8::Handle value) { - templ->Set(name, value); - } - - NAN_INLINE void NanSetTemplate( - v8::Handle templ - , v8::Handle name - , v8::Handle value - , v8::PropertyAttribute attributes) { - templ->Set(name, value, attributes); - } - - NAN_INLINE v8::Local NanGetCurrentContext() { - return v8::Context::GetCurrent(); - } - - NAN_INLINE void* NanGetInternalFieldPointer( - v8::Handle object - , int index) { - return object->GetPointerFromInternalField(index); - } - - NAN_INLINE void NanSetInternalFieldPointer( - v8::Handle object - , int index - , void* value) { - object->SetPointerInInternalField(index, value); - } - -# define NAN_GC_CALLBACK(name) \ - void name(v8::GCType type, v8::GCCallbackFlags flags) - - NAN_INLINE void NanAddGCEpilogueCallback( - v8::GCEpilogueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - v8::V8::AddGCEpilogueCallback(callback, gc_type_filter); - } - NAN_INLINE void NanRemoveGCEpilogueCallback( - v8::GCEpilogueCallback callback) { - v8::V8::RemoveGCEpilogueCallback(callback); - } - NAN_INLINE void NanAddGCPrologueCallback( - v8::GCPrologueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - v8::V8::AddGCPrologueCallback(callback, gc_type_filter); - } - NAN_INLINE void NanRemoveGCPrologueCallback( - v8::GCPrologueCallback callback) { - v8::V8::RemoveGCPrologueCallback(callback); - } - NAN_INLINE void NanGetHeapStatistics( - v8::HeapStatistics *heap_statistics) { - v8::V8::GetHeapStatistics(heap_statistics); - } - - template - NAN_INLINE void NanAssignPersistent( - v8::Persistent& handle - , v8::Handle obj) { - handle.Dispose(); - handle = v8::Persistent::New(obj); - } - - template - class _NanWeakCallbackData; - - template - struct _NanWeakCallbackInfo { - typedef void (*Callback)(const _NanWeakCallbackData &data); - NAN_INLINE _NanWeakCallbackInfo(v8::Handle handle, P* param, Callback cb) - : parameter(param) - , callback(cb) - , persistent(v8::Persistent::New(handle)) { } - - NAN_INLINE ~_NanWeakCallbackInfo() { - persistent.Dispose(); - persistent.Clear(); - } - - P* const parameter; - Callback const callback; - v8::Persistent persistent; - }; - - template - class _NanWeakCallbackData { - public: - NAN_INLINE _NanWeakCallbackData(_NanWeakCallbackInfo *info) - : info_(info) { } - - NAN_INLINE v8::Local GetValue() const { - return NanNew(info_->persistent); - } - - NAN_INLINE P* GetParameter() const { return info_->parameter; } - - NAN_INLINE bool IsNearDeath() const { - return info_->persistent.IsNearDeath(); - } - - NAN_INLINE void Revive() const; - - NAN_INLINE _NanWeakCallbackInfo* GetCallbackInfo() const { - return info_; - } - - NAN_DEPRECATED NAN_INLINE void Dispose() const { - } - - private: - _NanWeakCallbackInfo* info_; - }; - - template - static void _NanWeakPersistentDispatcher( - v8::Persistent object, void *data) { - _NanWeakCallbackInfo* info = - static_cast<_NanWeakCallbackInfo*>(data); - _NanWeakCallbackData wcbd(info); - info->callback(wcbd); - if (wcbd.IsNearDeath()) { - delete wcbd.GetCallbackInfo(); - } - } - - template - NAN_INLINE void _NanWeakCallbackData::Revive() const { - info_->persistent.MakeWeak( - info_ - , &_NanWeakPersistentDispatcher); - } - - template - NAN_INLINE _NanWeakCallbackInfo* NanMakeWeakPersistent( - v8::Handle handle - , P* parameter - , typename _NanWeakCallbackInfo::Callback callback) { - _NanWeakCallbackInfo *cbinfo = - new _NanWeakCallbackInfo(handle, parameter, callback); - cbinfo->persistent.MakeWeak( - cbinfo - , &_NanWeakPersistentDispatcher); - return cbinfo; - } - -# define NAN_WEAK_CALLBACK(name) \ - template \ - static void name(const _NanWeakCallbackData &data) - -# define _NAN_ERROR(fun, errmsg) \ - fun(v8::String::New(errmsg)) - -# define _NAN_THROW_ERROR(fun, errmsg) \ - do { \ - NanScope(); \ - return v8::Local::New( \ - v8::ThrowException(_NAN_ERROR(fun, errmsg))); \ - } while (0); - - NAN_INLINE v8::Local NanError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE v8::Local NanThrowError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE v8::Local NanThrowError( - v8::Handle error - ) { - NanScope(); - return v8::Local::New(v8::ThrowException(error)); - } - - NAN_INLINE v8::Local NanError( - const char *msg - , const int errorNumber - ) { - v8::Local err = v8::Exception::Error(v8::String::New(msg)); - v8::Local obj = err.As(); - obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber)); - return err; - } - - NAN_INLINE v8::Local NanThrowError( - const char *msg - , const int errorNumber - ) { - return NanThrowError(NanError(msg, errorNumber)); - } - - NAN_INLINE v8::Local NanTypeError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE v8::Local NanThrowTypeError( - const char* errmsg - ) { - _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE v8::Local NanRangeError( - const char* errmsg - ) { - return _NAN_ERROR(v8::Exception::RangeError, errmsg); - } - - NAN_INLINE v8::Local NanThrowRangeError( - const char* errmsg - ) { - _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg); - } - - template - NAN_INLINE void NanDisposePersistent( - v8::Persistent &handle) { // NOLINT(runtime/references) - handle.Dispose(); - handle.Clear(); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - char *data - , size_t length - , node::Buffer::free_callback callback - , void *hint - ) { - return NanNew( - node::Buffer::New(data, length, callback, hint)->handle_); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - const char *data - , uint32_t size - ) { -#if NODE_MODULE_VERSION >= 0x000B - return NanNew(node::Buffer::New(data, size)->handle_); -#else - return NanNew( - node::Buffer::New(const_cast(data), size)->handle_); -#endif - } - - NAN_INLINE v8::Local NanNewBufferHandle (uint32_t size) { - return NanNew(node::Buffer::New(size)->handle_); - } - - NAN_INLINE void FreeData(char *data, void *hint) { - delete[] data; - } - - NAN_INLINE v8::Local NanBufferUse( - char* data - , uint32_t size - ) { - return NanNew( - node::Buffer::New(data, size, FreeData, NULL)->handle_); - } - - NAN_INLINE bool NanHasInstance( - const v8::Persistent& function_template - , v8::Handle value - ) { - return function_template->HasInstance(value); - } - - NAN_INLINE v8::Local NanNewContextHandle( - v8::ExtensionConfiguration* extensions = NULL - , v8::Handle tmpl = v8::Handle() - , v8::Handle obj = v8::Handle() - ) { - v8::Persistent ctx = v8::Context::New(extensions, tmpl, obj); - v8::Local lctx = NanNew(ctx); - ctx.Dispose(); - return lctx; - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - , const v8::ScriptOrigin& origin - ) { - return v8::Script::Compile(s, const_cast(&origin)); - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - ) { - return v8::Script::Compile(s); - } - - NAN_INLINE v8::Local NanRunScript(v8::Handle script) { - return script->Run(); - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , v8::Handle func - , int argc - , v8::Handle* argv) { -# if NODE_VERSION_AT_LEAST(0, 8, 0) - return NanNew(node::MakeCallback(target, func, argc, argv)); -# else - v8::TryCatch try_catch; - v8::Local result = func->Call(target, argc, argv); - if (try_catch.HasCaught()) { - node::FatalException(try_catch); - } - return result; -# endif - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , v8::Handle symbol - , int argc - , v8::Handle* argv) { -# if NODE_VERSION_AT_LEAST(0, 8, 0) - return NanNew(node::MakeCallback(target, symbol, argc, argv)); -# else - v8::Local callback = target->Get(symbol).As(); - return NanMakeCallback(target, callback, argc, argv); -# endif - } - - NAN_INLINE v8::Local NanMakeCallback( - v8::Handle target - , const char* method - , int argc - , v8::Handle* argv) { -# if NODE_VERSION_AT_LEAST(0, 8, 0) - return NanNew(node::MakeCallback(target, method, argc, argv)); -# else - return NanMakeCallback(target, NanNew(method), argc, argv); -# endif - } - - template - NAN_INLINE void NanSetIsolateData( - v8::Isolate *isolate - , T *data - ) { - isolate->SetData(data); - } - - template - NAN_INLINE T *NanGetIsolateData( - v8::Isolate *isolate - ) { - return static_cast(isolate->GetData()); - } - - class NanAsciiString { - public: - NAN_INLINE explicit NanAsciiString(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Length(); - buf = new char[size + 1]; - size = toStr->WriteAscii(buf); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - - NAN_INLINE char* operator*() { return buf; } - NAN_INLINE const char* operator*() const { return buf; } - - NAN_INLINE ~NanAsciiString() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanAsciiString(const NanAsciiString&); - void operator=(const NanAsciiString&); - - char *buf; - int size; - }; - - class NanUtf8String { - public: - NAN_INLINE explicit NanUtf8String(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Utf8Length(); - buf = new char[size + 1]; - toStr->WriteUtf8(buf); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - NAN_INLINE char* operator*() { return buf; } - NAN_INLINE const char* operator*() const { return buf; } - - NAN_INLINE ~NanUtf8String() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanUtf8String(const NanUtf8String&); - void operator=(const NanUtf8String&); - - char *buf; - int size; - }; - - class NanUcs2String { - public: - NAN_INLINE explicit NanUcs2String(v8::Handle from) { - v8::Local toStr = from->ToString(); - size = toStr->Length(); - buf = new uint16_t[size + 1]; - toStr->Write(buf); - } - - NAN_DEPRECATED NAN_INLINE int Size() const { - return size; - } - - NAN_INLINE int length() const { - return size; - } - - NAN_INLINE uint16_t* operator*() { return buf; } - NAN_INLINE const uint16_t* operator*() const { return buf; } - - NAN_INLINE ~NanUcs2String() { - delete[] buf; - } - - private: - // disallow copying and assigning - NanUcs2String(const NanUcs2String&); - void operator=(const NanUcs2String&); - - uint16_t *buf; - int size; - }; - -#endif // NODE_MODULE_VERSION - -typedef void (*NanFreeCallback)(char *data, void *hint); - -#define NAN_METHOD(name) _NAN_METHOD_RETURN_TYPE name(_NAN_METHOD_ARGS) -#define NAN_GETTER(name) \ - _NAN_GETTER_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_GETTER_ARGS) -#define NAN_SETTER(name) \ - _NAN_SETTER_RETURN_TYPE name( \ - v8::Local property \ - , v8::Local value \ - , _NAN_SETTER_ARGS) -#define NAN_PROPERTY_GETTER(name) \ - _NAN_PROPERTY_GETTER_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_PROPERTY_GETTER_ARGS) -#define NAN_PROPERTY_SETTER(name) \ - _NAN_PROPERTY_SETTER_RETURN_TYPE name( \ - v8::Local property \ - , v8::Local value \ - , _NAN_PROPERTY_SETTER_ARGS) -#define NAN_PROPERTY_ENUMERATOR(name) \ - _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE name(_NAN_PROPERTY_ENUMERATOR_ARGS) -#define NAN_PROPERTY_DELETER(name) \ - _NAN_PROPERTY_DELETER_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_PROPERTY_DELETER_ARGS) -#define NAN_PROPERTY_QUERY(name) \ - _NAN_PROPERTY_QUERY_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_PROPERTY_QUERY_ARGS) -# define NAN_INDEX_GETTER(name) \ - _NAN_INDEX_GETTER_RETURN_TYPE name(uint32_t index, _NAN_INDEX_GETTER_ARGS) -#define NAN_INDEX_SETTER(name) \ - _NAN_INDEX_SETTER_RETURN_TYPE name( \ - uint32_t index \ - , v8::Local value \ - , _NAN_INDEX_SETTER_ARGS) -#define NAN_INDEX_ENUMERATOR(name) \ - _NAN_INDEX_ENUMERATOR_RETURN_TYPE name(_NAN_INDEX_ENUMERATOR_ARGS) -#define NAN_INDEX_DELETER(name) \ - _NAN_INDEX_DELETER_RETURN_TYPE name( \ - uint32_t index \ - , _NAN_INDEX_DELETER_ARGS) -#define NAN_INDEX_QUERY(name) \ - _NAN_INDEX_QUERY_RETURN_TYPE name(uint32_t index, _NAN_INDEX_QUERY_ARGS) - -class NanCallback { - public: - NanCallback() { - NanScope(); - v8::Local obj = NanNew(); - NanAssignPersistent(handle, obj); - } - - explicit NanCallback(const v8::Handle &fn) { - NanScope(); - v8::Local obj = NanNew(); - NanAssignPersistent(handle, obj); - SetFunction(fn); - } - - ~NanCallback() { - if (handle.IsEmpty()) return; - NanDisposePersistent(handle); - } - - NAN_INLINE void SetFunction(const v8::Handle &fn) { - NanScope(); - NanNew(handle)->Set(kCallbackIndex, fn); - } - - NAN_INLINE v8::Local GetFunction() const { - NanEscapableScope(); - return NanEscapeScope(NanNew(handle)->Get(kCallbackIndex) - .As()); - } - - NAN_INLINE bool IsEmpty() const { - NanScope(); - return NanNew(handle)->Get(kCallbackIndex)->IsUndefined(); - } - - v8::Handle Call(int argc, v8::Handle argv[]) const { - NanEscapableScope(); -#if (NODE_MODULE_VERSION > 0x000B) // 0.11.12+ - v8::Isolate* isolate = v8::Isolate::GetCurrent(); - v8::Local callback = NanNew(handle)-> - Get(kCallbackIndex).As(); - return NanEscapeScope(node::MakeCallback( - isolate - , isolate->GetCurrentContext()->Global() - , callback - , argc - , argv - )); -#else -#if NODE_VERSION_AT_LEAST(0, 8, 0) - v8::Local callback = handle-> - Get(kCallbackIndex).As(); - return NanEscapeScope(node::MakeCallback( - v8::Context::GetCurrent()->Global() - , callback - , argc - , argv - )); -#else - v8::Local callback = handle-> - Get(kCallbackIndex).As(); - return NanEscapeScope(NanMakeCallback( - v8::Context::GetCurrent()->Global(), callback, argc, argv)); -#endif -#endif - } - - private: - v8::Persistent handle; - static const uint32_t kCallbackIndex = 0; -}; - -/* abstract */ class NanAsyncWorker { - public: - explicit NanAsyncWorker(NanCallback *callback_) - : callback(callback_), errmsg_(NULL) { - request.data = this; - - NanScope(); - v8::Local obj = NanNew(); - NanAssignPersistent(persistentHandle, obj); - } - - virtual ~NanAsyncWorker() { - NanScope(); - - if (!persistentHandle.IsEmpty()) - NanDisposePersistent(persistentHandle); - if (callback) - delete callback; - if (errmsg_) - delete[] errmsg_; - } - - virtual void WorkComplete() { - NanScope(); - - if (errmsg_ == NULL) - HandleOKCallback(); - else - HandleErrorCallback(); - delete callback; - callback = NULL; - } - - NAN_INLINE void SaveToPersistent( - const char *key, const v8::Local &obj) { - v8::Local handle = NanNew(persistentHandle); - handle->Set(NanNew(key), obj); - } - - v8::Local GetFromPersistent(const char *key) const { - NanEscapableScope(); - v8::Local handle = NanNew(persistentHandle); - return NanEscapeScope(handle->Get(NanNew(key)).As()); - } - - virtual void Execute() = 0; - - uv_work_t request; - - protected: - v8::Persistent persistentHandle; - NanCallback *callback; - - virtual void HandleOKCallback() { - callback->Call(0, NULL); - } - - virtual void HandleErrorCallback() { - NanScope(); - - v8::Local argv[] = { - v8::Exception::Error(NanNew(ErrorMessage())) - }; - callback->Call(1, argv); - } - - void SetErrorMessage(const char *msg) { - if (errmsg_) { - delete[] errmsg_; - } - - size_t size = strlen(msg) + 1; - errmsg_ = new char[size]; - memcpy(errmsg_, msg, size); - } - - const char* ErrorMessage() const { - return errmsg_; - } - - private: - char *errmsg_; -}; - -NAN_INLINE void NanAsyncExecute (uv_work_t* req) { - NanAsyncWorker *worker = static_cast(req->data); - worker->Execute(); -} - -NAN_INLINE void NanAsyncExecuteComplete (uv_work_t* req) { - NanAsyncWorker* worker = static_cast(req->data); - worker->WorkComplete(); - delete worker; -} - -NAN_INLINE void NanAsyncQueueWorker (NanAsyncWorker* worker) { - uv_queue_work( - uv_default_loop() - , &worker->request - , NanAsyncExecute - , (uv_after_work_cb)NanAsyncExecuteComplete - ); -} - -//// Base 64 //// - -#define _nan_base64_encoded_size(size) ((size + 2 - ((size + 2) % 3)) / 3 * 4) - -// Doesn't check for padding at the end. Can be 1-2 bytes over. -NAN_INLINE size_t _nan_base64_decoded_size_fast(size_t size) { - size_t remainder = size % 4; - - size = (size / 4) * 3; - if (remainder) { - if (size == 0 && remainder == 1) { - // special case: 1-byte input cannot be decoded - size = 0; - } else { - // non-padded input, add 1 or 2 extra bytes - size += 1 + (remainder == 3); - } - } - - return size; -} - -template -NAN_INLINE size_t _nan_base64_decoded_size( - const T* src - , size_t size -) { - if (size == 0) - return 0; - - if (src[size - 1] == '=') - size--; - if (size > 0 && src[size - 1] == '=') - size--; - - return _nan_base64_decoded_size_fast(size); -} - -// supports regular and URL-safe base64 -static const int _nan_unbase64_table[] = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -2, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63 - , 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1 - , -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 - , 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63 - , -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 - , 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 -}; - -#define _nan_unbase64(x) _nan_unbase64_table[(uint8_t)(x)] - -template static size_t _nan_base64_decode( - char* buf - , size_t len - , const T* src - , const size_t srcLen -) { - char* dst = buf; - char* dstEnd = buf + len; - const T* srcEnd = src + srcLen; - - while (src < srcEnd && dst < dstEnd) { - ptrdiff_t remaining = srcEnd - src; - char a, b, c, d; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining == 0 || *src == '=') break; - a = _nan_unbase64(*src++); - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 1 || *src == '=') break; - b = _nan_unbase64(*src++); - - *dst++ = (a << 2) | ((b & 0x30) >> 4); - if (dst == dstEnd) break; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 2 || *src == '=') break; - c = _nan_unbase64(*src++); - - *dst++ = ((b & 0x0F) << 4) | ((c & 0x3C) >> 2); - if (dst == dstEnd) break; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 3 || *src == '=') break; - d = _nan_unbase64(*src++); - - *dst++ = ((c & 0x03) << 6) | (d & 0x3F); - } - - return dst - buf; -} - -//// HEX //// - -template unsigned _nan_hex2bin(T c) { - if (c >= '0' && c <= '9') return c - '0'; - if (c >= 'A' && c <= 'F') return 10 + (c - 'A'); - if (c >= 'a' && c <= 'f') return 10 + (c - 'a'); - return static_cast(-1); -} - -template static size_t _nan_hex_decode( - char* buf - , size_t len - , const T* src - , const size_t srcLen -) { - size_t i; - for (i = 0; i < len && i * 2 + 1 < srcLen; ++i) { - unsigned a = _nan_hex2bin(src[i * 2 + 0]); - unsigned b = _nan_hex2bin(src[i * 2 + 1]); - if (!~a || !~b) return i; - buf[i] = a * 16 + b; - } - - return i; -} - -static bool _NanGetExternalParts( - v8::Handle val - , const char** data - , size_t* len -) { - if (node::Buffer::HasInstance(val)) { - *data = node::Buffer::Data(val.As()); - *len = node::Buffer::Length(val.As()); - return true; - } - - assert(val->IsString()); - v8::Local str = NanNew(val.As()); - - if (str->IsExternalAscii()) { - const v8::String::ExternalAsciiStringResource* ext; - ext = str->GetExternalAsciiStringResource(); - *data = ext->data(); - *len = ext->length(); - return true; - - } else if (str->IsExternal()) { - const v8::String::ExternalStringResource* ext; - ext = str->GetExternalStringResource(); - *data = reinterpret_cast(ext->data()); - *len = ext->length(); - return true; - } - - return false; -} - -namespace Nan { - enum Encoding {ASCII, UTF8, BASE64, UCS2, BINARY, HEX, BUFFER}; -} - -/* NAN_DEPRECATED */ NAN_INLINE void* _NanRawString( - v8::Handle from - , enum Nan::Encoding encoding - , size_t *datalen - , void *buf - , size_t buflen - , int flags -) { - NanScope(); - - size_t sz_; - size_t term_len = !(flags & v8::String::NO_NULL_TERMINATION); - char *data = NULL; - size_t len; - bool is_extern = _NanGetExternalParts( - from - , const_cast(&data) - , &len); - - if (is_extern && !term_len) { - NanSetPointerSafe(datalen, len); - return data; - } - - v8::Local toStr = from->ToString(); - - char *to = static_cast(buf); - - switch (encoding) { - case Nan::ASCII: -#if NODE_MODULE_VERSION < 0x000C - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } - NanSetPointerSafe( - datalen - , toStr->WriteAscii(to, 0, static_cast(sz_ + term_len), flags)); - return to; -#endif - case Nan::BINARY: - case Nan::BUFFER: - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } -#if NODE_MODULE_VERSION < 0x000C - { - uint16_t* twobytebuf = new uint16_t[sz_ + term_len]; - - size_t somelen = toStr->Write(twobytebuf, 0, - static_cast(sz_ + term_len), flags); - - for (size_t i = 0; i < sz_ + term_len && i < somelen + term_len; i++) { - unsigned char *b = reinterpret_cast(&twobytebuf[i]); - to[i] = *b; - } - - NanSetPointerSafe(datalen, somelen); - - delete[] twobytebuf; - return to; - } -#else - NanSetPointerSafe( - datalen, - toStr->WriteOneByte( - reinterpret_cast(to) - , 0 - , static_cast(sz_ + term_len) - , flags)); - return to; -#endif - case Nan::UTF8: - sz_ = toStr->Utf8Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } - NanSetPointerSafe( - datalen - , toStr->WriteUtf8(to, static_cast(sz_ + term_len) - , NULL, flags) - - term_len); - return to; - case Nan::BASE64: - { - v8::String::Value value(toStr); - sz_ = _nan_base64_decoded_size(*value, value.length()); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len); - } - NanSetPointerSafe( - datalen - , _nan_base64_decode(to, sz_, *value, value.length())); - if (term_len) { - to[sz_] = '\0'; - } - return to; - } - case Nan::UCS2: - { - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[(sz_ + term_len) * 2]; - } else { - assert(buflen >= (sz_ + term_len) * 2 && "too small buffer"); - } - - int bc = 2 * toStr->Write( - reinterpret_cast(to) - , 0 - , static_cast(sz_ + term_len) - , flags); - NanSetPointerSafe(datalen, bc); - return to; - } - case Nan::HEX: - { - v8::String::Value value(toStr); - sz_ = value.length(); - assert(!(sz_ & 1) && "bad hex data"); - if (to == NULL) { - to = new char[sz_ / 2 + term_len]; - } else { - assert(buflen >= sz_ / 2 + term_len && "too small buffer"); - } - NanSetPointerSafe( - datalen - , _nan_hex_decode(to, sz_ / 2, *value, value.length())); - } - if (term_len) { - to[sz_ / 2] = '\0'; - } - return to; - default: - assert(0 && "unknown encoding"); - } - return to; -} - -NAN_DEPRECATED NAN_INLINE void* NanRawString( - v8::Handle from - , enum Nan::Encoding encoding - , size_t *datalen - , void *buf - , size_t buflen - , int flags -) { - return _NanRawString(from, encoding, datalen, buf, buflen, flags); -} - - -NAN_DEPRECATED NAN_INLINE char* NanCString( - v8::Handle from - , size_t *datalen - , char *buf = NULL - , size_t buflen = 0 - , int flags = v8::String::NO_OPTIONS -) { - return static_cast( - _NanRawString(from, Nan::UTF8, datalen, buf, buflen, flags) - ); -} - -NAN_INLINE void NanSetPrototypeTemplate( - v8::Local templ - , const char *name - , v8::Handle value -) { - NanSetTemplate(templ->PrototypeTemplate(), name, value); -} - -NAN_INLINE void NanSetPrototypeTemplate( - v8::Local templ - , v8::Handle name - , v8::Handle value - , v8::PropertyAttribute attributes -) { - NanSetTemplate(templ->PrototypeTemplate(), name, value, attributes); -} - -NAN_INLINE void NanSetInstanceTemplate( - v8::Local templ - , const char *name - , v8::Handle value -) { - NanSetTemplate(templ->InstanceTemplate(), name, value); -} - -NAN_INLINE void NanSetInstanceTemplate( - v8::Local templ - , v8::Handle name - , v8::Handle value - , v8::PropertyAttribute attributes -) { - NanSetTemplate(templ->InstanceTemplate(), name, value, attributes); -} - -//=== Export ================================================================== - -inline -void -NanExport(v8::Handle target, const char * name, - NanFunctionCallback f) -{ - target->Set(NanNew(name), - NanNew(f)->GetFunction()); -} - -//=== Tap Reverse Binding ===================================================== - -struct NanTap { - NanTap(v8::Handle t) : t_() { - NanAssignPersistent(t_, t->ToObject()); - }; - ~NanTap() { NanDisposePersistent(t_); } // not sure if neccessary - - inline void plan(int i) { - v8::Handle arg = NanNew(i); - NanMakeCallback(NanNew(t_), "plan", 1, &arg); - } - - inline void ok(bool isOk, const char * msg = NULL) { - v8::Handle args[2]; - args[0] = NanNew(isOk); - if (msg) args[1] = NanNew(msg); - NanMakeCallback(NanNew(t_), "ok", msg ? 2 : 1, args); - } - -private: - - v8::Persistent t_; -}; - -#define NAN_STRINGIZE2(x) #x -#define NAN_STRINGIZE(x) NAN_STRINGIZE2(x) -#define NAN_TEST_EXPRESSION(expression) \ - ( expression ), __FILE__ ":" NAN_STRINGIZE(__LINE__) ": " #expression - -#define return_NanValue(v) NanReturnValue(v) -#define return_NanUndefined() NanReturnUndefined() -#define NAN_EXPORT(target, function) NanExport(target, #function, function) - -#endif // NAN_H_ diff --git a/node_modules/sqlite3/node_modules/nan/package.json b/node_modules/sqlite3/node_modules/nan/package.json deleted file mode 100644 index d8f2569..0000000 --- a/node_modules/sqlite3/node_modules/nan/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "name": "nan", - "version": "1.4.1", - "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.2", - "tap": "~0.4.13", - "xtend": "~4.0.0" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/rvagg/nan/issues" - }, - "homepage": "https://github.com/rvagg/nan", - "_id": "nan@1.4.1", - "_shasum": "0a2bb562c558b440005b1f7eb8b31ccbdb565d5f", - "_from": "nan@~1.4.1", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "kkoopa", - "email": "bbyholm@abo.fi" - }, - "maintainers": [ - { - "name": "rvagg", - "email": "rod@vagg.org" - }, - { - "name": "kkoopa", - "email": "bbyholm@abo.fi" - } - ], - "dist": { - "shasum": "0a2bb562c558b440005b1f7eb8b31ccbdb565d5f", - "tarball": "http://registry.npmjs.org/nan/-/nan-1.4.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/nan/-/nan-1.4.1.tgz" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/CHANGELOG.md b/node_modules/sqlite3/node_modules/node-pre-gyp/CHANGELOG.md deleted file mode 100644 index bbee2e2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/CHANGELOG.md +++ /dev/null @@ -1,191 +0,0 @@ -# node-pre-gyp changelog - -## 0.6.1 - - - Fixed bundled `tar` version - -## 0.6.0 - - - BREAKING: node odd releases like v0.11.x now use `major.minor.patch` for `{node_abi}` instead of `NODE_MODULE_VERSION` (#124) - - Added support for `toolset` option in versioning. By default is an empty string but `--toolset` can be passed to publish or install to select alternative binaries that target a custom toolset like C++11. For example to target Visual Studio 2014 modules like node-sqlite3 use `--toolset=v140`. - - Added support for `--no-rollback` option to request that a failed binary test does not remove the binary module leaves it in place. - - Added support for `--update-binary` option to request an existing binary be re-installed and the check for a valid local module be skipped. - - Added support for passing build options from `npm` through `node-pre-gyp` to `node-gyp`: `--nodedir`, `--disturl`, `--python`, and `--msvs_version` - -## 0.5.31 - - - Added support for deducing node_abi for node.js runtime from previous release if the series is even - - Added support for --target=0.10.33 - -## 0.5.30 - - - Repackaged with latest bundled deps - -## 0.5.29 - - - Added support for semver `build`. - - Fixed support for downloading from urls that include `+`. - -## 0.5.28 - - - Now reporting unix style paths only in reveal command - -## 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. - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/LICENSE deleted file mode 100644 index 8f5fce9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -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 node-pre-gyp 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 OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/README.md deleted file mode 100644 index 6abd137..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/README.md +++ /dev/null @@ -1,523 +0,0 @@ -# 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?downloads=true&downloadRank=true)](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 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/) - -## FAQ - -See the [Frequently Ask Questions](https://github.com/mapbox/node-pre-gyp/wiki/FAQ). - -## 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 ` 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 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 (64 bit) - - 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). - -Note: if you need 32 bit binaries, this can be done from a 64 bit travis machine. See [the node-sqlite3 scripts for an example of doing this](https://github.com/mapbox/node-sqlite3/blob/bae122aa6a2b8a45f6b717fab24e207740e32b5d/scripts/build_against_node.sh#L54-L74). - -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 . 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 [[ ${COMMIT_MESSAGE} =~ "[publish binary]" ]]; 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. - - - `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. - - `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` (NOTE: ignores the `semver.build` property). - - `major`, `minor`, `patch`, and `prelease` match the individual semver values for your module's `version` - - `build` - the sevmer `build` value. For example it would be `this.that` if your package.json `version` was `v1.0.0+this.that` - - `prerelease` - the semver `prerelease` value. For example it would be `alpha.beta` if your package.json `version` was `v1.0.0-alpha.beta` - - -The options are visible in the code at diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/appveyor.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/appveyor.yml deleted file mode 100644 index ca2e022..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/appveyor.yml +++ /dev/null @@ -1,31 +0,0 @@ -environment: - matrix: - - 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 - - node --version - - npm --version - - SET PATH=%APPDATA%\npm;%PATH% - - npm update -g npm - - npm --version - - node -e "console.log(process.arch);" - - SET PATH=C:\Program Files (x86)\MSBuild\12.0\bin\;%PATH% - - if "%PLATFORM%" == "x64" set PATH=C:\Python27-x64;%PATH% - - if "%PLATFORM%" == "x86" SET PATH=C:\python27;%PATH% - - npm install - - npm test - - .\scripts\test.bat - -build: off -test: off -deploy: off \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp b/node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp deleted file mode 100755 index d68d18b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp +++ /dev/null @@ -1,130 +0,0 @@ -#!/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:' - , ' ' - ].join('\n')) -} - -// start running the given commands! -run() diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd b/node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd deleted file mode 100644 index 46e14b5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -node "%~dp0\node-pre-gyp" %* diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/build.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/build.js deleted file mode 100644 index e867948..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/build.js +++ /dev/null @@ -1,61 +0,0 @@ - -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 known_gyp_args = ['dist-url','python','nodedir','msvs_version']; - // in addition, pass along known node-gyp options - known_gyp_args.forEach(function(arg) { - var val = gyp.opts[arg] || gyp.opts[arg.replace('-','_')]; - if (val) { - opts[arg] = val; - } - }); - - 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); - }); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/clean.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/clean.js deleted file mode 100644 index a717e9c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/clean.js +++ /dev/null @@ -1,24 +0,0 @@ - -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(); - }) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/info.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/info.js deleted file mode 100644 index 5a54d41..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/info.js +++ /dev/null @@ -1,40 +0,0 @@ - -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(); - } - }); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/install.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/install.js deleted file mode 100644 index 36bf7f5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/install.js +++ /dev/null @@ -1,203 +0,0 @@ - -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.replace('+','%2B') - , 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, looked for ' + from)); - } else { - return callback(new Error(res.statusCode + ' status code downloading tarball ' + from)); - } - } - // 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 update_binary = gyp.opts['update-binary'] || gyp.opts['update_binary']; - var should_do_source_build = source_build === package_json.name || (source_build === true || source_build === 'true'); - var no_rollback = gyp.opts.hasOwnProperty('rollback') && gyp.opts['rollback'] === false; - 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 && !update_binary) { - 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 --update-binary to reinstall or --build-from-source to recompile'); - return callback(); - } - }); - } else { - if (!update_binary) 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) { - if (no_rollback) { - return callback(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(); - } - }); - }; - }); - } - })); - } -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/node-pre-gyp.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/node-pre-gyp.js deleted file mode 100644 index 85e3d35..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/node-pre-gyp.js +++ /dev/null @@ -1,194 +0,0 @@ - -/** - * 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 [options]' - , '' - , ' where 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 -}) - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/package.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/package.js deleted file mode 100644 index b01cb95..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/package.js +++ /dev/null @@ -1,46 +0,0 @@ - -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(); - }) - }); - }); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/pre-binding.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/pre-binding.js deleted file mode 100644 index d4b15db..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/pre-binding.js +++ /dev/null @@ -1,24 +0,0 @@ -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; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/publish.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/publish.js deleted file mode 100644 index 20cdd0d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/publish.js +++ /dev/null @@ -1,77 +0,0 @@ - -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")) - } - log.info('publish', 'Detecting s3 credentials'); - s3_setup.detect(opts.hosted_path,config); - var key_name = url.resolve(config.prefix,opts.package_name) - log.info('publish', 'Authenticating with s3'); - AWS.config.update(config); - var s3 = new AWS.S3(); - var s3_opts = { Bucket: config.bucket, - Key: key_name - }; - var remote_package = 'https://' + s3_opts.Bucket + '.s3.amazonaws.com/' + s3_opts.Key; - log.info('publish', 'Checking for existing binary at ' + remote_package); - s3.headObject(s3_opts, function(err, meta){ - if (meta) log.info('publish', JSON.stringify(meta)); - if (err && err.code == 'NotFound') { - // we are safe to publish because - // the object does not already exist - log.info('publish', 'Preparing to put object'); - var s3_put = new AWS.S3(); - var s3_put_opts = { ACL: config.acl, - Body: fs.createReadStream(tarball), - Bucket: config.bucket, - Key: key_name - }; - log.info('publish', 'Putting object'); - try { - s3_put.putObject(s3_put_opts, function(err, resp){ - log.info('publish', 'returned from putting object'); - if(err) { - log.info('publish', 's3 putObject error: "' + err + '"'); - return callback(err); - } - if (resp) log.info('publish', 's3 putObject response: "' + JSON.stringify(resp) + '"'); - log.info('publish', 'successfully put object'); - console.log('['+package_json.name+'] published to ' + remote_package); - return callback(); - }); - } catch (err) { - log.info('publish', 's3 putObject error: "' + err + '"'); - return callback(err); - } - } else if (err) { - log.info('publish', 's3 headObject error: "' + 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 ' + remote_package)); - } - }); - }); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/rebuild.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/rebuild.js deleted file mode 100644 index fe89096..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/rebuild.js +++ /dev/null @@ -1,12 +0,0 @@ - -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) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/reinstall.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/reinstall.js deleted file mode 100644 index fc15640..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/reinstall.js +++ /dev/null @@ -1,12 +0,0 @@ - -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) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/reveal.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/reveal.js deleted file mode 100644 index ab6b616..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/reveal.js +++ /dev/null @@ -1,32 +0,0 @@ - -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 unix_paths(key, val) { - return val && val.replace ? val.replace(/\\/g, '/') : val; -} - -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].replace(/\\/g, '/')); - hit = true; - } - // otherwise return all options as json - if (!hit) { - console.log(JSON.stringify(opts,unix_paths,2)); - } - return callback(); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/testbinary.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/testbinary.js deleted file mode 100644 index 6aa75a6..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/testbinary.js +++ /dev/null @@ -1,71 +0,0 @@ -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(); - }); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/testpackage.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/testpackage.js deleted file mode 100644 index c15d067..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/testpackage.js +++ /dev/null @@ -1,49 +0,0 @@ - -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); - }); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/unpublish.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/unpublish.js deleted file mode 100644 index be2cb14..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/unpublish.js +++ /dev/null @@ -1,41 +0,0 @@ - -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('unpublish', 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(); - }) - } - }); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json deleted file mode 100644 index 25db0fc..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +++ /dev/null @@ -1,314 +0,0 @@ -{ - "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.8.27": { - "node_abi": 1, - "v8": "3.11" - }, - "0.8.28": { - "node_abi": 1, - "v8": "3.11" - }, - "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.10.32": { - "node_abi": 11, - "v8": "3.14" - }, - "0.10.33": { - "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" - }, - "0.11.14": { - "node_abi": 14, - "v8": "3.26" - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/compile.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/compile.js deleted file mode 100644 index d871031..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/compile.js +++ /dev/null @@ -1,80 +0,0 @@ - -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, stdio: [ 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); - }); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html deleted file mode 100644 index 244466c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - -Node-webkit-based module test - - - -

    Node-webkit-based module test

    - - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json deleted file mode 100644 index 71d03f8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ -"main": "index.html", -"name": "nw-pre-gyp-module-test", -"description": "Node-webkit-based module test.", -"version": "0.0.1", -"window": { - "show": false -} -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/s3_setup.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/s3_setup.js deleted file mode 100644 index e0609e4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/s3_setup.js +++ /dev/null @@ -1,30 +0,0 @@ - -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-',''); - } - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/versioning.js b/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/versioning.js deleted file mode 100644 index 5ad79bb..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/versioning.js +++ /dev/null @@ -1,209 +0,0 @@ -module.exports = exports; - -var path = require('path') - , semver = require('semver') - , url = require('url') - , abi_crosswalk = require('./abi_crosswalk.json') - - -function get_node_webkit_abi(runtime, target_version) { - if (!runtime) { - throw new Error("get_node_webkit_abi requires valid runtime arg"); - } - if (typeof target_version === 'undefined') { - // erroneous CLI call - throw new Error("Empty target version is not supported if node-webkit is the target."); - } - return runtime + '-v' + target_version; -} -module.exports.get_node_webkit_abi = get_node_webkit_abi; - -function get_node_abi(runtime, versions) { - if (!runtime) { - throw new Error("get_node_abi requires valid runtime arg"); - } - if (!versions) { - throw new Error("get_node_abi requires valid process.versions object"); - } - var sem_ver = semver.parse(versions.node); - if (sem_ver.major === 0 && sem_ver.minor % 2) { // odd series - // https://github.com/mapbox/node-pre-gyp/issues/124 - return runtime+'-v'+versions.node; - } else { - // process.versions.modules added in >= v0.10.4 and v0.11.7 - // https://github.com/joyent/node/commit/ccabd4a6fa8a6eb79d29bc3bbe9fe2b6531c2d8e - return versions.modules ? runtime+'-v' + (+versions.modules) : - 'v8-' + versions.v8.split('.').slice(0,2).join('.'); - } -} -module.exports.get_node_abi = get_node_abi; - -function get_runtime_abi(runtime, target_version) { - if (!runtime) { - throw new Error("get_runtime_abi requires valid runtime arg"); - } - if (runtime === 'node-webkit') { - var target_version = target_version || process.versions['node-webkit']; - return get_node_webkit_abi(runtime, target_version); - } else { - if (runtime != 'node') { - throw new Error("Unknown Runtime: '" + runtime + "'"); - } - if (!target_version) { - return get_node_abi(runtime,process.versions); - } else { - var cross_obj; - // abi_crosswalk generated with ./scripts/abi_crosswalk.js - if (abi_crosswalk[target_version]) { - cross_obj = abi_crosswalk[target_version]; - } else { - var target_parts = target_version.split('.').map(function(i) { return +i }); - if (target_parts.length == 3 && (target_parts[1] % 2 == 0)) { - var patch = target_parts[2]; - while (--patch > 0) { - var new_target = '' + target_parts[0] + '.' + target_parts[1] + '.' + patch; - if (abi_crosswalk[new_target]) { - cross_obj = abi_crosswalk[target_version]; - break; - } - } - } - } - if (!cross_obj) { - throw new Error("Unsupported target version: " + target_version); - } - // emulate process.versions - var versions_obj = { - node: target_version, - v8: cross_obj.v8+'.0', - // abi_crosswalk uses 1 for node versions lacking process.versions.modules - // process.versions.modules added in >= v0.10.4 and v0.11.7 - modules: cross_obj.node_abi > 1 ? cross_obj.node_abi : undefined - } - return get_node_abi(runtime, versions_obj); - } - } -} -module.exports.get_runtime_abi = get_runtime_abi; - -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.version) { - missing.push('version'); - } - 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 fix_slashes(pathname) { - if (pathname.slice(-1) != '/') { - return pathname + '/'; - } - return pathname; -} - -// remove double slashes -// note: path.normalize will not work because -// it will convert forward to back slashes -function drop_double_slashes(pathname) { - return pathname.replace(/\/\//g,'/'); -} - -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 ? module_version.prerelease.join('.') : '' - , build: module_version.build.length ? module_version.build.join('.') : '' - , major: module_version.major - , minor: module_version.minor - , patch: module_version.patch - , runtime: runtime - , node_abi: get_runtime_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 - , toolset : options.toolset || '' // address https://github.com/mapbox/node-pre-gyp/issues/119 - } - opts.host = fix_slashes(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 ? drop_double_slashes(fix_slashes(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; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/mkdirp b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/mkdirp deleted file mode 120000 index 017896c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/mkdirp +++ /dev/null @@ -1 +0,0 @@ -../mkdirp/bin/cmd.js \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/nopt b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/nopt deleted file mode 120000 index 6b6566e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/nopt +++ /dev/null @@ -1 +0,0 @@ -../nopt/bin/nopt.js \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rc b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rc deleted file mode 120000 index a3f6fc7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rc +++ /dev/null @@ -1 +0,0 @@ -../rc/index.js \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rimraf b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rimraf deleted file mode 120000 index 4cd49a4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/rimraf +++ /dev/null @@ -1 +0,0 @@ -../rimraf/bin.js \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/semver b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/semver deleted file mode 120000 index 317eb29..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/.bin/semver +++ /dev/null @@ -1 +0,0 @@ -../semver/bin/semver \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.npmignore deleted file mode 100644 index 9303c34..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -npm-debug.log \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.travis.yml deleted file mode 100644 index c693a93..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - "0.10" diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/LICENSE deleted file mode 100644 index 432d1ae..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -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. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/cmd.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/cmd.js deleted file mode 100755 index d95de15..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/cmd.js +++ /dev/null @@ -1,33 +0,0 @@ -#!/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(); - } -})(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/usage.txt b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/usage.txt deleted file mode 100644 index f952aa2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/bin/usage.txt +++ /dev/null @@ -1,12 +0,0 @@ -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. - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/examples/pow.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/examples/pow.js deleted file mode 100644 index e692421..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/examples/pow.js +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/index.js deleted file mode 100644 index a1742b2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/index.js +++ /dev/null @@ -1,97 +0,0 @@ -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; -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/LICENSE deleted file mode 100644 index ee27ba4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -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. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/example/parse.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/example/parse.js deleted file mode 100644 index abff3e8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/example/parse.js +++ /dev/null @@ -1,2 +0,0 @@ -var argv = require('../')(process.argv.slice(2)); -console.dir(argv); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/index.js deleted file mode 100644 index 584f551..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/index.js +++ /dev/null @@ -1,187 +0,0 @@ -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 })); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/package.json deleted file mode 100644 index 09e9ec4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "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!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/readme.markdown b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/readme.markdown deleted file mode 100644 index c256353..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/readme.markdown +++ /dev/null @@ -1,73 +0,0 @@ -# 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 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dash.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dash.js deleted file mode 100644 index 8b034b9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dash.js +++ /dev/null @@ -1,24 +0,0 @@ -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' ] }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/default_bool.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/default_bool.js deleted file mode 100644 index f0041ee..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/default_bool.js +++ /dev/null @@ -1,20 +0,0 @@ -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(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dotted.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dotted.js deleted file mode 100644 index ef0ae34..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dotted.js +++ /dev/null @@ -1,16 +0,0 @@ -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(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/long.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/long.js deleted file mode 100644 index 5d3a1e0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/long.js +++ /dev/null @@ -1,31 +0,0 @@ -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(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse.js deleted file mode 100644 index 8a90646..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse.js +++ /dev/null @@ -1,318 +0,0 @@ -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(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js deleted file mode 100644 index 21851b0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js +++ /dev/null @@ -1,9 +0,0 @@ -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'] }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/short.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/short.js deleted file mode 100644 index d513a1c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/short.js +++ /dev/null @@ -1,67 +0,0 @@ -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(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/whitespace.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/whitespace.js deleted file mode 100644 index 8a52a58..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/whitespace.js +++ /dev/null @@ -1,8 +0,0 @@ -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'); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/package.json deleted file mode 100644 index a6de8f3..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "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!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/readme.markdown b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/readme.markdown deleted file mode 100644 index 3cc1315..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/readme.markdown +++ /dev/null @@ -1,100 +0,0 @@ -# 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 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/chmod.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/chmod.js deleted file mode 100644 index 520dcb8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/chmod.js +++ /dev/null @@ -1,38 +0,0 @@ -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(); - }); - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/clobber.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/clobber.js deleted file mode 100644 index 0eb7099..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/clobber.js +++ /dev/null @@ -1,37 +0,0 @@ -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(); - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/mkdirp.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/mkdirp.js deleted file mode 100644 index 3b624dd..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/mkdirp.js +++ /dev/null @@ -1,26 +0,0 @@ -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'); - }) - }) - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs.js deleted file mode 100644 index f1fbeca..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs.js +++ /dev/null @@ -1,27 +0,0 @@ -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'); - }); - }); - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs_sync.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs_sync.js deleted file mode 100644 index 224b506..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs_sync.js +++ /dev/null @@ -1,25 +0,0 @@ -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'); - }); - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm.js deleted file mode 100644 index 2c97590..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm.js +++ /dev/null @@ -1,30 +0,0 @@ -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(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm_sync.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm_sync.js deleted file mode 100644 index 327e54b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm_sync.js +++ /dev/null @@ -1,34 +0,0 @@ -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'); - }) - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/race.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/race.js deleted file mode 100644 index 7c295f4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/race.js +++ /dev/null @@ -1,40 +0,0 @@ -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(); - }); - }) - }); - } -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/rel.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/rel.js deleted file mode 100644 index d1f175c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/rel.js +++ /dev/null @@ -1,30 +0,0 @@ -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'); - }) - }) - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return.js deleted file mode 100644 index bce68e5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return.js +++ /dev/null @@ -1,25 +0,0 @@ -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); - }); - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return_sync.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return_sync.js deleted file mode 100644 index 7c222d3..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/return_sync.js +++ /dev/null @@ -1,24 +0,0 @@ -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); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/root.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/root.js deleted file mode 100644 index 97ad7a2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/root.js +++ /dev/null @@ -1,18 +0,0 @@ -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(); - }) - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/sync.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/sync.js deleted file mode 100644 index 88fa432..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/sync.js +++ /dev/null @@ -1,30 +0,0 @@ -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'); - }); - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask.js deleted file mode 100644 index 82c393a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask.js +++ /dev/null @@ -1,26 +0,0 @@ -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'); - }); - }) - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask_sync.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask_sync.js deleted file mode 100644 index e537fbe..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask_sync.js +++ /dev/null @@ -1,30 +0,0 @@ -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'); - }); - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -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. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/README.md deleted file mode 100644 index 5aba088..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/README.md +++ /dev/null @@ -1,209 +0,0 @@ -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. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/bin/nopt.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/bin/nopt.js deleted file mode 100755 index 3232d4c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/bin/nopt.js +++ /dev/null @@ -1,54 +0,0 @@ -#!/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) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/examples/my-program.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/examples/my-program.js deleted file mode 100755 index 142447e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/examples/my-program.js +++ /dev/null @@ -1,30 +0,0 @@ -#!/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)) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/lib/nopt.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/lib/nopt.js deleted file mode 100644 index 5309a00..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/lib/nopt.js +++ /dev/null @@ -1,414 +0,0 @@ -// 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] -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/CONTRIBUTING.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/CONTRIBUTING.md deleted file mode 100644 index 2f30261..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/CONTRIBUTING.md +++ /dev/null @@ -1,3 +0,0 @@ - To get started, sign the - Contributor License Agreement. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -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. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/README.md deleted file mode 100644 index 99746fe..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# 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. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/abbrev.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/abbrev.js deleted file mode 100644 index 69cfeac..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/abbrev.js +++ /dev/null @@ -1,62 +0,0 @@ - -module.exports = exports = abbrev.abbrev = abbrev - -abbrev.monkeyPatch = monkeyPatch - -function monkeyPatch () { - Object.defineProperty(Array.prototype, 'abbrev', { - value: function () { return abbrev(this) }, - enumerable: false, configurable: true, writable: true - }) - - Object.defineProperty(Object.prototype, 'abbrev', { - value: function () { return abbrev(Object.keys(this)) }, - enumerable: false, configurable: true, writable: true - }) -} - -function abbrev (list) { - if (arguments.length !== 1 || !Array.isArray(list)) { - list = Array.prototype.slice.call(arguments, 0) - } - for (var i = 0, l = list.length, args = [] ; i < l ; i ++) { - args[i] = typeof list[i] === "string" ? list[i] : String(list[i]) - } - - // sort them lexicographically, so that they're next to their nearest kin - args = args.sort(lexSort) - - // walk through each, seeing how much it has in common with the next and previous - var abbrevs = {} - , prev = "" - for (var i = 0, l = args.length ; i < l ; i ++) { - var current = args[i] - , next = args[i + 1] || "" - , nextMatches = true - , prevMatches = true - if (current === next) continue - for (var j = 0, cl = current.length ; j < cl ; j ++) { - var curChar = current.charAt(j) - nextMatches = nextMatches && curChar === next.charAt(j) - prevMatches = prevMatches && curChar === prev.charAt(j) - if (!nextMatches && !prevMatches) { - j ++ - break - } - } - prev = current - if (j === cl) { - abbrevs[current] = current - continue - } - for (var a = current.substr(0, j) ; j <= cl ; j ++) { - abbrevs[a] = current - a += current.charAt(j) - } - } - return abbrevs -} - -function lexSort (a, b) { - return a === b ? 0 : a > b ? 1 : -1 -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/package.json deleted file mode 100644 index 1dad5f2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "abbrev", - "version": "1.0.5", - "description": "Like ruby's abbrev module, but in js", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me" - }, - "main": "abbrev.js", - "scripts": { - "test": "node test.js" - }, - "repository": { - "type": "git", - "url": "http://github.com/isaacs/abbrev-js" - }, - "license": { - "type": "MIT", - "url": "https://github.com/isaacs/abbrev-js/raw/master/LICENSE" - }, - "bugs": { - "url": "https://github.com/isaacs/abbrev-js/issues" - }, - "homepage": "https://github.com/isaacs/abbrev-js", - "_id": "abbrev@1.0.5", - "_shasum": "5d8257bd9ebe435e698b2fa431afde4fe7b10b03", - "_from": "abbrev@1", - "_npmVersion": "1.4.7", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "5d8257bd9ebe435e698b2fa431afde4fe7b10b03", - "tarball": "http://registry.npmjs.org/abbrev/-/abbrev-1.0.5.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.5.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/test.js deleted file mode 100644 index d5a7303..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/test.js +++ /dev/null @@ -1,47 +0,0 @@ -var abbrev = require('./abbrev.js') -var assert = require("assert") -var util = require("util") - -console.log("TAP Version 13") -var count = 0 - -function test (list, expect) { - count++ - var actual = abbrev(list) - assert.deepEqual(actual, expect, - "abbrev("+util.inspect(list)+") === " + util.inspect(expect) + "\n"+ - "actual: "+util.inspect(actual)) - actual = abbrev.apply(exports, list) - assert.deepEqual(abbrev.apply(exports, list), expect, - "abbrev("+list.map(JSON.stringify).join(",")+") === " + util.inspect(expect) + "\n"+ - "actual: "+util.inspect(actual)) - console.log('ok - ' + list.join(' ')) -} - -test([ "ruby", "ruby", "rules", "rules", "rules" ], -{ rub: 'ruby' -, ruby: 'ruby' -, rul: 'rules' -, rule: 'rules' -, rules: 'rules' -}) -test(["fool", "foom", "pool", "pope"], -{ fool: 'fool' -, foom: 'foom' -, poo: 'pool' -, pool: 'pool' -, pop: 'pope' -, pope: 'pope' -}) -test(["a", "ab", "abc", "abcd", "abcde", "acde"], -{ a: 'a' -, ab: 'ab' -, abc: 'abc' -, abcd: 'abcd' -, abcde: 'abcde' -, ac: 'acde' -, acd: 'acde' -, acde: 'acde' -}) - -console.log("0..%d", count) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/package.json deleted file mode 100644 index 4cbe930..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "nopt", - "version": "3.0.1", - "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "main": "lib/nopt.js", - "scripts": { - "test": "tap test/*.js" - }, - "repository": { - "type": "git", - "url": "http://github.com/isaacs/nopt" - }, - "bin": { - "nopt": "./bin/nopt.js" - }, - "license": { - "type": "MIT", - "url": "https://github.com/isaacs/nopt/raw/master/LICENSE" - }, - "dependencies": { - "abbrev": "1" - }, - "devDependencies": { - "tap": "~0.4.8" - }, - "gitHead": "4296f7aba7847c198fea2da594f9e1bec02817ec", - "bugs": { - "url": "https://github.com/isaacs/nopt/issues" - }, - "homepage": "https://github.com/isaacs/nopt", - "_id": "nopt@3.0.1", - "_shasum": "bce5c42446a3291f47622a370abbf158fbbacbfd", - "_from": "nopt@~3.0.1", - "_npmVersion": "1.4.18", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "bce5c42446a3291f47622a370abbf158fbbacbfd", - "tarball": "http://registry.npmjs.org/nopt/-/nopt-3.0.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/test/basic.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/test/basic.js deleted file mode 100644 index 2f9088c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/nopt/test/basic.js +++ /dev/null @@ -1,251 +0,0 @@ -var nopt = require("../") - , test = require('tap').test - - -test("passing a string results in a string", function (t) { - var parsed = nopt({ key: String }, {}, ["--key", "myvalue"], 0) - t.same(parsed.key, "myvalue") - t.end() -}) - -// https://github.com/npm/nopt/issues/31 -test("Empty String results in empty string, not true", function (t) { - var parsed = nopt({ empty: String }, {}, ["--empty"], 0) - t.same(parsed.empty, "") - t.end() -}) - -test("~ path is resolved to $HOME", function (t) { - var path = require("path") - if (!process.env.HOME) process.env.HOME = "/tmp" - var parsed = nopt({key: path}, {}, ["--key=~/val"], 0) - t.same(parsed.key, path.resolve(process.env.HOME, "val")) - t.end() -}) - -// https://github.com/npm/nopt/issues/24 -test("Unknown options are not parsed as numbers", function (t) { - var parsed = nopt({"parse-me": Number}, null, ['--leave-as-is=1.20', '--parse-me=1.20'], 0) - t.equal(parsed['leave-as-is'], '1.20') - t.equal(parsed['parse-me'], 1.2) - t.end() -}); - -test("other tests", function (t) { - - var util = require("util") - , Stream = require("stream") - , path = require("path") - , url = require("url") - - , shorthands = - { s : ["--loglevel", "silent"] - , d : ["--loglevel", "info"] - , dd : ["--loglevel", "verbose"] - , ddd : ["--loglevel", "silly"] - , noreg : ["--no-registry"] - , reg : ["--registry"] - , "no-reg" : ["--no-registry"] - , silent : ["--loglevel", "silent"] - , verbose : ["--loglevel", "verbose"] - , h : ["--usage"] - , H : ["--usage"] - , "?" : ["--usage"] - , help : ["--usage"] - , v : ["--version"] - , f : ["--force"] - , desc : ["--description"] - , "no-desc" : ["--no-description"] - , "local" : ["--no-global"] - , l : ["--long"] - , p : ["--parseable"] - , porcelain : ["--parseable"] - , g : ["--global"] - } - - , types = - { aoa: Array - , nullstream: [null, Stream] - , date: Date - , str: String - , browser : String - , cache : path - , color : ["always", Boolean] - , depth : Number - , description : Boolean - , dev : Boolean - , editor : path - , force : Boolean - , global : Boolean - , globalconfig : path - , group : [String, Number] - , gzipbin : String - , logfd : [Number, Stream] - , loglevel : ["silent","win","error","warn","info","verbose","silly"] - , long : Boolean - , "node-version" : [false, String] - , npaturl : url - , npat : Boolean - , "onload-script" : [false, String] - , outfd : [Number, Stream] - , parseable : Boolean - , pre: Boolean - , prefix: path - , proxy : url - , "rebuild-bundle" : Boolean - , registry : url - , searchopts : String - , searchexclude: [null, String] - , shell : path - , t: [Array, String] - , tag : String - , tar : String - , tmp : path - , "unsafe-perm" : Boolean - , usage : Boolean - , user : String - , username : String - , userconfig : path - , version : Boolean - , viewer: path - , _exit : Boolean - , path: path - } - - ; [["-v", {version:true}, []] - ,["---v", {version:true}, []] - ,["ls -s --no-reg connect -d", - {loglevel:"info",registry:null},["ls","connect"]] - ,["ls ---s foo",{loglevel:"silent"},["ls","foo"]] - ,["ls --registry blargle", {}, ["ls"]] - ,["--no-registry", {registry:null}, []] - ,["--no-color true", {color:false}, []] - ,["--no-color false", {color:true}, []] - ,["--no-color", {color:false}, []] - ,["--color false", {color:false}, []] - ,["--color --logfd 7", {logfd:7,color:true}, []] - ,["--color=true", {color:true}, []] - ,["--logfd=10", {logfd:10}, []] - ,["--tmp=/tmp -tar=gtar",{tmp:"/tmp",tar:"gtar"},[]] - ,["--tmp=tmp -tar=gtar", - {tmp:path.resolve(process.cwd(), "tmp"),tar:"gtar"},[]] - ,["--logfd x", {}, []] - ,["a -true -- -no-false", {true:true},["a","-no-false"]] - ,["a -no-false", {false:false},["a"]] - ,["a -no-no-true", {true:true}, ["a"]] - ,["a -no-no-no-false", {false:false}, ["a"]] - ,["---NO-no-No-no-no-no-nO-no-no"+ - "-No-no-no-no-no-no-no-no-no"+ - "-no-no-no-no-NO-NO-no-no-no-no-no-no"+ - "-no-body-can-do-the-boogaloo-like-I-do" - ,{"body-can-do-the-boogaloo-like-I-do":false}, []] - ,["we are -no-strangers-to-love "+ - "--you-know=the-rules --and=so-do-i "+ - "---im-thinking-of=a-full-commitment "+ - "--no-you-would-get-this-from-any-other-guy "+ - "--no-gonna-give-you-up "+ - "-no-gonna-let-you-down=true "+ - "--no-no-gonna-run-around false "+ - "--desert-you=false "+ - "--make-you-cry false "+ - "--no-tell-a-lie "+ - "--no-no-and-hurt-you false" - ,{"strangers-to-love":false - ,"you-know":"the-rules" - ,"and":"so-do-i" - ,"you-would-get-this-from-any-other-guy":false - ,"gonna-give-you-up":false - ,"gonna-let-you-down":false - ,"gonna-run-around":false - ,"desert-you":false - ,"make-you-cry":false - ,"tell-a-lie":false - ,"and-hurt-you":false - },["we", "are"]] - ,["-t one -t two -t three" - ,{t: ["one", "two", "three"]} - ,[]] - ,["-t one -t null -t three four five null" - ,{t: ["one", "null", "three"]} - ,["four", "five", "null"]] - ,["-t foo" - ,{t:["foo"]} - ,[]] - ,["--no-t" - ,{t:["false"]} - ,[]] - ,["-no-no-t" - ,{t:["true"]} - ,[]] - ,["-aoa one -aoa null -aoa 100" - ,{aoa:["one", null, '100']} - ,[]] - ,["-str 100" - ,{str:"100"} - ,[]] - ,["--color always" - ,{color:"always"} - ,[]] - ,["--no-nullstream" - ,{nullstream:null} - ,[]] - ,["--nullstream false" - ,{nullstream:null} - ,[]] - ,["--notadate=2011-01-25" - ,{notadate: "2011-01-25"} - ,[]] - ,["--date 2011-01-25" - ,{date: new Date("2011-01-25")} - ,[]] - ,["-cl 1" - ,{config: true, length: 1} - ,[] - ,{config: Boolean, length: Number, clear: Boolean} - ,{c: "--config", l: "--length"}] - ,["--acount bla" - ,{"acount":true} - ,["bla"] - ,{account: Boolean, credentials: Boolean, options: String} - ,{a:"--account", c:"--credentials",o:"--options"}] - ,["--clear" - ,{clear:true} - ,[] - ,{clear:Boolean,con:Boolean,len:Boolean,exp:Boolean,add:Boolean,rep:Boolean} - ,{c:"--con",l:"--len",e:"--exp",a:"--add",r:"--rep"}] - ,["--file -" - ,{"file":"-"} - ,[] - ,{file:String} - ,{}] - ,["--file -" - ,{"file":true} - ,["-"] - ,{file:Boolean} - ,{}] - ,["--path" - ,{"path":null} - ,[]] - ,["--path ." - ,{"path":process.cwd()} - ,[]] - ].forEach(function (test) { - var argv = test[0].split(/\s+/) - , opts = test[1] - , rem = test[2] - , actual = nopt(test[3] || types, test[4] || shorthands, argv, 0) - , parsed = actual.argv - delete actual.argv - for (var i in opts) { - var e = JSON.stringify(opts[i]) - , a = JSON.stringify(actual[i] === undefined ? null : actual[i]) - if (e && typeof e === "object") { - t.deepEqual(e, a) - } else { - t.equal(e, a) - } - } - t.deepEqual(rem, parsed.remain) - }) - t.end() -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/.npmrc b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/.npmrc deleted file mode 100644 index ca0bc48..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -save-prefix = ~ -proprietary-attribs = false diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/README.md deleted file mode 100644 index ad67688..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/README.md +++ /dev/null @@ -1,153 +0,0 @@ -# npmlog - -The logger util that npm uses. - -This logger is very basic. It does the logging for npm. It supports -custom levels and colored output. - -By default, logs are written to stderr. If you want to send log messages -to outputs other than streams, then you can change the `log.stream` -member, or you can just listen to the events that it emits, and do -whatever you want with them. - -# Basic Usage - -``` -var log = require('npmlog') - -// additional stuff ---------------------------+ -// message ----------+ | -// prefix ----+ | | -// level -+ | | | -// v v v v - log.info('fyi', 'I have a kitty cat: %j', myKittyCat) -``` - -## log.level - -* {String} - -The level to display logs at. Any logs at or above this level will be -displayed. The special level `silent` will prevent anything from being -displayed ever. - -## log.record - -* {Array} - -An array of all the log messages that have been entered. - -## log.maxRecordSize - -* {Number} - -The maximum number of records to keep. If log.record gets bigger than -10% over this value, then it is sliced down to 90% of this value. - -The reason for the 10% window is so that it doesn't have to resize a -large array on every log entry. - -## log.prefixStyle - -* {Object} - -A style object that specifies how prefixes are styled. (See below) - -## log.headingStyle - -* {Object} - -A style object that specifies how the heading is styled. (See below) - -## log.heading - -* {String} Default: "" - -If set, a heading that is printed at the start of every line. - -## log.stream - -* {Stream} Default: `process.stderr` - -The stream where output is written. - -## log.enableColor() - -Force colors to be used on all messages, regardless of the output -stream. - -## log.disableColor() - -Disable colors on all messages. - -## log.pause() - -Stop emitting messages to the stream, but do not drop them. - -## log.resume() - -Emit all buffered messages that were written while paused. - -## log.log(level, prefix, message, ...) - -* `level` {String} The level to emit the message at -* `prefix` {String} A string prefix. Set to "" to skip. -* `message...` Arguments to `util.format` - -Emit a log message at the specified level. - -## log\[level](prefix, message, ...) - -For example, - -* log.silly(prefix, message, ...) -* log.verbose(prefix, message, ...) -* log.info(prefix, message, ...) -* log.http(prefix, message, ...) -* log.warn(prefix, message, ...) -* log.error(prefix, message, ...) - -Like `log.log(level, prefix, message, ...)`. In this way, each level is -given a shorthand, so you can do `log.info(prefix, message)`. - -## log.addLevel(level, n, style, disp) - -* `level` {String} Level indicator -* `n` {Number} The numeric level -* `style` {Object} Object with fg, bg, inverse, etc. -* `disp` {String} Optional replacement for `level` in the output. - -Sets up a new level with a shorthand function and so forth. - -Note that if the number is `Infinity`, then setting the level to that -will cause all log messages to be suppressed. If the number is -`-Infinity`, then the only way to show it is to enable all log messages. - -# Events - -Events are all emitted with the message object. - -* `log` Emitted for all messages -* `log.` Emitted for all messages with the `` level. -* `` Messages with prefixes also emit their prefix as an event. - -# Style Objects - -Style objects can have the following fields: - -* `fg` {String} Color for the foreground text -* `bg` {String} Color for the background -* `bold`, `inverse`, `underline` {Boolean} Set the associated property -* `bell` {Boolean} Make a noise (This is pretty annoying, probably.) - -# Message Objects - -Every log event is emitted with a message object, and the `log.record` -list contains all of them that have been created. They have the -following fields: - -* `id` {Number} -* `level` {String} -* `prefix` {String} -* `message` {String} Result of `util.format()` -* `messageRaw` {Array} Arguments to `util.format()` diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/example.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/example.js deleted file mode 100644 index c009fb1..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/example.js +++ /dev/null @@ -1,39 +0,0 @@ -var log = require('./log.js') - -log.heading = 'npm' - -console.error('log.level=silly') -log.level = 'silly' -log.silly('silly prefix', 'x = %j', {foo:{bar:'baz'}}) -log.verbose('verbose prefix', 'x = %j', {foo:{bar:'baz'}}) -log.info('info prefix', 'x = %j', {foo:{bar:'baz'}}) -log.http('http prefix', 'x = %j', {foo:{bar:'baz'}}) -log.warn('warn prefix', 'x = %j', {foo:{bar:'baz'}}) -log.error('error prefix', 'x = %j', {foo:{bar:'baz'}}) -log.silent('silent prefix', 'x = %j', {foo:{bar:'baz'}}) - -console.error('log.level=silent') -log.level = 'silent' -log.silly('silly prefix', 'x = %j', {foo:{bar:'baz'}}) -log.verbose('verbose prefix', 'x = %j', {foo:{bar:'baz'}}) -log.info('info prefix', 'x = %j', {foo:{bar:'baz'}}) -log.http('http prefix', 'x = %j', {foo:{bar:'baz'}}) -log.warn('warn prefix', 'x = %j', {foo:{bar:'baz'}}) -log.error('error prefix', 'x = %j', {foo:{bar:'baz'}}) -log.silent('silent prefix', 'x = %j', {foo:{bar:'baz'}}) - -console.error('log.level=info') -log.level = 'info' -log.silly('silly prefix', 'x = %j', {foo:{bar:'baz'}}) -log.verbose('verbose prefix', 'x = %j', {foo:{bar:'baz'}}) -log.info('info prefix', 'x = %j', {foo:{bar:'baz'}}) -log.http('http prefix', 'x = %j', {foo:{bar:'baz'}}) -log.warn('warn prefix', 'x = %j', {foo:{bar:'baz'}}) -log.error('error prefix', 'x = %j', {foo:{bar:'baz'}}) -log.silent('silent prefix', 'x = %j', {foo:{bar:'baz'}}) -log.error('404', 'This is a longer\n'+ - 'message, with some details\n'+ - 'and maybe a stack.\n'+ - new Error('a 404 error').stack) -log.addLevel('noise', 10000, {beep: true}) -log.noise(false, 'LOUD NOISES') diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/log.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/log.js deleted file mode 100644 index 38b7c74..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/log.js +++ /dev/null @@ -1,154 +0,0 @@ -var EE = require('events').EventEmitter -var log = exports = module.exports = new EE -var util = require('util') - -var ansi = require('ansi') -log.cursor = ansi(process.stderr) -log.stream = process.stderr - -// by default, let ansi decide based on tty-ness. -var colorEnabled = undefined -log.enableColor = function () { - colorEnabled = true - this.cursor.enabled = true -} -log.disableColor = function () { - colorEnabled = false - this.cursor.enabled = false -} - -// default level -log.level = 'info' - -// temporarily stop emitting, but don't drop -log.pause = function () { - this._paused = true -} - -log.resume = function () { - if (!this._paused) return - this._paused = false - - var b = this._buffer - this._buffer = [] - b.forEach(function (m) { - this.emitLog(m) - }, this) -} - -log._buffer = [] - -var id = 0 -log.record = [] -log.maxRecordSize = 10000 -log.log = function (lvl, prefix, message) { - var l = this.levels[lvl] - if (l === undefined) { - return this.emit('error', new Error(util.format( - 'Undefined log level: %j', lvl))) - } - - var a = new Array(arguments.length - 2) - var stack = null - for (var i = 2; i < arguments.length; i ++) { - var arg = a[i-2] = arguments[i] - - // resolve stack traces to a plain string. - if (typeof arg === 'object' && arg && - (arg instanceof Error) && arg.stack) { - arg.stack = stack = arg.stack + '' - } - } - if (stack) a.unshift(stack + '\n') - message = util.format.apply(util, a) - - var m = { id: id++, - level: lvl, - prefix: String(prefix || ''), - message: message, - messageRaw: a } - - this.emit('log', m) - this.emit('log.' + lvl, m) - if (m.prefix) this.emit(m.prefix, m) - - this.record.push(m) - var mrs = this.maxRecordSize - var n = this.record.length - mrs - if (n > mrs / 10) { - var newSize = Math.floor(mrs * 0.9) - this.record = this.record.slice(-1 * newSize) - } - - this.emitLog(m) -}.bind(log) - -log.emitLog = function (m) { - if (this._paused) { - this._buffer.push(m) - return - } - var l = this.levels[m.level] - if (l === undefined) return - if (l < this.levels[this.level]) return - if (l > 0 && !isFinite(l)) return - - var style = log.style[m.level] - var disp = log.disp[m.level] || m.level - m.message.split(/\r?\n/).forEach(function (line) { - if (this.heading) { - this.write(this.heading, this.headingStyle) - this.write(' ') - } - this.write(disp, log.style[m.level]) - var p = m.prefix || '' - if (p) this.write(' ') - this.write(p, this.prefixStyle) - this.write(' ' + line + '\n') - }, this) -} - -log.write = function (msg, style) { - if (!this.cursor) return - if (this.stream !== this.cursor.stream) { - this.cursor = ansi(this.stream, { enabled: colorEnabled }) - } - - style = style || {} - if (style.fg) this.cursor.fg[style.fg]() - if (style.bg) this.cursor.bg[style.bg]() - if (style.bold) this.cursor.bold() - if (style.underline) this.cursor.underline() - if (style.inverse) this.cursor.inverse() - if (style.beep) this.cursor.beep() - this.cursor.write(msg).reset() -} - -log.addLevel = function (lvl, n, style, disp) { - if (!disp) disp = lvl - this.levels[lvl] = n - this.style[lvl] = style - if (!this[lvl]) this[lvl] = function () { - var a = new Array(arguments.length + 1) - a[0] = lvl - for (var i = 0; i < arguments.length; i ++) { - a[i + 1] = arguments[i] - } - return this.log.apply(this, a) - }.bind(this) - this.disp[lvl] = disp -} - -log.prefixStyle = { fg: 'magenta' } -log.headingStyle = { fg: 'white', bg: 'black' } - -log.style = {} -log.levels = {} -log.disp = {} -log.addLevel('silly', -Infinity, { inverse: true }, 'sill') -log.addLevel('verbose', 1000, { fg: 'blue', bg: 'black' }, 'verb') -log.addLevel('info', 2000, { fg: 'green' }) -log.addLevel('http', 3000, { fg: 'green', bg: 'black' }) -log.addLevel('warn', 4000, { fg: 'black', bg: 'yellow' }, 'WARN') -log.addLevel('error', 5000, { fg: 'red', bg: 'black' }, 'ERR!') -log.addLevel('silent', Infinity) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/.jshintrc b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/.jshintrc deleted file mode 100644 index 248c542..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/.jshintrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "laxcomma": true, - "asi": true -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/History.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/History.md deleted file mode 100644 index f4a9fe3..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/History.md +++ /dev/null @@ -1,16 +0,0 @@ - -0.3.0 / 2014-05-09 -================== - - * package: remove "test" script and "devDependencies" - * package: remove "engines" section - * pacakge: remove "bin" section - * package: beautify - * examples: remove `starwars` example (#15) - * Documented goto, horizontalAbsolute, and eraseLine methods in README.md (#12, @Jammerwoch) - * add `.jshintrc` file - -< 0.3.0 -======= - - * Prehistoric diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/README.md deleted file mode 100644 index 6ce1940..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/README.md +++ /dev/null @@ -1,98 +0,0 @@ -ansi.js -========= -### Advanced ANSI formatting tool for Node.js - -`ansi.js` is a module for Node.js that provides an easy-to-use API for -writing ANSI escape codes to `Stream` instances. ANSI escape codes are used to do -fancy things in a terminal window, like render text in colors, delete characters, -lines, the entire window, or hide and show the cursor, and lots more! - -#### Features: - - * 256 color support for the terminal! - * Make a beep sound from your terminal! - * Works with *any* writable `Stream` instance. - * Allows you to move the cursor anywhere on the terminal window. - * Allows you to delete existing contents from the terminal window. - * Allows you to hide and show the cursor. - * Converts CSS color codes and RGB values into ANSI escape codes. - * Low-level; you are in control of when escape codes are used, it's not abstracted. - - -Installation ------------- - -Install with `npm`: - -``` bash -$ npm install ansi -``` - - -Example -------- - -``` js -var ansi = require('ansi') - , cursor = ansi(process.stdout) - -// You can chain your calls forever: -cursor - .red() // Set font color to red - .bg.grey() // Set background color to grey - .write('Hello World!') // Write 'Hello World!' to stdout - .bg.reset() // Reset the bgcolor before writing the trailing \n, - // to avoid Terminal glitches - .write('\n') // And a final \n to wrap things up - -// Rendering modes are persistent: -cursor.hex('#660000').bold().underline() - -// You can use the regular logging functions, text will be green: -console.log('This is blood red, bold text') - -// To reset just the foreground color: -cursor.fg.reset() - -console.log('This will still be bold') - -// to go to a location (x,y) on the console -// note: 1-indexed, not 0-indexed: -cursor.goto(10, 5).write('Five down, ten over') - -// to clear the current line: -cursor.horizontalAbsolute(0).eraseLine().write('Starting again') - -// to go to a different column on the current line: -cursor.horizontalAbsolute(5).write('column five') - -// Clean up after yourself! -cursor.reset() -``` - - -License -------- - -(The MIT License) - -Copyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/beep/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/beep/index.js deleted file mode 100755 index c1ec929..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/beep/index.js +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env node - -/** - * Invokes the terminal "beep" sound once per second on every exact second. - */ - -process.title = 'beep' - -var cursor = require('../../')(process.stdout) - -function beep () { - cursor.beep() - setTimeout(beep, 1000 - (new Date()).getMilliseconds()) -} - -setTimeout(beep, 1000 - (new Date()).getMilliseconds()) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/clear/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/clear/index.js deleted file mode 100755 index 6ac21ff..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/clear/index.js +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env node - -/** - * Like GNU ncurses "clear" command. - * https://github.com/mscdex/node-ncurses/blob/master/deps/ncurses/progs/clear.c - */ - -process.title = 'clear' - -function lf () { return '\n' } - -require('../../')(process.stdout) - .write(Array.apply(null, Array(process.stdout.getWindowSize()[1])).map(lf).join('')) - .eraseData(2) - .goto(1, 1) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/cursorPosition.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/cursorPosition.js deleted file mode 100755 index 50f9644..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/cursorPosition.js +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env node - -var tty = require('tty') -var cursor = require('../')(process.stdout) - -// listen for the queryPosition report on stdin -process.stdin.resume() -raw(true) - -process.stdin.once('data', function (b) { - var match = /\[(\d+)\;(\d+)R$/.exec(b.toString()) - if (match) { - var xy = match.slice(1, 3).reverse().map(Number) - console.error(xy) - } - - // cleanup and close stdin - raw(false) - process.stdin.pause() -}) - - -// send the query position request code to stdout -cursor.queryPosition() - -function raw (mode) { - if (process.stdin.setRawMode) { - process.stdin.setRawMode(mode) - } else { - tty.setRawMode(mode) - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/progress/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/progress/index.js deleted file mode 100644 index d28dbda..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/examples/progress/index.js +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env node - -var assert = require('assert') - , ansi = require('../../') - -function Progress (stream, width) { - this.cursor = ansi(stream) - this.delta = this.cursor.newlines - this.width = width | 0 || 10 - this.open = '[' - this.close = ']' - this.complete = '█' - this.incomplete = '_' - - // initial render - this.progress = 0 -} - -Object.defineProperty(Progress.prototype, 'progress', { - get: get - , set: set - , configurable: true - , enumerable: true -}) - -function get () { - return this._progress -} - -function set (v) { - this._progress = Math.max(0, Math.min(v, 100)) - - var w = this.width - this.complete.length - this.incomplete.length - , n = w * (this._progress / 100) | 0 - , i = w - n - , com = c(this.complete, n) - , inc = c(this.incomplete, i) - , delta = this.cursor.newlines - this.delta - - assert.equal(com.length + inc.length, w) - - if (delta > 0) { - this.cursor.up(delta) - this.delta = this.cursor.newlines - } - - this.cursor - .horizontalAbsolute(0) - .eraseLine(2) - .fg.white() - .write(this.open) - .fg.grey() - .bold() - .write(com) - .resetBold() - .write(inc) - .fg.white() - .write(this.close) - .fg.reset() - .write('\n') -} - -function c (char, length) { - return Array.apply(null, Array(length)).map(function () { - return char - }).join('') -} - - - - -// Usage -var width = parseInt(process.argv[2], 10) || process.stdout.getWindowSize()[0] / 2 - , p = new Progress(process.stdout, width) - -;(function tick () { - p.progress += Math.random() * 5 - p.cursor - .eraseLine(2) - .write('Progress: ') - .bold().write(p.progress.toFixed(2)) - .write('%') - .resetBold() - .write('\n') - if (p.progress < 100) - setTimeout(tick, 100) -})() diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/lib/ansi.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/lib/ansi.js deleted file mode 100644 index 52fc8ec..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/ansi/lib/ansi.js +++ /dev/null @@ -1,405 +0,0 @@ - -/** - * References: - * - * - http://en.wikipedia.org/wiki/ANSI_escape_code - * - http://www.termsys.demon.co.uk/vtansi.htm - * - */ - -/** - * Module dependencies. - */ - -var emitNewlineEvents = require('./newlines') - , prefix = '\x1b[' // For all escape codes - , suffix = 'm' // Only for color codes - -/** - * The ANSI escape sequences. - */ - -var codes = { - up: 'A' - , down: 'B' - , forward: 'C' - , back: 'D' - , nextLine: 'E' - , previousLine: 'F' - , horizontalAbsolute: 'G' - , eraseData: 'J' - , eraseLine: 'K' - , scrollUp: 'S' - , scrollDown: 'T' - , savePosition: 's' - , restorePosition: 'u' - , queryPosition: '6n' - , hide: '?25l' - , show: '?25h' -} - -/** - * Rendering ANSI codes. - */ - -var styles = { - bold: 1 - , italic: 3 - , underline: 4 - , inverse: 7 -} - -/** - * The negating ANSI code for the rendering modes. - */ - -var reset = { - bold: 22 - , italic: 23 - , underline: 24 - , inverse: 27 -} - -/** - * The standard, styleable ANSI colors. - */ - -var colors = { - white: 37 - , black: 30 - , blue: 34 - , cyan: 36 - , green: 32 - , magenta: 35 - , red: 31 - , yellow: 33 - , grey: 90 - , brightBlack: 90 - , brightRed: 91 - , brightGreen: 92 - , brightYellow: 93 - , brightBlue: 94 - , brightMagenta: 95 - , brightCyan: 96 - , brightWhite: 97 -} - - -/** - * Creates a Cursor instance based off the given `writable stream` instance. - */ - -function ansi (stream, options) { - if (stream._ansicursor) { - return stream._ansicursor - } else { - return stream._ansicursor = new Cursor(stream, options) - } -} -module.exports = exports = ansi - -/** - * The `Cursor` class. - */ - -function Cursor (stream, options) { - if (!(this instanceof Cursor)) { - return new Cursor(stream, options) - } - if (typeof stream != 'object' || typeof stream.write != 'function') { - throw new Error('a valid Stream instance must be passed in') - } - - // the stream to use - this.stream = stream - - // when 'enabled' is false then all the functions are no-ops except for write() - this.enabled = options && options.enabled - if (typeof this.enabled === 'undefined') { - this.enabled = stream.isTTY - } - this.enabled = !!this.enabled - - // then `buffering` is true, then `write()` calls are buffered in - // memory until `flush()` is invoked - this.buffering = !!(options && options.buffering) - this._buffer = [] - - // controls the foreground and background colors - this.fg = this.foreground = new Colorer(this, 0) - this.bg = this.background = new Colorer(this, 10) - - // defaults - this.Bold = false - this.Italic = false - this.Underline = false - this.Inverse = false - - // keep track of the number of "newlines" that get encountered - this.newlines = 0 - emitNewlineEvents(stream) - stream.on('newline', function () { - this.newlines++ - }.bind(this)) -} -exports.Cursor = Cursor - -/** - * Helper function that calls `write()` on the underlying Stream. - * Returns `this` instead of the write() return value to keep - * the chaining going. - */ - -Cursor.prototype.write = function (data) { - if (this.buffering) { - this._buffer.push(arguments) - } else { - this.stream.write.apply(this.stream, arguments) - } - return this -} - -/** - * Buffer `write()` calls into memory. - * - * @api public - */ - -Cursor.prototype.buffer = function () { - this.buffering = true - return this -} - -/** - * Write out the in-memory buffer. - * - * @api public - */ - -Cursor.prototype.flush = function () { - this.buffering = false - var str = this._buffer.map(function (args) { - if (args.length != 1) throw new Error('unexpected args length! ' + args.length); - return args[0]; - }).join(''); - this._buffer.splice(0); // empty - this.write(str); - return this -} - - -/** - * The `Colorer` class manages both the background and foreground colors. - */ - -function Colorer (cursor, base) { - this.current = null - this.cursor = cursor - this.base = base -} -exports.Colorer = Colorer - -/** - * Write an ANSI color code, ensuring that the same code doesn't get rewritten. - */ - -Colorer.prototype._setColorCode = function setColorCode (code) { - var c = String(code) - if (this.current === c) return - this.cursor.enabled && this.cursor.write(prefix + c + suffix) - this.current = c - return this -} - - -/** - * Set up the positional ANSI codes. - */ - -Object.keys(codes).forEach(function (name) { - var code = String(codes[name]) - Cursor.prototype[name] = function () { - var c = code - if (arguments.length > 0) { - c = toArray(arguments).map(Math.round).join(';') + code - } - this.enabled && this.write(prefix + c) - return this - } -}) - -/** - * Set up the functions for the rendering ANSI codes. - */ - -Object.keys(styles).forEach(function (style) { - var name = style[0].toUpperCase() + style.substring(1) - , c = styles[style] - , r = reset[style] - - Cursor.prototype[style] = function () { - if (this[name]) return - this.enabled && this.write(prefix + c + suffix) - this[name] = true - return this - } - - Cursor.prototype['reset' + name] = function () { - if (!this[name]) return - this.enabled && this.write(prefix + r + suffix) - this[name] = false - return this - } -}) - -/** - * Setup the functions for the standard colors. - */ - -Object.keys(colors).forEach(function (color) { - var code = colors[color] - - Colorer.prototype[color] = function () { - this._setColorCode(this.base + code) - return this.cursor - } - - Cursor.prototype[color] = function () { - return this.foreground[color]() - } -}) - -/** - * Makes a beep sound! - */ - -Cursor.prototype.beep = function () { - this.enabled && this.write('\x07') - return this -} - -/** - * Moves cursor to specific position - */ - -Cursor.prototype.goto = function (x, y) { - x = x | 0 - y = y | 0 - this.enabled && this.write(prefix + y + ';' + x + 'H') - return this -} - -/** - * Resets the color. - */ - -Colorer.prototype.reset = function () { - this._setColorCode(this.base + 39) - return this.cursor -} - -/** - * Resets all ANSI formatting on the stream. - */ - -Cursor.prototype.reset = function () { - this.enabled && this.write(prefix + '0' + suffix) - this.Bold = false - this.Italic = false - this.Underline = false - this.Inverse = false - this.foreground.current = null - this.background.current = null - return this -} - -/** - * Sets the foreground color with the given RGB values. - * The closest match out of the 216 colors is picked. - */ - -Colorer.prototype.rgb = function (r, g, b) { - var base = this.base + 38 - , code = rgb(r, g, b) - this._setColorCode(base + ';5;' + code) - return this.cursor -} - -/** - * Same as `cursor.fg.rgb(r, g, b)`. - */ - -Cursor.prototype.rgb = function (r, g, b) { - return this.foreground.rgb(r, g, b) -} - -/** - * Accepts CSS color codes for use with ANSI escape codes. - * For example: `#FF000` would be bright red. - */ - -Colorer.prototype.hex = function (color) { - return this.rgb.apply(this, hex(color)) -} - -/** - * Same as `cursor.fg.hex(color)`. - */ - -Cursor.prototype.hex = function (color) { - return this.foreground.hex(color) -} - - -// UTIL FUNCTIONS // - -/** - * Translates a 255 RGB value to a 0-5 ANSI RGV value, - * then returns the single ANSI color code to use. - */ - -function rgb (r, g, b) { - var red = r / 255 * 5 - , green = g / 255 * 5 - , blue = b / 255 * 5 - return rgb5(red, green, blue) -} - -/** - * Turns rgb 0-5 values into a single ANSI color code to use. - */ - -function rgb5 (r, g, b) { - var red = Math.round(r) - , green = Math.round(g) - , blue = Math.round(b) - return 16 + (red*36) + (green*6) + blue -} - -/** - * Accepts a hex CSS color code string (# is optional) and - * translates it into an Array of 3 RGB 0-255 values, which - * can then be used with rgb(). - */ - -function hex (color) { - var c = color[0] === '#' ? color.substring(1) : color - , r = c.substring(0, 2) - , g = c.substring(2, 4) - , b = c.substring(4, 6) - return [parseInt(r, 16), parseInt(g, 16), parseInt(b, 16)] -} - -/** - * Turns an array-like object into a real array. - */ - -function toArray (a) { - var i = 0 - , l = a.length - , rtn = [] - for (; i 0) { - var len = data.length - , i = 0 - // now try to calculate any deltas - if (typeof data == 'string') { - for (; i _(e.g. `appname_foo__bar__baz` => `foo.bar.baz`)_ - * if you passed an option `--config file` then from that file - * a local `.${appname}rc` or the first found looking in `./ ../ ../../ ../../../` etc. - * `$HOME/.${appname}rc` - * `$HOME/.${appname}/config` - * `$HOME/.config/${appname}` - * `$HOME/.config/${appname}/config` - * `/etc/${appname}rc` - * `/etc/${appname}/config` - * the defaults object you passed in. - -All configuration sources that were found will be flattened into one object, -so that sources **earlier** in this list override later ones. - - -## Configuration File Formats - -Configuration files (e.g. `.appnamerc`) may be in either [json](http://json.org/example) or [ini](http://en.wikipedia.org/wiki/INI_file) format. The example configurations below are equivalent: - - -#### Formatted as `ini` - -``` -; You can include comments in `ini` format if you want. - -dependsOn=0.10.0 - - -; `rc` has built-in support for ini sections, see? - -[commands] - www = ./commands/www - console = ./commands/repl - - -; You can even do nested sections - -[generators.options] - engine = ejs - -[generators.modules] - new = generate-new - engine = generate-backend - -``` - -#### Formatted as `json` - -```json -{ - // You can even comment your JSON, if you want - "dependsOn": "0.10.0", - "commands": { - "www": "./commands/www", - "console": "./commands/repl" - }, - "generators": { - "options": { - "engine": "ejs" - }, - "modules": { - "new": "generate-new", - "backend": "generate-backend" - } - } -} -``` - -Comments are stripped from JSON config via [strip-json-comments](https://github.com/sindresorhus/strip-json-comments). - -> Since ini, and env variables do not have a standard for types, your application needs be prepared for strings. - - - -## Advanced Usage - -#### Pass in your own `argv` - -You may pass in your own `argv` as the third argument to `rc`. This is in case you want to [use your own command-line opts parser](https://github.com/dominictarr/rc/pull/12). - -```javascript -require('rc')(appname, defaults, customArgvParser); -``` - - -## Note on Performance - -`rc` is running `fs.statSync`-- so make sure you don't use it in a hot code path (e.g. a request handler) - - -## License - -BSD / MIT / Apache2 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/browser.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/browser.js deleted file mode 100644 index 8c230c5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/browser.js +++ /dev/null @@ -1,7 +0,0 @@ - -// when this is loaded into the browser, -// just use the defaults... - -module.exports = function (name, defaults) { - return defaults -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/index.js deleted file mode 100755 index 3b3e6b4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/index.js +++ /dev/null @@ -1,46 +0,0 @@ -#! /usr/bin/env node -var cc = require('./lib/utils') -var join = require('path').join -var deepExtend = require('deep-extend') -var etc = '/etc' -var win = process.platform === "win32" -var home = win - ? process.env.USERPROFILE - : process.env.HOME - -module.exports = function (name, defaults, argv) { - if('string' !== typeof name) - throw new Error('rc(name): name *must* be string') - if(!argv) - argv = require('minimist')(process.argv.slice(2)) - defaults = ( - 'string' === typeof defaults - ? cc.json(defaults) : defaults - ) || {} - - var local = cc.find('.'+name+'rc') - - var env = cc.env(name + '_') - - return deepExtend.apply(null, [ - defaults, - win ? {} : cc.json(join(etc, name, 'config')), - win ? {} : cc.json(join(etc, name + 'rc')), - home ? cc.json(join(home, '.config', name, 'config')) : {}, - home ? cc.json(join(home, '.config', name)) : {}, - home ? cc.json(join(home, '.' + name, 'config')) : {}, - home ? cc.json(join(home, '.' + name + 'rc')) : {}, - cc.json(local), - local ? {config: local} : null, - env.config ? cc.json(env.config) : null, - argv.config ? cc.json(argv.config) : null, - env, - argv - ]) -} - -if(!module.parent) { - console.log( - JSON.stringify(module.exports(process.argv[2]), false, 2) - ) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/lib/utils.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/lib/utils.js deleted file mode 100644 index 5ce509d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/lib/utils.js +++ /dev/null @@ -1,97 +0,0 @@ -var fs = require('fs') -var ini = require('ini') -var path = require('path') -var stripJsonComments = require('strip-json-comments') - -var parse = exports.parse = function (content, file) { - - //if it ends in .json or starts with { then it must be json. - //must be done this way, because ini accepts everything. - //can't just try and parse it and let it throw if it's not ini. - //everything is ini. even json with a systax error. - - if((file && /\.json$/.test(file)) || /^\s*{/.test(content)) - return JSON.parse(stripJsonComments(content)) - return ini.parse(content) - -} - -var json = exports.json = function () { - var args = [].slice.call(arguments).filter(function (arg) { return arg != null }) - - //path.join breaks if it's a not a string, so just skip this. - for(var i in args) - if('string' !== typeof args[i]) - return - - var file = path.join.apply(null, args) - var content - try { - content = fs.readFileSync(file,'utf-8') - } catch (err) { - return - } - return parse(content) -} - -var env = exports.env = function (prefix, env) { - env = env || process.env - var obj = {} - var l = prefix.length - for(var k in env) { - if((k.indexOf(prefix)) === 0) { - - var keypath = k.substring(l).split('__') - - // Trim empty strings from keypath array - var _emptyStringIndex - while ((_emptyStringIndex=keypath.indexOf('')) > -1) { - keypath.splice(_emptyStringIndex, 1) - } - - var cursor = obj - keypath.forEach(function _buildSubObj(_subkey,i){ - - // (check for _subkey first so we ignore empty strings) - if (!_subkey) - return - - // If this is the last key, just stuff the value in there - // Assigns actual value from env variable to final key - // (unless it's just an empty string- in that case use the last valid key) - if (i === keypath.length-1) - cursor[_subkey] = env[k] - - - // Build sub-object if nothing already exists at the keypath - if (cursor[_subkey] === undefined) - cursor[_subkey] = {} - - // Increment cursor used to track the object at the current depth - cursor = cursor[_subkey] - - }) - - } - - } - - return obj -} - -var find = exports.find = function () { - var rel = path.join.apply(null, [].slice.call(arguments)) - - function find(start, rel) { - var file = path.join(start, rel) - try { - fs.statSync(file) - return file - } catch (err) { - if(path.dirname(start) !== start) // root - return find(path.dirname(start), rel) - } - } - return find(process.cwd(), rel) -} - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/LICENSE deleted file mode 100644 index e950236..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Viacheslav Lotsmanov - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/README.md deleted file mode 100644 index 0457c52..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/README.md +++ /dev/null @@ -1,52 +0,0 @@ -Node.JS module “Deep Extend” -============================ - -Recursive object extending. - -Install ------ - - npm install deep-extend - -Usage ------ - - var deepExtend = require('deep-extend'); - var obj1 = { - a: 1, - b: 2, - d: { - a: 1, - b: [], - c: { test1: 123, test2: 321 } - }, - f: 5, - g: 123 - }; - var obj2 = { - b: 3, - c: 5, - d: { - b: { first: 'one', second: 'two' }, - c: { test2: 222 } - }, - e: { one: 1, two: 2 }, - f: [], - g: (void 0) - }; - - deepExtend(obj1, obj2); - - console.log(obj1); - /* - { a: 1, - b: 3, - d: - { a: 1, - b: { first: 'one', second: 'two' }, - c: { test1: 123, test2: 222 } }, - f: [], - c: 5, - e: { one: 1, two: 2 }, - g: undefined } - */ diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/index.js deleted file mode 100644 index c1f8dae..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/index.js +++ /dev/null @@ -1,90 +0,0 @@ -/*! - * Node.JS module "Deep Extend" - * @description Recursive object extending. - * @author Viacheslav Lotsmanov (unclechu) - * @license MIT - * - * The MIT License (MIT) - * - * Copyright (c) 2013 Viacheslav Lotsmanov - * - * 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. - */ - -/** - * Extening object that entered in first argument. - * Returns extended object or false if have no target object or incorrect type. - * If you wish to clone object, simply use that: - * deepExtend({}, yourObj_1, [yourObj_N]) - first arg is new empty object - */ -var deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) { - if (arguments.length < 1 || typeof arguments[0] !== 'object') { - return false; - } - - if (arguments.length < 2) return arguments[0]; - - var target = arguments[0]; - - // convert arguments to array and cut off target object - var args = Array.prototype.slice.call(arguments, 1); - - var key, val, src, clone, tmpBuf; - - args.forEach(function (obj) { - if (typeof obj !== 'object') return; - - for (key in obj) { - if ( ! (key in obj)) continue; - - src = target[key]; - val = obj[key]; - - if (val === target) continue; - - if (typeof val !== 'object' || val === null) { - target[key] = val; - continue; - } else if (val instanceof Buffer) { - tmpBuf = new Buffer(val.length); - val.copy(tmpBuf); - target[key] = tmpBuf; - continue; - } else if (val instanceof Date) { - target[key] = new Date(val.getTime()); - continue; - } - - if (typeof src !== 'object' || src === null) { - clone = (Array.isArray(val)) ? [] : {}; - target[key] = deepExtend(clone, val); - continue; - } - - if (Array.isArray(val)) { - clone = (Array.isArray(src)) ? src : []; - } else { - clone = (!Array.isArray(src)) ? src : {}; - } - - target[key] = deepExtend(clone, val); - } - }); - - return target; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/package.json deleted file mode 100644 index b7862f6..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "deep-extend", - "description": "Recursive object extending.", - "license": "MIT", - "version": "0.2.11", - "homepage": "https://github.com/unclechu/node-deep-extend", - "repository": { - "type": "git", - "url": "git://github.com/unclechu/node-deep-extend.git" - }, - "author": { - "name": "Viacheslav Lotsmanov", - "email": "lotsmanov89@gmail.com", - "url": "unclechu" - }, - "contributors": [ - { - "name": "Romain Prieto", - "url": "https://github.com/rprieto" - } - ], - "main": "index", - "engines": { - "node": ">=0.4" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.19.0", - "should": "~3.3.2" - }, - "directories": { - "test": "./test" - }, - "bugs": { - "url": "https://github.com/unclechu/node-deep-extend/issues" - }, - "_id": "deep-extend@0.2.11", - "dist": { - "shasum": "7a16ba69729132340506170494bc83f7076fe08f", - "tarball": "http://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz" - }, - "_from": "deep-extend@~0.2.5", - "_npmVersion": "1.4.6", - "_npmUser": { - "name": "unclechu", - "email": "lotsmanov89@gmail.com" - }, - "maintainers": [ - { - "name": "unclechu", - "email": "lotsmanov89@gmail.com" - } - ], - "_shasum": "7a16ba69729132340506170494bc83f7076fe08f", - "_resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/test/index.spec.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/test/index.spec.js deleted file mode 100644 index 38974a2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/test/index.spec.js +++ /dev/null @@ -1,57 +0,0 @@ -var should = require('should'); -var extend = require('../index'); - -describe('deep-extend', function() { - - it('can extend on 1 level', function() { - var a = { hello: 1 }; - var b = { world: 2 }; - extend(a, b); - a.should.eql({ - hello: 1, - world: 2 - }); - }); - - it('can extend on 2 levels', function() { - var a = { person: { name: 'John' } }; - var b = { person: { age: 30 } }; - extend(a, b); - a.should.eql({ - person: { name: 'John', age: 30 } - }); - }); - - it('can extend with Buffer values', function() { - var a = { hello: 1 }; - var b = { value: new Buffer('world') }; - extend(a, b); - a.should.eql({ - hello: 1, - value: new Buffer('world') - }); - }); - - it('Buffer is cloned', function () { - var a = { }; - var b = { value: new Buffer('foo') }; - extend(a, b); - a.value.write('bar'); - a.value.toString().should.eql('bar'); - b.value.toString().should.eql('foo'); - }); - - it('Date objects', function () { - var a = { d: new Date() }; - var b = extend({}, a); - b.d.should.instanceOf(Date); - }); - - it('Date object is cloned', function () { - var a = { d: new Date() }; - var b = extend({}, a); - b.d.setTime( (new Date()).getTime() + 100000 ); - b.d.getTime().should.not.eql( a.d.getTime() ); - }); - -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/test/mocha.opts b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/test/mocha.opts deleted file mode 100644 index 5ada47b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/test/mocha.opts +++ /dev/null @@ -1 +0,0 @@ ---reporter spec diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -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. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/README.md deleted file mode 100644 index acbe8ec..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/README.md +++ /dev/null @@ -1,79 +0,0 @@ -An ini format parser and serializer for node. - -Sections are treated as nested objects. Items before the first heading -are saved on the object directly. - -## Usage - -Consider an ini-file `config.ini` that looks like this: - - ; this comment is being ignored - scope = global - - [database] - user = dbuser - password = dbpassword - database = use_this_database - - [paths.default] - datadir = /var/lib/data - array[] = first value - array[] = second value - array[] = third value - -You can read, manipulate and write the ini-file like so: - - var fs = require('fs') - , ini = require('ini') - - var config = ini.parse(fs.readFileSync('./config.ini', 'utf-8')) - - config.scope = 'local' - config.database.database = 'use_another_database' - config.paths.default.tmpdir = '/tmp' - delete config.paths.default.datadir - config.paths.default.array.push('fourth value') - - fs.writeFileSync('./config_modified.ini', ini.stringify(config, 'section')) - -This will result in a file called `config_modified.ini` being written to the filesystem with the following content: - - [section] - scope = local - [section.database] - user = dbuser - password = dbpassword - database = use_another_database - [section.paths.default] - tmpdir = /tmp - array[] = first value - array[] = second value - array[] = third value - array[] = fourth value - - -## API - -### decode(inistring) -Decode the ini-style formatted `inistring` into a nested object. - -### parse(inistring) -Alias for `decode(inistring)` - -### encode(object, [section]) -Encode the object `object` into an ini-style formatted string. If the optional parameter `section` is given, then all top-level properties of the object are put into this section and the `section`-string is prepended to all sub-sections, see the usage example above. - -### stringify(object, [section]) -Alias for `encode(object, [section])` - -### safe(val) -Escapes the string `val` such that it is safe to be used as a key or value in an ini-file. Basically escapes quotes. For example - - ini.safe('"unsafe string"') - -would result in - - "\"unsafe string\"" - -### unsafe(val) -Unescapes the string `val` diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/ini.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/ini.js deleted file mode 100644 index eaf3209..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/ini.js +++ /dev/null @@ -1,166 +0,0 @@ - -exports.parse = exports.decode = decode -exports.stringify = exports.encode = encode - -exports.safe = safe -exports.unsafe = unsafe - -var eol = process.platform === "win32" ? "\r\n" : "\n" - -function encode (obj, section) { - var children = [] - , out = "" - - Object.keys(obj).forEach(function (k, _, __) { - var val = obj[k] - if (val && Array.isArray(val)) { - val.forEach(function(item) { - out += safe(k + "[]") + " = " + safe(item) + "\n" - }) - } - else if (val && typeof val === "object") { - children.push(k) - } else { - out += safe(k) + " = " + safe(val) + eol - } - }) - - if (section && out.length) { - out = "[" + safe(section) + "]" + eol + out - } - - children.forEach(function (k, _, __) { - var nk = dotSplit(k).join('\\.') - var child = encode(obj[k], (section ? section + "." : "") + nk) - if (out.length && child.length) { - out += eol - } - out += child - }) - - return out -} - -function dotSplit (str) { - return str.replace(/\1/g, '\2LITERAL\\1LITERAL\2') - .replace(/\\\./g, '\1') - .split(/\./).map(function (part) { - return part.replace(/\1/g, '\\.') - .replace(/\2LITERAL\\1LITERAL\2/g, '\1') - }) -} - -function decode (str) { - var out = {} - , p = out - , section = null - , state = "START" - // section |key = value - , re = /^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i - , lines = str.split(/[\r\n]+/g) - , section = null - - lines.forEach(function (line, _, __) { - if (!line || line.match(/^\s*;/)) return - var match = line.match(re) - if (!match) return - if (match[1] !== undefined) { - section = unsafe(match[1]) - p = out[section] = out[section] || {} - return - } - var key = unsafe(match[2]) - , value = match[3] ? unsafe((match[4] || "")) : true - switch (value) { - case 'true': - case 'false': - case 'null': value = JSON.parse(value) - } - - // Convert keys with '[]' suffix to an array - if (key.length > 2 && key.slice(-2) === "[]") { - key = key.substring(0, key.length - 2) - if (!p[key]) { - p[key] = [] - } - else if (!Array.isArray(p[key])) { - p[key] = [p[key]] - } - } - - // safeguard against resetting a previously defined - // array by accidentally forgetting the brackets - if (Array.isArray(p[key])) { - p[key].push(value) - } - else { - p[key] = value - } - }) - - // {a:{y:1},"a.b":{x:2}} --> {a:{y:1,b:{x:2}}} - // use a filter to return the keys that have to be deleted. - Object.keys(out).filter(function (k, _, __) { - if (!out[k] || typeof out[k] !== "object" || Array.isArray(out[k])) return false - // see if the parent section is also an object. - // if so, add it to that, and mark this one for deletion - var parts = dotSplit(k) - , p = out - , l = parts.pop() - , nl = l.replace(/\\\./g, '.') - parts.forEach(function (part, _, __) { - if (!p[part] || typeof p[part] !== "object") p[part] = {} - p = p[part] - }) - if (p === out && nl === l) return false - p[nl] = out[k] - return true - }).forEach(function (del, _, __) { - delete out[del] - }) - - return out -} - -function safe (val) { - return ( typeof val !== "string" - || val.match(/[\r\n]/) - || val.match(/^\[/) - || (val.length > 1 - && val.charAt(0) === "\"" - && val.slice(-1) === "\"") - || val !== val.trim() ) - ? JSON.stringify(val) - : val.replace(/;/g, '\\;') -} - -function unsafe (val, doUnesc) { - val = (val || "").trim() - if (val.charAt(0) === "\"" && val.slice(-1) === "\"") { - try { val = JSON.parse(val) } catch (_) {} - } else { - // walk the val to find the first not-escaped ; character - var esc = false - var unesc = ""; - for (var i = 0, l = val.length; i < l; i++) { - var c = val.charAt(i) - if (esc) { - if (c === "\\" || c === ";") - unesc += c - else - unesc += "\\" + c - esc = false - } else if (c === ";") { - break - } else if (c === "\\") { - esc = true - } else { - unesc += c - } - } - if (esc) - unesc += "\\" - return unesc - } - return val -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/package.json deleted file mode 100644 index e9c898c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "ini", - "description": "An ini encoder/decoder for node", - "version": "1.1.0", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/ini.git" - }, - "main": "ini.js", - "scripts": { - "test": "tap test/*.js" - }, - "engines": { - "node": "*" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.0.9" - }, - "_id": "ini@1.1.0", - "dist": { - "shasum": "4e808c2ce144c6c1788918e034d6797bc6cf6281", - "tarball": "http://registry.npmjs.org/ini/-/ini-1.1.0.tgz" - }, - "_from": "ini@~1.1.0", - "_npmVersion": "1.2.2", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "4e808c2ce144c6c1788918e034d6797bc6cf6281", - "_resolved": "https://registry.npmjs.org/ini/-/ini-1.1.0.tgz", - "bugs": { - "url": "https://github.com/isaacs/ini/issues" - }, - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/isaacs/ini" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/bar.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/bar.js deleted file mode 100644 index cb16176..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/bar.js +++ /dev/null @@ -1,23 +0,0 @@ -//test that parse(stringify(obj) deepEqu - -var ini = require('../') -var test = require('tap').test - -var data = { - 'number': {count: 10}, - 'string': {drink: 'white russian'}, - 'boolean': {isTrue: true}, - 'nested boolean': {theDude: {abides: true, rugCount: 1}} -} - - -test('parse(stringify(x)) deepEqual x', function (t) { - - for (var k in data) { - var s = ini.stringify(data[k]) - console.log(s, data[k]) - t.deepEqual(ini.parse(s), data[k]) - } - - t.end() -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/fixtures/foo.ini b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/fixtures/foo.ini deleted file mode 100644 index 1d81378..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/fixtures/foo.ini +++ /dev/null @@ -1,47 +0,0 @@ -o = p - - a with spaces = b c - -; wrap in quotes to JSON-decode and preserve spaces -" xa n p " = "\"\r\nyoyoyo\r\r\n" - -; wrap in quotes to get a key with a bracket, not a section. -"[disturbing]" = hey you never know - -; Test arrays -zr[] = deedee -ar[] = one -ar[] = three -; This should be included in the array -ar = this is included - -; Test resetting of a value (and not turn it into an array) -br = cold -br = warm - -; a section -[a] -av = a val -e = { o: p, a: { av: a val, b: { c: { e: "this [value]" } } } } -j = "{ o: "p", a: { av: "a val", b: { c: { e: "this [value]" } } } }" -"[]" = a square? - -; Nested array -cr[] = four -cr[] = eight - -; nested child without middle parent -; should create otherwise-empty a.b -[a.b.c] -e = 1 -j = 2 - -; dots in the section name should be literally interpreted -[x\.y\.z] -x.y.z = xyz - -[x\.y\.z.a\.b\.c] -a.b.c = abc - -; this next one is not a comment! it's escaped! -nocomment = this\; this is not a comment diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/foo.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/foo.js deleted file mode 100644 index 3a05eaf..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/test/foo.js +++ /dev/null @@ -1,71 +0,0 @@ -var i = require("../") - , tap = require("tap") - , test = tap.test - , fs = require("fs") - , path = require("path") - , fixture = path.resolve(__dirname, "./fixtures/foo.ini") - , data = fs.readFileSync(fixture, "utf8") - , d - , expectE = 'o = p\n' - + 'a with spaces = b c\n' - + '" xa n p " = "\\"\\r\\nyoyoyo\\r\\r\\n"\n' - + '"[disturbing]" = hey you never know\n' - + 'zr[] = deedee\n' - + 'ar[] = one\n' - + 'ar[] = three\n' - + 'ar[] = this is included\n' - + 'br = warm\n' - + '\n' - + '[a]\n' - + 'av = a val\n' - + 'e = { o: p, a: ' - + '{ av: a val, b: { c: { e: "this [value]" ' - + '} } } }\nj = "\\"{ o: \\"p\\", a: { av:' - + ' \\"a val\\", b: { c: { e: \\"this [value]' - + '\\" } } } }\\""\n"[]" = a square?\n' - + 'cr[] = four\ncr[] = eight\n\n' - +'[a.b.c]\ne = 1\n' - + 'j = 2\n\n[x\\.y\\.z]\nx.y.z = xyz\n\n' - + '[x\\.y\\.z.a\\.b\\.c]\na.b.c = abc\n' - + 'nocomment = this\\; this is not a comment\n' - , expectD = - { o: 'p', - 'a with spaces': 'b c', - " xa n p ":'"\r\nyoyoyo\r\r\n', - '[disturbing]': 'hey you never know', - 'zr': ['deedee'], - 'ar': ['one', 'three', 'this is included'], - 'br': 'warm', - a: - { av: 'a val', - e: '{ o: p, a: { av: a val, b: { c: { e: "this [value]" } } } }', - j: '"{ o: "p", a: { av: "a val", b: { c: { e: "this [value]" } } } }"', - "[]": "a square?", - cr: ['four', 'eight'], - b: { c: { e: '1', j: '2' } } }, - 'x.y.z': { - 'x.y.z': 'xyz', - 'a.b.c': { - 'a.b.c': 'abc', - 'nocomment': 'this\; this is not a comment' - } - } - } - -test("decode from file", function (t) { - var d = i.decode(data) - t.deepEqual(d, expectD) - t.end() -}) - -test("encode from data", function (t) { - var e = i.encode(expectD) - t.deepEqual(e, expectE) - - var obj = {log: { type:'file', level: {label:'debug', value:10} } } - e = i.encode(obj) - t.notEqual(e.slice(0, 1), '\n', 'Never a blank first line') - t.notEqual(e.slice(-2), '\n\n', 'Never a blank final line') - - t.end() -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/LICENSE deleted file mode 100644 index ee27ba4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -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. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/example/parse.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/example/parse.js deleted file mode 100644 index abff3e8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/example/parse.js +++ /dev/null @@ -1,2 +0,0 @@ -var argv = require('../')(process.argv.slice(2)); -console.dir(argv); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/index.js deleted file mode 100644 index 71fb830..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/index.js +++ /dev/null @@ -1,187 +0,0 @@ -module.exports = function (args, opts) { - if (!opts) opts = {}; - - var flags = { bools : {}, strings : {} }; - - [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { - flags.bools[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; - })); - }); - }); - - [].concat(opts.string).filter(Boolean).forEach(function (key) { - flags.strings[key] = true; - if (aliases[key]) { - flags.strings[aliases[key]] = true; - } - }); - - 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); -} - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/package.json deleted file mode 100644 index 2a1bc56..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "minimist", - "version": "0.0.10", - "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.10", - "dist": { - "shasum": "de3f98543dbf96082be48ad1a0c7cda836301dcf", - "tarball": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - }, - "_from": "minimist@~0.0.7", - "_npmVersion": "1.4.3", - "_npmUser": { - "name": "substack", - "email": "mail@substack.net" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - } - ], - "directories": {}, - "_shasum": "de3f98543dbf96082be48ad1a0c7cda836301dcf", - "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/readme.markdown b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/readme.markdown deleted file mode 100644 index c256353..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/readme.markdown +++ /dev/null @@ -1,73 +0,0 @@ -# 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 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/bool.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/bool.js deleted file mode 100644 index 749e083..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/bool.js +++ /dev/null @@ -1,119 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -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('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(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dash.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dash.js deleted file mode 100644 index 8b034b9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dash.js +++ /dev/null @@ -1,24 +0,0 @@ -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' ] }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/default_bool.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/default_bool.js deleted file mode 100644 index f0041ee..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/default_bool.js +++ /dev/null @@ -1,20 +0,0 @@ -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(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dotted.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dotted.js deleted file mode 100644 index d8b3e85..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dotted.js +++ /dev/null @@ -1,22 +0,0 @@ -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(); -}); - -test('dotted default with no alias', function (t) { - var argv = parse('', {default: {'a.b': 11}}); - t.equal(argv.a.b, 11); - t.end(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/long.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/long.js deleted file mode 100644 index 5d3a1e0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/long.js +++ /dev/null @@ -1,31 +0,0 @@ -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(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/num.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/num.js deleted file mode 100644 index 2cc77f4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/num.js +++ /dev/null @@ -1,36 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -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('already a number', function (t) { - var argv = parse([ '-x', 1234, 789 ]); - t.deepEqual(argv, { x : 1234, _ : [ 789 ] }); - t.deepEqual(typeof argv.x, 'number'); - t.deepEqual(typeof argv._[0], 'number'); - t.end(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse.js deleted file mode 100644 index 7b4a2a1..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse.js +++ /dev/null @@ -1,197 +0,0 @@ -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('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('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('string and alias', function(t) { - var x = parse([ '--str', '000123' ], { - string: 's', - alias: { s: 'str' } - }); - - t.equal(x.str, '000123'); - t.equal(typeof x.str, 'string'); - t.equal(x.s, '000123'); - t.equal(typeof x.s, 'string'); - - var y = parse([ '-s', '000123' ], { - string: 'str', - alias: { str: 's' } - }); - - t.equal(y.str, '000123'); - t.equal(typeof y.str, 'string'); - t.equal(y.s, '000123'); - t.equal(typeof y.s, 'string'); - 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(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse_modified.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse_modified.js deleted file mode 100644 index 21851b0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse_modified.js +++ /dev/null @@ -1,9 +0,0 @@ -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'] }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/short.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/short.js deleted file mode 100644 index d513a1c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/short.js +++ /dev/null @@ -1,67 +0,0 @@ -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(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/whitespace.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/whitespace.js deleted file mode 100644 index 8a52a58..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/whitespace.js +++ /dev/null @@ -1,8 +0,0 @@ -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'); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/cli.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/cli.js deleted file mode 100755 index ac4da48..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/cli.js +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var strip = require('./strip-json-comments'); -var input = process.argv[2]; - - -function getStdin(cb) { - var ret = ''; - - process.stdin.setEncoding('utf8'); - - process.stdin.on('data', function (data) { - ret += data; - }); - - process.stdin.on('end', function () { - cb(ret); - }); -} - -if (process.argv.indexOf('-h') !== -1 || process.argv.indexOf('--help') !== -1) { - console.log('strip-json-comments > '); - console.log('or'); - console.log('cat | strip-json-comments > '); - return; -} - -if (process.argv.indexOf('-v') !== -1 || process.argv.indexOf('--version') !== -1) { - console.log(require('./package').version); - return; -} - -if (input) { - process.stdout.write(strip(fs.readFileSync(input, 'utf8'))); - return; -} - -getStdin(function (data) { - process.stdout.write(strip(data)); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/package.json deleted file mode 100644 index 893c4b2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "name": "strip-json-comments", - "version": "0.1.3", - "description": "Strip comments from JSON. Lets you use comments in your JSON files!", - "keywords": [ - "json", - "strip", - "remove", - "delete", - "trim", - "comments", - "multiline", - "parse", - "config", - "configuration", - "conf", - "settings", - "util", - "env", - "environment", - "cli", - "bin" - ], - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "cli.js", - "strip-json-comments.js" - ], - "main": "strip-json-comments", - "bin": { - "strip-json-comments": "cli.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/strip-json-comments" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.8.0" - }, - "gitHead": "cbd5aede7ccbe5d5a9065b1d47070fd99ad579af", - "bugs": { - "url": "https://github.com/sindresorhus/strip-json-comments/issues" - }, - "homepage": "https://github.com/sindresorhus/strip-json-comments", - "_id": "strip-json-comments@0.1.3", - "_shasum": "164c64e370a8a3cc00c9e01b539e569823f0ee54", - "_from": "strip-json-comments@0.1.x", - "_npmVersion": "1.4.13", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "164c64e370a8a3cc00c9e01b539e569823f0ee54", - "tarball": "http://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/readme.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/readme.md deleted file mode 100644 index ad6a178..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# strip-json-comments [![Build Status](https://travis-ci.org/sindresorhus/strip-json-comments.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-json-comments) - -> Strip comments from JSON. Lets you use comments in your JSON files! - -This is now possible: - -```js -{ - // rainbows - "unicorn": /* ❤ */ "cake" -} -``` - -It will remove single-line comments `//` and mult-line comments `/**/`. - -Also available as a [gulp](https://github.com/sindresorhus/gulp-strip-json-comments)/[grunt](https://github.com/sindresorhus/grunt-strip-json-comments)/[broccoli](https://github.com/sindresorhus/broccoli-strip-json-comments) plugin and a [require hook](https://github.com/uTest/autostrip-json-comments). - - -*There's already [json-comments](https://npmjs.org/package/json-comments), but it's only for Node.js and uses a naive regex to strip comments which fails on simple cases like `{"a":"//"}`. This module however parses out the comments.* - - -## Install - -```sh -$ npm install --save strip-json-comments -``` - -```sh -$ bower install --save strip-json-comments -``` - -```sh -$ component install sindresorhus/strip-json-comments -``` - - -## Usage - -```js -var json = '{/*rainbows*/"unicorn":"cake"}'; -JSON.parse(stripJsonComments(json)); -//=> {unicorn: 'cake'} -``` - - -## API - -### stripJsonComments(input) - -#### input - -Type: `string` - -Accepts a string with JSON and returns a string without comments. - - -## CLI - -```sh -$ npm install --global strip-json-comments -``` - -```sh -$ strip-json-comments --help - -strip-json-comments > -# or -cat | strip-json-comments > -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js deleted file mode 100644 index 2e7fdef..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js +++ /dev/null @@ -1,64 +0,0 @@ -/*! - strip-json-comments - Strip comments from JSON. Lets you use comments in your JSON files! - https://github.com/sindresorhus/strip-json-comments - by Sindre Sorhus - MIT License -*/ -(function () { - 'use strict'; - - function stripJsonComments(str) { - var currentChar; - var nextChar; - var insideString = false; - var insideComment = false; - var ret = ''; - - for (var i = 0; i < str.length; i++) { - currentChar = str[i]; - nextChar = str[i + 1]; - - if (!insideComment && str[i - 1] !== '\\' && currentChar === '"') { - insideString = !insideString; - } - - if (insideString) { - ret += currentChar; - continue; - } - - if (!insideComment && currentChar + nextChar === '//') { - insideComment = 'single'; - i++; - } else if (insideComment === 'single' && currentChar + nextChar === '\r\n') { - insideComment = false; - i++; - } else if (insideComment === 'single' && currentChar === '\n') { - insideComment = false; - } else if (!insideComment && currentChar + nextChar === '/*') { - insideComment = 'multi'; - i++; - continue; - } else if (insideComment === 'multi' && currentChar + nextChar === '*/') { - insideComment = false; - i++; - continue; - } - - if (insideComment) { - continue; - } - - ret += currentChar; - } - - return ret; - } - - if (typeof module !== 'undefined' && module.exports) { - module.exports = stripJsonComments; - } else { - window.stripJsonComments = stripJsonComments; - } -})(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/package.json deleted file mode 100644 index 382aeff..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "rc", - "version": "0.5.4", - "description": "hardwired configuration loader", - "main": "index.js", - "browserify": "browser.js", - "scripts": { - "test": "set -e; node test/test.js; node test/ini.js; node test/nested-env-vars.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/dominictarr/rc.git" - }, - "keywords": [ - "config", - "rc", - "unix", - "defaults" - ], - "bin": { - "rc": "./index.js" - }, - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "dominictarr.com" - }, - "licenses": [ - "BSD", - "MIT", - "Apache2" - ], - "dependencies": { - "minimist": "~0.0.7", - "deep-extend": "~0.2.5", - "strip-json-comments": "0.1.x", - "ini": "~1.1.0" - }, - "gitHead": "b670e6dce7a9295c2629cdb881e78e6ff91875f4", - "bugs": { - "url": "https://github.com/dominictarr/rc/issues" - }, - "homepage": "https://github.com/dominictarr/rc", - "_id": "rc@0.5.4", - "_shasum": "14169483ccb33b2695a349dbd96ef54e4e92d54f", - "_from": "rc@~0.5.1", - "_npmVersion": "1.4.26", - "_npmUser": { - "name": "dominictarr", - "email": "dominic.tarr@gmail.com" - }, - "maintainers": [ - { - "name": "dominictarr", - "email": "dominic.tarr@gmail.com" - } - ], - "dist": { - "shasum": "14169483ccb33b2695a349dbd96ef54e4e92d54f", - "tarball": "http://registry.npmjs.org/rc/-/rc-0.5.4.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/rc/-/rc-0.5.4.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/ini.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/ini.js deleted file mode 100644 index e6857f8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/ini.js +++ /dev/null @@ -1,16 +0,0 @@ -var cc =require('../lib/utils') -var INI = require('ini') -var assert = require('assert') - -function test(obj) { - - var _json, _ini - var json = cc.parse (_json = JSON.stringify(obj)) - var ini = cc.parse (_ini = INI.stringify(obj)) - console.log(_ini, _json) - assert.deepEqual(json, ini) -} - - -test({hello: true}) - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/nested-env-vars.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/nested-env-vars.js deleted file mode 100644 index 314979f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/nested-env-vars.js +++ /dev/null @@ -1,39 +0,0 @@ - -var n = 'rc'+Math.random() -var assert = require('assert') - - -// Basic usage -process.env[n+'_someOpt__a'] = 42 -process.env[n+'_someOpt__x__'] = 99 -process.env[n+'_someOpt__a__b'] = 186 -process.env[n+'_someOpt__x__y'] = 1862 -process.env[n+'_someOpt__z'] = 186577 - -// Should ignore empty strings from orphaned '__' -process.env[n+'_someOpt__z__x__'] = 18629 -process.env[n+'_someOpt__w__w__'] = 18629 - -// Leading '__' should ignore everything up to 'z' -process.env[n+'___z__i__'] = 9999 - -var config = require('../')(n, { - option: true -}) - -console.log('\n\n------ nested-env-vars ------\n',config) - -assert.equal(config.option, true) -assert.equal(config.someOpt.a, 42) -assert.equal(config.someOpt.x, 99) -// Should not override `a` once it's been set -assert.equal(config.someOpt.a/*.b*/, 42) -// Should not override `x` once it's been set -assert.equal(config.someOpt.x/*.y*/, 99) -assert.equal(config.someOpt.z, 186577) -// Should not override `z` once it's been set -assert.equal(config.someOpt.z/*.x*/, 186577) -assert.equal(config.someOpt.w.w, 18629) -assert.equal(config.z.i, 9999) - - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/test.js deleted file mode 100644 index badc930..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rc/test/test.js +++ /dev/null @@ -1,56 +0,0 @@ - -var n = 'rc'+Math.random() -var assert = require('assert') - -process.env[n+'_envOption'] = 42 - -var config = require('../')(n, { - option: true -}) - -console.log(config) - -assert.equal(config.option, true) -assert.equal(config.envOption, 42) - -var customArgv = require('../')(n, { - option: true -}, { // nopt-like argv - option: false, - envOption: 24, - argv: { - remain: [], - cooked: ['--no-option', '--envOption', '24'], - original: ['--no-option', '--envOption=24'] - } -}) - -console.log(customArgv) - -assert.equal(customArgv.option, false) -assert.equal(customArgv.envOption, 24) - -var fs = require('fs') -var path = require('path') -var jsonrc = path.resolve('.' + n + 'rc'); - -fs.writeFileSync(jsonrc, [ - '{', - '// json overrides default', - '"option": false,', - '/* env overrides json */', - '"envOption": 24', - '}' -].join('\n')); - -var commentedJSON = require('../')(n, { - option: true -}) - -fs.unlinkSync(jsonrc); - -console.log(commentedJSON) - -assert.equal(commentedJSON.option, false) -assert.equal(commentedJSON.envOption, 42) -assert.equal(commentedJSON.config, jsonrc) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.eslintrc b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.eslintrc deleted file mode 100644 index 9c3350d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.eslintrc +++ /dev/null @@ -1,22 +0,0 @@ -{ - "env": { - "node": true - }, - "rules": { - // Disallow semi-colons, unless needed to disambiguate statement - "semi": [2, "never"], - // Require strings to use single quotes - "quotes": [2, "single"], - // Require curly braces for all control statements - "curly": 2, - // Disallow using variables and functions before they've been defined - "no-use-before-define": 2, - // Allow any case for variable naming - "camelcase": 0, - // Disallow unused variables, except as function arguments - "no-unused-vars": [2, {"args":"none"}], - // Allow leading underscores for method names - // REASON: we use underscores to denote private methods - "no-underscore-dangle": 0 - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.npmignore deleted file mode 100644 index 80e59ef..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -tests -node_modules diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.travis.yml deleted file mode 100644 index 742c7df..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" -webhooks: - urls: https://webhooks.gitter.im/e/237280ed4796c19cc626 - on_success: change # options: [always|never|change] default: always - on_failure: always # options: [always|never|change] default: always - on_start: false # default: false diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/CHANGELOG.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/CHANGELOG.md deleted file mode 100644 index 4a0a2cc..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/CHANGELOG.md +++ /dev/null @@ -1,375 +0,0 @@ -## Change Log - -### v2.48.0 (2014/11/12) -- [#1263](https://github.com/request/request/pull/1263) Fixed a syntax error / typo in README.md (@xna2) -- [#1253](https://github.com/request/request/pull/1253) Add multipart chunked flag (@simov, @nylen) -- [#1251](https://github.com/request/request/pull/1251) Clarify that defaults() does not modify global defaults (@nylen) -- [#1250](https://github.com/request/request/pull/1250) Improve documentation for pool and maxSockets options (@nylen) -- [#1237](https://github.com/request/request/pull/1237) Documenting error handling when using streams (@vmattos) -- [#1244](https://github.com/request/request/pull/1244) Finalize changelog command (@nylen) -- [#1241](https://github.com/request/request/pull/1241) Fix typo (@alexanderGugel) -- [#1223](https://github.com/request/request/pull/1223) Show latest version number instead of "upcoming" in changelog (@nylen) -- [#1236](https://github.com/request/request/pull/1236) Document how to use custom CA in README (#1229) (@hypesystem) -- [#1228](https://github.com/request/request/pull/1228) Support for oauth with RSA-SHA1 signing (@nylen) -- [#1216](https://github.com/request/request/pull/1216) Made json and multipart options coexist (@nylen, @simov) -- [#1225](https://github.com/request/request/pull/1225) Allow header white/exclusive lists in any case. (@RReverser) - -### v2.47.0 (2014/10/26) -- [#1222](https://github.com/request/request/pull/1222) Move from mikeal/request to request/request (@nylen) -- [#1220](https://github.com/request/request/pull/1220) update qs dependency to 2.3.1 (@FredKSchott) -- [#1212](https://github.com/request/request/pull/1212) Improve tests/test-timeout.js (@nylen) -- [#1219](https://github.com/request/request/pull/1219) remove old globalAgent workaround for node 0.4 (@request) -- [#1214](https://github.com/request/request/pull/1214) Remove cruft left over from optional dependencies (@nylen) -- [#1215](https://github.com/request/request/pull/1215) Add proxyHeaderExclusiveList option for proxy-only headers. (@RReverser) -- [#1211](https://github.com/request/request/pull/1211) Allow 'Host' header instead of 'host' and remember case across redirects (@nylen) -- [#1208](https://github.com/request/request/pull/1208) Improve release script (@nylen) -- [#1213](https://github.com/request/request/pull/1213) Support for custom cookie store (@nylen, @mitsuru) -- [#1197](https://github.com/request/request/pull/1197) Clean up some code around setting the agent (@FredKSchott) -- [#1209](https://github.com/request/request/pull/1209) Improve multipart form append test (@simov) -- [#1207](https://github.com/request/request/pull/1207) Update changelog (@nylen) -- [#1185](https://github.com/request/request/pull/1185) Stream multipart/related bodies (@simov) - -### v2.46.0 (2014/10/23) -- [#1198](https://github.com/request/request/pull/1198) doc for TLS/SSL protocol options (@shawnzhu) -- [#1200](https://github.com/request/request/pull/1200) Add a Gitter chat badge to README.md (@gitter-badger) -- [#1196](https://github.com/request/request/pull/1196) Upgrade taper test reporter to v0.3.0 (@nylen) -- [#1199](https://github.com/request/request/pull/1199) Fix lint error: undeclared var i (@nylen) -- [#1191](https://github.com/request/request/pull/1191) Move self.proxy decision logic out of init and into a helper (@FredKSchott) -- [#1190](https://github.com/request/request/pull/1190) Move _buildRequest() logic back into init (@FredKSchott) -- [#1186](https://github.com/request/request/pull/1186) Support Smarter Unix URL Scheme (@FredKSchott) -- [#1178](https://github.com/request/request/pull/1178) update form documentation for new usage (@FredKSchott) -- [#1180](https://github.com/request/request/pull/1180) Enable no-mixed-requires linting rule (@nylen) -- [#1184](https://github.com/request/request/pull/1184) Don't forward authorization header across redirects to different hosts (@nylen) -- [#1183](https://github.com/request/request/pull/1183) Correct README about pre and postamble CRLF using multipart and not mult... (@netpoetica) -- [#1179](https://github.com/request/request/pull/1179) Lint tests directory (@nylen) -- [#1169](https://github.com/request/request/pull/1169) add metadata for form-data file field (@dotcypress) -- [#1173](https://github.com/request/request/pull/1173) remove optional dependencies (@seanstrom) -- [#1165](https://github.com/request/request/pull/1165) Cleanup event listeners and remove function creation from init (@FredKSchott) -- [#1174](https://github.com/request/request/pull/1174) update the request.cookie docs to have a valid cookie example (@seanstrom) -- [#1168](https://github.com/request/request/pull/1168) create a detach helper and use detach helper in replace of nextTick (@seanstrom) -- [#1171](https://github.com/request/request/pull/1171) in post can send form data and use callback (@MiroRadenovic) -- [#1159](https://github.com/request/request/pull/1159) accept charset for x-www-form-urlencoded content-type (@seanstrom) -- [#1157](https://github.com/request/request/pull/1157) Update README.md: body with json=true (@Rob--W) -- [#1164](https://github.com/request/request/pull/1164) Disable tests/test-timeout.js on Travis (@nylen) -- [#1153](https://github.com/request/request/pull/1153) Document how to run a single test (@nylen) -- [#1144](https://github.com/request/request/pull/1144) adds documentation for the "response" event within the streaming section (@tbuchok) -- [#1162](https://github.com/request/request/pull/1162) Update eslintrc file to no longer allow past errors (@FredKSchott) -- [#1155](https://github.com/request/request/pull/1155) Support/use self everywhere (@seanstrom) -- [#1161](https://github.com/request/request/pull/1161) fix no-use-before-define lint warnings (@emkay) -- [#1156](https://github.com/request/request/pull/1156) adding curly brackets to get rid of lint errors (@emkay) -- [#1151](https://github.com/request/request/pull/1151) Fix localAddress test on OS X (@nylen) -- [#1145](https://github.com/request/request/pull/1145) documentation: fix outdated reference to setCookieSync old name in README (@FredKSchott) -- [#1131](https://github.com/request/request/pull/1131) Update pool documentation (@FredKSchott) -- [#1143](https://github.com/request/request/pull/1143) Rewrite all tests to use tape (@nylen) -- [#1137](https://github.com/request/request/pull/1137) Add ability to specifiy querystring lib in options. (@jgrund) -- [#1138](https://github.com/request/request/pull/1138) allow hostname and port in place of host on uri (@cappslock) -- [#1134](https://github.com/request/request/pull/1134) Fix multiple redirects and `self.followRedirect` (@blakeembrey) -- [#1130](https://github.com/request/request/pull/1130) documentation fix: add note about npm test for contributing (@FredKSchott) -- [#1120](https://github.com/request/request/pull/1120) Support/refactor request setup tunnel (@seanstrom) -- [#1129](https://github.com/request/request/pull/1129) linting fix: convert double quote strings to use single quotes (@FredKSchott) -- [#1124](https://github.com/request/request/pull/1124) linting fix: remove unneccesary semi-colons (@FredKSchott) - -### v2.45.0 (2014/10/06) -- [#1128](https://github.com/request/request/pull/1128) Add test for setCookie regression (@nylen) -- [#1127](https://github.com/request/request/pull/1127) added tests around using objects as values in a query string (@bcoe) -- [#1103](https://github.com/request/request/pull/1103) Support/refactor request constructor (@nylen, @seanstrom) -- [#1119](https://github.com/request/request/pull/1119) add basic linting to request library (@FredKSchott) -- [#1121](https://github.com/request/request/pull/1121) Revert "Explicitly use sync versions of cookie functions" (@nylen) -- [#1118](https://github.com/request/request/pull/1118) linting fix: Restructure bad empty if statement (@FredKSchott) -- [#1117](https://github.com/request/request/pull/1117) Fix a bad check for valid URIs (@FredKSchott) -- [#1113](https://github.com/request/request/pull/1113) linting fix: space out operators (@FredKSchott) -- [#1116](https://github.com/request/request/pull/1116) Fix typo in `noProxyHost` definition (@FredKSchott) -- [#1114](https://github.com/request/request/pull/1114) linting fix: Added a `new` operator that was missing when creating and throwing a new error (@FredKSchott) -- [#1096](https://github.com/request/request/pull/1096) No_proxy support (@samcday) -- [#1107](https://github.com/request/request/pull/1107) linting-fix: remove unused variables (@FredKSchott) -- [#1112](https://github.com/request/request/pull/1112) linting fix: Make return values consistent and more straitforward (@FredKSchott) -- [#1111](https://github.com/request/request/pull/1111) linting fix: authPieces was getting redeclared (@FredKSchott) -- [#1105](https://github.com/request/request/pull/1105) Use strict mode in request (@FredKSchott) -- [#1110](https://github.com/request/request/pull/1110) linting fix: replace lazy '==' with more strict '===' (@FredKSchott) -- [#1109](https://github.com/request/request/pull/1109) linting fix: remove function call from if-else conditional statement (@FredKSchott) -- [#1102](https://github.com/request/request/pull/1102) Fix to allow setting a `requester` on recursive calls to `request.defaults` (@tikotzky) -- [#1095](https://github.com/request/request/pull/1095) Tweaking engines in package.json (@pdehaan) -- [#1082](https://github.com/request/request/pull/1082) Forward the socket event from the httpModule request (@seanstrom) -- [#972](https://github.com/request/request/pull/972) Clarify gzip handling in the README (@kevinoid) -- [#1089](https://github.com/request/request/pull/1089) Mention that encoding defaults to utf8, not Buffer (@stuartpb) -- [#1088](https://github.com/request/request/pull/1088) Fix cookie example in README.md and make it more clear (@pipi32167) -- [#1027](https://github.com/request/request/pull/1027) Add support for multipart form data in request options. (@crocket) -- [#1076](https://github.com/request/request/pull/1076) use Request.abort() to abort the request when the request has timed-out (@seanstrom) -- [#1068](https://github.com/request/request/pull/1068) add optional postamble required by .NET multipart requests (@netpoetica) - -### v2.43.0 (2014/09/18) -- [#1057](https://github.com/request/request/pull/1057) Defaults should not overwrite defined options (@davidwood) -- [#1046](https://github.com/request/request/pull/1046) Propagate datastream errors, useful in case gzip fails. (@ZJONSSON, @Janpot) -- [#1063](https://github.com/request/request/pull/1063) copy the input headers object #1060 (@finnp) -- [#1031](https://github.com/request/request/pull/1031) Explicitly use sync versions of cookie functions (@ZJONSSON) -- [#1056](https://github.com/request/request/pull/1056) Fix redirects when passing url.parse(x) as URL to convenience method (@nylen) - -### v2.42.0 (2014/09/04) -- [#1053](https://github.com/request/request/pull/1053) Fix #1051 Parse auth properly when using non-tunneling proxy (@isaacs) - -### v2.41.0 (2014/09/04) -- [#1050](https://github.com/request/request/pull/1050) Pass whitelisted headers to tunneling proxy. Organize all tunneling logic. (@isaacs, @Feldhacker) -- [#1035](https://github.com/request/request/pull/1035) souped up nodei.co badge (@rvagg) -- [#1048](https://github.com/request/request/pull/1048) Aws is now possible over a proxy (@steven-aerts) -- [#1039](https://github.com/request/request/pull/1039) extract out helper functions to a helper file (@seanstrom) -- [#1021](https://github.com/request/request/pull/1021) Support/refactor indexjs (@seanstrom) -- [#1033](https://github.com/request/request/pull/1033) Improve and document debug options (@nylen) -- [#1034](https://github.com/request/request/pull/1034) Fix readme headings (@nylen) -- [#1030](https://github.com/request/request/pull/1030) Allow recursive request.defaults (@tikotzky) -- [#1029](https://github.com/request/request/pull/1029) Fix a couple of typos (@nylen) -- [#675](https://github.com/request/request/pull/675) Checking for SSL fault on connection before reading SSL properties (@VRMink) -- [#989](https://github.com/request/request/pull/989) Added allowRedirect function. Should return true if redirect is allowed or false otherwise (@doronin) -- [#1025](https://github.com/request/request/pull/1025) [fixes #1023] Set self._ended to true once response has ended (@mridgway) -- [#1020](https://github.com/request/request/pull/1020) Add back removed debug metadata (@FredKSchott) -- [#1008](https://github.com/request/request/pull/1008) Moving to module instead of cutomer buffer concatenation. (@mikeal) -- [#770](https://github.com/request/request/pull/770) Added dependency badge for README file; (@timgluz) -- [#1016](https://github.com/request/request/pull/1016) toJSON no longer results in an infinite loop, returns simple objects (@FredKSchott) -- [#1018](https://github.com/request/request/pull/1018) Remove pre-0.4.4 HTTPS fix (@mmalecki) -- [#1006](https://github.com/request/request/pull/1006) Migrate to caseless, fixes #1001 (@mikeal) -- [#995](https://github.com/request/request/pull/995) Fix parsing array of objects (@sjonnet19) -- [#999](https://github.com/request/request/pull/999) Fix fallback for browserify for optional modules. (@eiriksm) -- [#996](https://github.com/request/request/pull/996) Wrong oauth signature when multiple same param keys exist [updated] (@bengl) - -### v2.40.0 (2014/08/06) -- [#992](https://github.com/request/request/pull/992) Fix security vulnerability. Update qs (@poeticninja) -- [#988](https://github.com/request/request/pull/988) “--” -> “—” (@upisfree) -- [#987](https://github.com/request/request/pull/987) Show optional modules as being loaded by the module that reqeusted them (@iarna) - -### v2.39.0 (2014/07/24) -- [#976](https://github.com/request/request/pull/976) Update README.md (@fosco-maestro) - -### v2.38.0 (2014/07/22) -- [#952](https://github.com/request/request/pull/952) Adding support to client certificate with proxy use case (@ofirshaked) -- [#884](https://github.com/request/request/pull/884) Documented tough-cookie installation. (@wbyoung) -- [#935](https://github.com/request/request/pull/935) Correct repository url (@fritx) -- [#963](https://github.com/request/request/pull/963) Update changelog (@nylen) -- [#960](https://github.com/request/request/pull/960) Support gzip with encoding on node pre-v0.9.4 (@kevinoid) -- [#953](https://github.com/request/request/pull/953) Add async Content-Length computation when using form-data (@LoicMahieu) -- [#844](https://github.com/request/request/pull/844) Add support for HTTP[S]_PROXY environment variables. Fixes #595. (@jvmccarthy) -- [#946](https://github.com/request/request/pull/946) defaults: merge headers (@aj0strow) - -### v2.37.0 (2014/07/07) -- [#957](https://github.com/request/request/pull/957) Silence EventEmitter memory leak warning #311 (@watson) -- [#955](https://github.com/request/request/pull/955) check for content-length header before setting it in nextTick (@camilleanne) -- [#951](https://github.com/request/request/pull/951) Add support for gzip content decoding (@kevinoid) -- [#949](https://github.com/request/request/pull/949) Manually enter querystring in form option (@charlespwd) -- [#944](https://github.com/request/request/pull/944) Make request work with browserify (@eiriksm) -- [#943](https://github.com/request/request/pull/943) New mime module (@eiriksm) -- [#927](https://github.com/request/request/pull/927) Bump version of hawk dep. (@samccone) -- [#907](https://github.com/request/request/pull/907) append secureOptions to poolKey (@medovob) - -### v2.35.0 (2014/05/17) -- [#901](https://github.com/request/request/pull/901) Fixes #555 (@pigulla) -- [#897](https://github.com/request/request/pull/897) merge with default options (@vohof) -- [#891](https://github.com/request/request/pull/891) fixes 857 - options object is mutated by calling request (@lalitkapoor) -- [#869](https://github.com/request/request/pull/869) Pipefilter test (@tgohn) -- [#866](https://github.com/request/request/pull/866) Fix typo (@dandv) -- [#861](https://github.com/request/request/pull/861) Add support for RFC 6750 Bearer Tokens (@phedny) -- [#809](https://github.com/request/request/pull/809) upgrade tunnel-proxy to 0.4.0 (@ksato9700) -- [#850](https://github.com/request/request/pull/850) Fix word consistency in readme (@0xNobody) -- [#810](https://github.com/request/request/pull/810) add some exposition to mpu example in README.md (@mikermcneil) -- [#840](https://github.com/request/request/pull/840) improve error reporting for invalid protocols (@FND) -- [#821](https://github.com/request/request/pull/821) added secureOptions back (@nw) -- [#815](https://github.com/request/request/pull/815) Create changelog based on pull requests (@lalitkapoor) - -### v2.34.0 (2014/02/18) -- [#516](https://github.com/request/request/pull/516) UNIX Socket URL Support (@lyuzashi) -- [#801](https://github.com/request/request/pull/801) 794 ignore cookie parsing and domain errors (@lalitkapoor) -- [#802](https://github.com/request/request/pull/802) Added the Apache license to the package.json. (@keskival) -- [#793](https://github.com/request/request/pull/793) Adds content-length calculation when submitting forms using form-data li... (@Juul) -- [#785](https://github.com/request/request/pull/785) Provide ability to override content-type when `json` option used (@vvo) -- [#781](https://github.com/request/request/pull/781) simpler isReadStream function (@joaojeronimo) - -### v2.32.0 (2014/01/16) -- [#767](https://github.com/request/request/pull/767) Use tough-cookie CookieJar sync API (@stash) -- [#764](https://github.com/request/request/pull/764) Case-insensitive authentication scheme (@bobyrizov) -- [#763](https://github.com/request/request/pull/763) Upgrade tough-cookie to 0.10.0 (@stash) -- [#744](https://github.com/request/request/pull/744) Use Cookie.parse (@lalitkapoor) -- [#757](https://github.com/request/request/pull/757) require aws-sign2 (@mafintosh) - -### v2.31.0 (2014/01/08) -- [#645](https://github.com/request/request/pull/645) update twitter api url to v1.1 (@mick) -- [#746](https://github.com/request/request/pull/746) README: Markdown code highlight (@weakish) -- [#745](https://github.com/request/request/pull/745) updating setCookie example to make it clear that the callback is required (@emkay) -- [#742](https://github.com/request/request/pull/742) Add note about JSON output body type (@iansltx) -- [#741](https://github.com/request/request/pull/741) README example is using old cookie jar api (@emkay) -- [#736](https://github.com/request/request/pull/736) Fix callback arguments documentation (@mmalecki) - -### v2.30.0 (2013/12/13) -- [#732](https://github.com/request/request/pull/732) JSHINT: Creating global 'for' variable. Should be 'for (var ...'. (@Fritz-Lium) -- [#730](https://github.com/request/request/pull/730) better HTTP DIGEST support (@dai-shi) -- [#728](https://github.com/request/request/pull/728) Fix TypeError when calling request.cookie (@scarletmeow) - -### v2.29.0 (2013/12/06) -- [#727](https://github.com/request/request/pull/727) fix requester bug (@jchris) - -### v2.28.0 (2013/12/04) -- [#724](https://github.com/request/request/pull/724) README.md: add custom HTTP Headers example. (@tcort) -- [#719](https://github.com/request/request/pull/719) Made a comment gender neutral. (@oztu) -- [#715](https://github.com/request/request/pull/715) Request.multipart no longer crashes when header 'Content-type' present (@pastaclub) -- [#710](https://github.com/request/request/pull/710) Fixing listing in callback part of docs. (@lukasz-zak) -- [#696](https://github.com/request/request/pull/696) Edited README.md for formatting and clarity of phrasing (@Zearin) -- [#694](https://github.com/request/request/pull/694) Typo in README (@VRMink) -- [#690](https://github.com/request/request/pull/690) Handle blank password in basic auth. (@diversario) -- [#682](https://github.com/request/request/pull/682) Optional dependencies (@Turbo87) -- [#683](https://github.com/request/request/pull/683) Travis CI support (@Turbo87) -- [#674](https://github.com/request/request/pull/674) change cookie module,to tough-cookie.please check it . (@sxyizhiren) -- [#666](https://github.com/request/request/pull/666) make `ciphers` and `secureProtocol` to work in https request (@richarddong) -- [#656](https://github.com/request/request/pull/656) Test case for #304. (@diversario) -- [#662](https://github.com/request/request/pull/662) option.tunnel to explicitly disable tunneling (@seanmonstar) -- [#659](https://github.com/request/request/pull/659) fix failure when running with NODE_DEBUG=request, and a test for that (@jrgm) -- [#630](https://github.com/request/request/pull/630) Send random cnonce for HTTP Digest requests (@wprl) - -### v2.27.0 (2013/08/15) -- [#619](https://github.com/request/request/pull/619) decouple things a bit (@joaojeronimo) - -### v2.26.0 (2013/08/07) -- [#613](https://github.com/request/request/pull/613) Fixes #583, moved initialization of self.uri.pathname (@lexander) -- [#605](https://github.com/request/request/pull/605) Only include ":" + pass in Basic Auth if it's defined (fixes #602) (@bendrucker) - -### v2.24.0 (2013/07/23) -- [#596](https://github.com/request/request/pull/596) Global agent is being used when pool is specified (@Cauldrath) -- [#594](https://github.com/request/request/pull/594) Emit complete event when there is no callback (@RomainLK) -- [#601](https://github.com/request/request/pull/601) Fixed a small typo (@michalstanko) - -### v2.23.0 (2013/07/23) -- [#589](https://github.com/request/request/pull/589) Prevent setting headers after they are sent (@geek) -- [#587](https://github.com/request/request/pull/587) Global cookie jar disabled by default (@threepointone) - -### v2.22.0 (2013/07/05) -- [#544](https://github.com/request/request/pull/544) Update http-signature version. (@davidlehn) -- [#581](https://github.com/request/request/pull/581) Fix spelling of "ignoring." (@bigeasy) -- [#568](https://github.com/request/request/pull/568) use agentOptions to create agent when specified in request (@SamPlacette) -- [#564](https://github.com/request/request/pull/564) Fix redirections (@criloz) -- [#541](https://github.com/request/request/pull/541) The exported request function doesn't have an auth method (@tschaub) -- [#542](https://github.com/request/request/pull/542) Expose Request class (@regality) - -### v2.21.0 (2013/04/30) -- [#536](https://github.com/request/request/pull/536) Allow explicitly empty user field for basic authentication. (@mikeando) -- [#532](https://github.com/request/request/pull/532) fix typo (@fredericosilva) -- [#497](https://github.com/request/request/pull/497) Added redirect event (@Cauldrath) -- [#503](https://github.com/request/request/pull/503) Fix basic auth for passwords that contain colons (@tonistiigi) -- [#521](https://github.com/request/request/pull/521) Improving test-localAddress.js (@noway421) -- [#529](https://github.com/request/request/pull/529) dependencies versions bump (@jodaka) - -### v2.17.0 (2013/04/22) -- [#523](https://github.com/request/request/pull/523) Updating dependencies (@noway421) -- [#520](https://github.com/request/request/pull/520) Fixing test-tunnel.js (@noway421) -- [#519](https://github.com/request/request/pull/519) Update internal path state on post-creation QS changes (@jblebrun) -- [#510](https://github.com/request/request/pull/510) Add HTTP Signature support. (@davidlehn) -- [#502](https://github.com/request/request/pull/502) Fix POST (and probably other) requests that are retried after 401 Unauthorized (@nylen) -- [#508](https://github.com/request/request/pull/508) Honor the .strictSSL option when using proxies (tunnel-agent) (@jhs) -- [#512](https://github.com/request/request/pull/512) Make password optional to support the format: http://username@hostname/ (@pajato1) -- [#513](https://github.com/request/request/pull/513) add 'localAddress' support (@yyfrankyy) -- [#498](https://github.com/request/request/pull/498) Moving response emit above setHeaders on destination streams (@kenperkins) -- [#490](https://github.com/request/request/pull/490) Empty response body (3-rd argument) must be passed to callback as an empty string (@Olegas) -- [#479](https://github.com/request/request/pull/479) Changing so if Accept header is explicitly set, sending json does not ov... (@RoryH) -- [#475](https://github.com/request/request/pull/475) Use `unescape` from `querystring` (@shimaore) -- [#473](https://github.com/request/request/pull/473) V0.10 compat (@isaacs) -- [#471](https://github.com/request/request/pull/471) Using querystring library from visionmedia (@kbackowski) -- [#461](https://github.com/request/request/pull/461) Strip the UTF8 BOM from a UTF encoded response (@kppullin) -- [#460](https://github.com/request/request/pull/460) hawk 0.10.0 (@hueniverse) -- [#462](https://github.com/request/request/pull/462) if query params are empty, then request path shouldn't end with a '?' (merges cleanly now) (@jaipandya) -- [#456](https://github.com/request/request/pull/456) hawk 0.9.0 (@hueniverse) -- [#429](https://github.com/request/request/pull/429) Copy options before adding callback. (@nrn) -- [#454](https://github.com/request/request/pull/454) Destroy the response if present when destroying the request (clean merge) (@mafintosh) -- [#310](https://github.com/request/request/pull/310) Twitter Oauth Stuff Out of Date; Now Updated (@joemccann) -- [#413](https://github.com/request/request/pull/413) rename googledoodle.png to .jpg (@nfriedly) -- [#448](https://github.com/request/request/pull/448) Convenience method for PATCH (@mloar) -- [#444](https://github.com/request/request/pull/444) protect against double callbacks on error path (@spollack) -- [#433](https://github.com/request/request/pull/433) Added support for HTTPS cert & key (@mmalecki) -- [#430](https://github.com/request/request/pull/430) Respect specified {Host,host} headers, not just {host} (@andrewschaaf) -- [#415](https://github.com/request/request/pull/415) Fixed a typo. (@jerem) -- [#338](https://github.com/request/request/pull/338) Add more auth options, including digest support (@nylen) -- [#403](https://github.com/request/request/pull/403) Optimize environment lookup to happen once only (@mmalecki) -- [#398](https://github.com/request/request/pull/398) Add more reporting to tests (@mmalecki) -- [#388](https://github.com/request/request/pull/388) Ensure "safe" toJSON doesn't break EventEmitters (@othiym23) -- [#381](https://github.com/request/request/pull/381) Resolving "Invalid signature. Expected signature base string: " (@landeiro) -- [#380](https://github.com/request/request/pull/380) Fixes missing host header on retried request when using forever agent (@mac-) -- [#376](https://github.com/request/request/pull/376) Headers lost on redirect (@kapetan) -- [#375](https://github.com/request/request/pull/375) Fix for missing oauth_timestamp parameter (@jplock) -- [#374](https://github.com/request/request/pull/374) Correct Host header for proxy tunnel CONNECT (@youurayy) -- [#370](https://github.com/request/request/pull/370) Twitter reverse auth uses x_auth_mode not x_auth_type (@drudge) -- [#369](https://github.com/request/request/pull/369) Don't remove x_auth_mode for Twitter reverse auth (@drudge) -- [#344](https://github.com/request/request/pull/344) Make AWS auth signing find headers correctly (@nlf) -- [#363](https://github.com/request/request/pull/363) rfc3986 on base_uri, now passes tests (@jeffmarshall) -- [#362](https://github.com/request/request/pull/362) Running `rfc3986` on `base_uri` in `oauth.hmacsign` instead of just `encodeURIComponent` (@jeffmarshall) -- [#361](https://github.com/request/request/pull/361) Don't create a Content-Length header if we already have it set (@danjenkins) -- [#360](https://github.com/request/request/pull/360) Delete self._form along with everything else on redirect (@jgautier) -- [#355](https://github.com/request/request/pull/355) stop sending erroneous headers on redirected requests (@azylman) -- [#332](https://github.com/request/request/pull/332) Fix #296 - Only set Content-Type if body exists (@Marsup) -- [#343](https://github.com/request/request/pull/343) Allow AWS to work in more situations, added a note in the README on its usage (@nlf) -- [#320](https://github.com/request/request/pull/320) request.defaults() doesn't need to wrap jar() (@StuartHarris) -- [#322](https://github.com/request/request/pull/322) Fix + test for piped into request bumped into redirect. #321 (@alexindigo) -- [#326](https://github.com/request/request/pull/326) Do not try to remove listener from an undefined connection (@strk) -- [#318](https://github.com/request/request/pull/318) Pass servername to tunneling secure socket creation (@isaacs) -- [#317](https://github.com/request/request/pull/317) Workaround for #313 (@isaacs) -- [#293](https://github.com/request/request/pull/293) Allow parser errors to bubble up to request (@mscdex) -- [#290](https://github.com/request/request/pull/290) A test for #289 (@isaacs) -- [#280](https://github.com/request/request/pull/280) Like in node.js print options if NODE_DEBUG contains the word request (@Filirom1) -- [#207](https://github.com/request/request/pull/207) Fix #206 Change HTTP/HTTPS agent when redirecting between protocols (@isaacs) -- [#214](https://github.com/request/request/pull/214) documenting additional behavior of json option (@jphaas) -- [#272](https://github.com/request/request/pull/272) Boundary begins with CRLF? (@elspoono) -- [#284](https://github.com/request/request/pull/284) Remove stray `console.log()` call in multipart generator. (@bcherry) -- [#241](https://github.com/request/request/pull/241) Composability updates suggested by issue #239 (@polotek) -- [#282](https://github.com/request/request/pull/282) OAuth Authorization header contains non-"oauth_" parameters (@jplock) -- [#279](https://github.com/request/request/pull/279) fix tests with boundary by injecting boundry from header (@benatkin) -- [#273](https://github.com/request/request/pull/273) Pipe back pressure issue (@mafintosh) -- [#268](https://github.com/request/request/pull/268) I'm not OCD seriously (@TehShrike) -- [#263](https://github.com/request/request/pull/263) Bug in OAuth key generation for sha1 (@nanodocumet) -- [#265](https://github.com/request/request/pull/265) uncaughtException when redirected to invalid URI (@naholyr) -- [#262](https://github.com/request/request/pull/262) JSON test should check for equality (@timshadel) -- [#261](https://github.com/request/request/pull/261) Setting 'pool' to 'false' does NOT disable Agent pooling (@timshadel) -- [#249](https://github.com/request/request/pull/249) Fix for the fix of your (closed) issue #89 where self.headers[content-length] is set to 0 for all methods (@sethbridges) -- [#255](https://github.com/request/request/pull/255) multipart allow body === '' ( the empty string ) (@Filirom1) -- [#260](https://github.com/request/request/pull/260) fixed just another leak of 'i' (@sreuter) -- [#246](https://github.com/request/request/pull/246) Fixing the set-cookie header (@jeromegn) -- [#243](https://github.com/request/request/pull/243) Dynamic boundary (@zephrax) -- [#240](https://github.com/request/request/pull/240) don't error when null is passed for options (@polotek) -- [#211](https://github.com/request/request/pull/211) Replace all occurrences of special chars in RFC3986 (@chriso) -- [#224](https://github.com/request/request/pull/224) Multipart content-type change (@janjongboom) -- [#217](https://github.com/request/request/pull/217) need to use Authorization (titlecase) header with Tumblr OAuth (@visnup) -- [#203](https://github.com/request/request/pull/203) Fix cookie and redirect bugs and add auth support for HTTPS tunnel (@milewise) -- [#199](https://github.com/request/request/pull/199) Tunnel (@isaacs) -- [#198](https://github.com/request/request/pull/198) Bugfix on forever usage of util.inherits (@isaacs) -- [#197](https://github.com/request/request/pull/197) Make ForeverAgent work with HTTPS (@isaacs) -- [#193](https://github.com/request/request/pull/193) Fixes GH-119 (@goatslacker) -- [#188](https://github.com/request/request/pull/188) Add abort support to the returned request (@itay) -- [#176](https://github.com/request/request/pull/176) Querystring option (@csainty) -- [#182](https://github.com/request/request/pull/182) Fix request.defaults to support (uri, options, callback) api (@twilson63) -- [#180](https://github.com/request/request/pull/180) Modified the post, put, head and del shortcuts to support uri optional param (@twilson63) -- [#179](https://github.com/request/request/pull/179) fix to add opts in .pipe(stream, opts) (@substack) -- [#177](https://github.com/request/request/pull/177) Issue #173 Support uri as first and optional config as second argument (@twilson63) -- [#170](https://github.com/request/request/pull/170) can't create a cookie in a wrapped request (defaults) (@fabianonunes) -- [#168](https://github.com/request/request/pull/168) Picking off an EasyFix by adding some missing mimetypes. (@serby) -- [#161](https://github.com/request/request/pull/161) Fix cookie jar/headers.cookie collision (#125) (@papandreou) -- [#162](https://github.com/request/request/pull/162) Fix issue #159 (@dpetukhov) -- [#90](https://github.com/request/request/pull/90) add option followAllRedirects to follow post/put redirects (@jroes) -- [#148](https://github.com/request/request/pull/148) Retry Agent (@thejh) -- [#146](https://github.com/request/request/pull/146) Multipart should respect content-type if previously set (@apeace) -- [#144](https://github.com/request/request/pull/144) added "form" option to readme (@petejkim) -- [#133](https://github.com/request/request/pull/133) Fixed cookies parsing (@afanasy) -- [#135](https://github.com/request/request/pull/135) host vs hostname (@iangreenleaf) -- [#132](https://github.com/request/request/pull/132) return the body as a Buffer when encoding is set to null (@jahewson) -- [#112](https://github.com/request/request/pull/112) Support using a custom http-like module (@jhs) -- [#104](https://github.com/request/request/pull/104) Cookie handling contains bugs (@janjongboom) -- [#121](https://github.com/request/request/pull/121) Another patch for cookie handling regression (@jhurliman) -- [#117](https://github.com/request/request/pull/117) Remove the global `i` (@3rd-Eden) -- [#110](https://github.com/request/request/pull/110) Update to Iris Couch URL (@jhs) -- [#86](https://github.com/request/request/pull/86) Can't post binary to multipart requests (@developmentseed) -- [#105](https://github.com/request/request/pull/105) added test for proxy option. (@dominictarr) -- [#102](https://github.com/request/request/pull/102) Implemented cookies - closes issue 82: https://github.com/mikeal/request/issues/82 (@alessioalex) -- [#97](https://github.com/request/request/pull/97) Typo in previous pull causes TypeError in non-0.5.11 versions (@isaacs) -- [#96](https://github.com/request/request/pull/96) Authless parsed url host support (@isaacs) -- [#81](https://github.com/request/request/pull/81) Enhance redirect handling (@danmactough) -- [#78](https://github.com/request/request/pull/78) Don't try to do strictSSL for non-ssl connections (@isaacs) -- [#76](https://github.com/request/request/pull/76) Bug when a request fails and a timeout is set (@Marsup) -- [#70](https://github.com/request/request/pull/70) add test script to package.json (@isaacs) -- [#73](https://github.com/request/request/pull/73) Fix #71 Respect the strictSSL flag (@isaacs) -- [#69](https://github.com/request/request/pull/69) Flatten chunked requests properly (@isaacs) -- [#67](https://github.com/request/request/pull/67) fixed global variable leaks (@aheckmann) -- [#66](https://github.com/request/request/pull/66) Do not overwrite established content-type headers for read stream deliver (@voodootikigod) -- [#53](https://github.com/request/request/pull/53) Parse json: Issue #51 (@benatkin) -- [#45](https://github.com/request/request/pull/45) Added timeout option (@mbrevoort) -- [#35](https://github.com/request/request/pull/35) The "end" event isn't emitted for some responses (@voxpelli) -- [#31](https://github.com/request/request/pull/31) Error on piping a request to a destination (@tobowers) \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/CONTRIBUTING.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/CONTRIBUTING.md deleted file mode 100644 index 06b1968..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/CONTRIBUTING.md +++ /dev/null @@ -1,44 +0,0 @@ -# This is an OPEN Open Source Project - ------------------------------------------ - -## What? - -Individuals making significant and valuable contributions are given -commit-access to the project to contribute as they see fit. This project is -more like an open wiki than a standard guarded open source project. - -## Rules - -There are a few basic ground-rules for contributors: - -1. **No `--force` pushes** or modifying the Git history in any way. -1. **Non-master branches** ought to be used for ongoing work. -1. **External API changes and significant modifications** ought to be subject - to an **internal pull-request** to solicit feedback from other contributors. -1. Internal pull-requests to solicit feedback are *encouraged* for any other - non-trivial contribution but left to the discretion of the contributor. -1. For significant changes wait a full 24 hours before merging so that active - contributors who are distributed throughout the world have a chance to weigh - in. -1. Contributors should attempt to adhere to the prevailing code-style. -1. Run `npm test` locally before submitting your PR, to catch any easy to miss - style & testing issues. To diagnose test failures, there are two ways to - run a single test file: - - `node_modules/.bin/taper tests/test-file.js` - run using the default - [`taper`](https://github.com/nylen/taper) test reporter. - - `node tests/test-file.js` - view the raw - [tap](https://testanything.org/) output. - - -## Releases - -Declaring formal releases remains the prerogative of the project maintainer. - -## Changes to this arrangement - -This is an experiment and feedback is welcome! This document may also be -subject to pull-requests or changes by contributors where you believe you have -something valuable to add or change. - ------------------------------------------ diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/LICENSE deleted file mode 100644 index a4a9aee..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/README.md deleted file mode 100644 index c2c1c86..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/README.md +++ /dev/null @@ -1,805 +0,0 @@ -# Request — Simplified HTTP client -[![NPM](https://nodei.co/npm/request.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/request/) - -[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/request/request?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - -## Super simple to use - -Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default. - -```javascript -var request = require('request'); -request('http://www.google.com', function (error, response, body) { - if (!error && response.statusCode == 200) { - console.log(body) // Print the google web page. - } -}) -``` - -## Streaming - -You can stream any response to a file stream. - -```javascript -request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')) -``` - -You can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one). - -```javascript -fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json')) -``` - -Request can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers. - -```javascript -request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png')) -``` - -Request emits a "response" event when a response is received. The `response` argument will be an instance of [http.IncomingMessage](http://nodejs.org/api/http.html#http_http_incomingmessage). - -```javascript -request - .get('http://google.com/img.png') - .on('response', function(response) { - console.log(response.statusCode) // 200 - console.log(response.headers['content-type']) // 'image/png' - }) - .pipe(request.put('http://mysite.com/img.png')) -``` - -To easily handle errors when streaming requests, listen to the `error` event before piping: - -```javascript -request - .get('http://mysite.com/doodle.png') - .on('error', function(err) { - console.log(err) - }) - .pipe(fs.createWriteStream('doodle.png')) -``` - -Now let’s get fancy. - -```javascript -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - if (req.method === 'PUT') { - req.pipe(request.put('http://mysite.com/doodle.png')) - } else if (req.method === 'GET' || req.method === 'HEAD') { - request.get('http://mysite.com/doodle.png').pipe(resp) - } - } -}) -``` - -You can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do: - -```javascript -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - var x = request('http://mysite.com/doodle.png') - req.pipe(x) - x.pipe(resp) - } -}) -``` - -And since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :) - -```javascript -req.pipe(request('http://mysite.com/doodle.png')).pipe(resp) -``` - -Also, none of this new functionality conflicts with requests previous features, it just expands them. - -```javascript -var r = request.defaults({'proxy':'http://localproxy.com'}) - -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - r.get('http://google.com/doodle.png').pipe(resp) - } -}) -``` - -You can still use intermediate proxies, the requests will still follow HTTP forwards, etc. - -## Proxies - -If you specify a `proxy` option, then the request (and any subsequent -redirects) will be sent via a connection to the proxy server. - -If your endpoint is an `https` url, and you are using a proxy, then -request will send a `CONNECT` request to the proxy server *first*, and -then use the supplied connection to connect to the endpoint. - -That is, first it will make a request like: - -``` -HTTP/1.1 CONNECT endpoint-server.com:80 -Host: proxy-server.com -User-Agent: whatever user agent you specify -``` - -and then the proxy server make a TCP connection to `endpoint-server` -on port `80`, and return a response that looks like: - -``` -HTTP/1.1 200 OK -``` - -At this point, the connection is left open, and the client is -communicating directly with the `endpoint-server.com` machine. - -See [the wikipedia page on HTTP Tunneling](http://en.wikipedia.org/wiki/HTTP_tunnel) -for more information. - -By default, when proxying `http` traffic, request will simply make a -standard proxied `http` request. This is done by making the `url` -section of the initial line of the request a fully qualified url to -the endpoint. - -For example, it will make a single request that looks like: - -``` -HTTP/1.1 GET http://endpoint-server.com/some-url -Host: proxy-server.com -Other-Headers: all go here - -request body or whatever -``` - -Because a pure "http over http" tunnel offers no additional security -or other features, it is generally simpler to go with a -straightforward HTTP proxy in this case. However, if you would like -to force a tunneling proxy, you may set the `tunnel` option to `true`. - -If you are using a tunneling proxy, you may set the -`proxyHeaderWhiteList` to share certain headers with the proxy. - -You can also set the `proxyHeaderExclusiveList` to share certain -headers only with the proxy and not with destination host. - -By default, this set is: - -``` -accept -accept-charset -accept-encoding -accept-language -accept-ranges -cache-control -content-encoding -content-language -content-length -content-location -content-md5 -content-range -content-type -connection -date -expect -max-forwards -pragma -proxy-authorization -referer -te -transfer-encoding -user-agent -via -``` - -Note that, when using a tunneling proxy, the `proxy-authorization` -header and any headers from custom `proxyHeaderExclusiveList` are -*never* sent to the endpoint server, but only to the proxy server. - -### Controlling proxy behaviour using environment variables - -The following environment variables are respected by `request`: - - * `HTTP_PROXY` / `http_proxy` - * `HTTPS_PROXY` / `https_proxy` - * `NO_PROXY` / `no_proxy` - -When `HTTP_PROXY` / `http_proxy` are set, they will be used to proxy non-SSL requests that do not have an explicit `proxy` configuration option present. Similarly, `HTTPS_PROXY` / `https_proxy` will be respected for SSL requests that do not have an explicit `proxy` configuration option. It is valid to define a proxy in one of the environment variables, but then override it for a specific request, using the `proxy` configuration option. Furthermore, the `proxy` configuration option can be explicitly set to false / null to opt out of proxying altogether for that request. - -`request` is also aware of the `NO_PROXY`/`no_proxy` environment variables. These variables provide a granular way to opt out of proxying, on a per-host basis. It should contain a comma separated list of hosts to opt out of proxying. It is also possible to opt of proxying when a particular destination port is used. Finally, the variable may be set to `*` to opt out of the implicit proxy configuration of the other environment variables. - -Here's some examples of valid `no_proxy` values: - - * `google.com` - don't proxy HTTP/HTTPS requests to Google. - * `google.com:443` - don't proxy HTTPS requests to Google, but *do* proxy HTTP requests to Google. - * `google.com:443, yahoo.com:80` - don't proxy HTTPS requests to Google, and don't proxy HTTP requests to Yahoo! - * `*` - ignore `https_proxy`/`http_proxy` environment variables altogether. - -## UNIX Socket - -`request` supports making requests to [UNIX Domain Sockets](http://en.wikipedia.org/wiki/Unix_domain_socket). To make one, use the following URL scheme: - -```javascript -/* Pattern */ 'http://unix:SOCKET:PATH' -/* Example */ request.get('http://unix:/absolute/path/to/unix.socket:/request/path') -``` - -Note: The `SOCKET` path is assumed to be absolute to the root of the host file system. - - -## Forms - -`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API. - -#### application/x-www-form-urlencoded (URL-Encoded Forms) - -URL-encoded forms are simple. - -```javascript -request.post('http://service.com/upload', {form:{key:'value'}}) -// or -request.post('http://service.com/upload').form({key:'value'}) -// or -request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ }) -``` - -#### multipart/form-data (Multipart Form Uploads) - -For `multipart/form-data` we use the [form-data](https://github.com/felixge/node-form-data) library by [@felixge](https://github.com/felixge). For the most cases, you can pass your upload form data via the `formData` option. - - -```javascript -var formData = { - // Pass a simple key-value pair - my_field: 'my_value', - // Pass data via Buffers - my_buffer: new Buffer([1, 2, 3]), - // Pass data via Streams - my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), - // Pass multiple values /w an Array - attachments: [ - fs.createReadStream(__dirname + '/attacment1.jpg'), - fs.createReadStream(__dirname + '/attachment2.jpg') - ], - // Pass optional meta-data with an 'options' object with style: {value: DATA, options: OPTIONS} - // See the `form-data` README for more information about options: https://github.com/felixge/node-form-data - custom_file: { - value: fs.createReadStream('/dev/urandom'), - options: { - filename: 'topsecret.jpg', - contentType: 'image/jpg' - } - } -}; -request.post({url:'http://service.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) { - if (err) { - return console.error('upload failed:', err); - } - console.log('Upload successful! Server responded with:', body); -}); -``` - -For advanced cases, you can the form-data object itself via `r.form()`. This can be modified until the request is fired on the next cycle of the event-loop. (Note that this calling `form()` will clear the currently set form data for that request.) - -```javascript -// NOTE: Advanced use-case, for normal use see 'formData' usage above -var r = request.post('http://service.com/upload', function optionalCallback(err, httpResponse, body) { // ... - -var form = r.form(); -form.append('my_field', 'my_value'); -form.append('my_buffer', new Buffer([1, 2, 3])); -form.append('custom_file', fs.createReadStream(__dirname + '/unicycle.jpg'), {filename: 'unicycle.jpg'}); -``` -See the [form-data README](https://github.com/felixge/node-form-data) for more information & examples. - -#### multipart/related - -Some variations in different HTTP implementations require a newline/CRLF before, after, or both before and after the boundary of a `multipart/related` request (using the multipart option). This has been observed in the .NET WebAPI version 4.0. You can turn on a boundary preambleCRLF or postamble by passing them as `true` to your request options. - -```javascript - request({ - method: 'PUT', - preambleCRLF: true, - postambleCRLF: true, - uri: 'http://service.com/upload', - multipart: [ - { - 'content-type': 'application/json' - body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - }, - { body: 'I am an attachment' }, - { body: fs.createReadStream('image.png') } - ], - // alternatively pass an object containing additional options - multipart: { - chunked: false, - data: [ - { - 'content-type': 'application/json', - body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - }, - { body: 'I am an attachment' } - ] - } - }, - function (error, response, body) { - if (error) { - return console.error('upload failed:', error); - } - console.log('Upload successful! Server responded with:', body); - }) -``` - - -## HTTP Authentication - -```javascript -request.get('http://some.server.com/').auth('username', 'password', false); -// or -request.get('http://some.server.com/', { - 'auth': { - 'user': 'username', - 'pass': 'password', - 'sendImmediately': false - } -}); -// or -request.get('http://some.server.com/').auth(null, null, true, 'bearerToken'); -// or -request.get('http://some.server.com/', { - 'auth': { - 'bearer': 'bearerToken' - } -}); -``` - -If passed as an option, `auth` should be a hash containing values `user` || `username`, `pass` || `password`, and `sendImmediately` (optional). The method form takes parameters `auth(username, password, sendImmediately)`. - -`sendImmediately` defaults to `true`, which causes a basic authentication header to be sent. If `sendImmediately` is `false`, then `request` will retry with a proper authentication header after receiving a `401` response from the server (which must contain a `WWW-Authenticate` header indicating the required authentication method). - -Note that you can also use for basic authentication a trick using the URL itself, as specified in [RFC 1738](http://www.ietf.org/rfc/rfc1738.txt). -Simply pass the `user:password` before the host with an `@` sign. - -```javascript -var username = 'username', - password = 'password', - url = 'http://' + username + ':' + password + '@some.server.com'; - -request({url: url}, function (error, response, body) { - // Do more stuff with 'body' here -}); -``` - -Digest authentication is supported, but it only works with `sendImmediately` set to `false`; otherwise `request` will send basic authentication on the initial request, which will probably cause the request to fail. - -Bearer authentication is supported, and is activated when the `bearer` value is available. The value may be either a `String` or a `Function` returning a `String`. Using a function to supply the bearer token is particularly useful if used in conjuction with `defaults` to allow a single function to supply the last known token at the time or sending a request or to compute one on the fly. - -## OAuth Signing - -[OAuth version 1.0](https://tools.ietf.org/html/rfc5849) is supported. The -default signing algorithm is -[HMAC-SHA1](https://tools.ietf.org/html/rfc5849#section-3.4.2): - -```javascript -// Twitter OAuth -var qs = require('querystring') - , oauth = - { callback: 'http://mysite.com/callback/' - , consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - } - , url = 'https://api.twitter.com/oauth/request_token' - ; -request.post({url:url, oauth:oauth}, function (e, r, body) { - // Ideally, you would take the body in the response - // and construct a URL that a user clicks on (like a sign in button). - // The verifier is only available in the response after a user has - // verified with twitter that they are authorizing your app. - var access_token = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: access_token.oauth_token - , verifier: access_token.oauth_verifier - } - , url = 'https://api.twitter.com/oauth/access_token' - ; - request.post({url:url, oauth:oauth}, function (e, r, body) { - var perm_token = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: perm_token.oauth_token - , token_secret: perm_token.oauth_token_secret - } - , url = 'https://api.twitter.com/1.1/users/show.json?' - , params = - { screen_name: perm_token.screen_name - , user_id: perm_token.user_id - } - ; - url += qs.stringify(params) - request.get({url:url, oauth:oauth, json:true}, function (e, r, user) { - console.log(user) - }) - }) -}) -``` - -For [RSA-SHA1 signing](https://tools.ietf.org/html/rfc5849#section-3.4.3), make -the following changes to the OAuth options object: -* Pass `signature_method : 'RSA-SHA1'` -* Instead of `consumer_secret`, specify a `private_key` string in - [PEM format](http://how2ssl.com/articles/working_with_pem_files/) - -## Custom HTTP Headers - -HTTP Headers, such as `User-Agent`, can be set in the `options` object. -In the example below, we call the github API to find out the number -of stars and forks for the request repository. This requires a -custom `User-Agent` header as well as https. - -```javascript -var request = require('request'); - -var options = { - url: 'https://api.github.com/repos/request/request', - headers: { - 'User-Agent': 'request' - } -}; - -function callback(error, response, body) { - if (!error && response.statusCode == 200) { - var info = JSON.parse(body); - console.log(info.stargazers_count + " Stars"); - console.log(info.forks_count + " Forks"); - } -} - -request(options, callback); -``` - -## TLS/SSL Protocol - -TLS/SSL Protocol options, such as `cert`, `key` and `passphrase`, can be -set in the `agentOptions` property of the `options` object. -In the example below, we call an API requires client side SSL certificate -(in PEM format) with passphrase protected private key (in PEM format) and disable the SSLv3 protocol: - -```javascript -var fs = require('fs') - , path = require('path') - , certFile = path.resolve(__dirname, 'ssl/client.crt') - , keyFile = path.resolve(__dirname, 'ssl/client.key') - , request = require('request'); - -var options = { - url: 'https://api.some-server.com/', - agentOptions: { - cert: fs.readFileSync(certFile), - key: fs.readFileSync(keyFile), - // Or use `pfx` property replacing `cert` and `key` when using private key, certificate and CA certs in PFX or PKCS12 format: - // pfx: fs.readFileSync(pfxFilePath), - passphrase: 'password', - securityOptions: 'SSL_OP_NO_SSLv3' - } -}; - -request.get(options); -``` - -It is able to force using SSLv3 only by specifying `secureProtocol`: - -```javascript -request.get({ - url: 'https://api.some-server.com/', - agentOptions: { - secureProtocol: 'SSLv3_method' - } -}); -``` - -It is possible to accept other certificates than those signed by generally allowed Certificate Authorities (CAs). -This can be useful, for example, when using self-signed certificates. -To allow a different certificate, you can specify the signing CA by adding the contents of the CA's certificate file to the `agentOptions`: - -```javascript -request.get({ - url: 'https://api.some-server.com/', - agentOptions: { - ca: fs.readFileSync('ca.cert.pem') - } -}); -``` - -## request(options, callback) - -The first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional. - -* `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()` -* `qs` - object containing querystring values to be appended to the `uri` -* `useQuerystring` - If true, use `querystring` to stringify and parse - querystrings, otherwise use `qs` (default: `false`). Set this option to - `true` if you need arrays to be serialized as `foo=bar&foo=baz` instead of the - default `foo[0]=bar&foo[1]=baz`. -* `method` - http method (default: `"GET"`) -* `headers` - http headers (default: `{}`) -* `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer` or `String`, unless `json` is `true`. If `json` is `true`, then `body` must be a JSON-serializable object. -* `form` - when passed an object or a querystring, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded` header. When passed no options, a `FormData` instance is returned (and is piped to request). See "Forms" section above. -* `formData` - Data to pass for a `multipart/form-data` request. See - [Forms](#forms) section above. -* `multipart` - array of objects which contain their own headers and `body` - attributes. Sends a `multipart/related` request. See [Forms](#forms) section - above. - * Alternatively you can pass in an object `{chunked: false, data: []}` where - `chunked` is used to specify whether the request is sent in - [chunked transfer encoding](https://en.wikipedia.org/wiki/Chunked_transfer_encoding) - (the default is `chunked: true`). In non-chunked requests, data items with - body streams are not allowed. -* `auth` - A hash containing values `user` || `username`, `pass` || `password`, and `sendImmediately` (optional). See documentation above. -* `json` - sets `body` but to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON. -* `preambleCRLF` - append a newline/CRLF before the boundary of your `multipart/form-data` request. -* `postambleCRLF` - append a newline/CRLF at the end of the boundary of your `multipart/form-data` request. -* `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`). This property can also be implemented as function which gets `response` object as a single argument and should return `true` if redirects should continue or `false` otherwise. -* `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`) -* `maxRedirects` - the maximum number of redirects to follow (default: `10`) -* `encoding` - Encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`. Anything else **(including the default value of `undefined`)** will be passed as the [encoding](http://nodejs.org/api/buffer.html#buffer_buffer) parameter to `toString()` (meaning this is effectively `utf8` by default). -* `pool` - An object describing which agents to use for the request. If this option is omitted the request will use the global agent (as long as [your options allow for it](request.js#L747)). Otherwise, request will search the pool for your custom agent. If no custom agent is found, a new agent will be created and added to the pool. - * A `maxSockets` property can also be provided on the `pool` object to set the max number of sockets for all agents created (ex: `pool: {maxSockets: Infinity}`). - * Note that if you are sending multiple requests in a loop and creating - multiple new `pool` objects, `maxSockets` will not work as intended. To - work around this, either use [`request.defaults`](#requestdefaultsoptions) - with your pool options or create the pool object with the `maxSockets` - property outside of the loop. -* `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request -* `proxy` - An HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`) -* `oauth` - Options for OAuth HMAC-SHA1 signing. See documentation above. -* `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example). -* `strictSSL` - If `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option. -* `agentOptions` - Object containing user agent options. See documentation above. **Note:** [see tls API doc for TLS/SSL options](http://nodejs.org/api/tls.html#tls_tls_connect_options_callback). - -* `jar` - If `true` and `tough-cookie` is installed, remember cookies for future use (or define your custom cookie jar; see examples section) -* `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`. Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services) -* `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options. -* `localAddress` - Local interface to bind for network connections. -* `gzip` - If `true`, add an `Accept-Encoding` header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response. **Note:** Automatic decoding of the response content is performed on the body data returned through `request` (both through the `request` stream and passed to the callback function) but is not performed on the `response` stream (available from the `response` event) which is the unmodified `http.IncomingMessage` object which may contain compressed data. See example below. -* `tunnel` - If `true`, then *always* use a tunneling proxy. If - `false` (default), then tunneling will only be used if the - destination is `https`, or if a previous request in the redirect - chain used a tunneling proxy. -* `proxyHeaderWhiteList` - A whitelist of headers to send to a - tunneling proxy. -* `proxyHeaderExclusiveList` - A whitelist of headers to send - exclusively to a tunneling proxy and not to destination. - - -The callback argument gets 3 arguments: - -1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object) -2. An [`http.IncomingMessage`](http://nodejs.org/api/http.html#http_http_incomingmessage) object -3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied) - -## Convenience methods - -There are also shorthand methods for different HTTP METHODs and some other conveniences. - -### request.defaults(options) - -This method **returns a wrapper** around the normal request API that defaults -to whatever options you pass to it. - -**Note:** `request.defaults()` **does not** modify the global request API; -instead, it **returns a wrapper** that has your default settings applied to it. - -**Note:** You can call `.defaults()` on the wrapper that is returned from -`request.defaults` to add/override defaults that were previously defaulted. - -For example: -```javascript -//requests using baseRequest() will set the 'x-token' header -var baseRequest = request.defaults({ - headers: {x-token: 'my-token'} -}) - -//requests using specialRequest() will include the 'x-token' header set in -//baseRequest and will also include the 'special' header -var specialRequest = baseRequest.defaults({ - headers: {special: 'special value'} -}) -``` - -### request.put - -Same as `request()`, but defaults to `method: "PUT"`. - -```javascript -request.put(url) -``` - -### request.patch - -Same as `request()`, but defaults to `method: "PATCH"`. - -```javascript -request.patch(url) -``` - -### request.post - -Same as `request()`, but defaults to `method: "POST"`. - -```javascript -request.post(url) -``` - -### request.head - -Same as request() but defaults to `method: "HEAD"`. - -```javascript -request.head(url) -``` - -### request.del - -Same as `request()`, but defaults to `method: "DELETE"`. - -```javascript -request.del(url) -``` - -### request.get - -Same as `request()` (for uniformity). - -```javascript -request.get(url) -``` -### request.cookie - -Function that creates a new cookie. - -```javascript -request.cookie('key1=value1') -``` -### request.jar() - -Function that creates a new cookie jar. - -```javascript -request.jar() -``` - - -## Examples: - -```javascript - var request = require('request') - , rand = Math.floor(Math.random()*100000000).toString() - ; - request( - { method: 'PUT' - , uri: 'http://mikeal.iriscouch.com/testjs/' + rand - , multipart: - [ { 'content-type': 'application/json' - , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - } - , { body: 'I am an attachment' } - ] - } - , function (error, response, body) { - if(response.statusCode == 201){ - console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand) - } else { - console.log('error: '+ response.statusCode) - console.log(body) - } - } - ) -``` - -For backwards-compatibility, response compression is not supported by default. -To accept gzip-compressed responses, set the `gzip` option to `true`. Note -that the body data passed through `request` is automatically decompressed -while the response object is unmodified and will contain compressed data if -the server sent a compressed response. - -```javascript - var request = require('request') - request( - { method: 'GET' - , uri: 'http://www.google.com' - , gzip: true - } - , function (error, response, body) { - // body is the decompressed response body - console.log('server encoded the data as: ' + (response.headers['content-encoding'] || 'identity')) - console.log('the decoded data is: ' + body) - } - ).on('data', function(data) { - // decompressed data as it is received - console.log('decoded chunk: ' + data) - }) - .on('response', function(response) { - // unmodified http.IncomingMessage object - response.on('data', function(data) { - // compressed data as it is received - console.log('received ' + data.length + ' bytes of compressed data') - }) - }) -``` - -Cookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`) and install `tough-cookie`. - -```javascript -var request = request.defaults({jar: true}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` - -To use a custom cookie jar (instead of `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`) - -```javascript -var j = request.jar() -var request = request.defaults({jar:j}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` - -OR - -```javascript -var j = request.jar(); -var cookie = request.cookie('key1=value1'); -var url = 'http://www.google.com'; -j.setCookie(cookie, url); -request({url: url, jar: j}, function () { - request('http://images.google.com') -}) -``` - -To use a custom cookie store (such as a -[`FileCookieStore`](https://github.com/mitsuru/tough-cookie-filestore) -which supports saving to and restoring from JSON files), pass it as a parameter -to `request.jar()`: - -```javascript -var FileCookieStore = require('tough-cookie-filestore'); -// NOTE - currently the 'cookies.json' file must already exist! -var j = request.jar(new FileCookieStore('cookies.json')); -request = request.defaults({ jar : j }) -request('http://www.google.com', function() { - request('http://images.google.com') -}) -``` - -The cookie store must be a -[`tough-cookie`](https://github.com/goinstant/tough-cookie) -store and it must support synchronous operations; see the -[`CookieStore` API docs](https://github.com/goinstant/tough-cookie/#cookiestore-api) -for details. - -To inspect your cookie jar after a request: - -```javascript -var j = request.jar() -request({url: 'http://www.google.com', jar: j}, function () { - var cookie_string = j.getCookieString(uri); // "key1=value1; key2=value2; ..." - var cookies = j.getCookies(uri); - // [{key: 'key1', value: 'value1', domain: "www.google.com", ...}, ...] -}) -``` - -## Debugging - -There are at least three ways to debug the operation of `request`: - -1. Launch the node process like `NODE_DEBUG=request node script.js` - (`lib,request,otherlib` works too). - -2. Set `require('request').debug = true` at any time (this does the same thing - as #1). - -3. Use the [request-debug module](https://github.com/nylen/request-debug) to - view request and response headers and bodies. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/disabled.appveyor.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/disabled.appveyor.yml deleted file mode 100644 index 238f3d6..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/disabled.appveyor.yml +++ /dev/null @@ -1,36 +0,0 @@ -# http://www.appveyor.com/docs/appveyor-yml - -# Fix line endings in Windows. (runs before repo cloning) -init: - - git config --global core.autocrlf input - -# Test against these versions of Node.js. -environment: - matrix: - - nodejs_version: "0.10" - - nodejs_version: "0.8" - - nodejs_version: "0.11" - -# Allow failing jobs for bleeding-edge Node.js versions. -matrix: - allow_failures: - - nodejs_version: "0.11" - -# Install scripts. (runs after repo cloning) -install: - # Get the latest stable version of Node 0.STABLE.latest - - ps: Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version) - # Typical npm stuff. - - npm install - -# Post-install test scripts. -test_script: - # Output useful info for debugging. - - ps: "npm test # PowerShell" # Pass comment to PS for easier debugging - - cmd: npm test - -# Don't actually build. -build: off - -# Set build version format here instead of in the admin panel. -version: "{build}" diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/index.js deleted file mode 100755 index 99b8386..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/index.js +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2010-2012 Mikeal Rogers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -'use strict' - -var extend = require('util')._extend - , cookies = require('./lib/cookies') - , helpers = require('./lib/helpers') - -var isFunction = helpers.isFunction - , constructObject = helpers.constructObject - , filterForCallback = helpers.filterForCallback - , constructOptionsFrom = helpers.constructOptionsFrom - , paramsHaveRequestBody = helpers.paramsHaveRequestBody - - -// organize params for patch, post, put, head, del -function initParams(uri, options, callback) { - callback = filterForCallback([options, callback]) - options = constructOptionsFrom(uri, options) - - return constructObject() - .extend({callback: callback}) - .extend({options: options}) - .extend({uri: options.uri}) - .done() -} - -function request (uri, options, callback) { - if (typeof uri === 'undefined') { - throw new Error('undefined is not a valid uri or options object.') - } - - var params = initParams(uri, options, callback) - options = params.options - options.callback = params.callback - options.uri = params.uri - - return new request.Request(options) -} - -function requester(params) { - if(typeof params.options._requester === 'function') { - return params.options._requester - } - return request -} - -request.get = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'GET' - return requester(params)(params.uri || null, params.options, params.callback) -} - -request.head = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'HEAD' - - if (paramsHaveRequestBody(params)) { - throw new Error('HTTP HEAD requests MUST NOT include a request body.') - } - - return requester(params)(params.uri || null, params.options, params.callback) -} - -request.post = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'POST' - return requester(params)(params.uri || null, params.options, params.callback) -} - -request.put = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'PUT' - return requester(params)(params.uri || null, params.options, params.callback) -} - -request.patch = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'PATCH' - return requester(params)(params.uri || null, params.options, params.callback) -} - -request.del = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'DELETE' - return requester(params)(params.uri || null, params.options, params.callback) -} - -request.jar = function (store) { - return cookies.jar(store) -} - -request.cookie = function (str) { - return cookies.parse(str) -} - -request.defaults = function (options, requester) { - var self = this - var wrap = function (method) { - var headerlessOptions = function (options) { - options = extend({}, options) - delete options.headers - return options - } - - var getHeaders = function (params, options) { - return constructObject() - .extend(options.headers) - .extend(params.options.headers) - .done() - } - - return function (uri, opts, callback) { - var params = initParams(uri, opts, callback) - params.options = extend(headerlessOptions(options), params.options) - - if (options.headers) { - params.options.headers = getHeaders(params, options) - } - - if (isFunction(requester)) { - if (method === self) { - method = requester - } else { - params.options._requester = requester - } - } - - return method(params.options, params.callback) - } - } - - var defaults = wrap(self) - defaults.get = wrap(self.get) - defaults.patch = wrap(self.patch) - defaults.post = wrap(self.post) - defaults.put = wrap(self.put) - defaults.head = wrap(self.head) - defaults.del = wrap(self.del) - defaults.cookie = wrap(self.cookie) - defaults.jar = self.jar - defaults.defaults = self.defaults - return defaults -} - -request.forever = function (agentOptions, optionsArg) { - var options = constructObject() - if (optionsArg) { - options.extend(optionsArg) - } - if (agentOptions) { - options.agentOptions = agentOptions - } - - options.extend({forever: true}) - return request.defaults(options.done()) -} - -// Exports - -module.exports = request -request.Request = require('./request') -request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG) -request.initParams = initParams diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/cookies.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/cookies.js deleted file mode 100644 index adde7c6..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/cookies.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict' - -var tough = require('tough-cookie') - -var Cookie = tough.Cookie - , CookieJar = tough.CookieJar - - -exports.parse = function(str) { - if (str && str.uri) { - str = str.uri - } - if (typeof str !== 'string') { - throw new Error('The cookie function only accepts STRING as param') - } - return Cookie.parse(str) -} - -// Adapt the sometimes-Async api of tough.CookieJar to our requirements -function RequestJar(store) { - var self = this - self._jar = new CookieJar(store) -} -RequestJar.prototype.setCookie = function(cookieOrStr, uri, options) { - var self = this - return self._jar.setCookieSync(cookieOrStr, uri, options || {}) -} -RequestJar.prototype.getCookieString = function(uri) { - var self = this - return self._jar.getCookieStringSync(uri) -} -RequestJar.prototype.getCookies = function(uri) { - var self = this - return self._jar.getCookiesSync(uri) -} - -exports.jar = function(store) { - return new RequestJar(store) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/copy.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/copy.js deleted file mode 100644 index ad162a5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/copy.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict' - -module.exports = -function copy (obj) { - var o = {} - Object.keys(obj).forEach(function (i) { - o[i] = obj[i] - }) - return o -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/debug.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/debug.js deleted file mode 100644 index 25e3ded..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/debug.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict' - -var util = require('util') - , request = require('../index') - - -module.exports = function debug() { - if (request.debug) { - console.error('REQUEST %s', util.format.apply(util, arguments)) - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/helpers.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/helpers.js deleted file mode 100644 index fa5712f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/lib/helpers.js +++ /dev/null @@ -1,89 +0,0 @@ -'use strict' - -var extend = require('util')._extend - , jsonSafeStringify = require('json-stringify-safe') - , crypto = require('crypto') - -function deferMethod() { - if(typeof setImmediate === 'undefined') { - return process.nextTick - } - - return setImmediate -} - -function constructObject(initialObject) { - initialObject = initialObject || {} - - return { - extend: function (object) { - return constructObject(extend(initialObject, object)) - }, - done: function () { - return initialObject - } - } -} - -function constructOptionsFrom(uri, options) { - var params = constructObject() - if (typeof options === 'object') { - params.extend(options).extend({uri: uri}) - } else if (typeof uri === 'string') { - params.extend({uri: uri}) - } else { - params.extend(uri) - } - return params.done() -} - -function isFunction(value) { - return typeof value === 'function' -} - -function filterForCallback(values) { - var callbacks = values.filter(isFunction) - return callbacks[0] -} - -function paramsHaveRequestBody(params) { - return ( - params.options.body || - params.options.requestBodyStream || - (params.options.json && typeof params.options.json !== 'boolean') || - params.options.multipart - ) -} - -function safeStringify (obj) { - var ret - try { - ret = JSON.stringify(obj) - } catch (e) { - ret = jsonSafeStringify(obj) - } - return ret -} - -function md5 (str) { - return crypto.createHash('md5').update(str).digest('hex') -} - -function isReadStream (rs) { - return rs.readable && rs.path && rs.mode -} - -function toBase64 (str) { - return (new Buffer(str || '', 'ascii')).toString('base64') -} - -exports.isFunction = isFunction -exports.constructObject = constructObject -exports.constructOptionsFrom = constructOptionsFrom -exports.filterForCallback = filterForCallback -exports.paramsHaveRequestBody = paramsHaveRequestBody -exports.safeStringify = safeStringify -exports.md5 = md5 -exports.isReadStream = isReadStream -exports.toBase64 = toBase64 -exports.defer = deferMethod() diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/LICENSE deleted file mode 100644 index a4a9aee..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/README.md deleted file mode 100644 index 763564e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/README.md +++ /dev/null @@ -1,4 +0,0 @@ -aws-sign -======== - -AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/index.js deleted file mode 100644 index 576e49d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/index.js +++ /dev/null @@ -1,202 +0,0 @@ - -/*! - * knox - auth - * Copyright(c) 2010 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var crypto = require('crypto') - , parse = require('url').parse - ; - -/** - * Valid keys. - */ - -var keys = - [ 'acl' - , 'location' - , 'logging' - , 'notification' - , 'partNumber' - , 'policy' - , 'requestPayment' - , 'torrent' - , 'uploadId' - , 'uploads' - , 'versionId' - , 'versioning' - , 'versions' - , 'website' - ] - -/** - * Return an "Authorization" header value with the given `options` - * in the form of "AWS :" - * - * @param {Object} options - * @return {String} - * @api private - */ - -function authorization (options) { - return 'AWS ' + options.key + ':' + sign(options) -} - -module.exports = authorization -module.exports.authorization = authorization - -/** - * Simple HMAC-SHA1 Wrapper - * - * @param {Object} options - * @return {String} - * @api private - */ - -function hmacSha1 (options) { - return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64') -} - -module.exports.hmacSha1 = hmacSha1 - -/** - * Create a base64 sha1 HMAC for `options`. - * - * @param {Object} options - * @return {String} - * @api private - */ - -function sign (options) { - options.message = stringToSign(options) - return hmacSha1(options) -} -module.exports.sign = sign - -/** - * Create a base64 sha1 HMAC for `options`. - * - * Specifically to be used with S3 presigned URLs - * - * @param {Object} options - * @return {String} - * @api private - */ - -function signQuery (options) { - options.message = queryStringToSign(options) - return hmacSha1(options) -} -module.exports.signQuery= signQuery - -/** - * Return a string for sign() with the given `options`. - * - * Spec: - * - * \n - * \n - * \n - * \n - * [headers\n] - * - * - * @param {Object} options - * @return {String} - * @api private - */ - -function stringToSign (options) { - var headers = options.amazonHeaders || '' - if (headers) headers += '\n' - var r = - [ options.verb - , options.md5 - , options.contentType - , options.date ? options.date.toUTCString() : '' - , headers + options.resource - ] - return r.join('\n') -} -module.exports.queryStringToSign = stringToSign - -/** - * Return a string for sign() with the given `options`, but is meant exclusively - * for S3 presigned URLs - * - * Spec: - * - * \n - * - * - * @param {Object} options - * @return {String} - * @api private - */ - -function queryStringToSign (options){ - return 'GET\n\n\n' + options.date + '\n' + options.resource -} -module.exports.queryStringToSign = queryStringToSign - -/** - * Perform the following: - * - * - ignore non-amazon headers - * - lowercase fields - * - sort lexicographically - * - trim whitespace between ":" - * - join with newline - * - * @param {Object} headers - * @return {String} - * @api private - */ - -function canonicalizeHeaders (headers) { - var buf = [] - , fields = Object.keys(headers) - ; - for (var i = 0, len = fields.length; i < len; ++i) { - var field = fields[i] - , val = headers[field] - , field = field.toLowerCase() - ; - if (0 !== field.indexOf('x-amz')) continue - buf.push(field + ':' + val) - } - return buf.sort().join('\n') -} -module.exports.canonicalizeHeaders = canonicalizeHeaders - -/** - * Perform the following: - * - * - ignore non sub-resources - * - sort lexicographically - * - * @param {String} resource - * @return {String} - * @api private - */ - -function canonicalizeResource (resource) { - var url = parse(resource, true) - , path = url.pathname - , buf = [] - ; - - Object.keys(url.query).forEach(function(key){ - if (!~keys.indexOf(key)) return - var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key]) - buf.push(key + val) - }) - - return path + (buf.length ? '?' + buf.sort().join('&') : '') -} -module.exports.canonicalizeResource = canonicalizeResource diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/package.json deleted file mode 100644 index 719d488..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "aws-sign2", - "description": "AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.", - "version": "0.5.0", - "repository": { - "url": "https://github.com/mikeal/aws-sign" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "aws-sign\n========\n\nAWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/aws-sign/issues" - }, - "_id": "aws-sign2@0.5.0", - "dist": { - "shasum": "c57103f7a17fc037f02d7c2e64b602ea223f7d63", - "tarball": "http://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" - }, - "_from": "aws-sign2@~0.5.0", - "_npmVersion": "1.3.2", - "_npmUser": { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - "maintainers": [ - { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - } - ], - "directories": {}, - "_shasum": "c57103f7a17fc037f02d7c2e64b602ea223f7d63", - "_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", - "homepage": "https://github.com/mikeal/aws-sign" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.jshintrc b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.jshintrc deleted file mode 100644 index c8ef3ca..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.jshintrc +++ /dev/null @@ -1,59 +0,0 @@ -{ - "predef": [ ] - , "bitwise": false - , "camelcase": false - , "curly": false - , "eqeqeq": false - , "forin": false - , "immed": false - , "latedef": false - , "noarg": true - , "noempty": true - , "nonew": true - , "plusplus": false - , "quotmark": true - , "regexp": false - , "undef": true - , "unused": true - , "strict": false - , "trailing": true - , "maxlen": 120 - , "asi": true - , "boss": true - , "debug": true - , "eqnull": true - , "esnext": true - , "evil": true - , "expr": true - , "funcscope": false - , "globalstrict": false - , "iterator": false - , "lastsemic": true - , "laxbreak": true - , "laxcomma": true - , "loopfunc": true - , "multistr": false - , "onecase": false - , "proto": false - , "regexdash": false - , "scripturl": true - , "smarttabs": false - , "shadow": false - , "sub": true - , "supernew": false - , "validthis": true - , "browser": true - , "couch": false - , "devel": false - , "dojo": false - , "mootools": false - , "node": true - , "nonstandard": true - , "prototypejs": false - , "rhino": false - , "worker": true - , "wsh": false - , "nomen": false - , "onevar": false - , "passfail": false -} \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.npmignore deleted file mode 100644 index 40b878d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.travis.yml deleted file mode 100644 index 7ddb9c9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: node_js -node_js: - - 0.8 - - "0.10" -branches: - only: - - master -notifications: - email: - - rod@vagg.org -script: npm test \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/LICENSE.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/LICENSE.md deleted file mode 100644 index ccb2479..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/LICENSE.md +++ /dev/null @@ -1,13 +0,0 @@ -The MIT License (MIT) -===================== - -Copyright (c) 2014 bl contributors ----------------------------------- - -*bl contributors listed at * - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/README.md deleted file mode 100644 index 1753cc4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/README.md +++ /dev/null @@ -1,195 +0,0 @@ -# bl *(BufferList)* - -**A Node.js Buffer list collector, reader and streamer thingy.** - -[![NPM](https://nodei.co/npm/bl.png?downloads=true&downloadRank=true)](https://nodei.co/npm/bl/) -[![NPM](https://nodei.co/npm-dl/bl.png?months=6&height=3)](https://nodei.co/npm/bl/) - -**bl** is a storage object for collections of Node Buffers, exposing them with the main Buffer readable API. Also works as a duplex stream so you can collect buffers from a stream that emits them and emit buffers to a stream that consumes them! - -The original buffers are kept intact and copies are only done as necessary. Any reads that require the use of a single original buffer will return a slice of that buffer only (which references the same memory as the original buffer). Reads that span buffers perform concatenation as required and return the results transparently. - -```js -const BufferList = require('bl') - -var bl = new BufferList() -bl.append(new Buffer('abcd')) -bl.append(new Buffer('efg')) -bl.append('hi') // bl will also accept & convert Strings -bl.append(new Buffer('j')) -bl.append(new Buffer([ 0x3, 0x4 ])) - -console.log(bl.length) // 12 - -console.log(bl.slice(0, 10).toString('ascii')) // 'abcdefghij' -console.log(bl.slice(3, 10).toString('ascii')) // 'defghij' -console.log(bl.slice(3, 6).toString('ascii')) // 'def' -console.log(bl.slice(3, 8).toString('ascii')) // 'defgh' -console.log(bl.slice(5, 10).toString('ascii')) // 'fghij' - -// or just use toString! -console.log(bl.toString()) // 'abcdefghij\u0003\u0004' -console.log(bl.toString('ascii', 3, 8)) // 'defgh' -console.log(bl.toString('ascii', 5, 10)) // 'fghij' - -// other standard Buffer readables -console.log(bl.readUInt16BE(10)) // 0x0304 -console.log(bl.readUInt16LE(10)) // 0x0403 -``` - -Give it a callback in the constructor and use it just like **[concat-stream](https://github.com/maxogden/node-concat-stream)**: - -```js -const bl = require('bl') - , fs = require('fs') - -fs.createReadStream('README.md') - .pipe(bl(function (err, data) { // note 'new' isn't strictly required - // `data` is a complete Buffer object containing the full data - console.log(data.toString()) - })) -``` - -Note that when you use the *callback* method like this, the resulting `data` parameter is a concatenation of all `Buffer` objects in the list. If you want to avoid the overhead of this concatenation (in cases of extreme performance consciousness), then avoid the *callback* method and just listen to `'end'` instead, like a standard Stream. - -Or to fetch a URL using [hyperquest](https://github.com/substack/hyperquest) (should work with [request](http://github.com/mikeal/request) and even plain Node http too!): -```js -const hyperquest = require('hyperquest') - , bl = require('bl') - , url = 'https://raw.github.com/rvagg/bl/master/README.md' - -hyperquest(url).pipe(bl(function (err, data) { - console.log(data.toString()) -})) -``` - -Or, use it as a readable stream to recompose a list of Buffers to an output source: - -```js -const BufferList = require('bl') - , fs = require('fs') - -var bl = new BufferList() -bl.append(new Buffer('abcd')) -bl.append(new Buffer('efg')) -bl.append(new Buffer('hi')) -bl.append(new Buffer('j')) - -bl.pipe(fs.createWriteStream('gibberish.txt')) -``` - -## API - - * new BufferList([ callback ]) - * bl.length - * bl.append(buffer) - * bl.get(index) - * bl.slice([ start[, end ] ]) - * bl.copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ]) - * bl.duplicate() - * bl.consume(bytes) - * bl.toString([encoding, [ start, [ end ]]]) - * bl.readDoubleBE(), bl.readDoubleLE(), bl.readFloatBE(), bl.readFloatLE(), bl.readInt32BE(), bl.readInt32LE(), bl.readUInt32BE(), bl.readUInt32LE(), bl.readInt16BE(), bl.readInt16LE(), bl.readUInt16BE(), bl.readUInt16LE(), bl.readInt8(), bl.readUInt8() - * Streams - --------------------------------------------------------- - -### new BufferList([ callback | buffer | buffer array ]) -The constructor takes an optional callback, if supplied, the callback will be called with an error argument followed by a reference to the **bl** instance, when `bl.end()` is called (i.e. from a piped stream). This is a convenient method of collecting the entire contents of a stream, particularly when the stream is *chunky*, such as a network stream. - -Normally, no arguments are required for the constructor, but you can initialise the list by passing in a single `Buffer` object or an array of `Buffer` object. - -`new` is not strictly required, if you don't instantiate a new object, it will be done automatically for you so you can create a new instance simply with: - -```js -var bl = require('bl') -var myinstance = bl() - -// equivilant to: - -var BufferList = require('bl') -var myinstance = new BufferList() -``` - --------------------------------------------------------- - -### bl.length -Get the length of the list in bytes. This is the sum of the lengths of all of the buffers contained in the list, minus any initial offset for a semi-consumed buffer at the beginning. Should accurately represent the total number of bytes that can be read from the list. - --------------------------------------------------------- - -### bl.append(buffer) -`append(buffer)` adds an additional buffer or BufferList to the internal list. - --------------------------------------------------------- - -### bl.get(index) -`get()` will return the byte at the specified index. - --------------------------------------------------------- - -### bl.slice([ start, [ end ] ]) -`slice()` returns a new `Buffer` object containing the bytes within the range specified. Both `start` and `end` are optional and will default to the beginning and end of the list respectively. - -If the requested range spans a single internal buffer then a slice of that buffer will be returned which shares the original memory range of that Buffer. If the range spans multiple buffers then copy operations will likely occur to give you a uniform Buffer. - --------------------------------------------------------- - -### bl.copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ]) -`copy()` copies the content of the list in the `dest` buffer, starting from `destStart` and containing the bytes within the range specified with `srcStart` to `srcEnd`. `destStart`, `start` and `end` are optional and will default to the beginning of the `dest` buffer, and the beginning and end of the list respectively. - --------------------------------------------------------- - -### bl.duplicate() -`duplicate()` performs a **shallow-copy** of the list. The internal Buffers remains the same, so if you change the underlying Buffers, the change will be reflected in both the original and the duplicate. This method is needed if you want to call `consume()` or `pipe()` and still keep the original list.Example: - -```js -var bl = new BufferList() - -bl.append('hello') -bl.append(' world') -bl.append('\n') - -bl.duplicate().pipe(process.stdout, { end: false }) - -console.log(bl.toString()) -``` - --------------------------------------------------------- - -### bl.consume(bytes) -`consume()` will shift bytes *off the start of the list*. The number of bytes consumed don't need to line up with the sizes of the internal Buffers—initial offsets will be calculated accordingly in order to give you a consistent view of the data. - --------------------------------------------------------- - -### bl.toString([encoding, [ start, [ end ]]]) -`toString()` will return a string representation of the buffer. The optional `start` and `end` arguments are passed on to `slice()`, while the `encoding` is passed on to `toString()` of the resulting Buffer. See the [Buffer#toString()](http://nodejs.org/docs/latest/api/buffer.html#buffer_buf_tostring_encoding_start_end) documentation for more information. - --------------------------------------------------------- - -### bl.readDoubleBE(), bl.readDoubleLE(), bl.readFloatBE(), bl.readFloatLE(), bl.readInt32BE(), bl.readInt32LE(), bl.readUInt32BE(), bl.readUInt32LE(), bl.readInt16BE(), bl.readInt16LE(), bl.readUInt16BE(), bl.readUInt16LE(), bl.readInt8(), bl.readUInt8() - -All of the standard byte-reading methods of the `Buffer` interface are implemented and will operate across internal Buffer boundaries transparently. - -See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - --------------------------------------------------------- - -### Streams -**bl** is a Node **[Duplex Stream](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_duplex)**, so it can be read from and written to like a standard Node stream. You can also `pipe()` to and from a **bl** instance. - --------------------------------------------------------- - -## Contributors - -**bl** is brought to you by the following hackers: - - * [Rod Vagg](https://github.com/rvagg) - * [Matteo Collina](https://github.com/mcollina) - * [Jarett Cruger](https://github.com/jcrugzz) - -======= - -## License - -**bl** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/bl.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/bl.js deleted file mode 100644 index d1ea3b5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/bl.js +++ /dev/null @@ -1,216 +0,0 @@ -var DuplexStream = require('readable-stream').Duplex - , util = require('util') - -function BufferList (callback) { - if (!(this instanceof BufferList)) - return new BufferList(callback) - - this._bufs = [] - this.length = 0 - - if (typeof callback == 'function') { - this._callback = callback - - var piper = function (err) { - if (this._callback) { - this._callback(err) - this._callback = null - } - }.bind(this) - - this.on('pipe', function (src) { - src.on('error', piper) - }) - this.on('unpipe', function (src) { - src.removeListener('error', piper) - }) - } - else if (Buffer.isBuffer(callback)) - this.append(callback) - else if (Array.isArray(callback)) { - callback.forEach(function (b) { - Buffer.isBuffer(b) && this.append(b) - }.bind(this)) - } - - DuplexStream.call(this) -} - -util.inherits(BufferList, DuplexStream) - -BufferList.prototype._offset = function (offset) { - var tot = 0, i = 0, _t - for (; i < this._bufs.length; i++) { - _t = tot + this._bufs[i].length - if (offset < _t) - return [ i, offset - tot ] - tot = _t - } -} - -BufferList.prototype.append = function (buf) { - var isBuffer = Buffer.isBuffer(buf) || - buf instanceof BufferList - - this._bufs.push(isBuffer ? buf : new Buffer(buf)) - this.length += buf.length - return this -} - -BufferList.prototype._write = function (buf, encoding, callback) { - this.append(buf) - if (callback) - callback() -} - -BufferList.prototype._read = function (size) { - if (!this.length) - return this.push(null) - size = Math.min(size, this.length) - this.push(this.slice(0, size)) - this.consume(size) -} - -BufferList.prototype.end = function (chunk) { - DuplexStream.prototype.end.call(this, chunk) - - if (this._callback) { - this._callback(null, this.slice()) - this._callback = null - } -} - -BufferList.prototype.get = function (index) { - return this.slice(index, index + 1)[0] -} - -BufferList.prototype.slice = function (start, end) { - return this.copy(null, 0, start, end) -} - -BufferList.prototype.copy = function (dst, dstStart, srcStart, srcEnd) { - if (typeof srcStart != 'number' || srcStart < 0) - srcStart = 0 - if (typeof srcEnd != 'number' || srcEnd > this.length) - srcEnd = this.length - if (srcStart >= this.length) - return dst || new Buffer(0) - if (srcEnd <= 0) - return dst || new Buffer(0) - - var copy = !!dst - , off = this._offset(srcStart) - , len = srcEnd - srcStart - , bytes = len - , bufoff = (copy && dstStart) || 0 - , start = off[1] - , l - , i - - // copy/slice everything - if (srcStart === 0 && srcEnd == this.length) { - if (!copy) // slice, just return a full concat - return Buffer.concat(this._bufs) - - // copy, need to copy individual buffers - for (i = 0; i < this._bufs.length; i++) { - this._bufs[i].copy(dst, bufoff) - bufoff += this._bufs[i].length - } - - return dst - } - - // easy, cheap case where it's a subset of one of the buffers - if (bytes <= this._bufs[off[0]].length - start) { - return copy - ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes) - : this._bufs[off[0]].slice(start, start + bytes) - } - - if (!copy) // a slice, we need something to copy in to - dst = new Buffer(len) - - for (i = off[0]; i < this._bufs.length; i++) { - l = this._bufs[i].length - start - - if (bytes > l) { - this._bufs[i].copy(dst, bufoff, start) - } else { - this._bufs[i].copy(dst, bufoff, start, start + bytes) - break - } - - bufoff += l - bytes -= l - - if (start) - start = 0 - } - - return dst -} - -BufferList.prototype.toString = function (encoding, start, end) { - return this.slice(start, end).toString(encoding) -} - -BufferList.prototype.consume = function (bytes) { - while (this._bufs.length) { - if (bytes > this._bufs[0].length) { - bytes -= this._bufs[0].length - this.length -= this._bufs[0].length - this._bufs.shift() - } else { - this._bufs[0] = this._bufs[0].slice(bytes) - this.length -= bytes - break - } - } - return this -} - -BufferList.prototype.duplicate = function () { - var i = 0 - , copy = new BufferList() - - for (; i < this._bufs.length; i++) - copy.append(this._bufs[i]) - - return copy -} - -BufferList.prototype.destroy = function () { - this._bufs.length = 0; - this.length = 0; - this.push(null); -} - -;(function () { - var methods = { - 'readDoubleBE' : 8 - , 'readDoubleLE' : 8 - , 'readFloatBE' : 4 - , 'readFloatLE' : 4 - , 'readInt32BE' : 4 - , 'readInt32LE' : 4 - , 'readUInt32BE' : 4 - , 'readUInt32LE' : 4 - , 'readInt16BE' : 2 - , 'readInt16LE' : 2 - , 'readUInt16BE' : 2 - , 'readUInt16LE' : 2 - , 'readInt8' : 1 - , 'readUInt8' : 1 - } - - for (var m in methods) { - (function (m) { - BufferList.prototype[m] = function (offset) { - return this.slice(offset, offset + methods[m])[m](0) - } - }(m)) - } -}()) - -module.exports = BufferList diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e69..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md deleted file mode 100644 index 3fb3e80..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index b513d61..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 895ca50..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 6307220..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,982 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (typeof chunk === 'string' && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - state.buffer.push(chunk); - } - - if (state.needReadable) - emitReadable(stream); - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - var ret; - - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - ret = null; - - // In cases where the decoder did not receive enough data - // to produce a full chunk, then immediately received an - // EOF, state.buffer will contain [, ]. - // howMuchToRead will see this and coerce the amount to - // read to zero (because it's looking at the length of the - // first in state.buffer), and we'll end up here. - // - // This can only happen via state.decoder -- no other venue - // exists for pushing a zero-length chunk into state.buffer - // and triggering this behavior. In this case, we return our - // remaining data and end the stream, if appropriate. - if (state.length > 0 && state.decoder) { - ret = fromList(n, state); - state.length -= ret.length; - } - - if (state.length === 0) - endReadable(this); - - return ret; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) - doRead = false; - - if (doRead) { - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read called its callback synchronously, then `reading` - // will be false, and we need to re-evaluate how much data we - // can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (state.emittedReadable) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function onend() { - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - forEach(state.pipes, write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - if (state.decoder) - chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - //if (state.objectMode && util.isNullOrUndefined(chunk)) - if (state.objectMode && (chunk === null || chunk === undefined)) - return; - else if (!state.objectMode && (!chunk || !chunk.length)) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted && state.calledRead) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf (xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index eb188df..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - var ts = this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('finish', function() { - if ('function' === typeof this._flush) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var rs = stream._readableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 4bdaa4f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (typeof cb !== 'function') - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - cb(er); - }); - else - cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md deleted file mode 100644 index 5a76b41..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# core-util-is - -The `util.is*` functions introduced in Node v0.12. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch deleted file mode 100644 index a06d5c0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch +++ /dev/null @@ -1,604 +0,0 @@ -diff --git a/lib/util.js b/lib/util.js -index a03e874..9074e8e 100644 ---- a/lib/util.js -+++ b/lib/util.js -@@ -19,430 +19,6 @@ - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - --var formatRegExp = /%[sdj%]/g; --exports.format = function(f) { -- if (!isString(f)) { -- var objects = []; -- for (var i = 0; i < arguments.length; i++) { -- objects.push(inspect(arguments[i])); -- } -- return objects.join(' '); -- } -- -- var i = 1; -- var args = arguments; -- var len = args.length; -- var str = String(f).replace(formatRegExp, function(x) { -- if (x === '%%') return '%'; -- if (i >= len) return x; -- switch (x) { -- case '%s': return String(args[i++]); -- case '%d': return Number(args[i++]); -- case '%j': -- try { -- return JSON.stringify(args[i++]); -- } catch (_) { -- return '[Circular]'; -- } -- default: -- return x; -- } -- }); -- for (var x = args[i]; i < len; x = args[++i]) { -- if (isNull(x) || !isObject(x)) { -- str += ' ' + x; -- } else { -- str += ' ' + inspect(x); -- } -- } -- return str; --}; -- -- --// Mark that a method should not be used. --// Returns a modified function which warns once by default. --// If --no-deprecation is set, then it is a no-op. --exports.deprecate = function(fn, msg) { -- // Allow for deprecating things in the process of starting up. -- if (isUndefined(global.process)) { -- return function() { -- return exports.deprecate(fn, msg).apply(this, arguments); -- }; -- } -- -- if (process.noDeprecation === true) { -- return fn; -- } -- -- var warned = false; -- function deprecated() { -- if (!warned) { -- if (process.throwDeprecation) { -- throw new Error(msg); -- } else if (process.traceDeprecation) { -- console.trace(msg); -- } else { -- console.error(msg); -- } -- warned = true; -- } -- return fn.apply(this, arguments); -- } -- -- return deprecated; --}; -- -- --var debugs = {}; --var debugEnviron; --exports.debuglog = function(set) { -- if (isUndefined(debugEnviron)) -- debugEnviron = process.env.NODE_DEBUG || ''; -- set = set.toUpperCase(); -- if (!debugs[set]) { -- if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { -- var pid = process.pid; -- debugs[set] = function() { -- var msg = exports.format.apply(exports, arguments); -- console.error('%s %d: %s', set, pid, msg); -- }; -- } else { -- debugs[set] = function() {}; -- } -- } -- return debugs[set]; --}; -- -- --/** -- * Echos the value of a value. Trys to print the value out -- * in the best way possible given the different types. -- * -- * @param {Object} obj The object to print out. -- * @param {Object} opts Optional options object that alters the output. -- */ --/* legacy: obj, showHidden, depth, colors*/ --function inspect(obj, opts) { -- // default options -- var ctx = { -- seen: [], -- stylize: stylizeNoColor -- }; -- // legacy... -- if (arguments.length >= 3) ctx.depth = arguments[2]; -- if (arguments.length >= 4) ctx.colors = arguments[3]; -- if (isBoolean(opts)) { -- // legacy... -- ctx.showHidden = opts; -- } else if (opts) { -- // got an "options" object -- exports._extend(ctx, opts); -- } -- // set default options -- if (isUndefined(ctx.showHidden)) ctx.showHidden = false; -- if (isUndefined(ctx.depth)) ctx.depth = 2; -- if (isUndefined(ctx.colors)) ctx.colors = false; -- if (isUndefined(ctx.customInspect)) ctx.customInspect = true; -- if (ctx.colors) ctx.stylize = stylizeWithColor; -- return formatValue(ctx, obj, ctx.depth); --} --exports.inspect = inspect; -- -- --// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics --inspect.colors = { -- 'bold' : [1, 22], -- 'italic' : [3, 23], -- 'underline' : [4, 24], -- 'inverse' : [7, 27], -- 'white' : [37, 39], -- 'grey' : [90, 39], -- 'black' : [30, 39], -- 'blue' : [34, 39], -- 'cyan' : [36, 39], -- 'green' : [32, 39], -- 'magenta' : [35, 39], -- 'red' : [31, 39], -- 'yellow' : [33, 39] --}; -- --// Don't use 'blue' not visible on cmd.exe --inspect.styles = { -- 'special': 'cyan', -- 'number': 'yellow', -- 'boolean': 'yellow', -- 'undefined': 'grey', -- 'null': 'bold', -- 'string': 'green', -- 'date': 'magenta', -- // "name": intentionally not styling -- 'regexp': 'red' --}; -- -- --function stylizeWithColor(str, styleType) { -- var style = inspect.styles[styleType]; -- -- if (style) { -- return '\u001b[' + inspect.colors[style][0] + 'm' + str + -- '\u001b[' + inspect.colors[style][1] + 'm'; -- } else { -- return str; -- } --} -- -- --function stylizeNoColor(str, styleType) { -- return str; --} -- -- --function arrayToHash(array) { -- var hash = {}; -- -- array.forEach(function(val, idx) { -- hash[val] = true; -- }); -- -- return hash; --} -- -- --function formatValue(ctx, value, recurseTimes) { -- // Provide a hook for user-specified inspect functions. -- // Check that value is an object with an inspect function on it -- if (ctx.customInspect && -- value && -- isFunction(value.inspect) && -- // Filter out the util module, it's inspect function is special -- value.inspect !== exports.inspect && -- // Also filter out any prototype objects using the circular check. -- !(value.constructor && value.constructor.prototype === value)) { -- var ret = value.inspect(recurseTimes, ctx); -- if (!isString(ret)) { -- ret = formatValue(ctx, ret, recurseTimes); -- } -- return ret; -- } -- -- // Primitive types cannot have properties -- var primitive = formatPrimitive(ctx, value); -- if (primitive) { -- return primitive; -- } -- -- // Look up the keys of the object. -- var keys = Object.keys(value); -- var visibleKeys = arrayToHash(keys); -- -- if (ctx.showHidden) { -- keys = Object.getOwnPropertyNames(value); -- } -- -- // Some type of object without properties can be shortcutted. -- if (keys.length === 0) { -- if (isFunction(value)) { -- var name = value.name ? ': ' + value.name : ''; -- return ctx.stylize('[Function' + name + ']', 'special'); -- } -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } -- if (isDate(value)) { -- return ctx.stylize(Date.prototype.toString.call(value), 'date'); -- } -- if (isError(value)) { -- return formatError(value); -- } -- } -- -- var base = '', array = false, braces = ['{', '}']; -- -- // Make Array say that they are Array -- if (isArray(value)) { -- array = true; -- braces = ['[', ']']; -- } -- -- // Make functions say that they are functions -- if (isFunction(value)) { -- var n = value.name ? ': ' + value.name : ''; -- base = ' [Function' + n + ']'; -- } -- -- // Make RegExps say that they are RegExps -- if (isRegExp(value)) { -- base = ' ' + RegExp.prototype.toString.call(value); -- } -- -- // Make dates with properties first say the date -- if (isDate(value)) { -- base = ' ' + Date.prototype.toUTCString.call(value); -- } -- -- // Make error with message first say the error -- if (isError(value)) { -- base = ' ' + formatError(value); -- } -- -- if (keys.length === 0 && (!array || value.length == 0)) { -- return braces[0] + base + braces[1]; -- } -- -- if (recurseTimes < 0) { -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } else { -- return ctx.stylize('[Object]', 'special'); -- } -- } -- -- ctx.seen.push(value); -- -- var output; -- if (array) { -- output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); -- } else { -- output = keys.map(function(key) { -- return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); -- }); -- } -- -- ctx.seen.pop(); -- -- return reduceToSingleString(output, base, braces); --} -- -- --function formatPrimitive(ctx, value) { -- if (isUndefined(value)) -- return ctx.stylize('undefined', 'undefined'); -- if (isString(value)) { -- var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') -- .replace(/'/g, "\\'") -- .replace(/\\"/g, '"') + '\''; -- return ctx.stylize(simple, 'string'); -- } -- if (isNumber(value)) { -- // Format -0 as '-0'. Strict equality won't distinguish 0 from -0, -- // so instead we use the fact that 1 / -0 < 0 whereas 1 / 0 > 0 . -- if (value === 0 && 1 / value < 0) -- return ctx.stylize('-0', 'number'); -- return ctx.stylize('' + value, 'number'); -- } -- if (isBoolean(value)) -- return ctx.stylize('' + value, 'boolean'); -- // For some reason typeof null is "object", so special case here. -- if (isNull(value)) -- return ctx.stylize('null', 'null'); --} -- -- --function formatError(value) { -- return '[' + Error.prototype.toString.call(value) + ']'; --} -- -- --function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { -- var output = []; -- for (var i = 0, l = value.length; i < l; ++i) { -- if (hasOwnProperty(value, String(i))) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- String(i), true)); -- } else { -- output.push(''); -- } -- } -- keys.forEach(function(key) { -- if (!key.match(/^\d+$/)) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- key, true)); -- } -- }); -- return output; --} -- -- --function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { -- var name, str, desc; -- desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; -- if (desc.get) { -- if (desc.set) { -- str = ctx.stylize('[Getter/Setter]', 'special'); -- } else { -- str = ctx.stylize('[Getter]', 'special'); -- } -- } else { -- if (desc.set) { -- str = ctx.stylize('[Setter]', 'special'); -- } -- } -- if (!hasOwnProperty(visibleKeys, key)) { -- name = '[' + key + ']'; -- } -- if (!str) { -- if (ctx.seen.indexOf(desc.value) < 0) { -- if (isNull(recurseTimes)) { -- str = formatValue(ctx, desc.value, null); -- } else { -- str = formatValue(ctx, desc.value, recurseTimes - 1); -- } -- if (str.indexOf('\n') > -1) { -- if (array) { -- str = str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n').substr(2); -- } else { -- str = '\n' + str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n'); -- } -- } -- } else { -- str = ctx.stylize('[Circular]', 'special'); -- } -- } -- if (isUndefined(name)) { -- if (array && key.match(/^\d+$/)) { -- return str; -- } -- name = JSON.stringify('' + key); -- if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { -- name = name.substr(1, name.length - 2); -- name = ctx.stylize(name, 'name'); -- } else { -- name = name.replace(/'/g, "\\'") -- .replace(/\\"/g, '"') -- .replace(/(^"|"$)/g, "'"); -- name = ctx.stylize(name, 'string'); -- } -- } -- -- return name + ': ' + str; --} -- -- --function reduceToSingleString(output, base, braces) { -- var numLinesEst = 0; -- var length = output.reduce(function(prev, cur) { -- numLinesEst++; -- if (cur.indexOf('\n') >= 0) numLinesEst++; -- return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; -- }, 0); -- -- if (length > 60) { -- return braces[0] + -- (base === '' ? '' : base + '\n ') + -- ' ' + -- output.join(',\n ') + -- ' ' + -- braces[1]; -- } -- -- return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; --} -- -- - // NOTE: These type checking functions intentionally don't use `instanceof` - // because it is fragile and can be easily faked with `Object.create()`. - function isArray(ar) { -@@ -522,166 +98,10 @@ function isPrimitive(arg) { - exports.isPrimitive = isPrimitive; - - function isBuffer(arg) { -- return arg instanceof Buffer; -+ return Buffer.isBuffer(arg); - } - exports.isBuffer = isBuffer; - - function objectToString(o) { - return Object.prototype.toString.call(o); --} -- -- --function pad(n) { -- return n < 10 ? '0' + n.toString(10) : n.toString(10); --} -- -- --var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', -- 'Oct', 'Nov', 'Dec']; -- --// 26 Feb 16:19:34 --function timestamp() { -- var d = new Date(); -- var time = [pad(d.getHours()), -- pad(d.getMinutes()), -- pad(d.getSeconds())].join(':'); -- return [d.getDate(), months[d.getMonth()], time].join(' '); --} -- -- --// log is just a thin wrapper to console.log that prepends a timestamp --exports.log = function() { -- console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); --}; -- -- --/** -- * Inherit the prototype methods from one constructor into another. -- * -- * The Function.prototype.inherits from lang.js rewritten as a standalone -- * function (not on Function.prototype). NOTE: If this file is to be loaded -- * during bootstrapping this function needs to be rewritten using some native -- * functions as prototype setup using normal JavaScript does not work as -- * expected during bootstrapping (see mirror.js in r114903). -- * -- * @param {function} ctor Constructor function which needs to inherit the -- * prototype. -- * @param {function} superCtor Constructor function to inherit prototype from. -- */ --exports.inherits = function(ctor, superCtor) { -- ctor.super_ = superCtor; -- ctor.prototype = Object.create(superCtor.prototype, { -- constructor: { -- value: ctor, -- enumerable: false, -- writable: true, -- configurable: true -- } -- }); --}; -- --exports._extend = function(origin, add) { -- // Don't do anything if add isn't an object -- if (!add || !isObject(add)) return origin; -- -- var keys = Object.keys(add); -- var i = keys.length; -- while (i--) { -- origin[keys[i]] = add[keys[i]]; -- } -- return origin; --}; -- --function hasOwnProperty(obj, prop) { -- return Object.prototype.hasOwnProperty.call(obj, prop); --} -- -- --// Deprecated old stuff. -- --exports.p = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- console.error(exports.inspect(arguments[i])); -- } --}, 'util.p: Use console.error() instead'); -- -- --exports.exec = exports.deprecate(function() { -- return require('child_process').exec.apply(this, arguments); --}, 'util.exec is now called `child_process.exec`.'); -- -- --exports.print = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(String(arguments[i])); -- } --}, 'util.print: Use console.log instead'); -- -- --exports.puts = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(arguments[i] + '\n'); -- } --}, 'util.puts: Use console.log instead'); -- -- --exports.debug = exports.deprecate(function(x) { -- process.stderr.write('DEBUG: ' + x + '\n'); --}, 'util.debug: Use console.error instead'); -- -- --exports.error = exports.deprecate(function(x) { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stderr.write(arguments[i] + '\n'); -- } --}, 'util.error: Use console.error instead'); -- -- --exports.pump = exports.deprecate(function(readStream, writeStream, callback) { -- var callbackCalled = false; -- -- function call(a, b, c) { -- if (callback && !callbackCalled) { -- callback(a, b, c); -- callbackCalled = true; -- } -- } -- -- readStream.addListener('data', function(chunk) { -- if (writeStream.write(chunk) === false) readStream.pause(); -- }); -- -- writeStream.addListener('drain', function() { -- readStream.resume(); -- }); -- -- readStream.addListener('end', function() { -- writeStream.end(); -- }); -- -- readStream.addListener('close', function() { -- call(); -- }); -- -- readStream.addListener('error', function(err) { -- writeStream.end(); -- call(err); -- }); -- -- writeStream.addListener('error', function(err) { -- readStream.destroy(); -- call(err); -- }); --}, 'util.pump(): Use readableStream.pipe() instead'); -- -- --var uv; --exports._errnoException = function(err, syscall) { -- if (isUndefined(uv)) uv = process.binding('uv'); -- var errname = uv.errname(err); -- var e = new Error(syscall + ' ' + errname); -- e.code = errname; -- e.errno = errname; -- e.syscall = syscall; -- return e; --}; -+} \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js deleted file mode 100644 index 9074e8e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -function isBuffer(arg) { - return Buffer.isBuffer(arg); -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json deleted file mode 100644 index 2b7593c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "core-util-is", - "version": "1.0.1", - "description": "The `util.is*` functions introduced in Node v0.12.", - "main": "lib/util.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/core-util-is" - }, - "keywords": [ - "util", - "isBuffer", - "isArray", - "isNumber", - "isString", - "isRegExp", - "isThis", - "isThat", - "polyfill" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/isaacs/core-util-is/issues" - }, - "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/isaacs/core-util-is", - "_id": "core-util-is@1.0.1", - "dist": { - "shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538", - "tarball": "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "_from": "core-util-is@~1.0.0", - "_npmVersion": "1.3.23", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538", - "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", - "scripts": {} -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/util.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/util.js deleted file mode 100644 index 007fa10..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/util.js +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && objectToString(e) === '[object Error]'; -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -function isBuffer(arg) { - return arg instanceof Buffer; -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md deleted file mode 100644 index b1c5665..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json deleted file mode 100644 index 3d69f4f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "_id": "inherits@2.0.1", - "dist": { - "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "_from": "inherits@~2.0.1", - "_npmVersion": "1.3.8", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "homepage": "https://github.com/isaacs/inherits" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js deleted file mode 100644 index fc53012..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md deleted file mode 100644 index 052a62b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md +++ /dev/null @@ -1,54 +0,0 @@ - -# isarray - -`Array#isArray` for older browsers. - -## Usage - -```js -var isArray = require('isarray'); - -console.log(isArray([])); // => true -console.log(isArray({})); // => false -``` - -## Installation - -With [npm](http://npmjs.org) do - -```bash -$ npm install isarray -``` - -Then bundle for the browser with -[browserify](https://github.com/substack/browserify). - -With [component](http://component.io) do - -```bash -$ component install juliangruber/isarray -``` - -## License - -(MIT) - -Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json deleted file mode 100644 index 9e31b68..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name" : "isarray", - "description" : "Array#isArray for older browsers", - "version" : "0.0.1", - "repository" : "juliangruber/isarray", - "homepage": "https://github.com/juliangruber/isarray", - "main" : "index.js", - "scripts" : [ - "index.js" - ], - "dependencies" : {}, - "keywords": ["browser","isarray","array"], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js deleted file mode 100644 index 5f5ad45..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json deleted file mode 100644 index fc7904b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "isarray", - "description": "Array#isArray for older browsers", - "version": "0.0.1", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/isarray.git" - }, - "homepage": "https://github.com/juliangruber/isarray", - "main": "index.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "*" - }, - "keywords": [ - "browser", - "isarray", - "array" - ], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT", - "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "readmeFilename": "README.md", - "_id": "isarray@0.0.1", - "dist": { - "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "_from": "isarray@0.0.1", - "_npmVersion": "1.2.18", - "_npmUser": { - "name": "juliangruber", - "email": "julian@juliangruber.com" - }, - "maintainers": [ - { - "name": "juliangruber", - "email": "julian@juliangruber.com" - } - ], - "directories": {}, - "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "bugs": { - "url": "https://github.com/juliangruber/isarray/issues" - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa00..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md +++ /dev/null @@ -1,7 +0,0 @@ -**string_decoder.js** (`require('string_decoder')`) from Node.js core - -Copyright Joyent, Inc. and other Node contributors. See LICENCE file for details. - -Version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.** - -The *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version. \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index b00e54f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -var Buffer = require('buffer').Buffer; - -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } - - -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. CESU-8 is handled as part of the UTF-8 encoding. -// -// @TODO Handling all encodings inside a single object makes it very difficult -// to reason about this code, so it should be split up in the future. -// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code -// points as used by CESU-8. -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - // Enough space to store all bytes of a single character. UTF-8 needs 4 - // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). - this.charBuffer = new Buffer(6); - // Number of bytes received for the current incomplete multi-byte character. - this.charReceived = 0; - // Number of bytes expected for the current incomplete multi-byte character. - this.charLength = 0; -}; - - -// write decodes the given buffer and returns it as JS string that is -// guaranteed to not contain any partial multi-byte characters. Any partial -// character found at the end of the buffer is buffered up, and will be -// returned when calling write again with the remaining bytes. -// -// Note: Converting a Buffer containing an orphan surrogate to a String -// currently works, but converting a String to a Buffer (via `new Buffer`, or -// Buffer#write) will replace incomplete surrogates with the unicode -// replacement character. See https://codereview.chromium.org/121173009/ . -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var available = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, 0, available); - this.charReceived += available; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // remove bytes belonging to the current character from the buffer - buffer = buffer.slice(available, buffer.length); - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (buffer.length === 0) { - return charStr; - } - break; - } - - // determine and set charLength / charReceived - this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); - end -= this.charReceived; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - buffer.copy(this.charBuffer, 0, 0, size); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; -}; - -// detectIncompleteChar determines if there is an incomplete UTF-8 character at -// the end of the given buffer. If so, it sets this.charLength to the byte -// length that character, and sets this.charReceived to the number of bytes -// that are available for this character. -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - this.charReceived = i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 2; - this.charLength = this.charReceived ? 2 : 0; -} - -function base64DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 3; - this.charLength = this.charReceived ? 3 : 0; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index a8c586b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "string_decoder", - "version": "0.10.31", - "description": "The string_decoder module from Node core", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "tap": "~0.4.8" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/rvagg/string_decoder.git" - }, - "homepage": "https://github.com/rvagg/string_decoder", - "keywords": [ - "string", - "decoder", - "browser", - "browserify" - ], - "license": "MIT", - "gitHead": "d46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0", - "bugs": { - "url": "https://github.com/rvagg/string_decoder/issues" - }, - "_id": "string_decoder@0.10.31", - "_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", - "_from": "string_decoder@~0.10.x", - "_npmVersion": "1.4.23", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - }, - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", - "tarball": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json deleted file mode 100644 index d9251ca..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "readable-stream", - "version": "1.0.33", - "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x", - "main": "readable.js", - "dependencies": { - "core-util-is": "~1.0.0", - "isarray": "0.0.1", - "string_decoder": "~0.10.x", - "inherits": "~2.0.1" - }, - "devDependencies": { - "tap": "~0.2.6" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "browser": { - "util": false - }, - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "gitHead": "0bf97a117c5646556548966409ebc57a6dda2638", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "homepage": "https://github.com/isaacs/readable-stream", - "_id": "readable-stream@1.0.33", - "_shasum": "3a360dd66c1b1d7fd4705389860eda1d0f61126c", - "_from": "readable-stream@~1.0.26", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - }, - { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - }, - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "3a360dd66c1b1d7fd4705389860eda1d0f61126c", - "tarball": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js deleted file mode 100644 index 8b5337b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,8 +0,0 @@ -var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efd..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/package.json deleted file mode 100644 index cb6c272..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "bl", - "version": "0.9.3", - "description": "Buffer List: collect buffers and access with a standard readable Buffer interface, streamable too!", - "main": "bl.js", - "scripts": { - "test": "node test/test.js | faucet", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/rvagg/bl.git" - }, - "homepage": "https://github.com/rvagg/bl", - "authors": [ - "Rod Vagg (https://github.com/rvagg)", - "Matteo Collina (https://github.com/mcollina)", - "Jarett Cruger (https://github.com/jcrugzz)" - ], - "keywords": [ - "buffer", - "buffers", - "stream", - "awesomesauce" - ], - "license": "MIT", - "dependencies": { - "readable-stream": "~1.0.26" - }, - "devDependencies": { - "tape": "~2.12.3", - "hash_file": "~0.1.1", - "faucet": "~0.0.1", - "brtapsauce": "~0.3.0" - }, - "gitHead": "4987a76bf6bafd7616e62c7023c955e62f3a9461", - "bugs": { - "url": "https://github.com/rvagg/bl/issues" - }, - "_id": "bl@0.9.3", - "_shasum": "c41eff3e7cb31bde107c8f10076d274eff7f7d44", - "_from": "bl@~0.9.0", - "_npmVersion": "1.4.27", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "c41eff3e7cb31bde107c8f10076d274eff7f7d44", - "tarball": "http://registry.npmjs.org/bl/-/bl-0.9.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/bl/-/bl-0.9.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/basic-test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/basic-test.js deleted file mode 100644 index 75116a3..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/basic-test.js +++ /dev/null @@ -1,541 +0,0 @@ -var tape = require('tape') - , crypto = require('crypto') - , fs = require('fs') - , hash = require('hash_file') - , BufferList = require('../') - - , encodings = - ('hex utf8 utf-8 ascii binary base64' - + (process.browser ? '' : ' ucs2 ucs-2 utf16le utf-16le')).split(' ') - -tape('single bytes from single buffer', function (t) { - var bl = new BufferList() - bl.append(new Buffer('abcd')) - - t.equal(bl.length, 4) - - t.equal(bl.get(0), 97) - t.equal(bl.get(1), 98) - t.equal(bl.get(2), 99) - t.equal(bl.get(3), 100) - - t.end() -}) - -tape('single bytes from multiple buffers', function (t) { - var bl = new BufferList() - bl.append(new Buffer('abcd')) - bl.append(new Buffer('efg')) - bl.append(new Buffer('hi')) - bl.append(new Buffer('j')) - - t.equal(bl.length, 10) - - t.equal(bl.get(0), 97) - t.equal(bl.get(1), 98) - t.equal(bl.get(2), 99) - t.equal(bl.get(3), 100) - t.equal(bl.get(4), 101) - t.equal(bl.get(5), 102) - t.equal(bl.get(6), 103) - t.equal(bl.get(7), 104) - t.equal(bl.get(8), 105) - t.equal(bl.get(9), 106) - t.end() -}) - -tape('multi bytes from single buffer', function (t) { - var bl = new BufferList() - bl.append(new Buffer('abcd')) - - t.equal(bl.length, 4) - - t.equal(bl.slice(0, 4).toString('ascii'), 'abcd') - t.equal(bl.slice(0, 3).toString('ascii'), 'abc') - t.equal(bl.slice(1, 4).toString('ascii'), 'bcd') - - t.end() -}) - -tape('multiple bytes from multiple buffers', function (t) { - var bl = new BufferList() - - bl.append(new Buffer('abcd')) - bl.append(new Buffer('efg')) - bl.append(new Buffer('hi')) - bl.append(new Buffer('j')) - - t.equal(bl.length, 10) - - t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij') - t.equal(bl.slice(3, 10).toString('ascii'), 'defghij') - t.equal(bl.slice(3, 6).toString('ascii'), 'def') - t.equal(bl.slice(3, 8).toString('ascii'), 'defgh') - t.equal(bl.slice(5, 10).toString('ascii'), 'fghij') - - t.end() -}) - -tape('multiple bytes from multiple buffer lists', function (t) { - var bl = new BufferList() - - bl.append(new BufferList([new Buffer('abcd'), new Buffer('efg')])) - bl.append(new BufferList([new Buffer('hi'), new Buffer('j')])) - - t.equal(bl.length, 10) - - t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij') - t.equal(bl.slice(3, 10).toString('ascii'), 'defghij') - t.equal(bl.slice(3, 6).toString('ascii'), 'def') - t.equal(bl.slice(3, 8).toString('ascii'), 'defgh') - t.equal(bl.slice(5, 10).toString('ascii'), 'fghij') - - t.end() -}) - -tape('consuming from multiple buffers', function (t) { - var bl = new BufferList() - - bl.append(new Buffer('abcd')) - bl.append(new Buffer('efg')) - bl.append(new Buffer('hi')) - bl.append(new Buffer('j')) - - t.equal(bl.length, 10) - - t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij') - - bl.consume(3) - t.equal(bl.length, 7) - t.equal(bl.slice(0, 7).toString('ascii'), 'defghij') - - bl.consume(2) - t.equal(bl.length, 5) - t.equal(bl.slice(0, 5).toString('ascii'), 'fghij') - - bl.consume(1) - t.equal(bl.length, 4) - t.equal(bl.slice(0, 4).toString('ascii'), 'ghij') - - bl.consume(1) - t.equal(bl.length, 3) - t.equal(bl.slice(0, 3).toString('ascii'), 'hij') - - bl.consume(2) - t.equal(bl.length, 1) - t.equal(bl.slice(0, 1).toString('ascii'), 'j') - - t.end() -}) - -tape('test readUInt8 / readInt8', function (t) { - var buf1 = new Buffer(1) - , buf2 = new Buffer(3) - , buf3 = new Buffer(3) - , bl = new BufferList() - - buf2[1] = 0x3 - buf2[2] = 0x4 - buf3[0] = 0x23 - buf3[1] = 0x42 - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readUInt8(2), 0x3) - t.equal(bl.readInt8(2), 0x3) - t.equal(bl.readUInt8(3), 0x4) - t.equal(bl.readInt8(3), 0x4) - t.equal(bl.readUInt8(4), 0x23) - t.equal(bl.readInt8(4), 0x23) - t.equal(bl.readUInt8(5), 0x42) - t.equal(bl.readInt8(5), 0x42) - t.end() -}) - -tape('test readUInt16LE / readUInt16BE / readInt16LE / readInt16BE', function (t) { - var buf1 = new Buffer(1) - , buf2 = new Buffer(3) - , buf3 = new Buffer(3) - , bl = new BufferList() - - buf2[1] = 0x3 - buf2[2] = 0x4 - buf3[0] = 0x23 - buf3[1] = 0x42 - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readUInt16BE(2), 0x0304) - t.equal(bl.readUInt16LE(2), 0x0403) - t.equal(bl.readInt16BE(2), 0x0304) - t.equal(bl.readInt16LE(2), 0x0403) - t.equal(bl.readUInt16BE(3), 0x0423) - t.equal(bl.readUInt16LE(3), 0x2304) - t.equal(bl.readInt16BE(3), 0x0423) - t.equal(bl.readInt16LE(3), 0x2304) - t.equal(bl.readUInt16BE(4), 0x2342) - t.equal(bl.readUInt16LE(4), 0x4223) - t.equal(bl.readInt16BE(4), 0x2342) - t.equal(bl.readInt16LE(4), 0x4223) - t.end() -}) - -tape('test readUInt32LE / readUInt32BE / readInt32LE / readInt32BE', function (t) { - var buf1 = new Buffer(1) - , buf2 = new Buffer(3) - , buf3 = new Buffer(3) - , bl = new BufferList() - - buf2[1] = 0x3 - buf2[2] = 0x4 - buf3[0] = 0x23 - buf3[1] = 0x42 - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readUInt32BE(2), 0x03042342) - t.equal(bl.readUInt32LE(2), 0x42230403) - t.equal(bl.readInt32BE(2), 0x03042342) - t.equal(bl.readInt32LE(2), 0x42230403) - t.end() -}) - -tape('test readFloatLE / readFloatBE', function (t) { - var buf1 = new Buffer(1) - , buf2 = new Buffer(3) - , buf3 = new Buffer(3) - , bl = new BufferList() - - buf2[1] = 0x00 - buf2[2] = 0x00 - buf3[0] = 0x80 - buf3[1] = 0x3f - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readFloatLE(2), 0x01) - t.end() -}) - -tape('test readDoubleLE / readDoubleBE', function (t) { - var buf1 = new Buffer(1) - , buf2 = new Buffer(3) - , buf3 = new Buffer(10) - , bl = new BufferList() - - buf2[1] = 0x55 - buf2[2] = 0x55 - buf3[0] = 0x55 - buf3[1] = 0x55 - buf3[2] = 0x55 - buf3[3] = 0x55 - buf3[4] = 0xd5 - buf3[5] = 0x3f - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readDoubleLE(2), 0.3333333333333333) - t.end() -}) - -tape('test toString', function (t) { - var bl = new BufferList() - - bl.append(new Buffer('abcd')) - bl.append(new Buffer('efg')) - bl.append(new Buffer('hi')) - bl.append(new Buffer('j')) - - t.equal(bl.toString('ascii', 0, 10), 'abcdefghij') - t.equal(bl.toString('ascii', 3, 10), 'defghij') - t.equal(bl.toString('ascii', 3, 6), 'def') - t.equal(bl.toString('ascii', 3, 8), 'defgh') - t.equal(bl.toString('ascii', 5, 10), 'fghij') - - t.end() -}) - -tape('test toString encoding', function (t) { - var bl = new BufferList() - , b = new Buffer('abcdefghij\xff\x00') - - bl.append(new Buffer('abcd')) - bl.append(new Buffer('efg')) - bl.append(new Buffer('hi')) - bl.append(new Buffer('j')) - bl.append(new Buffer('\xff\x00')) - - encodings.forEach(function (enc) { - t.equal(bl.toString(enc), b.toString(enc), enc) - }) - - t.end() -}) - -!process.browser && tape('test stream', function (t) { - var random = crypto.randomBytes(65534) - , rndhash = hash(random, 'md5') - , md5sum = crypto.createHash('md5') - , bl = new BufferList(function (err, buf) { - t.ok(Buffer.isBuffer(buf)) - t.ok(err === null) - t.equal(rndhash, hash(bl.slice(), 'md5')) - t.equal(rndhash, hash(buf, 'md5')) - - bl.pipe(fs.createWriteStream('/tmp/bl_test_rnd_out.dat')) - .on('close', function () { - var s = fs.createReadStream('/tmp/bl_test_rnd_out.dat') - s.on('data', md5sum.update.bind(md5sum)) - s.on('end', function() { - t.equal(rndhash, md5sum.digest('hex'), 'woohoo! correct hash!') - t.end() - }) - }) - - }) - - fs.writeFileSync('/tmp/bl_test_rnd.dat', random) - fs.createReadStream('/tmp/bl_test_rnd.dat').pipe(bl) -}) - -tape('instantiation with Buffer', function (t) { - var buf = crypto.randomBytes(1024) - , buf2 = crypto.randomBytes(1024) - , b = BufferList(buf) - - t.equal(buf.toString('hex'), b.slice().toString('hex'), 'same buffer') - b = BufferList([ buf, buf2 ]) - t.equal(b.slice().toString('hex'), Buffer.concat([ buf, buf2 ]).toString('hex'), 'same buffer') - t.end() -}) - -tape('test String appendage', function (t) { - var bl = new BufferList() - , b = new Buffer('abcdefghij\xff\x00') - - bl.append('abcd') - bl.append('efg') - bl.append('hi') - bl.append('j') - bl.append('\xff\x00') - - encodings.forEach(function (enc) { - t.equal(bl.toString(enc), b.toString(enc)) - }) - - t.end() -}) - -tape('write nothing, should get empty buffer', function (t) { - t.plan(3) - BufferList(function (err, data) { - t.notOk(err, 'no error') - t.ok(Buffer.isBuffer(data), 'got a buffer') - t.equal(0, data.length, 'got a zero-length buffer') - t.end() - }).end() -}) - -tape('unicode string', function (t) { - t.plan(2) - var inp1 = '\u2600' - , inp2 = '\u2603' - , exp = inp1 + ' and ' + inp2 - , bl = BufferList() - bl.write(inp1) - bl.write(' and ') - bl.write(inp2) - t.equal(exp, bl.toString()) - t.equal(new Buffer(exp).toString('hex'), bl.toString('hex')) -}) - -tape('should emit finish', function (t) { - var source = BufferList() - , dest = BufferList() - - source.write('hello') - source.pipe(dest) - - dest.on('finish', function () { - t.equal(dest.toString('utf8'), 'hello') - t.end() - }) -}) - -tape('basic copy', function (t) { - var buf = crypto.randomBytes(1024) - , buf2 = new Buffer(1024) - , b = BufferList(buf) - - b.copy(buf2) - t.equal(b.slice().toString('hex'), buf2.toString('hex'), 'same buffer') - t.end() -}) - -tape('copy after many appends', function (t) { - var buf = crypto.randomBytes(512) - , buf2 = new Buffer(1024) - , b = BufferList(buf) - - b.append(buf) - b.copy(buf2) - t.equal(b.slice().toString('hex'), buf2.toString('hex'), 'same buffer') - t.end() -}) - -tape('copy at a precise position', function (t) { - var buf = crypto.randomBytes(1004) - , buf2 = new Buffer(1024) - , b = BufferList(buf) - - b.copy(buf2, 20) - t.equal(b.slice().toString('hex'), buf2.slice(20).toString('hex'), 'same buffer') - t.end() -}) - -tape('copy starting from a precise location', function (t) { - var buf = crypto.randomBytes(10) - , buf2 = new Buffer(5) - , b = BufferList(buf) - - b.copy(buf2, 0, 5) - t.equal(b.slice(5).toString('hex'), buf2.toString('hex'), 'same buffer') - t.end() -}) - -tape('copy in an interval', function (t) { - var rnd = crypto.randomBytes(10) - , b = BufferList(rnd) // put the random bytes there - , actual = new Buffer(3) - , expected = new Buffer(3) - - rnd.copy(expected, 0, 5, 8) - b.copy(actual, 0, 5, 8) - - t.equal(actual.toString('hex'), expected.toString('hex'), 'same buffer') - t.end() -}) - -tape('copy an interval between two buffers', function (t) { - var buf = crypto.randomBytes(10) - , buf2 = new Buffer(10) - , b = BufferList(buf) - - b.append(buf) - b.copy(buf2, 0, 5, 15) - - t.equal(b.slice(5, 15).toString('hex'), buf2.toString('hex'), 'same buffer') - t.end() -}) - -tape('duplicate', function (t) { - t.plan(2) - - var bl = new BufferList('abcdefghij\xff\x00') - , dup = bl.duplicate() - - t.equal(bl.prototype, dup.prototype) - t.equal(bl.toString('hex'), dup.toString('hex')) -}) - -tape('destroy no pipe', function (t) { - t.plan(2) - - var bl = new BufferList('alsdkfja;lsdkfja;lsdk') - bl.destroy() - - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) -}) - -!process.browser && tape('destroy with pipe before read end', function (t) { - t.plan(2) - - var bl = new BufferList() - fs.createReadStream(__dirname + '/sauce.js') - .pipe(bl) - - bl.destroy() - - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) - -}) - -!process.browser && tape('destroy with pipe before read end with race', function (t) { - t.plan(2) - - var bl = new BufferList() - fs.createReadStream(__dirname + '/sauce.js') - .pipe(bl) - - setTimeout(function () { - bl.destroy() - setTimeout(function () { - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) - }, 500) - }, 500) -}) - -!process.browser && tape('destroy with pipe after read end', function (t) { - t.plan(2) - - var bl = new BufferList() - fs.createReadStream(__dirname + '/sauce.js') - .on('end', onEnd) - .pipe(bl) - - function onEnd () { - bl.destroy() - - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) - } -}) - -!process.browser && tape('destroy with pipe while writing to a destination', function (t) { - t.plan(4) - - var bl = new BufferList() - , ds = new BufferList() - - fs.createReadStream(__dirname + '/sauce.js') - .on('end', onEnd) - .pipe(bl) - - function onEnd () { - bl.pipe(ds) - - setTimeout(function () { - bl.destroy() - - t.equals(bl._bufs.length, 0) - t.equals(bl.length, 0) - - ds.destroy() - - t.equals(bl._bufs.length, 0) - t.equals(bl.length, 0) - - }, 100) - } -}) - -!process.browser && tape('handle error', function (t) { - t.plan(2) - fs.createReadStream('/does/not/exist').pipe(BufferList(function (err, data) { - t.ok(err instanceof Error, 'has error') - t.notOk(data, 'no data') - })) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/sauce.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/sauce.js deleted file mode 100644 index a6d2862..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/sauce.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node - -const user = process.env.SAUCE_USER - , key = process.env.SAUCE_KEY - , path = require('path') - , brtapsauce = require('brtapsauce') - , testFile = path.join(__dirname, 'basic-test.js') - - , capabilities = [ - { browserName: 'chrome' , platform: 'Windows XP', version: '' } - , { browserName: 'firefox' , platform: 'Windows 8' , version: '' } - , { browserName: 'firefox' , platform: 'Windows XP', version: '4' } - , { browserName: 'internet explorer' , platform: 'Windows 8' , version: '10' } - , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '9' } - , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '8' } - , { browserName: 'internet explorer' , platform: 'Windows XP', version: '7' } - , { browserName: 'internet explorer' , platform: 'Windows XP', version: '6' } - , { browserName: 'safari' , platform: 'Windows 7' , version: '5' } - , { browserName: 'safari' , platform: 'OS X 10.8' , version: '6' } - , { browserName: 'opera' , platform: 'Windows 7' , version: '' } - , { browserName: 'opera' , platform: 'Windows 7' , version: '11' } - , { browserName: 'ipad' , platform: 'OS X 10.8' , version: '6' } - , { browserName: 'android' , platform: 'Linux' , version: '4.0', 'device-type': 'tablet' } - ] - -if (!user) - throw new Error('Must set a SAUCE_USER env var') -if (!key) - throw new Error('Must set a SAUCE_KEY env var') - -brtapsauce({ - name : 'Traversty' - , user : user - , key : key - , brsrc : testFile - , capabilities : capabilities - , options : { timeout: 60 * 6 } -}) \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/test.js deleted file mode 100644 index aa9b487..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/bl/test/test.js +++ /dev/null @@ -1,9 +0,0 @@ -require('./basic-test') - -if (!process.env.SAUCE_KEY || !process.env.SAUCE_USER) - return console.log('SAUCE_KEY and/or SAUCE_USER not set, not running sauce tests') - -if (!/v0\.10/.test(process.version)) - return console.log('Not Node v0.10.x, not running sauce tests') - -require('./sauce.js') \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/README.md deleted file mode 100644 index e5077a2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/README.md +++ /dev/null @@ -1,45 +0,0 @@ -## Caseless -- wrap an object to set and get property with caseless semantics but also preserve caseing. - -This library is incredibly useful when working with HTTP headers. It allows you to get/set/check for headers in a caseless manner while also preserving the caseing of headers the first time they are set. - -## Usage - -```javascript -var headers = {} - , c = caseless(headers) - ; -c.set('a-Header', 'asdf') -c.get('a-header') === 'asdf' -``` - -## has(key) - -Has takes a name and if it finds a matching header will return that header name with the preserved caseing it was set with. - -```javascript -c.has('a-header') === 'a-Header' -``` - -## set(key, value[, clobber=true]) - -Set is fairly straight forward except that if the header exists and clobber is disabled it will add `','+value` to the existing header. - -```javascript -c.set('a-Header', 'fdas') -c.set('a-HEADER', 'more', false) -c.get('a-header') === 'fdsa,more' -``` - -## swap(key) - -Swaps the casing of a header with the new one that is passed in. - -```javascript -var headers = {} - , c = caseless(headers) - ; -c.set('a-Header', 'fdas') -c.swap('a-HEADER') -c.has('a-header') === 'a-HEADER' -headers === {'a-HEADER': 'fdas'} -``` diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/index.js deleted file mode 100644 index 2f5e1c4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/index.js +++ /dev/null @@ -1,65 +0,0 @@ -function Caseless (dict) { - this.dict = dict -} -Caseless.prototype.set = function (name, value, clobber) { - if (typeof name === 'object') { - for (var i in name) { - this.set(i, name[i], value) - } - } else { - if (typeof clobber === 'undefined') clobber = true - var has = this.has(name) - - if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value - else this.dict[has || name] = value - return has - } -} -Caseless.prototype.has = function (name) { - var keys = Object.keys(this.dict) - , name = name.toLowerCase() - ; - for (var i=0;i - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/Readme.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/Readme.md deleted file mode 100644 index 8043cb4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/Readme.md +++ /dev/null @@ -1,132 +0,0 @@ -# combined-stream [![Build Status](https://travis-ci.org/felixge/node-combined-stream.svg?branch=master)](https://travis-ci.org/felixge/node-combined-stream) - -A stream that emits multiple other streams one after another. - -## Installation - -``` bash -npm install combined-stream -``` - -## Usage - -Here is a simple example that shows how you can use combined-stream to combine -two files into one: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -While the example above works great, it will pause all source streams until -they are needed. If you don't want that to happen, you can set `pauseStreams` -to `false`: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create({pauseStreams: false}); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -However, what if you don't have all the source streams yet, or you don't want -to allocate the resources (file descriptors, memory, etc.) for them right away? -Well, in that case you can simply provide a callback that supplies the stream -by calling a `next()` function: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(function(next) { - next(fs.createReadStream('file1.txt')); -}); -combinedStream.append(function(next) { - next(fs.createReadStream('file2.txt')); -}); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -## API - -### CombinedStream.create([options]) - -Returns a new combined stream object. Available options are: - -* `maxDataSize` -* `pauseStreams` - -The effect of those options is described below. - -### combinedStream.pauseStreams = `true` - -Whether to apply back pressure to the underlaying streams. If set to `false`, -the underlaying streams will never be paused. If set to `true`, the -underlaying streams will be paused right after being appended, as well as when -`delayedStream.pipe()` wants to throttle. - -### combinedStream.maxDataSize = `2 * 1024 * 1024` - -The maximum amount of bytes (or characters) to buffer for all source streams. -If this value is exceeded, `combinedStream` emits an `'error'` event. - -### combinedStream.dataSize = `0` - -The amount of bytes (or characters) currently buffered by `combinedStream`. - -### combinedStream.append(stream) - -Appends the given `stream` to the combinedStream object. If `pauseStreams` is -set to `true, this stream will also be paused right away. - -`streams` can also be a function that takes one parameter called `next`. `next` -is a function that must be invoked in order to provide the `next` stream, see -example above. - -Regardless of how the `stream` is appended, combined-stream always attaches an -`'error'` listener to it, so you don't have to do that manually. - -Special case: `stream` can also be a String or Buffer. - -### combinedStream.write(data) - -You should not call this, `combinedStream` takes care of piping the appended -streams into itself for you. - -### combinedStream.resume() - -Causes `combinedStream` to start drain the streams it manages. The function is -idempotent, and also emits a `'resume'` event each time which usually goes to -the stream that is currently being drained. - -### combinedStream.pause(); - -If `combinedStream.pauseStreams` is set to `false`, this does nothing. -Otherwise a `'pause'` event is emitted, this goes to the stream that is -currently being drained, so you can use it to apply back pressure. - -### combinedStream.end(); - -Sets `combinedStream.writable` to false, emits an `'end'` event, and removes -all streams from the queue. - -### combinedStream.destroy(); - -Same as `combinedStream.end()`, except it emits a `'close'` event instead of -`'end'`. - -## License - -combined-stream is licensed under the MIT license. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/lib/combined_stream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/lib/combined_stream.js deleted file mode 100644 index 6b5c21b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/lib/combined_stream.js +++ /dev/null @@ -1,188 +0,0 @@ -var util = require('util'); -var Stream = require('stream').Stream; -var DelayedStream = require('delayed-stream'); - -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; - - this._released = false; - this._streams = []; - this._currentStream = null; -} -util.inherits(CombinedStream, Stream); - -CombinedStream.create = function(options) { - var combinedStream = new this(); - - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - - return combinedStream; -}; - -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - var newStream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - stream.on('data', this._checkDataSize.bind(this)); - stream = newStream; - } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); - } - } - - this._streams.push(stream); - return this; -}; - -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); - return dest; -}; - -CombinedStream.prototype._getNext = function() { - this._currentStream = null; - var stream = this._streams.shift(); - - - if (typeof stream == 'undefined') { - this.end(); - return; - } - - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } - - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); - } - - this._pipeNext(stream); - }.bind(this)); -}; - -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; - - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)); - stream.pipe(this, {end: false}); - return; - } - - var value = stream; - this.write(value); - this._getNext(); -}; - -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; - -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; - -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); - this.emit('pause'); -}; - -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); - this.emit('resume'); -}; - -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; - -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; - -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; - -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } - - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; - this._emitError(new Error(message)); -}; - -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; - - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } - - self.dataSize += stream.dataSize; - }); - - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; - -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore deleted file mode 100644 index 2fedb26..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -*.un~ -/node_modules/* diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License deleted file mode 100644 index 4804b7a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile deleted file mode 100644 index b4ff85a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md deleted file mode 100644 index 5cb5b35..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md +++ /dev/null @@ -1,154 +0,0 @@ -# delayed-stream - -Buffers events from a stream until you are ready to handle them. - -## Installation - -``` bash -npm install delayed-stream -``` - -## Usage - -The following example shows how to write a http echo server that delays its -response by 1000 ms. - -``` javascript -var DelayedStream = require('delayed-stream'); -var http = require('http'); - -http.createServer(function(req, res) { - var delayed = DelayedStream.create(req); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 1000); -}); -``` - -If you are not using `Stream#pipe`, you can also manually release the buffered -events by calling `delayedStream.resume()`: - -``` javascript -var delayed = DelayedStream.create(req); - -setTimeout(function() { - // Emit all buffered events and resume underlaying source - delayed.resume(); -}, 1000); -``` - -## Implementation - -In order to use this meta stream properly, here are a few things you should -know about the implementation. - -### Event Buffering / Proxying - -All events of the `source` stream are hijacked by overwriting the `source.emit` -method. Until node implements a catch-all event listener, this is the only way. - -However, delayed-stream still continues to emit all events it captures on the -`source`, regardless of whether you have released the delayed stream yet or -not. - -Upon creation, delayed-stream captures all `source` events and stores them in -an internal event buffer. Once `delayedStream.release()` is called, all -buffered events are emitted on the `delayedStream`, and the event buffer is -cleared. After that, delayed-stream merely acts as a proxy for the underlaying -source. - -### Error handling - -Error events on `source` are buffered / proxied just like any other events. -However, `delayedStream.create` attaches a no-op `'error'` listener to the -`source`. This way you only have to handle errors on the `delayedStream` -object, rather than in two places. - -### Buffer limits - -delayed-stream provides a `maxDataSize` property that can be used to limit -the amount of data being buffered. In order to protect you from bad `source` -streams that don't react to `source.pause()`, this feature is enabled by -default. - -## API - -### DelayedStream.create(source, [options]) - -Returns a new `delayedStream`. Available options are: - -* `pauseStream` -* `maxDataSize` - -The description for those properties can be found below. - -### delayedStream.source - -The `source` stream managed by this object. This is useful if you are -passing your `delayedStream` around, and you still want to access properties -on the `source` object. - -### delayedStream.pauseStream = true - -Whether to pause the underlaying `source` when calling -`DelayedStream.create()`. Modifying this property afterwards has no effect. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. You can also modify this property during runtime. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. - -### delayedStream.dataSize = 0 - -The amount of data buffered so far. - -### delayedStream.readable - -An ECMA5 getter that returns the value of `source.readable`. - -### delayedStream.resume() - -If the `delayedStream` has not been released so far, `delayedStream.release()` -is called. - -In either case, `source.resume()` is called. - -### delayedStream.pause() - -Calls `source.pause()`. - -### delayedStream.pipe(dest) - -Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. - -### delayedStream.release() - -Emits and clears all events that have been buffered up so far. This does not -resume the underlaying source, use `delayedStream.resume()` instead. - -## License - -delayed-stream is licensed under the MIT license. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js deleted file mode 100644 index 7c10d48..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js +++ /dev/null @@ -1,99 +0,0 @@ -var Stream = require('stream').Stream; -var util = require('util'); - -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -DelayedStream.prototype.__defineGetter__('readable', function() { - return this.source.readable; -}); - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json deleted file mode 100644 index cbafd00..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "delayed-stream", - "description": "Buffers events from a stream until you are ready to handle them.", - "version": "0.0.5", - "homepage": "https://github.com/felixge/node-delayed-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-delayed-stream.git" - }, - "main": "./lib/delayed_stream", - "engines": { - "node": ">=0.4.0" - }, - "dependencies": {}, - "devDependencies": { - "fake": "0.2.0", - "far": "0.0.1" - }, - "_id": "delayed-stream@0.0.5", - "_engineSupported": true, - "_npmVersion": "1.0.3", - "_nodeVersion": "v0.4.9-pre", - "_defaultsLoaded": true, - "dist": { - "shasum": "d4b1f43a93e8296dfe02694f4680bc37a313c73f", - "tarball": "http://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" - }, - "scripts": {}, - "directories": {}, - "_shasum": "d4b1f43a93e8296dfe02694f4680bc37a313c73f", - "_from": "delayed-stream@0.0.5", - "_resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", - "bugs": { - "url": "https://github.com/felixge/node-delayed-stream/issues" - }, - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/common.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/common.js deleted file mode 100644 index 4d71b8a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/common.js +++ /dev/null @@ -1,6 +0,0 @@ -var common = module.exports; - -common.DelayedStream = require('..'); -common.assert = require('assert'); -common.fake = require('fake'); -common.PORT = 49252; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js deleted file mode 100644 index 9ecad5b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js +++ /dev/null @@ -1,38 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var DelayedStream = common.DelayedStream; -var http = require('http'); - -var UPLOAD = new Buffer(10 * 1024 * 1024); - -var server = http.createServer(function(req, res) { - var delayed = DelayedStream.create(req, {maxDataSize: UPLOAD.length}); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 10); -}); -server.listen(common.PORT, function() { - var request = http.request({ - method: 'POST', - port: common.PORT, - }); - - request.write(UPLOAD); - request.end(); - - request.on('response', function(res) { - var received = 0; - res - .on('data', function(chunk) { - received += chunk.length; - }) - .on('end', function() { - assert.equal(received, UPLOAD.length); - server.close(); - }); - }); -}); - - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js deleted file mode 100644 index 6f417f3..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js +++ /dev/null @@ -1,21 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testAutoPause() { - var source = new Stream(); - - fake.expect(source, 'pause', 1); - var delayedStream = DelayedStream.create(source); - fake.verify(); -})(); - -(function testDisableAutoPause() { - var source = new Stream(); - fake.expect(source, 'pause', 0); - - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - fake.verify(); -})(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js deleted file mode 100644 index b50c397..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js +++ /dev/null @@ -1,14 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testDelayEventsUntilResume() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - fake.expect(source, 'pause'); - delayedStream.pause(); - fake.verify(); -})(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js deleted file mode 100644 index fc4047e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js +++ /dev/null @@ -1,48 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testDelayEventsUntilResume() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - // delayedStream must not emit until we resume - fake.expect(delayedStream, 'emit', 0); - - // but our original source must emit - var params = []; - source.on('foo', function(param) { - params.push(param); - }); - - source.emit('foo', 1); - source.emit('foo', 2); - - // Make sure delayedStream did not emit, and source did - assert.deepEqual(params, [1, 2]); - fake.verify(); - - // After resume, delayedStream must playback all events - fake - .stub(delayedStream, 'emit') - .times(Infinity) - .withArg(1, 'newListener'); - fake.expect(delayedStream, 'emit', ['foo', 1]); - fake.expect(delayedStream, 'emit', ['foo', 2]); - fake.expect(source, 'resume'); - - delayedStream.resume(); - fake.verify(); - - // Calling resume again will delegate to source - fake.expect(source, 'resume'); - delayedStream.resume(); - fake.verify(); - - // Emitting more events directly leads to them being emitted - fake.expect(delayedStream, 'emit', ['foo', 3]); - source.emit('foo', 3); - fake.verify(); -})(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js deleted file mode 100644 index a9d35e7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js +++ /dev/null @@ -1,15 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testHandleSourceErrors() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - // We deal with this by attaching a no-op listener to 'error' on the source - // when creating a new DelayedStream. This way error events on the source - // won't throw. - source.emit('error', new Error('something went wrong')); -})(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js deleted file mode 100644 index 7638a2b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js +++ /dev/null @@ -1,18 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testMaxDataSize() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {maxDataSize: 1024, pauseStream: false}); - - source.emit('data', new Buffer(1024)); - - fake - .expect(delayedStream, 'emit') - .withArg(1, 'error'); - source.emit('data', new Buffer(1)); - fake.verify(); -})(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js deleted file mode 100644 index 7d312ab..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js +++ /dev/null @@ -1,13 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testPipeReleases() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - fake.expect(delayedStream, 'resume'); - delayedStream.pipe(new Stream()); -})(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js deleted file mode 100644 index d436163..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js +++ /dev/null @@ -1,13 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testProxyReadableProperty() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - source.readable = fake.value('source.readable'); - assert.strictEqual(delayedStream.readable, source.readable); -})(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/run.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/run.js deleted file mode 100755 index 0bb8e82..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/test/run.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var far = require('far').create(); - -far.add(__dirname); -far.include(/test-.*\.js$/); - -far.execute(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/package.json deleted file mode 100644 index d185f83..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "combined-stream", - "description": "A stream that emits multiple other streams one after another.", - "version": "0.0.7", - "homepage": "https://github.com/felixge/node-combined-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-combined-stream.git" - }, - "main": "./lib/combined_stream", - "scripts": { - "test": "node test/run.js" - }, - "engines": { - "node": ">= 0.8" - }, - "dependencies": { - "delayed-stream": "0.0.5" - }, - "devDependencies": { - "far": "~0.0.7" - }, - "bugs": { - "url": "https://github.com/felixge/node-combined-stream/issues" - }, - "_id": "combined-stream@0.0.7", - "dist": { - "shasum": "0137e657baa5a7541c57ac37ac5fc07d73b4dc1f", - "tarball": "http://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz" - }, - "_from": "combined-stream@~0.0.5", - "_npmVersion": "1.4.3", - "_npmUser": { - "name": "felixge", - "email": "felix@debuggable.com" - }, - "maintainers": [ - { - "name": "felixge", - "email": "felix@debuggable.com" - }, - { - "name": "celer", - "email": "celer@scrypt.net" - }, - { - "name": "alexindigo", - "email": "iam@alexindigo.com" - } - ], - "directories": {}, - "_shasum": "0137e657baa5a7541c57ac37ac5fc07d73b4dc1f", - "_resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/LICENSE deleted file mode 100644 index a4a9aee..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/README.md deleted file mode 100644 index 9d5b663..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -forever-agent -============= - -HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/index.js deleted file mode 100644 index 1e8efcd..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/index.js +++ /dev/null @@ -1,119 +0,0 @@ -module.exports = ForeverAgent -ForeverAgent.SSL = ForeverAgentSSL - -var util = require('util') - , Agent = require('http').Agent - , net = require('net') - , tls = require('tls') - , AgentSSL = require('https').Agent - -function ForeverAgent(options) { - var self = this - self.options = options || {} - self.requests = {} - self.sockets = {} - self.freeSockets = {} - self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets - self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets - self.on('free', function(socket, host, port) { - var name = host + ':' + port - if (self.requests[name] && self.requests[name].length) { - self.requests[name].shift().onSocket(socket) - } else if (self.sockets[name].length < self.minSockets) { - if (!self.freeSockets[name]) self.freeSockets[name] = [] - self.freeSockets[name].push(socket) - - // if an error happens while we don't use the socket anyway, meh, throw the socket away - var onIdleError = function() { - socket.destroy() - } - socket._onIdleError = onIdleError - socket.on('error', onIdleError) - } else { - // If there are no pending requests just destroy the - // socket and it will get removed from the pool. This - // gets us out of timeout issues and allows us to - // default to Connection:keep-alive. - socket.destroy() - } - }) - -} -util.inherits(ForeverAgent, Agent) - -ForeverAgent.defaultMinSockets = 5 - - -ForeverAgent.prototype.createConnection = net.createConnection -ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest -ForeverAgent.prototype.addRequest = function(req, host, port) { - var name = host + ':' + port - if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) { - var idleSocket = this.freeSockets[name].pop() - idleSocket.removeListener('error', idleSocket._onIdleError) - delete idleSocket._onIdleError - req._reusedSocket = true - req.onSocket(idleSocket) - } else { - this.addRequestNoreuse(req, host, port) - } -} - -ForeverAgent.prototype.removeSocket = function(s, name, host, port) { - if (this.sockets[name]) { - var index = this.sockets[name].indexOf(s) - if (index !== -1) { - this.sockets[name].splice(index, 1) - } - } else if (this.sockets[name] && this.sockets[name].length === 0) { - // don't leak - delete this.sockets[name] - delete this.requests[name] - } - - if (this.freeSockets[name]) { - var index = this.freeSockets[name].indexOf(s) - if (index !== -1) { - this.freeSockets[name].splice(index, 1) - if (this.freeSockets[name].length === 0) { - delete this.freeSockets[name] - } - } - } - - if (this.requests[name] && this.requests[name].length) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(name, host, port).emit('free') - } -} - -function ForeverAgentSSL (options) { - ForeverAgent.call(this, options) -} -util.inherits(ForeverAgentSSL, ForeverAgent) - -ForeverAgentSSL.prototype.createConnection = createConnectionSSL -ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest - -function createConnectionSSL (port, host, options) { - if (typeof port === 'object') { - options = port; - } else if (typeof host === 'object') { - options = host; - } else if (typeof options === 'object') { - options = options; - } else { - options = {}; - } - - if (typeof port === 'number') { - options.port = port; - } - - if (typeof host === 'string') { - options.host = host; - } - - return tls.connect(options); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/package.json deleted file mode 100644 index 764ca1e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "forever-agent", - "description": "HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.", - "version": "0.5.2", - "repository": { - "url": "https://github.com/mikeal/forever-agent" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "bugs": { - "url": "https://github.com/mikeal/forever-agent/issues" - }, - "homepage": "https://github.com/mikeal/forever-agent", - "_id": "forever-agent@0.5.2", - "dist": { - "shasum": "6d0e09c4921f94a27f63d3b49c5feff1ea4c5130", - "tarball": "http://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz" - }, - "_from": "forever-agent@~0.5.0", - "_npmVersion": "1.3.21", - "_npmUser": { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - "maintainers": [ - { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - } - ], - "directories": {}, - "_shasum": "6d0e09c4921f94a27f63d3b49c5feff1ea4c5130", - "_resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/License b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/License deleted file mode 100644 index c7ff12a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/Readme.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/Readme.md deleted file mode 100644 index c8a1a55..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/Readme.md +++ /dev/null @@ -1,175 +0,0 @@ -# Form-Data [![Build Status](https://travis-ci.org/felixge/node-form-data.png?branch=master)](https://travis-ci.org/felixge/node-form-data) [![Dependency Status](https://gemnasium.com/felixge/node-form-data.png)](https://gemnasium.com/felixge/node-form-data) - -A module to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. - -The API of this module is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. - -[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface -[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions - -## Install - -``` -npm install form-data -``` - -## Usage - -In this example we are constructing a form with 3 fields that contain a string, -a buffer and a file stream. - -``` javascript -var FormData = require('form-data'); -var fs = require('fs'); - -var form = new FormData(); -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); -``` - -Also you can use http-response stream: - -``` javascript -var FormData = require('form-data'); -var http = require('http'); - -var form = new FormData(); - -http.request('http://nodejs.org/images/logo.png', function(response) { - form.append('my_field', 'my value'); - form.append('my_buffer', new Buffer(10)); - form.append('my_logo', response); -}); -``` - -Or @mikeal's request stream: - -``` javascript -var FormData = require('form-data'); -var request = require('request'); - -var form = new FormData(); - -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_logo', request('http://nodejs.org/images/logo.png')); -``` - -In order to submit this form to a web application, call ```submit(url, [callback])``` method: - -``` javascript -form.submit('http://example.org/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); // for node-0.10.x -}); - -``` - -For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. - -### Alternative submission methods - -You can use node's http client interface: - -``` javascript -var http = require('http'); - -var request = http.request({ - method: 'post', - host: 'example.org', - path: '/upload', - headers: form.getHeaders() -}); - -form.pipe(request); - -request.on('response', function(res) { - console.log(res.statusCode); -}); -``` - -Or if you would prefer the `'Content-Length'` header to be set for you: - -``` javascript -form.submit('example.org/upload', function(err, res) { - console.log(res.statusCode); -}); -``` - -To use custom headers and pre-known length in parts: - -``` javascript -var CRLF = '\r\n'; -var form = new FormData(); - -var options = { - header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, - knownLength: 1 -}; - -form.append('my_buffer', buffer, options); - -form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); -}); -``` - -Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: - -``` javascript -someModule.stream(function(err, stdout, stderr) { - if (err) throw err; - - var form = new FormData(); - - form.append('file', stdout, { - filename: 'unicycle.jpg', - contentType: 'image/jpg', - knownLength: 19806 - }); - - form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); - }); -}); -``` - -For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: - -``` javascript -form.submit({ - host: 'example.com', - path: '/probably.php?extra=params', - auth: 'username:password' -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`: - -``` javascript -form.submit({ - host: 'example.com', - path: '/surelynot.php', - headers: {'x-test-header': 'test-header-value'} -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -## Notes - -- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. -- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing] - -## TODO - -- Add new streams (0.10) support and try really hard not to break it for 0.8.x. - -## License - -Form-Data is licensed under the MIT license. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/form_data.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/form_data.js deleted file mode 100644 index b8bd158..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/form_data.js +++ /dev/null @@ -1,351 +0,0 @@ -var CombinedStream = require('combined-stream'); -var util = require('util'); -var path = require('path'); -var http = require('http'); -var https = require('https'); -var parseUrl = require('url').parse; -var fs = require('fs'); -var mime = require('mime'); -var async = require('async'); - -module.exports = FormData; -function FormData() { - this._overheadLength = 0; - this._valueLength = 0; - this._lengthRetrievers = []; - - CombinedStream.call(this); -} -util.inherits(FormData, CombinedStream); - -FormData.LINE_BREAK = '\r\n'; - -FormData.prototype.append = function(field, value, options) { - options = options || {}; - - var append = CombinedStream.prototype.append.bind(this); - - // all that streamy business can't handle numbers - if (typeof value == 'number') value = ''+value; - - // https://github.com/felixge/node-form-data/issues/38 - if (util.isArray(value)) { - // Please convert your array into string - // the way web server expects it - this._error(new Error('Arrays are not supported.')); - return; - } - - var header = this._multiPartHeader(field, value, options); - var footer = this._multiPartFooter(field, value, options); - - append(header); - append(value); - append(footer); - - // pass along options.knownLength - this._trackLength(header, value, options); -}; - -FormData.prototype._trackLength = function(header, value, options) { - var valueLength = 0; - - // used w/ getLengthSync(), when length is known. - // e.g. for streaming directly from a remote server, - // w/ a known file a size, and not wanting to wait for - // incoming file to finish to get its size. - if (options.knownLength != null) { - valueLength += +options.knownLength; - } else if (Buffer.isBuffer(value)) { - valueLength = value.length; - } else if (typeof value === 'string') { - valueLength = Buffer.byteLength(value); - } - - this._valueLength += valueLength; - - // @check why add CRLF? does this account for custom/multiple CRLFs? - this._overheadLength += - Buffer.byteLength(header) + - + FormData.LINE_BREAK.length; - - // empty or either doesn't have path or not an http response - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) { - return; - } - - // no need to bother with the length - if (!options.knownLength) - this._lengthRetrievers.push(function(next) { - - if (value.hasOwnProperty('fd')) { - - // take read range into a account - // `end` = Infinity –> read file till the end - // - // TODO: Looks like there is bug in Node fs.createReadStream - // it doesn't respect `end` options without `start` options - // Fix it when node fixes it. - // https://github.com/joyent/node/issues/7819 - if (value.end != undefined && value.end != Infinity && value.start != undefined) { - - // when end specified - // no need to calculate range - // inclusive, starts with 0 - next(null, value.end+1 - (value.start ? value.start : 0)); - - // not that fast snoopy - } else { - // still need to fetch file size from fs - fs.stat(value.path, function(err, stat) { - - var fileSize; - - if (err) { - next(err); - return; - } - - // update final size based on the range options - fileSize = stat.size - (value.start ? value.start : 0); - next(null, fileSize); - }); - } - - // or http response - } else if (value.hasOwnProperty('httpVersion')) { - next(null, +value.headers['content-length']); - - // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { - // wait till response come back - value.on('response', function(response) { - value.pause(); - next(null, +response.headers['content-length']); - }); - value.resume(); - - // something else - } else { - next('Unknown stream'); - } - }); -}; - -FormData.prototype._multiPartHeader = function(field, value, options) { - var boundary = this.getBoundary(); - var header = ''; - - // custom header specified (as string)? - // it becomes responsible for boundary - // (e.g. to handle extra CRLFs on .NET servers) - if (options.header != null) { - header = options.header; - } else { - header += '--' + boundary + FormData.LINE_BREAK + - 'Content-Disposition: form-data; name="' + field + '"'; - - // fs- and request- streams have path property - // or use custom filename and/or contentType - // TODO: Use request's response mime-type - if (options.filename || value.path) { - header += - '; filename="' + path.basename(options.filename || value.path) + '"' + FormData.LINE_BREAK + - 'Content-Type: ' + (options.contentType || mime.lookup(options.filename || value.path)); - - // http response has not - } else if (value.readable && value.hasOwnProperty('httpVersion')) { - header += - '; filename="' + path.basename(value.client._httpMessage.path) + '"' + FormData.LINE_BREAK + - 'Content-Type: ' + value.headers['content-type']; - } - - header += FormData.LINE_BREAK + FormData.LINE_BREAK; - } - - return header; -}; - -FormData.prototype._multiPartFooter = function(field, value, options) { - return function(next) { - var footer = FormData.LINE_BREAK; - - var lastPart = (this._streams.length === 0); - if (lastPart) { - footer += this._lastBoundary(); - } - - next(footer); - }.bind(this); -}; - -FormData.prototype._lastBoundary = function() { - return '--' + this.getBoundary() + '--'; -}; - -FormData.prototype.getHeaders = function(userHeaders) { - var formHeaders = { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() - }; - - for (var header in userHeaders) { - formHeaders[header.toLowerCase()] = userHeaders[header]; - } - - return formHeaders; -} - -FormData.prototype.getCustomHeaders = function(contentType) { - contentType = contentType ? contentType : 'multipart/form-data'; - - var formHeaders = { - 'content-type': contentType + '; boundary=' + this.getBoundary(), - 'content-length': this.getLengthSync() - }; - - return formHeaders; -} - -FormData.prototype.getBoundary = function() { - if (!this._boundary) { - this._generateBoundary(); - } - - return this._boundary; -}; - -FormData.prototype._generateBoundary = function() { - // This generates a 50 character boundary similar to those used by Firefox. - // They are optimized for boyer-moore parsing. - var boundary = '--------------------------'; - for (var i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } - - this._boundary = boundary; -}; - -// Note: getLengthSync DOESN'T calculate streams length -// As workaround one can calculate file size manually -// and add it as knownLength option -FormData.prototype.getLengthSync = function(debug) { - var knownLength = this._overheadLength + this._valueLength; - - // Don't get confused, there are 3 "internal" streams for each keyval pair - // so it basically checks if there is any value added to the form - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - // https://github.com/felixge/node-form-data/issues/40 - if (this._lengthRetrievers.length) { - // Some async length retrivers are present - // therefore synchronous length calculation is false. - // Please use getLength(callback) to get proper length - this._error(new Error('Cannot calculate proper length in synchronous way.')); - } - - return knownLength; -}; - -FormData.prototype.getLength = function(cb) { - var knownLength = this._overheadLength + this._valueLength; - - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - if (!this._lengthRetrievers.length) { - process.nextTick(cb.bind(this, null, knownLength)); - return; - } - - async.parallel(this._lengthRetrievers, function(err, values) { - if (err) { - cb(err); - return; - } - - values.forEach(function(length) { - knownLength += length; - }); - - cb(null, knownLength); - }); -}; - -FormData.prototype.submit = function(params, cb) { - - var request - , options - , defaults = { - method : 'post' - }; - - // parse provided url if it's string - // or treat it as options object - if (typeof params == 'string') { - params = parseUrl(params); - - options = populate({ - port: params.port, - path: params.pathname, - host: params.hostname - }, defaults); - } - else // use custom params - { - options = populate(params, defaults); - // if no port provided use default one - if (!options.port) { - options.port = options.protocol == 'https:' ? 443 : 80; - } - } - - // put that good code in getHeaders to some use - options.headers = this.getHeaders(params.headers); - - // https if specified, fallback to http in any other case - if (params.protocol == 'https:') { - request = https.request(options); - } else { - request = http.request(options); - } - - // get content length and fire away - this.getLength(function(err, length) { - - // TODO: Add chunked encoding when no length (if err) - - // add content length - request.setHeader('Content-Length', length); - - this.pipe(request); - if (cb) { - request.on('error', cb); - request.on('response', cb.bind(this, null)); - } - }.bind(this)); - - return request; -}; - -FormData.prototype._error = function(err) { - if (this.error) return; - - this.error = err; - this.pause(); - this.emit('error', err); -}; - -/* - * Santa's little helpers - */ - -// populates missing values -function populate(dst, src) { - for (var prop in src) { - if (!dst[prop]) dst[prop] = src[prop]; - } - return dst; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/.travis.yml deleted file mode 100644 index 6e5919d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "0.10" diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/LICENSE deleted file mode 100644 index 8f29698..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010-2014 Caolan McMahon - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/README.md deleted file mode 100644 index 0bea531..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/README.md +++ /dev/null @@ -1,1646 +0,0 @@ -# Async.js - -[![Build Status via Travis CI](https://travis-ci.org/caolan/async.svg?branch=master)](https://travis-ci.org/caolan/async) - - -Async is a utility module which provides straight-forward, powerful functions -for working with asynchronous JavaScript. Although originally designed for -use with [Node.js](http://nodejs.org), it can also be used directly in the -browser. Also supports [component](https://github.com/component/component). - -Async provides around 20 functions that include the usual 'functional' -suspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns -for asynchronous control flow (`parallel`, `series`, `waterfall`…). All these -functions assume you follow the Node.js convention of providing a single -callback as the last argument of your `async` function. - - -## Quick Examples - -```javascript -async.map(['file1','file2','file3'], fs.stat, function(err, results){ - // results is now an array of stats for each file -}); - -async.filter(['file1','file2','file3'], fs.exists, function(results){ - // results now equals an array of the existing files -}); - -async.parallel([ - function(){ ... }, - function(){ ... } -], callback); - -async.series([ - function(){ ... }, - function(){ ... } -]); -``` - -There are many more functions available so take a look at the docs below for a -full list. This module aims to be comprehensive, so if you feel anything is -missing please create a GitHub issue for it. - -## Common Pitfalls - -### Binding a context to an iterator - -This section is really about `bind`, not about `async`. If you are wondering how to -make `async` execute your iterators in a given context, or are confused as to why -a method of another library isn't working as an iterator, study this example: - -```js -// Here is a simple object with an (unnecessarily roundabout) squaring method -var AsyncSquaringLibrary = { - squareExponent: 2, - square: function(number, callback){ - var result = Math.pow(number, this.squareExponent); - setTimeout(function(){ - callback(null, result); - }, 200); - } -}; - -async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){ - // result is [NaN, NaN, NaN] - // This fails because the `this.squareExponent` expression in the square - // function is not evaluated in the context of AsyncSquaringLibrary, and is - // therefore undefined. -}); - -async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){ - // result is [1, 4, 9] - // With the help of bind we can attach a context to the iterator before - // passing it to async. Now the square function will be executed in its - // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent` - // will be as expected. -}); -``` - -## Download - -The source is available for download from -[GitHub](http://github.com/caolan/async). -Alternatively, you can install using Node Package Manager (`npm`): - - npm install async - -__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed - -## In the Browser - -So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. - -Usage: - -```html - - -``` - -## Documentation - -### Collections - -* [`each`](#each) -* [`eachSeries`](#eachSeries) -* [`eachLimit`](#eachLimit) -* [`map`](#map) -* [`mapSeries`](#mapSeries) -* [`mapLimit`](#mapLimit) -* [`filter`](#filter) -* [`filterSeries`](#filterSeries) -* [`reject`](#reject) -* [`rejectSeries`](#rejectSeries) -* [`reduce`](#reduce) -* [`reduceRight`](#reduceRight) -* [`detect`](#detect) -* [`detectSeries`](#detectSeries) -* [`sortBy`](#sortBy) -* [`some`](#some) -* [`every`](#every) -* [`concat`](#concat) -* [`concatSeries`](#concatSeries) - -### Control Flow - -* [`series`](#seriestasks-callback) -* [`parallel`](#parallel) -* [`parallelLimit`](#parallellimittasks-limit-callback) -* [`whilst`](#whilst) -* [`doWhilst`](#doWhilst) -* [`until`](#until) -* [`doUntil`](#doUntil) -* [`forever`](#forever) -* [`waterfall`](#waterfall) -* [`compose`](#compose) -* [`seq`](#seq) -* [`applyEach`](#applyEach) -* [`applyEachSeries`](#applyEachSeries) -* [`queue`](#queue) -* [`priorityQueue`](#priorityQueue) -* [`cargo`](#cargo) -* [`auto`](#auto) -* [`retry`](#retry) -* [`iterator`](#iterator) -* [`apply`](#apply) -* [`nextTick`](#nextTick) -* [`times`](#times) -* [`timesSeries`](#timesSeries) - -### Utils - -* [`memoize`](#memoize) -* [`unmemoize`](#unmemoize) -* [`log`](#log) -* [`dir`](#dir) -* [`noConflict`](#noConflict) - - -## Collections - - - -### each(arr, iterator, callback) - -Applies the function `iterator` to each item in `arr`, in parallel. -The `iterator` is called with an item from the list, and a callback for when it -has finished. If the `iterator` passes an error to its `callback`, the main -`callback` (for the `each` function) is immediately called with the error. - -Note, that since this function applies `iterator` to each item in parallel, -there is no guarantee that the iterator functions will complete in order. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err)` which must be called once it has - completed. If no error has occured, the `callback` should be run without - arguments or with an explicit `null` argument. -* `callback(err)` - A callback which is called when all `iterator` functions - have finished, or an error occurs. - -__Examples__ - - -```js -// assuming openFiles is an array of file names and saveFile is a function -// to save the modified contents of that file: - -async.each(openFiles, saveFile, function(err){ - // if any of the saves produced an error, err would equal that error -}); -``` - -```js -// assuming openFiles is an array of file names - -async.each(openFiles, function( file, callback) { - - // Perform operation on file here. - console.log('Processing file ' + file); - - if( file.length > 32 ) { - console.log('This file name is too long'); - callback('File name too long'); - } else { - // Do work to process file here - console.log('File processed'); - callback(); - } -}, function(err){ - // if any of the file processing produced an error, err would equal that error - if( err ) { - // One of the iterations produced an error. - // All processing will now stop. - console.log('A file failed to process'); - } else { - console.log('All files have been processed successfully'); - } -}); -``` - ---------------------------------------- - - - -### eachSeries(arr, iterator, callback) - -The same as [`each`](#each), only `iterator` is applied to each item in `arr` in -series. The next `iterator` is only called once the current one has completed. -This means the `iterator` functions will complete in order. - - ---------------------------------------- - - - -### eachLimit(arr, limit, iterator, callback) - -The same as [`each`](#each), only no more than `limit` `iterator`s will be simultaneously -running at any time. - -Note that the items in `arr` are not processed in batches, so there is no guarantee that -the first `limit` `iterator` functions will complete before any others are started. - -__Arguments__ - -* `arr` - An array to iterate over. -* `limit` - The maximum number of `iterator`s to run at any time. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err)` which must be called once it has - completed. If no error has occured, the callback should be run without - arguments or with an explicit `null` argument. -* `callback(err)` - A callback which is called when all `iterator` functions - have finished, or an error occurs. - -__Example__ - -```js -// Assume documents is an array of JSON objects and requestApi is a -// function that interacts with a rate-limited REST api. - -async.eachLimit(documents, 20, requestApi, function(err){ - // if any of the saves produced an error, err would equal that error -}); -``` - ---------------------------------------- - - -### map(arr, iterator, callback) - -Produces a new array of values by mapping each value in `arr` through -the `iterator` function. The `iterator` is called with an item from `arr` and a -callback for when it has finished processing. Each of these callback takes 2 arguments: -an `error`, and the transformed item from `arr`. If `iterator` passes an error to this -callback, the main `callback` (for the `map` function) is immediately called with the error. - -Note, that since this function applies the `iterator` to each item in parallel, -there is no guarantee that the `iterator` functions will complete in order. -However, the results array will be in the same order as the original `arr`. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err, transformed)` which must be called once - it has completed with an error (which can be `null`) and a transformed item. -* `callback(err, results)` - A callback which is called when all `iterator` - functions have finished, or an error occurs. Results is an array of the - transformed items from the `arr`. - -__Example__ - -```js -async.map(['file1','file2','file3'], fs.stat, function(err, results){ - // results is now an array of stats for each file -}); -``` - ---------------------------------------- - - -### mapSeries(arr, iterator, callback) - -The same as [`map`](#map), only the `iterator` is applied to each item in `arr` in -series. The next `iterator` is only called once the current one has completed. -The results array will be in the same order as the original. - - ---------------------------------------- - - -### mapLimit(arr, limit, iterator, callback) - -The same as [`map`](#map), only no more than `limit` `iterator`s will be simultaneously -running at any time. - -Note that the items are not processed in batches, so there is no guarantee that -the first `limit` `iterator` functions will complete before any others are started. - -__Arguments__ - -* `arr` - An array to iterate over. -* `limit` - The maximum number of `iterator`s to run at any time. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err, transformed)` which must be called once - it has completed with an error (which can be `null`) and a transformed item. -* `callback(err, results)` - A callback which is called when all `iterator` - calls have finished, or an error occurs. The result is an array of the - transformed items from the original `arr`. - -__Example__ - -```js -async.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){ - // results is now an array of stats for each file -}); -``` - ---------------------------------------- - - - -### filter(arr, iterator, callback) - -__Alias:__ `select` - -Returns a new array of all the values in `arr` which pass an async truth test. -_The callback for each `iterator` call only accepts a single argument of `true` or -`false`; it does not accept an error argument first!_ This is in-line with the -way node libraries work with truth tests like `fs.exists`. This operation is -performed in parallel, but the results array will be in the same order as the -original. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in `arr`. - The `iterator` is passed a `callback(truthValue)`, which must be called with a - boolean argument once it has completed. -* `callback(results)` - A callback which is called after all the `iterator` - functions have finished. - -__Example__ - -```js -async.filter(['file1','file2','file3'], fs.exists, function(results){ - // results now equals an array of the existing files -}); -``` - ---------------------------------------- - - - -### filterSeries(arr, iterator, callback) - -__Alias:__ `selectSeries` - -The same as [`filter`](#filter) only the `iterator` is applied to each item in `arr` in -series. The next `iterator` is only called once the current one has completed. -The results array will be in the same order as the original. - ---------------------------------------- - - -### reject(arr, iterator, callback) - -The opposite of [`filter`](#filter). Removes values that pass an `async` truth test. - ---------------------------------------- - - -### rejectSeries(arr, iterator, callback) - -The same as [`reject`](#reject), only the `iterator` is applied to each item in `arr` -in series. - - ---------------------------------------- - - -### reduce(arr, memo, iterator, callback) - -__Aliases:__ `inject`, `foldl` - -Reduces `arr` into a single value using an async `iterator` to return -each successive step. `memo` is the initial state of the reduction. -This function only operates in series. - -For performance reasons, it may make sense to split a call to this function into -a parallel map, and then use the normal `Array.prototype.reduce` on the results. -This function is for situations where each step in the reduction needs to be async; -if you can get the data before reducing it, then it's probably a good idea to do so. - -__Arguments__ - -* `arr` - An array to iterate over. -* `memo` - The initial state of the reduction. -* `iterator(memo, item, callback)` - A function applied to each item in the - array to produce the next step in the reduction. The `iterator` is passed a - `callback(err, reduction)` which accepts an optional error as its first - argument, and the state of the reduction as the second. If an error is - passed to the callback, the reduction is stopped and the main `callback` is - immediately called with the error. -* `callback(err, result)` - A callback which is called after all the `iterator` - functions have finished. Result is the reduced value. - -__Example__ - -```js -async.reduce([1,2,3], 0, function(memo, item, callback){ - // pointless async: - process.nextTick(function(){ - callback(null, memo + item) - }); -}, function(err, result){ - // result is now equal to the last value of memo, which is 6 -}); -``` - ---------------------------------------- - - -### reduceRight(arr, memo, iterator, callback) - -__Alias:__ `foldr` - -Same as [`reduce`](#reduce), only operates on `arr` in reverse order. - - ---------------------------------------- - - -### detect(arr, iterator, callback) - -Returns the first value in `arr` that passes an async truth test. The -`iterator` is applied in parallel, meaning the first iterator to return `true` will -fire the detect `callback` with that result. That means the result might not be -the first item in the original `arr` (in terms of order) that passes the test. - -If order within the original `arr` is important, then look at [`detectSeries`](#detectSeries). - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in `arr`. - The iterator is passed a `callback(truthValue)` which must be called with a - boolean argument once it has completed. -* `callback(result)` - A callback which is called as soon as any iterator returns - `true`, or after all the `iterator` functions have finished. Result will be - the first item in the array that passes the truth test (iterator) or the - value `undefined` if none passed. - -__Example__ - -```js -async.detect(['file1','file2','file3'], fs.exists, function(result){ - // result now equals the first file in the list that exists -}); -``` - ---------------------------------------- - - -### detectSeries(arr, iterator, callback) - -The same as [`detect`](#detect), only the `iterator` is applied to each item in `arr` -in series. This means the result is always the first in the original `arr` (in -terms of array order) that passes the truth test. - - ---------------------------------------- - - -### sortBy(arr, iterator, callback) - -Sorts a list by the results of running each `arr` value through an async `iterator`. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err, sortValue)` which must be called once it - has completed with an error (which can be `null`) and a value to use as the sort - criteria. -* `callback(err, results)` - A callback which is called after all the `iterator` - functions have finished, or an error occurs. Results is the items from - the original `arr` sorted by the values returned by the `iterator` calls. - -__Example__ - -```js -async.sortBy(['file1','file2','file3'], function(file, callback){ - fs.stat(file, function(err, stats){ - callback(err, stats.mtime); - }); -}, function(err, results){ - // results is now the original array of files sorted by - // modified date -}); -``` - -__Sort Order__ - -By modifying the callback parameter the sorting order can be influenced: - -```js -//ascending order -async.sortBy([1,9,3,5], function(x, callback){ - callback(err, x); -}, function(err,result){ - //result callback -} ); - -//descending order -async.sortBy([1,9,3,5], function(x, callback){ - callback(err, x*-1); //<- x*-1 instead of x, turns the order around -}, function(err,result){ - //result callback -} ); -``` - ---------------------------------------- - - -### some(arr, iterator, callback) - -__Alias:__ `any` - -Returns `true` if at least one element in the `arr` satisfies an async test. -_The callback for each iterator call only accepts a single argument of `true` or -`false`; it does not accept an error argument first!_ This is in-line with the -way node libraries work with truth tests like `fs.exists`. Once any iterator -call returns `true`, the main `callback` is immediately called. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in the array - in parallel. The iterator is passed a callback(truthValue) which must be - called with a boolean argument once it has completed. -* `callback(result)` - A callback which is called as soon as any iterator returns - `true`, or after all the iterator functions have finished. Result will be - either `true` or `false` depending on the values of the async tests. - -__Example__ - -```js -async.some(['file1','file2','file3'], fs.exists, function(result){ - // if result is true then at least one of the files exists -}); -``` - ---------------------------------------- - - -### every(arr, iterator, callback) - -__Alias:__ `all` - -Returns `true` if every element in `arr` satisfies an async test. -_The callback for each `iterator` call only accepts a single argument of `true` or -`false`; it does not accept an error argument first!_ This is in-line with the -way node libraries work with truth tests like `fs.exists`. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in the array - in parallel. The iterator is passed a callback(truthValue) which must be - called with a boolean argument once it has completed. -* `callback(result)` - A callback which is called after all the `iterator` - functions have finished. Result will be either `true` or `false` depending on - the values of the async tests. - -__Example__ - -```js -async.every(['file1','file2','file3'], fs.exists, function(result){ - // if result is true then every file exists -}); -``` - ---------------------------------------- - - -### concat(arr, iterator, callback) - -Applies `iterator` to each item in `arr`, concatenating the results. Returns the -concatenated list. The `iterator`s are called in parallel, and the results are -concatenated as they return. There is no guarantee that the results array will -be returned in the original order of `arr` passed to the `iterator` function. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err, results)` which must be called once it - has completed with an error (which can be `null`) and an array of results. -* `callback(err, results)` - A callback which is called after all the `iterator` - functions have finished, or an error occurs. Results is an array containing - the concatenated results of the `iterator` function. - -__Example__ - -```js -async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){ - // files is now a list of filenames that exist in the 3 directories -}); -``` - ---------------------------------------- - - -### concatSeries(arr, iterator, callback) - -Same as [`concat`](#concat), but executes in series instead of parallel. - - -## Control Flow - - -### series(tasks, [callback]) - -Run the functions in the `tasks` array in series, each one running once the previous -function has completed. If any functions in the series pass an error to its -callback, no more functions are run, and `callback` is immediately called with the value of the error. -Otherwise, `callback` receives an array of results when `tasks` have completed. - -It is also possible to use an object instead of an array. Each property will be -run as a function, and the results will be passed to the final `callback` as an object -instead of an array. This can be a more readable way of handling results from -[`series`](#series). - -**Note** that while many implementations preserve the order of object properties, the -[ECMAScript Language Specifcation](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) -explicitly states that - -> The mechanics and order of enumerating the properties is not specified. - -So if you rely on the order in which your series of functions are executed, and want -this to work on all platforms, consider using an array. - -__Arguments__ - -* `tasks` - An array or object containing functions to run, each function is passed - a `callback(err, result)` it must call on completion with an error `err` (which can - be `null`) and an optional `result` value. -* `callback(err, results)` - An optional callback to run once all the functions - have completed. This function gets a results array (or object) containing all - the result arguments passed to the `task` callbacks. - -__Example__ - -```js -async.series([ - function(callback){ - // do some stuff ... - callback(null, 'one'); - }, - function(callback){ - // do some more stuff ... - callback(null, 'two'); - } -], -// optional callback -function(err, results){ - // results is now equal to ['one', 'two'] -}); - - -// an example using an object instead of an array -async.series({ - one: function(callback){ - setTimeout(function(){ - callback(null, 1); - }, 200); - }, - two: function(callback){ - setTimeout(function(){ - callback(null, 2); - }, 100); - } -}, -function(err, results) { - // results is now equal to: {one: 1, two: 2} -}); -``` - ---------------------------------------- - - -### parallel(tasks, [callback]) - -Run the `tasks` array of functions in parallel, without waiting until the previous -function has completed. If any of the functions pass an error to its -callback, the main `callback` is immediately called with the value of the error. -Once the `tasks` have completed, the results are passed to the final `callback` as an -array. - -It is also possible to use an object instead of an array. Each property will be -run as a function and the results will be passed to the final `callback` as an object -instead of an array. This can be a more readable way of handling results from -[`parallel`](#parallel). - - -__Arguments__ - -* `tasks` - An array or object containing functions to run. Each function is passed - a `callback(err, result)` which it must call on completion with an error `err` - (which can be `null`) and an optional `result` value. -* `callback(err, results)` - An optional callback to run once all the functions - have completed. This function gets a results array (or object) containing all - the result arguments passed to the task callbacks. - -__Example__ - -```js -async.parallel([ - function(callback){ - setTimeout(function(){ - callback(null, 'one'); - }, 200); - }, - function(callback){ - setTimeout(function(){ - callback(null, 'two'); - }, 100); - } -], -// optional callback -function(err, results){ - // the results array will equal ['one','two'] even though - // the second function had a shorter timeout. -}); - - -// an example using an object instead of an array -async.parallel({ - one: function(callback){ - setTimeout(function(){ - callback(null, 1); - }, 200); - }, - two: function(callback){ - setTimeout(function(){ - callback(null, 2); - }, 100); - } -}, -function(err, results) { - // results is now equals to: {one: 1, two: 2} -}); -``` - ---------------------------------------- - - -### parallelLimit(tasks, limit, [callback]) - -The same as [`parallel`](#parallel), only `tasks` are executed in parallel -with a maximum of `limit` tasks executing at any time. - -Note that the `tasks` are not executed in batches, so there is no guarantee that -the first `limit` tasks will complete before any others are started. - -__Arguments__ - -* `tasks` - An array or object containing functions to run, each function is passed - a `callback(err, result)` it must call on completion with an error `err` (which can - be `null`) and an optional `result` value. -* `limit` - The maximum number of `tasks` to run at any time. -* `callback(err, results)` - An optional callback to run once all the functions - have completed. This function gets a results array (or object) containing all - the result arguments passed to the `task` callbacks. - ---------------------------------------- - - -### whilst(test, fn, callback) - -Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped, -or an error occurs. - -__Arguments__ - -* `test()` - synchronous truth test to perform before each execution of `fn`. -* `fn(callback)` - A function which is called each time `test` passes. The function is - passed a `callback(err)`, which must be called once it has completed with an - optional `err` argument. -* `callback(err)` - A callback which is called after the test fails and repeated - execution of `fn` has stopped. - -__Example__ - -```js -var count = 0; - -async.whilst( - function () { return count < 5; }, - function (callback) { - count++; - setTimeout(callback, 1000); - }, - function (err) { - // 5 seconds have passed - } -); -``` - ---------------------------------------- - - -### doWhilst(fn, test, callback) - -The post-check version of [`whilst`](#whilst). To reflect the difference in -the order of operations, the arguments `test` and `fn` are switched. - -`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. - ---------------------------------------- - - -### until(test, fn, callback) - -Repeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped, -or an error occurs. - -The inverse of [`whilst`](#whilst). - ---------------------------------------- - - -### doUntil(fn, test, callback) - -Like [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`. - ---------------------------------------- - - -### forever(fn, errback) - -Calls the asynchronous function `fn` with a callback parameter that allows it to -call itself again, in series, indefinitely. - -If an error is passed to the callback then `errback` is called with the -error, and execution stops, otherwise it will never be called. - -```js -async.forever( - function(next) { - // next is suitable for passing to things that need a callback(err [, whatever]); - // it will result in this function being called again. - }, - function(err) { - // if next is called with a value in its first parameter, it will appear - // in here as 'err', and execution will stop. - } -); -``` - ---------------------------------------- - - -### waterfall(tasks, [callback]) - -Runs the `tasks` array of functions in series, each passing their results to the next in -the array. However, if any of the `tasks` pass an error to their own callback, the -next function is not executed, and the main `callback` is immediately called with -the error. - -__Arguments__ - -* `tasks` - An array of functions to run, each function is passed a - `callback(err, result1, result2, ...)` it must call on completion. The first - argument is an error (which can be `null`) and any further arguments will be - passed as arguments in order to the next task. -* `callback(err, [results])` - An optional callback to run once all the functions - have completed. This will be passed the results of the last task's callback. - - - -__Example__ - -```js -async.waterfall([ - function(callback){ - callback(null, 'one', 'two'); - }, - function(arg1, arg2, callback){ - // arg1 now equals 'one' and arg2 now equals 'two' - callback(null, 'three'); - }, - function(arg1, callback){ - // arg1 now equals 'three' - callback(null, 'done'); - } -], function (err, result) { - // result now equals 'done' -}); -``` - ---------------------------------------- - -### compose(fn1, fn2...) - -Creates a function which is a composition of the passed asynchronous -functions. Each function consumes the return value of the function that -follows. Composing functions `f()`, `g()`, and `h()` would produce the result of -`f(g(h()))`, only this version uses callbacks to obtain the return values. - -Each function is executed with the `this` binding of the composed function. - -__Arguments__ - -* `functions...` - the asynchronous functions to compose - - -__Example__ - -```js -function add1(n, callback) { - setTimeout(function () { - callback(null, n + 1); - }, 10); -} - -function mul3(n, callback) { - setTimeout(function () { - callback(null, n * 3); - }, 10); -} - -var add1mul3 = async.compose(mul3, add1); - -add1mul3(4, function (err, result) { - // result now equals 15 -}); -``` - ---------------------------------------- - -### seq(fn1, fn2...) - -Version of the compose function that is more natural to read. -Each following function consumes the return value of the latter function. - -Each function is executed with the `this` binding of the composed function. - -__Arguments__ - -* functions... - the asynchronous functions to compose - - -__Example__ - -```js -// Requires lodash (or underscore), express3 and dresende's orm2. -// Part of an app, that fetches cats of the logged user. -// This example uses `seq` function to avoid overnesting and error -// handling clutter. -app.get('/cats', function(request, response) { - function handleError(err, data, callback) { - if (err) { - console.error(err); - response.json({ status: 'error', message: err.message }); - } - else { - callback(data); - } - } - var User = request.models.User; - async.seq( - _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data)) - handleError, - function(user, fn) { - user.getCats(fn); // 'getCats' has signature (callback(err, data)) - }, - handleError, - function(cats) { - response.json({ status: 'ok', message: 'Cats found', data: cats }); - } - )(req.session.user_id); - } -}); -``` - ---------------------------------------- - -### applyEach(fns, args..., callback) - -Applies the provided arguments to each function in the array, calling -`callback` after all functions have completed. If you only provide the first -argument, then it will return a function which lets you pass in the -arguments as if it were a single function call. - -__Arguments__ - -* `fns` - the asynchronous functions to all call with the same arguments -* `args...` - any number of separate arguments to pass to the function -* `callback` - the final argument should be the callback, called when all - functions have completed processing - - -__Example__ - -```js -async.applyEach([enableSearch, updateSchema], 'bucket', callback); - -// partial application example: -async.each( - buckets, - async.applyEach([enableSearch, updateSchema]), - callback -); -``` - ---------------------------------------- - - -### applyEachSeries(arr, iterator, callback) - -The same as [`applyEach`](#applyEach) only the functions are applied in series. - ---------------------------------------- - - -### queue(worker, concurrency) - -Creates a `queue` object with the specified `concurrency`. Tasks added to the -`queue` are processed in parallel (up to the `concurrency` limit). If all -`worker`s are in progress, the task is queued until one becomes available. -Once a `worker` completes a `task`, that `task`'s callback is called. - -__Arguments__ - -* `worker(task, callback)` - An asynchronous function for processing a queued - task, which must call its `callback(err)` argument when finished, with an - optional `error` as an argument. -* `concurrency` - An `integer` for determining how many `worker` functions should be - run in parallel. - -__Queue objects__ - -The `queue` object returned by this function has the following properties and -methods: - -* `length()` - a function returning the number of items waiting to be processed. -* `started` - a function returning whether or not any items have been pushed and processed by the queue -* `running()` - a function returning the number of items currently being processed. -* `idle()` - a function returning false if there are items waiting or being processed, or true if not. -* `concurrency` - an integer for determining how many `worker` functions should be - run in parallel. This property can be changed after a `queue` is created to - alter the concurrency on-the-fly. -* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once - the `worker` has finished processing the task. Instead of a single task, a `tasks` array - can be submitted. The respective callback is used for every task in the list. -* `unshift(task, [callback])` - add a new task to the front of the `queue`. -* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit, - and further tasks will be queued. -* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`. -* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`. -* `paused` - a boolean for determining whether the queue is in a paused state -* `pause()` - a function that pauses the processing of tasks until `resume()` is called. -* `resume()` - a function that resumes the processing of queued tasks when the queue is paused. -* `kill()` - a function that empties remaining tasks from the queue forcing it to go idle. - -__Example__ - -```js -// create a queue object with concurrency 2 - -var q = async.queue(function (task, callback) { - console.log('hello ' + task.name); - callback(); -}, 2); - - -// assign a callback -q.drain = function() { - console.log('all items have been processed'); -} - -// add some items to the queue - -q.push({name: 'foo'}, function (err) { - console.log('finished processing foo'); -}); -q.push({name: 'bar'}, function (err) { - console.log('finished processing bar'); -}); - -// add some items to the queue (batch-wise) - -q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) { - console.log('finished processing bar'); -}); - -// add some items to the front of the queue - -q.unshift({name: 'bar'}, function (err) { - console.log('finished processing bar'); -}); -``` - - ---------------------------------------- - - -### priorityQueue(worker, concurrency) - -The same as [`queue`](#queue) only tasks are assigned a priority and completed in ascending priority order. There are two differences between `queue` and `priorityQueue` objects: - -* `push(task, priority, [callback])` - `priority` should be a number. If an array of - `tasks` is given, all tasks will be assigned the same priority. -* The `unshift` method was removed. - ---------------------------------------- - - -### cargo(worker, [payload]) - -Creates a `cargo` object with the specified payload. Tasks added to the -cargo will be processed altogether (up to the `payload` limit). If the -`worker` is in progress, the task is queued until it becomes available. Once -the `worker` has completed some tasks, each callback of those tasks is called. -Check out [this animation](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) for how `cargo` and `queue` work. - -While [queue](#queue) passes only one task to one of a group of workers -at a time, cargo passes an array of tasks to a single worker, repeating -when the worker is finished. - -__Arguments__ - -* `worker(tasks, callback)` - An asynchronous function for processing an array of - queued tasks, which must call its `callback(err)` argument when finished, with - an optional `err` argument. -* `payload` - An optional `integer` for determining how many tasks should be - processed per round; if omitted, the default is unlimited. - -__Cargo objects__ - -The `cargo` object returned by this function has the following properties and -methods: - -* `length()` - A function returning the number of items waiting to be processed. -* `payload` - An `integer` for determining how many tasks should be - process per round. This property can be changed after a `cargo` is created to - alter the payload on-the-fly. -* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called - once the `worker` has finished processing the task. Instead of a single task, an array of `tasks` - can be submitted. The respective callback is used for every task in the list. -* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued. -* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`. -* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`. - -__Example__ - -```js -// create a cargo object with payload 2 - -var cargo = async.cargo(function (tasks, callback) { - for(var i=0; i -### auto(tasks, [callback]) - -Determines the best order for running the functions in `tasks`, based on their -requirements. Each function can optionally depend on other functions being completed -first, and each function is run as soon as its requirements are satisfied. - -If any of the functions pass an error to their callback, it will not -complete (so any other functions depending on it will not run), and the main -`callback` is immediately called with the error. Functions also receive an -object containing the results of functions which have completed so far. - -Note, all functions are called with a `results` object as a second argument, -so it is unsafe to pass functions in the `tasks` object which cannot handle the -extra argument. - -For example, this snippet of code: - -```js -async.auto({ - readData: async.apply(fs.readFile, 'data.txt', 'utf-8') -}, callback); -``` - -will have the effect of calling `readFile` with the results object as the last -argument, which will fail: - -```js -fs.readFile('data.txt', 'utf-8', cb, {}); -``` - -Instead, wrap the call to `readFile` in a function which does not forward the -`results` object: - -```js -async.auto({ - readData: function(cb, results){ - fs.readFile('data.txt', 'utf-8', cb); - } -}, callback); -``` - -__Arguments__ - -* `tasks` - An object. Each of its properties is either a function or an array of - requirements, with the function itself the last item in the array. The object's key - of a property serves as the name of the task defined by that property, - i.e. can be used when specifying requirements for other tasks. - The function receives two arguments: (1) a `callback(err, result)` which must be - called when finished, passing an `error` (which can be `null`) and the result of - the function's execution, and (2) a `results` object, containing the results of - the previously executed functions. -* `callback(err, results)` - An optional callback which is called when all the - tasks have been completed. It receives the `err` argument if any `tasks` - pass an error to their callback. Results are always returned; however, if - an error occurs, no further `tasks` will be performed, and the results - object will only contain partial results. - - -__Example__ - -```js -async.auto({ - get_data: function(callback){ - console.log('in get_data'); - // async code to get some data - callback(null, 'data', 'converted to array'); - }, - make_folder: function(callback){ - console.log('in make_folder'); - // async code to create a directory to store a file in - // this is run at the same time as getting the data - callback(null, 'folder'); - }, - write_file: ['get_data', 'make_folder', function(callback, results){ - console.log('in write_file', JSON.stringify(results)); - // once there is some data and the directory exists, - // write the data to a file in the directory - callback(null, 'filename'); - }], - email_link: ['write_file', function(callback, results){ - console.log('in email_link', JSON.stringify(results)); - // once the file is written let's email a link to it... - // results.write_file contains the filename returned by write_file. - callback(null, {'file':results.write_file, 'email':'user@example.com'}); - }] -}, function(err, results) { - console.log('err = ', err); - console.log('results = ', results); -}); -``` - -This is a fairly trivial example, but to do this using the basic parallel and -series functions would look like this: - -```js -async.parallel([ - function(callback){ - console.log('in get_data'); - // async code to get some data - callback(null, 'data', 'converted to array'); - }, - function(callback){ - console.log('in make_folder'); - // async code to create a directory to store a file in - // this is run at the same time as getting the data - callback(null, 'folder'); - } -], -function(err, results){ - async.series([ - function(callback){ - console.log('in write_file', JSON.stringify(results)); - // once there is some data and the directory exists, - // write the data to a file in the directory - results.push('filename'); - callback(null); - }, - function(callback){ - console.log('in email_link', JSON.stringify(results)); - // once the file is written let's email a link to it... - callback(null, {'file':results.pop(), 'email':'user@example.com'}); - } - ]); -}); -``` - -For a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding -new tasks much easier (and the code more readable). - - ---------------------------------------- - - -### retry([times = 5], task, [callback]) - -Attempts to get a successful response from `task` no more than `times` times before -returning an error. If the task is successful, the `callback` will be passed the result -of the successfull task. If all attemps fail, the callback will be passed the error and -result (if any) of the final attempt. - -__Arguments__ - -* `times` - An integer indicating how many times to attempt the `task` before giving up. Defaults to 5. -* `task(callback, results)` - A function which receives two arguments: (1) a `callback(err, result)` - which must be called when finished, passing `err` (which can be `null`) and the `result` of - the function's execution, and (2) a `results` object, containing the results of - the previously executed functions (if nested inside another control flow). -* `callback(err, results)` - An optional callback which is called when the - task has succeeded, or after the final failed attempt. It receives the `err` and `result` arguments of the last attempt at completing the `task`. - -The [`retry`](#retry) function can be used as a stand-alone control flow by passing a -callback, as shown below: - -```js -async.retry(3, apiMethod, function(err, result) { - // do something with the result -}); -``` - -It can also be embeded within other control flow functions to retry individual methods -that are not as reliable, like this: - -```js -async.auto({ - users: api.getUsers.bind(api), - payments: async.retry(3, api.getPayments.bind(api)) -}, function(err, results) { - // do something with the results -}); -``` - - ---------------------------------------- - - -### iterator(tasks) - -Creates an iterator function which calls the next function in the `tasks` array, -returning a continuation to call the next one after that. It's also possible to -“peek” at the next iterator with `iterator.next()`. - -This function is used internally by the `async` module, but can be useful when -you want to manually control the flow of functions in series. - -__Arguments__ - -* `tasks` - An array of functions to run. - -__Example__ - -```js -var iterator = async.iterator([ - function(){ sys.p('one'); }, - function(){ sys.p('two'); }, - function(){ sys.p('three'); } -]); - -node> var iterator2 = iterator(); -'one' -node> var iterator3 = iterator2(); -'two' -node> iterator3(); -'three' -node> var nextfn = iterator2.next(); -node> nextfn(); -'three' -``` - ---------------------------------------- - - -### apply(function, arguments..) - -Creates a continuation function with some arguments already applied. - -Useful as a shorthand when combined with other control flow functions. Any arguments -passed to the returned function are added to the arguments originally passed -to apply. - -__Arguments__ - -* `function` - The function you want to eventually apply all arguments to. -* `arguments...` - Any number of arguments to automatically apply when the - continuation is called. - -__Example__ - -```js -// using apply - -async.parallel([ - async.apply(fs.writeFile, 'testfile1', 'test1'), - async.apply(fs.writeFile, 'testfile2', 'test2'), -]); - - -// the same process without using apply - -async.parallel([ - function(callback){ - fs.writeFile('testfile1', 'test1', callback); - }, - function(callback){ - fs.writeFile('testfile2', 'test2', callback); - } -]); -``` - -It's possible to pass any number of additional arguments when calling the -continuation: - -```js -node> var fn = async.apply(sys.puts, 'one'); -node> fn('two', 'three'); -one -two -three -``` - ---------------------------------------- - - -### nextTick(callback) - -Calls `callback` on a later loop around the event loop. In Node.js this just -calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)` -if available, otherwise `setTimeout(callback, 0)`, which means other higher priority -events may precede the execution of `callback`. - -This is used internally for browser-compatibility purposes. - -__Arguments__ - -* `callback` - The function to call on a later loop around the event loop. - -__Example__ - -```js -var call_order = []; -async.nextTick(function(){ - call_order.push('two'); - // call_order now equals ['one','two'] -}); -call_order.push('one') -``` - - -### times(n, callback) - -Calls the `callback` function `n` times, and accumulates results in the same manner -you would use with [`map`](#map). - -__Arguments__ - -* `n` - The number of times to run the function. -* `callback` - The function to call `n` times. - -__Example__ - -```js -// Pretend this is some complicated async factory -var createUser = function(id, callback) { - callback(null, { - id: 'user' + id - }) -} -// generate 5 users -async.times(5, function(n, next){ - createUser(n, function(err, user) { - next(err, user) - }) -}, function(err, users) { - // we should now have 5 users -}); -``` - - -### timesSeries(n, callback) - -The same as [`times`](#times), only the iterator is applied to each item in `arr` in -series. The next `iterator` is only called once the current one has completed. -The results array will be in the same order as the original. - - -## Utils - - -### memoize(fn, [hasher]) - -Caches the results of an `async` function. When creating a hash to store function -results against, the callback is omitted from the hash and an optional hash -function can be used. - -The cache of results is exposed as the `memo` property of the function returned -by `memoize`. - -__Arguments__ - -* `fn` - The function to proxy and cache results from. -* `hasher` - Tn optional function for generating a custom hash for storing - results. It has all the arguments applied to it apart from the callback, and - must be synchronous. - -__Example__ - -```js -var slow_fn = function (name, callback) { - // do something - callback(null, result); -}; -var fn = async.memoize(slow_fn); - -// fn can now be used as if it were slow_fn -fn('some name', function () { - // callback -}); -``` - - -### unmemoize(fn) - -Undoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized -form. Handy for testing. - -__Arguments__ - -* `fn` - the memoized function - - -### log(function, arguments) - -Logs the result of an `async` function to the `console`. Only works in Node.js or -in browsers that support `console.log` and `console.error` (such as FF and Chrome). -If multiple arguments are returned from the async function, `console.log` is -called on each argument in order. - -__Arguments__ - -* `function` - The function you want to eventually apply all arguments to. -* `arguments...` - Any number of arguments to apply to the function. - -__Example__ - -```js -var hello = function(name, callback){ - setTimeout(function(){ - callback(null, 'hello ' + name); - }, 1000); -}; -``` -```js -node> async.log(hello, 'world'); -'hello world' -``` - ---------------------------------------- - - -### dir(function, arguments) - -Logs the result of an `async` function to the `console` using `console.dir` to -display the properties of the resulting object. Only works in Node.js or -in browsers that support `console.dir` and `console.error` (such as FF and Chrome). -If multiple arguments are returned from the async function, `console.dir` is -called on each argument in order. - -__Arguments__ - -* `function` - The function you want to eventually apply all arguments to. -* `arguments...` - Any number of arguments to apply to the function. - -__Example__ - -```js -var hello = function(name, callback){ - setTimeout(function(){ - callback(null, {hello: name}); - }, 1000); -}; -``` -```js -node> async.dir(hello, 'world'); -{hello: 'world'} -``` - ---------------------------------------- - - -### noConflict() - -Changes the value of `async` back to its original value, returning a reference to the -`async` object. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/component.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/component.json deleted file mode 100644 index bbb0115..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/component.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "async", - "repo": "caolan/async", - "description": "Higher-order functions and common patterns for asynchronous code", - "version": "0.1.23", - "keywords": [], - "dependencies": {}, - "development": {}, - "main": "lib/async.js", - "scripts": [ "lib/async.js" ] -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js deleted file mode 100755 index 01e8afc..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js +++ /dev/null @@ -1,1123 +0,0 @@ -/*! - * async - * https://github.com/caolan/async - * - * Copyright 2010-2014 Caolan McMahon - * Released under the MIT license - */ -/*jshint onevar: false, indent:4 */ -/*global setImmediate: false, setTimeout: false, console: false */ -(function () { - - var async = {}; - - // global on the server, window in the browser - var root, previous_async; - - root = this; - if (root != null) { - previous_async = root.async; - } - - async.noConflict = function () { - root.async = previous_async; - return async; - }; - - function only_once(fn) { - var called = false; - return function() { - if (called) throw new Error("Callback was already called."); - called = true; - fn.apply(root, arguments); - } - } - - //// cross-browser compatiblity functions //// - - var _toString = Object.prototype.toString; - - var _isArray = Array.isArray || function (obj) { - return _toString.call(obj) === '[object Array]'; - }; - - var _each = function (arr, iterator) { - if (arr.forEach) { - return arr.forEach(iterator); - } - for (var i = 0; i < arr.length; i += 1) { - iterator(arr[i], i, arr); - } - }; - - var _map = function (arr, iterator) { - if (arr.map) { - return arr.map(iterator); - } - var results = []; - _each(arr, function (x, i, a) { - results.push(iterator(x, i, a)); - }); - return results; - }; - - var _reduce = function (arr, iterator, memo) { - if (arr.reduce) { - return arr.reduce(iterator, memo); - } - _each(arr, function (x, i, a) { - memo = iterator(memo, x, i, a); - }); - return memo; - }; - - var _keys = function (obj) { - if (Object.keys) { - return Object.keys(obj); - } - var keys = []; - for (var k in obj) { - if (obj.hasOwnProperty(k)) { - keys.push(k); - } - } - return keys; - }; - - //// exported async module functions //// - - //// nextTick implementation with browser-compatible fallback //// - if (typeof process === 'undefined' || !(process.nextTick)) { - if (typeof setImmediate === 'function') { - async.nextTick = function (fn) { - // not a direct alias for IE10 compatibility - setImmediate(fn); - }; - async.setImmediate = async.nextTick; - } - else { - async.nextTick = function (fn) { - setTimeout(fn, 0); - }; - async.setImmediate = async.nextTick; - } - } - else { - async.nextTick = process.nextTick; - if (typeof setImmediate !== 'undefined') { - async.setImmediate = function (fn) { - // not a direct alias for IE10 compatibility - setImmediate(fn); - }; - } - else { - async.setImmediate = async.nextTick; - } - } - - async.each = function (arr, iterator, callback) { - callback = callback || function () {}; - if (!arr.length) { - return callback(); - } - var completed = 0; - _each(arr, function (x) { - iterator(x, only_once(done) ); - }); - function done(err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - completed += 1; - if (completed >= arr.length) { - callback(); - } - } - } - }; - async.forEach = async.each; - - async.eachSeries = function (arr, iterator, callback) { - callback = callback || function () {}; - if (!arr.length) { - return callback(); - } - var completed = 0; - var iterate = function () { - iterator(arr[completed], function (err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - completed += 1; - if (completed >= arr.length) { - callback(); - } - else { - iterate(); - } - } - }); - }; - iterate(); - }; - async.forEachSeries = async.eachSeries; - - async.eachLimit = function (arr, limit, iterator, callback) { - var fn = _eachLimit(limit); - fn.apply(null, [arr, iterator, callback]); - }; - async.forEachLimit = async.eachLimit; - - var _eachLimit = function (limit) { - - return function (arr, iterator, callback) { - callback = callback || function () {}; - if (!arr.length || limit <= 0) { - return callback(); - } - var completed = 0; - var started = 0; - var running = 0; - - (function replenish () { - if (completed >= arr.length) { - return callback(); - } - - while (running < limit && started < arr.length) { - started += 1; - running += 1; - iterator(arr[started - 1], function (err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - completed += 1; - running -= 1; - if (completed >= arr.length) { - callback(); - } - else { - replenish(); - } - } - }); - } - })(); - }; - }; - - - var doParallel = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - return fn.apply(null, [async.each].concat(args)); - }; - }; - var doParallelLimit = function(limit, fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - return fn.apply(null, [_eachLimit(limit)].concat(args)); - }; - }; - var doSeries = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - return fn.apply(null, [async.eachSeries].concat(args)); - }; - }; - - - var _asyncMap = function (eachfn, arr, iterator, callback) { - arr = _map(arr, function (x, i) { - return {index: i, value: x}; - }); - if (!callback) { - eachfn(arr, function (x, callback) { - iterator(x.value, function (err) { - callback(err); - }); - }); - } else { - var results = []; - eachfn(arr, function (x, callback) { - iterator(x.value, function (err, v) { - results[x.index] = v; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - } - }; - async.map = doParallel(_asyncMap); - async.mapSeries = doSeries(_asyncMap); - async.mapLimit = function (arr, limit, iterator, callback) { - return _mapLimit(limit)(arr, iterator, callback); - }; - - var _mapLimit = function(limit) { - return doParallelLimit(limit, _asyncMap); - }; - - // reduce only has a series version, as doing reduce in parallel won't - // work in many situations. - async.reduce = function (arr, memo, iterator, callback) { - async.eachSeries(arr, function (x, callback) { - iterator(memo, x, function (err, v) { - memo = v; - callback(err); - }); - }, function (err) { - callback(err, memo); - }); - }; - // inject alias - async.inject = async.reduce; - // foldl alias - async.foldl = async.reduce; - - async.reduceRight = function (arr, memo, iterator, callback) { - var reversed = _map(arr, function (x) { - return x; - }).reverse(); - async.reduce(reversed, memo, iterator, callback); - }; - // foldr alias - async.foldr = async.reduceRight; - - var _filter = function (eachfn, arr, iterator, callback) { - var results = []; - arr = _map(arr, function (x, i) { - return {index: i, value: x}; - }); - eachfn(arr, function (x, callback) { - iterator(x.value, function (v) { - if (v) { - results.push(x); - } - callback(); - }); - }, function (err) { - callback(_map(results.sort(function (a, b) { - return a.index - b.index; - }), function (x) { - return x.value; - })); - }); - }; - async.filter = doParallel(_filter); - async.filterSeries = doSeries(_filter); - // select alias - async.select = async.filter; - async.selectSeries = async.filterSeries; - - var _reject = function (eachfn, arr, iterator, callback) { - var results = []; - arr = _map(arr, function (x, i) { - return {index: i, value: x}; - }); - eachfn(arr, function (x, callback) { - iterator(x.value, function (v) { - if (!v) { - results.push(x); - } - callback(); - }); - }, function (err) { - callback(_map(results.sort(function (a, b) { - return a.index - b.index; - }), function (x) { - return x.value; - })); - }); - }; - async.reject = doParallel(_reject); - async.rejectSeries = doSeries(_reject); - - var _detect = function (eachfn, arr, iterator, main_callback) { - eachfn(arr, function (x, callback) { - iterator(x, function (result) { - if (result) { - main_callback(x); - main_callback = function () {}; - } - else { - callback(); - } - }); - }, function (err) { - main_callback(); - }); - }; - async.detect = doParallel(_detect); - async.detectSeries = doSeries(_detect); - - async.some = function (arr, iterator, main_callback) { - async.each(arr, function (x, callback) { - iterator(x, function (v) { - if (v) { - main_callback(true); - main_callback = function () {}; - } - callback(); - }); - }, function (err) { - main_callback(false); - }); - }; - // any alias - async.any = async.some; - - async.every = function (arr, iterator, main_callback) { - async.each(arr, function (x, callback) { - iterator(x, function (v) { - if (!v) { - main_callback(false); - main_callback = function () {}; - } - callback(); - }); - }, function (err) { - main_callback(true); - }); - }; - // all alias - async.all = async.every; - - async.sortBy = function (arr, iterator, callback) { - async.map(arr, function (x, callback) { - iterator(x, function (err, criteria) { - if (err) { - callback(err); - } - else { - callback(null, {value: x, criteria: criteria}); - } - }); - }, function (err, results) { - if (err) { - return callback(err); - } - else { - var fn = function (left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }; - callback(null, _map(results.sort(fn), function (x) { - return x.value; - })); - } - }); - }; - - async.auto = function (tasks, callback) { - callback = callback || function () {}; - var keys = _keys(tasks); - var remainingTasks = keys.length - if (!remainingTasks) { - return callback(); - } - - var results = {}; - - var listeners = []; - var addListener = function (fn) { - listeners.unshift(fn); - }; - var removeListener = function (fn) { - for (var i = 0; i < listeners.length; i += 1) { - if (listeners[i] === fn) { - listeners.splice(i, 1); - return; - } - } - }; - var taskComplete = function () { - remainingTasks-- - _each(listeners.slice(0), function (fn) { - fn(); - }); - }; - - addListener(function () { - if (!remainingTasks) { - var theCallback = callback; - // prevent final callback from calling itself if it errors - callback = function () {}; - - theCallback(null, results); - } - }); - - _each(keys, function (k) { - var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]]; - var taskCallback = function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - if (err) { - var safeResults = {}; - _each(_keys(results), function(rkey) { - safeResults[rkey] = results[rkey]; - }); - safeResults[k] = args; - callback(err, safeResults); - // stop subsequent errors hitting callback multiple times - callback = function () {}; - } - else { - results[k] = args; - async.setImmediate(taskComplete); - } - }; - var requires = task.slice(0, Math.abs(task.length - 1)) || []; - var ready = function () { - return _reduce(requires, function (a, x) { - return (a && results.hasOwnProperty(x)); - }, true) && !results.hasOwnProperty(k); - }; - if (ready()) { - task[task.length - 1](taskCallback, results); - } - else { - var listener = function () { - if (ready()) { - removeListener(listener); - task[task.length - 1](taskCallback, results); - } - }; - addListener(listener); - } - }); - }; - - async.retry = function(times, task, callback) { - var DEFAULT_TIMES = 5; - var attempts = []; - // Use defaults if times not passed - if (typeof times === 'function') { - callback = task; - task = times; - times = DEFAULT_TIMES; - } - // Make sure times is a number - times = parseInt(times, 10) || DEFAULT_TIMES; - var wrappedTask = function(wrappedCallback, wrappedResults) { - var retryAttempt = function(task, finalAttempt) { - return function(seriesCallback) { - task(function(err, result){ - seriesCallback(!err || finalAttempt, {err: err, result: result}); - }, wrappedResults); - }; - }; - while (times) { - attempts.push(retryAttempt(task, !(times-=1))); - } - async.series(attempts, function(done, data){ - data = data[data.length - 1]; - (wrappedCallback || callback)(data.err, data.result); - }); - } - // If a callback is passed, run this as a controll flow - return callback ? wrappedTask() : wrappedTask - }; - - async.waterfall = function (tasks, callback) { - callback = callback || function () {}; - if (!_isArray(tasks)) { - var err = new Error('First argument to waterfall must be an array of functions'); - return callback(err); - } - if (!tasks.length) { - return callback(); - } - var wrapIterator = function (iterator) { - return function (err) { - if (err) { - callback.apply(null, arguments); - callback = function () {}; - } - else { - var args = Array.prototype.slice.call(arguments, 1); - var next = iterator.next(); - if (next) { - args.push(wrapIterator(next)); - } - else { - args.push(callback); - } - async.setImmediate(function () { - iterator.apply(null, args); - }); - } - }; - }; - wrapIterator(async.iterator(tasks))(); - }; - - var _parallel = function(eachfn, tasks, callback) { - callback = callback || function () {}; - if (_isArray(tasks)) { - eachfn.map(tasks, function (fn, callback) { - if (fn) { - fn(function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - callback.call(null, err, args); - }); - } - }, callback); - } - else { - var results = {}; - eachfn.each(_keys(tasks), function (k, callback) { - tasks[k](function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - results[k] = args; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - } - }; - - async.parallel = function (tasks, callback) { - _parallel({ map: async.map, each: async.each }, tasks, callback); - }; - - async.parallelLimit = function(tasks, limit, callback) { - _parallel({ map: _mapLimit(limit), each: _eachLimit(limit) }, tasks, callback); - }; - - async.series = function (tasks, callback) { - callback = callback || function () {}; - if (_isArray(tasks)) { - async.mapSeries(tasks, function (fn, callback) { - if (fn) { - fn(function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - callback.call(null, err, args); - }); - } - }, callback); - } - else { - var results = {}; - async.eachSeries(_keys(tasks), function (k, callback) { - tasks[k](function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - results[k] = args; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - } - }; - - async.iterator = function (tasks) { - var makeCallback = function (index) { - var fn = function () { - if (tasks.length) { - tasks[index].apply(null, arguments); - } - return fn.next(); - }; - fn.next = function () { - return (index < tasks.length - 1) ? makeCallback(index + 1): null; - }; - return fn; - }; - return makeCallback(0); - }; - - async.apply = function (fn) { - var args = Array.prototype.slice.call(arguments, 1); - return function () { - return fn.apply( - null, args.concat(Array.prototype.slice.call(arguments)) - ); - }; - }; - - var _concat = function (eachfn, arr, fn, callback) { - var r = []; - eachfn(arr, function (x, cb) { - fn(x, function (err, y) { - r = r.concat(y || []); - cb(err); - }); - }, function (err) { - callback(err, r); - }); - }; - async.concat = doParallel(_concat); - async.concatSeries = doSeries(_concat); - - async.whilst = function (test, iterator, callback) { - if (test()) { - iterator(function (err) { - if (err) { - return callback(err); - } - async.whilst(test, iterator, callback); - }); - } - else { - callback(); - } - }; - - async.doWhilst = function (iterator, test, callback) { - iterator(function (err) { - if (err) { - return callback(err); - } - var args = Array.prototype.slice.call(arguments, 1); - if (test.apply(null, args)) { - async.doWhilst(iterator, test, callback); - } - else { - callback(); - } - }); - }; - - async.until = function (test, iterator, callback) { - if (!test()) { - iterator(function (err) { - if (err) { - return callback(err); - } - async.until(test, iterator, callback); - }); - } - else { - callback(); - } - }; - - async.doUntil = function (iterator, test, callback) { - iterator(function (err) { - if (err) { - return callback(err); - } - var args = Array.prototype.slice.call(arguments, 1); - if (!test.apply(null, args)) { - async.doUntil(iterator, test, callback); - } - else { - callback(); - } - }); - }; - - async.queue = function (worker, concurrency) { - if (concurrency === undefined) { - concurrency = 1; - } - function _insert(q, data, pos, callback) { - if (!q.started){ - q.started = true; - } - if (!_isArray(data)) { - data = [data]; - } - if(data.length == 0) { - // call drain immediately if there are no tasks - return async.setImmediate(function() { - if (q.drain) { - q.drain(); - } - }); - } - _each(data, function(task) { - var item = { - data: task, - callback: typeof callback === 'function' ? callback : null - }; - - if (pos) { - q.tasks.unshift(item); - } else { - q.tasks.push(item); - } - - if (q.saturated && q.tasks.length === q.concurrency) { - q.saturated(); - } - async.setImmediate(q.process); - }); - } - - var workers = 0; - var q = { - tasks: [], - concurrency: concurrency, - saturated: null, - empty: null, - drain: null, - started: false, - paused: false, - push: function (data, callback) { - _insert(q, data, false, callback); - }, - kill: function () { - q.drain = null; - q.tasks = []; - }, - unshift: function (data, callback) { - _insert(q, data, true, callback); - }, - process: function () { - if (!q.paused && workers < q.concurrency && q.tasks.length) { - var task = q.tasks.shift(); - if (q.empty && q.tasks.length === 0) { - q.empty(); - } - workers += 1; - var next = function () { - workers -= 1; - if (task.callback) { - task.callback.apply(task, arguments); - } - if (q.drain && q.tasks.length + workers === 0) { - q.drain(); - } - q.process(); - }; - var cb = only_once(next); - worker(task.data, cb); - } - }, - length: function () { - return q.tasks.length; - }, - running: function () { - return workers; - }, - idle: function() { - return q.tasks.length + workers === 0; - }, - pause: function () { - if (q.paused === true) { return; } - q.paused = true; - q.process(); - }, - resume: function () { - if (q.paused === false) { return; } - q.paused = false; - q.process(); - } - }; - return q; - }; - - async.priorityQueue = function (worker, concurrency) { - - function _compareTasks(a, b){ - return a.priority - b.priority; - }; - - function _binarySearch(sequence, item, compare) { - var beg = -1, - end = sequence.length - 1; - while (beg < end) { - var mid = beg + ((end - beg + 1) >>> 1); - if (compare(item, sequence[mid]) >= 0) { - beg = mid; - } else { - end = mid - 1; - } - } - return beg; - } - - function _insert(q, data, priority, callback) { - if (!q.started){ - q.started = true; - } - if (!_isArray(data)) { - data = [data]; - } - if(data.length == 0) { - // call drain immediately if there are no tasks - return async.setImmediate(function() { - if (q.drain) { - q.drain(); - } - }); - } - _each(data, function(task) { - var item = { - data: task, - priority: priority, - callback: typeof callback === 'function' ? callback : null - }; - - q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item); - - if (q.saturated && q.tasks.length === q.concurrency) { - q.saturated(); - } - async.setImmediate(q.process); - }); - } - - // Start with a normal queue - var q = async.queue(worker, concurrency); - - // Override push to accept second parameter representing priority - q.push = function (data, priority, callback) { - _insert(q, data, priority, callback); - }; - - // Remove unshift function - delete q.unshift; - - return q; - }; - - async.cargo = function (worker, payload) { - var working = false, - tasks = []; - - var cargo = { - tasks: tasks, - payload: payload, - saturated: null, - empty: null, - drain: null, - drained: true, - push: function (data, callback) { - if (!_isArray(data)) { - data = [data]; - } - _each(data, function(task) { - tasks.push({ - data: task, - callback: typeof callback === 'function' ? callback : null - }); - cargo.drained = false; - if (cargo.saturated && tasks.length === payload) { - cargo.saturated(); - } - }); - async.setImmediate(cargo.process); - }, - process: function process() { - if (working) return; - if (tasks.length === 0) { - if(cargo.drain && !cargo.drained) cargo.drain(); - cargo.drained = true; - return; - } - - var ts = typeof payload === 'number' - ? tasks.splice(0, payload) - : tasks.splice(0, tasks.length); - - var ds = _map(ts, function (task) { - return task.data; - }); - - if(cargo.empty) cargo.empty(); - working = true; - worker(ds, function () { - working = false; - - var args = arguments; - _each(ts, function (data) { - if (data.callback) { - data.callback.apply(null, args); - } - }); - - process(); - }); - }, - length: function () { - return tasks.length; - }, - running: function () { - return working; - } - }; - return cargo; - }; - - var _console_fn = function (name) { - return function (fn) { - var args = Array.prototype.slice.call(arguments, 1); - fn.apply(null, args.concat([function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (typeof console !== 'undefined') { - if (err) { - if (console.error) { - console.error(err); - } - } - else if (console[name]) { - _each(args, function (x) { - console[name](x); - }); - } - } - }])); - }; - }; - async.log = _console_fn('log'); - async.dir = _console_fn('dir'); - /*async.info = _console_fn('info'); - async.warn = _console_fn('warn'); - async.error = _console_fn('error');*/ - - async.memoize = function (fn, hasher) { - var memo = {}; - var queues = {}; - hasher = hasher || function (x) { - return x; - }; - var memoized = function () { - var args = Array.prototype.slice.call(arguments); - var callback = args.pop(); - var key = hasher.apply(null, args); - if (key in memo) { - async.nextTick(function () { - callback.apply(null, memo[key]); - }); - } - else if (key in queues) { - queues[key].push(callback); - } - else { - queues[key] = [callback]; - fn.apply(null, args.concat([function () { - memo[key] = arguments; - var q = queues[key]; - delete queues[key]; - for (var i = 0, l = q.length; i < l; i++) { - q[i].apply(null, arguments); - } - }])); - } - }; - memoized.memo = memo; - memoized.unmemoized = fn; - return memoized; - }; - - async.unmemoize = function (fn) { - return function () { - return (fn.unmemoized || fn).apply(null, arguments); - }; - }; - - async.times = function (count, iterator, callback) { - var counter = []; - for (var i = 0; i < count; i++) { - counter.push(i); - } - return async.map(counter, iterator, callback); - }; - - async.timesSeries = function (count, iterator, callback) { - var counter = []; - for (var i = 0; i < count; i++) { - counter.push(i); - } - return async.mapSeries(counter, iterator, callback); - }; - - async.seq = function (/* functions... */) { - var fns = arguments; - return function () { - var that = this; - var args = Array.prototype.slice.call(arguments); - var callback = args.pop(); - async.reduce(fns, args, function (newargs, fn, cb) { - fn.apply(that, newargs.concat([function () { - var err = arguments[0]; - var nextargs = Array.prototype.slice.call(arguments, 1); - cb(err, nextargs); - }])) - }, - function (err, results) { - callback.apply(that, [err].concat(results)); - }); - }; - }; - - async.compose = function (/* functions... */) { - return async.seq.apply(null, Array.prototype.reverse.call(arguments)); - }; - - var _applyEach = function (eachfn, fns /*args...*/) { - var go = function () { - var that = this; - var args = Array.prototype.slice.call(arguments); - var callback = args.pop(); - return eachfn(fns, function (fn, cb) { - fn.apply(that, args.concat([cb])); - }, - callback); - }; - if (arguments.length > 2) { - var args = Array.prototype.slice.call(arguments, 2); - return go.apply(this, args); - } - else { - return go; - } - }; - async.applyEach = doParallel(_applyEach); - async.applyEachSeries = doSeries(_applyEach); - - async.forever = function (fn, callback) { - function next(err) { - if (err) { - if (callback) { - return callback(err); - } - throw err; - } - fn(next); - } - next(); - }; - - // Node.js - if (typeof module !== 'undefined' && module.exports) { - module.exports = async; - } - // AMD / RequireJS - else if (typeof define !== 'undefined' && define.amd) { - define([], function () { - return async; - }); - } - // included directly via ')); - expect(boom.response.payload.message).to.not.contain(''); - expect(encoded).to.equal('\\x3cscript\\x3ealert\\x281\\x29\\x3c\\x2fscript\\x3e'); - done(); - }); - - it('encodes \' characters', function (done) { - - var encoded = Hoek.escapeJavaScript('something(\'param\')'); - expect(encoded).to.equal('something\\x28\\x27param\\x27\\x29'); - done(); - }); - - it('encodes large unicode characters with the correct padding', function (done) { - - var encoded = Hoek.escapeJavaScript(String.fromCharCode(500) + String.fromCharCode(1000)); - expect(encoded).to.equal('\\u0500\\u1000'); - done(); - }); - - it('doesn\'t throw an exception when passed null', function (done) { - - var encoded = Hoek.escapeJavaScript(null); - expect(encoded).to.equal(''); - done(); - }); - }); - - describe('#escapeHtml', function () { - - it('encodes / characters', function (done) { - - var encoded = Hoek.escapeHtml(''); - expect(encoded).to.equal('<script>alert(1)</script>'); - done(); - }); - - it('encodes < and > as named characters', function (done) { - - var encoded = Hoek.escapeHtml(' -``` - -Or in node.js: - -``` -npm install node-uuid -``` - -```javascript -var uuid = require('node-uuid'); -``` - -Then create some ids ... - -```javascript -// Generate a v1 (time-based) id -uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' - -// Generate a v4 (random) id -uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' -``` - -## API - -### uuid.v1([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v1 (timestamp-based) UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. - * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. - * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. - * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Notes: - -1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v1({ - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678 -}); // -> "710b962e-041c-11e1-9234-0123456789ab" -``` - -Example: In-place generation of two binary IDs - -```javascript -// Generate two ids in an array -var arr = new Array(32); // -> [] -uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] -uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] - -// Optionally use uuid.unparse() to get stringify the ids -uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' -uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' -``` - -### uuid.v4([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v4 UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values - * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v4({ - random: [ - 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, - 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 - ] -}); -// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" -``` - -Example: Generate two IDs in a single buffer - -```javascript -var buffer = new Array(32); // (or 'new Buffer' in node.js) -uuid.v4(null, buffer, 0); -uuid.v4(null, buffer, 16); -``` - -### uuid.parse(id[, buffer[, offset]]) -### uuid.unparse(buffer[, offset]) - -Parse and unparse UUIDs - - * `id` - (String) UUID(-like) string - * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used - * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 - -Example parsing and unparsing a UUID string - -```javascript -var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> -var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' -``` - -### uuid.noConflict() - -(Browsers only) Set `uuid` property back to it's previous value. - -Returns the node-uuid object. - -Example: - -```javascript -var myUuid = uuid.noConflict(); -myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' -``` - -## Deprecated APIs - -Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. - -### uuid([format [, buffer [, offset]]]) - -uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). - -### uuid.BufferClass - -The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API. - -## Testing - -In node.js - -``` -> cd test -> node test.js -``` - -In Browser - -``` -open test/test.html -``` - -### Benchmarking - -Requires node.js - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -For a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark) - -For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). - -## Release notes - -### 1.4.0 - -* Improved module context detection -* Removed public RNG functions - -### 1.3.2 - -* Improve tests and handling of v1() options (Issue #24) -* Expose RNG option to allow for perf testing with different generators - -### 1.3.0 - -* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! -* Support for node.js crypto API -* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/README.md deleted file mode 100644 index aaeb2ea..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# node-uuid Benchmarks - -### Results - -To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark - -### Run them yourself - -node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. - -To prepare and run the benchmark issue; - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -You'll see an output like this one: - -``` -# v4 -nodeuuid.v4(): 854700 uuids/second -nodeuuid.v4('binary'): 788643 uuids/second -nodeuuid.v4('binary', buffer): 1336898 uuids/second -uuid(): 479386 uuids/second -uuid('binary'): 582072 uuids/second -uuidjs.create(4): 312304 uuids/second - -# v1 -nodeuuid.v1(): 938086 uuids/second -nodeuuid.v1('binary'): 683060 uuids/second -nodeuuid.v1('binary', buffer): 1644736 uuids/second -uuidjs.create(1): 190621 uuids/second -``` - -* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. -* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. - -If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: - -``` -for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; -``` - -If you're interested in how performance varies between different node versions, you can issue the above command multiple times. - -You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: - -``` -(cd benchmark/ && ./bench.sh) -``` - -This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu deleted file mode 100644 index a342fbb..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu +++ /dev/null @@ -1,174 +0,0 @@ -#!/opt/local/bin/gnuplot -persist -# -# -# G N U P L O T -# Version 4.4 patchlevel 3 -# last modified March 2011 -# System: Darwin 10.8.0 -# -# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 -# Thomas Williams, Colin Kelley and many others -# -# gnuplot home: http://www.gnuplot.info -# faq, bugs, etc: type "help seeking-assistance" -# immediate help: type "help" -# plot window: hit 'h' -set terminal postscript eps noenhanced defaultplex \ - leveldefault color colortext \ - solid linewidth 1.2 butt noclip \ - palfuncparam 2000,0.003 \ - "Helvetica" 14 -set output 'bench.eps' -unset clip points -set clip one -unset clip two -set bar 1.000000 front -set border 31 front linetype -1 linewidth 1.000 -set xdata -set ydata -set zdata -set x2data -set y2data -set timefmt x "%d/%m/%y,%H:%M" -set timefmt y "%d/%m/%y,%H:%M" -set timefmt z "%d/%m/%y,%H:%M" -set timefmt x2 "%d/%m/%y,%H:%M" -set timefmt y2 "%d/%m/%y,%H:%M" -set timefmt cb "%d/%m/%y,%H:%M" -set boxwidth -set style fill empty border -set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 -set style circle radius graph 0.02, first 0, 0 -set dummy x,y -set format x "% g" -set format y "% g" -set format x2 "% g" -set format y2 "% g" -set format z "% g" -set format cb "% g" -set angles radians -unset grid -set key title "" -set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox -set key noinvert samplen 4 spacing 1 width 0 height 0 -set key maxcolumns 2 maxrows 0 -unset label -unset arrow -set style increment default -unset style line -set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 -unset style arrow -set style histogram clustered gap 2 title offset character 0, 0, 0 -unset logscale -set offsets graph 0.05, 0.15, 0, 0 -set pointsize 1.5 -set pointintervalbox 1 -set encoding default -unset polar -unset parametric -unset decimalsign -set view 60, 30, 1, 1 -set samples 100, 100 -set isosamples 10, 10 -set surface -unset contour -set clabel '%8.3g' -set mapping cartesian -set datafile separator whitespace -unset hidden3d -set cntrparam order 4 -set cntrparam linear -set cntrparam levels auto 5 -set cntrparam points 5 -set size ratio 0 1,1 -set origin 0,0 -set style data points -set style function lines -set xzeroaxis linetype -2 linewidth 1.000 -set yzeroaxis linetype -2 linewidth 1.000 -set zzeroaxis linetype -2 linewidth 1.000 -set x2zeroaxis linetype -2 linewidth 1.000 -set y2zeroaxis linetype -2 linewidth 1.000 -set ticslevel 0.5 -set mxtics default -set mytics default -set mztics default -set mx2tics default -set my2tics default -set mcbtics default -set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set xtics norangelimit -set xtics () -set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set ytics autofreq norangelimit -set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 -set ztics autofreq norangelimit -set nox2tics -set noy2tics -set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set cbtics autofreq norangelimit -set title "" -set title offset character 0, 0, 0 font "" norotate -set timestamp bottom -set timestamp "" -set timestamp offset character 0, 0, 0 font "" norotate -set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale rfixmin -set autoscale rfixmax -set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) -set autoscale tfixmin -set autoscale tfixmax -set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale ufixmin -set autoscale ufixmax -set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale vfixmin -set autoscale vfixmax -set xlabel "" -set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set x2label "" -set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate -set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) -set autoscale xfixmin -set autoscale xfixmax -set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) -set autoscale x2fixmin -set autoscale x2fixmax -set ylabel "" -set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set y2label "" -set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) -set autoscale yfixmin -set autoscale yfixmax -set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) -set autoscale y2fixmin -set autoscale y2fixmax -set zlabel "" -set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale zfixmin -set autoscale zfixmax -set cblabel "" -set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale cbfixmin -set autoscale cbfixmax -set zero 1e-08 -set lmargin -1 -set bmargin -1 -set rmargin -1 -set tmargin -1 -set pm3d explicit at s -set pm3d scansautomatic -set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB -set palette rgbformulae 7, 5, 15 -set colorbox default -set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault -set loadpath -set fontpath -set fit noerrorvariables -GNUTERM = "aqua" -plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 -# EOF diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.sh b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.sh deleted file mode 100755 index d870a0c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# for a given node version run: -# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; - -PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') -FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) -INDICES=(2 3 2 3 2 2 2 2 2) -VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) -TMPJOIN="tmp_join" -OUTPUT="bench_results.txt" - -for I in ${!FILES[*]}; do - F=${FILES[$I]} - P=${PATTERNS[$I]} - INDEX=${INDICES[$I]} - echo "version $F" > $F - for V in $VERSIONS; do - (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F - done - if [ $I == 0 ]; then - cat $F > $TMPJOIN - else - join $TMPJOIN $F > $OUTPUT - cp $OUTPUT $TMPJOIN - fi - rm $F -done - -rm $TMPJOIN - -gnuplot bench.gnu -convert -density 200 -resize 800x560 -flatten bench.eps bench.png -rm bench.eps diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c deleted file mode 100644 index dbfc75f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -Test performance of native C UUID generation - -To Compile: cc -luuid benchmark-native.c -o benchmark-native -*/ - -#include -#include -#include -#include - -int main() { - uuid_t myid; - char buf[36+1]; - int i; - struct timeval t; - double start, finish; - - gettimeofday(&t, NULL); - start = t.tv_sec + t.tv_usec/1e6; - - int n = 2e5; - for (i = 0; i < n; i++) { - uuid_generate(myid); - uuid_unparse(myid, buf); - } - - gettimeofday(&t, NULL); - finish = t.tv_sec + t.tv_usec/1e6; - double dur = finish - start; - - printf("%d uuids/sec", (int)(n/dur)); - return 0; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js deleted file mode 100644 index 40e6efb..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js +++ /dev/null @@ -1,84 +0,0 @@ -try { - var nodeuuid = require('../uuid'); -} catch (e) { - console.error('node-uuid require failed - skipping tests'); -} - -try { - var uuid = require('uuid'); -} catch (e) { - console.error('uuid require failed - skipping tests'); -} - -try { - var uuidjs = require('uuid-js'); -} catch (e) { - console.error('uuid-js require failed - skipping tests'); -} - -var N = 5e5; - -function rate(msg, t) { - console.log(msg + ': ' + - (N / (Date.now() - t) * 1e3 | 0) + - ' uuids/second'); -} - -console.log('# v4'); - -// node-uuid - string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); - rate('nodeuuid.v4() - using node.js crypto RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); - rate('nodeuuid.v4() - using Math.random() RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); - rate('nodeuuid.v4(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); - rate('nodeuuid.v4(\'binary\', buffer)', t); -} - -// libuuid - string form -if (uuid) { - for (var i = 0, t = Date.now(); i < N; i++) uuid(); - rate('uuid()', t); - - for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); - rate('uuid(\'binary\')', t); -} - -// uuid-js - string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); - rate('uuidjs.create(4)', t); -} - -// 140byte.es -for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); -rate('140byte.es_v4', t); - -console.log(''); -console.log('# v1'); - -// node-uuid - v1 string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); - rate('nodeuuid.v1()', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); - rate('nodeuuid.v1(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); - rate('nodeuuid.v1(\'binary\', buffer)', t); -} - -// uuid-js - v1 string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); - rate('uuidjs.create(1)', t); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/component.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/component.json deleted file mode 100644 index ace2134..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/component.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "node-uuid", - "repo": "broofa/node-uuid", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "version": "1.4.0", - "author": "Robert Kieffer ", - "contributors": [ - {"name": "Christoph Tavan ", "github": "https://github.com/ctavan"} - ], - "keywords": ["uuid", "guid", "rfc4122"], - "dependencies": {}, - "development": {}, - "main": "uuid.js", - "scripts": [ - "uuid.js" - ], - "license": "MIT" -} \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/package.json deleted file mode 100644 index ee93121..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "node-uuid", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "url": "http://github.com/broofa/node-uuid", - "keywords": [ - "uuid", - "guid", - "rfc4122" - ], - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com" - }, - "contributors": [ - { - "name": "Christoph Tavan", - "email": "dev@tavan.de" - } - ], - "lib": ".", - "main": "./uuid.js", - "repository": { - "type": "git", - "url": "https://github.com/broofa/node-uuid.git" - }, - "version": "1.4.1", - "readme": "# node-uuid\n\nSimple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.\n\nFeatures:\n\n* Generate RFC4122 version 1 or version 4 UUIDs\n* Runs in node.js and all browsers.\n* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) ('broofa/node-uuid').\n* Cryptographically strong random # generation on supporting platforms\n* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )\n* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)\n\n## Getting Started\n\nInstall it in your browser:\n\n```html\n\n```\n\nOr in node.js:\n\n```\nnpm install node-uuid\n```\n\n```javascript\nvar uuid = require('node-uuid');\n```\n\nThen create some ids ...\n\n```javascript\n// Generate a v1 (time-based) id\nuuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n\n// Generate a v4 (random) id\nuuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'\n```\n\n## API\n\n### uuid.v1([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v1 (timestamp-based) UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.\n * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.\n * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.\n * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nNotes:\n\n1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v1({\n node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],\n clockseq: 0x1234,\n msecs: new Date('2011-11-01').getTime(),\n nsecs: 5678\n}); // -> \"710b962e-041c-11e1-9234-0123456789ab\"\n```\n\nExample: In-place generation of two binary IDs\n\n```javascript\n// Generate two ids in an array\nvar arr = new Array(32); // -> []\nuuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\nuuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\n\n// Optionally use uuid.unparse() to get stringify the ids\nuuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'\nuuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'\n```\n\n### uuid.v4([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v4 UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values\n * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v4({\n random: [\n 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,\n 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36\n ]\n});\n// -> \"109156be-c4fb-41ea-b1b4-efe1671c5836\"\n```\n\nExample: Generate two IDs in a single buffer\n\n```javascript\nvar buffer = new Array(32); // (or 'new Buffer' in node.js)\nuuid.v4(null, buffer, 0);\nuuid.v4(null, buffer, 16);\n```\n\n### uuid.parse(id[, buffer[, offset]])\n### uuid.unparse(buffer[, offset])\n\nParse and unparse UUIDs\n\n * `id` - (String) UUID(-like) string\n * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used\n * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0\n\nExample parsing and unparsing a UUID string\n\n```javascript\nvar bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> \nvar string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'\n```\n\n### uuid.noConflict()\n\n(Browsers only) Set `uuid` property back to it's previous value.\n\nReturns the node-uuid object.\n\nExample:\n\n```javascript\nvar myUuid = uuid.noConflict();\nmyUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n```\n\n## Deprecated APIs\n\nSupport for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.\n\n### uuid([format [, buffer [, offset]]])\n\nuuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).\n\n### uuid.BufferClass\n\nThe class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API.\n\n## Testing\n\nIn node.js\n\n```\n> cd test\n> node test.js\n```\n\nIn Browser\n\n```\nopen test/test.html\n```\n\n### Benchmarking\n\nRequires node.js\n\n```\nnpm install uuid uuid-js\nnode benchmark/benchmark.js\n```\n\nFor a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark)\n\nFor browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).\n\n## Release notes\n\n### 1.4.0\n\n* Improved module context detection\n* Removed public RNG functions\n\n### 1.3.2\n\n* Improve tests and handling of v1() options (Issue #24)\n* Expose RNG option to allow for perf testing with different generators\n\n### 1.3.0\n\n* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!\n* Support for node.js crypto API\n* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/broofa/node-uuid/issues" - }, - "_id": "node-uuid@1.4.1", - "dist": { - "shasum": "39aef510e5889a3dca9c895b506c73aae1bac048", - "tarball": "http://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz" - }, - "_from": "node-uuid@~1.4.0", - "_npmVersion": "1.3.6", - "_npmUser": { - "name": "broofa", - "email": "robert@broofa.com" - }, - "maintainers": [ - { - "name": "broofa", - "email": "robert@broofa.com" - } - ], - "directories": {}, - "_shasum": "39aef510e5889a3dca9c895b506c73aae1bac048", - "_resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz", - "homepage": "https://github.com/broofa/node-uuid" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/compare_v1.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/compare_v1.js deleted file mode 100644 index 05af822..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/compare_v1.js +++ /dev/null @@ -1,63 +0,0 @@ -var assert = require('assert'), - nodeuuid = require('../uuid'), - uuidjs = require('uuid-js'), - libuuid = require('uuid').generate, - util = require('util'), - exec = require('child_process').exec, - os = require('os'); - -// On Mac Os X / macports there's only the ossp-uuid package that provides uuid -// On Linux there's uuid-runtime which provides uuidgen -var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; - -function compare(ids) { - console.log(ids); - for (var i = 0; i < ids.length; i++) { - var id = ids[i].split('-'); - id = [id[2], id[1], id[0]].join(''); - ids[i] = id; - } - var sorted = ([].concat(ids)).sort(); - - if (sorted.toString() !== ids.toString()) { - console.log('Warning: sorted !== ids'); - } else { - console.log('everything in order!'); - } -} - -// Test time order of v1 uuids -var ids = []; -while (ids.length < 10e3) ids.push(nodeuuid.v1()); - -var max = 10; -console.log('node-uuid:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); -compare(ids); - -console.log(''); -console.log('uuidjs:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); -compare(ids); - -console.log(''); -console.log('libuuid:'); -ids = []; -var count = 0; -var last = function() { - compare(ids); -} -var cb = function(err, stdout, stderr) { - ids.push(stdout.substring(0, stdout.length-1)); - count++; - if (count < max) { - return next(); - } - last(); -}; -var next = function() { - exec(uuidCmd, cb); -}; -next(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.html b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.html deleted file mode 100644 index d80326e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.js deleted file mode 100644 index 2469225..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.js +++ /dev/null @@ -1,228 +0,0 @@ -if (!this.uuid) { - // node.js - uuid = require('../uuid'); -} - -// -// x-platform log/assert shims -// - -function _log(msg, type) { - type = type || 'log'; - - if (typeof(document) != 'undefined') { - document.write('
    ' + msg.replace(/\n/g, '
    ') + '
    '); - } - if (typeof(console) != 'undefined') { - var color = { - log: '\033[39m', - warn: '\033[33m', - error: '\033[31m' - }; - console[type](color[type] + msg + color.log); - } -} - -function log(msg) {_log(msg, 'log');} -function warn(msg) {_log(msg, 'warn');} -function error(msg) {_log(msg, 'error');} - -function assert(res, msg) { - if (!res) { - error('FAIL: ' + msg); - } else { - log('Pass: ' + msg); - } -} - -// -// Unit tests -// - -// Verify ordering of v1 ids created with explicit times -var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 - -function compare(name, ids) { - ids = ids.map(function(id) { - return id.split('-').reverse().join('-'); - }).sort(); - var sorted = ([].concat(ids)).sort(); - - assert(sorted.toString() == ids.toString(), name + ' have expected order'); -} - -// Verify ordering of v1 ids created using default behavior -compare('uuids with current time', [ - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1() -]); - -// Verify ordering of v1 ids created with explicit times -compare('uuids with time option', [ - uuid.v1({msecs: TIME - 10*3600*1000}), - uuid.v1({msecs: TIME - 1}), - uuid.v1({msecs: TIME}), - uuid.v1({msecs: TIME + 1}), - uuid.v1({msecs: TIME + 28*24*3600*1000}) -]); - -assert( - uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}), - 'IDs created at same msec are different' -); - -// Verify throw if too many ids created -var thrown = false; -try { - uuid.v1({msecs: TIME, nsecs: 10000}); -} catch (e) { - thrown = true; -} -assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); - -// Verify clock regression bumps clockseq -var uidt = uuid.v1({msecs: TIME}); -var uidtb = uuid.v1({msecs: TIME - 1}); -assert( - parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, - 'Clock regression by msec increments the clockseq' -); - -// Verify clock regression bumps clockseq -var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); -var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); -assert( - parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, - 'Clock regression by nsec increments the clockseq' -); - -// Verify explicit options produce expected id -var id = uuid.v1({ - msecs: 1321651533573, - nsecs: 5432, - clockseq: 0x385c, - node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] -}); -assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); - -// Verify adjacent ids across a msec boundary are 1 time unit apart -var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); -var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); - -var before = u0.split('-')[0], after = u1.split('-')[0]; -var dt = parseInt(after, 16) - parseInt(before, 16); -assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); - -// -// Test parse/unparse -// - -id = '00112233445566778899aabbccddeeff'; -assert(uuid.unparse(uuid.parse(id.substr(0,10))) == - '00112233-4400-0000-0000-000000000000', 'Short parse'); -assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == - '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); - -// -// Perf tests -// - -var generators = { - v1: uuid.v1, - v4: uuid.v4 -}; - -var UUID_FORMAT = { - v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, - v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i -}; - -var N = 1e4; - -// Get %'age an actual value differs from the ideal value -function divergence(actual, ideal) { - return Math.round(100*100*(actual - ideal)/ideal)/100; -} - -function rate(msg, t) { - log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); -} - -for (var version in generators) { - var counts = {}, max = 0; - var generator = generators[version]; - var format = UUID_FORMAT[version]; - - log('\nSanity check ' + N + ' ' + version + ' uuids'); - for (var i = 0, ok = 0; i < N; i++) { - id = generator(); - if (!format.test(id)) { - throw Error(id + ' is not a valid UUID string'); - } - - if (id != uuid.unparse(uuid.parse(id))) { - assert(fail, id + ' is not a valid id'); - } - - // Count digits for our randomness check - if (version == 'v4') { - var digits = id.replace(/-/g, '').split(''); - for (var j = digits.length-1; j >= 0; j--) { - var c = digits[j]; - max = Math.max(max, counts[c] = (counts[c] || 0) + 1); - } - } - } - - // Check randomness for v4 UUIDs - if (version == 'v4') { - // Limit that we get worried about randomness. (Purely empirical choice, this!) - var limit = 2*100*Math.sqrt(1/N); - - log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); - - for (var i = 0; i < 16; i++) { - var c = i.toString(16); - var bar = '', n = counts[c], p = Math.round(n/max*100|0); - - // 1-3,5-8, and D-F: 1:16 odds over 30 digits - var ideal = N*30/16; - if (i == 4) { - // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1 + 30/16); - } else if (i >= 8 && i <= 11) { - // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1/4 + 30/16); - } else { - // Otherwise: 1:16 odds on 30 digits - ideal = N*30/16; - } - var d = divergence(n, ideal); - - // Draw bar using UTF squares (just for grins) - var s = n/max*50 | 0; - while (s--) bar += '='; - - assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); - } - } -} - -// Perf tests -for (var version in generators) { - log('\nPerformance testing ' + version + ' UUIDs'); - var generator = generators[version]; - var buf = new uuid.BufferClass(16); - - for (var i = 0, t = Date.now(); i < N; i++) generator(); - rate('uuid.' + version + '()', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); - rate('uuid.' + version + '(\'binary\')', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); - rate('uuid.' + version + '(\'binary\', buffer)', t); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/uuid.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/uuid.js deleted file mode 100644 index 2fac6dc..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/uuid.js +++ /dev/null @@ -1,245 +0,0 @@ -// uuid.js -// -// Copyright (c) 2010-2012 Robert Kieffer -// MIT License - http://opensource.org/licenses/mit-license.php - -(function() { - var _global = this; - - // Unique ID creation requires a high quality random # generator. We feature - // detect to determine the best RNG source, normalizing to a function that - // returns 128-bits of randomness, since that's what's usually required - var _rng; - - // Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html - // - // Moderately fast, high quality - if (typeof(require) == 'function') { - try { - var _rb = require('crypto').randomBytes; - _rng = _rb && function() {return _rb(16);}; - } catch(e) {} - } - - if (!_rng && _global.crypto && crypto.getRandomValues) { - // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto - // - // Moderately fast, high quality - var _rnds8 = new Uint8Array(16); - _rng = function whatwgRNG() { - crypto.getRandomValues(_rnds8); - return _rnds8; - }; - } - - if (!_rng) { - // Math.random()-based (RNG) - // - // If all else fails, use Math.random(). It's fast, but is of unspecified - // quality. - var _rnds = new Array(16); - _rng = function() { - for (var i = 0, r; i < 16; i++) { - if ((i & 0x03) === 0) r = Math.random() * 0x100000000; - _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return _rnds; - }; - } - - // Buffer class to use - var BufferClass = typeof(Buffer) == 'function' ? Buffer : Array; - - // Maps for number <-> hex string conversion - var _byteToHex = []; - var _hexToByte = {}; - for (var i = 0; i < 256; i++) { - _byteToHex[i] = (i + 0x100).toString(16).substr(1); - _hexToByte[_byteToHex[i]] = i; - } - - // **`parse()` - Parse a UUID into it's component bytes** - function parse(s, buf, offset) { - var i = (buf && offset) || 0, ii = 0; - - buf = buf || []; - s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { - if (ii < 16) { // Don't overflow! - buf[i + ii++] = _hexToByte[oct]; - } - }); - - // Zero out remaining bytes if string was short - while (ii < 16) { - buf[i + ii++] = 0; - } - - return buf; - } - - // **`unparse()` - Convert UUID byte array (ala parse()) into a string** - function unparse(buf, offset) { - var i = offset || 0, bth = _byteToHex; - return bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]]; - } - - // **`v1()` - Generate time-based UUID** - // - // Inspired by https://github.com/LiosK/UUID.js - // and http://docs.python.org/library/uuid.html - - // random #'s we need to init node and clockseq - var _seedBytes = _rng(); - - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - var _nodeId = [ - _seedBytes[0] | 0x01, - _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] - ]; - - // Per 4.2.2, randomize (14 bit) clockseq - var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; - - // Previous uuid creation time - var _lastMSecs = 0, _lastNSecs = 0; - - // See https://github.com/broofa/node-uuid for API details - function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - - var clockseq = options.clockseq != null ? options.clockseq : _clockseq; - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = options.msecs != null ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = options.nsecs != null ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq == null) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - var node = options.node || _nodeId; - for (var n = 0; n < 6; n++) { - b[i + n] = node[n]; - } - - return buf ? buf : unparse(b); - } - - // **`v4()` - Generate random UUID** - - // See https://github.com/broofa/node-uuid for API details - function v4(options, buf, offset) { - // Deprecated - 'format' argument, as supported in v1.2 - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options == 'binary' ? new BufferClass(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || _rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ii++) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || unparse(rnds); - } - - // Export public API - var uuid = v4; - uuid.v1 = v1; - uuid.v4 = v4; - uuid.parse = parse; - uuid.unparse = unparse; - uuid.BufferClass = BufferClass; - - if (typeof define === 'function' && define.amd) { - // Publish as AMD module - define(function() {return uuid;}); - } else if (typeof(module) != 'undefined' && module.exports) { - // Publish as node.js module - module.exports = uuid; - } else { - // Publish as global (in browsers) - var _previousRoot = _global.uuid; - - // **`noConflict()` - (browser only) to reset global 'uuid' var** - uuid.noConflict = function() { - _global.uuid = _previousRoot; - return uuid; - }; - - _global.uuid = uuid; - } -}).call(this); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/LICENSE deleted file mode 100644 index a4a9aee..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/README.md deleted file mode 100644 index 34c4a85..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/README.md +++ /dev/null @@ -1,4 +0,0 @@ -oauth-sign -========== - -OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/index.js deleted file mode 100644 index bdfd14e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/index.js +++ /dev/null @@ -1,116 +0,0 @@ -var crypto = require('crypto') - , qs = require('querystring') - ; - -function sha1 (key, body) { - return crypto.createHmac('sha1', key).update(body).digest('base64') -} - -function rsa (key, body) { - return crypto.createSign("RSA-SHA1").update(body).sign(key, 'base64'); -} - -function rfc3986 (str) { - return encodeURIComponent(str) - .replace(/!/g,'%21') - .replace(/\*/g,'%2A') - .replace(/\(/g,'%28') - .replace(/\)/g,'%29') - .replace(/'/g,'%27') - ; -} - -// Maps object to bi-dimensional array -// Converts { foo: 'A', bar: [ 'b', 'B' ]} to -// [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ] -function map (obj) { - var key, val, arr = [] - for (key in obj) { - val = obj[key] - if (Array.isArray(val)) - for (var i = 0; i < val.length; i++) - arr.push([key, val[i]]) - else - arr.push([key, val]) - } - return arr -} - -// Compare function for sort -function compare (a, b) { - return a > b ? 1 : a < b ? -1 : 0 -} - -function generateBase (httpMethod, base_uri, params) { - // adapted from https://dev.twitter.com/docs/auth/oauth and - // https://dev.twitter.com/docs/auth/creating-signature - - // Parameter normalization - // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2 - var normalized = map(params) - // 1. First, the name and value of each parameter are encoded - .map(function (p) { - return [ rfc3986(p[0]), rfc3986(p[1] || '') ] - }) - // 2. The parameters are sorted by name, using ascending byte value - // ordering. If two or more parameters share the same name, they - // are sorted by their value. - .sort(function (a, b) { - return compare(a[0], b[0]) || compare(a[1], b[1]) - }) - // 3. The name of each parameter is concatenated to its corresponding - // value using an "=" character (ASCII code 61) as a separator, even - // if the value is empty. - .map(function (p) { return p.join('=') }) - // 4. The sorted name/value pairs are concatenated together into a - // single string by using an "&" character (ASCII code 38) as - // separator. - .join('&') - - var base = [ - rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'), - rfc3986(base_uri), - rfc3986(normalized) - ].join('&') - - return base -} - -function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) { - var base = generateBase(httpMethod, base_uri, params) - var key = [ - consumer_secret || '', - token_secret || '' - ].map(rfc3986).join('&') - - return sha1(key, base) -} - -function rsasign (httpMethod, base_uri, params, private_key, token_secret) { - var base = generateBase(httpMethod, base_uri, params) - var key = private_key || '' - - return rsa(key, base) -} - -function sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) { - var method - - switch (signMethod) { - case 'RSA-SHA1': - method = rsasign - break - case 'HMAC-SHA1': - method = hmacsign - break - default: - throw new Error("Signature method not supported: " + signMethod) - } - - return method.apply(null, [].slice.call(arguments, 1)) -} - -exports.hmacsign = hmacsign -exports.rsasign = rsasign -exports.sign = sign -exports.rfc3986 = rfc3986 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/package.json deleted file mode 100644 index cd6500d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "oauth-sign", - "description": "OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.", - "version": "0.5.0", - "repository": { - "url": "https://github.com/mikeal/oauth-sign" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "scripts": { - "test": "node test.js" - }, - "gitHead": "6fea86c2d4a38e1b3780ad0cc56f00196e5213c1", - "bugs": { - "url": "https://github.com/mikeal/oauth-sign/issues" - }, - "homepage": "https://github.com/mikeal/oauth-sign", - "_id": "oauth-sign@0.5.0", - "_shasum": "d767f5169325620eab2e087ef0c472e773db6461", - "_from": "oauth-sign@~0.5.0", - "_npmVersion": "2.0.0", - "_npmUser": { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - "maintainers": [ - { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - } - ], - "dist": { - "shasum": "d767f5169325620eab2e087ef0c472e773db6461", - "tarball": "http://registry.npmjs.org/oauth-sign/-/oauth-sign-0.5.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.5.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/test.js deleted file mode 100644 index b7a4c80..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/test.js +++ /dev/null @@ -1,63 +0,0 @@ -var hmacsign = require('./index').hmacsign - , assert = require('assert') - , qs = require('querystring') - ; - -// Tests from Twitter documentation https://dev.twitter.com/docs/auth/oauth - -var reqsign = hmacsign('POST', 'https://api.twitter.com/oauth/request_token', - { oauth_callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11' - , oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_timestamp: '1272323042' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98") - -console.log(reqsign) -console.log('8wUi7m5HFQy76nowoCThusfgB+Q=') -assert.equal(reqsign, '8wUi7m5HFQy76nowoCThusfgB+Q=') - -var accsign = hmacsign('POST', 'https://api.twitter.com/oauth/access_token', - { oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc' - , oauth_timestamp: '1272323047' - , oauth_verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA") - -console.log(accsign) -console.log('PUw/dHA4fnlJYM6RhXk5IU/0fCc=') -assert.equal(accsign, 'PUw/dHA4fnlJYM6RhXk5IU/0fCc=') - -var upsign = hmacsign('POST', 'http://api.twitter.com/1/statuses/update.json', - { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g" - , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y" - , oauth_signature_method: "HMAC-SHA1" - , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw" - , oauth_timestamp: "1272325550" - , oauth_version: "1.0" - , status: 'setting up my twitter 私のさえずりを設定する' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA") - -console.log(upsign) -console.log('yOahq5m0YjDDjfjxHaXEsW9D+X0=') -assert.equal(upsign, 'yOahq5m0YjDDjfjxHaXEsW9D+X0=') - -// example in rfc5849 -var params = qs.parse('b5=%3D%253D&a3=a&c%40=&a2=r%20b' + '&' + 'c2&a3=2+q') -params.oauth_consumer_key = '9djdj82h48djs9d2' -params.oauth_token = 'kkk9d7dh3k39sjv7' -params.oauth_nonce = '7d8f3e4a' -params.oauth_signature_method = 'HMAC-SHA1' -params.oauth_timestamp = '137131201' - -var rfc5849sign = hmacsign('POST', 'http://example.com/request', - params, "j49sk3j29djd", "dh893hdasih9") - -console.log(rfc5849sign) -console.log('r6/TJjbCOr97/+UU0NsvSne7s5g=') -assert.equal(rfc5849sign, 'r6/TJjbCOr97/+UU0NsvSne7s5g=') - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.jshintignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.jshintignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.jshintignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.jshintrc b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.jshintrc deleted file mode 100644 index 997b3f7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.jshintrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "node": true, - - "curly": true, - "latedef": true, - "quotmark": true, - "undef": true, - "unused": true, - "trailing": true -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.npmignore deleted file mode 100644 index 7e1574d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov -complexity.md diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.travis.yml deleted file mode 100644 index c891dd0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js - -node_js: - - 0.10 \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CHANGELOG.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CHANGELOG.md deleted file mode 100644 index f5ee8b4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CHANGELOG.md +++ /dev/null @@ -1,68 +0,0 @@ - -## [**2.3.3**](https://github.com/hapijs/qs/issues?milestone=18&state=open) -- [**#59**](https://github.com/hapijs/qs/issues/59) make sure array indexes are >= 0, closes #57 -- [**#58**](https://github.com/hapijs/qs/issues/58) make qs usable for browser loader - -## [**2.3.2**](https://github.com/hapijs/qs/issues?milestone=17&state=closed) -- [**#55**](https://github.com/hapijs/qs/issues/55) allow merging a string into an object - -## [**2.3.1**](https://github.com/hapijs/qs/issues?milestone=16&state=closed) -- [**#52**](https://github.com/hapijs/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError". - -## [**2.3.0**](https://github.com/hapijs/qs/issues?milestone=15&state=closed) -- [**#50**](https://github.com/hapijs/qs/issues/50) add option to omit array indices, closes #46 - -## [**2.2.5**](https://github.com/hapijs/qs/issues?milestone=14&state=closed) -- [**#39**](https://github.com/hapijs/qs/issues/39) Is there an alternative to Buffer.isBuffer? -- [**#49**](https://github.com/hapijs/qs/issues/49) refactor utils.merge, fixes #45 -- [**#41**](https://github.com/hapijs/qs/issues/41) avoid browserifying Buffer, for #39 - -## [**2.2.4**](https://github.com/hapijs/qs/issues?milestone=13&state=closed) -- [**#38**](https://github.com/hapijs/qs/issues/38) how to handle object keys beginning with a number - -## [**2.2.3**](https://github.com/hapijs/qs/issues?milestone=12&state=closed) -- [**#37**](https://github.com/hapijs/qs/issues/37) parser discards first empty value in array -- [**#36**](https://github.com/hapijs/qs/issues/36) Update to lab 4.x - -## [**2.2.2**](https://github.com/hapijs/qs/issues?milestone=11&state=closed) -- [**#33**](https://github.com/hapijs/qs/issues/33) Error when plain object in a value -- [**#34**](https://github.com/hapijs/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty -- [**#24**](https://github.com/hapijs/qs/issues/24) Changelog? Semver? - -## [**2.2.1**](https://github.com/hapijs/qs/issues?milestone=10&state=closed) -- [**#32**](https://github.com/hapijs/qs/issues/32) account for circular references properly, closes #31 -- [**#31**](https://github.com/hapijs/qs/issues/31) qs.parse stackoverflow on circular objects - -## [**2.2.0**](https://github.com/hapijs/qs/issues?milestone=9&state=closed) -- [**#26**](https://github.com/hapijs/qs/issues/26) Don't use Buffer global if it's not present -- [**#30**](https://github.com/hapijs/qs/issues/30) Bug when merging non-object values into arrays -- [**#29**](https://github.com/hapijs/qs/issues/29) Don't call Utils.clone at the top of Utils.merge -- [**#23**](https://github.com/hapijs/qs/issues/23) Ability to not limit parameters? - -## [**2.1.0**](https://github.com/hapijs/qs/issues?milestone=8&state=closed) -- [**#22**](https://github.com/hapijs/qs/issues/22) Enable using a RegExp as delimiter - -## [**2.0.0**](https://github.com/hapijs/qs/issues?milestone=7&state=closed) -- [**#18**](https://github.com/hapijs/qs/issues/18) Why is there arrayLimit? -- [**#20**](https://github.com/hapijs/qs/issues/20) Configurable parametersLimit -- [**#21**](https://github.com/hapijs/qs/issues/21) make all limits optional, for #18, for #20 - -## [**1.2.2**](https://github.com/hapijs/qs/issues?milestone=6&state=closed) -- [**#19**](https://github.com/hapijs/qs/issues/19) Don't overwrite null values - -## [**1.2.1**](https://github.com/hapijs/qs/issues?milestone=5&state=closed) -- [**#16**](https://github.com/hapijs/qs/issues/16) ignore non-string delimiters -- [**#15**](https://github.com/hapijs/qs/issues/15) Close code block - -## [**1.2.0**](https://github.com/hapijs/qs/issues?milestone=4&state=closed) -- [**#12**](https://github.com/hapijs/qs/issues/12) Add optional delim argument -- [**#13**](https://github.com/hapijs/qs/issues/13) fix #11: flattened keys in array are now correctly parsed - -## [**1.1.0**](https://github.com/hapijs/qs/issues?milestone=3&state=closed) -- [**#7**](https://github.com/hapijs/qs/issues/7) Empty values of a POST array disappear after being submitted -- [**#9**](https://github.com/hapijs/qs/issues/9) Should not omit equals signs (=) when value is null -- [**#6**](https://github.com/hapijs/qs/issues/6) Minor grammar fix in README - -## [**1.0.2**](https://github.com/hapijs/qs/issues?milestone=2&state=closed) -- [**#5**](https://github.com/hapijs/qs/issues/5) array holes incorrectly copied into object on large index - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CONTRIBUTING.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CONTRIBUTING.md deleted file mode 100644 index 8928361..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CONTRIBUTING.md +++ /dev/null @@ -1 +0,0 @@ -Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md). diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/LICENSE deleted file mode 100755 index d456948..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2014 Nathan LaFreniere and other contributors. -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. - * The names of any contributors may not 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 HOLDERS AND 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. - - * * * - -The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/Makefile b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/Makefile deleted file mode 100644 index 31cc899..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -test: - @node node_modules/lab/bin/lab -a code -L -test-cov: - @node node_modules/lab/bin/lab -a code -t 100 -L -test-cov-html: - @node node_modules/lab/bin/lab -a code -L -r html -o coverage.html - -.PHONY: test test-cov test-cov-html diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/README.md deleted file mode 100755 index 21bf3fa..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/README.md +++ /dev/null @@ -1,222 +0,0 @@ -# qs - -A querystring parsing and stringifying library with some added security. - -[![Build Status](https://secure.travis-ci.org/hapijs/qs.svg)](http://travis-ci.org/hapijs/qs) - -Lead Maintainer: [Nathan LaFreniere](https://github.com/nlf) - -The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring). - -## Usage - -```javascript -var Qs = require('qs'); - -var obj = Qs.parse('a=c'); // { a: 'c' } -var str = Qs.stringify(obj); // 'a=c' -``` - -### Parsing Objects - -```javascript -Qs.parse(string, [options]); -``` - -**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`. -For example, the string `'foo[bar]=baz'` converts to: - -```javascript -{ - foo: { - bar: 'baz' - } -} -``` - -URI encoded strings work too: - -```javascript -Qs.parse('a%5Bb%5D=c'); -// { a: { b: 'c' } } -``` - -You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`: - -```javascript -{ - foo: { - bar: { - baz: 'foobarbaz' - } - } -} -``` - -By default, when nesting objects **qs** will only parse up to 5 children deep. This means if you attempt to parse a string like -`'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: - -```javascript -{ - a: { - b: { - c: { - d: { - e: { - f: { - '[g][h][i]': 'j' - } - } - } - } - } - } -} -``` - -This depth can be overridden by passing a `depth` option to `Qs.parse(string, [options])`: - -```javascript -Qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); -// { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } } -``` - -The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. - -For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option: - -```javascript -Qs.parse('a=b&c=d', { parameterLimit: 1 }); -// { a: 'b' } -``` - -An optional delimiter can also be passed: - -```javascript -Qs.parse('a=b;c=d', { delimiter: ';' }); -// { a: 'b', c: 'd' } -``` - -Delimiters can be a regular expression too: - -```javascript -Qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ }); -// { a: 'b', c: 'd', e: 'f' } -``` - -### Parsing Arrays - -**qs** can also parse arrays using a similar `[]` notation: - -```javascript -Qs.parse('a[]=b&a[]=c'); -// { a: ['b', 'c'] } -``` - -You may specify an index as well: - -```javascript -Qs.parse('a[1]=c&a[0]=b'); -// { a: ['b', 'c'] } -``` - -Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number -to create an array. When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving -their order: - -```javascript -Qs.parse('a[1]=b&a[15]=c'); -// { a: ['b', 'c'] } -``` - -Note that an empty string is also a value, and will be preserved: - -```javascript -Qs.parse('a[]=&a[]=b'); -// { a: ['', 'b'] } -Qs.parse('a[0]=b&a[1]=&a[2]=c'); -// { a: ['b', '', 'c'] } -``` - -**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will -instead be converted to an object with the index as the key: - -```javascript -Qs.parse('a[100]=b'); -// { a: { '100': 'b' } } -``` - -This limit can be overridden by passing an `arrayLimit` option: - -```javascript -Qs.parse('a[1]=b', { arrayLimit: 0 }); -// { a: { '1': 'b' } } -``` - -To disable array parsing entirely, set `arrayLimit` to `-1`. - -If you mix notations, **qs** will merge the two items into an object: - -```javascript -Qs.parse('a[0]=b&a[b]=c'); -// { a: { '0': 'b', b: 'c' } } -``` - -You can also create arrays of objects: - -```javascript -Qs.parse('a[][b]=c'); -// { a: [{ b: 'c' }] } -``` - -### Stringifying - -```javascript -Qs.stringify(object, [options]); -``` - -When stringifying, **qs** always URI encodes output. Objects are stringified as you would expect: - -```javascript -Qs.stringify({ a: 'b' }); -// 'a=b' -Qs.stringify({ a: { b: 'c' } }); -// 'a%5Bb%5D=c' -``` - -Examples beyond this point will be shown as though the output is not URI encoded for clarity. Please note that the return values in these cases *will* be URI encoded during real usage. - -When arrays are stringified, by default they are given explicit indices: - -```javascript -Qs.stringify({ a: ['b', 'c', 'd'] }); -// 'a[0]=b&a[1]=c&a[2]=d' -``` - -You may override this by setting the `indices` option to `false`: - -```javascript -Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); -// 'a=b&a=c&a=d' -``` - -Empty strings and null values will omit the value, but the equals sign (=) remains in place: - -```javascript -Qs.stringify({ a: '' }); -// 'a=' -``` - -Properties that are set to `undefined` will be omitted entirely: - -```javascript -Qs.stringify({ a: null, b: undefined }); -// 'a=' -``` - -The delimiter may be overridden with stringify as well: - -```javascript -Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }); -// 'a=b;c=d' -``` diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/index.js deleted file mode 100644 index 2291cd8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/'); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/index.js deleted file mode 100755 index 0e09493..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/index.js +++ /dev/null @@ -1,15 +0,0 @@ -// Load modules - -var Stringify = require('./stringify'); -var Parse = require('./parse'); - - -// Declare internals - -var internals = {}; - - -module.exports = { - stringify: Stringify, - parse: Parse -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/parse.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/parse.js deleted file mode 100755 index 4e7d02a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/parse.js +++ /dev/null @@ -1,157 +0,0 @@ -// Load modules - -var Utils = require('./utils'); - - -// Declare internals - -var internals = { - delimiter: '&', - depth: 5, - arrayLimit: 20, - parameterLimit: 1000 -}; - - -internals.parseValues = function (str, options) { - - var obj = {}; - var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit); - - for (var i = 0, il = parts.length; i < il; ++i) { - var part = parts[i]; - var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1; - - if (pos === -1) { - obj[Utils.decode(part)] = ''; - } - else { - var key = Utils.decode(part.slice(0, pos)); - var val = Utils.decode(part.slice(pos + 1)); - - if (!obj.hasOwnProperty(key)) { - obj[key] = val; - } - else { - obj[key] = [].concat(obj[key]).concat(val); - } - } - } - - return obj; -}; - - -internals.parseObject = function (chain, val, options) { - - if (!chain.length) { - return val; - } - - var root = chain.shift(); - - var obj = {}; - if (root === '[]') { - obj = []; - obj = obj.concat(internals.parseObject(chain, val, options)); - } - else { - var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root; - var index = parseInt(cleanRoot, 10); - var indexString = '' + index; - if (!isNaN(index) && - root !== cleanRoot && - indexString === cleanRoot && - index >= 0 && - index <= options.arrayLimit) { - - obj = []; - obj[index] = internals.parseObject(chain, val, options); - } - else { - obj[cleanRoot] = internals.parseObject(chain, val, options); - } - } - - return obj; -}; - - -internals.parseKeys = function (key, val, options) { - - if (!key) { - return; - } - - // The regex chunks - - var parent = /^([^\[\]]*)/; - var child = /(\[[^\[\]]*\])/g; - - // Get the parent - - var segment = parent.exec(key); - - // Don't allow them to overwrite object prototype properties - - if (Object.prototype.hasOwnProperty(segment[1])) { - return; - } - - // Stash the parent if it exists - - var keys = []; - if (segment[1]) { - keys.push(segment[1]); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while ((segment = child.exec(key)) !== null && i < options.depth) { - - ++i; - if (!Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ''))) { - keys.push(segment[1]); - } - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return internals.parseObject(keys, val, options); -}; - - -module.exports = function (str, options) { - - if (str === '' || - str === null || - typeof str === 'undefined') { - - return {}; - } - - options = options || {}; - options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter; - options.depth = typeof options.depth === 'number' ? options.depth : internals.depth; - options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit; - options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit; - - var tempObj = typeof str === 'string' ? internals.parseValues(str, options) : str; - var obj = {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - var newObj = internals.parseKeys(key, tempObj[key], options); - obj = Utils.merge(obj, newObj); - } - - return Utils.compact(obj); -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/stringify.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/stringify.js deleted file mode 100755 index b441104..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/stringify.js +++ /dev/null @@ -1,77 +0,0 @@ -// Load modules - -var Utils = require('./utils'); - - -// Declare internals - -var internals = { - delimiter: '&', - indices: true -}; - - -internals.stringify = function (obj, prefix, options) { - - if (Utils.isBuffer(obj)) { - obj = obj.toString(); - } - else if (obj instanceof Date) { - obj = obj.toISOString(); - } - else if (obj === null) { - obj = ''; - } - - if (typeof obj === 'string' || - typeof obj === 'number' || - typeof obj === 'boolean') { - - return [encodeURIComponent(prefix) + '=' + encodeURIComponent(obj)]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys = Object.keys(obj); - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - if (!options.indices && - Array.isArray(obj)) { - - values = values.concat(internals.stringify(obj[key], prefix, options)); - } - else { - values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', options)); - } - } - - return values; -}; - - -module.exports = function (obj, options) { - - options = options || {}; - var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter; - options.indices = typeof options.indices === 'boolean' ? options.indices : internals.indices; - - var keys = []; - - if (typeof obj !== 'object' || - obj === null) { - - return ''; - } - - var objKeys = Object.keys(obj); - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - keys = keys.concat(internals.stringify(obj[key], key, options)); - } - - return keys.join(delimiter); -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/utils.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/utils.js deleted file mode 100755 index 5240bd5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/utils.js +++ /dev/null @@ -1,132 +0,0 @@ -// Load modules - - -// Declare internals - -var internals = {}; - - -exports.arrayToObject = function (source) { - - var obj = {}; - for (var i = 0, il = source.length; i < il; ++i) { - if (typeof source[i] !== 'undefined') { - - obj[i] = source[i]; - } - } - - return obj; -}; - - -exports.merge = function (target, source) { - - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (Array.isArray(target)) { - target.push(source); - } - else { - target[source] = true; - } - - return target; - } - - if (typeof target !== 'object') { - target = [target].concat(source); - return target; - } - - if (Array.isArray(target) && - !Array.isArray(source)) { - - target = exports.arrayToObject(target); - } - - var keys = Object.keys(source); - for (var k = 0, kl = keys.length; k < kl; ++k) { - var key = keys[k]; - var value = source[key]; - - if (!target[key]) { - target[key] = value; - } - else { - target[key] = exports.merge(target[key], value); - } - } - - return target; -}; - - -exports.decode = function (str) { - - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (e) { - return str; - } -}; - - -exports.compact = function (obj, refs) { - - if (typeof obj !== 'object' || - obj === null) { - - return obj; - } - - refs = refs || []; - var lookup = refs.indexOf(obj); - if (lookup !== -1) { - return refs[lookup]; - } - - refs.push(obj); - - if (Array.isArray(obj)) { - var compacted = []; - - for (var i = 0, il = obj.length; i < il; ++i) { - if (typeof obj[i] !== 'undefined') { - compacted.push(obj[i]); - } - } - - return compacted; - } - - var keys = Object.keys(obj); - for (i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - obj[key] = exports.compact(obj[key], refs); - } - - return obj; -}; - - -exports.isRegExp = function (obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - - -exports.isBuffer = function (obj) { - - if (obj === null || - typeof obj === 'undefined') { - - return false; - } - - return !!(obj.constructor && - obj.constructor.isBuffer && - obj.constructor.isBuffer(obj)); -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/package.json deleted file mode 100644 index 43aef4a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "qs", - "version": "2.3.3", - "description": "A querystring parser that supports nesting and arrays, with a depth limit", - "homepage": "https://github.com/hapijs/qs", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "code": "1.x.x", - "lab": "5.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "repository": { - "type": "git", - "url": "https://github.com/hapijs/qs.git" - }, - "keywords": [ - "querystring", - "qs" - ], - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/hapijs/qs/raw/master/LICENSE" - } - ], - "gitHead": "9250c4cda5102fcf72441445816e6d311fc6813d", - "bugs": { - "url": "https://github.com/hapijs/qs/issues" - }, - "_id": "qs@2.3.3", - "_shasum": "e9e85adbe75da0bbe4c8e0476a086290f863b404", - "_from": "qs@~2.3.1", - "_npmVersion": "2.1.6", - "_nodeVersion": "0.10.32", - "_npmUser": { - "name": "nlf", - "email": "quitlahok@gmail.com" - }, - "maintainers": [ - { - "name": "nlf", - "email": "quitlahok@gmail.com" - }, - { - "name": "hueniverse", - "email": "eran@hueniverse.com" - } - ], - "dist": { - "shasum": "e9e85adbe75da0bbe4c8e0476a086290f863b404", - "tarball": "http://registry.npmjs.org/qs/-/qs-2.3.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/parse.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/parse.js deleted file mode 100755 index 6c20cc1..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/parse.js +++ /dev/null @@ -1,413 +0,0 @@ -/* eslint no-extend-native:0 */ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Qs = require('../'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('parse()', function () { - - it('parses a simple string', function (done) { - - expect(Qs.parse('0=foo')).to.deep.equal({ '0': 'foo' }); - expect(Qs.parse('foo=c++')).to.deep.equal({ foo: 'c ' }); - expect(Qs.parse('a[>=]=23')).to.deep.equal({ a: { '>=': '23' } }); - expect(Qs.parse('a[<=>]==23')).to.deep.equal({ a: { '<=>': '=23' } }); - expect(Qs.parse('a[==]=23')).to.deep.equal({ a: { '==': '23' } }); - expect(Qs.parse('foo')).to.deep.equal({ foo: '' }); - expect(Qs.parse('foo=bar')).to.deep.equal({ foo: 'bar' }); - expect(Qs.parse(' foo = bar = baz ')).to.deep.equal({ ' foo ': ' bar = baz ' }); - expect(Qs.parse('foo=bar=baz')).to.deep.equal({ foo: 'bar=baz' }); - expect(Qs.parse('foo=bar&bar=baz')).to.deep.equal({ foo: 'bar', bar: 'baz' }); - expect(Qs.parse('foo=bar&baz')).to.deep.equal({ foo: 'bar', baz: '' }); - expect(Qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World')).to.deep.equal({ - cht: 'p3', - chd: 't:60,40', - chs: '250x100', - chl: 'Hello|World' - }); - done(); - }); - - it('parses a single nested string', function (done) { - - expect(Qs.parse('a[b]=c')).to.deep.equal({ a: { b: 'c' } }); - done(); - }); - - it('parses a double nested string', function (done) { - - expect(Qs.parse('a[b][c]=d')).to.deep.equal({ a: { b: { c: 'd' } } }); - done(); - }); - - it('defaults to a depth of 5', function (done) { - - expect(Qs.parse('a[b][c][d][e][f][g][h]=i')).to.deep.equal({ a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } }); - done(); - }); - - it('only parses one level when depth = 1', function (done) { - - expect(Qs.parse('a[b][c]=d', { depth: 1 })).to.deep.equal({ a: { b: { '[c]': 'd' } } }); - expect(Qs.parse('a[b][c][d]=e', { depth: 1 })).to.deep.equal({ a: { b: { '[c][d]': 'e' } } }); - done(); - }); - - it('parses a simple array', function (done) { - - expect(Qs.parse('a=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - done(); - }); - - it('parses an explicit array', function (done) { - - expect(Qs.parse('a[]=b')).to.deep.equal({ a: ['b'] }); - expect(Qs.parse('a[]=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[]=b&a[]=c&a[]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }); - done(); - }); - - it('parses a mix of simple and explicit arrays', function (done) { - - expect(Qs.parse('a=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[0]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a=b&a[0]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[1]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a=b&a[1]=c')).to.deep.equal({ a: ['b', 'c'] }); - done(); - }); - - it('parses a nested array', function (done) { - - expect(Qs.parse('a[b][]=c&a[b][]=d')).to.deep.equal({ a: { b: ['c', 'd'] } }); - expect(Qs.parse('a[>=]=25')).to.deep.equal({ a: { '>=': '25' } }); - done(); - }); - - it('allows to specify array indices', function (done) { - - expect(Qs.parse('a[1]=c&a[0]=b&a[2]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }); - expect(Qs.parse('a[1]=c&a[0]=b')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[1]=c')).to.deep.equal({ a: ['c'] }); - done(); - }); - - it('limits specific array indices to 20', function (done) { - - expect(Qs.parse('a[20]=a')).to.deep.equal({ a: ['a'] }); - expect(Qs.parse('a[21]=a')).to.deep.equal({ a: { '21': 'a' } }); - done(); - }); - - it('supports keys that begin with a number', function (done) { - - expect(Qs.parse('a[12b]=c')).to.deep.equal({ a: { '12b': 'c' } }); - done(); - }); - - it('supports encoded = signs', function (done) { - - expect(Qs.parse('he%3Dllo=th%3Dere')).to.deep.equal({ 'he=llo': 'th=ere' }); - done(); - }); - - it('is ok with url encoded strings', function (done) { - - expect(Qs.parse('a[b%20c]=d')).to.deep.equal({ a: { 'b c': 'd' } }); - expect(Qs.parse('a[b]=c%20d')).to.deep.equal({ a: { b: 'c d' } }); - done(); - }); - - it('allows brackets in the value', function (done) { - - expect(Qs.parse('pets=["tobi"]')).to.deep.equal({ pets: '["tobi"]' }); - expect(Qs.parse('operators=[">=", "<="]')).to.deep.equal({ operators: '[">=", "<="]' }); - done(); - }); - - it('allows empty values', function (done) { - - expect(Qs.parse('')).to.deep.equal({}); - expect(Qs.parse(null)).to.deep.equal({}); - expect(Qs.parse(undefined)).to.deep.equal({}); - done(); - }); - - it('transforms arrays to objects', function (done) { - - expect(Qs.parse('foo[0]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }); - expect(Qs.parse('foo[bad]=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo[bad]=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo[]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }); - expect(Qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } }); - expect(Qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb')).to.deep.equal({foo: [ {a: 'a', b: 'b'}, {a: 'aa', b: 'bb'} ]}); - done(); - }); - - it('can add keys to objects', function (done) { - - expect(Qs.parse('a[b]=c&a=d')).to.deep.equal({ a: { b: 'c', d: true } }); - done(); - }); - - it('correctly prunes undefined values when converting an array to an object', function (done) { - - expect(Qs.parse('a[2]=b&a[99999999]=c')).to.deep.equal({ a: { '2': 'b', '99999999': 'c' } }); - done(); - }); - - it('supports malformed uri characters', function (done) { - - expect(Qs.parse('{%:%}')).to.deep.equal({ '{%:%}': '' }); - expect(Qs.parse('foo=%:%}')).to.deep.equal({ foo: '%:%}' }); - done(); - }); - - it('doesn\'t produce empty keys', function (done) { - - expect(Qs.parse('_r=1&')).to.deep.equal({ '_r': '1' }); - done(); - }); - - it('cannot override prototypes', function (done) { - - var obj = Qs.parse('toString=bad&bad[toString]=bad&constructor=bad'); - expect(typeof obj.toString).to.equal('function'); - expect(typeof obj.bad.toString).to.equal('function'); - expect(typeof obj.constructor).to.equal('function'); - done(); - }); - - it('cannot access Object prototype', function (done) { - - Qs.parse('constructor[prototype][bad]=bad'); - Qs.parse('bad[constructor][prototype][bad]=bad'); - expect(typeof Object.prototype.bad).to.equal('undefined'); - done(); - }); - - it('parses arrays of objects', function (done) { - - expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - expect(Qs.parse('a[0][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - done(); - }); - - it('allows for empty strings in arrays', function (done) { - - expect(Qs.parse('a[]=b&a[]=&a[]=c')).to.deep.equal({ a: ['b', '', 'c'] }); - expect(Qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]=')).to.deep.equal({ a: ['b', '', 'c', ''] }); - expect(Qs.parse('a[]=&a[]=b&a[]=c')).to.deep.equal({ a: ['', 'b', 'c'] }); - done(); - }); - - it('compacts sparse arrays', function (done) { - - expect(Qs.parse('a[10]=1&a[2]=2')).to.deep.equal({ a: ['2', '1'] }); - done(); - }); - - it('parses semi-parsed strings', function (done) { - - expect(Qs.parse({ 'a[b]': 'c' })).to.deep.equal({ a: { b: 'c' } }); - expect(Qs.parse({ 'a[b]': 'c', 'a[d]': 'e' })).to.deep.equal({ a: { b: 'c', d: 'e' } }); - done(); - }); - - it('parses buffers correctly', function (done) { - - var b = new Buffer('test'); - expect(Qs.parse({ a: b })).to.deep.equal({ a: b }); - done(); - }); - - it('continues parsing when no parent is found', function (done) { - - expect(Qs.parse('[]&a=b')).to.deep.equal({ '0': '', a: 'b' }); - expect(Qs.parse('[foo]=bar')).to.deep.equal({ foo: 'bar' }); - done(); - }); - - it('does not error when parsing a very long array', function (done) { - - var str = 'a[]=a'; - while (Buffer.byteLength(str) < 128 * 1024) { - str += '&' + str; - } - - expect(function () { - - Qs.parse(str); - }).to.not.throw(); - - done(); - }); - - it('should not throw when a native prototype has an enumerable property', { parallel: false }, function (done) { - - Object.prototype.crash = ''; - Array.prototype.crash = ''; - expect(Qs.parse.bind(null, 'a=b')).to.not.throw(); - expect(Qs.parse('a=b')).to.deep.equal({ a: 'b' }); - expect(Qs.parse.bind(null, 'a[][b]=c')).to.not.throw(); - expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - delete Object.prototype.crash; - delete Array.prototype.crash; - done(); - }); - - it('parses a string with an alternative string delimiter', function (done) { - - expect(Qs.parse('a=b;c=d', { delimiter: ';' })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('parses a string with an alternative RegExp delimiter', function (done) { - - expect(Qs.parse('a=b; c=d', { delimiter: /[;,] */ })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('does not use non-splittable objects as delimiters', function (done) { - - expect(Qs.parse('a=b&c=d', { delimiter: true })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('allows overriding parameter limit', function (done) { - - expect(Qs.parse('a=b&c=d', { parameterLimit: 1 })).to.deep.equal({ a: 'b' }); - done(); - }); - - it('allows setting the parameter limit to Infinity', function (done) { - - expect(Qs.parse('a=b&c=d', { parameterLimit: Infinity })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('allows overriding array limit', function (done) { - - expect(Qs.parse('a[0]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '0': 'b' } }); - expect(Qs.parse('a[-1]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '-1': 'b' } }); - expect(Qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 })).to.deep.equal({ a: { '0': 'b', '1': 'c' } }); - done(); - }); - - it('parses an object', function (done) { - - var input = { - 'user[name]': {'pop[bob]': 3}, - 'user[email]': null - }; - - var expected = { - 'user': { - 'name': {'pop[bob]': 3}, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected); - done(); - }); - - it('parses an object and not child values', function (done) { - - var input = { - 'user[name]': {'pop[bob]': { 'test': 3 }}, - 'user[email]': null - }; - - var expected = { - 'user': { - 'name': {'pop[bob]': { 'test': 3 }}, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected); - done(); - }); - - it('does not blow up when Buffer global is missing', function (done) { - - var tempBuffer = global.Buffer; - delete global.Buffer; - var result = Qs.parse('a=b&c=d'); - global.Buffer = tempBuffer; - expect(result).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('does not crash when using invalid dot notation', function (done) { - - expect(Qs.parse('roomInfoList[0].childrenAges[0]=15&roomInfoList[0].numberOfAdults=2')).to.deep.equal({ roomInfoList: [['15', '2']] }); - done(); - }); - - it('does not crash when parsing circular references', function (done) { - - var a = {}; - a.b = a; - - var parsed; - - expect(function () { - - parsed = Qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a }); - }).to.not.throw(); - - expect(parsed).to.contain('foo'); - expect(parsed.foo).to.contain('bar', 'baz'); - expect(parsed.foo.bar).to.equal('baz'); - expect(parsed.foo.baz).to.deep.equal(a); - done(); - }); - - it('parses plain objects correctly', function (done) { - - var a = Object.create(null); - a.b = 'c'; - - expect(Qs.parse(a)).to.deep.equal({ b: 'c' }); - var result = Qs.parse({ a: a }); - expect(result).to.contain('a'); - expect(result.a).to.deep.equal(a); - done(); - }); - - it('parses dates correctly', function (done) { - - var now = new Date(); - expect(Qs.parse({ a: now })).to.deep.equal({ a: now }); - done(); - }); - - it('parses regular expressions correctly', function (done) { - - var re = /^test$/; - expect(Qs.parse({ a: re })).to.deep.equal({ a: re }); - done(); - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/stringify.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/stringify.js deleted file mode 100755 index 75e397a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/stringify.js +++ /dev/null @@ -1,179 +0,0 @@ -/* eslint no-extend-native:0 */ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Qs = require('../'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('stringify()', function () { - - it('stringifies a querystring object', function (done) { - - expect(Qs.stringify({ a: 'b' })).to.equal('a=b'); - expect(Qs.stringify({ a: 1 })).to.equal('a=1'); - expect(Qs.stringify({ a: 1, b: 2 })).to.equal('a=1&b=2'); - done(); - }); - - it('stringifies a nested object', function (done) { - - expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c'); - expect(Qs.stringify({ a: { b: { c: { d: 'e' } } } })).to.equal('a%5Bb%5D%5Bc%5D%5Bd%5D=e'); - done(); - }); - - it('stringifies an array value', function (done) { - - expect(Qs.stringify({ a: ['b', 'c', 'd'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d'); - done(); - }); - - it('omits array indices when asked', function (done) { - - expect(Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false })).to.equal('a=b&a=c&a=d'); - done(); - }); - - it('stringifies a nested array value', function (done) { - - expect(Qs.stringify({ a: { b: ['c', 'd'] } })).to.equal('a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d'); - done(); - }); - - it('stringifies an object inside an array', function (done) { - - expect(Qs.stringify({ a: [{ b: 'c' }] })).to.equal('a%5B0%5D%5Bb%5D=c'); - expect(Qs.stringify({ a: [{ b: { c: [1] } }] })).to.equal('a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1'); - done(); - }); - - it('does not omit object keys when indices = false', function (done) { - - expect(Qs.stringify({ a: [{ b: 'c' }] }, { indices: false })).to.equal('a%5Bb%5D=c'); - done(); - }); - - it('stringifies a complicated object', function (done) { - - expect(Qs.stringify({ a: { b: 'c', d: 'e' } })).to.equal('a%5Bb%5D=c&a%5Bd%5D=e'); - done(); - }); - - it('stringifies an empty value', function (done) { - - expect(Qs.stringify({ a: '' })).to.equal('a='); - expect(Qs.stringify({ a: '', b: '' })).to.equal('a=&b='); - expect(Qs.stringify({ a: null })).to.equal('a='); - expect(Qs.stringify({ a: { b: null } })).to.equal('a%5Bb%5D='); - done(); - }); - - it('stringifies an empty object', function (done) { - - var obj = Object.create(null); - obj.a = 'b'; - expect(Qs.stringify(obj)).to.equal('a=b'); - done(); - }); - - it('returns an empty string for invalid input', function (done) { - - expect(Qs.stringify(undefined)).to.equal(''); - expect(Qs.stringify(false)).to.equal(''); - expect(Qs.stringify(null)).to.equal(''); - expect(Qs.stringify('')).to.equal(''); - done(); - }); - - it('stringifies an object with an empty object as a child', function (done) { - - var obj = { - a: Object.create(null) - }; - - obj.a.b = 'c'; - expect(Qs.stringify(obj)).to.equal('a%5Bb%5D=c'); - done(); - }); - - it('drops keys with a value of undefined', function (done) { - - expect(Qs.stringify({ a: undefined })).to.equal(''); - expect(Qs.stringify({ a: { b: undefined, c: null } })).to.equal('a%5Bc%5D='); - done(); - }); - - it('url encodes values', function (done) { - - expect(Qs.stringify({ a: 'b c' })).to.equal('a=b%20c'); - done(); - }); - - it('stringifies a date', function (done) { - - var now = new Date(); - var str = 'a=' + encodeURIComponent(now.toISOString()); - expect(Qs.stringify({ a: now })).to.equal(str); - done(); - }); - - it('stringifies the weird object from qs', function (done) { - - expect(Qs.stringify({ 'my weird field': 'q1!2"\'w$5&7/z8)?' })).to.equal('my%20weird%20field=q1!2%22\'w%245%267%2Fz8)%3F'); - done(); - }); - - it('skips properties that are part of the object prototype', function (done) { - - Object.prototype.crash = 'test'; - expect(Qs.stringify({ a: 'b'})).to.equal('a=b'); - expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c'); - delete Object.prototype.crash; - done(); - }); - - it('stringifies boolean values', function (done) { - - expect(Qs.stringify({ a: true })).to.equal('a=true'); - expect(Qs.stringify({ a: { b: true } })).to.equal('a%5Bb%5D=true'); - expect(Qs.stringify({ b: false })).to.equal('b=false'); - expect(Qs.stringify({ b: { c: false } })).to.equal('b%5Bc%5D=false'); - done(); - }); - - it('stringifies buffer values', function (done) { - - expect(Qs.stringify({ a: new Buffer('test') })).to.equal('a=test'); - expect(Qs.stringify({ a: { b: new Buffer('test') } })).to.equal('a%5Bb%5D=test'); - done(); - }); - - it('stringifies an object using an alternative delimiter', function (done) { - - expect(Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })).to.equal('a=b;c=d'); - done(); - }); - - it('doesn\'t blow up when Buffer global is missing', function (done) { - - var tempBuffer = global.Buffer; - delete global.Buffer; - expect(Qs.stringify({ a: 'b', c: 'd' })).to.equal('a=b&c=d'); - global.Buffer = tempBuffer; - done(); - }); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/.npmignore deleted file mode 100644 index 7dccd97..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/.npmignore +++ /dev/null @@ -1,15 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -pids -logs -results - -node_modules -npm-debug.log \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/LICENSE.txt b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/LICENSE.txt deleted file mode 100644 index eac1881..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/LICENSE.txt +++ /dev/null @@ -1,4 +0,0 @@ -Copyright 2012 Michael Hart (michael.hart.au@gmail.com) - -This project is free software released under the MIT license: -http://www.opensource.org/licenses/mit-license.php diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/README.md deleted file mode 100644 index 32fc982..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# Decode streams into strings The Right Way(tm) - -```javascript -var fs = require('fs') -var zlib = require('zlib') -var strs = require('stringstream') - -var utf8Stream = fs.createReadStream('massiveLogFile.gz') - .pipe(zlib.createGunzip()) - .pipe(strs('utf8')) -``` - -No need to deal with `setEncoding()` weirdness, just compose streams -like they were supposed to be! - -Handles input and output encoding: - -```javascript -// Stream from utf8 to hex to base64... Why not, ay. -var hex64Stream = fs.createReadStream('myFile') - .pipe(strs('utf8', 'hex')) - .pipe(strs('hex', 'base64')) -``` - -Also deals with `base64` output correctly by aligning each emitted data -chunk so that there are no dangling `=` characters: - -```javascript -var stream = fs.createReadStream('myFile').pipe(strs('base64')) - -var base64Str = '' - -stream.on('data', function(data) { base64Str += data }) -stream.on('end', function() { - console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding() - console.log('Original file is: ' + new Buffer(base64Str, 'base64')) -}) -``` diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/example.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/example.js deleted file mode 100644 index f82b85e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/example.js +++ /dev/null @@ -1,27 +0,0 @@ -var fs = require('fs') -var zlib = require('zlib') -var strs = require('stringstream') - -var utf8Stream = fs.createReadStream('massiveLogFile.gz') - .pipe(zlib.createGunzip()) - .pipe(strs('utf8')) - -utf8Stream.pipe(process.stdout) - -// Stream from utf8 to hex to base64... Why not, ay. -var hex64Stream = fs.createReadStream('myFile') - .pipe(strs('utf8', 'hex')) - .pipe(strs('hex', 'base64')) - -hex64Stream.pipe(process.stdout) - -// Deals with base64 correctly by aligning chunks -var stream = fs.createReadStream('myFile').pipe(strs('base64')) - -var base64Str = '' - -stream.on('data', function(data) { base64Str += data }) -stream.on('end', function() { - console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding() - console.log('Original file is: ' + new Buffer(base64Str, 'base64')) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/package.json deleted file mode 100644 index f9caf4b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "stringstream", - "version": "0.0.4", - "description": "Encode and decode streams into string streams", - "author": { - "name": "Michael Hart", - "email": "michael.hart.au@gmail.com", - "url": "http://github.com/mhart" - }, - "main": "stringstream.js", - "keywords": [ - "string", - "stream", - "base64", - "gzip" - ], - "repository": { - "type": "git", - "url": "https://github.com/mhart/StringStream.git" - }, - "license": "MIT", - "readme": "# Decode streams into strings The Right Way(tm)\n\n```javascript\nvar fs = require('fs')\nvar zlib = require('zlib')\nvar strs = require('stringstream')\n\nvar utf8Stream = fs.createReadStream('massiveLogFile.gz')\n .pipe(zlib.createGunzip())\n .pipe(strs('utf8'))\n```\n\nNo need to deal with `setEncoding()` weirdness, just compose streams\nlike they were supposed to be!\n\nHandles input and output encoding:\n\n```javascript\n// Stream from utf8 to hex to base64... Why not, ay.\nvar hex64Stream = fs.createReadStream('myFile')\n .pipe(strs('utf8', 'hex'))\n .pipe(strs('hex', 'base64'))\n```\n\nAlso deals with `base64` output correctly by aligning each emitted data\nchunk so that there are no dangling `=` characters:\n\n```javascript\nvar stream = fs.createReadStream('myFile').pipe(strs('base64'))\n\nvar base64Str = ''\n\nstream.on('data', function(data) { base64Str += data })\nstream.on('end', function() {\n console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding()\n console.log('Original file is: ' + new Buffer(base64Str, 'base64'))\n})\n```\n", - "readmeFilename": "README.md", - "_id": "stringstream@0.0.4", - "dist": { - "shasum": "0f0e3423f942960b5692ac324a57dd093bc41a92", - "tarball": "http://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz" - }, - "_npmVersion": "1.2.0", - "_npmUser": { - "name": "hichaelmart", - "email": "michael.hart.au@gmail.com" - }, - "maintainers": [ - { - "name": "hichaelmart", - "email": "michael.hart.au@gmail.com" - } - ], - "directories": {}, - "_shasum": "0f0e3423f942960b5692ac324a57dd093bc41a92", - "_from": "stringstream@~0.0.4", - "_resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz", - "bugs": { - "url": "https://github.com/mhart/StringStream/issues" - }, - "homepage": "https://github.com/mhart/StringStream" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/stringstream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/stringstream.js deleted file mode 100644 index 4ece127..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/stringstream.js +++ /dev/null @@ -1,102 +0,0 @@ -var util = require('util') -var Stream = require('stream') -var StringDecoder = require('string_decoder').StringDecoder - -module.exports = StringStream -module.exports.AlignedStringDecoder = AlignedStringDecoder - -function StringStream(from, to) { - if (!(this instanceof StringStream)) return new StringStream(from, to) - - Stream.call(this) - - if (from == null) from = 'utf8' - - this.readable = this.writable = true - this.paused = false - this.toEncoding = (to == null ? from : to) - this.fromEncoding = (to == null ? '' : from) - this.decoder = new AlignedStringDecoder(this.toEncoding) -} -util.inherits(StringStream, Stream) - -StringStream.prototype.write = function(data) { - if (!this.writable) { - var err = new Error('stream not writable') - err.code = 'EPIPE' - this.emit('error', err) - return false - } - if (this.fromEncoding) { - if (Buffer.isBuffer(data)) data = data.toString() - data = new Buffer(data, this.fromEncoding) - } - var string = this.decoder.write(data) - if (string.length) this.emit('data', string) - return !this.paused -} - -StringStream.prototype.flush = function() { - if (this.decoder.flush) { - var string = this.decoder.flush() - if (string.length) this.emit('data', string) - } -} - -StringStream.prototype.end = function() { - if (!this.writable && !this.readable) return - this.flush() - this.emit('end') - this.writable = this.readable = false - this.destroy() -} - -StringStream.prototype.destroy = function() { - this.decoder = null - this.writable = this.readable = false - this.emit('close') -} - -StringStream.prototype.pause = function() { - this.paused = true -} - -StringStream.prototype.resume = function () { - if (this.paused) this.emit('drain') - this.paused = false -} - -function AlignedStringDecoder(encoding) { - StringDecoder.call(this, encoding) - - switch (this.encoding) { - case 'base64': - this.write = alignedWrite - this.alignedBuffer = new Buffer(3) - this.alignedBytes = 0 - break - } -} -util.inherits(AlignedStringDecoder, StringDecoder) - -AlignedStringDecoder.prototype.flush = function() { - if (!this.alignedBuffer || !this.alignedBytes) return '' - var leftover = this.alignedBuffer.toString(this.encoding, 0, this.alignedBytes) - this.alignedBytes = 0 - return leftover -} - -function alignedWrite(buffer) { - var rem = (this.alignedBytes + buffer.length) % this.alignedBuffer.length - if (!rem && !this.alignedBytes) return buffer.toString(this.encoding) - - var returnBuffer = new Buffer(this.alignedBytes + buffer.length - rem) - - this.alignedBuffer.copy(returnBuffer, 0, 0, this.alignedBytes) - buffer.copy(returnBuffer, this.alignedBytes, 0, buffer.length - rem) - - buffer.copy(this.alignedBuffer, 0, buffer.length - rem, buffer.length) - this.alignedBytes = rem - - return returnBuffer.toString(this.encoding) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.jshintrc b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.jshintrc deleted file mode 100644 index fb11913..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.jshintrc +++ /dev/null @@ -1,70 +0,0 @@ -{ - "passfail" : false, - "maxerr" : 100, - - "browser" : false, - "node" : true, - "rhino" : false, - "couch" : false, - "wsh" : false, - - "jquery" : false, - "prototypejs" : false, - "mootools" : false, - "dojo" : false, - - "debug" : false, - "devel" : false, - - "esnext" : true, - "strict" : true, - "globalstrict" : true, - - "asi" : false, - "laxbreak" : false, - "bitwise" : true, - "boss" : false, - "curly" : true, - "eqeqeq" : false, - "eqnull" : true, - "evil" : false, - "expr" : false, - "forin" : false, - "immed" : true, - "lastsemic" : true, - "latedef" : false, - "loopfunc" : false, - "noarg" : true, - "regexp" : false, - "regexdash" : false, - "scripturl" : false, - "shadow" : false, - "supernew" : false, - "undef" : true, - "unused" : true, - - "newcap" : true, - "noempty" : true, - "nonew" : true, - "nomen" : false, - "onevar" : false, - "onecase" : true, - "plusplus" : false, - "proto" : false, - "sub" : true, - "trailing" : true, - "white" : false, - - "predef": [ - "describe", - "it", - "before", - "beforeEach", - "after", - "afterEach", - "expect", - "setTimeout", - "clearTimeout" - ], - "maxlen": 0 -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.npmignore deleted file mode 100644 index 54efff9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules/ -.*.sw[nmop] -npm-debug.log diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.travis.yml deleted file mode 100644 index 5d89265..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js -node_js: -- "0.10" -- "0.11" -matrix: - fast_finish: true - allow_failures: - - node_js: 0.11 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/LICENSE deleted file mode 100644 index 3fac4c8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/LICENSE +++ /dev/null @@ -1,78 +0,0 @@ -Copyright GoInstant, Inc. and other contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -The following exceptions apply: - -=== - -`pubSufTest()` of generate-pubsuffix.js is in the public domain. - - // Any copyright is dedicated to the Public Domain. - // http://creativecommons.org/publicdomain/zero/1.0/ - -=== - -`public-suffix.txt` was obtained from - -via . - -That file contains the usual Mozilla triple-license, for which this project uses it -under the terms of the MPL 1.1: - - // ***** BEGIN LICENSE BLOCK ***** - // Version: MPL 1.1/GPL 2.0/LGPL 2.1 - // - // The contents of this file are subject to the Mozilla Public License Version - // 1.1 (the "License"); you may not use this file except in compliance with - // the License. You may obtain a copy of the License at - // http://www.mozilla.org/MPL/ - // - // Software distributed under the License is distributed on an "AS IS" basis, - // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - // for the specific language governing rights and limitations under the - // License. - // - // The Original Code is the Public Suffix List. - // - // The Initial Developer of the Original Code is - // Jo Hermans . - // Portions created by the Initial Developer are Copyright (C) 2007 - // the Initial Developer. All Rights Reserved. - // - // Contributor(s): - // Ruben Arakelyan - // Gervase Markham - // Pamela Greene - // David Triendl - // Jothan Frakes - // The kind representatives of many TLD registries - // - // Alternatively, the contents of this file may be used under the terms of - // either the GNU General Public License Version 2 or later (the "GPL"), or - // the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - // in which case the provisions of the GPL or the LGPL are applicable instead - // of those above. If you wish to allow use of your version of this file only - // under the terms of either the GPL or the LGPL, and not to allow others to - // use your version of this file under the terms of the MPL, indicate your - // decision by deleting the provisions above and replace them with the notice - // and other provisions required by the GPL or the LGPL. If you do not delete - // the provisions above, a recipient may use your version of this file under - // the terms of any one of the MPL, the GPL or the LGPL. - // - // ***** END LICENSE BLOCK ***** diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/README.md deleted file mode 100644 index 9e6caee..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/README.md +++ /dev/null @@ -1,412 +0,0 @@ -[RFC6265](http://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js - -![Tough Cookie](http://www.goinstant.com.s3.amazonaws.com/tough-cookie.jpg) - -[![Build Status](https://travis-ci.org/goinstant/node-cookie.png?branch=master)](https://travis-ci.org/goinstant/node-cookie) - -[![NPM Stats](https://nodei.co/npm/tough-cookie.png?downloads=true&stars=true)](https://npmjs.org/package/tough-cookie) -![NPM Downloads](https://nodei.co/npm-dl/tough-cookie.png?months=9) - -# Synopsis - -``` javascript -var tough = require('tough-cookie'); // note: not 'cookie', 'cookies' or 'node-cookie' -var Cookie = tough.Cookie; -var cookie = Cookie.parse(header); -cookie.value = 'somethingdifferent'; -header = cookie.toString(); - -var cookiejar = new tough.CookieJar(); -cookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb); -// ... -cookiejar.getCookies('http://example.com/otherpath',function(err,cookies) { - res.headers['cookie'] = cookies.join('; '); -}); -``` - -# Installation - -It's _so_ easy! - -`npm install tough-cookie` - -Requires `punycode`, which should get installed automatically for you. Note that node.js v0.6.2+ bundles punycode by default. - -Why the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken. - -# API - -tough -===== - -Functions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be "bound". - -parseDate(string[,strict]) ------------------ - -Parse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. If strict is set to true then leading/trailing non-seperator characters around the time part will cause the parsing to fail (e.g. "Thu, 01 Jan 1970 00:00:010 GMT" has an extra trailing zero but Chrome, an assumedly RFC-compliant browser, treats this as valid). - -formatDate(date) ----------------- - -Format a Date into a RFC1123 string (the RFC6265-recommended format). - -canonicalDomain(str) --------------------- - -Transforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects). - -domainMatch(str,domStr[,canonicalize=true]) -------------------------------------------- - -Answers "does this real domain match the domain in a cookie?". The `str` is the "current" domain-name and the `domStr` is the "cookie" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match". - -The `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not. - -defaultPath(path) ------------------ - -Given a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC. - -The `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output. - -pathMatch(reqPath,cookiePath) ------------------------------ - -Answers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4. Returns a boolean. - -This is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`. - -parse(header[,strict=false]) ----------------------------- - -alias for `Cookie.parse(header[,strict])` - -fromJSON(string) ----------------- - -alias for `Cookie.fromJSON(string)` - -getPublicSuffix(hostname) -------------------------- - -Returns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it. - -For example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`. - -For further information, see http://publicsuffix.org/. This module derives its list from that site. - -cookieCompare(a,b) ------------------- - -For use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). Longest `.path`s go first, then sorted oldest to youngest. - -``` javascript -var cookies = [ /* unsorted array of Cookie objects */ ]; -cookies = cookies.sort(cookieCompare); -``` - -permuteDomain(domain) ---------------------- - -Generates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores. - - -permutePath(path) ------------------ - -Generates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores. - -Cookie -====== - -Cookie.parse(header[,strict=false]) ------------------------------------ - -Parses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed. If in strict mode, returns `undefined` if the cookie doesn't follow the guidelines in section 4 of RFC6265. Generally speaking, strict mode can be used to validate your own generated Set-Cookie headers, but acting as a client you want to be lenient and leave strict mode off. - -Here's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response: - -``` javascript -if (res.headers['set-cookie'] instanceof Array) - cookies = res.headers['set-cookie'].map(function (c) { return (Cookie.parse(c)); }); -else - cookies = [Cookie.parse(res.headers['set-cookie'])]; -``` - -Cookie.fromJSON(string) ------------------------ - -Convert a JSON string to a `Cookie` object. Does a `JSON.parse()` and converts the `.created`, `.lastAccessed` and `.expires` properties into `Date` objects. - -Properties -========== - - * _key_ - string - the name or key of the cookie (default "") - * _value_ - string - the value of the cookie (default "") - * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `"Infinity"`). See `setExpires()` - * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `"Infinity"` and `"-Infinity"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()` - * _domain_ - string - the `Domain=` attribute of the cookie - * _path_ - string - the `Path=` of the cookie - * _secure_ - boolean - the `Secure` cookie flag - * _httpOnly_ - boolean - the `HttpOnly` cookie flag - * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside) - -After a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes: - - * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied) - * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one. - * _created_ - `Date` - when this cookie was added to the jar - * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute. - -Construction([{options}]) ------------- - -Receives an options object that can contain any Cookie properties, uses the default for unspecified properties. - -.toString() ------------ - -encode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`. - -.cookieString() ---------------- - -encode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '='). - -.setExpires(String) -------------------- - -sets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `"Infinity"` (a string) is set. - -.setMaxAge(number) -------------------- - -sets the maxAge in seconds. Coerces `-Infinity` to `"-Infinity"` and `Infinity` to `"Infinity"` so it JSON serializes correctly. - -.expiryTime([now=Date.now()]) ------------------------------ - -.expiryDate([now=Date.now()]) ------------------------------ - -expiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds. - -Max-Age takes precedence over Expires (as per the RFC). The `.created` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute. - -If Expires (`.expires`) is set, that's returned. - -Otherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for "Tue, 19 Jan 2038 03:14:07 GMT" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents). - -.TTL([now=Date.now()]) ---------- - -compute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply. - -The "number" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned. - -.canonicalizedDoman() ---------------------- - -.cdomain() ----------- - -return the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters. - -.validate() ------------ - -Status: *IN PROGRESS*. Works for a few things, but is by no means comprehensive. - -validates cookie attributes for semantic correctness. Useful for "lint" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct: - -``` javascript -if (cookie.validate() === true) { - // it's tasty -} else { - // yuck! -} -``` - -CookieJar -========= - -Construction([store = new MemoryCookieStore()][, rejectPublicSuffixes]) ------------- - -Simply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used. - - -Attributes ----------- - - * _rejectPublicSuffixes_ - boolean - reject cookies with domains like "com" and "co.uk" (default: `true`) - -Since eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods. - -.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie)) -------------------------------------------------------------------- - -Attempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.created`, `.lastAccessed` and `.hostOnly` properties. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _strict_ - boolean - default `false` - perform extra checks - * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. CookieStore errors aren't ignored by this option. - -As per the RFC, the `.hostOnly` property is set if there was no "Domain=" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual). - -.setCookieSync(cookieOrString, currentUrl, [{options}]) -------------------------------------------------------- - -Synchronous version of `setCookie`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -.storeCookie(cookie, [{options},] cb(err,cookie)) -------------------------------------------------- - -__REMOVED__ removed in lieu of the CookieStore API below - -.getCookies(currentUrl, [{options},] cb(err,cookies)) ------------------------------------------------------ - -Retrieve the list of cookies that can be sent in a Cookie header for the current url. - -If an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially). - * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the CookieStore `fetchCookies` function (the default MemoryCookieStore supports it). - -The `.lastAccessed` property of the returned cookies will have been updated. - -.getCookiesSync(currentUrl, [{options}]) ----------------------------------------- - -Synchronous version of `getCookies`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -.getCookieString(...) ---------------------- - -Accepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`. - -.getCookieStringSync(...) -------------------------- - -Synchronous version of `getCookieString`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -.getSetCookieStrings(...) -------------------------- - -Returns an array of strings suitable for **Set-Cookie** headers. Accepts the same options as `.getCookies()`. Simply maps the cookie array via `.toString()`. - -.getSetCookieStringsSync(...) ------------------------------ - -Synchronous version of `getSetCookieStrings`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -Store -===== - -Base class for CookieJar stores. - -# CookieStore API - -The storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores. - -Stores should inherit from the base `Store` class, which is available as `require('tough-cookie').Store`. Stores are asynchronous by default, but if `store.synchronous` is set, then the `*Sync` methods on the CookieJar can be used. - -All `domain` parameters will have been normalized before calling. - -The Cookie store must have all of the following methods. - -store.findCookie(domain, path, key, cb(err,cookie)) ---------------------------------------------------- - -Retrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned. - -Callback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error). - -store.findCookies(domain, path, cb(err,cookies)) ------------------------------------------------- - -Locates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above. - -If no cookies are found, the callback MUST be passed an empty array. - -The resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done. - -As of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only). - -store.putCookie(cookie, cb(err)) --------------------------------- - -Adds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur. - -The `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties. - -Pass an error if the cookie cannot be stored. - -store.updateCookie(oldCookie, newCookie, cb(err)) -------------------------------------------------- - -Update an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store. - -The `.lastAccessed` property will always be different between the two objects and `.created` will always be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are sorted (or selected for deletion). - -Stores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object. - -The `newCookie` and `oldCookie` objects MUST NOT be modified. - -Pass an error if the newCookie cannot be stored. - -store.removeCookie(domain, path, key, cb(err)) ----------------------------------------------- - -Remove a cookie from the store (see notes on `findCookie` about the uniqueness constraint). - -The implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie. - -store.removeCookies(domain, path, cb(err)) ------------------------------------------- - -Removes matching cookies from the store. The `path` paramter is optional, and if missing means all paths in a domain should be removed. - -Pass an error ONLY if removing any existing cookies failed. - -# TODO - - * _full_ RFC5890/RFC5891 canonicalization for domains in `cdomain()` - * the optional `punycode` requirement implements RFC3492, but RFC6265 requires RFC5891 - * better tests for `validate()`? - -# Copyright and License - -(tl;dr: MIT with some MPL/1.1) - -Copyright 2012- GoInstant, Inc. and other contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -Portions may be licensed under different licenses (in particular public-suffix.txt is MPL/1.1); please read the LICENSE file for full details. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js deleted file mode 100644 index 74d76aa..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -'use strict'; -var fs = require('fs'); -var assert = require('assert'); -var punycode = require('punycode'); - -fs.readFile('./public-suffix.txt', 'utf8', function(err,string) { - if (err) { - throw err; - } - var lines = string.split("\n"); - process.nextTick(function() { - processList(lines); - }); -}); - -var index = {}; - -var COMMENT = new RegExp('//.+'); -function processList(lines) { - while (lines.length) { - var line = lines.shift(); - line = line.replace(COMMENT,'').trim(); - if (!line) { - continue; - } - addToIndex(index,line); - } - - pubSufTest(); - - var w = fs.createWriteStream('./lib/pubsuffix.js',{ - flags: 'w', - encoding: 'utf8', - mode: parseInt('644',8) - }); - w.on('end', process.exit); - w.write("/****************************************************\n"); - w.write(" * AUTOMATICALLY GENERATED by generate-pubsuffix.js *\n"); - w.write(" * DO NOT EDIT! *\n"); - w.write(" ****************************************************/\n\n"); - - w.write("module.exports.getPublicSuffix = "); - w.write(getPublicSuffix.toString()); - w.write(";\n\n"); - - w.write("// The following generated structure is used under the MPL version 1.1\n"); - w.write("// See public-suffix.txt for more information\n\n"); - w.write("var index = module.exports.index = Object.freeze(\n"); - w.write(JSON.stringify(index)); - w.write(");\n\n"); - w.write("// END of automatically generated file\n"); - - w.end(); -} - -function addToIndex(index,line) { - var prefix = ''; - if (line.replace(/^(!|\*\.)/)) { - prefix = RegExp.$1; - line = line.slice(prefix.length); - } - line = prefix + punycode.toASCII(line); - - if (line.substr(0,1) == '!') { - index[line.substr(1)] = false; - } else { - index[line] = true; - } -} - -// include the licence in the function since it gets written to pubsuffix.js -function getPublicSuffix(domain) { - /* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - if (!domain) { - return null; - } - if (domain.match(/^\./)) { - return null; - } - - domain = domain.toLowerCase(); - var parts = domain.split('.').reverse(); - - var suffix = ''; - var suffixLen = 0; - for (var i=0; i suffixLen) { - return parts.slice(0,suffixLen+1).reverse().join('.'); - } - - return null; -} - -function checkPublicSuffix(give,get) { - var got = getPublicSuffix(give); - assert.equal(got, get, give+' should be '+(get==null?'NULL':get)+' but got '+got); -} - -// pubSufTest() was converted to JavaScript from http://publicsuffix.org/list/test.txt -function pubSufTest() { - // For this function-scope and this function-scope ONLY: - // Any copyright is dedicated to the Public Domain. - // http://creativecommons.org/publicdomain/zero/1.0/ - - // NULL input. - checkPublicSuffix(null, null); - // Mixed case. - checkPublicSuffix('COM', null); - checkPublicSuffix('example.COM', 'example.com'); - checkPublicSuffix('WwW.example.COM', 'example.com'); - // Leading dot. - checkPublicSuffix('.com', null); - checkPublicSuffix('.example', null); - checkPublicSuffix('.example.com', null); - checkPublicSuffix('.example.example', null); - // Unlisted TLD. - checkPublicSuffix('example', null); - checkPublicSuffix('example.example', null); - checkPublicSuffix('b.example.example', null); - checkPublicSuffix('a.b.example.example', null); - // Listed, but non-Internet, TLD. - checkPublicSuffix('local', null); - checkPublicSuffix('example.local', null); - checkPublicSuffix('b.example.local', null); - checkPublicSuffix('a.b.example.local', null); - // TLD with only 1 rule. - checkPublicSuffix('biz', null); - checkPublicSuffix('domain.biz', 'domain.biz'); - checkPublicSuffix('b.domain.biz', 'domain.biz'); - checkPublicSuffix('a.b.domain.biz', 'domain.biz'); - // TLD with some 2-level rules. - checkPublicSuffix('com', null); - checkPublicSuffix('example.com', 'example.com'); - checkPublicSuffix('b.example.com', 'example.com'); - checkPublicSuffix('a.b.example.com', 'example.com'); - checkPublicSuffix('uk.com', null); - checkPublicSuffix('example.uk.com', 'example.uk.com'); - checkPublicSuffix('b.example.uk.com', 'example.uk.com'); - checkPublicSuffix('a.b.example.uk.com', 'example.uk.com'); - checkPublicSuffix('test.ac', 'test.ac'); - // TLD with only 1 (wildcard) rule. - checkPublicSuffix('cy', null); - checkPublicSuffix('c.cy', null); - checkPublicSuffix('b.c.cy', 'b.c.cy'); - checkPublicSuffix('a.b.c.cy', 'b.c.cy'); - // More complex TLD. - checkPublicSuffix('jp', null); - checkPublicSuffix('test.jp', 'test.jp'); - checkPublicSuffix('www.test.jp', 'test.jp'); - checkPublicSuffix('ac.jp', null); - checkPublicSuffix('test.ac.jp', 'test.ac.jp'); - checkPublicSuffix('www.test.ac.jp', 'test.ac.jp'); - checkPublicSuffix('kyoto.jp', null); - checkPublicSuffix('c.kyoto.jp', null); - checkPublicSuffix('b.c.kyoto.jp', 'b.c.kyoto.jp'); - checkPublicSuffix('a.b.c.kyoto.jp', 'b.c.kyoto.jp'); - checkPublicSuffix('pref.kyoto.jp', 'pref.kyoto.jp'); // Exception rule. - checkPublicSuffix('www.pref.kyoto.jp', 'pref.kyoto.jp'); // Exception rule. - checkPublicSuffix('city.kyoto.jp', 'city.kyoto.jp'); // Exception rule. - checkPublicSuffix('www.city.kyoto.jp', 'city.kyoto.jp'); // Exception rule. - // TLD with a wildcard rule and exceptions. - checkPublicSuffix('om', null); - checkPublicSuffix('test.om', null); - checkPublicSuffix('b.test.om', 'b.test.om'); - checkPublicSuffix('a.b.test.om', 'b.test.om'); - checkPublicSuffix('songfest.om', 'songfest.om'); - checkPublicSuffix('www.songfest.om', 'songfest.om'); - // US K12. - checkPublicSuffix('us', null); - checkPublicSuffix('test.us', 'test.us'); - checkPublicSuffix('www.test.us', 'test.us'); - checkPublicSuffix('ak.us', null); - checkPublicSuffix('test.ak.us', 'test.ak.us'); - checkPublicSuffix('www.test.ak.us', 'test.ak.us'); - checkPublicSuffix('k12.ak.us', null); - checkPublicSuffix('test.k12.ak.us', 'test.k12.ak.us'); - checkPublicSuffix('www.test.k12.ak.us', 'test.k12.ak.us'); - - -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/cookie.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/cookie.js deleted file mode 100644 index c93e927..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/cookie.js +++ /dev/null @@ -1,1107 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -'use strict'; -var net = require('net'); -var urlParse = require('url').parse; -var pubsuffix = require('./pubsuffix'); -var Store = require('./store').Store; - -var punycode; -try { - punycode = require('punycode'); -} catch(e) { - console.warn("cookie: can't load punycode; won't use punycode for domain normalization"); -} - -var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; - -// From RFC2616 S2.2: -var TOKEN = /[\x21\x23-\x26\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7A\x7C\x7E]/; - -// From RFC6265 S4.1.1 -// note that it excludes \x3B ";" -var COOKIE_OCTET = /[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/; -var COOKIE_OCTETS = new RegExp('^'+COOKIE_OCTET.source+'$'); - -// The name/key cannot be empty but the value can (S5.2): -var COOKIE_PAIR_STRICT = new RegExp('^('+TOKEN.source+'+)=("?)('+COOKIE_OCTET.source+'*)\\2$'); -var COOKIE_PAIR = /^([^=\s]+)\s*=\s*("?)\s*(.*)\s*\2\s*$/; - -// RFC6265 S4.1.1 defines extension-av as 'any CHAR except CTLs or ";"' -// Note ';' is \x3B -var NON_CTL_SEMICOLON = /[\x20-\x3A\x3C-\x7E]+/; -var EXTENSION_AV = NON_CTL_SEMICOLON; -var PATH_VALUE = NON_CTL_SEMICOLON; - -// Used for checking whether or not there is a trailing semi-colon -var TRAILING_SEMICOLON = /;+$/; - -/* RFC6265 S5.1.1.5: - * [fail if] the day-of-month-value is less than 1 or greater than 31 - */ -var DAY_OF_MONTH = /^(0?[1-9]|[12][0-9]|3[01])$/; - -/* RFC6265 S5.1.1.5: - * [fail if] - * * the hour-value is greater than 23, - * * the minute-value is greater than 59, or - * * the second-value is greater than 59. - */ -var TIME = /(0?[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])/; -var STRICT_TIME = /^(0?[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/; - -var MONTH = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)$/i; -var MONTH_TO_NUM = { - jan:0, feb:1, mar:2, apr:3, may:4, jun:5, - jul:6, aug:7, sep:8, oct:9, nov:10, dec:11 -}; -var NUM_TO_MONTH = [ - 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' -]; -var NUM_TO_DAY = [ - 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' -]; - -var YEAR = /^([1-9][0-9]{1,3})$/; // 2 to 4 digits - -var MAX_TIME = 2147483647000; // 31-bit max -var MIN_TIME = 0; // 31-bit min - - -// RFC6265 S5.1.1 date parser: -function parseDate(str,strict) { - if (!str) { - return; - } - var found_time, found_dom, found_month, found_year; - - /* RFC6265 S5.1.1: - * 2. Process each date-token sequentially in the order the date-tokens - * appear in the cookie-date - */ - var tokens = str.split(DATE_DELIM); - if (!tokens) { - return; - } - - var date = new Date(); - date.setMilliseconds(0); - - for (var i=0; i= 10 ? d : '0'+d; - var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h; - var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m; - var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s; - return NUM_TO_DAY[date.getUTCDay()] + ', ' + - d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+ - h+':'+m+':'+s+' GMT'; -} - -// S5.1.2 Canonicalized Host Names -function canonicalDomain(str) { - if (str == null) { - return null; - } - str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading . - - // convert to IDN if any non-ASCII characters - if (punycode && /[^\u0001-\u007f]/.test(str)) { - str = punycode.toASCII(str); - } - - return str.toLowerCase(); -} - -// S5.1.3 Domain Matching -function domainMatch(str, domStr, canonicalize) { - if (str == null || domStr == null) { - return null; - } - if (canonicalize !== false) { - str = canonicalDomain(str); - domStr = canonicalDomain(domStr); - } - - /* - * "The domain string and the string are identical. (Note that both the - * domain string and the string will have been canonicalized to lower case at - * this point)" - */ - if (str == domStr) { - return true; - } - - /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */ - - /* "* The string is a host name (i.e., not an IP address)." */ - if (net.isIP(str)) { - return false; - } - - /* "* The domain string is a suffix of the string" */ - var idx = str.indexOf(domStr); - if (idx <= 0) { - return false; // it's a non-match (-1) or prefix (0) - } - - // e.g "a.b.c".indexOf("b.c") === 2 - // 5 === 3+2 - if (str.length !== domStr.length + idx) { // it's not a suffix - return false; - } - - /* "* The last character of the string that is not included in the domain - * string is a %x2E (".") character." */ - if (str.substr(idx-1,1) !== '.') { - return false; - } - - return true; -} - - -// RFC6265 S5.1.4 Paths and Path-Match - -/* - * "The user agent MUST use an algorithm equivalent to the following algorithm - * to compute the default-path of a cookie:" - * - * Assumption: the path (and not query part or absolute uri) is passed in. - */ -function defaultPath(path) { - // "2. If the uri-path is empty or if the first character of the uri-path is not - // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps. - if (!path || path.substr(0,1) !== "/") { - return "/"; - } - - // "3. If the uri-path contains no more than one %x2F ("/") character, output - // %x2F ("/") and skip the remaining step." - if (path === "/") { - return path; - } - - var rightSlash = path.lastIndexOf("/"); - if (rightSlash === 0) { - return "/"; - } - - // "4. Output the characters of the uri-path from the first character up to, - // but not including, the right-most %x2F ("/")." - return path.slice(0, rightSlash); -} - -/* - * "A request-path path-matches a given cookie-path if at least one of the - * following conditions holds:" - */ -function pathMatch(reqPath,cookiePath) { - // "o The cookie-path and the request-path are identical." - if (cookiePath === reqPath) { - return true; - } - - var idx = reqPath.indexOf(cookiePath); - if (idx === 0) { - // "o The cookie-path is a prefix of the request-path, and the last - // character of the cookie-path is %x2F ("/")." - if (cookiePath.substr(-1) === "/") { - return true; - } - - // " o The cookie-path is a prefix of the request-path, and the first - // character of the request-path that is not included in the cookie- path - // is a %x2F ("/") character." - if (reqPath.substr(cookiePath.length,1) === "/") { - return true; - } - } - - return false; -} - -function parse(str, strict) { - str = str.trim(); - - // S4.1.1 Trailing semi-colons are not part of the specification. - // If we are not in strict mode we remove the trailing semi-colons. - var semiColonCheck = TRAILING_SEMICOLON.exec(str); - if (semiColonCheck) { - if (strict) { - return; - } - str = str.slice(0, semiColonCheck.index); - } - - // We use a regex to parse the "name-value-pair" part of S5.2 - var firstSemi = str.indexOf(';'); // S5.2 step 1 - var pairRx = strict ? COOKIE_PAIR_STRICT : COOKIE_PAIR; - var result = pairRx.exec(firstSemi === -1 ? str : str.substr(0,firstSemi)); - - // Rx satisfies the "the name string is empty" and "lacks a %x3D ("=")" - // constraints as well as trimming any whitespace. - if (!result) { - return; - } - - var c = new Cookie(); - c.key = result[1]; // the regexp should trim() already - c.value = result[3]; // [2] is quotes or empty-string - - if (firstSemi === -1) { - return c; - } - - // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string - // (including the %x3B (";") in question)." plus later on in the same section - // "discard the first ";" and trim". - var unparsed = str.slice(firstSemi).replace(/^\s*;\s*/,'').trim(); - - // "If the unparsed-attributes string is empty, skip the rest of these - // steps." - if (unparsed.length === 0) { - return c; - } - - /* - * S5.2 says that when looping over the items "[p]rocess the attribute-name - * and attribute-value according to the requirements in the following - * subsections" for every item. Plus, for many of the individual attributes - * in S5.3 it says to use the "attribute-value of the last attribute in the - * cookie-attribute-list". Therefore, in this implementation, we overwrite - * the previous value. - */ - var cookie_avs = unparsed.split(/\s*;\s*/); - while (cookie_avs.length) { - var av = cookie_avs.shift(); - - if (strict && !EXTENSION_AV.test(av)) { - return; - } - - var av_sep = av.indexOf('='); - var av_key, av_value; - if (av_sep === -1) { - av_key = av; - av_value = null; - } else { - av_key = av.substr(0,av_sep); - av_value = av.substr(av_sep+1); - } - - av_key = av_key.trim().toLowerCase(); - if (av_value) { - av_value = av_value.trim(); - } - - switch(av_key) { - case 'expires': // S5.2.1 - if (!av_value) {if(strict){return;}else{break;} } - var exp = parseDate(av_value,strict); - // "If the attribute-value failed to parse as a cookie date, ignore the - // cookie-av." - if (exp == null) { if(strict){return;}else{break;} } - c.expires = exp; - // over and underflow not realistically a concern: V8's getTime() seems to - // store something larger than a 32-bit time_t (even with 32-bit node) - break; - - case 'max-age': // S5.2.2 - if (!av_value) { if(strict){return;}else{break;} } - // "If the first character of the attribute-value is not a DIGIT or a "-" - // character ...[or]... If the remainder of attribute-value contains a - // non-DIGIT character, ignore the cookie-av." - if (!/^-?[0-9]+$/.test(av_value)) { if(strict){return;}else{break;} } - var delta = parseInt(av_value,10); - if (strict && delta <= 0) { - return; // S4.1.1 - } - // "If delta-seconds is less than or equal to zero (0), let expiry-time - // be the earliest representable date and time." - c.setMaxAge(delta); - break; - - case 'domain': // S5.2.3 - // "If the attribute-value is empty, the behavior is undefined. However, - // the user agent SHOULD ignore the cookie-av entirely." - if (!av_value) { if(strict){return;}else{break;} } - // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E - // (".") character." - var domain = av_value.trim().replace(/^\./,''); - if (!domain) { if(strict){return;}else{break;} } // see "is empty" above - // "Convert the cookie-domain to lower case." - c.domain = domain.toLowerCase(); - break; - - case 'path': // S5.2.4 - /* - * "If the attribute-value is empty or if the first character of the - * attribute-value is not %x2F ("/"): - * Let cookie-path be the default-path. - * Otherwise: - * Let cookie-path be the attribute-value." - * - * We'll represent the default-path as null since it depends on the - * context of the parsing. - */ - if (!av_value || av_value.substr(0,1) != "/") { - if(strict){return;}else{break;} - } - c.path = av_value; - break; - - case 'secure': // S5.2.5 - /* - * "If the attribute-name case-insensitively matches the string "Secure", - * the user agent MUST append an attribute to the cookie-attribute-list - * with an attribute-name of Secure and an empty attribute-value." - */ - if (av_value != null) { if(strict){return;} } - c.secure = true; - break; - - case 'httponly': // S5.2.6 -- effectively the same as 'secure' - if (av_value != null) { if(strict){return;} } - c.httpOnly = true; - break; - - default: - c.extensions = c.extensions || []; - c.extensions.push(av); - break; - } - } - - // ensure a default date for sorting: - c.creation = new Date(); - return c; -} - -function fromJSON(str) { - if (!str) { - return null; - } - - var obj; - try { - obj = JSON.parse(str); - } catch (e) { - return null; - } - - var c = new Cookie(); - for (var i=0; i 1) { - var lindex = path.lastIndexOf('/'); - if (lindex === 0) { - break; - } - path = path.substr(0,lindex); - permutations.push(path); - } - permutations.push('/'); - return permutations; -} - - -function Cookie (opts) { - if (typeof opts !== "object") { - return; - } - Object.keys(opts).forEach(function (key) { - if (Cookie.prototype.hasOwnProperty(key)) { - this[key] = opts[key] || Cookie.prototype[key]; - } - }.bind(this)); -} - -Cookie.parse = parse; -Cookie.fromJSON = fromJSON; - -Cookie.prototype.key = ""; -Cookie.prototype.value = ""; - -// the order in which the RFC has them: -Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity -Cookie.prototype.maxAge = null; // takes precedence over expires for TTL -Cookie.prototype.domain = null; -Cookie.prototype.path = null; -Cookie.prototype.secure = false; -Cookie.prototype.httpOnly = false; -Cookie.prototype.extensions = null; - -// set by the CookieJar: -Cookie.prototype.hostOnly = null; // boolean when set -Cookie.prototype.pathIsDefault = null; // boolean when set -Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse -Cookie.prototype.lastAccessed = null; // Date when set - -var cookieProperties = Object.freeze(Object.keys(Cookie.prototype).map(function(p) { - if (p instanceof Function) { - return; - } - return p; -})); -var numCookieProperties = cookieProperties.length; - -Cookie.prototype.inspect = function inspect() { - var now = Date.now(); - return 'Cookie="'+this.toString() + - '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') + - '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') + - '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') + - '"'; -}; - -Cookie.prototype.validate = function validate() { - if (!COOKIE_OCTETS.test(this.value)) { - return false; - } - if (this.expires != Infinity && !(this.expires instanceof Date) && !parseDate(this.expires,true)) { - return false; - } - if (this.maxAge != null && this.maxAge <= 0) { - return false; // "Max-Age=" non-zero-digit *DIGIT - } - if (this.path != null && !PATH_VALUE.test(this.path)) { - return false; - } - - var cdomain = this.cdomain(); - if (cdomain) { - if (cdomain.match(/\.$/)) { - return false; // S4.1.2.3 suggests that this is bad. domainMatch() tests confirm this - } - var suffix = pubsuffix.getPublicSuffix(cdomain); - if (suffix == null) { // it's a public suffix - return false; - } - } - return true; -}; - -Cookie.prototype.setExpires = function setExpires(exp) { - if (exp instanceof Date) { - this.expires = exp; - } else { - this.expires = parseDate(exp) || "Infinity"; - } -}; - -Cookie.prototype.setMaxAge = function setMaxAge(age) { - if (age === Infinity || age === -Infinity) { - this.maxAge = age.toString(); // so JSON.stringify() works - } else { - this.maxAge = age; - } -}; - -// gives Cookie header format -Cookie.prototype.cookieString = function cookieString() { - var val = this.value; - if (val == null) { - val = ''; - } - return this.key+'='+val; -}; - -// gives Set-Cookie header format -Cookie.prototype.toString = function toString() { - var str = this.cookieString(); - - if (this.expires != Infinity) { - if (this.expires instanceof Date) { - str += '; Expires='+formatDate(this.expires); - } else { - str += '; Expires='+this.expires; - } - } - - if (this.maxAge != null && this.maxAge != Infinity) { - str += '; Max-Age='+this.maxAge; - } - - if (this.domain && !this.hostOnly) { - str += '; Domain='+this.domain; - } - if (this.path) { - str += '; Path='+this.path; - } - - if (this.secure) { - str += '; Secure'; - } - if (this.httpOnly) { - str += '; HttpOnly'; - } - if (this.extensions) { - this.extensions.forEach(function(ext) { - str += '; '+ext; - }); - } - - return str; -}; - -// TTL() partially replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere) -// S5.3 says to give the "latest representable date" for which we use Infinity -// For "expired" we use 0 -Cookie.prototype.TTL = function TTL(now) { - /* RFC6265 S4.1.2.2 If a cookie has both the Max-Age and the Expires - * attribute, the Max-Age attribute has precedence and controls the - * expiration date of the cookie. - * (Concurs with S5.3 step 3) - */ - if (this.maxAge != null) { - return this.maxAge<=0 ? 0 : this.maxAge*1000; - } - - var expires = this.expires; - if (expires != Infinity) { - if (!(expires instanceof Date)) { - expires = parseDate(expires) || Infinity; - } - - if (expires == Infinity) { - return Infinity; - } - - return expires.getTime() - (now || Date.now()); - } - - return Infinity; -}; - -// expiryTime() replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere) -Cookie.prototype.expiryTime = function expiryTime(now) { - if (this.maxAge != null) { - var relativeTo = this.creation || now || new Date(); - var age = (this.maxAge <= 0) ? -Infinity : this.maxAge*1000; - return relativeTo.getTime() + age; - } - - if (this.expires == Infinity) { - return Infinity; - } - return this.expires.getTime(); -}; - -// expiryDate() replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere), except it returns a Date -Cookie.prototype.expiryDate = function expiryDate(now) { - var millisec = this.expiryTime(now); - if (millisec == Infinity) { - return new Date(MAX_TIME); - } else if (millisec == -Infinity) { - return new Date(MIN_TIME); - } else { - return new Date(millisec); - } -}; - -// This replaces the "persistent-flag" parts of S5.3 step 3 -Cookie.prototype.isPersistent = function isPersistent() { - return (this.maxAge != null || this.expires != Infinity); -}; - -// Mostly S5.1.2 and S5.2.3: -Cookie.prototype.cdomain = -Cookie.prototype.canonicalizedDomain = function canonicalizedDomain() { - if (this.domain == null) { - return null; - } - return canonicalDomain(this.domain); -}; - - -var memstore; -function CookieJar(store, rejectPublicSuffixes) { - if (rejectPublicSuffixes != null) { - this.rejectPublicSuffixes = rejectPublicSuffixes; - } - - if (!store) { - memstore = memstore || require('./memstore'); - store = new memstore.MemoryCookieStore(); - } - this.store = store; -} -CookieJar.prototype.store = null; -CookieJar.prototype.rejectPublicSuffixes = true; -var CAN_BE_SYNC = []; - -CAN_BE_SYNC.push('setCookie'); -CookieJar.prototype.setCookie = function(cookie, url, options, cb) { - var err; - var context = (url instanceof Object) ? url : urlParse(url); - if (options instanceof Function) { - cb = options; - options = {}; - } - - var host = canonicalDomain(context.hostname); - - // S5.3 step 1 - if (!(cookie instanceof Cookie)) { - cookie = Cookie.parse(cookie, options.strict === true); - } - if (!cookie) { - err = new Error("Cookie failed to parse"); - return cb(options.ignoreError ? null : err); - } - - // S5.3 step 2 - var now = options.now || new Date(); // will assign later to save effort in the face of errors - - // S5.3 step 3: NOOP; persistent-flag and expiry-time is handled by getCookie() - - // S5.3 step 4: NOOP; domain is null by default - - // S5.3 step 5: public suffixes - if (this.rejectPublicSuffixes && cookie.domain) { - var suffix = pubsuffix.getPublicSuffix(cookie.cdomain()); - if (suffix == null) { // e.g. "com" - err = new Error("Cookie has domain set to a public suffix"); - return cb(options.ignoreError ? null : err); - } - } - - // S5.3 step 6: - if (cookie.domain) { - if (!domainMatch(host, cookie.cdomain(), false)) { - err = new Error("Cookie not in this host's domain. Cookie:"+cookie.cdomain()+" Request:"+host); - return cb(options.ignoreError ? null : err); - } - - if (cookie.hostOnly == null) { // don't reset if already set - cookie.hostOnly = false; - } - - } else { - cookie.hostOnly = true; - cookie.domain = host; - } - - // S5.3 step 7: "Otherwise, set the cookie's path to the default-path of the - // request-uri" - if (!cookie.path) { - cookie.path = defaultPath(context.pathname); - cookie.pathIsDefault = true; - } else { - if (cookie.path.length > 1 && cookie.path.substr(-1) == '/') { - cookie.path = cookie.path.slice(0,-1); - } - } - - // S5.3 step 8: NOOP; secure attribute - // S5.3 step 9: NOOP; httpOnly attribute - - // S5.3 step 10 - if (options.http === false && cookie.httpOnly) { - err = new Error("Cookie is HttpOnly and this isn't an HTTP API"); - return cb(options.ignoreError ? null : err); - } - - var store = this.store; - - if (!store.updateCookie) { - store.updateCookie = function(oldCookie, newCookie, cb) { - this.putCookie(newCookie, cb); - }; - } - - function withCookie(err, oldCookie) { - if (err) { - return cb(err); - } - - var next = function(err) { - if (err) { - return cb(err); - } else { - cb(null, cookie); - } - }; - - if (oldCookie) { - // S5.3 step 11 - "If the cookie store contains a cookie with the same name, - // domain, and path as the newly created cookie:" - if (options.http === false && oldCookie.httpOnly) { // step 11.2 - err = new Error("old Cookie is HttpOnly and this isn't an HTTP API"); - return cb(options.ignoreError ? null : err); - } - cookie.creation = oldCookie.creation; // step 11.3 - cookie.lastAccessed = now; - // Step 11.4 (delete cookie) is implied by just setting the new one: - store.updateCookie(oldCookie, cookie, next); // step 12 - - } else { - cookie.creation = cookie.lastAccessed = now; - store.putCookie(cookie, next); // step 12 - } - } - - store.findCookie(cookie.domain, cookie.path, cookie.key, withCookie); -}; - -// RFC6365 S5.4 -CAN_BE_SYNC.push('getCookies'); -CookieJar.prototype.getCookies = function(url, options, cb) { - var context = (url instanceof Object) ? url : urlParse(url); - if (options instanceof Function) { - cb = options; - options = {}; - } - - var host = canonicalDomain(context.hostname); - var path = context.pathname || '/'; - - var secure = options.secure; - if (secure == null && context.protocol && - (context.protocol == 'https:' || context.protocol == 'wss:')) - { - secure = true; - } - - var http = options.http; - if (http == null) { - http = true; - } - - var now = options.now || Date.now(); - var expireCheck = options.expire !== false; - var allPaths = !!options.allPaths; - var store = this.store; - - function matchingCookie(c) { - // "Either: - // The cookie's host-only-flag is true and the canonicalized - // request-host is identical to the cookie's domain. - // Or: - // The cookie's host-only-flag is false and the canonicalized - // request-host domain-matches the cookie's domain." - if (c.hostOnly) { - if (c.domain != host) { - return false; - } - } else { - if (!domainMatch(host, c.domain, false)) { - return false; - } - } - - // "The request-uri's path path-matches the cookie's path." - if (!allPaths && !pathMatch(path, c.path)) { - return false; - } - - // "If the cookie's secure-only-flag is true, then the request-uri's - // scheme must denote a "secure" protocol" - if (c.secure && !secure) { - return false; - } - - // "If the cookie's http-only-flag is true, then exclude the cookie if the - // cookie-string is being generated for a "non-HTTP" API" - if (c.httpOnly && !http) { - return false; - } - - // deferred from S5.3 - // non-RFC: allow retention of expired cookies by choice - if (expireCheck && c.expiryTime() <= now) { - store.removeCookie(c.domain, c.path, c.key, function(){}); // result ignored - return false; - } - - return true; - } - - store.findCookies(host, allPaths ? null : path, function(err,cookies) { - if (err) { - return cb(err); - } - - cookies = cookies.filter(matchingCookie); - - // sorting of S5.4 part 2 - if (options.sort !== false) { - cookies = cookies.sort(cookieCompare); - } - - // S5.4 part 3 - var now = new Date(); - cookies.forEach(function(c) { - c.lastAccessed = now; - }); - // TODO persist lastAccessed - - cb(null,cookies); - }); -}; - -CAN_BE_SYNC.push('getCookieString'); -CookieJar.prototype.getCookieString = function(/*..., cb*/) { - var args = Array.prototype.slice.call(arguments,0); - var cb = args.pop(); - var next = function(err,cookies) { - if (err) { - cb(err); - } else { - cb(null, cookies.map(function(c){ - return c.cookieString(); - }).join('; ')); - } - }; - args.push(next); - this.getCookies.apply(this,args); -}; - -CAN_BE_SYNC.push('getSetCookieStrings'); -CookieJar.prototype.getSetCookieStrings = function(/*..., cb*/) { - var args = Array.prototype.slice.call(arguments,0); - var cb = args.pop(); - var next = function(err,cookies) { - if (err) { - cb(err); - } else { - cb(null, cookies.map(function(c){ - return c.toString(); - })); - } - }; - args.push(next); - this.getCookies.apply(this,args); -}; - -// Use a closure to provide a true imperative API for synchronous stores. -function syncWrap(method) { - return function() { - if (!this.store.synchronous) { - throw new Error('CookieJar store is not synchronous; use async API instead.'); - } - - var args = Array.prototype.slice.call(arguments); - var syncErr, syncResult; - args.push(function syncCb(err, result) { - syncErr = err; - syncResult = result; - }); - this[method].apply(this, args); - - if (syncErr) { - throw syncErr; - } - return syncResult; - }; -} - -// wrap all declared CAN_BE_SYNC methods in the sync wrapper -CAN_BE_SYNC.forEach(function(method) { - CookieJar.prototype[method+'Sync'] = syncWrap(method); -}); - -module.exports = { - CookieJar: CookieJar, - Cookie: Cookie, - Store: Store, - parseDate: parseDate, - formatDate: formatDate, - parse: parse, - fromJSON: fromJSON, - domainMatch: domainMatch, - defaultPath: defaultPath, - pathMatch: pathMatch, - getPublicSuffix: pubsuffix.getPublicSuffix, - cookieCompare: cookieCompare, - permuteDomain: permuteDomain, - permutePath: permutePath, - canonicalDomain: canonicalDomain, -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/memstore.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/memstore.js deleted file mode 100644 index fc5774c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/memstore.js +++ /dev/null @@ -1,123 +0,0 @@ -'use strict'; -var tough = require('./cookie'); -var Store = require('./store').Store; -var permuteDomain = tough.permuteDomain; -var permutePath = tough.permutePath; -var util = require('util'); - -function MemoryCookieStore() { - Store.call(this); - this.idx = {}; -} -util.inherits(MemoryCookieStore, Store); -exports.MemoryCookieStore = MemoryCookieStore; -MemoryCookieStore.prototype.idx = null; -MemoryCookieStore.prototype.synchronous = true; - -// force a default depth: -MemoryCookieStore.prototype.inspect = function() { - return "{ idx: "+util.inspect(this.idx, false, 2)+' }'; -}; - -MemoryCookieStore.prototype.findCookie = function(domain, path, key, cb) { - if (!this.idx[domain]) { - return cb(null,undefined); - } - if (!this.idx[domain][path]) { - return cb(null,undefined); - } - return cb(null,this.idx[domain][path][key]||null); -}; - -MemoryCookieStore.prototype.findCookies = function(domain, path, cb) { - var results = []; - if (!domain) { - return cb(null,[]); - } - - var pathMatcher; - if (!path) { - // null or '/' means "all paths" - pathMatcher = function matchAll(domainIndex) { - for (var curPath in domainIndex) { - var pathIndex = domainIndex[curPath]; - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - } - }; - - } else if (path === '/') { - pathMatcher = function matchSlash(domainIndex) { - var pathIndex = domainIndex['/']; - if (!pathIndex) { - return; - } - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - }; - - } else { - var paths = permutePath(path) || [path]; - pathMatcher = function matchRFC(domainIndex) { - paths.forEach(function(curPath) { - var pathIndex = domainIndex[curPath]; - if (!pathIndex) { - return; - } - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - }); - }; - } - - var domains = permuteDomain(domain) || [domain]; - var idx = this.idx; - domains.forEach(function(curDomain) { - var domainIndex = idx[curDomain]; - if (!domainIndex) { - return; - } - pathMatcher(domainIndex); - }); - - cb(null,results); -}; - -MemoryCookieStore.prototype.putCookie = function(cookie, cb) { - if (!this.idx[cookie.domain]) { - this.idx[cookie.domain] = {}; - } - if (!this.idx[cookie.domain][cookie.path]) { - this.idx[cookie.domain][cookie.path] = {}; - } - this.idx[cookie.domain][cookie.path][cookie.key] = cookie; - cb(null); -}; - -MemoryCookieStore.prototype.updateCookie = function updateCookie(oldCookie, newCookie, cb) { - // updateCookie() may avoid updating cookies that are identical. For example, - // lastAccessed may not be important to some stores and an equality - // comparison could exclude that field. - this.putCookie(newCookie,cb); -}; - -MemoryCookieStore.prototype.removeCookie = function removeCookie(domain, path, key, cb) { - if (this.idx[domain] && this.idx[domain][path] && this.idx[domain][path][key]) { - delete this.idx[domain][path][key]; - } - cb(null); -}; - -MemoryCookieStore.prototype.removeCookies = function removeCookies(domain, path, cb) { - if (this.idx[domain]) { - if (path) { - delete this.idx[domain][path]; - } else { - delete this.idx[domain]; - } - } - return cb(null); -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js deleted file mode 100644 index a703147..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************** - * AUTOMATICALLY GENERATED by generate-pubsuffix.js * - * DO NOT EDIT! * - ****************************************************/ - -module.exports.getPublicSuffix = function getPublicSuffix(domain) { - /* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - if (!domain) return null; - if (domain.match(/^\./)) return null; - - domain = domain.toLowerCase(); - var parts = domain.split('.').reverse(); - - var suffix = ''; - var suffixLen = 0; - for (var i=0; i suffixLen) { - return parts.slice(0,suffixLen+1).reverse().join('.'); - } - - return null; -}; - -// The following generated structure is used under the MPL version 1.1 -// See public-suffix.txt for more information - -var index = module.exports.index = Object.freeze( -{"ac":true,"com.ac":true,"edu.ac":true,"gov.ac":true,"net.ac":true,"mil.ac":true,"org.ac":true,"ad":true,"nom.ad":true,"ae":true,"co.ae":true,"net.ae":true,"org.ae":true,"sch.ae":true,"ac.ae":true,"gov.ae":true,"mil.ae":true,"aero":true,"accident-investigation.aero":true,"accident-prevention.aero":true,"aerobatic.aero":true,"aeroclub.aero":true,"aerodrome.aero":true,"agents.aero":true,"aircraft.aero":true,"airline.aero":true,"airport.aero":true,"air-surveillance.aero":true,"airtraffic.aero":true,"air-traffic-control.aero":true,"ambulance.aero":true,"amusement.aero":true,"association.aero":true,"author.aero":true,"ballooning.aero":true,"broker.aero":true,"caa.aero":true,"cargo.aero":true,"catering.aero":true,"certification.aero":true,"championship.aero":true,"charter.aero":true,"civilaviation.aero":true,"club.aero":true,"conference.aero":true,"consultant.aero":true,"consulting.aero":true,"control.aero":true,"council.aero":true,"crew.aero":true,"design.aero":true,"dgca.aero":true,"educator.aero":true,"emergency.aero":true,"engine.aero":true,"engineer.aero":true,"entertainment.aero":true,"equipment.aero":true,"exchange.aero":true,"express.aero":true,"federation.aero":true,"flight.aero":true,"freight.aero":true,"fuel.aero":true,"gliding.aero":true,"government.aero":true,"groundhandling.aero":true,"group.aero":true,"hanggliding.aero":true,"homebuilt.aero":true,"insurance.aero":true,"journal.aero":true,"journalist.aero":true,"leasing.aero":true,"logistics.aero":true,"magazine.aero":true,"maintenance.aero":true,"marketplace.aero":true,"media.aero":true,"microlight.aero":true,"modelling.aero":true,"navigation.aero":true,"parachuting.aero":true,"paragliding.aero":true,"passenger-association.aero":true,"pilot.aero":true,"press.aero":true,"production.aero":true,"recreation.aero":true,"repbody.aero":true,"res.aero":true,"research.aero":true,"rotorcraft.aero":true,"safety.aero":true,"scientist.aero":true,"services.aero":true,"show.aero":true,"skydiving.aero":true,"software.aero":true,"student.aero":true,"taxi.aero":true,"trader.aero":true,"trading.aero":true,"trainer.aero":true,"union.aero":true,"workinggroup.aero":true,"works.aero":true,"af":true,"gov.af":true,"com.af":true,"org.af":true,"net.af":true,"edu.af":true,"ag":true,"com.ag":true,"org.ag":true,"net.ag":true,"co.ag":true,"nom.ag":true,"ai":true,"off.ai":true,"com.ai":true,"net.ai":true,"org.ai":true,"al":true,"com.al":true,"edu.al":true,"gov.al":true,"mil.al":true,"net.al":true,"org.al":true,"am":true,"an":true,"com.an":true,"net.an":true,"org.an":true,"edu.an":true,"ao":true,"ed.ao":true,"gv.ao":true,"og.ao":true,"co.ao":true,"pb.ao":true,"it.ao":true,"aq":true,"*.ar":true,"congresodelalengua3.ar":false,"educ.ar":false,"gobiernoelectronico.ar":false,"mecon.ar":false,"nacion.ar":false,"nic.ar":false,"promocion.ar":false,"retina.ar":false,"uba.ar":false,"e164.arpa":true,"in-addr.arpa":true,"ip6.arpa":true,"iris.arpa":true,"uri.arpa":true,"urn.arpa":true,"as":true,"gov.as":true,"asia":true,"at":true,"ac.at":true,"co.at":true,"gv.at":true,"or.at":true,"com.au":true,"net.au":true,"org.au":true,"edu.au":true,"gov.au":true,"csiro.au":true,"asn.au":true,"id.au":true,"info.au":true,"conf.au":true,"oz.au":true,"act.au":true,"nsw.au":true,"nt.au":true,"qld.au":true,"sa.au":true,"tas.au":true,"vic.au":true,"wa.au":true,"act.edu.au":true,"nsw.edu.au":true,"nt.edu.au":true,"qld.edu.au":true,"sa.edu.au":true,"tas.edu.au":true,"vic.edu.au":true,"wa.edu.au":true,"act.gov.au":true,"nt.gov.au":true,"qld.gov.au":true,"sa.gov.au":true,"tas.gov.au":true,"vic.gov.au":true,"wa.gov.au":true,"aw":true,"com.aw":true,"ax":true,"az":true,"com.az":true,"net.az":true,"int.az":true,"gov.az":true,"org.az":true,"edu.az":true,"info.az":true,"pp.az":true,"mil.az":true,"name.az":true,"pro.az":true,"biz.az":true,"ba":true,"org.ba":true,"net.ba":true,"edu.ba":true,"gov.ba":true,"mil.ba":true,"unsa.ba":true,"unbi.ba":true,"co.ba":true,"com.ba":true,"rs.ba":true,"bb":true,"biz.bb":true,"com.bb":true,"edu.bb":true,"gov.bb":true,"info.bb":true,"net.bb":true,"org.bb":true,"store.bb":true,"*.bd":true,"be":true,"ac.be":true,"bf":true,"gov.bf":true,"bg":true,"a.bg":true,"b.bg":true,"c.bg":true,"d.bg":true,"e.bg":true,"f.bg":true,"g.bg":true,"h.bg":true,"i.bg":true,"j.bg":true,"k.bg":true,"l.bg":true,"m.bg":true,"n.bg":true,"o.bg":true,"p.bg":true,"q.bg":true,"r.bg":true,"s.bg":true,"t.bg":true,"u.bg":true,"v.bg":true,"w.bg":true,"x.bg":true,"y.bg":true,"z.bg":true,"0.bg":true,"1.bg":true,"2.bg":true,"3.bg":true,"4.bg":true,"5.bg":true,"6.bg":true,"7.bg":true,"8.bg":true,"9.bg":true,"bh":true,"com.bh":true,"edu.bh":true,"net.bh":true,"org.bh":true,"gov.bh":true,"bi":true,"co.bi":true,"com.bi":true,"edu.bi":true,"or.bi":true,"org.bi":true,"biz":true,"bj":true,"asso.bj":true,"barreau.bj":true,"gouv.bj":true,"bm":true,"com.bm":true,"edu.bm":true,"gov.bm":true,"net.bm":true,"org.bm":true,"*.bn":true,"bo":true,"com.bo":true,"edu.bo":true,"gov.bo":true,"gob.bo":true,"int.bo":true,"org.bo":true,"net.bo":true,"mil.bo":true,"tv.bo":true,"br":true,"adm.br":true,"adv.br":true,"agr.br":true,"am.br":true,"arq.br":true,"art.br":true,"ato.br":true,"b.br":true,"bio.br":true,"blog.br":true,"bmd.br":true,"can.br":true,"cim.br":true,"cng.br":true,"cnt.br":true,"com.br":true,"coop.br":true,"ecn.br":true,"edu.br":true,"emp.br":true,"eng.br":true,"esp.br":true,"etc.br":true,"eti.br":true,"far.br":true,"flog.br":true,"fm.br":true,"fnd.br":true,"fot.br":true,"fst.br":true,"g12.br":true,"ggf.br":true,"gov.br":true,"imb.br":true,"ind.br":true,"inf.br":true,"jor.br":true,"jus.br":true,"lel.br":true,"mat.br":true,"med.br":true,"mil.br":true,"mus.br":true,"net.br":true,"nom.br":true,"not.br":true,"ntr.br":true,"odo.br":true,"org.br":true,"ppg.br":true,"pro.br":true,"psc.br":true,"psi.br":true,"qsl.br":true,"radio.br":true,"rec.br":true,"slg.br":true,"srv.br":true,"taxi.br":true,"teo.br":true,"tmp.br":true,"trd.br":true,"tur.br":true,"tv.br":true,"vet.br":true,"vlog.br":true,"wiki.br":true,"zlg.br":true,"bs":true,"com.bs":true,"net.bs":true,"org.bs":true,"edu.bs":true,"gov.bs":true,"bt":true,"com.bt":true,"edu.bt":true,"gov.bt":true,"net.bt":true,"org.bt":true,"bw":true,"co.bw":true,"org.bw":true,"by":true,"gov.by":true,"mil.by":true,"com.by":true,"of.by":true,"bz":true,"com.bz":true,"net.bz":true,"org.bz":true,"edu.bz":true,"gov.bz":true,"ca":true,"ab.ca":true,"bc.ca":true,"mb.ca":true,"nb.ca":true,"nf.ca":true,"nl.ca":true,"ns.ca":true,"nt.ca":true,"nu.ca":true,"on.ca":true,"pe.ca":true,"qc.ca":true,"sk.ca":true,"yk.ca":true,"gc.ca":true,"cat":true,"cc":true,"cd":true,"gov.cd":true,"cf":true,"cg":true,"ch":true,"ci":true,"org.ci":true,"or.ci":true,"com.ci":true,"co.ci":true,"edu.ci":true,"ed.ci":true,"ac.ci":true,"net.ci":true,"go.ci":true,"asso.ci":true,"xn--aroport-bya.ci":true,"int.ci":true,"presse.ci":true,"md.ci":true,"gouv.ci":true,"*.ck":true,"www.ck":false,"cl":true,"gov.cl":true,"gob.cl":true,"co.cl":true,"mil.cl":true,"cm":true,"gov.cm":true,"cn":true,"ac.cn":true,"com.cn":true,"edu.cn":true,"gov.cn":true,"net.cn":true,"org.cn":true,"mil.cn":true,"xn--55qx5d.cn":true,"xn--io0a7i.cn":true,"xn--od0alg.cn":true,"ah.cn":true,"bj.cn":true,"cq.cn":true,"fj.cn":true,"gd.cn":true,"gs.cn":true,"gz.cn":true,"gx.cn":true,"ha.cn":true,"hb.cn":true,"he.cn":true,"hi.cn":true,"hl.cn":true,"hn.cn":true,"jl.cn":true,"js.cn":true,"jx.cn":true,"ln.cn":true,"nm.cn":true,"nx.cn":true,"qh.cn":true,"sc.cn":true,"sd.cn":true,"sh.cn":true,"sn.cn":true,"sx.cn":true,"tj.cn":true,"xj.cn":true,"xz.cn":true,"yn.cn":true,"zj.cn":true,"hk.cn":true,"mo.cn":true,"tw.cn":true,"co":true,"arts.co":true,"com.co":true,"edu.co":true,"firm.co":true,"gov.co":true,"info.co":true,"int.co":true,"mil.co":true,"net.co":true,"nom.co":true,"org.co":true,"rec.co":true,"web.co":true,"com":true,"coop":true,"cr":true,"ac.cr":true,"co.cr":true,"ed.cr":true,"fi.cr":true,"go.cr":true,"or.cr":true,"sa.cr":true,"cu":true,"com.cu":true,"edu.cu":true,"org.cu":true,"net.cu":true,"gov.cu":true,"inf.cu":true,"cv":true,"cx":true,"gov.cx":true,"*.cy":true,"cz":true,"de":true,"dj":true,"dk":true,"dm":true,"com.dm":true,"net.dm":true,"org.dm":true,"edu.dm":true,"gov.dm":true,"do":true,"art.do":true,"com.do":true,"edu.do":true,"gob.do":true,"gov.do":true,"mil.do":true,"net.do":true,"org.do":true,"sld.do":true,"web.do":true,"dz":true,"com.dz":true,"org.dz":true,"net.dz":true,"gov.dz":true,"edu.dz":true,"asso.dz":true,"pol.dz":true,"art.dz":true,"ec":true,"com.ec":true,"info.ec":true,"net.ec":true,"fin.ec":true,"k12.ec":true,"med.ec":true,"pro.ec":true,"org.ec":true,"edu.ec":true,"gov.ec":true,"gob.ec":true,"mil.ec":true,"edu":true,"ee":true,"edu.ee":true,"gov.ee":true,"riik.ee":true,"lib.ee":true,"med.ee":true,"com.ee":true,"pri.ee":true,"aip.ee":true,"org.ee":true,"fie.ee":true,"eg":true,"com.eg":true,"edu.eg":true,"eun.eg":true,"gov.eg":true,"mil.eg":true,"name.eg":true,"net.eg":true,"org.eg":true,"sci.eg":true,"*.er":true,"es":true,"com.es":true,"nom.es":true,"org.es":true,"gob.es":true,"edu.es":true,"*.et":true,"eu":true,"fi":true,"aland.fi":true,"*.fj":true,"*.fk":true,"fm":true,"fo":true,"fr":true,"com.fr":true,"asso.fr":true,"nom.fr":true,"prd.fr":true,"presse.fr":true,"tm.fr":true,"aeroport.fr":true,"assedic.fr":true,"avocat.fr":true,"avoues.fr":true,"cci.fr":true,"chambagri.fr":true,"chirurgiens-dentistes.fr":true,"experts-comptables.fr":true,"geometre-expert.fr":true,"gouv.fr":true,"greta.fr":true,"huissier-justice.fr":true,"medecin.fr":true,"notaires.fr":true,"pharmacien.fr":true,"port.fr":true,"veterinaire.fr":true,"ga":true,"gd":true,"ge":true,"com.ge":true,"edu.ge":true,"gov.ge":true,"org.ge":true,"mil.ge":true,"net.ge":true,"pvt.ge":true,"gf":true,"gg":true,"co.gg":true,"org.gg":true,"net.gg":true,"sch.gg":true,"gov.gg":true,"gh":true,"com.gh":true,"edu.gh":true,"gov.gh":true,"org.gh":true,"mil.gh":true,"gi":true,"com.gi":true,"ltd.gi":true,"gov.gi":true,"mod.gi":true,"edu.gi":true,"org.gi":true,"gl":true,"gm":true,"ac.gn":true,"com.gn":true,"edu.gn":true,"gov.gn":true,"org.gn":true,"net.gn":true,"gov":true,"gp":true,"com.gp":true,"net.gp":true,"mobi.gp":true,"edu.gp":true,"org.gp":true,"asso.gp":true,"gq":true,"gr":true,"com.gr":true,"edu.gr":true,"net.gr":true,"org.gr":true,"gov.gr":true,"gs":true,"*.gt":true,"www.gt":false,"*.gu":true,"gw":true,"gy":true,"co.gy":true,"com.gy":true,"net.gy":true,"hk":true,"com.hk":true,"edu.hk":true,"gov.hk":true,"idv.hk":true,"net.hk":true,"org.hk":true,"xn--55qx5d.hk":true,"xn--wcvs22d.hk":true,"xn--lcvr32d.hk":true,"xn--mxtq1m.hk":true,"xn--gmqw5a.hk":true,"xn--ciqpn.hk":true,"xn--gmq050i.hk":true,"xn--zf0avx.hk":true,"xn--io0a7i.hk":true,"xn--mk0axi.hk":true,"xn--od0alg.hk":true,"xn--od0aq3b.hk":true,"xn--tn0ag.hk":true,"xn--uc0atv.hk":true,"xn--uc0ay4a.hk":true,"hm":true,"hn":true,"com.hn":true,"edu.hn":true,"org.hn":true,"net.hn":true,"mil.hn":true,"gob.hn":true,"hr":true,"iz.hr":true,"from.hr":true,"name.hr":true,"com.hr":true,"ht":true,"com.ht":true,"shop.ht":true,"firm.ht":true,"info.ht":true,"adult.ht":true,"net.ht":true,"pro.ht":true,"org.ht":true,"med.ht":true,"art.ht":true,"coop.ht":true,"pol.ht":true,"asso.ht":true,"edu.ht":true,"rel.ht":true,"gouv.ht":true,"perso.ht":true,"hu":true,"co.hu":true,"info.hu":true,"org.hu":true,"priv.hu":true,"sport.hu":true,"tm.hu":true,"2000.hu":true,"agrar.hu":true,"bolt.hu":true,"casino.hu":true,"city.hu":true,"erotica.hu":true,"erotika.hu":true,"film.hu":true,"forum.hu":true,"games.hu":true,"hotel.hu":true,"ingatlan.hu":true,"jogasz.hu":true,"konyvelo.hu":true,"lakas.hu":true,"media.hu":true,"news.hu":true,"reklam.hu":true,"sex.hu":true,"shop.hu":true,"suli.hu":true,"szex.hu":true,"tozsde.hu":true,"utazas.hu":true,"video.hu":true,"id":true,"ac.id":true,"co.id":true,"go.id":true,"mil.id":true,"net.id":true,"or.id":true,"sch.id":true,"web.id":true,"ie":true,"gov.ie":true,"*.il":true,"im":true,"co.im":true,"ltd.co.im":true,"plc.co.im":true,"net.im":true,"gov.im":true,"org.im":true,"nic.im":true,"ac.im":true,"in":true,"co.in":true,"firm.in":true,"net.in":true,"org.in":true,"gen.in":true,"ind.in":true,"nic.in":true,"ac.in":true,"edu.in":true,"res.in":true,"gov.in":true,"mil.in":true,"info":true,"int":true,"eu.int":true,"io":true,"com.io":true,"iq":true,"gov.iq":true,"edu.iq":true,"mil.iq":true,"com.iq":true,"org.iq":true,"net.iq":true,"ir":true,"ac.ir":true,"co.ir":true,"gov.ir":true,"id.ir":true,"net.ir":true,"org.ir":true,"sch.ir":true,"xn--mgba3a4f16a.ir":true,"xn--mgba3a4fra.ir":true,"is":true,"net.is":true,"com.is":true,"edu.is":true,"gov.is":true,"org.is":true,"int.is":true,"it":true,"gov.it":true,"edu.it":true,"agrigento.it":true,"ag.it":true,"alessandria.it":true,"al.it":true,"ancona.it":true,"an.it":true,"aosta.it":true,"aoste.it":true,"ao.it":true,"arezzo.it":true,"ar.it":true,"ascoli-piceno.it":true,"ascolipiceno.it":true,"ap.it":true,"asti.it":true,"at.it":true,"avellino.it":true,"av.it":true,"bari.it":true,"ba.it":true,"andria-barletta-trani.it":true,"andriabarlettatrani.it":true,"trani-barletta-andria.it":true,"tranibarlettaandria.it":true,"barletta-trani-andria.it":true,"barlettatraniandria.it":true,"andria-trani-barletta.it":true,"andriatranibarletta.it":true,"trani-andria-barletta.it":true,"traniandriabarletta.it":true,"bt.it":true,"belluno.it":true,"bl.it":true,"benevento.it":true,"bn.it":true,"bergamo.it":true,"bg.it":true,"biella.it":true,"bi.it":true,"bologna.it":true,"bo.it":true,"bolzano.it":true,"bozen.it":true,"balsan.it":true,"alto-adige.it":true,"altoadige.it":true,"suedtirol.it":true,"bz.it":true,"brescia.it":true,"bs.it":true,"brindisi.it":true,"br.it":true,"cagliari.it":true,"ca.it":true,"caltanissetta.it":true,"cl.it":true,"campobasso.it":true,"cb.it":true,"carboniaiglesias.it":true,"carbonia-iglesias.it":true,"iglesias-carbonia.it":true,"iglesiascarbonia.it":true,"ci.it":true,"caserta.it":true,"ce.it":true,"catania.it":true,"ct.it":true,"catanzaro.it":true,"cz.it":true,"chieti.it":true,"ch.it":true,"como.it":true,"co.it":true,"cosenza.it":true,"cs.it":true,"cremona.it":true,"cr.it":true,"crotone.it":true,"kr.it":true,"cuneo.it":true,"cn.it":true,"dell-ogliastra.it":true,"dellogliastra.it":true,"ogliastra.it":true,"og.it":true,"enna.it":true,"en.it":true,"ferrara.it":true,"fe.it":true,"fermo.it":true,"fm.it":true,"firenze.it":true,"florence.it":true,"fi.it":true,"foggia.it":true,"fg.it":true,"forli-cesena.it":true,"forlicesena.it":true,"cesena-forli.it":true,"cesenaforli.it":true,"fc.it":true,"frosinone.it":true,"fr.it":true,"genova.it":true,"genoa.it":true,"ge.it":true,"gorizia.it":true,"go.it":true,"grosseto.it":true,"gr.it":true,"imperia.it":true,"im.it":true,"isernia.it":true,"is.it":true,"laquila.it":true,"aquila.it":true,"aq.it":true,"la-spezia.it":true,"laspezia.it":true,"sp.it":true,"latina.it":true,"lt.it":true,"lecce.it":true,"le.it":true,"lecco.it":true,"lc.it":true,"livorno.it":true,"li.it":true,"lodi.it":true,"lo.it":true,"lucca.it":true,"lu.it":true,"macerata.it":true,"mc.it":true,"mantova.it":true,"mn.it":true,"massa-carrara.it":true,"massacarrara.it":true,"carrara-massa.it":true,"carraramassa.it":true,"ms.it":true,"matera.it":true,"mt.it":true,"medio-campidano.it":true,"mediocampidano.it":true,"campidano-medio.it":true,"campidanomedio.it":true,"vs.it":true,"messina.it":true,"me.it":true,"milano.it":true,"milan.it":true,"mi.it":true,"modena.it":true,"mo.it":true,"monza.it":true,"monza-brianza.it":true,"monzabrianza.it":true,"monzaebrianza.it":true,"monzaedellabrianza.it":true,"monza-e-della-brianza.it":true,"mb.it":true,"napoli.it":true,"naples.it":true,"na.it":true,"novara.it":true,"no.it":true,"nuoro.it":true,"nu.it":true,"oristano.it":true,"or.it":true,"padova.it":true,"padua.it":true,"pd.it":true,"palermo.it":true,"pa.it":true,"parma.it":true,"pr.it":true,"pavia.it":true,"pv.it":true,"perugia.it":true,"pg.it":true,"pescara.it":true,"pe.it":true,"pesaro-urbino.it":true,"pesarourbino.it":true,"urbino-pesaro.it":true,"urbinopesaro.it":true,"pu.it":true,"piacenza.it":true,"pc.it":true,"pisa.it":true,"pi.it":true,"pistoia.it":true,"pt.it":true,"pordenone.it":true,"pn.it":true,"potenza.it":true,"pz.it":true,"prato.it":true,"po.it":true,"ragusa.it":true,"rg.it":true,"ravenna.it":true,"ra.it":true,"reggio-calabria.it":true,"reggiocalabria.it":true,"rc.it":true,"reggio-emilia.it":true,"reggioemilia.it":true,"re.it":true,"rieti.it":true,"ri.it":true,"rimini.it":true,"rn.it":true,"roma.it":true,"rome.it":true,"rm.it":true,"rovigo.it":true,"ro.it":true,"salerno.it":true,"sa.it":true,"sassari.it":true,"ss.it":true,"savona.it":true,"sv.it":true,"siena.it":true,"si.it":true,"siracusa.it":true,"sr.it":true,"sondrio.it":true,"so.it":true,"taranto.it":true,"ta.it":true,"tempio-olbia.it":true,"tempioolbia.it":true,"olbia-tempio.it":true,"olbiatempio.it":true,"ot.it":true,"teramo.it":true,"te.it":true,"terni.it":true,"tr.it":true,"torino.it":true,"turin.it":true,"to.it":true,"trapani.it":true,"tp.it":true,"trento.it":true,"trentino.it":true,"tn.it":true,"treviso.it":true,"tv.it":true,"trieste.it":true,"ts.it":true,"udine.it":true,"ud.it":true,"varese.it":true,"va.it":true,"venezia.it":true,"venice.it":true,"ve.it":true,"verbania.it":true,"vb.it":true,"vercelli.it":true,"vc.it":true,"verona.it":true,"vr.it":true,"vibo-valentia.it":true,"vibovalentia.it":true,"vv.it":true,"vicenza.it":true,"vi.it":true,"viterbo.it":true,"vt.it":true,"je":true,"co.je":true,"org.je":true,"net.je":true,"sch.je":true,"gov.je":true,"*.jm":true,"jo":true,"com.jo":true,"org.jo":true,"net.jo":true,"edu.jo":true,"sch.jo":true,"gov.jo":true,"mil.jo":true,"name.jo":true,"jobs":true,"jp":true,"ac.jp":true,"ad.jp":true,"co.jp":true,"ed.jp":true,"go.jp":true,"gr.jp":true,"lg.jp":true,"ne.jp":true,"or.jp":true,"*.aichi.jp":true,"*.akita.jp":true,"*.aomori.jp":true,"*.chiba.jp":true,"*.ehime.jp":true,"*.fukui.jp":true,"*.fukuoka.jp":true,"*.fukushima.jp":true,"*.gifu.jp":true,"*.gunma.jp":true,"*.hiroshima.jp":true,"*.hokkaido.jp":true,"*.hyogo.jp":true,"*.ibaraki.jp":true,"*.ishikawa.jp":true,"*.iwate.jp":true,"*.kagawa.jp":true,"*.kagoshima.jp":true,"*.kanagawa.jp":true,"*.kawasaki.jp":true,"*.kitakyushu.jp":true,"*.kobe.jp":true,"*.kochi.jp":true,"*.kumamoto.jp":true,"*.kyoto.jp":true,"*.mie.jp":true,"*.miyagi.jp":true,"*.miyazaki.jp":true,"*.nagano.jp":true,"*.nagasaki.jp":true,"*.nagoya.jp":true,"*.nara.jp":true,"*.niigata.jp":true,"*.oita.jp":true,"*.okayama.jp":true,"*.okinawa.jp":true,"*.osaka.jp":true,"*.saga.jp":true,"*.saitama.jp":true,"*.sapporo.jp":true,"*.sendai.jp":true,"*.shiga.jp":true,"*.shimane.jp":true,"*.shizuoka.jp":true,"*.tochigi.jp":true,"*.tokushima.jp":true,"*.tokyo.jp":true,"*.tottori.jp":true,"*.toyama.jp":true,"*.wakayama.jp":true,"*.yamagata.jp":true,"*.yamaguchi.jp":true,"*.yamanashi.jp":true,"*.yokohama.jp":true,"metro.tokyo.jp":false,"pref.aichi.jp":false,"pref.akita.jp":false,"pref.aomori.jp":false,"pref.chiba.jp":false,"pref.ehime.jp":false,"pref.fukui.jp":false,"pref.fukuoka.jp":false,"pref.fukushima.jp":false,"pref.gifu.jp":false,"pref.gunma.jp":false,"pref.hiroshima.jp":false,"pref.hokkaido.jp":false,"pref.hyogo.jp":false,"pref.ibaraki.jp":false,"pref.ishikawa.jp":false,"pref.iwate.jp":false,"pref.kagawa.jp":false,"pref.kagoshima.jp":false,"pref.kanagawa.jp":false,"pref.kochi.jp":false,"pref.kumamoto.jp":false,"pref.kyoto.jp":false,"pref.mie.jp":false,"pref.miyagi.jp":false,"pref.miyazaki.jp":false,"pref.nagano.jp":false,"pref.nagasaki.jp":false,"pref.nara.jp":false,"pref.niigata.jp":false,"pref.oita.jp":false,"pref.okayama.jp":false,"pref.okinawa.jp":false,"pref.osaka.jp":false,"pref.saga.jp":false,"pref.saitama.jp":false,"pref.shiga.jp":false,"pref.shimane.jp":false,"pref.shizuoka.jp":false,"pref.tochigi.jp":false,"pref.tokushima.jp":false,"pref.tottori.jp":false,"pref.toyama.jp":false,"pref.wakayama.jp":false,"pref.yamagata.jp":false,"pref.yamaguchi.jp":false,"pref.yamanashi.jp":false,"city.chiba.jp":false,"city.fukuoka.jp":false,"city.hiroshima.jp":false,"city.kawasaki.jp":false,"city.kitakyushu.jp":false,"city.kobe.jp":false,"city.kyoto.jp":false,"city.nagoya.jp":false,"city.niigata.jp":false,"city.okayama.jp":false,"city.osaka.jp":false,"city.saitama.jp":false,"city.sapporo.jp":false,"city.sendai.jp":false,"city.shizuoka.jp":false,"city.yokohama.jp":false,"*.ke":true,"kg":true,"org.kg":true,"net.kg":true,"com.kg":true,"edu.kg":true,"gov.kg":true,"mil.kg":true,"*.kh":true,"ki":true,"edu.ki":true,"biz.ki":true,"net.ki":true,"org.ki":true,"gov.ki":true,"info.ki":true,"com.ki":true,"km":true,"org.km":true,"nom.km":true,"gov.km":true,"prd.km":true,"tm.km":true,"edu.km":true,"mil.km":true,"ass.km":true,"com.km":true,"coop.km":true,"asso.km":true,"presse.km":true,"medecin.km":true,"notaires.km":true,"pharmaciens.km":true,"veterinaire.km":true,"gouv.km":true,"kn":true,"net.kn":true,"org.kn":true,"edu.kn":true,"gov.kn":true,"com.kp":true,"edu.kp":true,"gov.kp":true,"org.kp":true,"rep.kp":true,"tra.kp":true,"kr":true,"ac.kr":true,"co.kr":true,"es.kr":true,"go.kr":true,"hs.kr":true,"kg.kr":true,"mil.kr":true,"ms.kr":true,"ne.kr":true,"or.kr":true,"pe.kr":true,"re.kr":true,"sc.kr":true,"busan.kr":true,"chungbuk.kr":true,"chungnam.kr":true,"daegu.kr":true,"daejeon.kr":true,"gangwon.kr":true,"gwangju.kr":true,"gyeongbuk.kr":true,"gyeonggi.kr":true,"gyeongnam.kr":true,"incheon.kr":true,"jeju.kr":true,"jeonbuk.kr":true,"jeonnam.kr":true,"seoul.kr":true,"ulsan.kr":true,"*.kw":true,"ky":true,"edu.ky":true,"gov.ky":true,"com.ky":true,"org.ky":true,"net.ky":true,"kz":true,"org.kz":true,"edu.kz":true,"net.kz":true,"gov.kz":true,"mil.kz":true,"com.kz":true,"la":true,"int.la":true,"net.la":true,"info.la":true,"edu.la":true,"gov.la":true,"per.la":true,"com.la":true,"org.la":true,"com.lb":true,"edu.lb":true,"gov.lb":true,"net.lb":true,"org.lb":true,"lc":true,"com.lc":true,"net.lc":true,"co.lc":true,"org.lc":true,"edu.lc":true,"gov.lc":true,"li":true,"lk":true,"gov.lk":true,"sch.lk":true,"net.lk":true,"int.lk":true,"com.lk":true,"org.lk":true,"edu.lk":true,"ngo.lk":true,"soc.lk":true,"web.lk":true,"ltd.lk":true,"assn.lk":true,"grp.lk":true,"hotel.lk":true,"com.lr":true,"edu.lr":true,"gov.lr":true,"org.lr":true,"net.lr":true,"ls":true,"co.ls":true,"org.ls":true,"lt":true,"gov.lt":true,"lu":true,"lv":true,"com.lv":true,"edu.lv":true,"gov.lv":true,"org.lv":true,"mil.lv":true,"id.lv":true,"net.lv":true,"asn.lv":true,"conf.lv":true,"ly":true,"com.ly":true,"net.ly":true,"gov.ly":true,"plc.ly":true,"edu.ly":true,"sch.ly":true,"med.ly":true,"org.ly":true,"id.ly":true,"ma":true,"co.ma":true,"net.ma":true,"gov.ma":true,"org.ma":true,"ac.ma":true,"press.ma":true,"mc":true,"tm.mc":true,"asso.mc":true,"md":true,"me":true,"co.me":true,"net.me":true,"org.me":true,"edu.me":true,"ac.me":true,"gov.me":true,"its.me":true,"priv.me":true,"mg":true,"org.mg":true,"nom.mg":true,"gov.mg":true,"prd.mg":true,"tm.mg":true,"edu.mg":true,"mil.mg":true,"com.mg":true,"mh":true,"mil":true,"mk":true,"com.mk":true,"org.mk":true,"net.mk":true,"edu.mk":true,"gov.mk":true,"inf.mk":true,"name.mk":true,"ml":true,"com.ml":true,"edu.ml":true,"gouv.ml":true,"gov.ml":true,"net.ml":true,"org.ml":true,"presse.ml":true,"*.mm":true,"mn":true,"gov.mn":true,"edu.mn":true,"org.mn":true,"mo":true,"com.mo":true,"net.mo":true,"org.mo":true,"edu.mo":true,"gov.mo":true,"mobi":true,"mp":true,"mq":true,"mr":true,"gov.mr":true,"ms":true,"*.mt":true,"mu":true,"com.mu":true,"net.mu":true,"org.mu":true,"gov.mu":true,"ac.mu":true,"co.mu":true,"or.mu":true,"museum":true,"academy.museum":true,"agriculture.museum":true,"air.museum":true,"airguard.museum":true,"alabama.museum":true,"alaska.museum":true,"amber.museum":true,"ambulance.museum":true,"american.museum":true,"americana.museum":true,"americanantiques.museum":true,"americanart.museum":true,"amsterdam.museum":true,"and.museum":true,"annefrank.museum":true,"anthro.museum":true,"anthropology.museum":true,"antiques.museum":true,"aquarium.museum":true,"arboretum.museum":true,"archaeological.museum":true,"archaeology.museum":true,"architecture.museum":true,"art.museum":true,"artanddesign.museum":true,"artcenter.museum":true,"artdeco.museum":true,"arteducation.museum":true,"artgallery.museum":true,"arts.museum":true,"artsandcrafts.museum":true,"asmatart.museum":true,"assassination.museum":true,"assisi.museum":true,"association.museum":true,"astronomy.museum":true,"atlanta.museum":true,"austin.museum":true,"australia.museum":true,"automotive.museum":true,"aviation.museum":true,"axis.museum":true,"badajoz.museum":true,"baghdad.museum":true,"bahn.museum":true,"bale.museum":true,"baltimore.museum":true,"barcelona.museum":true,"baseball.museum":true,"basel.museum":true,"baths.museum":true,"bauern.museum":true,"beauxarts.museum":true,"beeldengeluid.museum":true,"bellevue.museum":true,"bergbau.museum":true,"berkeley.museum":true,"berlin.museum":true,"bern.museum":true,"bible.museum":true,"bilbao.museum":true,"bill.museum":true,"birdart.museum":true,"birthplace.museum":true,"bonn.museum":true,"boston.museum":true,"botanical.museum":true,"botanicalgarden.museum":true,"botanicgarden.museum":true,"botany.museum":true,"brandywinevalley.museum":true,"brasil.museum":true,"bristol.museum":true,"british.museum":true,"britishcolumbia.museum":true,"broadcast.museum":true,"brunel.museum":true,"brussel.museum":true,"brussels.museum":true,"bruxelles.museum":true,"building.museum":true,"burghof.museum":true,"bus.museum":true,"bushey.museum":true,"cadaques.museum":true,"california.museum":true,"cambridge.museum":true,"can.museum":true,"canada.museum":true,"capebreton.museum":true,"carrier.museum":true,"cartoonart.museum":true,"casadelamoneda.museum":true,"castle.museum":true,"castres.museum":true,"celtic.museum":true,"center.museum":true,"chattanooga.museum":true,"cheltenham.museum":true,"chesapeakebay.museum":true,"chicago.museum":true,"children.museum":true,"childrens.museum":true,"childrensgarden.museum":true,"chiropractic.museum":true,"chocolate.museum":true,"christiansburg.museum":true,"cincinnati.museum":true,"cinema.museum":true,"circus.museum":true,"civilisation.museum":true,"civilization.museum":true,"civilwar.museum":true,"clinton.museum":true,"clock.museum":true,"coal.museum":true,"coastaldefence.museum":true,"cody.museum":true,"coldwar.museum":true,"collection.museum":true,"colonialwilliamsburg.museum":true,"coloradoplateau.museum":true,"columbia.museum":true,"columbus.museum":true,"communication.museum":true,"communications.museum":true,"community.museum":true,"computer.museum":true,"computerhistory.museum":true,"xn--comunicaes-v6a2o.museum":true,"contemporary.museum":true,"contemporaryart.museum":true,"convent.museum":true,"copenhagen.museum":true,"corporation.museum":true,"xn--correios-e-telecomunicaes-ghc29a.museum":true,"corvette.museum":true,"costume.museum":true,"countryestate.museum":true,"county.museum":true,"crafts.museum":true,"cranbrook.museum":true,"creation.museum":true,"cultural.museum":true,"culturalcenter.museum":true,"culture.museum":true,"cyber.museum":true,"cymru.museum":true,"dali.museum":true,"dallas.museum":true,"database.museum":true,"ddr.museum":true,"decorativearts.museum":true,"delaware.museum":true,"delmenhorst.museum":true,"denmark.museum":true,"depot.museum":true,"design.museum":true,"detroit.museum":true,"dinosaur.museum":true,"discovery.museum":true,"dolls.museum":true,"donostia.museum":true,"durham.museum":true,"eastafrica.museum":true,"eastcoast.museum":true,"education.museum":true,"educational.museum":true,"egyptian.museum":true,"eisenbahn.museum":true,"elburg.museum":true,"elvendrell.museum":true,"embroidery.museum":true,"encyclopedic.museum":true,"england.museum":true,"entomology.museum":true,"environment.museum":true,"environmentalconservation.museum":true,"epilepsy.museum":true,"essex.museum":true,"estate.museum":true,"ethnology.museum":true,"exeter.museum":true,"exhibition.museum":true,"family.museum":true,"farm.museum":true,"farmequipment.museum":true,"farmers.museum":true,"farmstead.museum":true,"field.museum":true,"figueres.museum":true,"filatelia.museum":true,"film.museum":true,"fineart.museum":true,"finearts.museum":true,"finland.museum":true,"flanders.museum":true,"florida.museum":true,"force.museum":true,"fortmissoula.museum":true,"fortworth.museum":true,"foundation.museum":true,"francaise.museum":true,"frankfurt.museum":true,"franziskaner.museum":true,"freemasonry.museum":true,"freiburg.museum":true,"fribourg.museum":true,"frog.museum":true,"fundacio.museum":true,"furniture.museum":true,"gallery.museum":true,"garden.museum":true,"gateway.museum":true,"geelvinck.museum":true,"gemological.museum":true,"geology.museum":true,"georgia.museum":true,"giessen.museum":true,"glas.museum":true,"glass.museum":true,"gorge.museum":true,"grandrapids.museum":true,"graz.museum":true,"guernsey.museum":true,"halloffame.museum":true,"hamburg.museum":true,"handson.museum":true,"harvestcelebration.museum":true,"hawaii.museum":true,"health.museum":true,"heimatunduhren.museum":true,"hellas.museum":true,"helsinki.museum":true,"hembygdsforbund.museum":true,"heritage.museum":true,"histoire.museum":true,"historical.museum":true,"historicalsociety.museum":true,"historichouses.museum":true,"historisch.museum":true,"historisches.museum":true,"history.museum":true,"historyofscience.museum":true,"horology.museum":true,"house.museum":true,"humanities.museum":true,"illustration.museum":true,"imageandsound.museum":true,"indian.museum":true,"indiana.museum":true,"indianapolis.museum":true,"indianmarket.museum":true,"intelligence.museum":true,"interactive.museum":true,"iraq.museum":true,"iron.museum":true,"isleofman.museum":true,"jamison.museum":true,"jefferson.museum":true,"jerusalem.museum":true,"jewelry.museum":true,"jewish.museum":true,"jewishart.museum":true,"jfk.museum":true,"journalism.museum":true,"judaica.museum":true,"judygarland.museum":true,"juedisches.museum":true,"juif.museum":true,"karate.museum":true,"karikatur.museum":true,"kids.museum":true,"koebenhavn.museum":true,"koeln.museum":true,"kunst.museum":true,"kunstsammlung.museum":true,"kunstunddesign.museum":true,"labor.museum":true,"labour.museum":true,"lajolla.museum":true,"lancashire.museum":true,"landes.museum":true,"lans.museum":true,"xn--lns-qla.museum":true,"larsson.museum":true,"lewismiller.museum":true,"lincoln.museum":true,"linz.museum":true,"living.museum":true,"livinghistory.museum":true,"localhistory.museum":true,"london.museum":true,"losangeles.museum":true,"louvre.museum":true,"loyalist.museum":true,"lucerne.museum":true,"luxembourg.museum":true,"luzern.museum":true,"mad.museum":true,"madrid.museum":true,"mallorca.museum":true,"manchester.museum":true,"mansion.museum":true,"mansions.museum":true,"manx.museum":true,"marburg.museum":true,"maritime.museum":true,"maritimo.museum":true,"maryland.museum":true,"marylhurst.museum":true,"media.museum":true,"medical.museum":true,"medizinhistorisches.museum":true,"meeres.museum":true,"memorial.museum":true,"mesaverde.museum":true,"michigan.museum":true,"midatlantic.museum":true,"military.museum":true,"mill.museum":true,"miners.museum":true,"mining.museum":true,"minnesota.museum":true,"missile.museum":true,"missoula.museum":true,"modern.museum":true,"moma.museum":true,"money.museum":true,"monmouth.museum":true,"monticello.museum":true,"montreal.museum":true,"moscow.museum":true,"motorcycle.museum":true,"muenchen.museum":true,"muenster.museum":true,"mulhouse.museum":true,"muncie.museum":true,"museet.museum":true,"museumcenter.museum":true,"museumvereniging.museum":true,"music.museum":true,"national.museum":true,"nationalfirearms.museum":true,"nationalheritage.museum":true,"nativeamerican.museum":true,"naturalhistory.museum":true,"naturalhistorymuseum.museum":true,"naturalsciences.museum":true,"nature.museum":true,"naturhistorisches.museum":true,"natuurwetenschappen.museum":true,"naumburg.museum":true,"naval.museum":true,"nebraska.museum":true,"neues.museum":true,"newhampshire.museum":true,"newjersey.museum":true,"newmexico.museum":true,"newport.museum":true,"newspaper.museum":true,"newyork.museum":true,"niepce.museum":true,"norfolk.museum":true,"north.museum":true,"nrw.museum":true,"nuernberg.museum":true,"nuremberg.museum":true,"nyc.museum":true,"nyny.museum":true,"oceanographic.museum":true,"oceanographique.museum":true,"omaha.museum":true,"online.museum":true,"ontario.museum":true,"openair.museum":true,"oregon.museum":true,"oregontrail.museum":true,"otago.museum":true,"oxford.museum":true,"pacific.museum":true,"paderborn.museum":true,"palace.museum":true,"paleo.museum":true,"palmsprings.museum":true,"panama.museum":true,"paris.museum":true,"pasadena.museum":true,"pharmacy.museum":true,"philadelphia.museum":true,"philadelphiaarea.museum":true,"philately.museum":true,"phoenix.museum":true,"photography.museum":true,"pilots.museum":true,"pittsburgh.museum":true,"planetarium.museum":true,"plantation.museum":true,"plants.museum":true,"plaza.museum":true,"portal.museum":true,"portland.museum":true,"portlligat.museum":true,"posts-and-telecommunications.museum":true,"preservation.museum":true,"presidio.museum":true,"press.museum":true,"project.museum":true,"public.museum":true,"pubol.museum":true,"quebec.museum":true,"railroad.museum":true,"railway.museum":true,"research.museum":true,"resistance.museum":true,"riodejaneiro.museum":true,"rochester.museum":true,"rockart.museum":true,"roma.museum":true,"russia.museum":true,"saintlouis.museum":true,"salem.museum":true,"salvadordali.museum":true,"salzburg.museum":true,"sandiego.museum":true,"sanfrancisco.museum":true,"santabarbara.museum":true,"santacruz.museum":true,"santafe.museum":true,"saskatchewan.museum":true,"satx.museum":true,"savannahga.museum":true,"schlesisches.museum":true,"schoenbrunn.museum":true,"schokoladen.museum":true,"school.museum":true,"schweiz.museum":true,"science.museum":true,"scienceandhistory.museum":true,"scienceandindustry.museum":true,"sciencecenter.museum":true,"sciencecenters.museum":true,"science-fiction.museum":true,"sciencehistory.museum":true,"sciences.museum":true,"sciencesnaturelles.museum":true,"scotland.museum":true,"seaport.museum":true,"settlement.museum":true,"settlers.museum":true,"shell.museum":true,"sherbrooke.museum":true,"sibenik.museum":true,"silk.museum":true,"ski.museum":true,"skole.museum":true,"society.museum":true,"sologne.museum":true,"soundandvision.museum":true,"southcarolina.museum":true,"southwest.museum":true,"space.museum":true,"spy.museum":true,"square.museum":true,"stadt.museum":true,"stalbans.museum":true,"starnberg.museum":true,"state.museum":true,"stateofdelaware.museum":true,"station.museum":true,"steam.museum":true,"steiermark.museum":true,"stjohn.museum":true,"stockholm.museum":true,"stpetersburg.museum":true,"stuttgart.museum":true,"suisse.museum":true,"surgeonshall.museum":true,"surrey.museum":true,"svizzera.museum":true,"sweden.museum":true,"sydney.museum":true,"tank.museum":true,"tcm.museum":true,"technology.museum":true,"telekommunikation.museum":true,"television.museum":true,"texas.museum":true,"textile.museum":true,"theater.museum":true,"time.museum":true,"timekeeping.museum":true,"topology.museum":true,"torino.museum":true,"touch.museum":true,"town.museum":true,"transport.museum":true,"tree.museum":true,"trolley.museum":true,"trust.museum":true,"trustee.museum":true,"uhren.museum":true,"ulm.museum":true,"undersea.museum":true,"university.museum":true,"usa.museum":true,"usantiques.museum":true,"usarts.museum":true,"uscountryestate.museum":true,"usculture.museum":true,"usdecorativearts.museum":true,"usgarden.museum":true,"ushistory.museum":true,"ushuaia.museum":true,"uslivinghistory.museum":true,"utah.museum":true,"uvic.museum":true,"valley.museum":true,"vantaa.museum":true,"versailles.museum":true,"viking.museum":true,"village.museum":true,"virginia.museum":true,"virtual.museum":true,"virtuel.museum":true,"vlaanderen.museum":true,"volkenkunde.museum":true,"wales.museum":true,"wallonie.museum":true,"war.museum":true,"washingtondc.museum":true,"watchandclock.museum":true,"watch-and-clock.museum":true,"western.museum":true,"westfalen.museum":true,"whaling.museum":true,"wildlife.museum":true,"williamsburg.museum":true,"windmill.museum":true,"workshop.museum":true,"york.museum":true,"yorkshire.museum":true,"yosemite.museum":true,"youth.museum":true,"zoological.museum":true,"zoology.museum":true,"xn--9dbhblg6di.museum":true,"xn--h1aegh.museum":true,"mv":true,"aero.mv":true,"biz.mv":true,"com.mv":true,"coop.mv":true,"edu.mv":true,"gov.mv":true,"info.mv":true,"int.mv":true,"mil.mv":true,"museum.mv":true,"name.mv":true,"net.mv":true,"org.mv":true,"pro.mv":true,"mw":true,"ac.mw":true,"biz.mw":true,"co.mw":true,"com.mw":true,"coop.mw":true,"edu.mw":true,"gov.mw":true,"int.mw":true,"museum.mw":true,"net.mw":true,"org.mw":true,"mx":true,"com.mx":true,"org.mx":true,"gob.mx":true,"edu.mx":true,"net.mx":true,"my":true,"com.my":true,"net.my":true,"org.my":true,"gov.my":true,"edu.my":true,"mil.my":true,"name.my":true,"*.mz":true,"na":true,"info.na":true,"pro.na":true,"name.na":true,"school.na":true,"or.na":true,"dr.na":true,"us.na":true,"mx.na":true,"ca.na":true,"in.na":true,"cc.na":true,"tv.na":true,"ws.na":true,"mobi.na":true,"co.na":true,"com.na":true,"org.na":true,"name":true,"nc":true,"asso.nc":true,"ne":true,"net":true,"nf":true,"com.nf":true,"net.nf":true,"per.nf":true,"rec.nf":true,"web.nf":true,"arts.nf":true,"firm.nf":true,"info.nf":true,"other.nf":true,"store.nf":true,"ac.ng":true,"com.ng":true,"edu.ng":true,"gov.ng":true,"net.ng":true,"org.ng":true,"*.ni":true,"nl":true,"bv.nl":true,"no":true,"fhs.no":true,"vgs.no":true,"fylkesbibl.no":true,"folkebibl.no":true,"museum.no":true,"idrett.no":true,"priv.no":true,"mil.no":true,"stat.no":true,"dep.no":true,"kommune.no":true,"herad.no":true,"aa.no":true,"ah.no":true,"bu.no":true,"fm.no":true,"hl.no":true,"hm.no":true,"jan-mayen.no":true,"mr.no":true,"nl.no":true,"nt.no":true,"of.no":true,"ol.no":true,"oslo.no":true,"rl.no":true,"sf.no":true,"st.no":true,"svalbard.no":true,"tm.no":true,"tr.no":true,"va.no":true,"vf.no":true,"gs.aa.no":true,"gs.ah.no":true,"gs.bu.no":true,"gs.fm.no":true,"gs.hl.no":true,"gs.hm.no":true,"gs.jan-mayen.no":true,"gs.mr.no":true,"gs.nl.no":true,"gs.nt.no":true,"gs.of.no":true,"gs.ol.no":true,"gs.oslo.no":true,"gs.rl.no":true,"gs.sf.no":true,"gs.st.no":true,"gs.svalbard.no":true,"gs.tm.no":true,"gs.tr.no":true,"gs.va.no":true,"gs.vf.no":true,"akrehamn.no":true,"xn--krehamn-dxa.no":true,"algard.no":true,"xn--lgrd-poac.no":true,"arna.no":true,"brumunddal.no":true,"bryne.no":true,"bronnoysund.no":true,"xn--brnnysund-m8ac.no":true,"drobak.no":true,"xn--drbak-wua.no":true,"egersund.no":true,"fetsund.no":true,"floro.no":true,"xn--flor-jra.no":true,"fredrikstad.no":true,"hokksund.no":true,"honefoss.no":true,"xn--hnefoss-q1a.no":true,"jessheim.no":true,"jorpeland.no":true,"xn--jrpeland-54a.no":true,"kirkenes.no":true,"kopervik.no":true,"krokstadelva.no":true,"langevag.no":true,"xn--langevg-jxa.no":true,"leirvik.no":true,"mjondalen.no":true,"xn--mjndalen-64a.no":true,"mo-i-rana.no":true,"mosjoen.no":true,"xn--mosjen-eya.no":true,"nesoddtangen.no":true,"orkanger.no":true,"osoyro.no":true,"xn--osyro-wua.no":true,"raholt.no":true,"xn--rholt-mra.no":true,"sandnessjoen.no":true,"xn--sandnessjen-ogb.no":true,"skedsmokorset.no":true,"slattum.no":true,"spjelkavik.no":true,"stathelle.no":true,"stavern.no":true,"stjordalshalsen.no":true,"xn--stjrdalshalsen-sqb.no":true,"tananger.no":true,"tranby.no":true,"vossevangen.no":true,"afjord.no":true,"xn--fjord-lra.no":true,"agdenes.no":true,"al.no":true,"xn--l-1fa.no":true,"alesund.no":true,"xn--lesund-hua.no":true,"alstahaug.no":true,"alta.no":true,"xn--lt-liac.no":true,"alaheadju.no":true,"xn--laheadju-7ya.no":true,"alvdal.no":true,"amli.no":true,"xn--mli-tla.no":true,"amot.no":true,"xn--mot-tla.no":true,"andebu.no":true,"andoy.no":true,"xn--andy-ira.no":true,"andasuolo.no":true,"ardal.no":true,"xn--rdal-poa.no":true,"aremark.no":true,"arendal.no":true,"xn--s-1fa.no":true,"aseral.no":true,"xn--seral-lra.no":true,"asker.no":true,"askim.no":true,"askvoll.no":true,"askoy.no":true,"xn--asky-ira.no":true,"asnes.no":true,"xn--snes-poa.no":true,"audnedaln.no":true,"aukra.no":true,"aure.no":true,"aurland.no":true,"aurskog-holand.no":true,"xn--aurskog-hland-jnb.no":true,"austevoll.no":true,"austrheim.no":true,"averoy.no":true,"xn--avery-yua.no":true,"balestrand.no":true,"ballangen.no":true,"balat.no":true,"xn--blt-elab.no":true,"balsfjord.no":true,"bahccavuotna.no":true,"xn--bhccavuotna-k7a.no":true,"bamble.no":true,"bardu.no":true,"beardu.no":true,"beiarn.no":true,"bajddar.no":true,"xn--bjddar-pta.no":true,"baidar.no":true,"xn--bidr-5nac.no":true,"berg.no":true,"bergen.no":true,"berlevag.no":true,"xn--berlevg-jxa.no":true,"bearalvahki.no":true,"xn--bearalvhki-y4a.no":true,"bindal.no":true,"birkenes.no":true,"bjarkoy.no":true,"xn--bjarky-fya.no":true,"bjerkreim.no":true,"bjugn.no":true,"bodo.no":true,"xn--bod-2na.no":true,"badaddja.no":true,"xn--bdddj-mrabd.no":true,"budejju.no":true,"bokn.no":true,"bremanger.no":true,"bronnoy.no":true,"xn--brnny-wuac.no":true,"bygland.no":true,"bykle.no":true,"barum.no":true,"xn--brum-voa.no":true,"bo.telemark.no":true,"xn--b-5ga.telemark.no":true,"bo.nordland.no":true,"xn--b-5ga.nordland.no":true,"bievat.no":true,"xn--bievt-0qa.no":true,"bomlo.no":true,"xn--bmlo-gra.no":true,"batsfjord.no":true,"xn--btsfjord-9za.no":true,"bahcavuotna.no":true,"xn--bhcavuotna-s4a.no":true,"dovre.no":true,"drammen.no":true,"drangedal.no":true,"dyroy.no":true,"xn--dyry-ira.no":true,"donna.no":true,"xn--dnna-gra.no":true,"eid.no":true,"eidfjord.no":true,"eidsberg.no":true,"eidskog.no":true,"eidsvoll.no":true,"eigersund.no":true,"elverum.no":true,"enebakk.no":true,"engerdal.no":true,"etne.no":true,"etnedal.no":true,"evenes.no":true,"evenassi.no":true,"xn--eveni-0qa01ga.no":true,"evje-og-hornnes.no":true,"farsund.no":true,"fauske.no":true,"fuossko.no":true,"fuoisku.no":true,"fedje.no":true,"fet.no":true,"finnoy.no":true,"xn--finny-yua.no":true,"fitjar.no":true,"fjaler.no":true,"fjell.no":true,"flakstad.no":true,"flatanger.no":true,"flekkefjord.no":true,"flesberg.no":true,"flora.no":true,"fla.no":true,"xn--fl-zia.no":true,"folldal.no":true,"forsand.no":true,"fosnes.no":true,"frei.no":true,"frogn.no":true,"froland.no":true,"frosta.no":true,"frana.no":true,"xn--frna-woa.no":true,"froya.no":true,"xn--frya-hra.no":true,"fusa.no":true,"fyresdal.no":true,"forde.no":true,"xn--frde-gra.no":true,"gamvik.no":true,"gangaviika.no":true,"xn--ggaviika-8ya47h.no":true,"gaular.no":true,"gausdal.no":true,"gildeskal.no":true,"xn--gildeskl-g0a.no":true,"giske.no":true,"gjemnes.no":true,"gjerdrum.no":true,"gjerstad.no":true,"gjesdal.no":true,"gjovik.no":true,"xn--gjvik-wua.no":true,"gloppen.no":true,"gol.no":true,"gran.no":true,"grane.no":true,"granvin.no":true,"gratangen.no":true,"grimstad.no":true,"grong.no":true,"kraanghke.no":true,"xn--kranghke-b0a.no":true,"grue.no":true,"gulen.no":true,"hadsel.no":true,"halden.no":true,"halsa.no":true,"hamar.no":true,"hamaroy.no":true,"habmer.no":true,"xn--hbmer-xqa.no":true,"hapmir.no":true,"xn--hpmir-xqa.no":true,"hammerfest.no":true,"hammarfeasta.no":true,"xn--hmmrfeasta-s4ac.no":true,"haram.no":true,"hareid.no":true,"harstad.no":true,"hasvik.no":true,"aknoluokta.no":true,"xn--koluokta-7ya57h.no":true,"hattfjelldal.no":true,"aarborte.no":true,"haugesund.no":true,"hemne.no":true,"hemnes.no":true,"hemsedal.no":true,"heroy.more-og-romsdal.no":true,"xn--hery-ira.xn--mre-og-romsdal-qqb.no":true,"heroy.nordland.no":true,"xn--hery-ira.nordland.no":true,"hitra.no":true,"hjartdal.no":true,"hjelmeland.no":true,"hobol.no":true,"xn--hobl-ira.no":true,"hof.no":true,"hol.no":true,"hole.no":true,"holmestrand.no":true,"holtalen.no":true,"xn--holtlen-hxa.no":true,"hornindal.no":true,"horten.no":true,"hurdal.no":true,"hurum.no":true,"hvaler.no":true,"hyllestad.no":true,"hagebostad.no":true,"xn--hgebostad-g3a.no":true,"hoyanger.no":true,"xn--hyanger-q1a.no":true,"hoylandet.no":true,"xn--hylandet-54a.no":true,"ha.no":true,"xn--h-2fa.no":true,"ibestad.no":true,"inderoy.no":true,"xn--indery-fya.no":true,"iveland.no":true,"jevnaker.no":true,"jondal.no":true,"jolster.no":true,"xn--jlster-bya.no":true,"karasjok.no":true,"karasjohka.no":true,"xn--krjohka-hwab49j.no":true,"karlsoy.no":true,"galsa.no":true,"xn--gls-elac.no":true,"karmoy.no":true,"xn--karmy-yua.no":true,"kautokeino.no":true,"guovdageaidnu.no":true,"klepp.no":true,"klabu.no":true,"xn--klbu-woa.no":true,"kongsberg.no":true,"kongsvinger.no":true,"kragero.no":true,"xn--krager-gya.no":true,"kristiansand.no":true,"kristiansund.no":true,"krodsherad.no":true,"xn--krdsherad-m8a.no":true,"kvalsund.no":true,"rahkkeravju.no":true,"xn--rhkkervju-01af.no":true,"kvam.no":true,"kvinesdal.no":true,"kvinnherad.no":true,"kviteseid.no":true,"kvitsoy.no":true,"xn--kvitsy-fya.no":true,"kvafjord.no":true,"xn--kvfjord-nxa.no":true,"giehtavuoatna.no":true,"kvanangen.no":true,"xn--kvnangen-k0a.no":true,"navuotna.no":true,"xn--nvuotna-hwa.no":true,"kafjord.no":true,"xn--kfjord-iua.no":true,"gaivuotna.no":true,"xn--givuotna-8ya.no":true,"larvik.no":true,"lavangen.no":true,"lavagis.no":true,"loabat.no":true,"xn--loabt-0qa.no":true,"lebesby.no":true,"davvesiida.no":true,"leikanger.no":true,"leirfjord.no":true,"leka.no":true,"leksvik.no":true,"lenvik.no":true,"leangaviika.no":true,"xn--leagaviika-52b.no":true,"lesja.no":true,"levanger.no":true,"lier.no":true,"lierne.no":true,"lillehammer.no":true,"lillesand.no":true,"lindesnes.no":true,"lindas.no":true,"xn--linds-pra.no":true,"lom.no":true,"loppa.no":true,"lahppi.no":true,"xn--lhppi-xqa.no":true,"lund.no":true,"lunner.no":true,"luroy.no":true,"xn--lury-ira.no":true,"luster.no":true,"lyngdal.no":true,"lyngen.no":true,"ivgu.no":true,"lardal.no":true,"lerdal.no":true,"xn--lrdal-sra.no":true,"lodingen.no":true,"xn--ldingen-q1a.no":true,"lorenskog.no":true,"xn--lrenskog-54a.no":true,"loten.no":true,"xn--lten-gra.no":true,"malvik.no":true,"masoy.no":true,"xn--msy-ula0h.no":true,"muosat.no":true,"xn--muost-0qa.no":true,"mandal.no":true,"marker.no":true,"marnardal.no":true,"masfjorden.no":true,"meland.no":true,"meldal.no":true,"melhus.no":true,"meloy.no":true,"xn--mely-ira.no":true,"meraker.no":true,"xn--merker-kua.no":true,"moareke.no":true,"xn--moreke-jua.no":true,"midsund.no":true,"midtre-gauldal.no":true,"modalen.no":true,"modum.no":true,"molde.no":true,"moskenes.no":true,"moss.no":true,"mosvik.no":true,"malselv.no":true,"xn--mlselv-iua.no":true,"malatvuopmi.no":true,"xn--mlatvuopmi-s4a.no":true,"namdalseid.no":true,"aejrie.no":true,"namsos.no":true,"namsskogan.no":true,"naamesjevuemie.no":true,"xn--nmesjevuemie-tcba.no":true,"laakesvuemie.no":true,"nannestad.no":true,"narvik.no":true,"narviika.no":true,"naustdal.no":true,"nedre-eiker.no":true,"nes.akershus.no":true,"nes.buskerud.no":true,"nesna.no":true,"nesodden.no":true,"nesseby.no":true,"unjarga.no":true,"xn--unjrga-rta.no":true,"nesset.no":true,"nissedal.no":true,"nittedal.no":true,"nord-aurdal.no":true,"nord-fron.no":true,"nord-odal.no":true,"norddal.no":true,"nordkapp.no":true,"davvenjarga.no":true,"xn--davvenjrga-y4a.no":true,"nordre-land.no":true,"nordreisa.no":true,"raisa.no":true,"xn--risa-5na.no":true,"nore-og-uvdal.no":true,"notodden.no":true,"naroy.no":true,"xn--nry-yla5g.no":true,"notteroy.no":true,"xn--nttery-byae.no":true,"odda.no":true,"oksnes.no":true,"xn--ksnes-uua.no":true,"oppdal.no":true,"oppegard.no":true,"xn--oppegrd-ixa.no":true,"orkdal.no":true,"orland.no":true,"xn--rland-uua.no":true,"orskog.no":true,"xn--rskog-uua.no":true,"orsta.no":true,"xn--rsta-fra.no":true,"os.hedmark.no":true,"os.hordaland.no":true,"osen.no":true,"osteroy.no":true,"xn--ostery-fya.no":true,"ostre-toten.no":true,"xn--stre-toten-zcb.no":true,"overhalla.no":true,"ovre-eiker.no":true,"xn--vre-eiker-k8a.no":true,"oyer.no":true,"xn--yer-zna.no":true,"oygarden.no":true,"xn--ygarden-p1a.no":true,"oystre-slidre.no":true,"xn--ystre-slidre-ujb.no":true,"porsanger.no":true,"porsangu.no":true,"xn--porsgu-sta26f.no":true,"porsgrunn.no":true,"radoy.no":true,"xn--rady-ira.no":true,"rakkestad.no":true,"rana.no":true,"ruovat.no":true,"randaberg.no":true,"rauma.no":true,"rendalen.no":true,"rennebu.no":true,"rennesoy.no":true,"xn--rennesy-v1a.no":true,"rindal.no":true,"ringebu.no":true,"ringerike.no":true,"ringsaker.no":true,"rissa.no":true,"risor.no":true,"xn--risr-ira.no":true,"roan.no":true,"rollag.no":true,"rygge.no":true,"ralingen.no":true,"xn--rlingen-mxa.no":true,"rodoy.no":true,"xn--rdy-0nab.no":true,"romskog.no":true,"xn--rmskog-bya.no":true,"roros.no":true,"xn--rros-gra.no":true,"rost.no":true,"xn--rst-0na.no":true,"royken.no":true,"xn--ryken-vua.no":true,"royrvik.no":true,"xn--ryrvik-bya.no":true,"rade.no":true,"xn--rde-ula.no":true,"salangen.no":true,"siellak.no":true,"saltdal.no":true,"salat.no":true,"xn--slt-elab.no":true,"xn--slat-5na.no":true,"samnanger.no":true,"sande.more-og-romsdal.no":true,"sande.xn--mre-og-romsdal-qqb.no":true,"sande.vestfold.no":true,"sandefjord.no":true,"sandnes.no":true,"sandoy.no":true,"xn--sandy-yua.no":true,"sarpsborg.no":true,"sauda.no":true,"sauherad.no":true,"sel.no":true,"selbu.no":true,"selje.no":true,"seljord.no":true,"sigdal.no":true,"siljan.no":true,"sirdal.no":true,"skaun.no":true,"skedsmo.no":true,"ski.no":true,"skien.no":true,"skiptvet.no":true,"skjervoy.no":true,"xn--skjervy-v1a.no":true,"skierva.no":true,"xn--skierv-uta.no":true,"skjak.no":true,"xn--skjk-soa.no":true,"skodje.no":true,"skanland.no":true,"xn--sknland-fxa.no":true,"skanit.no":true,"xn--sknit-yqa.no":true,"smola.no":true,"xn--smla-hra.no":true,"snillfjord.no":true,"snasa.no":true,"xn--snsa-roa.no":true,"snoasa.no":true,"snaase.no":true,"xn--snase-nra.no":true,"sogndal.no":true,"sokndal.no":true,"sola.no":true,"solund.no":true,"songdalen.no":true,"sortland.no":true,"spydeberg.no":true,"stange.no":true,"stavanger.no":true,"steigen.no":true,"steinkjer.no":true,"stjordal.no":true,"xn--stjrdal-s1a.no":true,"stokke.no":true,"stor-elvdal.no":true,"stord.no":true,"stordal.no":true,"storfjord.no":true,"omasvuotna.no":true,"strand.no":true,"stranda.no":true,"stryn.no":true,"sula.no":true,"suldal.no":true,"sund.no":true,"sunndal.no":true,"surnadal.no":true,"sveio.no":true,"svelvik.no":true,"sykkylven.no":true,"sogne.no":true,"xn--sgne-gra.no":true,"somna.no":true,"xn--smna-gra.no":true,"sondre-land.no":true,"xn--sndre-land-0cb.no":true,"sor-aurdal.no":true,"xn--sr-aurdal-l8a.no":true,"sor-fron.no":true,"xn--sr-fron-q1a.no":true,"sor-odal.no":true,"xn--sr-odal-q1a.no":true,"sor-varanger.no":true,"xn--sr-varanger-ggb.no":true,"matta-varjjat.no":true,"xn--mtta-vrjjat-k7af.no":true,"sorfold.no":true,"xn--srfold-bya.no":true,"sorreisa.no":true,"xn--srreisa-q1a.no":true,"sorum.no":true,"xn--srum-gra.no":true,"tana.no":true,"deatnu.no":true,"time.no":true,"tingvoll.no":true,"tinn.no":true,"tjeldsund.no":true,"dielddanuorri.no":true,"tjome.no":true,"xn--tjme-hra.no":true,"tokke.no":true,"tolga.no":true,"torsken.no":true,"tranoy.no":true,"xn--trany-yua.no":true,"tromso.no":true,"xn--troms-zua.no":true,"tromsa.no":true,"romsa.no":true,"trondheim.no":true,"troandin.no":true,"trysil.no":true,"trana.no":true,"xn--trna-woa.no":true,"trogstad.no":true,"xn--trgstad-r1a.no":true,"tvedestrand.no":true,"tydal.no":true,"tynset.no":true,"tysfjord.no":true,"divtasvuodna.no":true,"divttasvuotna.no":true,"tysnes.no":true,"tysvar.no":true,"xn--tysvr-vra.no":true,"tonsberg.no":true,"xn--tnsberg-q1a.no":true,"ullensaker.no":true,"ullensvang.no":true,"ulvik.no":true,"utsira.no":true,"vadso.no":true,"xn--vads-jra.no":true,"cahcesuolo.no":true,"xn--hcesuolo-7ya35b.no":true,"vaksdal.no":true,"valle.no":true,"vang.no":true,"vanylven.no":true,"vardo.no":true,"xn--vard-jra.no":true,"varggat.no":true,"xn--vrggt-xqad.no":true,"vefsn.no":true,"vaapste.no":true,"vega.no":true,"vegarshei.no":true,"xn--vegrshei-c0a.no":true,"vennesla.no":true,"verdal.no":true,"verran.no":true,"vestby.no":true,"vestnes.no":true,"vestre-slidre.no":true,"vestre-toten.no":true,"vestvagoy.no":true,"xn--vestvgy-ixa6o.no":true,"vevelstad.no":true,"vik.no":true,"vikna.no":true,"vindafjord.no":true,"volda.no":true,"voss.no":true,"varoy.no":true,"xn--vry-yla5g.no":true,"vagan.no":true,"xn--vgan-qoa.no":true,"voagat.no":true,"vagsoy.no":true,"xn--vgsy-qoa0j.no":true,"vaga.no":true,"xn--vg-yiab.no":true,"valer.ostfold.no":true,"xn--vler-qoa.xn--stfold-9xa.no":true,"valer.hedmark.no":true,"xn--vler-qoa.hedmark.no":true,"*.np":true,"nr":true,"biz.nr":true,"info.nr":true,"gov.nr":true,"edu.nr":true,"org.nr":true,"net.nr":true,"com.nr":true,"nu":true,"*.nz":true,"*.om":true,"mediaphone.om":false,"nawrastelecom.om":false,"nawras.om":false,"omanmobile.om":false,"omanpost.om":false,"omantel.om":false,"rakpetroleum.om":false,"siemens.om":false,"songfest.om":false,"statecouncil.om":false,"org":true,"pa":true,"ac.pa":true,"gob.pa":true,"com.pa":true,"org.pa":true,"sld.pa":true,"edu.pa":true,"net.pa":true,"ing.pa":true,"abo.pa":true,"med.pa":true,"nom.pa":true,"pe":true,"edu.pe":true,"gob.pe":true,"nom.pe":true,"mil.pe":true,"org.pe":true,"com.pe":true,"net.pe":true,"pf":true,"com.pf":true,"org.pf":true,"edu.pf":true,"*.pg":true,"ph":true,"com.ph":true,"net.ph":true,"org.ph":true,"gov.ph":true,"edu.ph":true,"ngo.ph":true,"mil.ph":true,"i.ph":true,"pk":true,"com.pk":true,"net.pk":true,"edu.pk":true,"org.pk":true,"fam.pk":true,"biz.pk":true,"web.pk":true,"gov.pk":true,"gob.pk":true,"gok.pk":true,"gon.pk":true,"gop.pk":true,"gos.pk":true,"info.pk":true,"pl":true,"aid.pl":true,"agro.pl":true,"atm.pl":true,"auto.pl":true,"biz.pl":true,"com.pl":true,"edu.pl":true,"gmina.pl":true,"gsm.pl":true,"info.pl":true,"mail.pl":true,"miasta.pl":true,"media.pl":true,"mil.pl":true,"net.pl":true,"nieruchomosci.pl":true,"nom.pl":true,"org.pl":true,"pc.pl":true,"powiat.pl":true,"priv.pl":true,"realestate.pl":true,"rel.pl":true,"sex.pl":true,"shop.pl":true,"sklep.pl":true,"sos.pl":true,"szkola.pl":true,"targi.pl":true,"tm.pl":true,"tourism.pl":true,"travel.pl":true,"turystyka.pl":true,"6bone.pl":true,"art.pl":true,"mbone.pl":true,"gov.pl":true,"uw.gov.pl":true,"um.gov.pl":true,"ug.gov.pl":true,"upow.gov.pl":true,"starostwo.gov.pl":true,"so.gov.pl":true,"sr.gov.pl":true,"po.gov.pl":true,"pa.gov.pl":true,"ngo.pl":true,"irc.pl":true,"usenet.pl":true,"augustow.pl":true,"babia-gora.pl":true,"bedzin.pl":true,"beskidy.pl":true,"bialowieza.pl":true,"bialystok.pl":true,"bielawa.pl":true,"bieszczady.pl":true,"boleslawiec.pl":true,"bydgoszcz.pl":true,"bytom.pl":true,"cieszyn.pl":true,"czeladz.pl":true,"czest.pl":true,"dlugoleka.pl":true,"elblag.pl":true,"elk.pl":true,"glogow.pl":true,"gniezno.pl":true,"gorlice.pl":true,"grajewo.pl":true,"ilawa.pl":true,"jaworzno.pl":true,"jelenia-gora.pl":true,"jgora.pl":true,"kalisz.pl":true,"kazimierz-dolny.pl":true,"karpacz.pl":true,"kartuzy.pl":true,"kaszuby.pl":true,"katowice.pl":true,"kepno.pl":true,"ketrzyn.pl":true,"klodzko.pl":true,"kobierzyce.pl":true,"kolobrzeg.pl":true,"konin.pl":true,"konskowola.pl":true,"kutno.pl":true,"lapy.pl":true,"lebork.pl":true,"legnica.pl":true,"lezajsk.pl":true,"limanowa.pl":true,"lomza.pl":true,"lowicz.pl":true,"lubin.pl":true,"lukow.pl":true,"malbork.pl":true,"malopolska.pl":true,"mazowsze.pl":true,"mazury.pl":true,"mielec.pl":true,"mielno.pl":true,"mragowo.pl":true,"naklo.pl":true,"nowaruda.pl":true,"nysa.pl":true,"olawa.pl":true,"olecko.pl":true,"olkusz.pl":true,"olsztyn.pl":true,"opoczno.pl":true,"opole.pl":true,"ostroda.pl":true,"ostroleka.pl":true,"ostrowiec.pl":true,"ostrowwlkp.pl":true,"pila.pl":true,"pisz.pl":true,"podhale.pl":true,"podlasie.pl":true,"polkowice.pl":true,"pomorze.pl":true,"pomorskie.pl":true,"prochowice.pl":true,"pruszkow.pl":true,"przeworsk.pl":true,"pulawy.pl":true,"radom.pl":true,"rawa-maz.pl":true,"rybnik.pl":true,"rzeszow.pl":true,"sanok.pl":true,"sejny.pl":true,"siedlce.pl":true,"slask.pl":true,"slupsk.pl":true,"sosnowiec.pl":true,"stalowa-wola.pl":true,"skoczow.pl":true,"starachowice.pl":true,"stargard.pl":true,"suwalki.pl":true,"swidnica.pl":true,"swiebodzin.pl":true,"swinoujscie.pl":true,"szczecin.pl":true,"szczytno.pl":true,"tarnobrzeg.pl":true,"tgory.pl":true,"turek.pl":true,"tychy.pl":true,"ustka.pl":true,"walbrzych.pl":true,"warmia.pl":true,"warszawa.pl":true,"waw.pl":true,"wegrow.pl":true,"wielun.pl":true,"wlocl.pl":true,"wloclawek.pl":true,"wodzislaw.pl":true,"wolomin.pl":true,"wroclaw.pl":true,"zachpomor.pl":true,"zagan.pl":true,"zarow.pl":true,"zgora.pl":true,"zgorzelec.pl":true,"gda.pl":true,"gdansk.pl":true,"gdynia.pl":true,"med.pl":true,"sopot.pl":true,"gliwice.pl":true,"krakow.pl":true,"poznan.pl":true,"wroc.pl":true,"zakopane.pl":true,"pm":true,"pn":true,"gov.pn":true,"co.pn":true,"org.pn":true,"edu.pn":true,"net.pn":true,"pr":true,"com.pr":true,"net.pr":true,"org.pr":true,"gov.pr":true,"edu.pr":true,"isla.pr":true,"pro.pr":true,"biz.pr":true,"info.pr":true,"name.pr":true,"est.pr":true,"prof.pr":true,"ac.pr":true,"pro":true,"aca.pro":true,"bar.pro":true,"cpa.pro":true,"jur.pro":true,"law.pro":true,"med.pro":true,"eng.pro":true,"ps":true,"edu.ps":true,"gov.ps":true,"sec.ps":true,"plo.ps":true,"com.ps":true,"org.ps":true,"net.ps":true,"pt":true,"net.pt":true,"gov.pt":true,"org.pt":true,"edu.pt":true,"int.pt":true,"publ.pt":true,"com.pt":true,"nome.pt":true,"pw":true,"co.pw":true,"ne.pw":true,"or.pw":true,"ed.pw":true,"go.pw":true,"belau.pw":true,"*.py":true,"qa":true,"com.qa":true,"edu.qa":true,"gov.qa":true,"mil.qa":true,"name.qa":true,"net.qa":true,"org.qa":true,"sch.qa":true,"re":true,"com.re":true,"asso.re":true,"nom.re":true,"ro":true,"com.ro":true,"org.ro":true,"tm.ro":true,"nt.ro":true,"nom.ro":true,"info.ro":true,"rec.ro":true,"arts.ro":true,"firm.ro":true,"store.ro":true,"www.ro":true,"rs":true,"co.rs":true,"org.rs":true,"edu.rs":true,"ac.rs":true,"gov.rs":true,"in.rs":true,"ru":true,"ac.ru":true,"com.ru":true,"edu.ru":true,"int.ru":true,"net.ru":true,"org.ru":true,"pp.ru":true,"adygeya.ru":true,"altai.ru":true,"amur.ru":true,"arkhangelsk.ru":true,"astrakhan.ru":true,"bashkiria.ru":true,"belgorod.ru":true,"bir.ru":true,"bryansk.ru":true,"buryatia.ru":true,"cbg.ru":true,"chel.ru":true,"chelyabinsk.ru":true,"chita.ru":true,"chukotka.ru":true,"chuvashia.ru":true,"dagestan.ru":true,"dudinka.ru":true,"e-burg.ru":true,"grozny.ru":true,"irkutsk.ru":true,"ivanovo.ru":true,"izhevsk.ru":true,"jar.ru":true,"joshkar-ola.ru":true,"kalmykia.ru":true,"kaluga.ru":true,"kamchatka.ru":true,"karelia.ru":true,"kazan.ru":true,"kchr.ru":true,"kemerovo.ru":true,"khabarovsk.ru":true,"khakassia.ru":true,"khv.ru":true,"kirov.ru":true,"koenig.ru":true,"komi.ru":true,"kostroma.ru":true,"krasnoyarsk.ru":true,"kuban.ru":true,"kurgan.ru":true,"kursk.ru":true,"lipetsk.ru":true,"magadan.ru":true,"mari.ru":true,"mari-el.ru":true,"marine.ru":true,"mordovia.ru":true,"mosreg.ru":true,"msk.ru":true,"murmansk.ru":true,"nalchik.ru":true,"nnov.ru":true,"nov.ru":true,"novosibirsk.ru":true,"nsk.ru":true,"omsk.ru":true,"orenburg.ru":true,"oryol.ru":true,"palana.ru":true,"penza.ru":true,"perm.ru":true,"pskov.ru":true,"ptz.ru":true,"rnd.ru":true,"ryazan.ru":true,"sakhalin.ru":true,"samara.ru":true,"saratov.ru":true,"simbirsk.ru":true,"smolensk.ru":true,"spb.ru":true,"stavropol.ru":true,"stv.ru":true,"surgut.ru":true,"tambov.ru":true,"tatarstan.ru":true,"tom.ru":true,"tomsk.ru":true,"tsaritsyn.ru":true,"tsk.ru":true,"tula.ru":true,"tuva.ru":true,"tver.ru":true,"tyumen.ru":true,"udm.ru":true,"udmurtia.ru":true,"ulan-ude.ru":true,"vladikavkaz.ru":true,"vladimir.ru":true,"vladivostok.ru":true,"volgograd.ru":true,"vologda.ru":true,"voronezh.ru":true,"vrn.ru":true,"vyatka.ru":true,"yakutia.ru":true,"yamal.ru":true,"yaroslavl.ru":true,"yekaterinburg.ru":true,"yuzhno-sakhalinsk.ru":true,"amursk.ru":true,"baikal.ru":true,"cmw.ru":true,"fareast.ru":true,"jamal.ru":true,"kms.ru":true,"k-uralsk.ru":true,"kustanai.ru":true,"kuzbass.ru":true,"magnitka.ru":true,"mytis.ru":true,"nakhodka.ru":true,"nkz.ru":true,"norilsk.ru":true,"oskol.ru":true,"pyatigorsk.ru":true,"rubtsovsk.ru":true,"snz.ru":true,"syzran.ru":true,"vdonsk.ru":true,"zgrad.ru":true,"gov.ru":true,"mil.ru":true,"test.ru":true,"rw":true,"gov.rw":true,"net.rw":true,"edu.rw":true,"ac.rw":true,"com.rw":true,"co.rw":true,"int.rw":true,"mil.rw":true,"gouv.rw":true,"sa":true,"com.sa":true,"net.sa":true,"org.sa":true,"gov.sa":true,"med.sa":true,"pub.sa":true,"edu.sa":true,"sch.sa":true,"sb":true,"com.sb":true,"edu.sb":true,"gov.sb":true,"net.sb":true,"org.sb":true,"sc":true,"com.sc":true,"gov.sc":true,"net.sc":true,"org.sc":true,"edu.sc":true,"sd":true,"com.sd":true,"net.sd":true,"org.sd":true,"edu.sd":true,"med.sd":true,"gov.sd":true,"info.sd":true,"se":true,"a.se":true,"ac.se":true,"b.se":true,"bd.se":true,"brand.se":true,"c.se":true,"d.se":true,"e.se":true,"f.se":true,"fh.se":true,"fhsk.se":true,"fhv.se":true,"g.se":true,"h.se":true,"i.se":true,"k.se":true,"komforb.se":true,"kommunalforbund.se":true,"komvux.se":true,"l.se":true,"lanbib.se":true,"m.se":true,"n.se":true,"naturbruksgymn.se":true,"o.se":true,"org.se":true,"p.se":true,"parti.se":true,"pp.se":true,"press.se":true,"r.se":true,"s.se":true,"sshn.se":true,"t.se":true,"tm.se":true,"u.se":true,"w.se":true,"x.se":true,"y.se":true,"z.se":true,"sg":true,"com.sg":true,"net.sg":true,"org.sg":true,"gov.sg":true,"edu.sg":true,"per.sg":true,"sh":true,"si":true,"sk":true,"sl":true,"com.sl":true,"net.sl":true,"edu.sl":true,"gov.sl":true,"org.sl":true,"sm":true,"sn":true,"art.sn":true,"com.sn":true,"edu.sn":true,"gouv.sn":true,"org.sn":true,"perso.sn":true,"univ.sn":true,"so":true,"com.so":true,"net.so":true,"org.so":true,"sr":true,"st":true,"co.st":true,"com.st":true,"consulado.st":true,"edu.st":true,"embaixada.st":true,"gov.st":true,"mil.st":true,"net.st":true,"org.st":true,"principe.st":true,"saotome.st":true,"store.st":true,"su":true,"*.sv":true,"sy":true,"edu.sy":true,"gov.sy":true,"net.sy":true,"mil.sy":true,"com.sy":true,"org.sy":true,"sz":true,"co.sz":true,"ac.sz":true,"org.sz":true,"tc":true,"td":true,"tel":true,"tf":true,"tg":true,"th":true,"ac.th":true,"co.th":true,"go.th":true,"in.th":true,"mi.th":true,"net.th":true,"or.th":true,"tj":true,"ac.tj":true,"biz.tj":true,"co.tj":true,"com.tj":true,"edu.tj":true,"go.tj":true,"gov.tj":true,"int.tj":true,"mil.tj":true,"name.tj":true,"net.tj":true,"nic.tj":true,"org.tj":true,"test.tj":true,"web.tj":true,"tk":true,"tl":true,"gov.tl":true,"tm":true,"tn":true,"com.tn":true,"ens.tn":true,"fin.tn":true,"gov.tn":true,"ind.tn":true,"intl.tn":true,"nat.tn":true,"net.tn":true,"org.tn":true,"info.tn":true,"perso.tn":true,"tourism.tn":true,"edunet.tn":true,"rnrt.tn":true,"rns.tn":true,"rnu.tn":true,"mincom.tn":true,"agrinet.tn":true,"defense.tn":true,"turen.tn":true,"to":true,"com.to":true,"gov.to":true,"net.to":true,"org.to":true,"edu.to":true,"mil.to":true,"*.tr":true,"nic.tr":false,"gov.nc.tr":true,"travel":true,"tt":true,"co.tt":true,"com.tt":true,"org.tt":true,"net.tt":true,"biz.tt":true,"info.tt":true,"pro.tt":true,"int.tt":true,"coop.tt":true,"jobs.tt":true,"mobi.tt":true,"travel.tt":true,"museum.tt":true,"aero.tt":true,"name.tt":true,"gov.tt":true,"edu.tt":true,"tv":true,"tw":true,"edu.tw":true,"gov.tw":true,"mil.tw":true,"com.tw":true,"net.tw":true,"org.tw":true,"idv.tw":true,"game.tw":true,"ebiz.tw":true,"club.tw":true,"xn--zf0ao64a.tw":true,"xn--uc0atv.tw":true,"xn--czrw28b.tw":true,"ac.tz":true,"co.tz":true,"go.tz":true,"mil.tz":true,"ne.tz":true,"or.tz":true,"sc.tz":true,"ua":true,"com.ua":true,"edu.ua":true,"gov.ua":true,"in.ua":true,"net.ua":true,"org.ua":true,"cherkassy.ua":true,"chernigov.ua":true,"chernovtsy.ua":true,"ck.ua":true,"cn.ua":true,"crimea.ua":true,"cv.ua":true,"dn.ua":true,"dnepropetrovsk.ua":true,"donetsk.ua":true,"dp.ua":true,"if.ua":true,"ivano-frankivsk.ua":true,"kh.ua":true,"kharkov.ua":true,"kherson.ua":true,"khmelnitskiy.ua":true,"kiev.ua":true,"kirovograd.ua":true,"km.ua":true,"kr.ua":true,"ks.ua":true,"kv.ua":true,"lg.ua":true,"lugansk.ua":true,"lutsk.ua":true,"lviv.ua":true,"mk.ua":true,"nikolaev.ua":true,"od.ua":true,"odessa.ua":true,"pl.ua":true,"poltava.ua":true,"rovno.ua":true,"rv.ua":true,"sebastopol.ua":true,"sumy.ua":true,"te.ua":true,"ternopil.ua":true,"uzhgorod.ua":true,"vinnica.ua":true,"vn.ua":true,"zaporizhzhe.ua":true,"zp.ua":true,"zhitomir.ua":true,"zt.ua":true,"co.ua":true,"pp.ua":true,"ug":true,"co.ug":true,"ac.ug":true,"sc.ug":true,"go.ug":true,"ne.ug":true,"or.ug":true,"*.uk":true,"*.sch.uk":true,"bl.uk":false,"british-library.uk":false,"icnet.uk":false,"jet.uk":false,"mod.uk":false,"nel.uk":false,"nhs.uk":false,"nic.uk":false,"nls.uk":false,"national-library-scotland.uk":false,"parliament.uk":false,"police.uk":false,"us":true,"dni.us":true,"fed.us":true,"isa.us":true,"kids.us":true,"nsn.us":true,"ak.us":true,"al.us":true,"ar.us":true,"as.us":true,"az.us":true,"ca.us":true,"co.us":true,"ct.us":true,"dc.us":true,"de.us":true,"fl.us":true,"ga.us":true,"gu.us":true,"hi.us":true,"ia.us":true,"id.us":true,"il.us":true,"in.us":true,"ks.us":true,"ky.us":true,"la.us":true,"ma.us":true,"md.us":true,"me.us":true,"mi.us":true,"mn.us":true,"mo.us":true,"ms.us":true,"mt.us":true,"nc.us":true,"nd.us":true,"ne.us":true,"nh.us":true,"nj.us":true,"nm.us":true,"nv.us":true,"ny.us":true,"oh.us":true,"ok.us":true,"or.us":true,"pa.us":true,"pr.us":true,"ri.us":true,"sc.us":true,"sd.us":true,"tn.us":true,"tx.us":true,"ut.us":true,"vi.us":true,"vt.us":true,"va.us":true,"wa.us":true,"wi.us":true,"wv.us":true,"wy.us":true,"k12.ak.us":true,"k12.al.us":true,"k12.ar.us":true,"k12.as.us":true,"k12.az.us":true,"k12.ca.us":true,"k12.co.us":true,"k12.ct.us":true,"k12.dc.us":true,"k12.de.us":true,"k12.fl.us":true,"k12.ga.us":true,"k12.gu.us":true,"k12.ia.us":true,"k12.id.us":true,"k12.il.us":true,"k12.in.us":true,"k12.ks.us":true,"k12.ky.us":true,"k12.la.us":true,"k12.ma.us":true,"k12.md.us":true,"k12.me.us":true,"k12.mi.us":true,"k12.mn.us":true,"k12.mo.us":true,"k12.ms.us":true,"k12.mt.us":true,"k12.nc.us":true,"k12.nd.us":true,"k12.ne.us":true,"k12.nh.us":true,"k12.nj.us":true,"k12.nm.us":true,"k12.nv.us":true,"k12.ny.us":true,"k12.oh.us":true,"k12.ok.us":true,"k12.or.us":true,"k12.pa.us":true,"k12.pr.us":true,"k12.ri.us":true,"k12.sc.us":true,"k12.sd.us":true,"k12.tn.us":true,"k12.tx.us":true,"k12.ut.us":true,"k12.vi.us":true,"k12.vt.us":true,"k12.va.us":true,"k12.wa.us":true,"k12.wi.us":true,"k12.wv.us":true,"k12.wy.us":true,"cc.ak.us":true,"cc.al.us":true,"cc.ar.us":true,"cc.as.us":true,"cc.az.us":true,"cc.ca.us":true,"cc.co.us":true,"cc.ct.us":true,"cc.dc.us":true,"cc.de.us":true,"cc.fl.us":true,"cc.ga.us":true,"cc.gu.us":true,"cc.hi.us":true,"cc.ia.us":true,"cc.id.us":true,"cc.il.us":true,"cc.in.us":true,"cc.ks.us":true,"cc.ky.us":true,"cc.la.us":true,"cc.ma.us":true,"cc.md.us":true,"cc.me.us":true,"cc.mi.us":true,"cc.mn.us":true,"cc.mo.us":true,"cc.ms.us":true,"cc.mt.us":true,"cc.nc.us":true,"cc.nd.us":true,"cc.ne.us":true,"cc.nh.us":true,"cc.nj.us":true,"cc.nm.us":true,"cc.nv.us":true,"cc.ny.us":true,"cc.oh.us":true,"cc.ok.us":true,"cc.or.us":true,"cc.pa.us":true,"cc.pr.us":true,"cc.ri.us":true,"cc.sc.us":true,"cc.sd.us":true,"cc.tn.us":true,"cc.tx.us":true,"cc.ut.us":true,"cc.vi.us":true,"cc.vt.us":true,"cc.va.us":true,"cc.wa.us":true,"cc.wi.us":true,"cc.wv.us":true,"cc.wy.us":true,"lib.ak.us":true,"lib.al.us":true,"lib.ar.us":true,"lib.as.us":true,"lib.az.us":true,"lib.ca.us":true,"lib.co.us":true,"lib.ct.us":true,"lib.dc.us":true,"lib.de.us":true,"lib.fl.us":true,"lib.ga.us":true,"lib.gu.us":true,"lib.hi.us":true,"lib.ia.us":true,"lib.id.us":true,"lib.il.us":true,"lib.in.us":true,"lib.ks.us":true,"lib.ky.us":true,"lib.la.us":true,"lib.ma.us":true,"lib.md.us":true,"lib.me.us":true,"lib.mi.us":true,"lib.mn.us":true,"lib.mo.us":true,"lib.ms.us":true,"lib.mt.us":true,"lib.nc.us":true,"lib.nd.us":true,"lib.ne.us":true,"lib.nh.us":true,"lib.nj.us":true,"lib.nm.us":true,"lib.nv.us":true,"lib.ny.us":true,"lib.oh.us":true,"lib.ok.us":true,"lib.or.us":true,"lib.pa.us":true,"lib.pr.us":true,"lib.ri.us":true,"lib.sc.us":true,"lib.sd.us":true,"lib.tn.us":true,"lib.tx.us":true,"lib.ut.us":true,"lib.vi.us":true,"lib.vt.us":true,"lib.va.us":true,"lib.wa.us":true,"lib.wi.us":true,"lib.wv.us":true,"lib.wy.us":true,"pvt.k12.ma.us":true,"chtr.k12.ma.us":true,"paroch.k12.ma.us":true,"*.uy":true,"uz":true,"com.uz":true,"co.uz":true,"va":true,"vc":true,"com.vc":true,"net.vc":true,"org.vc":true,"gov.vc":true,"mil.vc":true,"edu.vc":true,"*.ve":true,"vg":true,"vi":true,"co.vi":true,"com.vi":true,"k12.vi":true,"net.vi":true,"org.vi":true,"vn":true,"com.vn":true,"net.vn":true,"org.vn":true,"edu.vn":true,"gov.vn":true,"int.vn":true,"ac.vn":true,"biz.vn":true,"info.vn":true,"name.vn":true,"pro.vn":true,"health.vn":true,"vu":true,"wf":true,"ws":true,"com.ws":true,"net.ws":true,"org.ws":true,"gov.ws":true,"edu.ws":true,"yt":true,"xn--mgbaam7a8h":true,"xn--54b7fta0cc":true,"xn--fiqs8s":true,"xn--fiqz9s":true,"xn--lgbbat1ad8j":true,"xn--wgbh1c":true,"xn--node":true,"xn--j6w193g":true,"xn--h2brj9c":true,"xn--mgbbh1a71e":true,"xn--fpcrj9c3d":true,"xn--gecrj9c":true,"xn--s9brj9c":true,"xn--45brj9c":true,"xn--xkc2dl3a5ee0h":true,"xn--mgba3a4f16a":true,"xn--mgba3a4fra":true,"xn--mgbayh7gpa":true,"xn--3e0b707e":true,"xn--fzc2c9e2c":true,"xn--xkc2al3hye2a":true,"xn--mgbc0a9azcg":true,"xn--mgb9awbf":true,"xn--ygbi2ammx":true,"xn--90a3ac":true,"xn--p1ai":true,"xn--wgbl6a":true,"xn--mgberp4a5d4ar":true,"xn--mgberp4a5d4a87g":true,"xn--mgbqly7c0a67fbc":true,"xn--mgbqly7cvafr":true,"xn--ogbpf8fl":true,"xn--mgbtf8fl":true,"xn--yfro4i67o":true,"xn--clchc0ea0b2g2a9gcd":true,"xn--o3cw4h":true,"xn--pgbs0dh":true,"xn--kpry57d":true,"xn--kprw13d":true,"xn--nnx388a":true,"xn--j1amh":true,"xn--mgb2ddes":true,"xxx":true,"*.ye":true,"*.za":true,"*.zm":true,"*.zw":true,"biz.at":true,"info.at":true,"priv.at":true,"co.ca":true,"ar.com":true,"br.com":true,"cn.com":true,"de.com":true,"eu.com":true,"gb.com":true,"gr.com":true,"hu.com":true,"jpn.com":true,"kr.com":true,"no.com":true,"qc.com":true,"ru.com":true,"sa.com":true,"se.com":true,"uk.com":true,"us.com":true,"uy.com":true,"za.com":true,"gb.net":true,"jp.net":true,"se.net":true,"uk.net":true,"ae.org":true,"us.org":true,"com.de":true,"operaunite.com":true,"appspot.com":true,"iki.fi":true,"c.la":true,"za.net":true,"za.org":true,"co.nl":true,"co.no":true,"co.pl":true,"dyndns-at-home.com":true,"dyndns-at-work.com":true,"dyndns-blog.com":true,"dyndns-free.com":true,"dyndns-home.com":true,"dyndns-ip.com":true,"dyndns-mail.com":true,"dyndns-office.com":true,"dyndns-pics.com":true,"dyndns-remote.com":true,"dyndns-server.com":true,"dyndns-web.com":true,"dyndns-wiki.com":true,"dyndns-work.com":true,"dyndns.biz":true,"dyndns.info":true,"dyndns.org":true,"dyndns.tv":true,"at-band-camp.net":true,"ath.cx":true,"barrel-of-knowledge.info":true,"barrell-of-knowledge.info":true,"better-than.tv":true,"blogdns.com":true,"blogdns.net":true,"blogdns.org":true,"blogsite.org":true,"boldlygoingnowhere.org":true,"broke-it.net":true,"buyshouses.net":true,"cechire.com":true,"dnsalias.com":true,"dnsalias.net":true,"dnsalias.org":true,"dnsdojo.com":true,"dnsdojo.net":true,"dnsdojo.org":true,"does-it.net":true,"doesntexist.com":true,"doesntexist.org":true,"dontexist.com":true,"dontexist.net":true,"dontexist.org":true,"doomdns.com":true,"doomdns.org":true,"dvrdns.org":true,"dyn-o-saur.com":true,"dynalias.com":true,"dynalias.net":true,"dynalias.org":true,"dynathome.net":true,"dyndns.ws":true,"endofinternet.net":true,"endofinternet.org":true,"endoftheinternet.org":true,"est-a-la-maison.com":true,"est-a-la-masion.com":true,"est-le-patron.com":true,"est-mon-blogueur.com":true,"for-better.biz":true,"for-more.biz":true,"for-our.info":true,"for-some.biz":true,"for-the.biz":true,"forgot.her.name":true,"forgot.his.name":true,"from-ak.com":true,"from-al.com":true,"from-ar.com":true,"from-az.net":true,"from-ca.com":true,"from-co.net":true,"from-ct.com":true,"from-dc.com":true,"from-de.com":true,"from-fl.com":true,"from-ga.com":true,"from-hi.com":true,"from-ia.com":true,"from-id.com":true,"from-il.com":true,"from-in.com":true,"from-ks.com":true,"from-ky.com":true,"from-la.net":true,"from-ma.com":true,"from-md.com":true,"from-me.org":true,"from-mi.com":true,"from-mn.com":true,"from-mo.com":true,"from-ms.com":true,"from-mt.com":true,"from-nc.com":true,"from-nd.com":true,"from-ne.com":true,"from-nh.com":true,"from-nj.com":true,"from-nm.com":true,"from-nv.com":true,"from-ny.net":true,"from-oh.com":true,"from-ok.com":true,"from-or.com":true,"from-pa.com":true,"from-pr.com":true,"from-ri.com":true,"from-sc.com":true,"from-sd.com":true,"from-tn.com":true,"from-tx.com":true,"from-ut.com":true,"from-va.com":true,"from-vt.com":true,"from-wa.com":true,"from-wi.com":true,"from-wv.com":true,"from-wy.com":true,"ftpaccess.cc":true,"fuettertdasnetz.de":true,"game-host.org":true,"game-server.cc":true,"getmyip.com":true,"gets-it.net":true,"go.dyndns.org":true,"gotdns.com":true,"gotdns.org":true,"groks-the.info":true,"groks-this.info":true,"ham-radio-op.net":true,"here-for-more.info":true,"hobby-site.com":true,"hobby-site.org":true,"home.dyndns.org":true,"homedns.org":true,"homeftp.net":true,"homeftp.org":true,"homeip.net":true,"homelinux.com":true,"homelinux.net":true,"homelinux.org":true,"homeunix.com":true,"homeunix.net":true,"homeunix.org":true,"iamallama.com":true,"in-the-band.net":true,"is-a-anarchist.com":true,"is-a-blogger.com":true,"is-a-bookkeeper.com":true,"is-a-bruinsfan.org":true,"is-a-bulls-fan.com":true,"is-a-candidate.org":true,"is-a-caterer.com":true,"is-a-celticsfan.org":true,"is-a-chef.com":true,"is-a-chef.net":true,"is-a-chef.org":true,"is-a-conservative.com":true,"is-a-cpa.com":true,"is-a-cubicle-slave.com":true,"is-a-democrat.com":true,"is-a-designer.com":true,"is-a-doctor.com":true,"is-a-financialadvisor.com":true,"is-a-geek.com":true,"is-a-geek.net":true,"is-a-geek.org":true,"is-a-green.com":true,"is-a-guru.com":true,"is-a-hard-worker.com":true,"is-a-hunter.com":true,"is-a-knight.org":true,"is-a-landscaper.com":true,"is-a-lawyer.com":true,"is-a-liberal.com":true,"is-a-libertarian.com":true,"is-a-linux-user.org":true,"is-a-llama.com":true,"is-a-musician.com":true,"is-a-nascarfan.com":true,"is-a-nurse.com":true,"is-a-painter.com":true,"is-a-patsfan.org":true,"is-a-personaltrainer.com":true,"is-a-photographer.com":true,"is-a-player.com":true,"is-a-republican.com":true,"is-a-rockstar.com":true,"is-a-socialist.com":true,"is-a-soxfan.org":true,"is-a-student.com":true,"is-a-teacher.com":true,"is-a-techie.com":true,"is-a-therapist.com":true,"is-an-accountant.com":true,"is-an-actor.com":true,"is-an-actress.com":true,"is-an-anarchist.com":true,"is-an-artist.com":true,"is-an-engineer.com":true,"is-an-entertainer.com":true,"is-by.us":true,"is-certified.com":true,"is-found.org":true,"is-gone.com":true,"is-into-anime.com":true,"is-into-cars.com":true,"is-into-cartoons.com":true,"is-into-games.com":true,"is-leet.com":true,"is-lost.org":true,"is-not-certified.com":true,"is-saved.org":true,"is-slick.com":true,"is-uberleet.com":true,"is-very-bad.org":true,"is-very-evil.org":true,"is-very-good.org":true,"is-very-nice.org":true,"is-very-sweet.org":true,"is-with-theband.com":true,"isa-geek.com":true,"isa-geek.net":true,"isa-geek.org":true,"isa-hockeynut.com":true,"issmarterthanyou.com":true,"isteingeek.de":true,"istmein.de":true,"kicks-ass.net":true,"kicks-ass.org":true,"knowsitall.info":true,"land-4-sale.us":true,"lebtimnetz.de":true,"leitungsen.de":true,"likes-pie.com":true,"likescandy.com":true,"merseine.nu":true,"mine.nu":true,"misconfused.org":true,"mypets.ws":true,"myphotos.cc":true,"neat-url.com":true,"office-on-the.net":true,"on-the-web.tv":true,"podzone.net":true,"podzone.org":true,"readmyblog.org":true,"saves-the-whales.com":true,"scrapper-site.net":true,"scrapping.cc":true,"selfip.biz":true,"selfip.com":true,"selfip.info":true,"selfip.net":true,"selfip.org":true,"sells-for-less.com":true,"sells-for-u.com":true,"sells-it.net":true,"sellsyourhome.org":true,"servebbs.com":true,"servebbs.net":true,"servebbs.org":true,"serveftp.net":true,"serveftp.org":true,"servegame.org":true,"shacknet.nu":true,"simple-url.com":true,"space-to-rent.com":true,"stuff-4-sale.org":true,"stuff-4-sale.us":true,"teaches-yoga.com":true,"thruhere.net":true,"traeumtgerade.de":true,"webhop.biz":true,"webhop.info":true,"webhop.net":true,"webhop.org":true,"worse-than.tv":true,"writesthisblog.com":true}); - -// END of automatically generated file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/store.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/store.js deleted file mode 100644 index f8433df..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/store.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; -/*jshint unused:false */ - -function Store() { -} -exports.Store = Store; - -// Stores may be synchronous, but are still required to use a -// Continuation-Passing Style API. The CookieJar itself will expose a "*Sync" -// API that converts from synchronous-callbacks to imperative style. -Store.prototype.synchronous = false; - -Store.prototype.findCookie = function(domain, path, key, cb) { - throw new Error('findCookie is not implemented'); -}; - -Store.prototype.findCookies = function(domain, path, cb) { - throw new Error('findCookies is not implemented'); -}; - -Store.prototype.putCookie = function(cookie, cb) { - throw new Error('putCookie is not implemented'); -}; - -Store.prototype.updateCookie = function(oldCookie, newCookie, cb) { - // recommended default implementation: - // return this.putCookie(newCookie, cb); - throw new Error('updateCookie is not implemented'); -}; - -Store.prototype.removeCookie = function(domain, path, key, cb) { - throw new Error('removeCookie is not implemented'); -}; - -Store.prototype.removeCookies = function removeCookies(domain, path, cb) { - throw new Error('removeCookies is not implemented'); -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt deleted file mode 100644 index a41e0a7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Mathias Bynens - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md deleted file mode 100644 index 831e637..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md +++ /dev/null @@ -1,176 +0,0 @@ -# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.svg?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Code coverage status](http://img.shields.io/coveralls/bestiejs/punycode.js/master.svg)](https://coveralls.io/r/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.svg)](https://gemnasium.com/bestiejs/punycode.js) - -A robust Punycode converter that fully complies to [RFC 3492](http://tools.ietf.org/html/rfc3492) and [RFC 5891](http://tools.ietf.org/html/rfc5891), and works on nearly all JavaScript platforms. - -This JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm: - -* [The C example code from RFC 3492](http://tools.ietf.org/html/rfc3492#appendix-C) -* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c) -* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c) -* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287) -* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072)) - -This project is [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with [Node.js v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc). - -## Installation - -Via [npm](http://npmjs.org/) (only required for Node.js releases older than v0.6.2): - -```bash -npm install punycode -``` - -Via [Bower](http://bower.io/): - -```bash -bower install punycode -``` - -Via [Component](https://github.com/component/component): - -```bash -component install bestiejs/punycode.js -``` - -In a browser: - -```html - -``` - -In [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/): - -```js -var punycode = require('punycode'); -``` - -In [Rhino](http://www.mozilla.org/rhino/): - -```js -load('punycode.js'); -``` - -Using an AMD loader like [RequireJS](http://requirejs.org/): - -```js -require( - { - 'paths': { - 'punycode': 'path/to/punycode' - } - }, - ['punycode'], - function(punycode) { - console.log(punycode); - } -); -``` - -## API - -### `punycode.decode(string)` - -Converts a Punycode string of ASCII symbols to a string of Unicode symbols. - -```js -// decode domain name parts -punycode.decode('maana-pta'); // 'mañana' -punycode.decode('--dqo34k'); // '☃-⌘' -``` - -### `punycode.encode(string)` - -Converts a string of Unicode symbols to a Punycode string of ASCII symbols. - -```js -// encode domain name parts -punycode.encode('mañana'); // 'maana-pta' -punycode.encode('☃-⌘'); // '--dqo34k' -``` - -### `punycode.toUnicode(input)` - -Converts a Punycode string representing a domain name or an email address to Unicode. Only the Punycoded parts of the input will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode. - -```js -// decode domain names -punycode.toUnicode('xn--maana-pta.com'); -// → 'mañana.com' -punycode.toUnicode('xn----dqo34k.com'); -// → '☃-⌘.com' - -// decode email addresses -punycode.toUnicode('джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq'); -// → 'джумла@джpумлатест.bрфa' -``` - -### `punycode.toASCII(input)` - -Converts a Unicode string representing a domain name or an email address to Punycode. Only the non-ASCII parts of the input will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII. - -```js -// encode domain names -punycode.toASCII('mañana.com'); -// → 'xn--maana-pta.com' -punycode.toASCII('☃-⌘.com'); -// → 'xn----dqo34k.com' - -// encode email addresses -punycode.toASCII('джумла@джpумлатест.bрфa'); -// → 'джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq' -``` - -### `punycode.ucs2` - -#### `punycode.ucs2.decode(string)` - -Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](https://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16. - -```js -punycode.ucs2.decode('abc'); -// → [0x61, 0x62, 0x63] -// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE: -punycode.ucs2.decode('\uD834\uDF06'); -// → [0x1D306] -``` - -#### `punycode.ucs2.encode(codePoints)` - -Creates a string based on an array of numeric code point values. - -```js -punycode.ucs2.encode([0x61, 0x62, 0x63]); -// → 'abc' -punycode.ucs2.encode([0x1D306]); -// → '\uD834\uDF06' -``` - -### `punycode.version` - -A string representing the current Punycode.js version number. - -## Unit tests & code coverage - -After cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`. - -Once that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`. - -To generate the code coverage report, use `grunt cover`. - -Feel free to fork if you see possible improvements! - -## Author - -| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | -|---| -| [Mathias Bynens](https://mathiasbynens.be/) | - -## Contributors - -| [![twitter/jdalton](https://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter") | -|---| -| [John-David Dalton](http://allyoucanleet.com/) | - -## License - -Punycode.js is available under the [MIT](https://mths.be/mit) license. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json deleted file mode 100644 index 4f62713..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "name": "punycode", - "version": "1.3.2", - "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.", - "homepage": "https://mths.be/punycode", - "main": "punycode.js", - "keywords": [ - "punycode", - "unicode", - "idn", - "idna", - "dns", - "url", - "domain" - ], - "license": "MIT", - "author": { - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - }, - "contributors": [ - { - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - }, - { - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - } - ], - "repository": { - "type": "git", - "url": "https://github.com/bestiejs/punycode.js.git" - }, - "bugs": { - "url": "https://github.com/bestiejs/punycode.js/issues" - }, - "files": [ - "LICENSE-MIT.txt", - "punycode.js" - ], - "scripts": { - "test": "node tests/tests.js" - }, - "devDependencies": { - "coveralls": "^2.10.1", - "grunt": "^0.4.5", - "grunt-contrib-uglify": "^0.5.0", - "grunt-shell": "^0.7.0", - "istanbul": "^0.2.13", - "qunit-extras": "^1.2.0", - "qunitjs": "~1.11.0", - "requirejs": "^2.1.14" - }, - "gitHead": "38c8d3131a82567bfef18da09f7f4db68c84f8a3", - "_id": "punycode@1.3.2", - "_shasum": "9653a036fb7c1ee42342f2325cceefea3926c48d", - "_from": "punycode@>=0.2.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "mathias", - "email": "mathias@qiwi.be" - }, - "maintainers": [ - { - "name": "mathias", - "email": "mathias@qiwi.be" - }, - { - "name": "reconbot", - "email": "wizard@roborooter.com" - } - ], - "dist": { - "shasum": "9653a036fb7c1ee42342f2325cceefea3926c48d", - "tarball": "http://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js deleted file mode 100644 index ac68597..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js +++ /dev/null @@ -1,530 +0,0 @@ -/*! https://mths.be/punycode v1.3.2 by @mathias */ -;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * http://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.3.2', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { // in Rhino or a web browser - root.punycode = punycode; - } - -}(this)); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/package.json deleted file mode 100644 index f4ede66..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "author": { - "name": "GoInstant Inc., a salesforce.com company" - }, - "license": "MIT", - "name": "tough-cookie", - "description": "RFC6265 Cookies and Cookie Jar for node.js", - "keywords": [ - "HTTP", - "cookie", - "cookies", - "set-cookie", - "cookiejar", - "jar", - "RFC6265", - "RFC2965" - ], - "version": "0.12.1", - "homepage": "https://github.com/goinstant/tough-cookie", - "repository": { - "type": "git", - "url": "git://github.com/goinstant/tough-cookie.git" - }, - "bugs": { - "url": "https://github.com/goinstant/tough-cookie/issues" - }, - "main": "./lib/cookie", - "scripts": { - "test": "vows test.js" - }, - "engines": { - "node": ">=0.4.12" - }, - "dependencies": { - "punycode": ">=0.2.0" - }, - "devDependencies": { - "vows": "0.7.0", - "async": ">=0.1.12" - }, - "readme": "[RFC6265](http://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js\n\n![Tough Cookie](http://www.goinstant.com.s3.amazonaws.com/tough-cookie.jpg)\n\n[![Build Status](https://travis-ci.org/goinstant/node-cookie.png?branch=master)](https://travis-ci.org/goinstant/node-cookie)\n\n[![NPM Stats](https://nodei.co/npm/tough-cookie.png?downloads=true&stars=true)](https://npmjs.org/package/tough-cookie)\n![NPM Downloads](https://nodei.co/npm-dl/tough-cookie.png?months=9)\n\n# Synopsis\n\n``` javascript\nvar tough = require('tough-cookie'); // note: not 'cookie', 'cookies' or 'node-cookie'\nvar Cookie = tough.Cookie;\nvar cookie = Cookie.parse(header);\ncookie.value = 'somethingdifferent';\nheader = cookie.toString();\n\nvar cookiejar = new tough.CookieJar();\ncookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb);\n// ...\ncookiejar.getCookies('http://example.com/otherpath',function(err,cookies) {\n res.headers['cookie'] = cookies.join('; ');\n});\n```\n\n# Installation\n\nIt's _so_ easy!\n\n`npm install tough-cookie`\n\nRequires `punycode`, which should get installed automatically for you. Note that node.js v0.6.2+ bundles punycode by default.\n\nWhy the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken.\n\n# API\n\ntough\n=====\n\nFunctions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be \"bound\".\n\nparseDate(string[,strict])\n-----------------\n\nParse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. If strict is set to true then leading/trailing non-seperator characters around the time part will cause the parsing to fail (e.g. \"Thu, 01 Jan 1970 00:00:010 GMT\" has an extra trailing zero but Chrome, an assumedly RFC-compliant browser, treats this as valid).\n\nformatDate(date)\n----------------\n\nFormat a Date into a RFC1123 string (the RFC6265-recommended format).\n\ncanonicalDomain(str)\n--------------------\n\nTransforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects).\n\ndomainMatch(str,domStr[,canonicalize=true])\n-------------------------------------------\n\nAnswers \"does this real domain match the domain in a cookie?\". The `str` is the \"current\" domain-name and the `domStr` is the \"cookie\" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a \"suffix match\".\n\nThe `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not.\n\ndefaultPath(path)\n-----------------\n\nGiven a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the \"directory\" of a \"file\" in the path, but is specified by Section 5.1.4 of the RFC.\n\nThe `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output.\n\npathMatch(reqPath,cookiePath)\n-----------------------------\n\nAnswers \"does the request-path path-match a given cookie-path?\" as per RFC6265 Section 5.1.4. Returns a boolean.\n\nThis is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`.\n\nparse(header[,strict=false])\n----------------------------\n\nalias for `Cookie.parse(header[,strict])`\n\nfromJSON(string)\n----------------\n\nalias for `Cookie.fromJSON(string)`\n\ngetPublicSuffix(hostname)\n-------------------------\n\nReturns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it.\n\nFor example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`.\n\nFor further information, see http://publicsuffix.org/. This module derives its list from that site.\n\ncookieCompare(a,b)\n------------------\n\nFor use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). Longest `.path`s go first, then sorted oldest to youngest.\n\n``` javascript\nvar cookies = [ /* unsorted array of Cookie objects */ ];\ncookies = cookies.sort(cookieCompare);\n```\n\npermuteDomain(domain)\n---------------------\n\nGenerates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores.\n\n\npermutePath(path)\n-----------------\n\nGenerates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores.\n\nCookie\n======\n\nCookie.parse(header[,strict=false])\n-----------------------------------\n\nParses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed. If in strict mode, returns `undefined` if the cookie doesn't follow the guidelines in section 4 of RFC6265. Generally speaking, strict mode can be used to validate your own generated Set-Cookie headers, but acting as a client you want to be lenient and leave strict mode off.\n\nHere's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response:\n\n``` javascript\nif (res.headers['set-cookie'] instanceof Array)\n cookies = res.headers['set-cookie'].map(function (c) { return (Cookie.parse(c)); });\nelse\n cookies = [Cookie.parse(res.headers['set-cookie'])];\n```\n\nCookie.fromJSON(string)\n-----------------------\n\nConvert a JSON string to a `Cookie` object. Does a `JSON.parse()` and converts the `.created`, `.lastAccessed` and `.expires` properties into `Date` objects.\n\nProperties\n==========\n\n * _key_ - string - the name or key of the cookie (default \"\")\n * _value_ - string - the value of the cookie (default \"\")\n * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `\"Infinity\"`). See `setExpires()`\n * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `\"Infinity\"` and `\"-Infinity\"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()`\n * _domain_ - string - the `Domain=` attribute of the cookie\n * _path_ - string - the `Path=` of the cookie\n * _secure_ - boolean - the `Secure` cookie flag\n * _httpOnly_ - boolean - the `HttpOnly` cookie flag\n * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside)\n\nAfter a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes:\n\n * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied)\n * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one.\n * _created_ - `Date` - when this cookie was added to the jar\n * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute.\n\nConstruction([{options}])\n------------\n\nReceives an options object that can contain any Cookie properties, uses the default for unspecified properties.\n\n.toString()\n-----------\n\nencode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`.\n\n.cookieString()\n---------------\n\nencode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '=').\n\n.setExpires(String)\n-------------------\n\nsets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `\"Infinity\"` (a string) is set.\n\n.setMaxAge(number)\n-------------------\n\nsets the maxAge in seconds. Coerces `-Infinity` to `\"-Infinity\"` and `Infinity` to `\"Infinity\"` so it JSON serializes correctly.\n\n.expiryTime([now=Date.now()])\n-----------------------------\n\n.expiryDate([now=Date.now()])\n-----------------------------\n\nexpiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds.\n\nMax-Age takes precedence over Expires (as per the RFC). The `.created` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute.\n\nIf Expires (`.expires`) is set, that's returned.\n\nOtherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for \"Tue, 19 Jan 2038 03:14:07 GMT\" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents).\n\n.TTL([now=Date.now()])\n---------\n\ncompute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply.\n\nThe \"number\" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned.\n\n.canonicalizedDoman()\n---------------------\n\n.cdomain()\n----------\n\nreturn the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters.\n\n.validate()\n-----------\n\nStatus: *IN PROGRESS*. Works for a few things, but is by no means comprehensive.\n\nvalidates cookie attributes for semantic correctness. Useful for \"lint\" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct:\n\n``` javascript\nif (cookie.validate() === true) {\n // it's tasty\n} else {\n // yuck!\n}\n```\n\nCookieJar\n=========\n\nConstruction([store = new MemoryCookieStore()][, rejectPublicSuffixes])\n------------\n\nSimply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used.\n\n\nAttributes\n----------\n\n * _rejectPublicSuffixes_ - boolean - reject cookies with domains like \"com\" and \"co.uk\" (default: `true`)\n\nSince eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods.\n\n.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie))\n-------------------------------------------------------------------\n\nAttempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.created`, `.lastAccessed` and `.hostOnly` properties.\n\nThe `options` object can be omitted and can have the following properties:\n\n * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.\n * _secure_ - boolean - autodetect from url - indicates if this is a \"Secure\" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.\n * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies\n * _strict_ - boolean - default `false` - perform extra checks\n * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. CookieStore errors aren't ignored by this option.\n\nAs per the RFC, the `.hostOnly` property is set if there was no \"Domain=\" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual).\n\n.setCookieSync(cookieOrString, currentUrl, [{options}])\n-------------------------------------------------------\n\nSynchronous version of `setCookie`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).\n\n.storeCookie(cookie, [{options},] cb(err,cookie))\n-------------------------------------------------\n\n__REMOVED__ removed in lieu of the CookieStore API below\n\n.getCookies(currentUrl, [{options},] cb(err,cookies))\n-----------------------------------------------------\n\nRetrieve the list of cookies that can be sent in a Cookie header for the current url.\n\nIf an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given.\n\nThe `options` object can be omitted and can have the following properties:\n\n * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.\n * _secure_ - boolean - autodetect from url - indicates if this is a \"Secure\" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.\n * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies\n * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially).\n * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the CookieStore `fetchCookies` function (the default MemoryCookieStore supports it).\n\nThe `.lastAccessed` property of the returned cookies will have been updated.\n\n.getCookiesSync(currentUrl, [{options}])\n----------------------------------------\n\nSynchronous version of `getCookies`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).\n\n.getCookieString(...)\n---------------------\n\nAccepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`.\n\n.getCookieStringSync(...)\n-------------------------\n\nSynchronous version of `getCookieString`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).\n\n.getSetCookieStrings(...)\n-------------------------\n\nReturns an array of strings suitable for **Set-Cookie** headers. Accepts the same options as `.getCookies()`. Simply maps the cookie array via `.toString()`.\n\n.getSetCookieStringsSync(...)\n-----------------------------\n\nSynchronous version of `getSetCookieStrings`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).\n\nStore\n=====\n\nBase class for CookieJar stores.\n\n# CookieStore API\n\nThe storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores.\n\nStores should inherit from the base `Store` class, which is available as `require('tough-cookie').Store`. Stores are asynchronous by default, but if `store.synchronous` is set, then the `*Sync` methods on the CookieJar can be used.\n\nAll `domain` parameters will have been normalized before calling.\n\nThe Cookie store must have all of the following methods.\n\nstore.findCookie(domain, path, key, cb(err,cookie))\n---------------------------------------------------\n\nRetrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned.\n\nCallback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error).\n\nstore.findCookies(domain, path, cb(err,cookies))\n------------------------------------------------\n\nLocates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above.\n\nIf no cookies are found, the callback MUST be passed an empty array.\n\nThe resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done.\n\nAs of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only).\n\nstore.putCookie(cookie, cb(err))\n--------------------------------\n\nAdds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur.\n\nThe `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties.\n\nPass an error if the cookie cannot be stored.\n\nstore.updateCookie(oldCookie, newCookie, cb(err))\n-------------------------------------------------\n\nUpdate an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store.\n\nThe `.lastAccessed` property will always be different between the two objects and `.created` will always be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are sorted (or selected for deletion).\n\nStores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object.\n\nThe `newCookie` and `oldCookie` objects MUST NOT be modified.\n\nPass an error if the newCookie cannot be stored.\n\nstore.removeCookie(domain, path, key, cb(err))\n----------------------------------------------\n\nRemove a cookie from the store (see notes on `findCookie` about the uniqueness constraint).\n\nThe implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie.\n\nstore.removeCookies(domain, path, cb(err))\n------------------------------------------\n\nRemoves matching cookies from the store. The `path` paramter is optional, and if missing means all paths in a domain should be removed.\n\nPass an error ONLY if removing any existing cookies failed.\n\n# TODO\n\n * _full_ RFC5890/RFC5891 canonicalization for domains in `cdomain()`\n * the optional `punycode` requirement implements RFC3492, but RFC6265 requires RFC5891\n * better tests for `validate()`?\n\n# Copyright and License\n\n(tl;dr: MIT with some MPL/1.1)\n\nCopyright 2012- GoInstant, Inc. and other contributors. All rights reserved.\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE.\n\nPortions may be licensed under different licenses (in particular public-suffix.txt is MPL/1.1); please read the LICENSE file for full details.\n", - "readmeFilename": "README.md", - "_id": "tough-cookie@0.12.1", - "dist": { - "shasum": "8220c7e21abd5b13d96804254bd5a81ebf2c7d62", - "tarball": "http://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz" - }, - "_from": "tough-cookie@>=0.12.0", - "_npmVersion": "1.3.11", - "_npmUser": { - "name": "goinstant", - "email": "support@goinstant.com" - }, - "maintainers": [ - { - "name": "jstash", - "email": "jeremy@goinstant.com" - }, - { - "name": "goinstant", - "email": "services@goinstant.com" - } - ], - "directories": {}, - "_shasum": "8220c7e21abd5b13d96804254bd5a81ebf2c7d62", - "_resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/public-suffix.txt b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/public-suffix.txt deleted file mode 100644 index 2c20131..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/public-suffix.txt +++ /dev/null @@ -1,5229 +0,0 @@ -// ***** BEGIN LICENSE BLOCK ***** -// Version: MPL 1.1/GPL 2.0/LGPL 2.1 -// -// The contents of this file are subject to the Mozilla Public License Version -// 1.1 (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// http://www.mozilla.org/MPL/ -// -// Software distributed under the License is distributed on an "AS IS" basis, -// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -// for the specific language governing rights and limitations under the -// License. -// -// The Original Code is the Public Suffix List. -// -// The Initial Developer of the Original Code is -// Jo Hermans . -// Portions created by the Initial Developer are Copyright (C) 2007 -// the Initial Developer. All Rights Reserved. -// -// Contributor(s): -// Ruben Arakelyan -// Gervase Markham -// Pamela Greene -// David Triendl -// Jothan Frakes -// The kind representatives of many TLD registries -// -// Alternatively, the contents of this file may be used under the terms of -// either the GNU General Public License Version 2 or later (the "GPL"), or -// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -// in which case the provisions of the GPL or the LGPL are applicable instead -// of those above. If you wish to allow use of your version of this file only -// under the terms of either the GPL or the LGPL, and not to allow others to -// use your version of this file under the terms of the MPL, indicate your -// decision by deleting the provisions above and replace them with the notice -// and other provisions required by the GPL or the LGPL. If you do not delete -// the provisions above, a recipient may use your version of this file under -// the terms of any one of the MPL, the GPL or the LGPL. -// -// ***** END LICENSE BLOCK ***** - -// ===BEGIN ICANN DOMAINS=== - -// ac : http://en.wikipedia.org/wiki/.ac -ac -com.ac -edu.ac -gov.ac -net.ac -mil.ac -org.ac - -// ad : http://en.wikipedia.org/wiki/.ad -ad -nom.ad - -// ae : http://en.wikipedia.org/wiki/.ae -// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php -ae -co.ae -net.ae -org.ae -sch.ae -ac.ae -gov.ae -mil.ae - -// aero : see http://www.information.aero/index.php?id=66 -aero -accident-investigation.aero -accident-prevention.aero -aerobatic.aero -aeroclub.aero -aerodrome.aero -agents.aero -aircraft.aero -airline.aero -airport.aero -air-surveillance.aero -airtraffic.aero -air-traffic-control.aero -ambulance.aero -amusement.aero -association.aero -author.aero -ballooning.aero -broker.aero -caa.aero -cargo.aero -catering.aero -certification.aero -championship.aero -charter.aero -civilaviation.aero -club.aero -conference.aero -consultant.aero -consulting.aero -control.aero -council.aero -crew.aero -design.aero -dgca.aero -educator.aero -emergency.aero -engine.aero -engineer.aero -entertainment.aero -equipment.aero -exchange.aero -express.aero -federation.aero -flight.aero -freight.aero -fuel.aero -gliding.aero -government.aero -groundhandling.aero -group.aero -hanggliding.aero -homebuilt.aero -insurance.aero -journal.aero -journalist.aero -leasing.aero -logistics.aero -magazine.aero -maintenance.aero -marketplace.aero -media.aero -microlight.aero -modelling.aero -navigation.aero -parachuting.aero -paragliding.aero -passenger-association.aero -pilot.aero -press.aero -production.aero -recreation.aero -repbody.aero -res.aero -research.aero -rotorcraft.aero -safety.aero -scientist.aero -services.aero -show.aero -skydiving.aero -software.aero -student.aero -taxi.aero -trader.aero -trading.aero -trainer.aero -union.aero -workinggroup.aero -works.aero - -// af : http://www.nic.af/help.jsp -af -gov.af -com.af -org.af -net.af -edu.af - -// ag : http://www.nic.ag/prices.htm -ag -com.ag -org.ag -net.ag -co.ag -nom.ag - -// ai : http://nic.com.ai/ -ai -off.ai -com.ai -net.ai -org.ai - -// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31 -al -com.al -edu.al -gov.al -mil.al -net.al -org.al - -// am : http://en.wikipedia.org/wiki/.am -am - -// an : http://www.una.an/an_domreg/default.asp -an -com.an -net.an -org.an -edu.an - -// ao : http://en.wikipedia.org/wiki/.ao -// http://www.dns.ao/REGISTR.DOC -ao -ed.ao -gv.ao -og.ao -co.ao -pb.ao -it.ao - -// aq : http://en.wikipedia.org/wiki/.aq -aq - -// ar : http://en.wikipedia.org/wiki/.ar -*.ar -!congresodelalengua3.ar -!educ.ar -!gobiernoelectronico.ar -!mecon.ar -!nacion.ar -!nic.ar -!promocion.ar -!retina.ar -!uba.ar - -// arpa : http://en.wikipedia.org/wiki/.arpa -// Confirmed by registry 2008-06-18 -e164.arpa -in-addr.arpa -ip6.arpa -iris.arpa -uri.arpa -urn.arpa - -// as : http://en.wikipedia.org/wiki/.as -as -gov.as - -// asia : http://en.wikipedia.org/wiki/.asia -asia - -// at : http://en.wikipedia.org/wiki/.at -// Confirmed by registry 2008-06-17 -at -ac.at -co.at -gv.at -or.at - -// au : http://en.wikipedia.org/wiki/.au -// http://www.auda.org.au/ -// 2LDs -com.au -net.au -org.au -edu.au -gov.au -csiro.au -asn.au -id.au -// Historic 2LDs (closed to new registration, but sites still exist) -info.au -conf.au -oz.au -// CGDNs - http://www.cgdn.org.au/ -act.au -nsw.au -nt.au -qld.au -sa.au -tas.au -vic.au -wa.au -// 3LDs -act.edu.au -nsw.edu.au -nt.edu.au -qld.edu.au -sa.edu.au -tas.edu.au -vic.edu.au -wa.edu.au -act.gov.au -// Removed at request of Shae.Donelan@services.nsw.gov.au, 2010-03-04 -// nsw.gov.au -nt.gov.au -qld.gov.au -sa.gov.au -tas.gov.au -vic.gov.au -wa.gov.au - -// aw : http://en.wikipedia.org/wiki/.aw -aw -com.aw - -// ax : http://en.wikipedia.org/wiki/.ax -ax - -// az : http://en.wikipedia.org/wiki/.az -az -com.az -net.az -int.az -gov.az -org.az -edu.az -info.az -pp.az -mil.az -name.az -pro.az -biz.az - -// ba : http://en.wikipedia.org/wiki/.ba -ba -org.ba -net.ba -edu.ba -gov.ba -mil.ba -unsa.ba -unbi.ba -co.ba -com.ba -rs.ba - -// bb : http://en.wikipedia.org/wiki/.bb -bb -biz.bb -com.bb -edu.bb -gov.bb -info.bb -net.bb -org.bb -store.bb - -// bd : http://en.wikipedia.org/wiki/.bd -*.bd - -// be : http://en.wikipedia.org/wiki/.be -// Confirmed by registry 2008-06-08 -be -ac.be - -// bf : http://en.wikipedia.org/wiki/.bf -bf -gov.bf - -// bg : http://en.wikipedia.org/wiki/.bg -// https://www.register.bg/user/static/rules/en/index.html -bg -a.bg -b.bg -c.bg -d.bg -e.bg -f.bg -g.bg -h.bg -i.bg -j.bg -k.bg -l.bg -m.bg -n.bg -o.bg -p.bg -q.bg -r.bg -s.bg -t.bg -u.bg -v.bg -w.bg -x.bg -y.bg -z.bg -0.bg -1.bg -2.bg -3.bg -4.bg -5.bg -6.bg -7.bg -8.bg -9.bg - -// bh : http://en.wikipedia.org/wiki/.bh -bh -com.bh -edu.bh -net.bh -org.bh -gov.bh - -// bi : http://en.wikipedia.org/wiki/.bi -// http://whois.nic.bi/ -bi -co.bi -com.bi -edu.bi -or.bi -org.bi - -// biz : http://en.wikipedia.org/wiki/.biz -biz - -// bj : http://en.wikipedia.org/wiki/.bj -bj -asso.bj -barreau.bj -gouv.bj - -// bm : http://www.bermudanic.bm/dnr-text.txt -bm -com.bm -edu.bm -gov.bm -net.bm -org.bm - -// bn : http://en.wikipedia.org/wiki/.bn -*.bn - -// bo : http://www.nic.bo/ -bo -com.bo -edu.bo -gov.bo -gob.bo -int.bo -org.bo -net.bo -mil.bo -tv.bo - -// br : http://registro.br/dominio/dpn.html -// Updated by registry 2011-03-01 -br -adm.br -adv.br -agr.br -am.br -arq.br -art.br -ato.br -b.br -bio.br -blog.br -bmd.br -can.br -cim.br -cng.br -cnt.br -com.br -coop.br -ecn.br -edu.br -emp.br -eng.br -esp.br -etc.br -eti.br -far.br -flog.br -fm.br -fnd.br -fot.br -fst.br -g12.br -ggf.br -gov.br -imb.br -ind.br -inf.br -jor.br -jus.br -lel.br -mat.br -med.br -mil.br -mus.br -net.br -nom.br -not.br -ntr.br -odo.br -org.br -ppg.br -pro.br -psc.br -psi.br -qsl.br -radio.br -rec.br -slg.br -srv.br -taxi.br -teo.br -tmp.br -trd.br -tur.br -tv.br -vet.br -vlog.br -wiki.br -zlg.br - -// bs : http://www.nic.bs/rules.html -bs -com.bs -net.bs -org.bs -edu.bs -gov.bs - -// bt : http://en.wikipedia.org/wiki/.bt -bt -com.bt -edu.bt -gov.bt -net.bt -org.bt - -// bv : No registrations at this time. -// Submitted by registry 2006-06-16 - -// bw : http://en.wikipedia.org/wiki/.bw -// http://www.gobin.info/domainname/bw.doc -// list of other 2nd level tlds ? -bw -co.bw -org.bw - -// by : http://en.wikipedia.org/wiki/.by -// http://tld.by/rules_2006_en.html -// list of other 2nd level tlds ? -by -gov.by -mil.by -// Official information does not indicate that com.by is a reserved -// second-level domain, but it's being used as one (see www.google.com.by and -// www.yahoo.com.by, for example), so we list it here for safety's sake. -com.by - -// http://hoster.by/ -of.by - -// bz : http://en.wikipedia.org/wiki/.bz -// http://www.belizenic.bz/ -bz -com.bz -net.bz -org.bz -edu.bz -gov.bz - -// ca : http://en.wikipedia.org/wiki/.ca -ca -// ca geographical names -ab.ca -bc.ca -mb.ca -nb.ca -nf.ca -nl.ca -ns.ca -nt.ca -nu.ca -on.ca -pe.ca -qc.ca -sk.ca -yk.ca -// gc.ca: http://en.wikipedia.org/wiki/.gc.ca -// see also: http://registry.gc.ca/en/SubdomainFAQ -gc.ca - -// cat : http://en.wikipedia.org/wiki/.cat -cat - -// cc : http://en.wikipedia.org/wiki/.cc -cc - -// cd : http://en.wikipedia.org/wiki/.cd -// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1 -cd -gov.cd - -// cf : http://en.wikipedia.org/wiki/.cf -cf - -// cg : http://en.wikipedia.org/wiki/.cg -cg - -// ch : http://en.wikipedia.org/wiki/.ch -ch - -// ci : http://en.wikipedia.org/wiki/.ci -// http://www.nic.ci/index.php?page=charte -ci -org.ci -or.ci -com.ci -co.ci -edu.ci -ed.ci -ac.ci -net.ci -go.ci -asso.ci -aéroport.ci -int.ci -presse.ci -md.ci -gouv.ci - -// ck : http://en.wikipedia.org/wiki/.ck -*.ck -!www.ck - -// cl : http://en.wikipedia.org/wiki/.cl -cl -gov.cl -gob.cl -co.cl -mil.cl - -// cm : http://en.wikipedia.org/wiki/.cm -cm -gov.cm - -// cn : http://en.wikipedia.org/wiki/.cn -// Submitted by registry 2008-06-11 -cn -ac.cn -com.cn -edu.cn -gov.cn -net.cn -org.cn -mil.cn -公司.cn -网络.cn -網絡.cn -// cn geographic names -ah.cn -bj.cn -cq.cn -fj.cn -gd.cn -gs.cn -gz.cn -gx.cn -ha.cn -hb.cn -he.cn -hi.cn -hl.cn -hn.cn -jl.cn -js.cn -jx.cn -ln.cn -nm.cn -nx.cn -qh.cn -sc.cn -sd.cn -sh.cn -sn.cn -sx.cn -tj.cn -xj.cn -xz.cn -yn.cn -zj.cn -hk.cn -mo.cn -tw.cn - -// co : http://en.wikipedia.org/wiki/.co -// Submitted by registry 2008-06-11 -co -arts.co -com.co -edu.co -firm.co -gov.co -info.co -int.co -mil.co -net.co -nom.co -org.co -rec.co -web.co - -// com : http://en.wikipedia.org/wiki/.com -com - -// coop : http://en.wikipedia.org/wiki/.coop -coop - -// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do -cr -ac.cr -co.cr -ed.cr -fi.cr -go.cr -or.cr -sa.cr - -// cu : http://en.wikipedia.org/wiki/.cu -cu -com.cu -edu.cu -org.cu -net.cu -gov.cu -inf.cu - -// cv : http://en.wikipedia.org/wiki/.cv -cv - -// cx : http://en.wikipedia.org/wiki/.cx -// list of other 2nd level tlds ? -cx -gov.cx - -// cy : http://en.wikipedia.org/wiki/.cy -*.cy - -// cz : http://en.wikipedia.org/wiki/.cz -cz - -// de : http://en.wikipedia.org/wiki/.de -// Confirmed by registry (with technical -// reservations) 2008-07-01 -de - -// dj : http://en.wikipedia.org/wiki/.dj -dj - -// dk : http://en.wikipedia.org/wiki/.dk -// Confirmed by registry 2008-06-17 -dk - -// dm : http://en.wikipedia.org/wiki/.dm -dm -com.dm -net.dm -org.dm -edu.dm -gov.dm - -// do : http://en.wikipedia.org/wiki/.do -do -art.do -com.do -edu.do -gob.do -gov.do -mil.do -net.do -org.do -sld.do -web.do - -// dz : http://en.wikipedia.org/wiki/.dz -dz -com.dz -org.dz -net.dz -gov.dz -edu.dz -asso.dz -pol.dz -art.dz - -// ec : http://www.nic.ec/reg/paso1.asp -// Submitted by registry 2008-07-04 -ec -com.ec -info.ec -net.ec -fin.ec -k12.ec -med.ec -pro.ec -org.ec -edu.ec -gov.ec -gob.ec -mil.ec - -// edu : http://en.wikipedia.org/wiki/.edu -edu - -// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B -ee -edu.ee -gov.ee -riik.ee -lib.ee -med.ee -com.ee -pri.ee -aip.ee -org.ee -fie.ee - -// eg : http://en.wikipedia.org/wiki/.eg -eg -com.eg -edu.eg -eun.eg -gov.eg -mil.eg -name.eg -net.eg -org.eg -sci.eg - -// er : http://en.wikipedia.org/wiki/.er -*.er - -// es : https://www.nic.es/site_ingles/ingles/dominios/index.html -es -com.es -nom.es -org.es -gob.es -edu.es - -// et : http://en.wikipedia.org/wiki/.et -*.et - -// eu : http://en.wikipedia.org/wiki/.eu -eu - -// fi : http://en.wikipedia.org/wiki/.fi -fi -// aland.fi : http://en.wikipedia.org/wiki/.ax -// This domain is being phased out in favor of .ax. As there are still many -// domains under aland.fi, we still keep it on the list until aland.fi is -// completely removed. -// TODO: Check for updates (expected to be phased out around Q1/2009) -aland.fi - -// fj : http://en.wikipedia.org/wiki/.fj -*.fj - -// fk : http://en.wikipedia.org/wiki/.fk -*.fk - -// fm : http://en.wikipedia.org/wiki/.fm -fm - -// fo : http://en.wikipedia.org/wiki/.fo -fo - -// fr : http://www.afnic.fr/ -// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs -fr -com.fr -asso.fr -nom.fr -prd.fr -presse.fr -tm.fr -// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels -aeroport.fr -assedic.fr -avocat.fr -avoues.fr -cci.fr -chambagri.fr -chirurgiens-dentistes.fr -experts-comptables.fr -geometre-expert.fr -gouv.fr -greta.fr -huissier-justice.fr -medecin.fr -notaires.fr -pharmacien.fr -port.fr -veterinaire.fr - -// ga : http://en.wikipedia.org/wiki/.ga -ga - -// gb : This registry is effectively dormant -// Submitted by registry 2008-06-12 - -// gd : http://en.wikipedia.org/wiki/.gd -gd - -// ge : http://www.nic.net.ge/policy_en.pdf -ge -com.ge -edu.ge -gov.ge -org.ge -mil.ge -net.ge -pvt.ge - -// gf : http://en.wikipedia.org/wiki/.gf -gf - -// gg : http://www.channelisles.net/applic/avextn.shtml -gg -co.gg -org.gg -net.gg -sch.gg -gov.gg - -// gh : http://en.wikipedia.org/wiki/.gh -// see also: http://www.nic.gh/reg_now.php -// Although domains directly at second level are not possible at the moment, -// they have been possible for some time and may come back. -gh -com.gh -edu.gh -gov.gh -org.gh -mil.gh - -// gi : http://www.nic.gi/rules.html -gi -com.gi -ltd.gi -gov.gi -mod.gi -edu.gi -org.gi - -// gl : http://en.wikipedia.org/wiki/.gl -// http://nic.gl -gl - -// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm -gm - -// gn : http://psg.com/dns/gn/gn.txt -// Submitted by registry 2008-06-17 -ac.gn -com.gn -edu.gn -gov.gn -org.gn -net.gn - -// gov : http://en.wikipedia.org/wiki/.gov -gov - -// gp : http://www.nic.gp/index.php?lang=en -gp -com.gp -net.gp -mobi.gp -edu.gp -org.gp -asso.gp - -// gq : http://en.wikipedia.org/wiki/.gq -gq - -// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html -// Submitted by registry 2008-06-09 -gr -com.gr -edu.gr -net.gr -org.gr -gov.gr - -// gs : http://en.wikipedia.org/wiki/.gs -gs - -// gt : http://www.gt/politicas.html -*.gt -!www.gt - -// gu : http://gadao.gov.gu/registration.txt -*.gu - -// gw : http://en.wikipedia.org/wiki/.gw -gw - -// gy : http://en.wikipedia.org/wiki/.gy -// http://registry.gy/ -gy -co.gy -com.gy -net.gy - -// hk : https://www.hkdnr.hk -// Submitted by registry 2008-06-11 -hk -com.hk -edu.hk -gov.hk -idv.hk -net.hk -org.hk -公司.hk -教育.hk -敎育.hk -政府.hk -個人.hk -个人.hk -箇人.hk -網络.hk -网络.hk -组織.hk -網絡.hk -网絡.hk -组织.hk -組織.hk -組织.hk - -// hm : http://en.wikipedia.org/wiki/.hm -hm - -// hn : http://www.nic.hn/politicas/ps02,,05.html -hn -com.hn -edu.hn -org.hn -net.hn -mil.hn -gob.hn - -// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf -hr -iz.hr -from.hr -name.hr -com.hr - -// ht : http://www.nic.ht/info/charte.cfm -ht -com.ht -shop.ht -firm.ht -info.ht -adult.ht -net.ht -pro.ht -org.ht -med.ht -art.ht -coop.ht -pol.ht -asso.ht -edu.ht -rel.ht -gouv.ht -perso.ht - -// hu : http://www.domain.hu/domain/English/sld.html -// Confirmed by registry 2008-06-12 -hu -co.hu -info.hu -org.hu -priv.hu -sport.hu -tm.hu -2000.hu -agrar.hu -bolt.hu -casino.hu -city.hu -erotica.hu -erotika.hu -film.hu -forum.hu -games.hu -hotel.hu -ingatlan.hu -jogasz.hu -konyvelo.hu -lakas.hu -media.hu -news.hu -reklam.hu -sex.hu -shop.hu -suli.hu -szex.hu -tozsde.hu -utazas.hu -video.hu - -// id : http://en.wikipedia.org/wiki/.id -// see also: https://register.pandi.or.id/ -id -ac.id -co.id -go.id -mil.id -net.id -or.id -sch.id -web.id - -// ie : http://en.wikipedia.org/wiki/.ie -ie -gov.ie - -// il : http://en.wikipedia.org/wiki/.il -*.il - -// im : https://www.nic.im/pdfs/imfaqs.pdf -im -co.im -ltd.co.im -plc.co.im -net.im -gov.im -org.im -nic.im -ac.im - -// in : http://en.wikipedia.org/wiki/.in -// see also: http://www.inregistry.in/policies/ -// Please note, that nic.in is not an offical eTLD, but used by most -// government institutions. -in -co.in -firm.in -net.in -org.in -gen.in -ind.in -nic.in -ac.in -edu.in -res.in -gov.in -mil.in - -// info : http://en.wikipedia.org/wiki/.info -info - -// int : http://en.wikipedia.org/wiki/.int -// Confirmed by registry 2008-06-18 -int -eu.int - -// io : http://www.nic.io/rules.html -// list of other 2nd level tlds ? -io -com.io - -// iq : http://www.cmc.iq/english/iq/iqregister1.htm -iq -gov.iq -edu.iq -mil.iq -com.iq -org.iq -net.iq - -// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules -// Also see http://www.nic.ir/Internationalized_Domain_Names -// Two .ir entries added at request of , 2010-04-16 -ir -ac.ir -co.ir -gov.ir -id.ir -net.ir -org.ir -sch.ir -// xn--mgba3a4f16a.ir (.ir, Persian YEH) -ایران.ir -// xn--mgba3a4fra.ir (.ir, Arabic YEH) -ايران.ir - -// is : http://www.isnic.is/domain/rules.php -// Confirmed by registry 2008-12-06 -is -net.is -com.is -edu.is -gov.is -org.is -int.is - -// it : http://en.wikipedia.org/wiki/.it -it -gov.it -edu.it -// list of reserved geo-names : -// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf -// (There is also a list of reserved geo-names corresponding to Italian -// municipalities : http://www.nic.it/documenti/appendice-c.pdf , but it is -// not included here.) -agrigento.it -ag.it -alessandria.it -al.it -ancona.it -an.it -aosta.it -aoste.it -ao.it -arezzo.it -ar.it -ascoli-piceno.it -ascolipiceno.it -ap.it -asti.it -at.it -avellino.it -av.it -bari.it -ba.it -andria-barletta-trani.it -andriabarlettatrani.it -trani-barletta-andria.it -tranibarlettaandria.it -barletta-trani-andria.it -barlettatraniandria.it -andria-trani-barletta.it -andriatranibarletta.it -trani-andria-barletta.it -traniandriabarletta.it -bt.it -belluno.it -bl.it -benevento.it -bn.it -bergamo.it -bg.it -biella.it -bi.it -bologna.it -bo.it -bolzano.it -bozen.it -balsan.it -alto-adige.it -altoadige.it -suedtirol.it -bz.it -brescia.it -bs.it -brindisi.it -br.it -cagliari.it -ca.it -caltanissetta.it -cl.it -campobasso.it -cb.it -carboniaiglesias.it -carbonia-iglesias.it -iglesias-carbonia.it -iglesiascarbonia.it -ci.it -caserta.it -ce.it -catania.it -ct.it -catanzaro.it -cz.it -chieti.it -ch.it -como.it -co.it -cosenza.it -cs.it -cremona.it -cr.it -crotone.it -kr.it -cuneo.it -cn.it -dell-ogliastra.it -dellogliastra.it -ogliastra.it -og.it -enna.it -en.it -ferrara.it -fe.it -fermo.it -fm.it -firenze.it -florence.it -fi.it -foggia.it -fg.it -forli-cesena.it -forlicesena.it -cesena-forli.it -cesenaforli.it -fc.it -frosinone.it -fr.it -genova.it -genoa.it -ge.it -gorizia.it -go.it -grosseto.it -gr.it -imperia.it -im.it -isernia.it -is.it -laquila.it -aquila.it -aq.it -la-spezia.it -laspezia.it -sp.it -latina.it -lt.it -lecce.it -le.it -lecco.it -lc.it -livorno.it -li.it -lodi.it -lo.it -lucca.it -lu.it -macerata.it -mc.it -mantova.it -mn.it -massa-carrara.it -massacarrara.it -carrara-massa.it -carraramassa.it -ms.it -matera.it -mt.it -medio-campidano.it -mediocampidano.it -campidano-medio.it -campidanomedio.it -vs.it -messina.it -me.it -milano.it -milan.it -mi.it -modena.it -mo.it -monza.it -monza-brianza.it -monzabrianza.it -monzaebrianza.it -monzaedellabrianza.it -monza-e-della-brianza.it -mb.it -napoli.it -naples.it -na.it -novara.it -no.it -nuoro.it -nu.it -oristano.it -or.it -padova.it -padua.it -pd.it -palermo.it -pa.it -parma.it -pr.it -pavia.it -pv.it -perugia.it -pg.it -pescara.it -pe.it -pesaro-urbino.it -pesarourbino.it -urbino-pesaro.it -urbinopesaro.it -pu.it -piacenza.it -pc.it -pisa.it -pi.it -pistoia.it -pt.it -pordenone.it -pn.it -potenza.it -pz.it -prato.it -po.it -ragusa.it -rg.it -ravenna.it -ra.it -reggio-calabria.it -reggiocalabria.it -rc.it -reggio-emilia.it -reggioemilia.it -re.it -rieti.it -ri.it -rimini.it -rn.it -roma.it -rome.it -rm.it -rovigo.it -ro.it -salerno.it -sa.it -sassari.it -ss.it -savona.it -sv.it -siena.it -si.it -siracusa.it -sr.it -sondrio.it -so.it -taranto.it -ta.it -tempio-olbia.it -tempioolbia.it -olbia-tempio.it -olbiatempio.it -ot.it -teramo.it -te.it -terni.it -tr.it -torino.it -turin.it -to.it -trapani.it -tp.it -trento.it -trentino.it -tn.it -treviso.it -tv.it -trieste.it -ts.it -udine.it -ud.it -varese.it -va.it -venezia.it -venice.it -ve.it -verbania.it -vb.it -vercelli.it -vc.it -verona.it -vr.it -vibo-valentia.it -vibovalentia.it -vv.it -vicenza.it -vi.it -viterbo.it -vt.it - -// je : http://www.channelisles.net/applic/avextn.shtml -je -co.je -org.je -net.je -sch.je -gov.je - -// jm : http://www.com.jm/register.html -*.jm - -// jo : http://www.dns.jo/Registration_policy.aspx -jo -com.jo -org.jo -net.jo -edu.jo -sch.jo -gov.jo -mil.jo -name.jo - -// jobs : http://en.wikipedia.org/wiki/.jobs -jobs - -// jp : http://en.wikipedia.org/wiki/.jp -// http://jprs.co.jp/en/jpdomain.html -// Submitted by registry 2008-06-11 -// Updated by registry 2008-12-04 -jp -// jp organizational type names -ac.jp -ad.jp -co.jp -ed.jp -go.jp -gr.jp -lg.jp -ne.jp -or.jp -// jp geographic type names -// http://jprs.jp/doc/rule/saisoku-1.html -*.aichi.jp -*.akita.jp -*.aomori.jp -*.chiba.jp -*.ehime.jp -*.fukui.jp -*.fukuoka.jp -*.fukushima.jp -*.gifu.jp -*.gunma.jp -*.hiroshima.jp -*.hokkaido.jp -*.hyogo.jp -*.ibaraki.jp -*.ishikawa.jp -*.iwate.jp -*.kagawa.jp -*.kagoshima.jp -*.kanagawa.jp -*.kawasaki.jp -*.kitakyushu.jp -*.kobe.jp -*.kochi.jp -*.kumamoto.jp -*.kyoto.jp -*.mie.jp -*.miyagi.jp -*.miyazaki.jp -*.nagano.jp -*.nagasaki.jp -*.nagoya.jp -*.nara.jp -*.niigata.jp -*.oita.jp -*.okayama.jp -*.okinawa.jp -*.osaka.jp -*.saga.jp -*.saitama.jp -*.sapporo.jp -*.sendai.jp -*.shiga.jp -*.shimane.jp -*.shizuoka.jp -*.tochigi.jp -*.tokushima.jp -*.tokyo.jp -*.tottori.jp -*.toyama.jp -*.wakayama.jp -*.yamagata.jp -*.yamaguchi.jp -*.yamanashi.jp -*.yokohama.jp -!metro.tokyo.jp -!pref.aichi.jp -!pref.akita.jp -!pref.aomori.jp -!pref.chiba.jp -!pref.ehime.jp -!pref.fukui.jp -!pref.fukuoka.jp -!pref.fukushima.jp -!pref.gifu.jp -!pref.gunma.jp -!pref.hiroshima.jp -!pref.hokkaido.jp -!pref.hyogo.jp -!pref.ibaraki.jp -!pref.ishikawa.jp -!pref.iwate.jp -!pref.kagawa.jp -!pref.kagoshima.jp -!pref.kanagawa.jp -!pref.kochi.jp -!pref.kumamoto.jp -!pref.kyoto.jp -!pref.mie.jp -!pref.miyagi.jp -!pref.miyazaki.jp -!pref.nagano.jp -!pref.nagasaki.jp -!pref.nara.jp -!pref.niigata.jp -!pref.oita.jp -!pref.okayama.jp -!pref.okinawa.jp -!pref.osaka.jp -!pref.saga.jp -!pref.saitama.jp -!pref.shiga.jp -!pref.shimane.jp -!pref.shizuoka.jp -!pref.tochigi.jp -!pref.tokushima.jp -!pref.tottori.jp -!pref.toyama.jp -!pref.wakayama.jp -!pref.yamagata.jp -!pref.yamaguchi.jp -!pref.yamanashi.jp -!city.chiba.jp -!city.fukuoka.jp -!city.hiroshima.jp -!city.kawasaki.jp -!city.kitakyushu.jp -!city.kobe.jp -!city.kyoto.jp -!city.nagoya.jp -!city.niigata.jp -!city.okayama.jp -!city.osaka.jp -!city.saitama.jp -!city.sapporo.jp -!city.sendai.jp -!city.shizuoka.jp -!city.yokohama.jp - -// ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145 -*.ke - -// kg : http://www.domain.kg/dmn_n.html -kg -org.kg -net.kg -com.kg -edu.kg -gov.kg -mil.kg - -// kh : http://www.mptc.gov.kh/dns_registration.htm -*.kh - -// ki : http://www.ki/dns/index.html -ki -edu.ki -biz.ki -net.ki -org.ki -gov.ki -info.ki -com.ki - -// km : http://en.wikipedia.org/wiki/.km -// http://www.domaine.km/documents/charte.doc -km -org.km -nom.km -gov.km -prd.km -tm.km -edu.km -mil.km -ass.km -com.km -// These are only mentioned as proposed suggestions at domaine.km, but -// http://en.wikipedia.org/wiki/.km says they're available for registration: -coop.km -asso.km -presse.km -medecin.km -notaires.km -pharmaciens.km -veterinaire.km -gouv.km - -// kn : http://en.wikipedia.org/wiki/.kn -// http://www.dot.kn/domainRules.html -kn -net.kn -org.kn -edu.kn -gov.kn - -// kp : http://www.kcce.kp/en_index.php -com.kp -edu.kp -gov.kp -org.kp -rep.kp -tra.kp - -// kr : http://en.wikipedia.org/wiki/.kr -// see also: http://domain.nida.or.kr/eng/registration.jsp -kr -ac.kr -co.kr -es.kr -go.kr -hs.kr -kg.kr -mil.kr -ms.kr -ne.kr -or.kr -pe.kr -re.kr -sc.kr -// kr geographical names -busan.kr -chungbuk.kr -chungnam.kr -daegu.kr -daejeon.kr -gangwon.kr -gwangju.kr -gyeongbuk.kr -gyeonggi.kr -gyeongnam.kr -incheon.kr -jeju.kr -jeonbuk.kr -jeonnam.kr -seoul.kr -ulsan.kr - -// kw : http://en.wikipedia.org/wiki/.kw -*.kw - -// ky : http://www.icta.ky/da_ky_reg_dom.php -// Confirmed by registry 2008-06-17 -ky -edu.ky -gov.ky -com.ky -org.ky -net.ky - -// kz : http://en.wikipedia.org/wiki/.kz -// see also: http://www.nic.kz/rules/index.jsp -kz -org.kz -edu.kz -net.kz -gov.kz -mil.kz -com.kz - -// la : http://en.wikipedia.org/wiki/.la -// Submitted by registry 2008-06-10 -la -int.la -net.la -info.la -edu.la -gov.la -per.la -com.la -org.la - -// lb : http://en.wikipedia.org/wiki/.lb -// Submitted by registry 2008-06-17 -com.lb -edu.lb -gov.lb -net.lb -org.lb - -// lc : http://en.wikipedia.org/wiki/.lc -// see also: http://www.nic.lc/rules.htm -lc -com.lc -net.lc -co.lc -org.lc -edu.lc -gov.lc - -// li : http://en.wikipedia.org/wiki/.li -li - -// lk : http://www.nic.lk/seclevpr.html -lk -gov.lk -sch.lk -net.lk -int.lk -com.lk -org.lk -edu.lk -ngo.lk -soc.lk -web.lk -ltd.lk -assn.lk -grp.lk -hotel.lk - -// lr : http://psg.com/dns/lr/lr.txt -// Submitted by registry 2008-06-17 -com.lr -edu.lr -gov.lr -org.lr -net.lr - -// ls : http://en.wikipedia.org/wiki/.ls -ls -co.ls -org.ls - -// lt : http://en.wikipedia.org/wiki/.lt -lt -// gov.lt : http://www.gov.lt/index_en.php -gov.lt - -// lu : http://www.dns.lu/en/ -lu - -// lv : http://www.nic.lv/DNS/En/generic.php -lv -com.lv -edu.lv -gov.lv -org.lv -mil.lv -id.lv -net.lv -asn.lv -conf.lv - -// ly : http://www.nic.ly/regulations.php -ly -com.ly -net.ly -gov.ly -plc.ly -edu.ly -sch.ly -med.ly -org.ly -id.ly - -// ma : http://en.wikipedia.org/wiki/.ma -// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf -ma -co.ma -net.ma -gov.ma -org.ma -ac.ma -press.ma - -// mc : http://www.nic.mc/ -mc -tm.mc -asso.mc - -// md : http://en.wikipedia.org/wiki/.md -md - -// me : http://en.wikipedia.org/wiki/.me -me -co.me -net.me -org.me -edu.me -ac.me -gov.me -its.me -priv.me - -// mg : http://www.nic.mg/tarif.htm -mg -org.mg -nom.mg -gov.mg -prd.mg -tm.mg -edu.mg -mil.mg -com.mg - -// mh : http://en.wikipedia.org/wiki/.mh -mh - -// mil : http://en.wikipedia.org/wiki/.mil -mil - -// mk : http://en.wikipedia.org/wiki/.mk -// see also: http://dns.marnet.net.mk/postapka.php -mk -com.mk -org.mk -net.mk -edu.mk -gov.mk -inf.mk -name.mk - -// ml : http://www.gobin.info/domainname/ml-template.doc -// see also: http://en.wikipedia.org/wiki/.ml -ml -com.ml -edu.ml -gouv.ml -gov.ml -net.ml -org.ml -presse.ml - -// mm : http://en.wikipedia.org/wiki/.mm -*.mm - -// mn : http://en.wikipedia.org/wiki/.mn -mn -gov.mn -edu.mn -org.mn - -// mo : http://www.monic.net.mo/ -mo -com.mo -net.mo -org.mo -edu.mo -gov.mo - -// mobi : http://en.wikipedia.org/wiki/.mobi -mobi - -// mp : http://www.dot.mp/ -// Confirmed by registry 2008-06-17 -mp - -// mq : http://en.wikipedia.org/wiki/.mq -mq - -// mr : http://en.wikipedia.org/wiki/.mr -mr -gov.mr - -// ms : http://en.wikipedia.org/wiki/.ms -ms - -// mt : https://www.nic.org.mt/dotmt/ -*.mt - -// mu : http://en.wikipedia.org/wiki/.mu -mu -com.mu -net.mu -org.mu -gov.mu -ac.mu -co.mu -or.mu - -// museum : http://about.museum/naming/ -// http://index.museum/ -museum -academy.museum -agriculture.museum -air.museum -airguard.museum -alabama.museum -alaska.museum -amber.museum -ambulance.museum -american.museum -americana.museum -americanantiques.museum -americanart.museum -amsterdam.museum -and.museum -annefrank.museum -anthro.museum -anthropology.museum -antiques.museum -aquarium.museum -arboretum.museum -archaeological.museum -archaeology.museum -architecture.museum -art.museum -artanddesign.museum -artcenter.museum -artdeco.museum -arteducation.museum -artgallery.museum -arts.museum -artsandcrafts.museum -asmatart.museum -assassination.museum -assisi.museum -association.museum -astronomy.museum -atlanta.museum -austin.museum -australia.museum -automotive.museum -aviation.museum -axis.museum -badajoz.museum -baghdad.museum -bahn.museum -bale.museum -baltimore.museum -barcelona.museum -baseball.museum -basel.museum -baths.museum -bauern.museum -beauxarts.museum -beeldengeluid.museum -bellevue.museum -bergbau.museum -berkeley.museum -berlin.museum -bern.museum -bible.museum -bilbao.museum -bill.museum -birdart.museum -birthplace.museum -bonn.museum -boston.museum -botanical.museum -botanicalgarden.museum -botanicgarden.museum -botany.museum -brandywinevalley.museum -brasil.museum -bristol.museum -british.museum -britishcolumbia.museum -broadcast.museum -brunel.museum -brussel.museum -brussels.museum -bruxelles.museum -building.museum -burghof.museum -bus.museum -bushey.museum -cadaques.museum -california.museum -cambridge.museum -can.museum -canada.museum -capebreton.museum -carrier.museum -cartoonart.museum -casadelamoneda.museum -castle.museum -castres.museum -celtic.museum -center.museum -chattanooga.museum -cheltenham.museum -chesapeakebay.museum -chicago.museum -children.museum -childrens.museum -childrensgarden.museum -chiropractic.museum -chocolate.museum -christiansburg.museum -cincinnati.museum -cinema.museum -circus.museum -civilisation.museum -civilization.museum -civilwar.museum -clinton.museum -clock.museum -coal.museum -coastaldefence.museum -cody.museum -coldwar.museum -collection.museum -colonialwilliamsburg.museum -coloradoplateau.museum -columbia.museum -columbus.museum -communication.museum -communications.museum -community.museum -computer.museum -computerhistory.museum -comunicações.museum -contemporary.museum -contemporaryart.museum -convent.museum -copenhagen.museum -corporation.museum -correios-e-telecomunicações.museum -corvette.museum -costume.museum -countryestate.museum -county.museum -crafts.museum -cranbrook.museum -creation.museum -cultural.museum -culturalcenter.museum -culture.museum -cyber.museum -cymru.museum -dali.museum -dallas.museum -database.museum -ddr.museum -decorativearts.museum -delaware.museum -delmenhorst.museum -denmark.museum -depot.museum -design.museum -detroit.museum -dinosaur.museum -discovery.museum -dolls.museum -donostia.museum -durham.museum -eastafrica.museum -eastcoast.museum -education.museum -educational.museum -egyptian.museum -eisenbahn.museum -elburg.museum -elvendrell.museum -embroidery.museum -encyclopedic.museum -england.museum -entomology.museum -environment.museum -environmentalconservation.museum -epilepsy.museum -essex.museum -estate.museum -ethnology.museum -exeter.museum -exhibition.museum -family.museum -farm.museum -farmequipment.museum -farmers.museum -farmstead.museum -field.museum -figueres.museum -filatelia.museum -film.museum -fineart.museum -finearts.museum -finland.museum -flanders.museum -florida.museum -force.museum -fortmissoula.museum -fortworth.museum -foundation.museum -francaise.museum -frankfurt.museum -franziskaner.museum -freemasonry.museum -freiburg.museum -fribourg.museum -frog.museum -fundacio.museum -furniture.museum -gallery.museum -garden.museum -gateway.museum -geelvinck.museum -gemological.museum -geology.museum -georgia.museum -giessen.museum -glas.museum -glass.museum -gorge.museum -grandrapids.museum -graz.museum -guernsey.museum -halloffame.museum -hamburg.museum -handson.museum -harvestcelebration.museum -hawaii.museum -health.museum -heimatunduhren.museum -hellas.museum -helsinki.museum -hembygdsforbund.museum -heritage.museum -histoire.museum -historical.museum -historicalsociety.museum -historichouses.museum -historisch.museum -historisches.museum -history.museum -historyofscience.museum -horology.museum -house.museum -humanities.museum -illustration.museum -imageandsound.museum -indian.museum -indiana.museum -indianapolis.museum -indianmarket.museum -intelligence.museum -interactive.museum -iraq.museum -iron.museum -isleofman.museum -jamison.museum -jefferson.museum -jerusalem.museum -jewelry.museum -jewish.museum -jewishart.museum -jfk.museum -journalism.museum -judaica.museum -judygarland.museum -juedisches.museum -juif.museum -karate.museum -karikatur.museum -kids.museum -koebenhavn.museum -koeln.museum -kunst.museum -kunstsammlung.museum -kunstunddesign.museum -labor.museum -labour.museum -lajolla.museum -lancashire.museum -landes.museum -lans.museum -läns.museum -larsson.museum -lewismiller.museum -lincoln.museum -linz.museum -living.museum -livinghistory.museum -localhistory.museum -london.museum -losangeles.museum -louvre.museum -loyalist.museum -lucerne.museum -luxembourg.museum -luzern.museum -mad.museum -madrid.museum -mallorca.museum -manchester.museum -mansion.museum -mansions.museum -manx.museum -marburg.museum -maritime.museum -maritimo.museum -maryland.museum -marylhurst.museum -media.museum -medical.museum -medizinhistorisches.museum -meeres.museum -memorial.museum -mesaverde.museum -michigan.museum -midatlantic.museum -military.museum -mill.museum -miners.museum -mining.museum -minnesota.museum -missile.museum -missoula.museum -modern.museum -moma.museum -money.museum -monmouth.museum -monticello.museum -montreal.museum -moscow.museum -motorcycle.museum -muenchen.museum -muenster.museum -mulhouse.museum -muncie.museum -museet.museum -museumcenter.museum -museumvereniging.museum -music.museum -national.museum -nationalfirearms.museum -nationalheritage.museum -nativeamerican.museum -naturalhistory.museum -naturalhistorymuseum.museum -naturalsciences.museum -nature.museum -naturhistorisches.museum -natuurwetenschappen.museum -naumburg.museum -naval.museum -nebraska.museum -neues.museum -newhampshire.museum -newjersey.museum -newmexico.museum -newport.museum -newspaper.museum -newyork.museum -niepce.museum -norfolk.museum -north.museum -nrw.museum -nuernberg.museum -nuremberg.museum -nyc.museum -nyny.museum -oceanographic.museum -oceanographique.museum -omaha.museum -online.museum -ontario.museum -openair.museum -oregon.museum -oregontrail.museum -otago.museum -oxford.museum -pacific.museum -paderborn.museum -palace.museum -paleo.museum -palmsprings.museum -panama.museum -paris.museum -pasadena.museum -pharmacy.museum -philadelphia.museum -philadelphiaarea.museum -philately.museum -phoenix.museum -photography.museum -pilots.museum -pittsburgh.museum -planetarium.museum -plantation.museum -plants.museum -plaza.museum -portal.museum -portland.museum -portlligat.museum -posts-and-telecommunications.museum -preservation.museum -presidio.museum -press.museum -project.museum -public.museum -pubol.museum -quebec.museum -railroad.museum -railway.museum -research.museum -resistance.museum -riodejaneiro.museum -rochester.museum -rockart.museum -roma.museum -russia.museum -saintlouis.museum -salem.museum -salvadordali.museum -salzburg.museum -sandiego.museum -sanfrancisco.museum -santabarbara.museum -santacruz.museum -santafe.museum -saskatchewan.museum -satx.museum -savannahga.museum -schlesisches.museum -schoenbrunn.museum -schokoladen.museum -school.museum -schweiz.museum -science.museum -scienceandhistory.museum -scienceandindustry.museum -sciencecenter.museum -sciencecenters.museum -science-fiction.museum -sciencehistory.museum -sciences.museum -sciencesnaturelles.museum -scotland.museum -seaport.museum -settlement.museum -settlers.museum -shell.museum -sherbrooke.museum -sibenik.museum -silk.museum -ski.museum -skole.museum -society.museum -sologne.museum -soundandvision.museum -southcarolina.museum -southwest.museum -space.museum -spy.museum -square.museum -stadt.museum -stalbans.museum -starnberg.museum -state.museum -stateofdelaware.museum -station.museum -steam.museum -steiermark.museum -stjohn.museum -stockholm.museum -stpetersburg.museum -stuttgart.museum -suisse.museum -surgeonshall.museum -surrey.museum -svizzera.museum -sweden.museum -sydney.museum -tank.museum -tcm.museum -technology.museum -telekommunikation.museum -television.museum -texas.museum -textile.museum -theater.museum -time.museum -timekeeping.museum -topology.museum -torino.museum -touch.museum -town.museum -transport.museum -tree.museum -trolley.museum -trust.museum -trustee.museum -uhren.museum -ulm.museum -undersea.museum -university.museum -usa.museum -usantiques.museum -usarts.museum -uscountryestate.museum -usculture.museum -usdecorativearts.museum -usgarden.museum -ushistory.museum -ushuaia.museum -uslivinghistory.museum -utah.museum -uvic.museum -valley.museum -vantaa.museum -versailles.museum -viking.museum -village.museum -virginia.museum -virtual.museum -virtuel.museum -vlaanderen.museum -volkenkunde.museum -wales.museum -wallonie.museum -war.museum -washingtondc.museum -watchandclock.museum -watch-and-clock.museum -western.museum -westfalen.museum -whaling.museum -wildlife.museum -williamsburg.museum -windmill.museum -workshop.museum -york.museum -yorkshire.museum -yosemite.museum -youth.museum -zoological.museum -zoology.museum -ירושלים.museum -иком.museum - -// mv : http://en.wikipedia.org/wiki/.mv -// "mv" included because, contra Wikipedia, google.mv exists. -mv -aero.mv -biz.mv -com.mv -coop.mv -edu.mv -gov.mv -info.mv -int.mv -mil.mv -museum.mv -name.mv -net.mv -org.mv -pro.mv - -// mw : http://www.registrar.mw/ -mw -ac.mw -biz.mw -co.mw -com.mw -coop.mw -edu.mw -gov.mw -int.mw -museum.mw -net.mw -org.mw - -// mx : http://www.nic.mx/ -// Submitted by registry 2008-06-19 -mx -com.mx -org.mx -gob.mx -edu.mx -net.mx - -// my : http://www.mynic.net.my/ -my -com.my -net.my -org.my -gov.my -edu.my -mil.my -name.my - -// mz : http://www.gobin.info/domainname/mz-template.doc -*.mz - -// na : http://www.na-nic.com.na/ -// http://www.info.na/domain/ -na -info.na -pro.na -name.na -school.na -or.na -dr.na -us.na -mx.na -ca.na -in.na -cc.na -tv.na -ws.na -mobi.na -co.na -com.na -org.na - -// name : has 2nd-level tlds, but there's no list of them -name - -// nc : http://www.cctld.nc/ -nc -asso.nc - -// ne : http://en.wikipedia.org/wiki/.ne -ne - -// net : http://en.wikipedia.org/wiki/.net -net - -// nf : http://en.wikipedia.org/wiki/.nf -nf -com.nf -net.nf -per.nf -rec.nf -web.nf -arts.nf -firm.nf -info.nf -other.nf -store.nf - -// ng : http://psg.com/dns/ng/ -// Submitted by registry 2008-06-17 -ac.ng -com.ng -edu.ng -gov.ng -net.ng -org.ng - -// ni : http://www.nic.ni/dominios.htm -*.ni - -// nl : http://www.domain-registry.nl/ace.php/c,728,122,,,,Home.html -// Confirmed by registry (with technical -// reservations) 2008-06-08 -nl - -// BV.nl will be a registry for dutch BV's (besloten vennootschap) -bv.nl - -// no : http://www.norid.no/regelverk/index.en.html -// The Norwegian registry has declined to notify us of updates. The web pages -// referenced below are the official source of the data. There is also an -// announce mailing list: -// https://postlister.uninett.no/sympa/info/norid-diskusjon -no -// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html -fhs.no -vgs.no -fylkesbibl.no -folkebibl.no -museum.no -idrett.no -priv.no -// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html -mil.no -stat.no -dep.no -kommune.no -herad.no -// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html -// counties -aa.no -ah.no -bu.no -fm.no -hl.no -hm.no -jan-mayen.no -mr.no -nl.no -nt.no -of.no -ol.no -oslo.no -rl.no -sf.no -st.no -svalbard.no -tm.no -tr.no -va.no -vf.no -// primary and lower secondary schools per county -gs.aa.no -gs.ah.no -gs.bu.no -gs.fm.no -gs.hl.no -gs.hm.no -gs.jan-mayen.no -gs.mr.no -gs.nl.no -gs.nt.no -gs.of.no -gs.ol.no -gs.oslo.no -gs.rl.no -gs.sf.no -gs.st.no -gs.svalbard.no -gs.tm.no -gs.tr.no -gs.va.no -gs.vf.no -// cities -akrehamn.no -åkrehamn.no -algard.no -ålgård.no -arna.no -brumunddal.no -bryne.no -bronnoysund.no -brønnøysund.no -drobak.no -drøbak.no -egersund.no -fetsund.no -floro.no -florø.no -fredrikstad.no -hokksund.no -honefoss.no -hønefoss.no -jessheim.no -jorpeland.no -jørpeland.no -kirkenes.no -kopervik.no -krokstadelva.no -langevag.no -langevåg.no -leirvik.no -mjondalen.no -mjøndalen.no -mo-i-rana.no -mosjoen.no -mosjøen.no -nesoddtangen.no -orkanger.no -osoyro.no -osøyro.no -raholt.no -råholt.no -sandnessjoen.no -sandnessjøen.no -skedsmokorset.no -slattum.no -spjelkavik.no -stathelle.no -stavern.no -stjordalshalsen.no -stjørdalshalsen.no -tananger.no -tranby.no -vossevangen.no -// communities -afjord.no -åfjord.no -agdenes.no -al.no -ål.no -alesund.no -ålesund.no -alstahaug.no -alta.no -áltá.no -alaheadju.no -álaheadju.no -alvdal.no -amli.no -åmli.no -amot.no -åmot.no -andebu.no -andoy.no -andøy.no -andasuolo.no -ardal.no -årdal.no -aremark.no -arendal.no -ås.no -aseral.no -åseral.no -asker.no -askim.no -askvoll.no -askoy.no -askøy.no -asnes.no -åsnes.no -audnedaln.no -aukra.no -aure.no -aurland.no -aurskog-holand.no -aurskog-høland.no -austevoll.no -austrheim.no -averoy.no -averøy.no -balestrand.no -ballangen.no -balat.no -bálát.no -balsfjord.no -bahccavuotna.no -báhccavuotna.no -bamble.no -bardu.no -beardu.no -beiarn.no -bajddar.no -bájddar.no -baidar.no -báidár.no -berg.no -bergen.no -berlevag.no -berlevåg.no -bearalvahki.no -bearalváhki.no -bindal.no -birkenes.no -bjarkoy.no -bjarkøy.no -bjerkreim.no -bjugn.no -bodo.no -bodø.no -badaddja.no -bådåddjå.no -budejju.no -bokn.no -bremanger.no -bronnoy.no -brønnøy.no -bygland.no -bykle.no -barum.no -bærum.no -bo.telemark.no -bø.telemark.no -bo.nordland.no -bø.nordland.no -bievat.no -bievát.no -bomlo.no -bømlo.no -batsfjord.no -båtsfjord.no -bahcavuotna.no -báhcavuotna.no -dovre.no -drammen.no -drangedal.no -dyroy.no -dyrøy.no -donna.no -dønna.no -eid.no -eidfjord.no -eidsberg.no -eidskog.no -eidsvoll.no -eigersund.no -elverum.no -enebakk.no -engerdal.no -etne.no -etnedal.no -evenes.no -evenassi.no -evenášši.no -evje-og-hornnes.no -farsund.no -fauske.no -fuossko.no -fuoisku.no -fedje.no -fet.no -finnoy.no -finnøy.no -fitjar.no -fjaler.no -fjell.no -flakstad.no -flatanger.no -flekkefjord.no -flesberg.no -flora.no -fla.no -flå.no -folldal.no -forsand.no -fosnes.no -frei.no -frogn.no -froland.no -frosta.no -frana.no -fræna.no -froya.no -frøya.no -fusa.no -fyresdal.no -forde.no -førde.no -gamvik.no -gangaviika.no -gáŋgaviika.no -gaular.no -gausdal.no -gildeskal.no -gildeskål.no -giske.no -gjemnes.no -gjerdrum.no -gjerstad.no -gjesdal.no -gjovik.no -gjøvik.no -gloppen.no -gol.no -gran.no -grane.no -granvin.no -gratangen.no -grimstad.no -grong.no -kraanghke.no -kråanghke.no -grue.no -gulen.no -hadsel.no -halden.no -halsa.no -hamar.no -hamaroy.no -habmer.no -hábmer.no -hapmir.no -hápmir.no -hammerfest.no -hammarfeasta.no -hámmárfeasta.no -haram.no -hareid.no -harstad.no -hasvik.no -aknoluokta.no -ákŋoluokta.no -hattfjelldal.no -aarborte.no -haugesund.no -hemne.no -hemnes.no -hemsedal.no -heroy.more-og-romsdal.no -herøy.møre-og-romsdal.no -heroy.nordland.no -herøy.nordland.no -hitra.no -hjartdal.no -hjelmeland.no -hobol.no -hobøl.no -hof.no -hol.no -hole.no -holmestrand.no -holtalen.no -holtålen.no -hornindal.no -horten.no -hurdal.no -hurum.no -hvaler.no -hyllestad.no -hagebostad.no -hægebostad.no -hoyanger.no -høyanger.no -hoylandet.no -høylandet.no -ha.no -hå.no -ibestad.no -inderoy.no -inderøy.no -iveland.no -jevnaker.no -jondal.no -jolster.no -jølster.no -karasjok.no -karasjohka.no -kárášjohka.no -karlsoy.no -galsa.no -gálsá.no -karmoy.no -karmøy.no -kautokeino.no -guovdageaidnu.no -klepp.no -klabu.no -klæbu.no -kongsberg.no -kongsvinger.no -kragero.no -kragerø.no -kristiansand.no -kristiansund.no -krodsherad.no -krødsherad.no -kvalsund.no -rahkkeravju.no -ráhkkerávju.no -kvam.no -kvinesdal.no -kvinnherad.no -kviteseid.no -kvitsoy.no -kvitsøy.no -kvafjord.no -kvæfjord.no -giehtavuoatna.no -kvanangen.no -kvænangen.no -navuotna.no -návuotna.no -kafjord.no -kåfjord.no -gaivuotna.no -gáivuotna.no -larvik.no -lavangen.no -lavagis.no -loabat.no -loabát.no -lebesby.no -davvesiida.no -leikanger.no -leirfjord.no -leka.no -leksvik.no -lenvik.no -leangaviika.no -leaŋgaviika.no -lesja.no -levanger.no -lier.no -lierne.no -lillehammer.no -lillesand.no -lindesnes.no -lindas.no -lindås.no -lom.no -loppa.no -lahppi.no -láhppi.no -lund.no -lunner.no -luroy.no -lurøy.no -luster.no -lyngdal.no -lyngen.no -ivgu.no -lardal.no -lerdal.no -lærdal.no -lodingen.no -lødingen.no -lorenskog.no -lørenskog.no -loten.no -løten.no -malvik.no -masoy.no -måsøy.no -muosat.no -muosát.no -mandal.no -marker.no -marnardal.no -masfjorden.no -meland.no -meldal.no -melhus.no -meloy.no -meløy.no -meraker.no -meråker.no -moareke.no -moåreke.no -midsund.no -midtre-gauldal.no -modalen.no -modum.no -molde.no -moskenes.no -moss.no -mosvik.no -malselv.no -målselv.no -malatvuopmi.no -málatvuopmi.no -namdalseid.no -aejrie.no -namsos.no -namsskogan.no -naamesjevuemie.no -nååmesjevuemie.no -laakesvuemie.no -nannestad.no -narvik.no -narviika.no -naustdal.no -nedre-eiker.no -nes.akershus.no -nes.buskerud.no -nesna.no -nesodden.no -nesseby.no -unjarga.no -unjárga.no -nesset.no -nissedal.no -nittedal.no -nord-aurdal.no -nord-fron.no -nord-odal.no -norddal.no -nordkapp.no -davvenjarga.no -davvenjárga.no -nordre-land.no -nordreisa.no -raisa.no -ráisa.no -nore-og-uvdal.no -notodden.no -naroy.no -nærøy.no -notteroy.no -nøtterøy.no -odda.no -oksnes.no -øksnes.no -oppdal.no -oppegard.no -oppegård.no -orkdal.no -orland.no -ørland.no -orskog.no -ørskog.no -orsta.no -ørsta.no -os.hedmark.no -os.hordaland.no -osen.no -osteroy.no -osterøy.no -ostre-toten.no -østre-toten.no -overhalla.no -ovre-eiker.no -øvre-eiker.no -oyer.no -øyer.no -oygarden.no -øygarden.no -oystre-slidre.no -øystre-slidre.no -porsanger.no -porsangu.no -porsáŋgu.no -porsgrunn.no -radoy.no -radøy.no -rakkestad.no -rana.no -ruovat.no -randaberg.no -rauma.no -rendalen.no -rennebu.no -rennesoy.no -rennesøy.no -rindal.no -ringebu.no -ringerike.no -ringsaker.no -rissa.no -risor.no -risør.no -roan.no -rollag.no -rygge.no -ralingen.no -rælingen.no -rodoy.no -rødøy.no -romskog.no -rømskog.no -roros.no -røros.no -rost.no -røst.no -royken.no -røyken.no -royrvik.no -røyrvik.no -rade.no -råde.no -salangen.no -siellak.no -saltdal.no -salat.no -sálát.no -sálat.no -samnanger.no -sande.more-og-romsdal.no -sande.møre-og-romsdal.no -sande.vestfold.no -sandefjord.no -sandnes.no -sandoy.no -sandøy.no -sarpsborg.no -sauda.no -sauherad.no -sel.no -selbu.no -selje.no -seljord.no -sigdal.no -siljan.no -sirdal.no -skaun.no -skedsmo.no -ski.no -skien.no -skiptvet.no -skjervoy.no -skjervøy.no -skierva.no -skiervá.no -skjak.no -skjåk.no -skodje.no -skanland.no -skånland.no -skanit.no -skánit.no -smola.no -smøla.no -snillfjord.no -snasa.no -snåsa.no -snoasa.no -snaase.no -snåase.no -sogndal.no -sokndal.no -sola.no -solund.no -songdalen.no -sortland.no -spydeberg.no -stange.no -stavanger.no -steigen.no -steinkjer.no -stjordal.no -stjørdal.no -stokke.no -stor-elvdal.no -stord.no -stordal.no -storfjord.no -omasvuotna.no -strand.no -stranda.no -stryn.no -sula.no -suldal.no -sund.no -sunndal.no -surnadal.no -sveio.no -svelvik.no -sykkylven.no -sogne.no -søgne.no -somna.no -sømna.no -sondre-land.no -søndre-land.no -sor-aurdal.no -sør-aurdal.no -sor-fron.no -sør-fron.no -sor-odal.no -sør-odal.no -sor-varanger.no -sør-varanger.no -matta-varjjat.no -mátta-várjjat.no -sorfold.no -sørfold.no -sorreisa.no -sørreisa.no -sorum.no -sørum.no -tana.no -deatnu.no -time.no -tingvoll.no -tinn.no -tjeldsund.no -dielddanuorri.no -tjome.no -tjøme.no -tokke.no -tolga.no -torsken.no -tranoy.no -tranøy.no -tromso.no -tromsø.no -tromsa.no -romsa.no -trondheim.no -troandin.no -trysil.no -trana.no -træna.no -trogstad.no -trøgstad.no -tvedestrand.no -tydal.no -tynset.no -tysfjord.no -divtasvuodna.no -divttasvuotna.no -tysnes.no -tysvar.no -tysvær.no -tonsberg.no -tønsberg.no -ullensaker.no -ullensvang.no -ulvik.no -utsira.no -vadso.no -vadsø.no -cahcesuolo.no -čáhcesuolo.no -vaksdal.no -valle.no -vang.no -vanylven.no -vardo.no -vardø.no -varggat.no -várggát.no -vefsn.no -vaapste.no -vega.no -vegarshei.no -vegårshei.no -vennesla.no -verdal.no -verran.no -vestby.no -vestnes.no -vestre-slidre.no -vestre-toten.no -vestvagoy.no -vestvågøy.no -vevelstad.no -vik.no -vikna.no -vindafjord.no -volda.no -voss.no -varoy.no -værøy.no -vagan.no -vågan.no -voagat.no -vagsoy.no -vågsøy.no -vaga.no -vågå.no -valer.ostfold.no -våler.østfold.no -valer.hedmark.no -våler.hedmark.no - -// np : http://www.mos.com.np/register.html -*.np - -// nr : http://cenpac.net.nr/dns/index.html -// Confirmed by registry 2008-06-17 -nr -biz.nr -info.nr -gov.nr -edu.nr -org.nr -net.nr -com.nr - -// nu : http://en.wikipedia.org/wiki/.nu -nu - -// nz : http://en.wikipedia.org/wiki/.nz -*.nz - -// om : http://en.wikipedia.org/wiki/.om -*.om -!mediaphone.om -!nawrastelecom.om -!nawras.om -!omanmobile.om -!omanpost.om -!omantel.om -!rakpetroleum.om -!siemens.om -!songfest.om -!statecouncil.om - -// org : http://en.wikipedia.org/wiki/.org -org - -// pa : http://www.nic.pa/ -// Some additional second level "domains" resolve directly as hostnames, such as -// pannet.pa, so we add a rule for "pa". -pa -ac.pa -gob.pa -com.pa -org.pa -sld.pa -edu.pa -net.pa -ing.pa -abo.pa -med.pa -nom.pa - -// pe : https://www.nic.pe/InformeFinalComision.pdf -pe -edu.pe -gob.pe -nom.pe -mil.pe -org.pe -com.pe -net.pe - -// pf : http://www.gobin.info/domainname/formulaire-pf.pdf -pf -com.pf -org.pf -edu.pf - -// pg : http://en.wikipedia.org/wiki/.pg -*.pg - -// ph : http://www.domains.ph/FAQ2.asp -// Submitted by registry 2008-06-13 -ph -com.ph -net.ph -org.ph -gov.ph -edu.ph -ngo.ph -mil.ph -i.ph - -// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK -pk -com.pk -net.pk -edu.pk -org.pk -fam.pk -biz.pk -web.pk -gov.pk -gob.pk -gok.pk -gon.pk -gop.pk -gos.pk -info.pk - -// pl : http://www.dns.pl/english/ -pl -// NASK functional domains (nask.pl / dns.pl) : http://www.dns.pl/english/dns-funk.html -aid.pl -agro.pl -atm.pl -auto.pl -biz.pl -com.pl -edu.pl -gmina.pl -gsm.pl -info.pl -mail.pl -miasta.pl -media.pl -mil.pl -net.pl -nieruchomosci.pl -nom.pl -org.pl -pc.pl -powiat.pl -priv.pl -realestate.pl -rel.pl -sex.pl -shop.pl -sklep.pl -sos.pl -szkola.pl -targi.pl -tm.pl -tourism.pl -travel.pl -turystyka.pl -// ICM functional domains (icm.edu.pl) -6bone.pl -art.pl -mbone.pl -// Government domains (administred by ippt.gov.pl) -gov.pl -uw.gov.pl -um.gov.pl -ug.gov.pl -upow.gov.pl -starostwo.gov.pl -so.gov.pl -sr.gov.pl -po.gov.pl -pa.gov.pl -// other functional domains -ngo.pl -irc.pl -usenet.pl -// NASK geographical domains : http://www.dns.pl/english/dns-regiony.html -augustow.pl -babia-gora.pl -bedzin.pl -beskidy.pl -bialowieza.pl -bialystok.pl -bielawa.pl -bieszczady.pl -boleslawiec.pl -bydgoszcz.pl -bytom.pl -cieszyn.pl -czeladz.pl -czest.pl -dlugoleka.pl -elblag.pl -elk.pl -glogow.pl -gniezno.pl -gorlice.pl -grajewo.pl -ilawa.pl -jaworzno.pl -jelenia-gora.pl -jgora.pl -kalisz.pl -kazimierz-dolny.pl -karpacz.pl -kartuzy.pl -kaszuby.pl -katowice.pl -kepno.pl -ketrzyn.pl -klodzko.pl -kobierzyce.pl -kolobrzeg.pl -konin.pl -konskowola.pl -kutno.pl -lapy.pl -lebork.pl -legnica.pl -lezajsk.pl -limanowa.pl -lomza.pl -lowicz.pl -lubin.pl -lukow.pl -malbork.pl -malopolska.pl -mazowsze.pl -mazury.pl -mielec.pl -mielno.pl -mragowo.pl -naklo.pl -nowaruda.pl -nysa.pl -olawa.pl -olecko.pl -olkusz.pl -olsztyn.pl -opoczno.pl -opole.pl -ostroda.pl -ostroleka.pl -ostrowiec.pl -ostrowwlkp.pl -pila.pl -pisz.pl -podhale.pl -podlasie.pl -polkowice.pl -pomorze.pl -pomorskie.pl -prochowice.pl -pruszkow.pl -przeworsk.pl -pulawy.pl -radom.pl -rawa-maz.pl -rybnik.pl -rzeszow.pl -sanok.pl -sejny.pl -siedlce.pl -slask.pl -slupsk.pl -sosnowiec.pl -stalowa-wola.pl -skoczow.pl -starachowice.pl -stargard.pl -suwalki.pl -swidnica.pl -swiebodzin.pl -swinoujscie.pl -szczecin.pl -szczytno.pl -tarnobrzeg.pl -tgory.pl -turek.pl -tychy.pl -ustka.pl -walbrzych.pl -warmia.pl -warszawa.pl -waw.pl -wegrow.pl -wielun.pl -wlocl.pl -wloclawek.pl -wodzislaw.pl -wolomin.pl -wroclaw.pl -zachpomor.pl -zagan.pl -zarow.pl -zgora.pl -zgorzelec.pl -// TASK geographical domains (www.task.gda.pl/uslugi/dns) -gda.pl -gdansk.pl -gdynia.pl -med.pl -sopot.pl -// other geographical domains -gliwice.pl -krakow.pl -poznan.pl -wroc.pl -zakopane.pl - -// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -pm - -// pn : http://www.government.pn/PnRegistry/policies.htm -pn -gov.pn -co.pn -org.pn -edu.pn -net.pn - -// pr : http://www.nic.pr/index.asp?f=1 -pr -com.pr -net.pr -org.pr -gov.pr -edu.pr -isla.pr -pro.pr -biz.pr -info.pr -name.pr -// these aren't mentioned on nic.pr, but on http://en.wikipedia.org/wiki/.pr -est.pr -prof.pr -ac.pr - -// pro : http://www.nic.pro/support_faq.htm -pro -aca.pro -bar.pro -cpa.pro -jur.pro -law.pro -med.pro -eng.pro - -// ps : http://en.wikipedia.org/wiki/.ps -// http://www.nic.ps/registration/policy.html#reg -ps -edu.ps -gov.ps -sec.ps -plo.ps -com.ps -org.ps -net.ps - -// pt : http://online.dns.pt/dns/start_dns -pt -net.pt -gov.pt -org.pt -edu.pt -int.pt -publ.pt -com.pt -nome.pt - -// pw : http://en.wikipedia.org/wiki/.pw -pw -co.pw -ne.pw -or.pw -ed.pw -go.pw -belau.pw - -// py : http://www.nic.py/faq_a.html#faq_b -*.py - -// qa : http://domains.qa/en/ -qa -com.qa -edu.qa -gov.qa -mil.qa -name.qa -net.qa -org.qa -sch.qa - -// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs -re -com.re -asso.re -nom.re - -// ro : http://www.rotld.ro/ -ro -com.ro -org.ro -tm.ro -nt.ro -nom.ro -info.ro -rec.ro -arts.ro -firm.ro -store.ro -www.ro - -// rs : http://en.wikipedia.org/wiki/.rs -rs -co.rs -org.rs -edu.rs -ac.rs -gov.rs -in.rs - -// ru : http://www.cctld.ru/ru/docs/aktiv_8.php -// Industry domains -ru -ac.ru -com.ru -edu.ru -int.ru -net.ru -org.ru -pp.ru -// Geographical domains -adygeya.ru -altai.ru -amur.ru -arkhangelsk.ru -astrakhan.ru -bashkiria.ru -belgorod.ru -bir.ru -bryansk.ru -buryatia.ru -cbg.ru -chel.ru -chelyabinsk.ru -chita.ru -chukotka.ru -chuvashia.ru -dagestan.ru -dudinka.ru -e-burg.ru -grozny.ru -irkutsk.ru -ivanovo.ru -izhevsk.ru -jar.ru -joshkar-ola.ru -kalmykia.ru -kaluga.ru -kamchatka.ru -karelia.ru -kazan.ru -kchr.ru -kemerovo.ru -khabarovsk.ru -khakassia.ru -khv.ru -kirov.ru -koenig.ru -komi.ru -kostroma.ru -krasnoyarsk.ru -kuban.ru -kurgan.ru -kursk.ru -lipetsk.ru -magadan.ru -mari.ru -mari-el.ru -marine.ru -mordovia.ru -mosreg.ru -msk.ru -murmansk.ru -nalchik.ru -nnov.ru -nov.ru -novosibirsk.ru -nsk.ru -omsk.ru -orenburg.ru -oryol.ru -palana.ru -penza.ru -perm.ru -pskov.ru -ptz.ru -rnd.ru -ryazan.ru -sakhalin.ru -samara.ru -saratov.ru -simbirsk.ru -smolensk.ru -spb.ru -stavropol.ru -stv.ru -surgut.ru -tambov.ru -tatarstan.ru -tom.ru -tomsk.ru -tsaritsyn.ru -tsk.ru -tula.ru -tuva.ru -tver.ru -tyumen.ru -udm.ru -udmurtia.ru -ulan-ude.ru -vladikavkaz.ru -vladimir.ru -vladivostok.ru -volgograd.ru -vologda.ru -voronezh.ru -vrn.ru -vyatka.ru -yakutia.ru -yamal.ru -yaroslavl.ru -yekaterinburg.ru -yuzhno-sakhalinsk.ru -// More geographical domains -amursk.ru -baikal.ru -cmw.ru -fareast.ru -jamal.ru -kms.ru -k-uralsk.ru -kustanai.ru -kuzbass.ru -magnitka.ru -mytis.ru -nakhodka.ru -nkz.ru -norilsk.ru -oskol.ru -pyatigorsk.ru -rubtsovsk.ru -snz.ru -syzran.ru -vdonsk.ru -zgrad.ru -// State domains -gov.ru -mil.ru -// Technical domains -test.ru - -// rw : http://www.nic.rw/cgi-bin/policy.pl -rw -gov.rw -net.rw -edu.rw -ac.rw -com.rw -co.rw -int.rw -mil.rw -gouv.rw - -// sa : http://www.nic.net.sa/ -sa -com.sa -net.sa -org.sa -gov.sa -med.sa -pub.sa -edu.sa -sch.sa - -// sb : http://www.sbnic.net.sb/ -// Submitted by registry 2008-06-08 -sb -com.sb -edu.sb -gov.sb -net.sb -org.sb - -// sc : http://www.nic.sc/ -sc -com.sc -gov.sc -net.sc -org.sc -edu.sc - -// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm -// Submitted by registry 2008-06-17 -sd -com.sd -net.sd -org.sd -edu.sd -med.sd -gov.sd -info.sd - -// se : http://en.wikipedia.org/wiki/.se -// Submitted by registry 2008-06-24 -se -a.se -ac.se -b.se -bd.se -brand.se -c.se -d.se -e.se -f.se -fh.se -fhsk.se -fhv.se -g.se -h.se -i.se -k.se -komforb.se -kommunalforbund.se -komvux.se -l.se -lanbib.se -m.se -n.se -naturbruksgymn.se -o.se -org.se -p.se -parti.se -pp.se -press.se -r.se -s.se -sshn.se -t.se -tm.se -u.se -w.se -x.se -y.se -z.se - -// sg : http://www.nic.net.sg/sub_policies_agreement/2ld.html -sg -com.sg -net.sg -org.sg -gov.sg -edu.sg -per.sg - -// sh : http://www.nic.sh/rules.html -// list of 2nd level domains ? -sh - -// si : http://en.wikipedia.org/wiki/.si -si - -// sj : No registrations at this time. -// Submitted by registry 2008-06-16 - -// sk : http://en.wikipedia.org/wiki/.sk -// list of 2nd level domains ? -sk - -// sl : http://www.nic.sl -// Submitted by registry 2008-06-12 -sl -com.sl -net.sl -edu.sl -gov.sl -org.sl - -// sm : http://en.wikipedia.org/wiki/.sm -sm - -// sn : http://en.wikipedia.org/wiki/.sn -sn -art.sn -com.sn -edu.sn -gouv.sn -org.sn -perso.sn -univ.sn - -// so : http://www.soregistry.com/ -so -com.so -net.so -org.so - -// sr : http://en.wikipedia.org/wiki/.sr -sr - -// st : http://www.nic.st/html/policyrules/ -st -co.st -com.st -consulado.st -edu.st -embaixada.st -gov.st -mil.st -net.st -org.st -principe.st -saotome.st -store.st - -// su : http://en.wikipedia.org/wiki/.su -su - -// sv : http://www.svnet.org.sv/svpolicy.html -*.sv - -// sy : http://en.wikipedia.org/wiki/.sy -// see also: http://www.gobin.info/domainname/sy.doc -sy -edu.sy -gov.sy -net.sy -mil.sy -com.sy -org.sy - -// sz : http://en.wikipedia.org/wiki/.sz -// http://www.sispa.org.sz/ -sz -co.sz -ac.sz -org.sz - -// tc : http://en.wikipedia.org/wiki/.tc -tc - -// td : http://en.wikipedia.org/wiki/.td -td - -// tel: http://en.wikipedia.org/wiki/.tel -// http://www.telnic.org/ -tel - -// tf : http://en.wikipedia.org/wiki/.tf -tf - -// tg : http://en.wikipedia.org/wiki/.tg -// http://www.nic.tg/nictg/index.php implies no reserved 2nd-level domains, -// although this contradicts wikipedia. -tg - -// th : http://en.wikipedia.org/wiki/.th -// Submitted by registry 2008-06-17 -th -ac.th -co.th -go.th -in.th -mi.th -net.th -or.th - -// tj : http://www.nic.tj/policy.htm -tj -ac.tj -biz.tj -co.tj -com.tj -edu.tj -go.tj -gov.tj -int.tj -mil.tj -name.tj -net.tj -nic.tj -org.tj -test.tj -web.tj - -// tk : http://en.wikipedia.org/wiki/.tk -tk - -// tl : http://en.wikipedia.org/wiki/.tl -tl -gov.tl - -// tm : http://www.nic.tm/rules.html -// list of 2nd level tlds ? -tm - -// tn : http://en.wikipedia.org/wiki/.tn -// http://whois.ati.tn/ -tn -com.tn -ens.tn -fin.tn -gov.tn -ind.tn -intl.tn -nat.tn -net.tn -org.tn -info.tn -perso.tn -tourism.tn -edunet.tn -rnrt.tn -rns.tn -rnu.tn -mincom.tn -agrinet.tn -defense.tn -turen.tn - -// to : http://en.wikipedia.org/wiki/.to -// Submitted by registry 2008-06-17 -to -com.to -gov.to -net.to -org.to -edu.to -mil.to - -// tr : http://en.wikipedia.org/wiki/.tr -*.tr -!nic.tr -// Used by government in the TRNC -// http://en.wikipedia.org/wiki/.nc.tr -gov.nc.tr - -// travel : http://en.wikipedia.org/wiki/.travel -travel - -// tt : http://www.nic.tt/ -tt -co.tt -com.tt -org.tt -net.tt -biz.tt -info.tt -pro.tt -int.tt -coop.tt -jobs.tt -mobi.tt -travel.tt -museum.tt -aero.tt -name.tt -gov.tt -edu.tt - -// tv : http://en.wikipedia.org/wiki/.tv -// Not listing any 2LDs as reserved since none seem to exist in practice, -// Wikipedia notwithstanding. -tv - -// tw : http://en.wikipedia.org/wiki/.tw -tw -edu.tw -gov.tw -mil.tw -com.tw -net.tw -org.tw -idv.tw -game.tw -ebiz.tw -club.tw -網路.tw -組織.tw -商業.tw - -// tz : http://en.wikipedia.org/wiki/.tz -// Submitted by registry 2008-06-17 -// Updated from http://www.tznic.or.tz/index.php/domains.html 2010-10-25 -ac.tz -co.tz -go.tz -mil.tz -ne.tz -or.tz -sc.tz - -// ua : http://www.nic.net.ua/ -ua -com.ua -edu.ua -gov.ua -in.ua -net.ua -org.ua -// ua geo-names -cherkassy.ua -chernigov.ua -chernovtsy.ua -ck.ua -cn.ua -crimea.ua -cv.ua -dn.ua -dnepropetrovsk.ua -donetsk.ua -dp.ua -if.ua -ivano-frankivsk.ua -kh.ua -kharkov.ua -kherson.ua -khmelnitskiy.ua -kiev.ua -kirovograd.ua -km.ua -kr.ua -ks.ua -kv.ua -lg.ua -lugansk.ua -lutsk.ua -lviv.ua -mk.ua -nikolaev.ua -od.ua -odessa.ua -pl.ua -poltava.ua -rovno.ua -rv.ua -sebastopol.ua -sumy.ua -te.ua -ternopil.ua -uzhgorod.ua -vinnica.ua -vn.ua -zaporizhzhe.ua -zp.ua -zhitomir.ua -zt.ua - -// Private registries in .ua -co.ua -pp.ua - -// ug : http://www.registry.co.ug/ -ug -co.ug -ac.ug -sc.ug -go.ug -ne.ug -or.ug - -// uk : http://en.wikipedia.org/wiki/.uk -*.uk -*.sch.uk -!bl.uk -!british-library.uk -!icnet.uk -!jet.uk -!mod.uk -!nel.uk -!nhs.uk -!nic.uk -!nls.uk -!national-library-scotland.uk -!parliament.uk -!police.uk - -// us : http://en.wikipedia.org/wiki/.us -us -dni.us -fed.us -isa.us -kids.us -nsn.us -// us geographic names -ak.us -al.us -ar.us -as.us -az.us -ca.us -co.us -ct.us -dc.us -de.us -fl.us -ga.us -gu.us -hi.us -ia.us -id.us -il.us -in.us -ks.us -ky.us -la.us -ma.us -md.us -me.us -mi.us -mn.us -mo.us -ms.us -mt.us -nc.us -nd.us -ne.us -nh.us -nj.us -nm.us -nv.us -ny.us -oh.us -ok.us -or.us -pa.us -pr.us -ri.us -sc.us -sd.us -tn.us -tx.us -ut.us -vi.us -vt.us -va.us -wa.us -wi.us -wv.us -wy.us -// The registrar notes several more specific domains available in each state, -// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat -// haphazard; in some states these domains resolve as addresses, while in others -// only subdomains are available, or even nothing at all. We include the -// most common ones where it's clear that different sites are different -// entities. -k12.ak.us -k12.al.us -k12.ar.us -k12.as.us -k12.az.us -k12.ca.us -k12.co.us -k12.ct.us -k12.dc.us -k12.de.us -k12.fl.us -k12.ga.us -k12.gu.us -// k12.hi.us Hawaii has a state-wide DOE login: bug 614565 -k12.ia.us -k12.id.us -k12.il.us -k12.in.us -k12.ks.us -k12.ky.us -k12.la.us -k12.ma.us -k12.md.us -k12.me.us -k12.mi.us -k12.mn.us -k12.mo.us -k12.ms.us -k12.mt.us -k12.nc.us -k12.nd.us -k12.ne.us -k12.nh.us -k12.nj.us -k12.nm.us -k12.nv.us -k12.ny.us -k12.oh.us -k12.ok.us -k12.or.us -k12.pa.us -k12.pr.us -k12.ri.us -k12.sc.us -k12.sd.us -k12.tn.us -k12.tx.us -k12.ut.us -k12.vi.us -k12.vt.us -k12.va.us -k12.wa.us -k12.wi.us -k12.wv.us -k12.wy.us - -cc.ak.us -cc.al.us -cc.ar.us -cc.as.us -cc.az.us -cc.ca.us -cc.co.us -cc.ct.us -cc.dc.us -cc.de.us -cc.fl.us -cc.ga.us -cc.gu.us -cc.hi.us -cc.ia.us -cc.id.us -cc.il.us -cc.in.us -cc.ks.us -cc.ky.us -cc.la.us -cc.ma.us -cc.md.us -cc.me.us -cc.mi.us -cc.mn.us -cc.mo.us -cc.ms.us -cc.mt.us -cc.nc.us -cc.nd.us -cc.ne.us -cc.nh.us -cc.nj.us -cc.nm.us -cc.nv.us -cc.ny.us -cc.oh.us -cc.ok.us -cc.or.us -cc.pa.us -cc.pr.us -cc.ri.us -cc.sc.us -cc.sd.us -cc.tn.us -cc.tx.us -cc.ut.us -cc.vi.us -cc.vt.us -cc.va.us -cc.wa.us -cc.wi.us -cc.wv.us -cc.wy.us - -lib.ak.us -lib.al.us -lib.ar.us -lib.as.us -lib.az.us -lib.ca.us -lib.co.us -lib.ct.us -lib.dc.us -lib.de.us -lib.fl.us -lib.ga.us -lib.gu.us -lib.hi.us -lib.ia.us -lib.id.us -lib.il.us -lib.in.us -lib.ks.us -lib.ky.us -lib.la.us -lib.ma.us -lib.md.us -lib.me.us -lib.mi.us -lib.mn.us -lib.mo.us -lib.ms.us -lib.mt.us -lib.nc.us -lib.nd.us -lib.ne.us -lib.nh.us -lib.nj.us -lib.nm.us -lib.nv.us -lib.ny.us -lib.oh.us -lib.ok.us -lib.or.us -lib.pa.us -lib.pr.us -lib.ri.us -lib.sc.us -lib.sd.us -lib.tn.us -lib.tx.us -lib.ut.us -lib.vi.us -lib.vt.us -lib.va.us -lib.wa.us -lib.wi.us -lib.wv.us -lib.wy.us - -// k12.ma.us contains school districts in Massachusetts. The 4LDs are -// managed indepedently except for private (PVT), charter (CHTR) and -// parochial (PAROCH) schools. Those are delegated dorectly to the -// 5LD operators. -pvt.k12.ma.us -chtr.k12.ma.us -paroch.k12.ma.us - -// uy : http://www.antel.com.uy/ -*.uy - -// uz : http://www.reg.uz/registerr.html -// are there other 2nd level tlds ? -uz -com.uz -co.uz - -// va : http://en.wikipedia.org/wiki/.va -va - -// vc : http://en.wikipedia.org/wiki/.vc -// Submitted by registry 2008-06-13 -vc -com.vc -net.vc -org.vc -gov.vc -mil.vc -edu.vc - -// ve : http://registro.nic.ve/nicve/registro/index.html -*.ve - -// vg : http://en.wikipedia.org/wiki/.vg -vg - -// vi : http://www.nic.vi/newdomainform.htm -// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other -// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they -// are available for registration (which they do not seem to be). -vi -co.vi -com.vi -k12.vi -net.vi -org.vi - -// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp -vn -com.vn -net.vn -org.vn -edu.vn -gov.vn -int.vn -ac.vn -biz.vn -info.vn -name.vn -pro.vn -health.vn - -// vu : http://en.wikipedia.org/wiki/.vu -// list of 2nd level tlds ? -vu - -// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -wf - -// ws : http://en.wikipedia.org/wiki/.ws -// http://samoanic.ws/index.dhtml -ws -com.ws -net.ws -org.ws -gov.ws -edu.ws - -// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -yt - -// IDN ccTLDs -// Please sort by ISO 3166 ccTLD, then punicode string -// when submitting patches and follow this format: -// ("" ) : -// [optional sponsoring org] -// - -// xn--mgbaam7a8h ("Emerat" Arabic) : AE -//http://nic.ae/english/arabicdomain/rules.jsp -امارات - -// xn--54b7fta0cc ("Bangla" Bangla) : BD -বাংলা - -// xn--fiqs8s ("China" Chinese-Han-Simplified <.Zhonggou>) : CN -// CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm -中国 - -// xn--fiqz9s ("China" Chinese-Han-Traditional <.Zhonggou>) : CN -// CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm -中國 - -// xn--lgbbat1ad8j ("Algeria / Al Jazair" Arabic) : DZ -الجزائر - -// xn--wgbh1c ("Egypt" Arabic .masr) : EG -// http://www.dotmasr.eg/ -مصر - -// xn--node ("ge" Georgian (Mkhedruli)) : GE -გე - -// xn--j6w193g ("Hong Kong" Chinese-Han) : HK -// https://www2.hkirc.hk/register/rules.jsp -香港 - -// xn--h2brj9c ("Bharat" Devanagari) : IN -// India -भारत - -// xn--mgbbh1a71e ("Bharat" Arabic) : IN -// India -بھارت - -// xn--fpcrj9c3d ("Bharat" Telugu) : IN -// India -భారత్ - -// xn--gecrj9c ("Bharat" Gujarati) : IN -// India -ભારત - -// xn--s9brj9c ("Bharat" Gurmukhi) : IN -// India -ਭਾਰਤ - -// xn--45brj9c ("Bharat" Bengali) : IN -// India -ভারত - -// xn--xkc2dl3a5ee0h ("India" Tamil) : IN -// India -இந்தியா - -// xn--mgba3a4f16a ("Iran" Persian) : IR -ایران - -// xn--mgba3a4fra ("Iran" Arabic) : IR -ايران - -//xn--mgbayh7gpa ("al-Ordon" Arabic) JO -//National Information Technology Center (NITC) -//Royal Scientific Society, Al-Jubeiha -الاردن - -// xn--3e0b707e ("Republic of Korea" Hangul) : KR -한국 - -// xn--fzc2c9e2c ("Lanka" Sinhalese-Sinhala) : LK -// http://nic.lk -ලංකා - -// xn--xkc2al3hye2a ("Ilangai" Tamil) : LK -// http://nic.lk -இலங்கை - -// xn--mgbc0a9azcg ("Morocco / al-Maghrib" Arabic) : MA -المغرب - -// xn--mgb9awbf ("Oman" Arabic) : OM -عمان - -// xn--ygbi2ammx ("Falasteen" Arabic) : PS -// The Palestinian National Internet Naming Authority (PNINA) -// http://www.pnina.ps -فلسطين - -// xn--90a3ac ("srb" Cyrillic) : RS -срб - -// xn--p1ai ("rf" Russian-Cyrillic) : RU -// http://www.cctld.ru/en/docs/rulesrf.php -рф - -// xn--wgbl6a ("Qatar" Arabic) : QA -// http://www.ict.gov.qa/ -قطر - -// xn--mgberp4a5d4ar ("AlSaudiah" Arabic) : SA -// http://www.nic.net.sa/ -السعودية - -// xn--mgberp4a5d4a87g ("AlSaudiah" Arabic) variant : SA -السعودیة - -// xn--mgbqly7c0a67fbc ("AlSaudiah" Arabic) variant : SA -السعودیۃ - -// xn--mgbqly7cvafr ("AlSaudiah" Arabic) variant : SA -السعوديه - -// xn--ogbpf8fl ("Syria" Arabic) : SY -سورية - -// xn--mgbtf8fl ("Syria" Arabic) variant : SY -سوريا - -// xn--yfro4i67o Singapore ("Singapore" Chinese-Han) : SG -新加坡 - -// xn--clchc0ea0b2g2a9gcd ("Singapore" Tamil) : SG -சிங்கப்பூர் - -// xn--o3cw4h ("Thai" Thai) : TH -// http://www.thnic.co.th -ไทย - -// xn--pgbs0dh ("Tunis") : TN -// http://nic.tn -تونس - -// xn--kpry57d ("Taiwan" Chinese-Han-Traditional) : TW -// http://www.twnic.net/english/dn/dn_07a.htm -台灣 - -// xn--kprw13d ("Taiwan" Chinese-Han-Simplified) : TW -// http://www.twnic.net/english/dn/dn_07a.htm -台湾 - -// xn--nnx388a ("Taiwan") variant : TW -臺灣 - -// xn--j1amh ("ukr" Cyrillic) : UA -укр - -// xn--mgb2ddes ("AlYemen" Arabic) : YE -اليمن - -// xxx : http://icmregistry.com -xxx - -// ye : http://www.y.net.ye/services/domain_name.htm -*.ye - -// za : http://www.zadna.org.za/slds.html -*.za - -// zm : http://en.wikipedia.org/wiki/.zm -*.zm - -// zw : http://en.wikipedia.org/wiki/.zw -*.zw - -// ===END ICANN DOMAINS=== -// ===BEGIN PRIVATE DOMAINS=== - -// info.at : http://www.info.at/ -biz.at -info.at - -// priv.at : http://www.nic.priv.at/ -// Submitted by registry 2008-06-09 -priv.at - -// co.ca : http://registry.co.ca -co.ca - -// CentralNic : http://www.centralnic.com/names/domains -// Confirmed by registry 2008-06-09 -ar.com -br.com -cn.com -de.com -eu.com -gb.com -gr.com -hu.com -jpn.com -kr.com -no.com -qc.com -ru.com -sa.com -se.com -uk.com -us.com -uy.com -za.com -gb.net -jp.net -se.net -uk.net -ae.org -us.org -com.de - -// Opera Software, A.S.A. -// Requested by Yngve Pettersen 2009-11-26 -operaunite.com - -// Google, Inc. -// Requested by Eduardo Vela 2010-09-06 -appspot.com - -// iki.fi : Submitted by Hannu Aronsson 2009-11-05 -iki.fi - -// c.la : http://www.c.la/ -c.la - -// ZaNiC : http://www.za.net/ -// Confirmed by registry 2009-10-03 -za.net -za.org - -// CoDNS B.V. -// Added 2010-05-23. -co.nl -co.no - -// Mainseek Sp. z o.o. : http://www.co.pl/ -co.pl - -// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/ -dyndns-at-home.com -dyndns-at-work.com -dyndns-blog.com -dyndns-free.com -dyndns-home.com -dyndns-ip.com -dyndns-mail.com -dyndns-office.com -dyndns-pics.com -dyndns-remote.com -dyndns-server.com -dyndns-web.com -dyndns-wiki.com -dyndns-work.com -dyndns.biz -dyndns.info -dyndns.org -dyndns.tv -at-band-camp.net -ath.cx -barrel-of-knowledge.info -barrell-of-knowledge.info -better-than.tv -blogdns.com -blogdns.net -blogdns.org -blogsite.org -boldlygoingnowhere.org -broke-it.net -buyshouses.net -cechire.com -dnsalias.com -dnsalias.net -dnsalias.org -dnsdojo.com -dnsdojo.net -dnsdojo.org -does-it.net -doesntexist.com -doesntexist.org -dontexist.com -dontexist.net -dontexist.org -doomdns.com -doomdns.org -dvrdns.org -dyn-o-saur.com -dynalias.com -dynalias.net -dynalias.org -dynathome.net -dyndns.ws -endofinternet.net -endofinternet.org -endoftheinternet.org -est-a-la-maison.com -est-a-la-masion.com -est-le-patron.com -est-mon-blogueur.com -for-better.biz -for-more.biz -for-our.info -for-some.biz -for-the.biz -forgot.her.name -forgot.his.name -from-ak.com -from-al.com -from-ar.com -from-az.net -from-ca.com -from-co.net -from-ct.com -from-dc.com -from-de.com -from-fl.com -from-ga.com -from-hi.com -from-ia.com -from-id.com -from-il.com -from-in.com -from-ks.com -from-ky.com -from-la.net -from-ma.com -from-md.com -from-me.org -from-mi.com -from-mn.com -from-mo.com -from-ms.com -from-mt.com -from-nc.com -from-nd.com -from-ne.com -from-nh.com -from-nj.com -from-nm.com -from-nv.com -from-ny.net -from-oh.com -from-ok.com -from-or.com -from-pa.com -from-pr.com -from-ri.com -from-sc.com -from-sd.com -from-tn.com -from-tx.com -from-ut.com -from-va.com -from-vt.com -from-wa.com -from-wi.com -from-wv.com -from-wy.com -ftpaccess.cc -fuettertdasnetz.de -game-host.org -game-server.cc -getmyip.com -gets-it.net -go.dyndns.org -gotdns.com -gotdns.org -groks-the.info -groks-this.info -ham-radio-op.net -here-for-more.info -hobby-site.com -hobby-site.org -home.dyndns.org -homedns.org -homeftp.net -homeftp.org -homeip.net -homelinux.com -homelinux.net -homelinux.org -homeunix.com -homeunix.net -homeunix.org -iamallama.com -in-the-band.net -is-a-anarchist.com -is-a-blogger.com -is-a-bookkeeper.com -is-a-bruinsfan.org -is-a-bulls-fan.com -is-a-candidate.org -is-a-caterer.com -is-a-celticsfan.org -is-a-chef.com -is-a-chef.net -is-a-chef.org -is-a-conservative.com -is-a-cpa.com -is-a-cubicle-slave.com -is-a-democrat.com -is-a-designer.com -is-a-doctor.com -is-a-financialadvisor.com -is-a-geek.com -is-a-geek.net -is-a-geek.org -is-a-green.com -is-a-guru.com -is-a-hard-worker.com -is-a-hunter.com -is-a-knight.org -is-a-landscaper.com -is-a-lawyer.com -is-a-liberal.com -is-a-libertarian.com -is-a-linux-user.org -is-a-llama.com -is-a-musician.com -is-a-nascarfan.com -is-a-nurse.com -is-a-painter.com -is-a-patsfan.org -is-a-personaltrainer.com -is-a-photographer.com -is-a-player.com -is-a-republican.com -is-a-rockstar.com -is-a-socialist.com -is-a-soxfan.org -is-a-student.com -is-a-teacher.com -is-a-techie.com -is-a-therapist.com -is-an-accountant.com -is-an-actor.com -is-an-actress.com -is-an-anarchist.com -is-an-artist.com -is-an-engineer.com -is-an-entertainer.com -is-by.us -is-certified.com -is-found.org -is-gone.com -is-into-anime.com -is-into-cars.com -is-into-cartoons.com -is-into-games.com -is-leet.com -is-lost.org -is-not-certified.com -is-saved.org -is-slick.com -is-uberleet.com -is-very-bad.org -is-very-evil.org -is-very-good.org -is-very-nice.org -is-very-sweet.org -is-with-theband.com -isa-geek.com -isa-geek.net -isa-geek.org -isa-hockeynut.com -issmarterthanyou.com -isteingeek.de -istmein.de -kicks-ass.net -kicks-ass.org -knowsitall.info -land-4-sale.us -lebtimnetz.de -leitungsen.de -likes-pie.com -likescandy.com -merseine.nu -mine.nu -misconfused.org -mypets.ws -myphotos.cc -neat-url.com -office-on-the.net -on-the-web.tv -podzone.net -podzone.org -readmyblog.org -saves-the-whales.com -scrapper-site.net -scrapping.cc -selfip.biz -selfip.com -selfip.info -selfip.net -selfip.org -sells-for-less.com -sells-for-u.com -sells-it.net -sellsyourhome.org -servebbs.com -servebbs.net -servebbs.org -serveftp.net -serveftp.org -servegame.org -shacknet.nu -simple-url.com -space-to-rent.com -stuff-4-sale.org -stuff-4-sale.us -teaches-yoga.com -thruhere.net -traeumtgerade.de -webhop.biz -webhop.info -webhop.net -webhop.org -worse-than.tv -writesthisblog.com - -// ===END PRIVATE DOMAINS=== diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/test.js deleted file mode 100644 index 5cbf536..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/test.js +++ /dev/null @@ -1,1625 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -'use strict'; -var vows = require('vows'); -var assert = require('assert'); -var async = require('async'); - -// NOTE use require("tough-cookie") in your own code: -var tough = require('./lib/cookie'); -var Cookie = tough.Cookie; -var CookieJar = tough.CookieJar; - - -function dateVows(table) { - var theVows = { }; - Object.keys(table).forEach(function(date) { - var expect = table[date]; - theVows[date] = function() { - var got = tough.parseDate(date) ? 'valid' : 'invalid'; - assert.equal(got, expect ? 'valid' : 'invalid'); - }; - }); - return { "date parsing": theVows }; -} - -function matchVows(func,table) { - var theVows = {}; - table.forEach(function(item) { - var str = item[0]; - var dom = item[1]; - var expect = item[2]; - var label = str+(expect?" matches ":" doesn't match ")+dom; - theVows[label] = function() { - assert.equal(func(str,dom),expect); - }; - }); - return theVows; -} - -function defaultPathVows(table) { - var theVows = {}; - table.forEach(function(item) { - var str = item[0]; - var expect = item[1]; - var label = str+" gives "+expect; - theVows[label] = function() { - assert.equal(tough.defaultPath(str),expect); - }; - }); - return theVows; -} - -var atNow = Date.now(); -function at(offset) { return {now: new Date(atNow+offset)}; } - -vows.describe('Cookie Jar') -.addBatch({ - "all defined": function() { - assert.ok(Cookie); - assert.ok(CookieJar); - }, -}) -.addBatch( - dateVows({ - "Wed, 09 Jun 2021 10:18:14 GMT": true, - "Wed, 09 Jun 2021 22:18:14 GMT": true, - "Tue, 18 Oct 2011 07:42:42.123 GMT": true, - "18 Oct 2011 07:42:42 GMT": true, - "8 Oct 2011 7:42:42 GMT": true, - "8 Oct 2011 7:2:42 GMT": false, - "Oct 18 2011 07:42:42 GMT": true, - "Tue Oct 18 2011 07:05:03 GMT+0000 (GMT)": true, - "09 Jun 2021 10:18:14 GMT": true, - "99 Jix 3038 48:86:72 ZMT": false, - '01 Jan 1970 00:00:00 GMT': true, - '01 Jan 1600 00:00:00 GMT': false, // before 1601 - '01 Jan 1601 00:00:00 GMT': true, - '10 Feb 81 13:00:00 GMT': true, // implicit year - 'Thu, 01 Jan 1970 00:00:010 GMT': true, // strange time, non-strict OK - 'Thu, 17-Apr-2014 02:12:29 GMT': true, // dashes - 'Thu, 17-Apr-2014 02:12:29 UTC': true, // dashes and UTC - }) -) -.addBatch({ - "strict date parse of Thu, 01 Jan 1970 00:00:010 GMT": { - topic: function() { - return tough.parseDate('Thu, 01 Jan 1970 00:00:010 GMT', true) ? true : false; - }, - "invalid": function(date) { - assert.equal(date,false); - }, - } -}) -.addBatch({ - "formatting": { - "a simple cookie": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b'); - }, - }, - "a cookie with spaces in the value": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'beta gamma'; - return c; - }, - "doesn't validate": function(c) { - assert.ok(!c.validate()); - }, - "'garbage in, garbage out'": function(c) { - assert.equal(c.toString(), 'a=beta gamma'); - }, - }, - "with an empty value and HttpOnly": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.httpOnly = true; - return c; - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=; HttpOnly'); - } - }, - "with an expiry": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT'); - }, - "to short string": function(c) { - assert.equal(c.cookieString(), 'a=b'); - }, - }, - "with a max-age": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - c.maxAge = 12345; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); // mabe this one *shouldn't*? - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345'); - }, - }, - "with a bunch of things": function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - c.maxAge = 12345; - c.domain = 'example.com'; - c.path = '/foo'; - c.secure = true; - c.httpOnly = true; - c.extensions = ['MyExtension']; - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345; Domain=example.com; Path=/foo; Secure; HttpOnly; MyExtension'); - }, - "a host-only cookie": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.hostOnly = true; - c.domain = 'shouldnt-stringify.example.com'; - c.path = '/should-stringify'; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Path=/should-stringify'); - }, - }, - "minutes are '10'": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.expires = new Date(1284113410000); - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - var str = c.toString(); - assert.notEqual(str, 'a=b; Expires=Fri, 010 Sep 2010 010:010:010 GMT'); - assert.equal(str, 'a=b; Expires=Fri, 10 Sep 2010 10:10:10 GMT'); - }, - } - } -}) -.addBatch({ - "TTL with max-age": function() { - var c = new Cookie(); - c.maxAge = 123; - assert.equal(c.TTL(), 123000); - assert.equal(c.expiryTime(new Date(9000000)), 9123000); - }, - "TTL with zero max-age": function() { - var c = new Cookie(); - c.key = 'a'; c.value = 'b'; - c.maxAge = 0; // should be treated as "earliest representable" - assert.equal(c.TTL(), 0); - assert.equal(c.expiryTime(new Date(9000000)), -Infinity); - assert.ok(!c.validate()); // not valid, really: non-zero-digit *DIGIT - }, - "TTL with negative max-age": function() { - var c = new Cookie(); - c.key = 'a'; c.value = 'b'; - c.maxAge = -1; // should be treated as "earliest representable" - assert.equal(c.TTL(), 0); - assert.equal(c.expiryTime(new Date(9000000)), -Infinity); - assert.ok(!c.validate()); // not valid, really: non-zero-digit *DIGIT - }, - "TTL with max-age and expires": function() { - var c = new Cookie(); - c.maxAge = 123; - c.expires = new Date(Date.now()+9000); - assert.equal(c.TTL(), 123000); - assert.ok(c.isPersistent()); - }, - "TTL with expires": function() { - var c = new Cookie(); - var now = Date.now(); - c.expires = new Date(now+9000); - assert.equal(c.TTL(now), 9000); - assert.equal(c.expiryTime(), c.expires.getTime()); - }, - "TTL with old expires": function() { - var c = new Cookie(); - c.setExpires('17 Oct 2010 00:00:00 GMT'); - assert.ok(c.TTL() < 0); - assert.ok(c.isPersistent()); - }, - "default TTL": { - topic: function() { return new Cookie(); }, - "is Infinite-future": function(c) { assert.equal(c.TTL(), Infinity) }, - "is a 'session' cookie": function(c) { assert.ok(!c.isPersistent()) }, - }, -}).addBatch({ - "Parsing": { - "simple": { - topic: function() { - return Cookie.parse('a=bcd',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'a') }, - "value": function(c) { assert.equal(c.value, 'bcd') }, - "no path": function(c) { assert.equal(c.path, null) }, - "no domain": function(c) { assert.equal(c.domain, null) }, - "no extensions": function(c) { assert.ok(!c.extensions) }, - }, - "with expiry": { - topic: function() { - return Cookie.parse('a=bcd; Expires=Tue, 18 Oct 2011 07:05:03 GMT',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'a') }, - "value": function(c) { assert.equal(c.value, 'bcd') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - }, - "with expiry and path": { - topic: function() { - return Cookie.parse('abc="xyzzy!"; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Path=/aBc',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'abc') }, - "value": function(c) { assert.equal(c.value, 'xyzzy!') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - "has path": function(c) { assert.equal(c.path, '/aBc'); }, - "no httponly or secure": function(c) { - assert.ok(!c.httpOnly); - assert.ok(!c.secure); - }, - }, - "with everything": { - topic: function() { - return Cookie.parse('abc="xyzzy!"; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Path=/aBc; Domain=example.com; Secure; HTTPOnly; Max-Age=1234; Foo=Bar; Baz', true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'abc') }, - "value": function(c) { assert.equal(c.value, 'xyzzy!') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - "has path": function(c) { assert.equal(c.path, '/aBc'); }, - "has domain": function(c) { assert.equal(c.domain, 'example.com'); }, - "has httponly": function(c) { assert.equal(c.httpOnly, true); }, - "has secure": function(c) { assert.equal(c.secure, true); }, - "has max-age": function(c) { assert.equal(c.maxAge, 1234); }, - "has extensions": function(c) { - assert.ok(c.extensions); - assert.equal(c.extensions[0], 'Foo=Bar'); - assert.equal(c.extensions[1], 'Baz'); - }, - }, - "invalid expires": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Expires=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Expires=xyzzy"); - assert.ok(c); - assert.equal(c.expires, Infinity); - }, - }, - "zero max-age": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Max-Age=0", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Max-Age=0"); - assert.ok(c); - assert.equal(c.maxAge, 0); - }, - }, - "negative max-age": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Max-Age=-1", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Max-Age=-1"); - assert.ok(c); - assert.equal(c.maxAge, -1); - }, - }, - "empty domain": { - "strict": function() { assert.ok(!Cookie.parse("a=b; domain=", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; domain="); - assert.ok(c); - assert.equal(c.domain, null); - }, - }, - "dot domain": { - "strict": function() { assert.ok(!Cookie.parse("a=b; domain=.", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; domain=."); - assert.ok(c); - assert.equal(c.domain, null); - }, - }, - "uppercase domain": { - "strict lowercases": function() { - var c = Cookie.parse("a=b; domain=EXAMPLE.COM"); - assert.ok(c); - assert.equal(c.domain, 'example.com'); - }, - "non-strict lowercases": function() { - var c = Cookie.parse("a=b; domain=EXAMPLE.COM"); - assert.ok(c); - assert.equal(c.domain, 'example.com'); - }, - }, - "trailing dot in domain": { - topic: function() { - return Cookie.parse("a=b; Domain=example.com.", true) || null; - }, - "has the domain": function(c) { assert.equal(c.domain,"example.com.") }, - "but doesn't validate": function(c) { assert.equal(c.validate(),false) }, - }, - "empty path": { - "strict": function() { assert.ok(!Cookie.parse("a=b; path=", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; path="); - assert.ok(c); - assert.equal(c.path, null); - }, - }, - "no-slash path": { - "strict": function() { assert.ok(!Cookie.parse("a=b; path=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; path=xyzzy"); - assert.ok(c); - assert.equal(c.path, null); - }, - }, - "trailing semi-colons after path": { - topic: function () { - return [ - "a=b; path=/;", - "c=d;;;;" - ]; - }, - "strict": function (t) { - assert.ok(!Cookie.parse(t[0], true)); - assert.ok(!Cookie.parse(t[1], true)); - }, - "non-strict": function (t) { - var c1 = Cookie.parse(t[0]); - var c2 = Cookie.parse(t[1]); - assert.ok(c1); - assert.ok(c2); - assert.equal(c1.path, '/'); - } - }, - "secure-with-value": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Secure=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Secure=xyzzy"); - assert.ok(c); - assert.equal(c.secure, true); - }, - }, - "httponly-with-value": { - "strict": function() { assert.ok(!Cookie.parse("a=b; HttpOnly=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; HttpOnly=xyzzy"); - assert.ok(c); - assert.equal(c.httpOnly, true); - }, - }, - "garbage": { - topic: function() { - return Cookie.parse("\x08", true) || null; - }, - "doesn't parse": function(c) { assert.equal(c,null) }, - }, - "public suffix domain": { - topic: function() { - return Cookie.parse("a=b; domain=kyoto.jp", true) || null; - }, - "parses fine": function(c) { - assert.ok(c); - assert.equal(c.domain, 'kyoto.jp'); - }, - "but fails validation": function(c) { - assert.ok(c); - assert.ok(!c.validate()); - }, - }, - "Ironically, Google 'GAPS' cookie has very little whitespace": { - topic: function() { - return Cookie.parse("GAPS=1:A1aaaaAaAAa1aaAaAaaAAAaaa1a11a:aaaAaAaAa-aaaA1-;Path=/;Expires=Thu, 17-Apr-2014 02:12:29 GMT;Secure;HttpOnly"); - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'GAPS') }, - "value": function(c) { assert.equal(c.value, '1:A1aaaaAaAAa1aaAaAaaAAAaaa1a11a:aaaAaAaAa-aaaA1-') }, - "path": function(c) { - assert.notEqual(c.path, '/;Expires'); // BUG - assert.equal(c.path, '/'); - }, - "expires": function(c) { - assert.notEqual(c.expires, Infinity); - assert.equal(c.expires.getTime(), 1397700749000); - }, - "secure": function(c) { assert.ok(c.secure) }, - "httponly": function(c) { assert.ok(c.httpOnly) }, - }, - "lots of equal signs": { - topic: function() { - return Cookie.parse("queryPref=b=c&d=e; Path=/f=g; Expires=Thu, 17 Apr 2014 02:12:29 GMT; HttpOnly"); - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'queryPref') }, - "value": function(c) { assert.equal(c.value, 'b=c&d=e') }, - "path": function(c) { - assert.equal(c.path, '/f=g'); - }, - "expires": function(c) { - assert.notEqual(c.expires, Infinity); - assert.equal(c.expires.getTime(), 1397700749000); - }, - "httponly": function(c) { assert.ok(c.httpOnly) }, - }, - "spaces in value": { - "strict": { - topic: function() { - return Cookie.parse('a=one two three',true) || null; - }, - "did not parse": function(c) { assert.isNull(c) }, - }, - "non-strict": { - topic: function() { - return Cookie.parse('a=one two three',false) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'a') }, - "value": function(c) { assert.equal(c.value, 'one two three') }, - "no path": function(c) { assert.equal(c.path, null) }, - "no domain": function(c) { assert.equal(c.domain, null) }, - "no extensions": function(c) { assert.ok(!c.extensions) }, - }, - }, - "quoted spaces in value": { - "strict": { - topic: function() { - return Cookie.parse('a="one two three"',true) || null; - }, - "did not parse": function(c) { assert.isNull(c) }, - }, - "non-strict": { - topic: function() { - return Cookie.parse('a="one two three"',false) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'a') }, - "value": function(c) { assert.equal(c.value, 'one two three') }, - "no path": function(c) { assert.equal(c.path, null) }, - "no domain": function(c) { assert.equal(c.domain, null) }, - "no extensions": function(c) { assert.ok(!c.extensions) }, - } - }, - "non-ASCII in value": { - "strict": { - topic: function() { - return Cookie.parse('farbe=weiß',true) || null; - }, - "did not parse": function(c) { assert.isNull(c) }, - }, - "non-strict": { - topic: function() { - return Cookie.parse('farbe=weiß',false) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'farbe') }, - "value": function(c) { assert.equal(c.value, 'weiß') }, - "no path": function(c) { assert.equal(c.path, null) }, - "no domain": function(c) { assert.equal(c.domain, null) }, - "no extensions": function(c) { assert.ok(!c.extensions) }, - }, - }, - } -}) -.addBatch({ - "domain normalization": { - "simple": function() { - var c = new Cookie(); - c.domain = "EXAMPLE.com"; - assert.equal(c.canonicalizedDomain(), "example.com"); - }, - "extra dots": function() { - var c = new Cookie(); - c.domain = ".EXAMPLE.com"; - assert.equal(c.cdomain(), "example.com"); - }, - "weird trailing dot": function() { - var c = new Cookie(); - c.domain = "EXAMPLE.ca."; - assert.equal(c.canonicalizedDomain(), "example.ca."); - }, - "weird internal dots": function() { - var c = new Cookie(); - c.domain = "EXAMPLE...ca."; - assert.equal(c.canonicalizedDomain(), "example...ca."); - }, - "IDN": function() { - var c = new Cookie(); - c.domain = "δοκιμή.δοκιμή"; // "test.test" in greek - assert.equal(c.canonicalizedDomain(), "xn--jxalpdlp.xn--jxalpdlp"); - } - } -}) -.addBatch({ - "Domain Match":matchVows(tough.domainMatch, [ - // str, dom, expect - ["example.com", "example.com", true], - ["eXaMpLe.cOm", "ExAmPlE.CoM", true], - ["no.ca", "yes.ca", false], - ["wwwexample.com", "example.com", false], - ["www.example.com", "example.com", true], - ["example.com", "www.example.com", false], - ["www.subdom.example.com", "example.com", true], - ["www.subdom.example.com", "subdom.example.com", true], - ["example.com", "example.com.", false], // RFC6265 S4.1.2.3 - ["192.168.0.1", "168.0.1", false], // S5.1.3 "The string is a host name" - [null, "example.com", null], - ["example.com", null, null], - [null, null, null], - [undefined, undefined, null], - ]) -}) -.addBatch({ - "default-path": defaultPathVows([ - [null,"/"], - ["/","/"], - ["/file","/"], - ["/dir/file","/dir"], - ["noslash","/"], - ]) -}) -.addBatch({ - "Path-Match": matchVows(tough.pathMatch, [ - // request, cookie, match - ["/","/",true], - ["/dir","/",true], - ["/","/dir",false], - ["/dir/","/dir/", true], - ["/dir/file","/dir/",true], - ["/dir/file","/dir",true], - ["/directory","/dir",false], - ]) -}) -.addBatch({ - "Cookie Sorting": { - topic: function() { - var cookies = []; - var now = Date.now(); - cookies.push(Cookie.parse("a=0; Domain=example.com")); - cookies.push(Cookie.parse("b=1; Domain=www.example.com")); - cookies.push(Cookie.parse("c=2; Domain=example.com; Path=/pathA")); - cookies.push(Cookie.parse("d=3; Domain=www.example.com; Path=/pathA")); - cookies.push(Cookie.parse("e=4; Domain=example.com; Path=/pathA/pathB")); - cookies.push(Cookie.parse("f=5; Domain=www.example.com; Path=/pathA/pathB")); - - // force a stable creation time consistent with the order above since - // some may have been created at now + 1ms. - var i = cookies.length; - cookies.forEach(function(cookie) { - cookie.creation = new Date(now - 100*(i--)); - }); - - // weak shuffle: - cookies = cookies.sort(function(){return Math.random()-0.5}); - - cookies = cookies.sort(tough.cookieCompare); - return cookies; - }, - "got": function(cookies) { - assert.lengthOf(cookies, 6); - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['e','f','c','d','a','b']); - }, - } -}) -.addBatch({ - "CookieJar": { - "Setting a basic cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "works": function(c) { assert.instanceOf(c,Cookie) }, // C is for Cookie, good enough for me - "gets timestamped": function(c) { - assert.ok(c.creation); - assert.ok(Date.now() - c.creation.getTime() < 5000); // recently stamped - assert.ok(c.lastAccessed); - assert.equal(c.creation, c.lastAccessed); - assert.equal(c.TTL(), Infinity); - assert.ok(!c.isPersistent()); - }, - }, - "Setting a no-path cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "domain": function(c) { assert.equal(c.domain, 'example.com') }, - "path is /": function(c) { assert.equal(c.path, '/') }, - "path was derived": function(c) { assert.strictEqual(c.pathIsDefault, true) }, - }, - "Setting a cookie already marked as host-only": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - c.hostOnly = true; - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "domain": function(c) { assert.equal(c.domain, 'example.com') }, - "still hostOnly": function(c) { assert.strictEqual(c.hostOnly, true) }, - }, - "Setting a session cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b"); - assert.strictEqual(c.path, null); - cj.setCookie(c, 'http://www.example.com/dir/index.html', this.callback); - }, - "works": function(c) { assert.instanceOf(c,Cookie) }, - "gets the domain": function(c) { assert.equal(c.domain, 'www.example.com') }, - "gets the default path": function(c) { assert.equal(c.path, '/dir') }, - "is 'hostOnly'": function(c) { assert.ok(c.hostOnly) }, - }, - "Setting wrong domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=fooxample.com; Path=/"); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "fails": function(err,c) { - assert.ok(err.message.match(/domain/i)); - assert.ok(!c); - }, - }, - "Setting sub-domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=www.example.com; Path=/"); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "fails": function(err,c) { - assert.ok(err.message.match(/domain/i)); - assert.ok(!c); - }, - }, - "Setting super-domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/"); - cj.setCookie(c, 'http://www.app.example.com/index.html', this.callback); - }, - "success": function(err,c) { - assert.ok(!err); - assert.equal(c.domain, 'example.com'); - }, - }, - "Setting a sub-path cookie on a super-domain": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/subpath"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - cj.setCookie(c, 'http://www.example.com/index.html', this.callback); - }, - "domain is super-domain": function(c) { assert.equal(c.domain, 'example.com') }, - "path is /subpath": function(c) { assert.equal(c.path, '/subpath') }, - "path was NOT derived": function(c) { assert.strictEqual(c.pathIsDefault, null) }, - }, - "Setting HttpOnly cookie over non-HTTP API": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/; HttpOnly"); - cj.setCookie(c, 'http://example.com/index.html', {http:false}, this.callback); - }, - "fails": function(err,c) { - assert.match(err.message, /HttpOnly/i); - assert.ok(!c); - }, - }, - }, - "Cookie Jar store eight cookies": { - topic: function() { - var cj = new CookieJar(); - var ex = 'http://example.com/index.html'; - var tasks = []; - tasks.push(function(next) { - cj.setCookie('a=1; Domain=example.com; Path=/',ex,at(0),next); - }); - tasks.push(function(next) { - cj.setCookie('b=2; Domain=example.com; Path=/; HttpOnly',ex,at(1000),next); - }); - tasks.push(function(next) { - cj.setCookie('c=3; Domain=example.com; Path=/; Secure',ex,at(2000),next); - }); - tasks.push(function(next) { // path - cj.setCookie('d=4; Domain=example.com; Path=/foo',ex,at(3000),next); - }); - tasks.push(function(next) { // host only - cj.setCookie('e=5',ex,at(4000),next); - }); - tasks.push(function(next) { // other domain - cj.setCookie('f=6; Domain=nodejs.org; Path=/','http://nodejs.org',at(5000),next); - }); - tasks.push(function(next) { // expired - cj.setCookie('g=7; Domain=example.com; Path=/; Expires=Tue, 18 Oct 2011 00:00:00 GMT',ex,at(6000),next); - }); - tasks.push(function(next) { // expired via Max-Age - cj.setCookie('h=8; Domain=example.com; Path=/; Max-Age=1',ex,next); - }); - var cb = this.callback; - async.parallel(tasks, function(err,results){ - setTimeout(function() { - cb(err,cj,results); - }, 2000); // so that 'h=8' expires - }); - }, - "setup ok": function(err,cj,results) { - assert.ok(!err); - assert.ok(cj); - assert.ok(results); - }, - "then retrieving for http://nodejs.org": { - topic: function(cj,oldResults) { - assert.ok(oldResults); - cj.getCookies('http://nodejs.org',this.callback); - }, - "get a nodejs cookie": function(cookies) { - assert.lengthOf(cookies, 1); - var cookie = cookies[0]; - assert.equal(cookie.domain, 'nodejs.org'); - }, - }, - "then retrieving for https://example.com": { - topic: function(cj,oldResults) { - assert.ok(oldResults); - cj.getCookies('https://example.com',{secure:true},this.callback); - }, - "get a secure example cookie with others": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','c','e']); - }, - }, - "then retrieving for https://example.com (missing options)": { - topic: function(cj,oldResults) { - assert.ok(oldResults); - cj.getCookies('https://example.com',this.callback); - }, - "get a secure example cookie with others": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','c','e']); - }, - }, - "then retrieving for http://example.com": { - topic: function(cj,oldResults) { - assert.ok(oldResults); - cj.getCookies('http://example.com',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','e']); - }, - }, - "then retrieving for http://EXAMPlE.com": { - topic: function(cj,oldResults) { - assert.ok(oldResults); - cj.getCookies('http://EXAMPlE.com',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','e']); - }, - }, - "then retrieving for http://example.com, non-HTTP": { - topic: function(cj,oldResults) { - assert.ok(oldResults); - cj.getCookies('http://example.com',{http:false},this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','e']); - }, - }, - "then retrieving for http://example.com/foo/bar": { - topic: function(cj,oldResults) { - assert.ok(oldResults); - cj.getCookies('http://example.com/foo/bar',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['d','a','b','e']); - }, - }, - "then retrieving for http://example.com as a string": { - topic: function(cj,oldResults) { - assert.ok(oldResults); - cj.getCookieString('http://example.com',this.callback); - }, - "get a single string": function(cookieHeader) { - assert.equal(cookieHeader, "a=1; b=2; e=5"); - }, - }, - "then retrieving for http://example.com as a set-cookie header": { - topic: function(cj,oldResults) { - assert.ok(oldResults); - cj.getSetCookieStrings('http://example.com',this.callback); - }, - "get a single string": function(cookieHeaders) { - assert.lengthOf(cookieHeaders, 3); - assert.equal(cookieHeaders[0], "a=1; Domain=example.com; Path=/"); - assert.equal(cookieHeaders[1], "b=2; Domain=example.com; Path=/; HttpOnly"); - assert.equal(cookieHeaders[2], "e=5; Path=/"); - }, - }, - "then retrieving for http://www.example.com/": { - topic: function(cj,oldResults) { - assert.ok(oldResults); - cj.getCookies('http://www.example.com/foo/bar',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['d','a','b']); // note lack of 'e' - }, - }, - }, - "Repeated names": { - topic: function() { - var cb = this.callback; - var cj = new CookieJar(); - var ex = 'http://www.example.com/'; - var sc = cj.setCookie; - var tasks = []; - var now = Date.now(); - tasks.push(sc.bind(cj,'aaaa=xxxx',ex,at(0))); - tasks.push(sc.bind(cj,'aaaa=1111; Domain=www.example.com',ex,at(1000))); - tasks.push(sc.bind(cj,'aaaa=2222; Domain=example.com',ex,at(2000))); - tasks.push(sc.bind(cj,'aaaa=3333; Domain=www.example.com; Path=/pathA',ex,at(3000))); - async.series(tasks,function(err,results) { - results = results.filter(function(e) {return e !== undefined}); - cb(err,{cj:cj, cookies:results, now:now}); - }); - }, - "all got set": function(err,t) { - assert.lengthOf(t.cookies,4); - }, - "then getting 'em back": { - topic: function(t) { - var cj = t.cj; - cj.getCookies('http://www.example.com/pathA',this.callback); - }, - "there's just three": function (err,cookies) { - var vals = cookies.map(function(c) {return c.value}); - // may break with sorting; sorting should put 3333 first due to longest path: - assert.deepEqual(vals, ['3333','1111','2222']); - } - }, - }, - "CookieJar setCookie errors": { - "public-suffix domain": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('i=9; Domain=kyoto.jp; Path=/','kyoto.jp',this.callback); - }, - "errors": function(err,cookie) { - assert.ok(err); - assert.ok(!cookie); - assert.match(err.message, /public suffix/i); - }, - }, - "wrong domain": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('j=10; Domain=google.com; Path=/','google.ca',this.callback); - }, - "errors": function(err,cookie) { - assert.ok(err); - assert.ok(!cookie); - assert.match(err.message, /not in this host's domain/i); - }, - }, - "old cookie is HttpOnly": { - topic: function() { - var cb = this.callback; - var next = function (err,c) { - c = null; - return cb(err,cj); - }; - var cj = new CookieJar(); - cj.setCookie('k=11; Domain=example.ca; Path=/; HttpOnly','http://example.ca',{http:true},next); - }, - "initial cookie is set": function(err,cj) { - assert.ok(!err); - assert.ok(cj); - }, - "but when trying to overwrite": { - topic: function(cj) { - var cb = this.callback; - var next = function(err,c) { - c = null; - cb(null,err); - }; - cj.setCookie('k=12; Domain=example.ca; Path=/','http://example.ca',{http:false},next); - }, - "it's an error": function(err) { - assert.ok(err); - }, - "then, checking the original": { - topic: function(ignored,cj) { - assert.ok(cj instanceof CookieJar); - cj.getCookies('http://example.ca',{http:true},this.callback); - }, - "cookie has original value": function(err,cookies) { - assert.equal(err,null); - assert.lengthOf(cookies, 1); - assert.equal(cookies[0].value,11); - }, - }, - }, - }, - }, -}) -.addBatch({ - "JSON": { - "serialization": { - topic: function() { - var c = Cookie.parse('alpha=beta; Domain=example.com; Path=/foo; Expires=Tue, 19 Jan 2038 03:14:07 GMT; HttpOnly'); - return JSON.stringify(c); - }, - "gives a string": function(str) { - assert.equal(typeof str, "string"); - }, - "date is in ISO format": function(str) { - assert.match(str, /"expires":"2038-01-19T03:14:07\.000Z"/, 'expires is in ISO format'); - }, - }, - "deserialization": { - topic: function() { - var json = '{"key":"alpha","value":"beta","domain":"example.com","path":"/foo","expires":"2038-01-19T03:14:07.000Z","httpOnly":true,"lastAccessed":2000000000123}'; - return Cookie.fromJSON(json); - }, - "works": function(c) { - assert.ok(c); - }, - "key": function(c) { assert.equal(c.key, "alpha") }, - "value": function(c) { assert.equal(c.value, "beta") }, - "domain": function(c) { assert.equal(c.domain, "example.com") }, - "path": function(c) { assert.equal(c.path, "/foo") }, - "httpOnly": function(c) { assert.strictEqual(c.httpOnly, true) }, - "secure": function(c) { assert.strictEqual(c.secure, false) }, - "hostOnly": function(c) { assert.strictEqual(c.hostOnly, null) }, - "expires is a date object": function(c) { - assert.equal(c.expires.getTime(), 2147483647000); - }, - "lastAccessed is a date object": function(c) { - assert.equal(c.lastAccessed.getTime(), 2000000000123); - }, - "creation defaulted": function(c) { - assert.ok(c.creation.getTime()); - } - }, - "null deserialization": { - topic: function() { - return Cookie.fromJSON(null); - }, - "is null": function(cookie) { - assert.equal(cookie,null); - }, - }, - }, - "expiry deserialization": { - "Infinity": { - topic: Cookie.fromJSON.bind(null, '{"expires":"Infinity"}'), - "is infinite": function(c) { - assert.strictEqual(c.expires, "Infinity"); - assert.equal(c.expires, Infinity); - }, - }, - }, - "maxAge serialization": { - topic: function() { - return function(toSet) { - var c = new Cookie(); - c.key = 'foo'; c.value = 'bar'; - c.setMaxAge(toSet); - return JSON.stringify(c); - }; - }, - "zero": { - topic: function(f) { return f(0) }, - "looks good": function(str) { - assert.match(str, /"maxAge":0/); - }, - }, - "Infinity": { - topic: function(f) { return f(Infinity) }, - "looks good": function(str) { - assert.match(str, /"maxAge":"Infinity"/); - }, - }, - "-Infinity": { - topic: function(f) { return f(-Infinity) }, - "looks good": function(str) { - assert.match(str, /"maxAge":"-Infinity"/); - }, - }, - "null": { - topic: function(f) { return f(null) }, - "looks good": function(str) { - assert.match(str, /"maxAge":null/); - }, - }, - }, - "maxAge deserialization": { - "number": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":123}'), - "is the number": function(c) { - assert.strictEqual(c.maxAge, 123); - }, - }, - "null": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":null}'), - "is null": function(c) { - assert.strictEqual(c.maxAge, null); - }, - }, - "less than zero": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":-123}'), - "is -123": function(c) { - assert.strictEqual(c.maxAge, -123); - }, - }, - "Infinity": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"Infinity"}'), - "is inf-as-string": function(c) { - assert.strictEqual(c.maxAge, "Infinity"); - }, - }, - "-Infinity": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"-Infinity"}'), - "is inf-as-string": function(c) { - assert.strictEqual(c.maxAge, "-Infinity"); - }, - }, - } -}) -.addBatch({ - "permuteDomain": { - "base case": { - topic: tough.permuteDomain.bind(null,'example.com'), - "got the domain": function(list) { - assert.deepEqual(list, ['example.com']); - }, - }, - "two levels": { - topic: tough.permuteDomain.bind(null,'foo.bar.example.com'), - "got three things": function(list) { - assert.deepEqual(list, ['example.com','bar.example.com','foo.bar.example.com']); - }, - }, - "invalid domain": { - topic: tough.permuteDomain.bind(null,'foo.bar.example.localduhmain'), - "got three things": function(list) { - assert.equal(list, null); - }, - }, - }, - "permutePath": { - "base case": { - topic: tough.permutePath.bind(null,'/'), - "just slash": function(list) { - assert.deepEqual(list,['/']); - }, - }, - "single case": { - topic: tough.permutePath.bind(null,'/foo'), - "two things": function(list) { - assert.deepEqual(list,['/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo',e)); - }); - }, - }, - "double case": { - topic: tough.permutePath.bind(null,'/foo/bar'), - "four things": function(list) { - assert.deepEqual(list,['/foo/bar','/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo/bar',e)); - }); - }, - }, - "trailing slash": { - topic: tough.permutePath.bind(null,'/foo/bar/'), - "three things": function(list) { - assert.deepEqual(list,['/foo/bar','/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo/bar/',e)); - }); - }, - }, - } -}) -.addBatch({ - "Issue 1": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('hello=world; path=/some/path/', 'http://domain/some/path/file', function(err,cookie) { - this.callback(err,{cj:cj, cookie:cookie}); - }.bind(this)); - }, - "stored a cookie": function(t) { - assert.ok(t.cookie); - }, - "cookie's path was modified to remove unnecessary slash": function(t) { - assert.equal(t.cookie.path, '/some/path'); - }, - "getting it back": { - topic: function(t) { - t.cj.getCookies('http://domain/some/path/file', function(err,cookies) { - this.callback(err, {cj:t.cj, cookies:cookies||[]}); - }.bind(this)); - }, - "got one cookie": function(t) { - assert.lengthOf(t.cookies, 1); - }, - "it's the right one": function(t) { - var c = t.cookies[0]; - assert.equal(c.key, 'hello'); - assert.equal(c.value, 'world'); - }, - } - } -}) -.addBatch({ - "expiry option": { - topic: function() { - var cb = this.callback; - var cj = new CookieJar(); - cj.setCookie('near=expiry; Domain=example.com; Path=/; Max-Age=1','http://www.example.com',at(-1), function(err,cookie) { - - cb(err, {cj:cj, cookie:cookie}); - }); - }, - "set the cookie": function(t) { - assert.ok(t.cookie, "didn't set?!"); - assert.equal(t.cookie.key, 'near'); - }, - "then, retrieving": { - topic: function(t) { - var cb = this.callback; - setTimeout(function() { - t.cj.getCookies('http://www.example.com', {http:true, expire:false}, function(err,cookies) { - t.cookies = cookies; - cb(err,t); - }); - },2000); - }, - "got the cookie": function(t) { - assert.lengthOf(t.cookies, 1); - assert.equal(t.cookies[0].key, 'near'); - }, - } - } -}) -.addBatch({ - "trailing semi-colon set into cj": { - topic: function () { - var cb = this.callback; - var cj = new CookieJar(); - var ex = 'http://www.example.com'; - var tasks = []; - tasks.push(function(next) { - cj.setCookie('broken_path=testme; path=/;',ex,at(-1),next); - }); - tasks.push(function(next) { - cj.setCookie('b=2; Path=/;;;;',ex,at(-1),next); - }); - async.parallel(tasks, function (err, cookies) { - cb(null, { - cj: cj, - cookies: cookies - }); - }); - }, - "check number of cookies": function (t) { - assert.lengthOf(t.cookies, 2, "didn't set"); - }, - "check *broken_path* was set properly": function (t) { - assert.equal(t.cookies[0].key, "broken_path"); - assert.equal(t.cookies[0].value, "testme"); - assert.equal(t.cookies[0].path, "/"); - }, - "check *b* was set properly": function (t) { - assert.equal(t.cookies[1].key, "b"); - assert.equal(t.cookies[1].value, "2"); - assert.equal(t.cookies[1].path, "/"); - }, - "retrieve the cookie": { - topic: function (t) { - var cb = this.callback; - t.cj.getCookies('http://www.example.com', {}, function (err, cookies) { - t.cookies = cookies; - cb(err, t); - }); - }, - "get the cookie": function(t) { - assert.lengthOf(t.cookies, 2); - assert.equal(t.cookies[0].key, 'broken_path'); - assert.equal(t.cookies[0].value, 'testme'); - assert.equal(t.cookies[1].key, "b"); - assert.equal(t.cookies[1].value, "2"); - assert.equal(t.cookies[1].path, "/"); - }, - }, - } -}) -.addBatch({ - "Constructor":{ - topic: function () { - return new Cookie({ - key: 'test', - value: 'b', - maxAge: 60 - }); - }, - 'check for key property': function (c) { - assert.ok(c); - assert.equal(c.key, 'test'); - }, - 'check for value property': function (c) { - assert.equal(c.value, 'b'); - }, - 'check for maxAge': function (c) { - assert.equal(c.maxAge, 60); - }, - 'check for default values for unspecified properties': function (c) { - assert.equal(c.expires, "Infinity"); - assert.equal(c.secure, false); - assert.equal(c.httpOnly, false); - } - } -}) -.addBatch({ - "allPaths option": { - topic: function() { - var cj = new CookieJar(); - var tasks = []; - tasks.push(cj.setCookie.bind(cj, 'nopath_dom=qq; Path=/; Domain=example.com', 'http://example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'path_dom=qq; Path=/foo; Domain=example.com', 'http://example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'nopath_host=qq; Path=/', 'http://www.example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'path_host=qq; Path=/foo', 'http://www.example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'other=qq; Path=/', 'http://other.example.com/', {})); - tasks.push(cj.setCookie.bind(cj, 'other2=qq; Path=/foo', 'http://other.example.com/foo', {})); - var cb = this.callback; - async.parallel(tasks, function(err,results) { - cb(err, {cj:cj, cookies: results}); - }); - }, - "all set": function(t) { - assert.equal(t.cookies.length, 6); - assert.ok(t.cookies.every(function(c) { return !!c })); - }, - "getting without allPaths": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/', {}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found just two cookies": function(t) { - assert.equal(t.cookies.length, 2); - }, - "all are path=/": function(t) { - assert.ok(t.cookies.every(function(c) { return c.path === '/' })); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - "getting without allPaths for /foo": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/foo', {}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found four cookies": function(t) { - assert.equal(t.cookies.length, 4); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - "getting with allPaths:true": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/', {allPaths:true}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found four cookies": function(t) { - assert.equal(t.cookies.length, 4); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - } -}) -.addBatch({ - "remove cookies": { - topic: function() { - var jar = new CookieJar(); - var cookie = Cookie.parse("a=b; Domain=example.com; Path=/"); - var cookie2 = Cookie.parse("a=b; Domain=foo.com; Path=/"); - var cookie3 = Cookie.parse("foo=bar; Domain=foo.com; Path=/"); - jar.setCookie(cookie, 'http://example.com/index.html', function(){}); - jar.setCookie(cookie2, 'http://foo.com/index.html', function(){}); - jar.setCookie(cookie3, 'http://foo.com/index.html', function(){}); - return jar; - }, - "all from matching domain": function(jar){ - jar.store.removeCookies('example.com',null, function(err) { - assert(err == null); - - jar.store.findCookies('example.com', null, function(err, cookies){ - assert(err == null); - assert(cookies != null); - assert(cookies.length === 0, 'cookie was not removed'); - }); - - jar.store.findCookies('foo.com', null, function(err, cookies){ - assert(err == null); - assert(cookies != null); - assert(cookies.length === 2, 'cookies should not have been removed'); - }); - }); - }, - "from cookie store matching domain and key": function(jar){ - jar.store.removeCookie('foo.com', '/', 'foo', function(err) { - assert(err == null); - - jar.store.findCookies('foo.com', null, function(err, cookies){ - assert(err == null); - assert(cookies != null); - assert(cookies.length === 1, 'cookie was not removed correctly'); - assert(cookies[0].key === 'a', 'wrong cookie was removed'); - }); - }); - } - } -}) -.addBatch({ - "Synchronous CookieJar": { - "setCookieSync": { - topic: function() { - var jar = new CookieJar(); - var cookie = Cookie.parse("a=b; Domain=example.com; Path=/"); - cookie = jar.setCookieSync(cookie, 'http://example.com/index.html'); - return cookie; - }, - "returns a copy of the cookie": function(cookie) { - assert.instanceOf(cookie, Cookie); - } - }, - - "setCookieSync strict parse error": { - topic: function() { - var jar = new CookieJar(); - var opts = { strict: true }; - try { - jar.setCookieSync("farbe=weiß", 'http://example.com/index.html', opts); - return false; - } catch (e) { - return e; - } - }, - "throws the error": function(err) { - assert.instanceOf(err, Error); - assert.equal(err.message, "Cookie failed to parse"); - } - }, - - "getCookiesSync": { - topic: function() { - var jar = new CookieJar(); - var url = 'http://example.com/index.html'; - jar.setCookieSync("a=b; Domain=example.com; Path=/", url); - jar.setCookieSync("c=d; Domain=example.com; Path=/", url); - return jar.getCookiesSync(url); - }, - "returns the cookie array": function(err, cookies) { - assert.ok(!err); - assert.ok(Array.isArray(cookies)); - assert.lengthOf(cookies, 2); - cookies.forEach(function(cookie) { - assert.instanceOf(cookie, Cookie); - }); - } - }, - - "getCookieStringSync": { - topic: function() { - var jar = new CookieJar(); - var url = 'http://example.com/index.html'; - jar.setCookieSync("a=b; Domain=example.com; Path=/", url); - jar.setCookieSync("c=d; Domain=example.com; Path=/", url); - return jar.getCookieStringSync(url); - }, - "returns the cookie header string": function(err, str) { - assert.ok(!err); - assert.typeOf(str, 'string'); - } - }, - - "getSetCookieStringsSync": { - topic: function() { - var jar = new CookieJar(); - var url = 'http://example.com/index.html'; - jar.setCookieSync("a=b; Domain=example.com; Path=/", url); - jar.setCookieSync("c=d; Domain=example.com; Path=/", url); - return jar.getSetCookieStringsSync(url); - }, - "returns the cookie header string": function(err, headers) { - assert.ok(!err); - assert.ok(Array.isArray(headers)); - assert.lengthOf(headers, 2); - headers.forEach(function(header) { - assert.typeOf(header, 'string'); - }); - } - }, - } -}) -.addBatch({ - "Synchronous API on async CookieJar": { - topic: function() { - return new tough.Store(); - }, - "setCookieSync": { - topic: function(store) { - var jar = new CookieJar(store); - try { - jar.setCookieSync("a=b", 'http://example.com/index.html'); - return false; - } catch(e) { - return e; - } - }, - "fails": function(err) { - assert.instanceOf(err, Error); - assert.equal(err.message, - 'CookieJar store is not synchronous; use async API instead.'); - } - }, - "getCookiesSync": { - topic: function(store) { - var jar = new CookieJar(store); - try { - jar.getCookiesSync('http://example.com/index.html'); - return false; - } catch(e) { - return e; - } - }, - "fails": function(err) { - assert.instanceOf(err, Error); - assert.equal(err.message, - 'CookieJar store is not synchronous; use async API instead.'); - } - }, - "getCookieStringSync": { - topic: function(store) { - var jar = new CookieJar(store); - try { - jar.getCookieStringSync('http://example.com/index.html'); - return false; - } catch(e) { - return e; - } - }, - "fails": function(err) { - assert.instanceOf(err, Error); - assert.equal(err.message, - 'CookieJar store is not synchronous; use async API instead.'); - } - }, - "getSetCookieStringsSync": { - topic: function(store) { - var jar = new CookieJar(store); - try { - jar.getSetCookieStringsSync('http://example.com/index.html'); - return false; - } catch(e) { - return e; - } - }, - "fails": function(err) { - assert.instanceOf(err, Error); - assert.equal(err.message, - 'CookieJar store is not synchronous; use async API instead.'); - } - }, - } -}) -.export(module); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/.jshintrc b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/.jshintrc deleted file mode 100644 index 4c1c8d4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/.jshintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "node": true, - "asi": true, - "laxcomma": true -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/LICENSE deleted file mode 100644 index a4a9aee..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/README.md deleted file mode 100644 index bb533d5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -tunnel-agent -============ - -HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/index.js deleted file mode 100644 index 13c0427..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/index.js +++ /dev/null @@ -1,236 +0,0 @@ -'use strict' - -var net = require('net') - , tls = require('tls') - , http = require('http') - , https = require('https') - , events = require('events') - , assert = require('assert') - , util = require('util') - ; - -exports.httpOverHttp = httpOverHttp -exports.httpsOverHttp = httpsOverHttp -exports.httpOverHttps = httpOverHttps -exports.httpsOverHttps = httpsOverHttps - - -function httpOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - return agent -} - -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - agent.createSocket = createSecureSocket - return agent -} - -function httpOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - return agent -} - -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - agent.createSocket = createSecureSocket - return agent -} - - -function TunnelingAgent(options) { - var self = this - self.options = options || {} - self.proxyOptions = self.options.proxy || {} - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets - self.requests = [] - self.sockets = [] - - self.on('free', function onFree(socket, host, port) { - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i] - if (pending.host === host && pending.port === port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1) - pending.request.onSocket(socket) - return - } - } - socket.destroy() - self.removeSocket(socket) - }) -} -util.inherits(TunnelingAgent, events.EventEmitter) - -TunnelingAgent.prototype.addRequest = function addRequest(req, options) { - var self = this - - // Legacy API: addRequest(req, host, port, path) - if (typeof options === 'string') { - options = { - host: options, - port: arguments[2], - path: arguments[3] - }; - } - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push({host: host, port: port, request: req}) - return - } - - // If we are under maxSockets create a new one. - self.createSocket({host: options.host, port: options.port, request: req}, function(socket) { - socket.on('free', onFree) - socket.on('close', onCloseOrRemove) - socket.on('agentRemove', onCloseOrRemove) - req.onSocket(socket) - - function onFree() { - self.emit('free', socket, options.host, options.port) - } - - function onCloseOrRemove(err) { - self.removeSocket() - socket.removeListener('free', onFree) - socket.removeListener('close', onCloseOrRemove) - socket.removeListener('agentRemove', onCloseOrRemove) - } - }) -} - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this - var placeholder = {} - self.sockets.push(placeholder) - - var connectOptions = mergeOptions({}, self.proxyOptions, - { method: 'CONNECT' - , path: options.host + ':' + options.port - , agent: false - } - ) - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {} - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64') - } - - debug('making CONNECT request') - var connectReq = self.request(connectOptions) - connectReq.useChunkedEncodingByDefault = false // for v0.6 - connectReq.once('response', onResponse) // for v0.6 - connectReq.once('upgrade', onUpgrade) // for v0.6 - connectReq.once('connect', onConnect) // for v0.7 or later - connectReq.once('error', onError) - connectReq.end() - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head) - }) - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners() - socket.removeAllListeners() - - if (res.statusCode === 200) { - assert.equal(head.length, 0) - debug('tunneling connection has established') - self.sockets[self.sockets.indexOf(placeholder)] = socket - cb(socket) - } else { - debug('tunneling socket could not be established, statusCode=%d', res.statusCode) - var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } - } - - function onError(cause) { - connectReq.removeAllListeners() - - debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack) - var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } -} - -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) return - - this.sockets.splice(pos, 1) - - var pending = this.requests.shift() - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function(socket) { - pending.request.onSocket(socket) - }) - } -} - -function createSecureSocket(options, cb) { - var self = this - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, mergeOptions({}, self.options, - { servername: options.host - , socket: socket - } - )) - cb(secureSocket) - }) -} - - -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i] - if (typeof overrides === 'object') { - var keys = Object.keys(overrides) - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j] - if (overrides[k] !== undefined) { - target[k] = overrides[k] - } - } - } - } - return target -} - - -var debug -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments) - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0] - } else { - args.unshift('TUNNEL:') - } - console.error.apply(console, args) - } -} else { - debug = function() {} -} -exports.debug = debug // for test diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/package.json deleted file mode 100644 index 59c7f5c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "tunnel-agent", - "description": "HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.", - "version": "0.4.0", - "repository": { - "url": "https://github.com/mikeal/tunnel-agent" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "bugs": { - "url": "https://github.com/mikeal/tunnel-agent/issues" - }, - "homepage": "https://github.com/mikeal/tunnel-agent", - "_id": "tunnel-agent@0.4.0", - "dist": { - "shasum": "b1184e312ffbcf70b3b4c78e8c219de7ebb1c550", - "tarball": "http://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz" - }, - "_from": "tunnel-agent@~0.4.0", - "_npmVersion": "1.3.21", - "_npmUser": { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - "maintainers": [ - { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - } - ], - "directories": {}, - "_shasum": "b1184e312ffbcf70b3b4c78e8c219de7ebb1c550", - "_resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/package.json deleted file mode 100755 index c53bb54..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "name": "request", - "description": "Simplified HTTP request client.", - "tags": [ - "http", - "simple", - "util", - "utility" - ], - "version": "2.48.0", - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com" - }, - "repository": { - "type": "git", - "url": "https://github.com/request/request.git" - }, - "bugs": { - "url": "http://github.com/request/request/issues" - }, - "license": "Apache-2.0", - "engines": { - "node": ">=0.8.0" - }, - "main": "index.js", - "dependencies": { - "bl": "~0.9.0", - "caseless": "~0.7.0", - "forever-agent": "~0.5.0", - "form-data": "~0.1.0", - "json-stringify-safe": "~5.0.0", - "mime-types": "~1.0.1", - "node-uuid": "~1.4.0", - "qs": "~2.3.1", - "tunnel-agent": "~0.4.0", - "tough-cookie": ">=0.12.0", - "http-signature": "~0.10.0", - "oauth-sign": "~0.5.0", - "hawk": "1.1.1", - "aws-sign2": "~0.5.0", - "stringstream": "~0.0.4", - "combined-stream": "~0.0.5" - }, - "scripts": { - "test": "npm run lint && node node_modules/.bin/taper tests/test-*.js", - "lint": "node node_modules/.bin/eslint lib/ *.js tests/ && echo Lint passed." - }, - "devDependencies": { - "eslint": "0.5.1", - "rimraf": "~2.2.8", - "tape": "~3.0.0", - "taper": "~0.3.0" - }, - "gitHead": "0d8644ec6e0699a4dba8aad11bc0c10a101c0aec", - "homepage": "https://github.com/request/request", - "_id": "request@2.48.0", - "_shasum": "3ae2e091c9698282d58a0e6989ece2638f0f1f28", - "_from": "request@2.x", - "_npmVersion": "1.4.14", - "_npmUser": { - "name": "nylen", - "email": "jnylen@gmail.com" - }, - "maintainers": [ - { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - { - "name": "nylen", - "email": "jnylen@gmail.com" - } - ], - "dist": { - "shasum": "3ae2e091c9698282d58a0e6989ece2638f0f1f28", - "tarball": "http://registry.npmjs.org/request/-/request-2.48.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/request/-/request-2.48.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/release.sh b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/release.sh deleted file mode 100755 index 7678bf8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/release.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh - -if [ -z "`which github-changes`" ]; then - # specify version because github-changes "is under heavy development. Things - # may break between releases" until 0.1.0 - echo "First, do: [sudo] npm install -g github-changes@0.0.14" - exit 1 -fi - -if [ -d .git/refs/remotes/upstream ]; then - remote=upstream -else - remote=origin -fi - -# Increment v2.x.y -> v2.x+1.0 -npm version minor || exit 1 - -# Generate changelog from pull requests -github-changes -o request -r request \ - --auth --verbose \ - --file CHANGELOG.md \ - --only-pulls --use-commit-body \ - --date-format '(YYYY/MM/DD)' \ - || exit 1 - -# Since the tag for the new version hasn't been pushed yet, any changes in it -# will be marked as "upcoming" -version="$(grep '"version"' package.json | cut -d'"' -f4)" -sed -i -e "s/^### upcoming/### v$version/" CHANGELOG.md - -# This may fail if no changelog updates -# TODO: would this ever actually happen? handle it better? -git add CHANGELOG.md; git commit -m 'Update changelog' - -# Publish the new version to npm -npm publish || exit 1 - -# Increment v2.x.0 -> v2.x.1 -# For rationale, see: -# https://github.com/request/oauth-sign/issues/10#issuecomment-58917018 -npm version patch || exit 1 - -# Push back to the main repo -git push $remote master --tags || exit 1 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/request.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/request.js deleted file mode 100644 index 62bd8c1..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/request/request.js +++ /dev/null @@ -1,1761 +0,0 @@ -'use strict' - -var http = require('http') - , https = require('https') - , url = require('url') - , util = require('util') - , stream = require('stream') - , qs = require('qs') - , querystring = require('querystring') - , zlib = require('zlib') - , helpers = require('./lib/helpers') - , bl = require('bl') - , oauth = require('oauth-sign') - , hawk = require('hawk') - , aws = require('aws-sign2') - , httpSignature = require('http-signature') - , uuid = require('node-uuid') - , mime = require('mime-types') - , tunnel = require('tunnel-agent') - , stringstream = require('stringstream') - , caseless = require('caseless') - , ForeverAgent = require('forever-agent') - , FormData = require('form-data') - , cookies = require('./lib/cookies') - , copy = require('./lib/copy') - , debug = require('./lib/debug') - , net = require('net') - , CombinedStream = require('combined-stream') - -var safeStringify = helpers.safeStringify - , md5 = helpers.md5 - , isReadStream = helpers.isReadStream - , toBase64 = helpers.toBase64 - , defer = helpers.defer - , globalCookieJar = cookies.jar() - - -var globalPool = {} - , isUrl = /^https?:/ - -var defaultProxyHeaderWhiteList = [ - 'accept', - 'accept-charset', - 'accept-encoding', - 'accept-language', - 'accept-ranges', - 'cache-control', - 'content-encoding', - 'content-language', - 'content-length', - 'content-location', - 'content-md5', - 'content-range', - 'content-type', - 'connection', - 'date', - 'expect', - 'max-forwards', - 'pragma', - 'referer', - 'te', - 'transfer-encoding', - 'user-agent', - 'via' -] - -var defaultProxyHeaderExclusiveList = [ - 'proxy-authorization' -] - -function filterForNonReserved(reserved, options) { - // Filter out properties that are not reserved. - // Reserved values are passed in at call site. - - var object = {} - for (var i in options) { - var notReserved = (reserved.indexOf(i) === -1) - if (notReserved) { - object[i] = options[i] - } - } - return object -} - -function filterOutReservedFunctions(reserved, options) { - // Filter out properties that are functions and are reserved. - // Reserved values are passed in at call site. - - var object = {} - for (var i in options) { - var isReserved = !(reserved.indexOf(i) === -1) - var isFunction = (typeof options[i] === 'function') - if (!(isReserved && isFunction)) { - object[i] = options[i] - } - } - return object - -} - -function constructProxyHost(uriObject) { - var port = uriObject.portA - , protocol = uriObject.protocol - , proxyHost = uriObject.hostname + ':' - - if (port) { - proxyHost += port - } else if (protocol === 'https:') { - proxyHost += '443' - } else { - proxyHost += '80' - } - - return proxyHost -} - -function constructProxyHeaderWhiteList(headers, proxyHeaderWhiteList) { - var whiteList = proxyHeaderWhiteList - .reduce(function (set, header) { - set[header.toLowerCase()] = true - return set - }, {}) - - return Object.keys(headers) - .filter(function (header) { - return whiteList[header.toLowerCase()] - }) - .reduce(function (set, header) { - set[header] = headers[header] - return set - }, {}) -} - -function construcTunnelOptions(request) { - var proxy = request.proxy - - var tunnelOptions = { - proxy: { - host: proxy.hostname, - port: +proxy.port, - proxyAuth: proxy.auth, - headers: request.proxyHeaders - }, - rejectUnauthorized: request.rejectUnauthorized, - headers: request.headers, - ca: request.ca, - cert: request.cert, - key: request.key - } - - return tunnelOptions -} - -function constructTunnelFnName(uri, proxy) { - var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http') - var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http') - return [uriProtocol, proxyProtocol].join('Over') -} - -function getTunnelFn(request) { - var uri = request.uri - var proxy = request.proxy - var tunnelFnName = constructTunnelFnName(uri, proxy) - return tunnel[tunnelFnName] -} - -// Decide the proper request proxy to use based on the request URI object and the -// environmental variables (NO_PROXY, HTTP_PROXY, etc.) -function getProxyFromURI(uri) { - // respect NO_PROXY environment variables (see: http://lynx.isc.org/current/breakout/lynx_help/keystrokes/environments.html) - var noProxy = process.env.NO_PROXY || process.env.no_proxy || null - - // easy case first - if NO_PROXY is '*' - if (noProxy === '*') { - return null - } - - // otherwise, parse the noProxy value to see if it applies to the URL - if (noProxy !== null) { - var noProxyItem, hostname, port, noProxyItemParts, noProxyHost, noProxyPort, noProxyList - - // canonicalize the hostname, so that 'oogle.com' won't match 'google.com' - hostname = uri.hostname.replace(/^\.*/, '.').toLowerCase() - noProxyList = noProxy.split(',') - - for (var i = 0, len = noProxyList.length; i < len; i++) { - noProxyItem = noProxyList[i].trim().toLowerCase() - - // no_proxy can be granular at the port level, which complicates things a bit. - if (noProxyItem.indexOf(':') > -1) { - noProxyItemParts = noProxyItem.split(':', 2) - noProxyHost = noProxyItemParts[0].replace(/^\.*/, '.') - noProxyPort = noProxyItemParts[1] - port = uri.port || (uri.protocol === 'https:' ? '443' : '80') - - // we've found a match - ports are same and host ends with no_proxy entry. - if (port === noProxyPort && hostname.indexOf(noProxyHost) === hostname.length - noProxyHost.length) { - return null - } - } else { - noProxyItem = noProxyItem.replace(/^\.*/, '.') - if (hostname.indexOf(noProxyItem) === hostname.length - noProxyItem.length) { - return null - } - } - } - } - - // check for HTTP(S)_PROXY environment variables - if (uri.protocol === 'http:') { - return process.env.HTTP_PROXY || process.env.http_proxy || null - } else if (uri.protocol === 'https:') { - return process.env.HTTPS_PROXY || process.env.https_proxy || process.env.HTTP_PROXY || process.env.http_proxy || null - } - - // return null if all else fails (What uri protocol are you using then?) - return null -} - -// Function for properly handling a connection error -function connectionErrorHandler(error) { - var socket = this - if (socket.res) { - if (socket.res.request) { - socket.res.request.emit('error', error) - } else { - socket.res.emit('error', error) - } - } else { - socket._httpMessage.emit('error', error) - } -} - -// Return a simpler request object to allow serialization -function requestToJSON() { - var self = this - return { - uri: self.uri, - method: self.method, - headers: self.headers - } -} - -// Return a simpler response object to allow serialization -function responseToJSON() { - var self = this - return { - statusCode: self.statusCode, - body: self.body, - headers: self.headers, - request: requestToJSON.call(self.request) - } -} - -function Request (options) { - // if tunnel property of options was not given default to false - // if given the method property in options, set property explicitMethod to true - - // extend the Request instance with any non-reserved properties - // remove any reserved functions from the options object - // set Request instance to be readable and writable - // call init - - var self = this - stream.Stream.call(self) - var reserved = Object.keys(Request.prototype) - var nonReserved = filterForNonReserved(reserved, options) - - stream.Stream.call(self) - util._extend(self, nonReserved) - options = filterOutReservedFunctions(reserved, options) - - self.readable = true - self.writable = true - if (typeof options.tunnel === 'undefined') { - options.tunnel = false - } - if (options.method) { - self.explicitMethod = true - } - self.canTunnel = options.tunnel !== false && tunnel - self.init(options) -} - -util.inherits(Request, stream.Stream) - -Request.prototype.setupTunnel = function () { - // Set up the tunneling agent if necessary - // Only send the proxy whitelisted header names. - // Turn on tunneling for the rest of request. - - var self = this - - if (typeof self.proxy === 'string') { - self.proxy = url.parse(self.proxy) - } - - if (!self.proxy) { - return false - } - - if (!self.tunnel && self.uri.protocol !== 'https:') { - return false - } - - // Always include `defaultProxyHeaderExclusiveList` - - if (!self.proxyHeaderExclusiveList) { - self.proxyHeaderExclusiveList = [] - } - - var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList) - - // Treat `proxyHeaderExclusiveList` as part of `proxyHeaderWhiteList` - - if (!self.proxyHeaderWhiteList) { - self.proxyHeaderWhiteList = defaultProxyHeaderWhiteList - } - - var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList) - - var proxyHost = constructProxyHost(self.uri) - self.proxyHeaders = constructProxyHeaderWhiteList(self.headers, proxyHeaderWhiteList) - self.proxyHeaders.host = proxyHost - - proxyHeaderExclusiveList.forEach(self.removeHeader, self) - - var tunnelFn = getTunnelFn(self) - var tunnelOptions = construcTunnelOptions(self) - - self.agent = tunnelFn(tunnelOptions) - self.tunnel = true - return true -} - -Request.prototype.init = function (options) { - // init() contains all the code to setup the request object. - // the actual outgoing request is not started until start() is called - // this function is called from both the constructor and on redirect. - var self = this - if (!options) { - options = {} - } - self.headers = self.headers ? copy(self.headers) : {} - - caseless.httpify(self, self.headers) - - if (!self.method) { - self.method = options.method || 'GET' - } - self.localAddress = options.localAddress - - if (!self.qsLib) { - self.qsLib = (options.useQuerystring ? querystring : qs) - } - - debug(options) - if (!self.pool && self.pool !== false) { - self.pool = globalPool - } - self.dests = self.dests || [] - self.__isRequestRequest = true - - // Protect against double callback - if (!self._callback && self.callback) { - self._callback = self.callback - self.callback = function () { - if (self._callbackCalled) { - return // Print a warning maybe? - } - self._callbackCalled = true - self._callback.apply(self, arguments) - } - self.on('error', self.callback.bind()) - self.on('complete', self.callback.bind(self, null)) - } - - // People use this property instead all the time, so support it - if (!self.uri && self.url) { - self.uri = self.url - delete self.url - } - - // A URI is needed by this point, throw if we haven't been able to get one - if (!self.uri) { - return self.emit('error', new Error('options.uri is a required argument')) - } - - // If a string URI/URL was given, parse it into a URL object - if(typeof self.uri === 'string') { - self.uri = url.parse(self.uri) - } - - // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme - if (self.uri.protocol === 'unix:') { - return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`')) - } - - // Support Unix Sockets - if(self.uri.host === 'unix') { - // Get the socket & request paths from the URL - var unixParts = self.uri.path.split(':') - , host = unixParts[0] - , path = unixParts[1] - // Apply unix properties to request - self.socketPath = host - self.uri.pathname = path - self.uri.path = path - self.uri.host = host - self.uri.hostname = host - self.uri.isUnix = true - } - - if (self.strictSSL === false) { - self.rejectUnauthorized = false - } - - if(!self.hasOwnProperty('proxy')) { - self.proxy = getProxyFromURI(self.uri) - } - - // Pass in `tunnel:true` to *always* tunnel through proxies - self.tunnel = !!options.tunnel - if (self.proxy) { - self.setupTunnel() - } - - if (!self.uri.pathname) {self.uri.pathname = '/'} - - if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) { - // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar - // Detect and reject it as soon as possible - var faultyUri = url.format(self.uri) - var message = 'Invalid URI "' + faultyUri + '"' - if (Object.keys(options).length === 0) { - // No option ? This can be the sign of a redirect - // As this is a case where the user cannot do anything (they didn't call request directly with this URL) - // they should be warned that it can be caused by a redirection (can save some hair) - message += '. This can be caused by a crappy redirection.' - } - // This error was fatal - return self.emit('error', new Error(message)) - } - - self._redirectsFollowed = self._redirectsFollowed || 0 - self.maxRedirects = (self.maxRedirects !== undefined) ? self.maxRedirects : 10 - self.allowRedirect = (typeof self.followRedirect === 'function') ? self.followRedirect : function(response) { - return true - } - self.followRedirects = (self.followRedirect !== undefined) ? !!self.followRedirect : true - self.followAllRedirects = (self.followAllRedirects !== undefined) ? self.followAllRedirects : false - if (self.followRedirects || self.followAllRedirects) { - self.redirects = self.redirects || [] - } - - self.setHost = false - if (!self.hasHeader('host')) { - var hostHeaderName = self.originalHostHeaderName || 'host' - self.setHeader(hostHeaderName, self.uri.hostname) - if (self.uri.port) { - if ( !(self.uri.port === 80 && self.uri.protocol === 'http:') && - !(self.uri.port === 443 && self.uri.protocol === 'https:') ) { - self.setHeader(hostHeaderName, self.getHeader('host') + (':' + self.uri.port) ) - } - } - self.setHost = true - } - - self.jar(self._jar || options.jar) - - if (!self.uri.port) { - if (self.uri.protocol === 'http:') {self.uri.port = 80} - else if (self.uri.protocol === 'https:') {self.uri.port = 443} - } - - if (self.proxy && !self.tunnel) { - self.port = self.proxy.port - self.host = self.proxy.hostname - } else { - self.port = self.uri.port - self.host = self.uri.hostname - } - - if (options.form) { - self.form(options.form) - } - - if (options.formData) { - var formData = options.formData - var requestForm = self.form() - var appendFormValue = function (key, value) { - if (value.hasOwnProperty('value') && value.hasOwnProperty('options')) { - requestForm.append(key, value.value, value.options) - } else { - requestForm.append(key, value) - } - } - for (var formKey in formData) { - if (formData.hasOwnProperty(formKey)) { - var formValue = formData[formKey] - if (formValue instanceof Array) { - for (var j = 0; j < formValue.length; j++) { - appendFormValue(formKey, formValue[j]) - } - } else { - appendFormValue(formKey, formValue) - } - } - } - } - - if (options.qs) { - self.qs(options.qs) - } - - if (self.uri.path) { - self.path = self.uri.path - } else { - self.path = self.uri.pathname + (self.uri.search || '') - } - - if (self.path.length === 0) { - self.path = '/' - } - - // Auth must happen last in case signing is dependent on other headers - if (options.oauth) { - self.oauth(options.oauth) - } - - if (options.aws) { - self.aws(options.aws) - } - - if (options.hawk) { - self.hawk(options.hawk) - } - - if (options.httpSignature) { - self.httpSignature(options.httpSignature) - } - - if (options.auth) { - if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) { - options.auth.user = options.auth.username - } - if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) { - options.auth.pass = options.auth.password - } - - self.auth( - options.auth.user, - options.auth.pass, - options.auth.sendImmediately, - options.auth.bearer - ) - } - - if (self.gzip && !self.hasHeader('accept-encoding')) { - self.setHeader('accept-encoding', 'gzip') - } - - if (self.uri.auth && !self.hasHeader('authorization')) { - var uriAuthPieces = self.uri.auth.split(':').map(function(item){ return querystring.unescape(item) }) - self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true) - } - - if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) { - var proxyAuthPieces = self.proxy.auth.split(':').map(function(item){ - return querystring.unescape(item) - }) - var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':')) - self.setHeader('proxy-authorization', authHeader) - } - - if (self.proxy && !self.tunnel) { - self.path = (self.uri.protocol + '//' + self.uri.host + self.path) - } - - if (options.json) { - self.json(options.json) - } - if (options.multipart) { - self.boundary = uuid() - self.multipart(options.multipart) - } - - if (self.body) { - var length = 0 - if (!Buffer.isBuffer(self.body)) { - if (Array.isArray(self.body)) { - for (var i = 0; i < self.body.length; i++) { - length += self.body[i].length - } - } else { - self.body = new Buffer(self.body) - length = self.body.length - } - } else { - length = self.body.length - } - if (length) { - if (!self.hasHeader('content-length')) { - self.setHeader('content-length', length) - } - } else { - throw new Error('Argument error, options.body.') - } - } - - var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol - , defaultModules = {'http:':http, 'https:':https} - , httpModules = self.httpModules || {} - - self.httpModule = httpModules[protocol] || defaultModules[protocol] - - if (!self.httpModule) { - return self.emit('error', new Error('Invalid protocol: ' + protocol)) - } - - if (options.ca) { - self.ca = options.ca - } - - if (!self.agent) { - if (options.agentOptions) { - self.agentOptions = options.agentOptions - } - - if (options.agentClass) { - self.agentClass = options.agentClass - } else if (options.forever) { - self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL - } else { - self.agentClass = self.httpModule.Agent - } - } - - if (self.pool === false) { - self.agent = false - } else { - self.agent = self.agent || self.getNewAgent() - } - - self.on('pipe', function (src) { - if (self.ntick && self._started) { - throw new Error('You cannot pipe to this stream after the outbound request has started.') - } - self.src = src - if (isReadStream(src)) { - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', mime.lookup(src.path)) - } - } else { - if (src.headers) { - for (var i in src.headers) { - if (!self.hasHeader(i)) { - self.setHeader(i, src.headers[i]) - } - } - } - if (self._json && !self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - if (src.method && !self.explicitMethod) { - self.method = src.method - } - } - - // self.on('pipe', function () { - // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.') - // }) - }) - - defer(function () { - if (self._aborted) { - return - } - - var end = function () { - if (self._form) { - self._form.pipe(self) - } - if (self._multipart) { - self._multipart.pipe(self) - } - if (self.body) { - if (Array.isArray(self.body)) { - self.body.forEach(function (part) { - self.write(part) - }) - } else { - self.write(self.body) - } - self.end() - } else if (self.requestBodyStream) { - console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.') - self.requestBodyStream.pipe(self) - } else if (!self.src) { - if (self.method !== 'GET' && typeof self.method !== 'undefined') { - self.setHeader('content-length', 0) - } - self.end() - } - } - - if (self._form && !self.hasHeader('content-length')) { - // Before ending the request, we had to compute the length of the whole form, asyncly - self.setHeader(self._form.getHeaders()) - self._form.getLength(function (err, length) { - if (!err) { - self.setHeader('content-length', length) - } - end() - }) - } else { - end() - } - - self.ntick = true - }) - -} - -// Must call this when following a redirect from https to http or vice versa -// Attempts to keep everything as identical as possible, but update the -// httpModule, Tunneling agent, and/or Forever Agent in use. -Request.prototype._updateProtocol = function () { - var self = this - var protocol = self.uri.protocol - - if (protocol === 'https:' || self.tunnel) { - // previously was doing http, now doing https - // if it's https, then we might need to tunnel now. - if (self.proxy) { - if (self.setupTunnel()) { - return - } - } - - self.httpModule = https - switch (self.agentClass) { - case ForeverAgent: - self.agentClass = ForeverAgent.SSL - break - case http.Agent: - self.agentClass = https.Agent - break - default: - // nothing we can do. Just hope for the best. - return - } - - // if there's an agent, we need to get a new one. - if (self.agent) { - self.agent = self.getNewAgent() - } - - } else { - // previously was doing https, now doing http - self.httpModule = http - switch (self.agentClass) { - case ForeverAgent.SSL: - self.agentClass = ForeverAgent - break - case https.Agent: - self.agentClass = http.Agent - break - default: - // nothing we can do. just hope for the best - return - } - - // if there's an agent, then get a new one. - if (self.agent) { - self.agent = null - self.agent = self.getNewAgent() - } - } -} - -Request.prototype.getNewAgent = function () { - var self = this - var Agent = self.agentClass - var options = {} - if (self.agentOptions) { - for (var i in self.agentOptions) { - options[i] = self.agentOptions[i] - } - } - if (self.ca) { - options.ca = self.ca - } - if (self.ciphers) { - options.ciphers = self.ciphers - } - if (self.secureProtocol) { - options.secureProtocol = self.secureProtocol - } - if (self.secureOptions) { - options.secureOptions = self.secureOptions - } - if (typeof self.rejectUnauthorized !== 'undefined') { - options.rejectUnauthorized = self.rejectUnauthorized - } - - if (self.cert && self.key) { - options.key = self.key - options.cert = self.cert - } - - var poolKey = '' - - // different types of agents are in different pools - if (Agent !== self.httpModule.Agent) { - poolKey += Agent.name - } - - // ca option is only relevant if proxy or destination are https - var proxy = self.proxy - if (typeof proxy === 'string') { - proxy = url.parse(proxy) - } - var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:' - - if (isHttps) { - if (options.ca) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.ca - } - - if (typeof options.rejectUnauthorized !== 'undefined') { - if (poolKey) { - poolKey += ':' - } - poolKey += options.rejectUnauthorized - } - - if (options.cert) { - poolKey += options.cert.toString('ascii') + options.key.toString('ascii') - } - - if (options.ciphers) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.ciphers - } - - if (options.secureProtocol) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.secureProtocol - } - - if (options.secureOptions) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.secureOptions - } - } - - if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) { - // not doing anything special. Use the globalAgent - return self.httpModule.globalAgent - } - - // we're using a stored agent. Make sure it's protocol-specific - poolKey = self.uri.protocol + poolKey - - // generate a new agent for this setting if none yet exists - if (!self.pool[poolKey]) { - self.pool[poolKey] = new Agent(options) - // properly set maxSockets on new agents - if (self.pool.maxSockets) { - self.pool[poolKey].maxSockets = self.pool.maxSockets - } - } - - return self.pool[poolKey] -} - -Request.prototype.start = function () { - // start() is called once we are ready to send the outgoing HTTP request. - // this is usually called on the first write(), end() or on nextTick() - var self = this - - if (self._aborted) { - return - } - - self._started = true - self.method = self.method || 'GET' - self.href = self.uri.href - - if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) { - self.setHeader('content-length', self.src.stat.size) - } - if (self._aws) { - self.aws(self._aws, true) - } - - // We have a method named auth, which is completely different from the http.request - // auth option. If we don't remove it, we're gonna have a bad time. - var reqOptions = copy(self) - delete reqOptions.auth - - debug('make request', self.uri.href) - self.req = self.httpModule.request(reqOptions) - - if (self.timeout && !self.timeoutTimer) { - self.timeoutTimer = setTimeout(function () { - self.abort() - var e = new Error('ETIMEDOUT') - e.code = 'ETIMEDOUT' - self.emit('error', e) - }, self.timeout) - - // Set additional timeout on socket - in case if remote - // server freeze after sending headers - if (self.req.setTimeout) { // only works on node 0.6+ - self.req.setTimeout(self.timeout, function () { - if (self.req) { - self.req.abort() - var e = new Error('ESOCKETTIMEDOUT') - e.code = 'ESOCKETTIMEDOUT' - self.emit('error', e) - } - }) - } - } - - self.req.on('response', self.onRequestResponse.bind(self)) - self.req.on('error', self.onRequestError.bind(self)) - self.req.on('drain', function() { - self.emit('drain') - }) - self.req.on('socket', function(socket) { - self.emit('socket', socket) - }) - - self.on('end', function() { - if ( self.req.connection ) { - self.req.connection.removeListener('error', connectionErrorHandler) - } - }) - self.emit('request', self.req) -} - -Request.prototype.onRequestError = function (error) { - var self = this - if (self._aborted) { - return - } - if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' - && self.agent.addRequestNoreuse) { - self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) } - self.start() - self.req.end() - return - } - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - self.emit('error', error) -} - -Request.prototype.onRequestResponse = function (response) { - var self = this - debug('onRequestResponse', self.uri.href, response.statusCode, response.headers) - response.on('end', function() { - debug('response end', self.uri.href, response.statusCode, response.headers) - }) - - // The check on response.connection is a workaround for browserify. - if (response.connection && response.connection.listeners('error').indexOf(connectionErrorHandler) === -1) { - response.connection.setMaxListeners(0) - response.connection.once('error', connectionErrorHandler) - } - if (self._aborted) { - debug('aborted', self.uri.href) - response.resume() - return - } - if (self._paused) { - response.pause() - } else if (response.resume) { - // response.resume should be defined, but check anyway before calling. Workaround for browserify. - response.resume() - } - - self.response = response - response.request = self - response.toJSON = responseToJSON - - // XXX This is different on 0.10, because SSL is strict by default - if (self.httpModule === https && - self.strictSSL && (!response.hasOwnProperty('client') || - !response.client.authorized)) { - debug('strict ssl error', self.uri.href) - var sslErr = response.hasOwnProperty('client') ? response.client.authorizationError : self.uri.href + ' does not support SSL' - self.emit('error', new Error('SSL Error: ' + sslErr)) - return - } - - // Save the original host before any redirect (if it changes, we need to - // remove any authorization headers). Also remember the case of the header - // name because lots of broken servers expect Host instead of host and we - // want the caller to be able to specify this. - self.originalHost = self.getHeader('host') - if (!self.originalHostHeaderName) { - self.originalHostHeaderName = self.hasHeader('host') - } - if (self.setHost) { - self.removeHeader('host') - } - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - - var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar - var addCookie = function (cookie) { - //set the cookie if it's domain in the href's domain. - try { - targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true}) - } catch (e) { - self.emit('error', e) - } - } - - response.caseless = caseless(response.headers) - - if (response.caseless.has('set-cookie') && (!self._disableCookies)) { - var headerName = response.caseless.has('set-cookie') - if (Array.isArray(response.headers[headerName])) { - response.headers[headerName].forEach(addCookie) - } else { - addCookie(response.headers[headerName]) - } - } - - var redirectTo = null - if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) { - var location = response.caseless.get('location') - debug('redirect', location) - - if (self.followAllRedirects) { - redirectTo = location - } else if (self.followRedirects) { - switch (self.method) { - case 'PATCH': - case 'PUT': - case 'POST': - case 'DELETE': - // Do not follow redirects - break - default: - redirectTo = location - break - } - } - } else if (response.statusCode === 401 && self._hasAuth && !self._sentAuth) { - var authHeader = response.caseless.get('www-authenticate') - var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase() - debug('reauth', authVerb) - - switch (authVerb) { - case 'basic': - self.auth(self._user, self._pass, true) - redirectTo = self.uri - break - - case 'bearer': - self.auth(null, null, true, self._bearer) - redirectTo = self.uri - break - - case 'digest': - // TODO: More complete implementation of RFC 2617. - // - check challenge.algorithm - // - support algorithm="MD5-sess" - // - handle challenge.domain - // - support qop="auth-int" only - // - handle Authentication-Info (not necessarily?) - // - check challenge.stale (not necessarily?) - // - increase nc (not necessarily?) - // For reference: - // http://tools.ietf.org/html/rfc2617#section-3 - // https://github.com/bagder/curl/blob/master/lib/http_digest.c - - var challenge = {} - var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi - for (;;) { - var match = re.exec(authHeader) - if (!match) { - break - } - challenge[match[1]] = match[2] || match[3] - } - - var ha1 = md5(self._user + ':' + challenge.realm + ':' + self._pass) - var ha2 = md5(self.method + ':' + self.uri.path) - var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth' - var nc = qop && '00000001' - var cnonce = qop && uuid().replace(/-/g, '') - var digestResponse = qop ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2) : md5(ha1 + ':' + challenge.nonce + ':' + ha2) - var authValues = { - username: self._user, - realm: challenge.realm, - nonce: challenge.nonce, - uri: self.uri.path, - qop: qop, - response: digestResponse, - nc: nc, - cnonce: cnonce, - algorithm: challenge.algorithm, - opaque: challenge.opaque - } - - authHeader = [] - for (var k in authValues) { - if (authValues[k]) { - if (k === 'qop' || k === 'nc' || k === 'algorithm') { - authHeader.push(k + '=' + authValues[k]) - } else { - authHeader.push(k + '="' + authValues[k] + '"') - } - } - } - authHeader = 'Digest ' + authHeader.join(', ') - self.setHeader('authorization', authHeader) - self._sentAuth = true - - redirectTo = self.uri - break - } - } - - if (redirectTo && self.allowRedirect.call(self, response)) { - debug('redirect to', redirectTo) - - // ignore any potential response body. it cannot possibly be useful - // to us at this point. - if (self._paused) { - response.resume() - } - - if (self._redirectsFollowed >= self.maxRedirects) { - self.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + self.uri.href)) - return - } - self._redirectsFollowed += 1 - - if (!isUrl.test(redirectTo)) { - redirectTo = url.resolve(self.uri.href, redirectTo) - } - - var uriPrev = self.uri - self.uri = url.parse(redirectTo) - - // handle the case where we change protocol from https to http or vice versa - if (self.uri.protocol !== uriPrev.protocol) { - self._updateProtocol() - } - - self.redirects.push( - { statusCode : response.statusCode - , redirectUri: redirectTo - } - ) - if (self.followAllRedirects && response.statusCode !== 401 && response.statusCode !== 307) { - self.method = 'GET' - } - // self.method = 'GET' // Force all redirects to use GET || commented out fixes #215 - delete self.src - delete self.req - delete self.agent - delete self._started - if (response.statusCode !== 401 && response.statusCode !== 307) { - // Remove parameters from the previous response, unless this is the second request - // for a server that requires digest authentication. - delete self.body - delete self._form - if (self.headers) { - self.removeHeader('host') - self.removeHeader('content-type') - self.removeHeader('content-length') - if (self.uri.hostname !== self.originalHost.split(':')[0]) { - // Remove authorization if changing hostnames (but not if just - // changing ports or protocols). This matches the behavior of curl: - // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710 - self.removeHeader('authorization') - } - } - } - - self.emit('redirect') - - self.init() - return // Ignore the rest of the response - } else { - self._redirectsFollowed = self._redirectsFollowed || 0 - // Be a good stream and emit end when the response is finished. - // Hack to emit end on close because of a core bug that never fires end - response.on('close', function () { - if (!self._ended) { - self.response.emit('end') - } - }) - - response.on('end', function () { - self._ended = true - }) - - var dataStream - if (self.gzip) { - var contentEncoding = response.headers['content-encoding'] || 'identity' - contentEncoding = contentEncoding.trim().toLowerCase() - - if (contentEncoding === 'gzip') { - dataStream = zlib.createGunzip() - response.pipe(dataStream) - } else { - // Since previous versions didn't check for Content-Encoding header, - // ignore any invalid values to preserve backwards-compatibility - if (contentEncoding !== 'identity') { - debug('ignoring unrecognized Content-Encoding ' + contentEncoding) - } - dataStream = response - } - } else { - dataStream = response - } - - if (self.encoding) { - if (self.dests.length !== 0) { - console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.') - } else if (dataStream.setEncoding) { - dataStream.setEncoding(self.encoding) - } else { - // Should only occur on node pre-v0.9.4 (joyent/node@9b5abe5) with - // zlib streams. - // If/When support for 0.9.4 is dropped, this should be unnecessary. - dataStream = dataStream.pipe(stringstream(self.encoding)) - } - } - - self.emit('response', response) - - self.dests.forEach(function (dest) { - self.pipeDest(dest) - }) - - dataStream.on('data', function (chunk) { - self._destdata = true - self.emit('data', chunk) - }) - dataStream.on('end', function (chunk) { - self.emit('end', chunk) - }) - dataStream.on('error', function (error) { - self.emit('error', error) - }) - dataStream.on('close', function () {self.emit('close')}) - - if (self.callback) { - var buffer = bl() - , strings = [] - - self.on('data', function (chunk) { - if (Buffer.isBuffer(chunk)) { - buffer.append(chunk) - } else { - strings.push(chunk) - } - }) - self.on('end', function () { - debug('end event', self.uri.href) - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - - if (buffer.length) { - debug('has body', self.uri.href, buffer.length) - if (self.encoding === null) { - // response.body = buffer - // can't move to this until https://github.com/rvagg/bl/issues/13 - response.body = buffer.slice() - } else { - response.body = buffer.toString(self.encoding) - } - } else if (strings.length) { - // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation. - // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse(). - if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') { - strings[0] = strings[0].substring(1) - } - response.body = strings.join('') - } - - if (self._json) { - try { - response.body = JSON.parse(response.body) - } catch (e) {} - } - debug('emitting complete', self.uri.href) - if(typeof response.body === 'undefined' && !self._json) { - response.body = '' - } - self.emit('complete', response, response.body) - }) - } - //if no callback - else{ - self.on('end', function () { - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - self.emit('complete', response) - }) - } - } - debug('finish init function', self.uri.href) -} - -Request.prototype.abort = function () { - var self = this - self._aborted = true - - if (self.req) { - self.req.abort() - } - else if (self.response) { - self.response.abort() - } - - self.emit('abort') -} - -Request.prototype.pipeDest = function (dest) { - var self = this - var response = self.response - // Called after the response is received - if (dest.headers && !dest.headersSent) { - if (response.caseless.has('content-type')) { - var ctname = response.caseless.has('content-type') - if (dest.setHeader) { - dest.setHeader(ctname, response.headers[ctname]) - } - else { - dest.headers[ctname] = response.headers[ctname] - } - } - - if (response.caseless.has('content-length')) { - var clname = response.caseless.has('content-length') - if (dest.setHeader) { - dest.setHeader(clname, response.headers[clname]) - } else { - dest.headers[clname] = response.headers[clname] - } - } - } - if (dest.setHeader && !dest.headersSent) { - for (var i in response.headers) { - // If the response content is being decoded, the Content-Encoding header - // of the response doesn't represent the piped content, so don't pass it. - if (!self.gzip || i !== 'content-encoding') { - dest.setHeader(i, response.headers[i]) - } - } - dest.statusCode = response.statusCode - } - if (self.pipefilter) { - self.pipefilter(response, dest) - } -} - -Request.prototype.qs = function (q, clobber) { - var self = this - var base - if (!clobber && self.uri.query) { - base = self.qsLib.parse(self.uri.query) - } else { - base = {} - } - - for (var i in q) { - base[i] = q[i] - } - - if (self.qsLib.stringify(base) === ''){ - return self - } - - self.uri = url.parse(self.uri.href.split('?')[0] + '?' + self.qsLib.stringify(base)) - self.url = self.uri - self.path = self.uri.path - - return self -} -Request.prototype.form = function (form) { - var self = this - if (form) { - self.setHeader('content-type', 'application/x-www-form-urlencoded') - self.body = (typeof form === 'string') ? form.toString('utf8') : self.qsLib.stringify(form).toString('utf8') - return self - } - // create form-data object - self._form = new FormData() - return self._form -} -Request.prototype.multipart = function (multipart) { - var self = this - - var chunked = (multipart instanceof Array) || (multipart.chunked === undefined) || multipart.chunked - multipart = multipart.data || multipart - - var items = chunked ? new CombinedStream() : [] - function add (part) { - return chunked ? items.append(part) : items.push(new Buffer(part)) - } - - var headerName = self.hasHeader('content-type') - if (!headerName || headerName.indexOf('multipart') === -1) { - self.setHeader('content-type', 'multipart/related; boundary=' + self.boundary) - } else { - self.setHeader(headerName, self.headers[headerName].split(';')[0] + '; boundary=' + self.boundary) - } - - if (!multipart.forEach) { - throw new Error('Argument error, options.multipart.') - } - - if (self.preambleCRLF) { - add('\r\n') - } - - multipart.forEach(function (part) { - var body = part.body - if(typeof body === 'undefined') { - throw new Error('Body attribute missing in multipart.') - } - var preamble = '--' + self.boundary + '\r\n' - Object.keys(part).forEach(function (key) { - if (key === 'body') { return } - preamble += key + ': ' + part[key] + '\r\n' - }) - preamble += '\r\n' - add(preamble) - add(body) - add('\r\n') - }) - add('--' + self.boundary + '--') - - if (self.postambleCRLF) { - add('\r\n') - } - - self[chunked ? '_multipart' : 'body'] = items - return self -} -Request.prototype.json = function (val) { - var self = this - - if (!self.hasHeader('accept')) { - self.setHeader('accept', 'application/json') - } - - self._json = true - if (typeof val === 'boolean') { - if (typeof self.body === 'object') { - self.body = safeStringify(self.body) - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - } - } else { - self.body = safeStringify(val) - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - } - - return self -} -Request.prototype.getHeader = function (name, headers) { - var self = this - var result, re, match - if (!headers) { - headers = self.headers - } - Object.keys(headers).forEach(function (key) { - if (key.length !== name.length) { - return - } - re = new RegExp(name, 'i') - match = key.match(re) - if (match) { - result = headers[key] - } - }) - return result -} -var getHeader = Request.prototype.getHeader - -Request.prototype.auth = function (user, pass, sendImmediately, bearer) { - var self = this - if (bearer !== undefined) { - self._bearer = bearer - self._hasAuth = true - if (sendImmediately || typeof sendImmediately === 'undefined') { - if (typeof bearer === 'function') { - bearer = bearer() - } - self.setHeader('authorization', 'Bearer ' + bearer) - self._sentAuth = true - } - return self - } - if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) { - throw new Error('auth() received invalid user or password') - } - self._user = user - self._pass = pass - self._hasAuth = true - var header = typeof pass !== 'undefined' ? user + ':' + pass : user - if (sendImmediately || typeof sendImmediately === 'undefined') { - self.setHeader('authorization', 'Basic ' + toBase64(header)) - self._sentAuth = true - } - return self -} - -Request.prototype.aws = function (opts, now) { - var self = this - - if (!now) { - self._aws = opts - return self - } - var date = new Date() - self.setHeader('date', date.toUTCString()) - var auth = - { key: opts.key - , secret: opts.secret - , verb: self.method.toUpperCase() - , date: date - , contentType: self.getHeader('content-type') || '' - , md5: self.getHeader('content-md5') || '' - , amazonHeaders: aws.canonicalizeHeaders(self.headers) - } - var path = self.uri.path - if (opts.bucket && path) { - auth.resource = '/' + opts.bucket + path - } else if (opts.bucket && !path) { - auth.resource = '/' + opts.bucket - } else if (!opts.bucket && path) { - auth.resource = path - } else if (!opts.bucket && !path) { - auth.resource = '/' - } - auth.resource = aws.canonicalizeResource(auth.resource) - self.setHeader('authorization', aws.authorization(auth)) - - return self -} -Request.prototype.httpSignature = function (opts) { - var self = this - httpSignature.signRequest({ - getHeader: function(header) { - return getHeader(header, self.headers) - }, - setHeader: function(header, value) { - self.setHeader(header, value) - }, - method: self.method, - path: self.path - }, opts) - debug('httpSignature authorization', self.getHeader('authorization')) - - return self -} - -Request.prototype.hawk = function (opts) { - var self = this - self.setHeader('Authorization', hawk.client.header(self.uri, self.method, opts).field) -} - -Request.prototype.oauth = function (_oauth) { - var self = this - var form, query - if (self.hasHeader('content-type') && - self.getHeader('content-type').slice(0, 'application/x-www-form-urlencoded'.length) === - 'application/x-www-form-urlencoded' - ) { - form = self.body - } - if (self.uri.query) { - query = self.uri.query - } - - var oa = {} - for (var i in _oauth) { - oa['oauth_' + i] = _oauth[i] - } - if ('oauth_realm' in oa) { - delete oa.oauth_realm - } - if (!oa.oauth_version) { - oa.oauth_version = '1.0' - } - if (!oa.oauth_timestamp) { - oa.oauth_timestamp = Math.floor( Date.now() / 1000 ).toString() - } - if (!oa.oauth_nonce) { - oa.oauth_nonce = uuid().replace(/-/g, '') - } - if (!oa.oauth_signature_method) { - oa.oauth_signature_method = 'HMAC-SHA1' - } - - var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key - delete oa.oauth_consumer_secret - delete oa.oauth_private_key - var token_secret = oa.oauth_token_secret - delete oa.oauth_token_secret - - var baseurl = self.uri.protocol + '//' + self.uri.host + self.uri.pathname - var params = self.qsLib.parse([].concat(query, form, self.qsLib.stringify(oa)).join('&')) - - var signature = oauth.sign( - oa.oauth_signature_method, - self.method, - baseurl, - params, - consumer_secret_or_private_key, - token_secret) - - var realm = _oauth.realm ? 'realm="' + _oauth.realm + '",' : '' - var authHeader = 'OAuth ' + realm + - Object.keys(oa).sort().map(function (i) {return i + '="' + oauth.rfc3986(oa[i]) + '"'}).join(',') - authHeader += ',oauth_signature="' + oauth.rfc3986(signature) + '"' - self.setHeader('Authorization', authHeader) - return self -} -Request.prototype.jar = function (jar) { - var self = this - var cookies - - if (self._redirectsFollowed === 0) { - self.originalCookieHeader = self.getHeader('cookie') - } - - if (!jar) { - // disable cookies - cookies = false - self._disableCookies = true - } else { - var targetCookieJar = (jar && jar.getCookieString) ? jar : globalCookieJar - var urihref = self.uri.href - //fetch cookie in the Specified host - if (targetCookieJar) { - cookies = targetCookieJar.getCookieString(urihref) - } - } - - //if need cookie and cookie is not empty - if (cookies && cookies.length) { - if (self.originalCookieHeader) { - // Don't overwrite existing Cookie header - self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies) - } else { - self.setHeader('cookie', cookies) - } - } - self._jar = jar - return self -} - - -// Stream API -Request.prototype.pipe = function (dest, opts) { - var self = this - - if (self.response) { - if (self._destdata) { - throw new Error('You cannot pipe after data has been emitted from the response.') - } else if (self._ended) { - throw new Error('You cannot pipe after the response has been ended.') - } else { - stream.Stream.prototype.pipe.call(self, dest, opts) - self.pipeDest(dest) - return dest - } - } else { - self.dests.push(dest) - stream.Stream.prototype.pipe.call(self, dest, opts) - return dest - } -} -Request.prototype.write = function () { - var self = this - if (!self._started) { - self.start() - } - return self.req.write.apply(self.req, arguments) -} -Request.prototype.end = function (chunk) { - var self = this - if (chunk) { - self.write(chunk) - } - if (!self._started) { - self.start() - } - self.req.end() -} -Request.prototype.pause = function () { - var self = this - if (!self.response) { - self._paused = true - } else { - self.response.pause.apply(self.response, arguments) - } -} -Request.prototype.resume = function () { - var self = this - if (!self.response) { - self._paused = false - } else { - self.response.resume.apply(self.response, arguments) - } -} -Request.prototype.destroy = function () { - var self = this - if (!self._ended) { - self.end() - } else if (self.response) { - self.response.destroy() - } -} - -Request.defaultProxyHeaderWhiteList = - defaultProxyHeaderWhiteList.slice() - -Request.defaultProxyHeaderExclusiveList = - defaultProxyHeaderExclusiveList.slice() - -// Exports - -Request.prototype.toJSON = requestToJSON -module.exports = Request diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/AUTHORS b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/AUTHORS deleted file mode 100644 index 247b754..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -# Authors sorted by whether or not they're me. -Isaac Z. Schlueter (http://blog.izs.me) -Wayne Larsen (http://github.com/wvl) -ritch -Marcel Laverdet -Yosef Dinerstein diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -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. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/README.md deleted file mode 100644 index cd123b6..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/README.md +++ /dev/null @@ -1,30 +0,0 @@ -`rm -rf` for node. - -Install with `npm install rimraf`, or just drop rimraf.js somewhere. - -## API - -`rimraf(f, callback)` - -The callback will be called with an error if there is one. Certain -errors are handled for you: - -* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of - `opts.maxBusyTries` times before giving up. -* `ENOENT` - If the file doesn't exist, rimraf will return - successfully, since your desired outcome is already the case. - -## rimraf.sync - -It can remove stuff synchronously, too. But that's not so good. Use -the async API. It's better. - -## CLI - -If installed with `npm install rimraf -g` it can be used as a global -command `rimraf ` which is useful for cross platform support. - -## mkdirp - -If you need to create a directory recursively, check out -[mkdirp](https://github.com/substack/node-mkdirp). diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/bin.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/bin.js deleted file mode 100755 index 29bfa8a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/bin.js +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env node - -var rimraf = require('./') - -var help = false -var dashdash = false -var args = process.argv.slice(2).filter(function(arg) { - if (dashdash) - return !!arg - else if (arg === '--') - dashdash = true - else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/)) - help = true - else - return !!arg -}); - -if (help || args.length === 0) { - // If they didn't ask for help, then this is not a "success" - var log = help ? console.log : console.error - log('Usage: rimraf ') - log('') - log(' Deletes all files and folders at "path" recursively.') - log('') - log('Options:') - log('') - log(' -h, --help Display this usage info') - process.exit(help ? 0 : 1) -} else { - args.forEach(function(arg) { - rimraf.sync(arg) - }) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/package.json deleted file mode 100644 index 4f629ca..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "rimraf", - "version": "2.2.8", - "main": "rimraf.js", - "description": "A deep deletion module for node (like `rm -rf`)", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": { - "type": "MIT", - "url": "https://github.com/isaacs/rimraf/raw/master/LICENSE" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/rimraf.git" - }, - "scripts": { - "test": "cd test && bash run.sh" - }, - "bin": { - "rimraf": "./bin.js" - }, - "contributors": [ - { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - { - "name": "Wayne Larsen", - "email": "wayne@larsen.st", - "url": "http://github.com/wvl" - }, - { - "name": "ritch", - "email": "skawful@gmail.com" - }, - { - "name": "Marcel Laverdet" - }, - { - "name": "Yosef Dinerstein", - "email": "yosefd@microsoft.com" - } - ], - "bugs": { - "url": "https://github.com/isaacs/rimraf/issues" - }, - "homepage": "https://github.com/isaacs/rimraf", - "_id": "rimraf@2.2.8", - "_shasum": "e439be2aaee327321952730f99a8929e4fc50582", - "_from": "rimraf@~2.2.8", - "_npmVersion": "1.4.10", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "e439be2aaee327321952730f99a8929e4fc50582", - "tarball": "http://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/rimraf.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/rimraf.js deleted file mode 100644 index eb96c46..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/rimraf.js +++ /dev/null @@ -1,248 +0,0 @@ -module.exports = rimraf -rimraf.sync = rimrafSync - -var assert = require("assert") -var path = require("path") -var fs = require("fs") - -// for EMFILE handling -var timeout = 0 -exports.EMFILE_MAX = 1000 -exports.BUSYTRIES_MAX = 3 - -var isWindows = (process.platform === "win32") - -function defaults (options) { - var methods = [ - 'unlink', - 'chmod', - 'stat', - 'rmdir', - 'readdir' - ] - methods.forEach(function(m) { - options[m] = options[m] || fs[m] - m = m + 'Sync' - options[m] = options[m] || fs[m] - }) -} - -function rimraf (p, options, cb) { - if (typeof options === 'function') { - cb = options - options = {} - } - assert(p) - assert(options) - assert(typeof cb === 'function') - - defaults(options) - - if (!cb) throw new Error("No callback passed to rimraf()") - - var busyTries = 0 - rimraf_(p, options, function CB (er) { - if (er) { - if (isWindows && (er.code === "EBUSY" || er.code === "ENOTEMPTY") && - busyTries < exports.BUSYTRIES_MAX) { - busyTries ++ - var time = busyTries * 100 - // try again, with the same exact callback as this one. - return setTimeout(function () { - rimraf_(p, options, CB) - }, time) - } - - // this one won't happen if graceful-fs is used. - if (er.code === "EMFILE" && timeout < exports.EMFILE_MAX) { - return setTimeout(function () { - rimraf_(p, options, CB) - }, timeout ++) - } - - // already gone - if (er.code === "ENOENT") er = null - } - - timeout = 0 - cb(er) - }) -} - -// Two possible strategies. -// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR -// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR -// -// Both result in an extra syscall when you guess wrong. However, there -// are likely far more normal files in the world than directories. This -// is based on the assumption that a the average number of files per -// directory is >= 1. -// -// If anyone ever complains about this, then I guess the strategy could -// be made configurable somehow. But until then, YAGNI. -function rimraf_ (p, options, cb) { - assert(p) - assert(options) - assert(typeof cb === 'function') - - options.unlink(p, function (er) { - if (er) { - if (er.code === "ENOENT") - return cb(null) - if (er.code === "EPERM") - return (isWindows) - ? fixWinEPERM(p, options, er, cb) - : rmdir(p, options, er, cb) - if (er.code === "EISDIR") - return rmdir(p, options, er, cb) - } - return cb(er) - }) -} - -function fixWinEPERM (p, options, er, cb) { - assert(p) - assert(options) - assert(typeof cb === 'function') - if (er) - assert(er instanceof Error) - - options.chmod(p, 666, function (er2) { - if (er2) - cb(er2.code === "ENOENT" ? null : er) - else - options.stat(p, function(er3, stats) { - if (er3) - cb(er3.code === "ENOENT" ? null : er) - else if (stats.isDirectory()) - rmdir(p, options, er, cb) - else - options.unlink(p, cb) - }) - }) -} - -function fixWinEPERMSync (p, options, er) { - assert(p) - assert(options) - if (er) - assert(er instanceof Error) - - try { - options.chmodSync(p, 666) - } catch (er2) { - if (er2.code === "ENOENT") - return - else - throw er - } - - try { - var stats = options.statSync(p) - } catch (er3) { - if (er3.code === "ENOENT") - return - else - throw er - } - - if (stats.isDirectory()) - rmdirSync(p, options, er) - else - options.unlinkSync(p) -} - -function rmdir (p, options, originalEr, cb) { - assert(p) - assert(options) - if (originalEr) - assert(originalEr instanceof Error) - assert(typeof cb === 'function') - - // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) - // if we guessed wrong, and it's not a directory, then - // raise the original error. - options.rmdir(p, function (er) { - if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) - rmkids(p, options, cb) - else if (er && er.code === "ENOTDIR") - cb(originalEr) - else - cb(er) - }) -} - -function rmkids(p, options, cb) { - assert(p) - assert(options) - assert(typeof cb === 'function') - - options.readdir(p, function (er, files) { - if (er) - return cb(er) - var n = files.length - if (n === 0) - return options.rmdir(p, cb) - var errState - files.forEach(function (f) { - rimraf(path.join(p, f), options, function (er) { - if (errState) - return - if (er) - return cb(errState = er) - if (--n === 0) - options.rmdir(p, cb) - }) - }) - }) -} - -// this looks simpler, and is strictly *faster*, but will -// tie up the JavaScript thread and fail on excessively -// deep directory trees. -function rimrafSync (p, options) { - options = options || {} - defaults(options) - - assert(p) - assert(options) - - try { - options.unlinkSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - if (er.code === "EPERM") - return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) - if (er.code !== "EISDIR") - throw er - rmdirSync(p, options, er) - } -} - -function rmdirSync (p, options, originalEr) { - assert(p) - assert(options) - if (originalEr) - assert(originalEr instanceof Error) - - try { - options.rmdirSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - if (er.code === "ENOTDIR") - throw originalEr - if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") - rmkidsSync(p, options) - } -} - -function rmkidsSync (p, options) { - assert(p) - assert(options) - options.readdirSync(p).forEach(function (f) { - rimrafSync(path.join(p, f), options) - }) - options.rmdirSync(p, options) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/run.sh b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/run.sh deleted file mode 100644 index 653ff9b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/run.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -set -e -code=0 -for i in test-*.js; do - echo -n $i ... - bash setup.sh - node $i - if [ -d target ]; then - echo "fail" - code=1 - else - echo "pass" - fi -done -rm -rf target -exit $code diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/setup.sh b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/setup.sh deleted file mode 100644 index 2602e63..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/setup.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -set -e - -files=10 -folders=2 -depth=4 -target="$PWD/target" - -rm -rf target - -fill () { - local depth=$1 - local files=$2 - local folders=$3 - local target=$4 - - if ! [ -d $target ]; then - mkdir -p $target - fi - - local f - - f=$files - while [ $f -gt 0 ]; do - touch "$target/f-$depth-$f" - let f-- - done - - let depth-- - - if [ $depth -le 0 ]; then - return 0 - fi - - f=$folders - while [ $f -gt 0 ]; do - mkdir "$target/folder-$depth-$f" - fill $depth $files $folders "$target/d-$depth-$f" - let f-- - done -} - -fill $depth $files $folders $target - -# sanity assert -[ -d $target ] diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/test-async.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/test-async.js deleted file mode 100644 index 9c2e0b7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/test-async.js +++ /dev/null @@ -1,5 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf(path.join(__dirname, "target"), function (er) { - if (er) throw er -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/test-sync.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/test-sync.js deleted file mode 100644 index eb71f10..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/rimraf/test/test-sync.js +++ /dev/null @@ -1,3 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf.sync(path.join(__dirname, "target")) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/.npmignore deleted file mode 100644 index 7300fbc..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/.npmignore +++ /dev/null @@ -1 +0,0 @@ -# nada diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/Makefile b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/Makefile deleted file mode 100644 index 71af0e9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -files = semver.browser.js \ - semver.min.js \ - semver.browser.js.gz \ - semver.min.js.gz - -all: $(files) - -clean: - rm -f $(files) - -semver.browser.js: head.js.txt semver.js foot.js.txt - ( cat head.js.txt; \ - cat semver.js | \ - egrep -v '^ *\/\* nomin \*\/' | \ - perl -pi -e 's/debug\([^\)]+\)//g'; \ - cat foot.js.txt ) > semver.browser.js - -semver.min.js: semver.browser.js - uglifyjs -m semver.min.js - -%.gz: % - gzip --stdout -9 <$< >$@ - -.PHONY: all clean diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/README.md deleted file mode 100644 index 7e1961d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/README.md +++ /dev/null @@ -1,275 +0,0 @@ -semver(1) -- The semantic versioner for npm -=========================================== - -## Usage - - $ npm install semver - - semver.valid('1.2.3') // '1.2.3' - semver.valid('a.b.c') // null - semver.clean(' =v1.2.3 ') // '1.2.3' - semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true - semver.gt('1.2.3', '9.8.7') // false - semver.lt('1.2.3', '9.8.7') // true - -As a command-line utility: - - $ semver -h - - Usage: semver [ [...]] [-r | -i | -d ] - Test if version(s) satisfy the supplied range(s), and sort them. - - Multiple versions or ranges may be supplied, unless increment - or decrement options are specified. In that case, only a single - version may be used, and it is incremented by the specified level - - Program exits successfully if any valid version satisfies - all supplied ranges, and prints all satisfying versions. - - If no versions are valid, or ranges are not satisfied, - then exits failure. - - Versions are printed in ascending order, so supplying - multiple versions to the utility will just sort them. - -## Versions - -A "version" is described by the `v2.0.0` specification found at -. - -A leading `"="` or `"v"` character is stripped off and ignored. - -## Ranges - -A `version range` is a set of `comparators` which specify versions -that satisfy the range. - -A `comparator` is composed of an `operator` and a `version`. The set -of primitive `operators` is: - -* `<` Less than -* `<=` Less than or equal to -* `>` Greater than -* `>=` Greater than or equal to -* `=` Equal. If no operator is specified, then equality is assumed, - so this operator is optional, but MAY be included. - -For example, the comparator `>=1.2.7` would match the versions -`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6` -or `1.1.0`. - -Comparators can be joined by whitespace to form a `comparator set`, -which is satisfied by the **intersection** of all of the comparators -it includes. - -A range is composed of one or more comparator sets, joined by `||`. A -version matches a range if and only if every comparator in at least -one of the `||`-separated comparator sets is satisfied by the version. - -For example, the range `>=1.2.7 <1.3.0` would match the versions -`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`, -or `1.1.0`. - -The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`, -`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`. - -### Prerelease Tags - -If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then -it will only be allowed to satisfy comparator sets if at least one -comparator with the same `[major, minor, patch]` tuple also has a -prerelease tag. - -For example, the range `>1.2.3-alpha.3` would be allowed to match the -version `1.2.3-alpha.7`, but it would *not* be satisfied by -`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater -than" `1.2.3-alpha.3` according to the SemVer sort rules. The version -range only accepts prerelease tags on the `1.2.3` version. The -version `3.4.5` *would* satisfy the range, because it does not have a -prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`. - -The purpose for this behavior is twofold. First, prerelease versions -frequently are updated very quickly, and contain many breaking changes -that are (by the author's design) not yet fit for public consumption. -Therefore, by default, they are excluded from range matching -semantics. - -Second, a user who has opted into using a prerelease version has -clearly indicated the intent to use *that specific* set of -alpha/beta/rc versions. By including a prerelease tag in the range, -the user is indicating that they are aware of the risk. However, it -is still not appropriate to assume that they have opted into taking a -similar risk on the *next* set of prerelease versions. - -### Advanced Range Syntax - -Advanced range syntax desugars to primitive comparators in -deterministic ways. - -Advanced ranges may be combined in the same way as primitive -comparators using white space or `||`. - -#### Hyphen Ranges `X.Y.Z - A.B.C` - -Specifies an inclusive set. - -* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4` - -If a partial version is provided as the first version in the inclusive -range, then the missing pieces are replaced with zeroes. - -* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4` - -If a partial version is provided as the second version in the -inclusive range, then all versions that start with the supplied parts -of the tuple are accepted, but nothing that would be greater than the -provided tuple parts. - -* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0` -* `1.2.3 - 2` := `>=1.2.3 <3.0.0` - -#### X-Ranges `1.2.x` `1.X` `1.2.*` `*` - -Any of `X`, `x`, or `*` may be used to "stand in" for one of the -numeric values in the `[major, minor, patch]` tuple. - -* `*` := `>=0.0.0` (Any version satisfies) -* `1.x` := `>=1.0.0 <2.0.0` (Matching major version) -* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions) - -A partial version range is treated as an X-Range, so the special -character is in fact optional. - -* `""` (empty string) := `*` := `>=0.0.0` -* `1` := `1.x.x` := `>=1.0.0 <2.0.0` -* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0` - -#### Tilde Ranges `~1.2.3` `~1.2` `~1` - -Allows patch-level changes if a minor version is specified on the -comparator. Allows minor-level changes if not. - -* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0` -* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`) -* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`) -* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0` -* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`) -* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`) -* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in - the `1.2.3` version will be allowed, if they are greater than or - equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but - `1.2.4-beta.2` would not, because it is a prerelease of a - different `[major, minor, patch]` tuple. - -Note: this is the same as the `~>` operator in rubygems. - -#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4` - -Allows changes that do not modify the left-most non-zero digit in the -`[major, minor, patch]` tuple. In other words, this allows patch and -minor updates for versions `1.0.0` and above, patch updates for -versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`. - -Many authors treat a `0.x` version as if the `x` were the major -"breaking-change" indicator. - -Caret ranges are ideal when an author may make breaking changes -between `0.2.4` and `0.3.0` releases, which is a common practice. -However, it presumes that there will *not* be breaking changes between -`0.2.4` and `0.2.5`. It allows for changes that are presumed to be -additive (but non-breaking), according to commonly observed practices. - -* `^1.2.3` := `>=1.2.3 <2.0.0` -* `^0.2.3` := `>=0.2.3 <0.3.0` -* `^0.0.3` := `>=0.0.3 <0.0.4` -* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in - the `1.2.3` version will be allowed, if they are greater than or - equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but - `1.2.4-beta.2` would not, because it is a prerelease of a - different `[major, minor, patch]` tuple. -* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the - `0.0.3` version *only* will be allowed, if they are greater than or - equal to `beta`. So, `0.0.3-pr.2` would be allowed. - -When parsing caret ranges, a missing `patch` value desugars to the -number `0`, but will allow flexibility within that value, even if the -major and minor versions are both `0`. - -* `^1.2.x` := `>=1.2.0 <2.0.0` -* `^0.0.x` := `>=0.0.0 <0.1.0` -* `^0.0` := `>=0.0.0 <0.1.0` - -A missing `minor` and `patch` values will desugar to zero, but also -allow flexibility within those values, even if the major version is -zero. - -* `^1.x` := `>=1.0.0 <2.0.0` -* `^0.x` := `>=0.0.0 <1.0.0` - -## Functions - -All methods and classes take a final `loose` boolean argument that, if -true, will be more forgiving about not-quite-valid semver strings. -The resulting output will always be 100% strict, of course. - -Strict-mode Comparators and Ranges will be strict about the SemVer -strings that they parse. - -* `valid(v)`: Return the parsed version, or null if it's not valid. -* `inc(v, release)`: Return the version incremented by the release - type (`major`, `premajor`, `minor`, `preminor`, `patch`, - `prepatch`, or `prerelease`), or null if it's not valid - * `premajor` in one call will bump the version up to the next major - version and down to a prerelease of that major version. - `preminor`, and `prepatch` work the same way. - * If called from a non-prerelease version, the `prerelease` will work the - same as `prepatch`. It increments the patch version, then makes a - prerelease. If the input version is already a prerelease it simply - increments it. - -### Comparison - -* `gt(v1, v2)`: `v1 > v2` -* `gte(v1, v2)`: `v1 >= v2` -* `lt(v1, v2)`: `v1 < v2` -* `lte(v1, v2)`: `v1 <= v2` -* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent, - even if they're not the exact same string. You already know how to - compare strings. -* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`. -* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call - the corresponding function above. `"==="` and `"!=="` do simple - string comparison, but are included for completeness. Throws if an - invalid comparison string is provided. -* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if - `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. -* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions - in descending order when passed to `Array.sort()`. - - -### Ranges - -* `validRange(range)`: Return the valid range or null if it's not valid -* `satisfies(version, range)`: Return true if the version satisfies the - range. -* `maxSatisfying(versions, range)`: Return the highest version in the list - that satisfies the range, or `null` if none of them do. -* `gtr(version, range)`: Return `true` if version is greater than all the - versions possible in the range. -* `ltr(version, range)`: Return `true` if version is less than all the - versions possible in the range. -* `outside(version, range, hilo)`: Return true if the version is outside - the bounds of the range in either the high or low direction. The - `hilo` argument must be either the string `'>'` or `'<'`. (This is - the function called by `gtr` and `ltr`.) - -Note that, since ranges may be non-contiguous, a version might not be -greater than a range, less than a range, *or* satisfy a range! For -example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9` -until `2.0.0`, so the version `1.2.10` would not be greater than the -range (because `2.0.1` satisfies, which is higher), nor less than the -range (since `1.2.8` satisfies, which is lower), and it also does not -satisfy the range. - -If you want to know if a version satisfies or does not satisfy a -range, use the `satisfies(version, range)` function. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/bin/semver b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/bin/semver deleted file mode 100755 index c5f2e85..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/bin/semver +++ /dev/null @@ -1,133 +0,0 @@ -#!/usr/bin/env node -// Standalone semver comparison program. -// Exits successfully and prints matching version(s) if -// any supplied version is valid and passes all tests. - -var argv = process.argv.slice(2) - , versions = [] - , range = [] - , gt = [] - , lt = [] - , eq = [] - , inc = null - , version = require("../package.json").version - , loose = false - , identifier = undefined - , semver = require("../semver") - , reverse = false - -main() - -function main () { - if (!argv.length) return help() - while (argv.length) { - var a = argv.shift() - var i = a.indexOf('=') - if (i !== -1) { - a = a.slice(0, i) - argv.unshift(a.slice(i + 1)) - } - switch (a) { - case "-rv": case "-rev": case "--rev": case "--reverse": - reverse = true - break - case "-l": case "--loose": - loose = true - break - case "-v": case "--version": - versions.push(argv.shift()) - break - case "-i": case "--inc": case "--increment": - switch (argv[0]) { - case "major": case "minor": case "patch": case "prerelease": - case "premajor": case "preminor": case "prepatch": - inc = argv.shift() - break - default: - inc = "patch" - break - } - break - case "--preid": - identifier = argv.shift() - break - case "-r": case "--range": - range.push(argv.shift()) - break - case "-h": case "--help": case "-?": - return help() - default: - versions.push(a) - break - } - } - - versions = versions.filter(function (v) { - return semver.valid(v, loose) - }) - if (!versions.length) return fail() - if (inc && (versions.length !== 1 || range.length)) - return failInc() - - for (var i = 0, l = range.length; i < l ; i ++) { - versions = versions.filter(function (v) { - return semver.satisfies(v, range[i], loose) - }) - if (!versions.length) return fail() - } - return success(versions) -} - -function failInc () { - console.error("--inc can only be used on a single version with no range") - fail() -} - -function fail () { process.exit(1) } - -function success () { - var compare = reverse ? "rcompare" : "compare" - versions.sort(function (a, b) { - return semver[compare](a, b, loose) - }).map(function (v) { - return semver.clean(v, loose) - }).map(function (v) { - return inc ? semver.inc(v, inc, loose, identifier) : v - }).forEach(function (v,i,_) { console.log(v) }) -} - -function help () { - console.log(["SemVer " + version - ,"" - ,"A JavaScript implementation of the http://semver.org/ specification" - ,"Copyright Isaac Z. Schlueter" - ,"" - ,"Usage: semver [options] [ [...]]" - ,"Prints valid versions sorted by SemVer precedence" - ,"" - ,"Options:" - ,"-r --range " - ," Print versions that match the specified range." - ,"" - ,"-i --increment []" - ," Increment a version by the specified level. Level can" - ," be one of: major, minor, patch, premajor, preminor," - ," prepatch, or prerelease. Default level is 'patch'." - ," Only one version may be specified." - ,"" - ,"--preid " - ," Identifier to be used to prefix premajor, preminor," - ," prepatch or prerelease version increments." - ,"" - ,"-l --loose" - ," Interpret versions and ranges loosely" - ,"" - ,"Program exits successfully if any valid version satisfies" - ,"all supplied ranges, and prints all satisfying versions." - ,"" - ,"If no satisfying versions are found, then exits failure." - ,"" - ,"Versions are printed in ascending order, so supplying" - ,"multiple versions to the utility will just sort them." - ].join("\n")) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/foot.js.txt b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/foot.js.txt deleted file mode 100644 index 8f83c20..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/foot.js.txt +++ /dev/null @@ -1,6 +0,0 @@ - -})( - typeof exports === 'object' ? exports : - typeof define === 'function' && define.amd ? {} : - semver = {} -); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/head.js.txt b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/head.js.txt deleted file mode 100644 index 6536865..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/head.js.txt +++ /dev/null @@ -1,2 +0,0 @@ -;(function(exports) { - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/package.json deleted file mode 100644 index 4128560..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "semver", - "version": "4.1.0", - "description": "The semantic version parser used by npm.", - "main": "semver.js", - "browser": "semver.browser.js", - "min": "semver.min.js", - "scripts": { - "test": "tap test/*.js", - "prepublish": "make" - }, - "devDependencies": { - "tap": "0.x >=0.0.4", - "uglify-js": "~2.3.6" - }, - "license": "BSD", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-semver.git" - }, - "bin": { - "semver": "./bin/semver" - }, - "gitHead": "f8db569b9fd00788d14064aaf81854ed81e1337a", - "bugs": { - "url": "https://github.com/isaacs/node-semver/issues" - }, - "homepage": "https://github.com/isaacs/node-semver", - "_id": "semver@4.1.0", - "_shasum": "bc80a9ff68532814362cc3cfda3c7b75ed9c321c", - "_from": "semver@~4.1.0", - "_npmVersion": "2.1.3", - "_nodeVersion": "0.10.31", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - }, - { - "name": "othiym23", - "email": "ogd@aoaioxxysz.net" - } - ], - "dist": { - "shasum": "bc80a9ff68532814362cc3cfda3c7b75ed9c321c", - "tarball": "http://registry.npmjs.org/semver/-/semver-4.1.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/semver/-/semver-4.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.browser.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.browser.js deleted file mode 100644 index 712de83..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.browser.js +++ /dev/null @@ -1,1120 +0,0 @@ -;(function(exports) { - -// export the class if we are in a Node-like system. -if (typeof module === 'object' && module.exports === exports) - exports = module.exports = SemVer; - -// The debug function is excluded entirely from the minified version. - -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -exports.SEMVER_SPEC_VERSION = '2.0.0'; - -// The actual regexps go on exports.re -var re = exports.re = []; -var src = exports.src = []; -var R = 0; - -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. - -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. - -var NUMERICIDENTIFIER = R++; -src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'; -var NUMERICIDENTIFIERLOOSE = R++; -src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'; - - -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. - -var NONNUMERICIDENTIFIER = R++; -src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; - - -// ## Main Version -// Three dot-separated numeric identifiers. - -var MAINVERSION = R++; -src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')'; - -var MAINVERSIONLOOSE = R++; -src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')'; - -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. - -var PRERELEASEIDENTIFIER = R++; -src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; - -var PRERELEASEIDENTIFIERLOOSE = R++; -src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; - - -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. - -var PRERELEASE = R++; -src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + - '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'; - -var PRERELEASELOOSE = R++; -src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'; - -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. - -var BUILDIDENTIFIER = R++; -src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; - -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. - -var BUILD = R++; -src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + - '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'; - - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. - -var FULL = R++; -var FULLPLAIN = 'v?' + src[MAINVERSION] + - src[PRERELEASE] + '?' + - src[BUILD] + '?'; - -src[FULL] = '^' + FULLPLAIN + '$'; - -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + - src[PRERELEASELOOSE] + '?' + - src[BUILD] + '?'; - -var LOOSE = R++; -src[LOOSE] = '^' + LOOSEPLAIN + '$'; - -var GTLT = R++; -src[GTLT] = '((?:<|>)?=?)'; - -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -var XRANGEIDENTIFIERLOOSE = R++; -src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'; -var XRANGEIDENTIFIER = R++; -src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'; - -var XRANGEPLAIN = R++; -src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:' + src[PRERELEASE] + ')?' + - src[BUILD] + '?' + - ')?)?'; - -var XRANGEPLAINLOOSE = R++; -src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:' + src[PRERELEASELOOSE] + ')?' + - src[BUILD] + '?' + - ')?)?'; - -var XRANGE = R++; -src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'; -var XRANGELOOSE = R++; -src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'; - -// Tilde ranges. -// Meaning is "reasonably at or greater than" -var LONETILDE = R++; -src[LONETILDE] = '(?:~>?)'; - -var TILDETRIM = R++; -src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'; -re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g'); -var tildeTrimReplace = '$1~'; - -var TILDE = R++; -src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'; -var TILDELOOSE = R++; -src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'; - -// Caret ranges. -// Meaning is "at least and backwards compatible with" -var LONECARET = R++; -src[LONECARET] = '(?:\\^)'; - -var CARETTRIM = R++; -src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'; -re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g'); -var caretTrimReplace = '$1^'; - -var CARET = R++; -src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'; -var CARETLOOSE = R++; -src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'; - -// A simple gt/lt/eq thing, or just "" to indicate "any version" -var COMPARATORLOOSE = R++; -src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'; -var COMPARATOR = R++; -src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'; - - -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -var COMPARATORTRIM = R++; -src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + - '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'; - -// this one has to use the /g flag -re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g'); -var comparatorTrimReplace = '$1$2$3'; - - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -var HYPHENRANGE = R++; -src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAIN] + ')' + - '\\s*$'; - -var HYPHENRANGELOOSE = R++; -src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s*$'; - -// Star ranges basically just allow anything at all. -var STAR = R++; -src[STAR] = '(<|>)?=?\\s*\\*'; - -// Compile to actual regexp objects. -// All are flag-free, unless they were created above with a flag. -for (var i = 0; i < R; i++) { - ; - if (!re[i]) - re[i] = new RegExp(src[i]); -} - -exports.parse = parse; -function parse(version, loose) { - var r = loose ? re[LOOSE] : re[FULL]; - return (r.test(version)) ? new SemVer(version, loose) : null; -} - -exports.valid = valid; -function valid(version, loose) { - var v = parse(version, loose); - return v ? v.version : null; -} - - -exports.clean = clean; -function clean(version, loose) { - var s = parse(version.trim().replace(/^[=v]+/, ''), loose); - return s ? s.version : null; -} - -exports.SemVer = SemVer; - -function SemVer(version, loose) { - if (version instanceof SemVer) { - if (version.loose === loose) - return version; - else - version = version.version; - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version); - } - - if (!(this instanceof SemVer)) - return new SemVer(version, loose); - - ; - this.loose = loose; - var m = version.trim().match(loose ? re[LOOSE] : re[FULL]); - - if (!m) - throw new TypeError('Invalid Version: ' + version); - - this.raw = version; - - // these are actually numbers - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; - - // numberify any prerelease numeric ids - if (!m[4]) - this.prerelease = []; - else - this.prerelease = m[4].split('.').map(function(id) { - return (/^[0-9]+$/.test(id)) ? +id : id; - }); - - this.build = m[5] ? m[5].split('.') : []; - this.format(); -} - -SemVer.prototype.format = function() { - this.version = this.major + '.' + this.minor + '.' + this.patch; - if (this.prerelease.length) - this.version += '-' + this.prerelease.join('.'); - return this.version; -}; - -SemVer.prototype.inspect = function() { - return ''; -}; - -SemVer.prototype.toString = function() { - return this.version; -}; - -SemVer.prototype.compare = function(other) { - ; - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return this.compareMain(other) || this.comparePre(other); -}; - -SemVer.prototype.compareMain = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch); -}; - -SemVer.prototype.comparePre = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) - return -1; - else if (!this.prerelease.length && other.prerelease.length) - return 1; - else if (!this.prerelease.length && !other.prerelease.length) - return 0; - - var i = 0; - do { - var a = this.prerelease[i]; - var b = other.prerelease[i]; - ; - if (a === undefined && b === undefined) - return 0; - else if (b === undefined) - return 1; - else if (a === undefined) - return -1; - else if (a === b) - continue; - else - return compareIdentifiers(a, b); - } while (++i); -}; - -// preminor will bump the version up to the next minor release, and immediately -// down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function(release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc('pre', identifier); - break; - case 'preminor': - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc('pre', identifier); - break; - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0; - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) - this.major++; - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break; - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) - this.minor++; - this.patch = 0; - this.prerelease = []; - break; - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) - this.patch++; - this.prerelease = []; - break; - // This probably shouldn't be used publicly. - // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) - this.prerelease = [0]; - else { - var i = this.prerelease.length; - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++; - i = -2; - } - } - if (i === -1) // didn't increment anything - this.prerelease.push(0); - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) - this.prerelease = [identifier, 0]; - } else - this.prerelease = [identifier, 0]; - } - break; - - default: - throw new Error('invalid increment argument: ' + release); - } - this.format(); - return this; -}; - -exports.inc = inc; -function inc(version, release, loose, identifier) { - if (typeof(loose) === 'string') { - identifier = loose; - loose = undefined; - } - - try { - return new SemVer(version, loose).inc(release, identifier).version; - } catch (er) { - return null; - } -} - -exports.compareIdentifiers = compareIdentifiers; - -var numeric = /^[0-9]+$/; -function compareIdentifiers(a, b) { - var anum = numeric.test(a); - var bnum = numeric.test(b); - - if (anum && bnum) { - a = +a; - b = +b; - } - - return (anum && !bnum) ? -1 : - (bnum && !anum) ? 1 : - a < b ? -1 : - a > b ? 1 : - 0; -} - -exports.rcompareIdentifiers = rcompareIdentifiers; -function rcompareIdentifiers(a, b) { - return compareIdentifiers(b, a); -} - -exports.compare = compare; -function compare(a, b, loose) { - return new SemVer(a, loose).compare(b); -} - -exports.compareLoose = compareLoose; -function compareLoose(a, b) { - return compare(a, b, true); -} - -exports.rcompare = rcompare; -function rcompare(a, b, loose) { - return compare(b, a, loose); -} - -exports.sort = sort; -function sort(list, loose) { - return list.sort(function(a, b) { - return exports.compare(a, b, loose); - }); -} - -exports.rsort = rsort; -function rsort(list, loose) { - return list.sort(function(a, b) { - return exports.rcompare(a, b, loose); - }); -} - -exports.gt = gt; -function gt(a, b, loose) { - return compare(a, b, loose) > 0; -} - -exports.lt = lt; -function lt(a, b, loose) { - return compare(a, b, loose) < 0; -} - -exports.eq = eq; -function eq(a, b, loose) { - return compare(a, b, loose) === 0; -} - -exports.neq = neq; -function neq(a, b, loose) { - return compare(a, b, loose) !== 0; -} - -exports.gte = gte; -function gte(a, b, loose) { - return compare(a, b, loose) >= 0; -} - -exports.lte = lte; -function lte(a, b, loose) { - return compare(a, b, loose) <= 0; -} - -exports.cmp = cmp; -function cmp(a, op, b, loose) { - var ret; - switch (op) { - case '===': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a === b; - break; - case '!==': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a !== b; - break; - case '': case '=': case '==': ret = eq(a, b, loose); break; - case '!=': ret = neq(a, b, loose); break; - case '>': ret = gt(a, b, loose); break; - case '>=': ret = gte(a, b, loose); break; - case '<': ret = lt(a, b, loose); break; - case '<=': ret = lte(a, b, loose); break; - default: throw new TypeError('Invalid operator: ' + op); - } - return ret; -} - -exports.Comparator = Comparator; -function Comparator(comp, loose) { - if (comp instanceof Comparator) { - if (comp.loose === loose) - return comp; - else - comp = comp.value; - } - - if (!(this instanceof Comparator)) - return new Comparator(comp, loose); - - ; - this.loose = loose; - this.parse(comp); - - if (this.semver === ANY) - this.value = ''; - else - this.value = this.operator + this.semver.version; - - ; -} - -var ANY = {}; -Comparator.prototype.parse = function(comp) { - var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var m = comp.match(r); - - if (!m) - throw new TypeError('Invalid comparator: ' + comp); - - this.operator = m[1]; - if (this.operator === '=') - this.operator = ''; - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) - this.semver = ANY; - else - this.semver = new SemVer(m[2], this.loose); -}; - -Comparator.prototype.inspect = function() { - return ''; -}; - -Comparator.prototype.toString = function() { - return this.value; -}; - -Comparator.prototype.test = function(version) { - ; - - if (this.semver === ANY) - return true; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - return cmp(version, this.operator, this.semver, this.loose); -}; - - -exports.Range = Range; -function Range(range, loose) { - if ((range instanceof Range) && range.loose === loose) - return range; - - if (!(this instanceof Range)) - return new Range(range, loose); - - this.loose = loose; - - // First, split based on boolean or || - this.raw = range; - this.set = range.split(/\s*\|\|\s*/).map(function(range) { - return this.parseRange(range.trim()); - }, this).filter(function(c) { - // throw out any that are not relevant for whatever reason - return c.length; - }); - - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range); - } - - this.format(); -} - -Range.prototype.inspect = function() { - return ''; -}; - -Range.prototype.format = function() { - this.range = this.set.map(function(comps) { - return comps.join(' ').trim(); - }).join('||').trim(); - return this.range; -}; - -Range.prototype.toString = function() { - return this.range; -}; - -Range.prototype.parseRange = function(range) { - var loose = this.loose; - range = range.trim(); - ; - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]; - range = range.replace(hr, hyphenReplace); - ; - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace); - ; - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[TILDETRIM], tildeTrimReplace); - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[CARETTRIM], caretTrimReplace); - - // normalize spaces - range = range.split(/\s+/).join(' '); - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var set = range.split(' ').map(function(comp) { - return parseComparator(comp, loose); - }).join(' ').split(/\s+/); - if (this.loose) { - // in loose mode, throw out any that are not valid comparators - set = set.filter(function(comp) { - return !!comp.match(compRe); - }); - } - set = set.map(function(comp) { - return new Comparator(comp, loose); - }); - - return set; -}; - -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators; -function toComparators(range, loose) { - return new Range(range, loose).set.map(function(comp) { - return comp.map(function(c) { - return c.value; - }).join(' ').trim().split(' '); - }); -} - -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -function parseComparator(comp, loose) { - ; - comp = replaceCarets(comp, loose); - ; - comp = replaceTildes(comp, loose); - ; - comp = replaceXRanges(comp, loose); - ; - comp = replaceStars(comp, loose); - ; - return comp; -} - -function isX(id) { - return !id || id.toLowerCase() === 'x' || id === '*'; -} - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -function replaceTildes(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceTilde(comp, loose); - }).join(' '); -} - -function replaceTilde(comp, loose) { - var r = loose ? re[TILDELOOSE] : re[TILDE]; - return comp.replace(r, function(_, M, m, p, pr) { - ; - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) - // ~1.2 == >=1.2.0- <1.3.0- - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else if (pr) { - ; - if (pr.charAt(0) !== '-') - pr = '-' + pr; - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - - ; - return ret; - }); -} - -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 -// ^1.2.3 --> >=1.2.3 <2.0.0 -// ^1.2.0 --> >=1.2.0 <2.0.0 -function replaceCarets(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceCaret(comp, loose); - }).join(' '); -} - -function replaceCaret(comp, loose) { - ; - var r = loose ? re[CARETLOOSE] : re[CARET]; - return comp.replace(r, function(_, M, m, p, pr) { - ; - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) { - if (M === '0') - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'; - } else if (pr) { - ; - if (pr.charAt(0) !== '-') - pr = '-' + pr; - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + (+M + 1) + '.0.0'; - } else { - ; - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0'; - } - - ; - return ret; - }); -} - -function replaceXRanges(comp, loose) { - ; - return comp.split(/\s+/).map(function(comp) { - return replaceXRange(comp, loose); - }).join(' '); -} - -function replaceXRange(comp, loose) { - comp = comp.trim(); - var r = loose ? re[XRANGELOOSE] : re[XRANGE]; - return comp.replace(r, function(ret, gtlt, M, m, p, pr) { - ; - var xM = isX(M); - var xm = xM || isX(m); - var xp = xm || isX(p); - var anyX = xp; - - if (gtlt === '=' && anyX) - gtlt = ''; - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0'; - } else { - // nothing is forbidden - ret = '*'; - } - } else if (gtlt && anyX) { - // replace X with 0 - if (xm) - m = 0; - if (xp) - p = 0; - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - // >1.2.3 => >= 1.2.4 - gtlt = '>='; - if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else if (xp) { - m = +m + 1; - p = 0; - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) - M = +M + 1 - else - m = +m + 1 - } - - ret = gtlt + M + '.' + m + '.' + p; - } else if (xm) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - } else if (xp) { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - } - - ; - - return ret; - }); -} - -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars(comp, loose) { - ; - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[STAR], ''); -} - -// This function is passed to string.replace(re[HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0 -function hyphenReplace($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - - if (isX(fM)) - from = ''; - else if (isX(fm)) - from = '>=' + fM + '.0.0'; - else if (isX(fp)) - from = '>=' + fM + '.' + fm + '.0'; - else - from = '>=' + from; - - if (isX(tM)) - to = ''; - else if (isX(tm)) - to = '<' + (+tM + 1) + '.0.0'; - else if (isX(tp)) - to = '<' + tM + '.' + (+tm + 1) + '.0'; - else if (tpr) - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr; - else - to = '<=' + to; - - return (from + ' ' + to).trim(); -} - - -// if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function(version) { - if (!version) - return false; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version)) - return true; - } - return false; -}; - -function testSet(set, version) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) - return false; - } - - if (version.prerelease.length) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (var i = 0; i < set.length; i++) { - ; - if (set[i].semver === ANY) - return true; - - if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver; - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) - return true; - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false; - } - - return true; -} - -exports.satisfies = satisfies; -function satisfies(version, range, loose) { - try { - range = new Range(range, loose); - } catch (er) { - return false; - } - return range.test(version); -} - -exports.maxSatisfying = maxSatisfying; -function maxSatisfying(versions, range, loose) { - return versions.filter(function(version) { - return satisfies(version, range, loose); - }).sort(function(a, b) { - return rcompare(a, b, loose); - })[0] || null; -} - -exports.validRange = validRange; -function validRange(range, loose) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, loose).range || '*'; - } catch (er) { - return null; - } -} - -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr; -function ltr(version, range, loose) { - return outside(version, range, '<', loose); -} - -// Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr; -function gtr(version, range, loose) { - return outside(version, range, '>', loose); -} - -exports.outside = outside; -function outside(version, range, hilo, loose) { - version = new SemVer(version, loose); - range = new Range(range, loose); - - var gtfn, ltefn, ltfn, comp, ecomp; - switch (hilo) { - case '>': - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = '>'; - ecomp = '>='; - break; - case '<': - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = '<'; - ecomp = '<='; - break; - default: - throw new TypeError('Must provide a hilo val of "<" or ">"'); - } - - // If it satisifes the range it is not outside - if (satisfies(version, range, loose)) { - return false; - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i]; - - var high = null; - var low = null; - - comparators.forEach(function(comparator) { - high = high || comparator; - low = low || comparator; - if (gtfn(comparator.semver, high.semver, loose)) { - high = comparator; - } else if (ltfn(comparator.semver, low.semver, loose)) { - low = comparator; - } - }); - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false; - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false; - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false; - } - } - return true; -} - -// Use the define() function if we're in AMD land -if (typeof define === 'function' && define.amd) - define(exports); - -})( - typeof exports === 'object' ? exports : - typeof define === 'function' && define.amd ? {} : - semver = {} -); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.browser.js.gz b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.browser.js.gz deleted file mode 100644 index e3066055506fd63423614ef9f3297b45d4356b35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7595 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 1.2.3` ==> `>1.2.3` -var COMPARATORTRIM = R++; -src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + - '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'; - -// this one has to use the /g flag -re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g'); -var comparatorTrimReplace = '$1$2$3'; - - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -var HYPHENRANGE = R++; -src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAIN] + ')' + - '\\s*$'; - -var HYPHENRANGELOOSE = R++; -src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s*$'; - -// Star ranges basically just allow anything at all. -var STAR = R++; -src[STAR] = '(<|>)?=?\\s*\\*'; - -// Compile to actual regexp objects. -// All are flag-free, unless they were created above with a flag. -for (var i = 0; i < R; i++) { - debug(i, src[i]); - if (!re[i]) - re[i] = new RegExp(src[i]); -} - -exports.parse = parse; -function parse(version, loose) { - var r = loose ? re[LOOSE] : re[FULL]; - return (r.test(version)) ? new SemVer(version, loose) : null; -} - -exports.valid = valid; -function valid(version, loose) { - var v = parse(version, loose); - return v ? v.version : null; -} - - -exports.clean = clean; -function clean(version, loose) { - var s = parse(version.trim().replace(/^[=v]+/, ''), loose); - return s ? s.version : null; -} - -exports.SemVer = SemVer; - -function SemVer(version, loose) { - if (version instanceof SemVer) { - if (version.loose === loose) - return version; - else - version = version.version; - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version); - } - - if (!(this instanceof SemVer)) - return new SemVer(version, loose); - - debug('SemVer', version, loose); - this.loose = loose; - var m = version.trim().match(loose ? re[LOOSE] : re[FULL]); - - if (!m) - throw new TypeError('Invalid Version: ' + version); - - this.raw = version; - - // these are actually numbers - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; - - // numberify any prerelease numeric ids - if (!m[4]) - this.prerelease = []; - else - this.prerelease = m[4].split('.').map(function(id) { - return (/^[0-9]+$/.test(id)) ? +id : id; - }); - - this.build = m[5] ? m[5].split('.') : []; - this.format(); -} - -SemVer.prototype.format = function() { - this.version = this.major + '.' + this.minor + '.' + this.patch; - if (this.prerelease.length) - this.version += '-' + this.prerelease.join('.'); - return this.version; -}; - -SemVer.prototype.inspect = function() { - return ''; -}; - -SemVer.prototype.toString = function() { - return this.version; -}; - -SemVer.prototype.compare = function(other) { - debug('SemVer.compare', this.version, this.loose, other); - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return this.compareMain(other) || this.comparePre(other); -}; - -SemVer.prototype.compareMain = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch); -}; - -SemVer.prototype.comparePre = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) - return -1; - else if (!this.prerelease.length && other.prerelease.length) - return 1; - else if (!this.prerelease.length && !other.prerelease.length) - return 0; - - var i = 0; - do { - var a = this.prerelease[i]; - var b = other.prerelease[i]; - debug('prerelease compare', i, a, b); - if (a === undefined && b === undefined) - return 0; - else if (b === undefined) - return 1; - else if (a === undefined) - return -1; - else if (a === b) - continue; - else - return compareIdentifiers(a, b); - } while (++i); -}; - -// preminor will bump the version up to the next minor release, and immediately -// down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function(release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc('pre', identifier); - break; - case 'preminor': - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc('pre', identifier); - break; - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0; - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) - this.major++; - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break; - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) - this.minor++; - this.patch = 0; - this.prerelease = []; - break; - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) - this.patch++; - this.prerelease = []; - break; - // This probably shouldn't be used publicly. - // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) - this.prerelease = [0]; - else { - var i = this.prerelease.length; - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++; - i = -2; - } - } - if (i === -1) // didn't increment anything - this.prerelease.push(0); - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) - this.prerelease = [identifier, 0]; - } else - this.prerelease = [identifier, 0]; - } - break; - - default: - throw new Error('invalid increment argument: ' + release); - } - this.format(); - return this; -}; - -exports.inc = inc; -function inc(version, release, loose, identifier) { - if (typeof(loose) === 'string') { - identifier = loose; - loose = undefined; - } - - try { - return new SemVer(version, loose).inc(release, identifier).version; - } catch (er) { - return null; - } -} - -exports.compareIdentifiers = compareIdentifiers; - -var numeric = /^[0-9]+$/; -function compareIdentifiers(a, b) { - var anum = numeric.test(a); - var bnum = numeric.test(b); - - if (anum && bnum) { - a = +a; - b = +b; - } - - return (anum && !bnum) ? -1 : - (bnum && !anum) ? 1 : - a < b ? -1 : - a > b ? 1 : - 0; -} - -exports.rcompareIdentifiers = rcompareIdentifiers; -function rcompareIdentifiers(a, b) { - return compareIdentifiers(b, a); -} - -exports.compare = compare; -function compare(a, b, loose) { - return new SemVer(a, loose).compare(b); -} - -exports.compareLoose = compareLoose; -function compareLoose(a, b) { - return compare(a, b, true); -} - -exports.rcompare = rcompare; -function rcompare(a, b, loose) { - return compare(b, a, loose); -} - -exports.sort = sort; -function sort(list, loose) { - return list.sort(function(a, b) { - return exports.compare(a, b, loose); - }); -} - -exports.rsort = rsort; -function rsort(list, loose) { - return list.sort(function(a, b) { - return exports.rcompare(a, b, loose); - }); -} - -exports.gt = gt; -function gt(a, b, loose) { - return compare(a, b, loose) > 0; -} - -exports.lt = lt; -function lt(a, b, loose) { - return compare(a, b, loose) < 0; -} - -exports.eq = eq; -function eq(a, b, loose) { - return compare(a, b, loose) === 0; -} - -exports.neq = neq; -function neq(a, b, loose) { - return compare(a, b, loose) !== 0; -} - -exports.gte = gte; -function gte(a, b, loose) { - return compare(a, b, loose) >= 0; -} - -exports.lte = lte; -function lte(a, b, loose) { - return compare(a, b, loose) <= 0; -} - -exports.cmp = cmp; -function cmp(a, op, b, loose) { - var ret; - switch (op) { - case '===': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a === b; - break; - case '!==': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a !== b; - break; - case '': case '=': case '==': ret = eq(a, b, loose); break; - case '!=': ret = neq(a, b, loose); break; - case '>': ret = gt(a, b, loose); break; - case '>=': ret = gte(a, b, loose); break; - case '<': ret = lt(a, b, loose); break; - case '<=': ret = lte(a, b, loose); break; - default: throw new TypeError('Invalid operator: ' + op); - } - return ret; -} - -exports.Comparator = Comparator; -function Comparator(comp, loose) { - if (comp instanceof Comparator) { - if (comp.loose === loose) - return comp; - else - comp = comp.value; - } - - if (!(this instanceof Comparator)) - return new Comparator(comp, loose); - - debug('comparator', comp, loose); - this.loose = loose; - this.parse(comp); - - if (this.semver === ANY) - this.value = ''; - else - this.value = this.operator + this.semver.version; - - debug('comp', this); -} - -var ANY = {}; -Comparator.prototype.parse = function(comp) { - var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var m = comp.match(r); - - if (!m) - throw new TypeError('Invalid comparator: ' + comp); - - this.operator = m[1]; - if (this.operator === '=') - this.operator = ''; - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) - this.semver = ANY; - else - this.semver = new SemVer(m[2], this.loose); -}; - -Comparator.prototype.inspect = function() { - return ''; -}; - -Comparator.prototype.toString = function() { - return this.value; -}; - -Comparator.prototype.test = function(version) { - debug('Comparator.test', version, this.loose); - - if (this.semver === ANY) - return true; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - return cmp(version, this.operator, this.semver, this.loose); -}; - - -exports.Range = Range; -function Range(range, loose) { - if ((range instanceof Range) && range.loose === loose) - return range; - - if (!(this instanceof Range)) - return new Range(range, loose); - - this.loose = loose; - - // First, split based on boolean or || - this.raw = range; - this.set = range.split(/\s*\|\|\s*/).map(function(range) { - return this.parseRange(range.trim()); - }, this).filter(function(c) { - // throw out any that are not relevant for whatever reason - return c.length; - }); - - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range); - } - - this.format(); -} - -Range.prototype.inspect = function() { - return ''; -}; - -Range.prototype.format = function() { - this.range = this.set.map(function(comps) { - return comps.join(' ').trim(); - }).join('||').trim(); - return this.range; -}; - -Range.prototype.toString = function() { - return this.range; -}; - -Range.prototype.parseRange = function(range) { - var loose = this.loose; - range = range.trim(); - debug('range', range, loose); - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]; - range = range.replace(hr, hyphenReplace); - debug('hyphen replace', range); - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace); - debug('comparator trim', range, re[COMPARATORTRIM]); - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[TILDETRIM], tildeTrimReplace); - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[CARETTRIM], caretTrimReplace); - - // normalize spaces - range = range.split(/\s+/).join(' '); - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var set = range.split(' ').map(function(comp) { - return parseComparator(comp, loose); - }).join(' ').split(/\s+/); - if (this.loose) { - // in loose mode, throw out any that are not valid comparators - set = set.filter(function(comp) { - return !!comp.match(compRe); - }); - } - set = set.map(function(comp) { - return new Comparator(comp, loose); - }); - - return set; -}; - -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators; -function toComparators(range, loose) { - return new Range(range, loose).set.map(function(comp) { - return comp.map(function(c) { - return c.value; - }).join(' ').trim().split(' '); - }); -} - -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -function parseComparator(comp, loose) { - debug('comp', comp); - comp = replaceCarets(comp, loose); - debug('caret', comp); - comp = replaceTildes(comp, loose); - debug('tildes', comp); - comp = replaceXRanges(comp, loose); - debug('xrange', comp); - comp = replaceStars(comp, loose); - debug('stars', comp); - return comp; -} - -function isX(id) { - return !id || id.toLowerCase() === 'x' || id === '*'; -} - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -function replaceTildes(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceTilde(comp, loose); - }).join(' '); -} - -function replaceTilde(comp, loose) { - var r = loose ? re[TILDELOOSE] : re[TILDE]; - return comp.replace(r, function(_, M, m, p, pr) { - debug('tilde', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) - // ~1.2 == >=1.2.0- <1.3.0- - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else if (pr) { - debug('replaceTilde pr', pr); - if (pr.charAt(0) !== '-') - pr = '-' + pr; - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - - debug('tilde return', ret); - return ret; - }); -} - -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 -// ^1.2.3 --> >=1.2.3 <2.0.0 -// ^1.2.0 --> >=1.2.0 <2.0.0 -function replaceCarets(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceCaret(comp, loose); - }).join(' '); -} - -function replaceCaret(comp, loose) { - debug('caret', comp, loose); - var r = loose ? re[CARETLOOSE] : re[CARET]; - return comp.replace(r, function(_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) { - if (M === '0') - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'; - } else if (pr) { - debug('replaceCaret pr', pr); - if (pr.charAt(0) !== '-') - pr = '-' + pr; - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + (+M + 1) + '.0.0'; - } else { - debug('no pr'); - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0'; - } - - debug('caret return', ret); - return ret; - }); -} - -function replaceXRanges(comp, loose) { - debug('replaceXRanges', comp, loose); - return comp.split(/\s+/).map(function(comp) { - return replaceXRange(comp, loose); - }).join(' '); -} - -function replaceXRange(comp, loose) { - comp = comp.trim(); - var r = loose ? re[XRANGELOOSE] : re[XRANGE]; - return comp.replace(r, function(ret, gtlt, M, m, p, pr) { - debug('xRange', comp, ret, gtlt, M, m, p, pr); - var xM = isX(M); - var xm = xM || isX(m); - var xp = xm || isX(p); - var anyX = xp; - - if (gtlt === '=' && anyX) - gtlt = ''; - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0'; - } else { - // nothing is forbidden - ret = '*'; - } - } else if (gtlt && anyX) { - // replace X with 0 - if (xm) - m = 0; - if (xp) - p = 0; - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - // >1.2.3 => >= 1.2.4 - gtlt = '>='; - if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else if (xp) { - m = +m + 1; - p = 0; - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) - M = +M + 1 - else - m = +m + 1 - } - - ret = gtlt + M + '.' + m + '.' + p; - } else if (xm) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - } else if (xp) { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - } - - debug('xRange return', ret); - - return ret; - }); -} - -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars(comp, loose) { - debug('replaceStars', comp, loose); - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[STAR], ''); -} - -// This function is passed to string.replace(re[HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0 -function hyphenReplace($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - - if (isX(fM)) - from = ''; - else if (isX(fm)) - from = '>=' + fM + '.0.0'; - else if (isX(fp)) - from = '>=' + fM + '.' + fm + '.0'; - else - from = '>=' + from; - - if (isX(tM)) - to = ''; - else if (isX(tm)) - to = '<' + (+tM + 1) + '.0.0'; - else if (isX(tp)) - to = '<' + tM + '.' + (+tm + 1) + '.0'; - else if (tpr) - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr; - else - to = '<=' + to; - - return (from + ' ' + to).trim(); -} - - -// if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function(version) { - if (!version) - return false; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version)) - return true; - } - return false; -}; - -function testSet(set, version) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) - return false; - } - - if (version.prerelease.length) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (var i = 0; i < set.length; i++) { - debug(set[i].semver); - if (set[i].semver === ANY) - return true; - - if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver; - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) - return true; - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false; - } - - return true; -} - -exports.satisfies = satisfies; -function satisfies(version, range, loose) { - try { - range = new Range(range, loose); - } catch (er) { - return false; - } - return range.test(version); -} - -exports.maxSatisfying = maxSatisfying; -function maxSatisfying(versions, range, loose) { - return versions.filter(function(version) { - return satisfies(version, range, loose); - }).sort(function(a, b) { - return rcompare(a, b, loose); - })[0] || null; -} - -exports.validRange = validRange; -function validRange(range, loose) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, loose).range || '*'; - } catch (er) { - return null; - } -} - -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr; -function ltr(version, range, loose) { - return outside(version, range, '<', loose); -} - -// Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr; -function gtr(version, range, loose) { - return outside(version, range, '>', loose); -} - -exports.outside = outside; -function outside(version, range, hilo, loose) { - version = new SemVer(version, loose); - range = new Range(range, loose); - - var gtfn, ltefn, ltfn, comp, ecomp; - switch (hilo) { - case '>': - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = '>'; - ecomp = '>='; - break; - case '<': - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = '<'; - ecomp = '<='; - break; - default: - throw new TypeError('Must provide a hilo val of "<" or ">"'); - } - - // If it satisifes the range it is not outside - if (satisfies(version, range, loose)) { - return false; - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i]; - - var high = null; - var low = null; - - comparators.forEach(function(comparator) { - high = high || comparator; - low = low || comparator; - if (gtfn(comparator.semver, high.semver, loose)) { - high = comparator; - } else if (ltfn(comparator.semver, low.semver, loose)) { - low = comparator; - } - }); - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false; - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false; - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false; - } - } - return true; -} - -// Use the define() function if we're in AMD land -if (typeof define === 'function' && define.amd) - define(exports); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.min.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.min.js deleted file mode 100644 index 56c9249..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/semver.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(e){if(typeof module==="object"&&module.exports===e)e=module.exports=H;e.SEMVER_SPEC_VERSION="2.0.0";var r=e.re=[];var t=e.src=[];var n=0;var i=n++;t[i]="0|[1-9]\\d*";var s=n++;t[s]="[0-9]+";var a=n++;t[a]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var o=n++;t[o]="("+t[i]+")\\."+"("+t[i]+")\\."+"("+t[i]+")";var f=n++;t[f]="("+t[s]+")\\."+"("+t[s]+")\\."+"("+t[s]+")";var u=n++;t[u]="(?:"+t[i]+"|"+t[a]+")";var l=n++;t[l]="(?:"+t[s]+"|"+t[a]+")";var p=n++;t[p]="(?:-("+t[u]+"(?:\\."+t[u]+")*))";var c=n++;t[c]="(?:-?("+t[l]+"(?:\\."+t[l]+")*))";var h=n++;t[h]="[0-9A-Za-z-]+";var v=n++;t[v]="(?:\\+("+t[h]+"(?:\\."+t[h]+")*))";var m=n++;var g="v?"+t[o]+t[p]+"?"+t[v]+"?";t[m]="^"+g+"$";var w="[v=\\s]*"+t[f]+t[c]+"?"+t[v]+"?";var d=n++;t[d]="^"+w+"$";var y=n++;t[y]="((?:<|>)?=?)";var b=n++;t[b]=t[s]+"|x|X|\\*";var j=n++;t[j]=t[i]+"|x|X|\\*";var $=n++;t[$]="[v=\\s]*("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:"+t[p]+")?"+t[v]+"?"+")?)?";var k=n++;t[k]="[v=\\s]*("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:"+t[c]+")?"+t[v]+"?"+")?)?";var E=n++;t[E]="^"+t[y]+"\\s*"+t[$]+"$";var x=n++;t[x]="^"+t[y]+"\\s*"+t[k]+"$";var R=n++;t[R]="(?:~>?)";var S=n++;t[S]="(\\s*)"+t[R]+"\\s+";r[S]=new RegExp(t[S],"g");var V="$1~";var I=n++;t[I]="^"+t[R]+t[$]+"$";var T=n++;t[T]="^"+t[R]+t[k]+"$";var A=n++;t[A]="(?:\\^)";var C=n++;t[C]="(\\s*)"+t[A]+"\\s+";r[C]=new RegExp(t[C],"g");var M="$1^";var z=n++;t[z]="^"+t[A]+t[$]+"$";var N=n++;t[N]="^"+t[A]+t[k]+"$";var P=n++;t[P]="^"+t[y]+"\\s*("+w+")$|^$";var Z=n++;t[Z]="^"+t[y]+"\\s*("+g+")$|^$";var q=n++;t[q]="(\\s*)"+t[y]+"\\s*("+w+"|"+t[$]+")";r[q]=new RegExp(t[q],"g");var L="$1$2$3";var X=n++;t[X]="^\\s*("+t[$]+")"+"\\s+-\\s+"+"("+t[$]+")"+"\\s*$";var _=n++;t[_]="^\\s*("+t[k]+")"+"\\s+-\\s+"+"("+t[k]+")"+"\\s*$";var O=n++;t[O]="(<|>)?=?\\s*\\*";for(var B=0;B'};H.prototype.toString=function(){return this.version};H.prototype.compare=function(e){if(!(e instanceof H))e=new H(e,this.loose);return this.compareMain(e)||this.comparePre(e)};H.prototype.compareMain=function(e){if(!(e instanceof H))e=new H(e,this.loose);return Q(this.major,e.major)||Q(this.minor,e.minor)||Q(this.patch,e.patch)};H.prototype.comparePre=function(e){if(!(e instanceof H))e=new H(e,this.loose);if(this.prerelease.length&&!e.prerelease.length)return-1;else if(!this.prerelease.length&&e.prerelease.length)return 1;else if(!this.prerelease.length&&!e.prerelease.length)return 0;var r=0;do{var t=this.prerelease[r];var n=e.prerelease[r];if(t===undefined&&n===undefined)return 0;else if(n===undefined)return 1;else if(t===undefined)return-1;else if(t===n)continue;else return Q(t,n)}while(++r)};H.prototype.inc=function(e,r){switch(e){case"premajor":this.prerelease.length=0;this.patch=0;this.minor=0;this.major++;this.inc("pre",r);break;case"preminor":this.prerelease.length=0;this.patch=0;this.minor++;this.inc("pre",r);break;case"prepatch":this.prerelease.length=0;this.inc("patch",r);this.inc("pre",r);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",r);this.inc("pre",r);break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0;this.patch=0;this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0;this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{var t=this.prerelease.length;while(--t>=0){if(typeof this.prerelease[t]==="number"){this.prerelease[t]++;t=-2}}if(t===-1)this.prerelease.push(0)}if(r){if(this.prerelease[0]===r){if(isNaN(this.prerelease[1]))this.prerelease=[r,0]}else this.prerelease=[r,0]}break;default:throw new Error("invalid increment argument: "+e)}this.format();return this};e.inc=J;function J(e,r,t,n){if(typeof t==="string"){n=t;t=undefined}try{return new H(e,t).inc(r,n).version}catch(i){return null}}e.compareIdentifiers=Q;var K=/^[0-9]+$/;function Q(e,r){var t=K.test(e);var n=K.test(r);if(t&&n){e=+e;r=+r}return t&&!n?-1:n&&!t?1:er?1:0}e.rcompareIdentifiers=U;function U(e,r){return Q(r,e)}e.compare=W;function W(e,r,t){return new H(e,t).compare(r)}e.compareLoose=Y;function Y(e,r){return W(e,r,true)}e.rcompare=er;function er(e,r,t){return W(r,e,t)}e.sort=rr;function rr(r,t){return r.sort(function(r,n){return e.compare(r,n,t)})}e.rsort=tr;function tr(r,t){return r.sort(function(r,n){return e.rcompare(r,n,t)})}e.gt=nr;function nr(e,r,t){return W(e,r,t)>0}e.lt=ir;function ir(e,r,t){return W(e,r,t)<0}e.eq=sr;function sr(e,r,t){return W(e,r,t)===0}e.neq=ar;function ar(e,r,t){return W(e,r,t)!==0}e.gte=or;function or(e,r,t){return W(e,r,t)>=0}e.lte=fr;function fr(e,r,t){return W(e,r,t)<=0}e.cmp=ur;function ur(e,r,t,n){var i;switch(r){case"===":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e===t;break;case"!==":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e!==t;break;case"":case"=":case"==":i=sr(e,t,n);break;case"!=":i=ar(e,t,n);break;case">":i=nr(e,t,n);break;case">=":i=or(e,t,n);break;case"<":i=ir(e,t,n);break;case"<=":i=fr(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return i}e.Comparator=lr;function lr(e,r){if(e instanceof lr){if(e.loose===r)return e;else e=e.value}if(!(this instanceof lr))return new lr(e,r);this.loose=r;this.parse(e);if(this.semver===pr)this.value="";else this.value=this.operator+this.semver.version}var pr={};lr.prototype.parse=function(e){var t=this.loose?r[P]:r[Z];var n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=n[1];if(this.operator==="=")this.operator="";if(!n[2])this.semver=pr;else this.semver=new H(n[2],this.loose)};lr.prototype.inspect=function(){return''};lr.prototype.toString=function(){return this.value};lr.prototype.test=function(e){if(this.semver===pr)return true;if(typeof e==="string")e=new H(e,this.loose);return ur(e,this.operator,this.semver,this.loose)};e.Range=cr;function cr(e,r){if(e instanceof cr&&e.loose===r)return e;if(!(this instanceof cr))return new cr(e,r);this.loose=r;this.raw=e;this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length});if(!this.set.length){throw new TypeError("Invalid SemVer Range: "+e)}this.format()}cr.prototype.inspect=function(){return''};cr.prototype.format=function(){this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim();return this.range};cr.prototype.toString=function(){return this.range};cr.prototype.parseRange=function(e){var t=this.loose;e=e.trim();var n=t?r[_]:r[X];e=e.replace(n,kr);e=e.replace(r[q],L);e=e.replace(r[S],V);e=e.replace(r[C],M);e=e.split(/\s+/).join(" ");var i=t?r[P]:r[Z];var s=e.split(" ").map(function(e){return vr(e,t)}).join(" ").split(/\s+/);if(this.loose){s=s.filter(function(e){return!!e.match(i)})}s=s.map(function(e){return new lr(e,t)});return s};e.toComparators=hr;function hr(e,r){return new cr(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function vr(e,r){e=dr(e,r);e=gr(e,r);e=br(e,r);e=$r(e,r);return e}function mr(e){return!e||e.toLowerCase()==="x"||e==="*"}function gr(e,r){return e.trim().split(/\s+/).map(function(e){return wr(e,r)}).join(" ")}function wr(e,t){var n=t?r[T]:r[I];return e.replace(n,function(e,r,t,n,i){var s;if(mr(r))s="";else if(mr(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(mr(n))s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else if(i){if(i.charAt(0)!=="-")i="-"+i;s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0";return s})}function dr(e,r){return e.trim().split(/\s+/).map(function(e){return yr(e,r)}).join(" ")}function yr(e,t){var n=t?r[N]:r[z];return e.replace(n,function(e,r,t,n,i){var s;if(mr(r))s="";else if(mr(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(mr(n)){if(r==="0")s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else s=">="+r+"."+t+".0 <"+(+r+1)+".0.0"}else if(i){if(i.charAt(0)!=="-")i="-"+i;if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+i+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.0"}else{if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+(+r+1)+".0.0"}return s})}function br(e,r){return e.split(/\s+/).map(function(e){return jr(e,r)}).join(" ")}function jr(e,t){e=e.trim();var n=t?r[x]:r[E];return e.replace(n,function(e,r,t,n,i,s){var a=mr(t);var o=a||mr(n);var f=o||mr(i);var u=f;if(r==="="&&u)r="";if(a){if(r===">"||r==="<"){e="<0.0.0"}else{e="*"}}else if(r&&u){if(o)n=0;if(f)i=0;if(r===">"){r=">=";if(o){t=+t+1;n=0;i=0}else if(f){n=+n+1;i=0}}else if(r==="<="){r="<";if(o)t=+t+1;else n=+n+1}e=r+t+"."+n+"."+i}else if(o){e=">="+t+".0.0 <"+(+t+1)+".0.0"}else if(f){e=">="+t+"."+n+".0 <"+t+"."+(+n+1)+".0"}return e})}function $r(e,t){return e.trim().replace(r[O],"")}function kr(e,r,t,n,i,s,a,o,f,u,l,p,c){if(mr(t))r="";else if(mr(n))r=">="+t+".0.0";else if(mr(i))r=">="+t+"."+n+".0";else r=">="+r;if(mr(f))o="";else if(mr(u))o="<"+(+f+1)+".0.0";else if(mr(l))o="<"+f+"."+(+u+1)+".0";else if(p)o="<="+f+"."+u+"."+l+"-"+p;else o="<="+o;return(r+" "+o).trim()}cr.prototype.test=function(e){if(!e)return false;if(typeof e==="string")e=new H(e,this.loose);for(var r=0;r0){var n=e[t].semver;if(n.major===r.major&&n.minor===r.minor&&n.patch===r.patch)return true}}return false}return true}e.satisfies=xr;function xr(e,r,t){try{r=new cr(r,t)}catch(n){return false}return r.test(e)}e.maxSatisfying=Rr;function Rr(e,r,t){return e.filter(function(e){return xr(e,r,t)}).sort(function(e,r){return er(e,r,t)})[0]||null}e.validRange=Sr;function Sr(e,r){try{return new cr(e,r).range||"*"}catch(t){return null}}e.ltr=Vr;function Vr(e,r,t){return Tr(e,r,"<",t)}e.gtr=Ir;function Ir(e,r,t){return Tr(e,r,">",t)}e.outside=Tr;function Tr(e,r,t,n){e=new H(e,n);r=new cr(r,n);var i,s,a,o,f;switch(t){case">":i=nr;s=fr;a=ir;o=">";f=">=";break;case"<":i=ir;s=or;a=nr;o="<";f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(xr(e,r,n)){return false}for(var u=0;udt0q4(Yo4@WR9$6dMWw*!vrHKZM5 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 yVkXE&u@J#MUMN diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/amd.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/amd.js deleted file mode 100644 index a604134..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/amd.js +++ /dev/null @@ -1,15 +0,0 @@ -var tap = require('tap'); -var test = tap.test; - -test('amd', function(t) { - global.define = define; - define.amd = true; - var defined = null; - function define(stuff) { - defined = stuff; - } - var fromRequire = require('../'); - t.ok(defined, 'amd function called'); - t.equal(fromRequire, defined, 'amd stuff same as require stuff'); - t.end(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/clean.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/clean.js deleted file mode 100644 index 9e268de..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/clean.js +++ /dev/null @@ -1,29 +0,0 @@ -var tap = require('tap'); -var test = tap.test; -var semver = require('../semver.js'); -var clean = semver.clean; - -test('\nclean tests', function(t) { - // [range, version] - // Version should be detectable despite extra characters - [ - ['1.2.3', '1.2.3'], - [' 1.2.3 ', '1.2.3'], - [' 1.2.3-4 ', '1.2.3-4'], - [' 1.2.3-pre ', '1.2.3-pre'], - [' =v1.2.3 ', '1.2.3'], - ['v1.2.3', '1.2.3'], - [' v1.2.3 ', '1.2.3'], - ['\t1.2.3', '1.2.3'], - ['>1.2.3', null], - ['~1.2.3', null], - ['<=1.2.3', null], - ['1.2.x', null] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var msg = 'clean(' + range + ') = ' + version; - t.equal(clean(range), version, msg); - }); - t.end(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/gtr.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/gtr.js deleted file mode 100644 index bbb8789..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/gtr.js +++ /dev/null @@ -1,173 +0,0 @@ -var tap = require('tap'); -var test = tap.test; -var semver = require('../semver.js'); -var gtr = semver.gtr; - -test('\ngtr tests', function(t) { - // [range, version, loose] - // Version should be greater than range - [ - ['~1.2.2', '1.3.0'], - ['~0.6.1-1', '0.7.1-1'], - ['1.0.0 - 2.0.0', '2.0.1'], - ['1.0.0', '1.0.1-beta1'], - ['1.0.0', '2.0.0'], - ['<=2.0.0', '2.1.1'], - ['<=2.0.0', '3.2.9'], - ['<2.0.0', '2.0.0'], - ['0.1.20 || 1.2.4', '1.2.5'], - ['2.x.x', '3.0.0'], - ['1.2.x', '1.3.0'], - ['1.2.x || 2.x', '3.0.0'], - ['2.*.*', '5.0.1'], - ['1.2.*', '1.3.3'], - ['1.2.* || 2.*', '4.0.0'], - ['2', '3.0.0'], - ['2.3', '2.4.2'], - ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.5.5'], - ['~>3.2.1', '3.3.0'], // >=3.2.1 <3.3.0 - ['~1', '2.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '2.2.4'], - ['~> 1', '3.2.3'], - ['~1.0', '1.1.2'], // >=1.0.0 <1.1.0 - ['~ 1.0', '1.1.0'], - ['<1.2', '1.2.0'], - ['< 1.2', '1.2.1'], - ['1', '2.0.0beta', true], - ['~v0.5.4-pre', '0.6.0'], - ['~v0.5.4-pre', '0.6.1-pre'], - ['=0.7.x', '0.8.0'], - ['=0.7.x', '0.8.0-asdf'], - ['<0.7.x', '0.7.0'], - ['~1.2.2', '1.3.0'], - ['1.0.0 - 2.0.0', '2.2.3'], - ['1.0.0', '1.0.1'], - ['<=2.0.0', '3.0.0'], - ['<=2.0.0', '2.9999.9999'], - ['<=2.0.0', '2.2.9'], - ['<2.0.0', '2.9999.9999'], - ['<2.0.0', '2.2.9'], - ['2.x.x', '3.1.3'], - ['1.2.x', '1.3.3'], - ['1.2.x || 2.x', '3.1.3'], - ['2.*.*', '3.1.3'], - ['1.2.*', '1.3.3'], - ['1.2.* || 2.*', '3.1.3'], - ['2', '3.1.2'], - ['2.3', '2.4.1'], - ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0 - ['~>3.2.1', '3.3.2'], // >=3.2.1 <3.3.0 - ['~1', '2.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '2.2.3'], - ['~1.0', '1.1.0'], // >=1.0.0 <1.1.0 - ['<1', '1.0.0'], - ['1', '2.0.0beta', true], - ['<1', '1.0.0beta', true], - ['< 1', '1.0.0beta', true], - ['=0.7.x', '0.8.2'], - ['<0.7.x', '0.7.2'] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var loose = tuple[2] || false; - var msg = 'gtr(' + version + ', ' + range + ', ' + loose + ')'; - t.ok(gtr(version, range, loose), msg); - }); - t.end(); -}); - -test('\nnegative gtr tests', function(t) { - // [range, version, loose] - // Version should NOT be greater than range - [ - ['~0.6.1-1', '0.6.1-1'], - ['1.0.0 - 2.0.0', '1.2.3'], - ['1.0.0 - 2.0.0', '0.9.9'], - ['1.0.0', '1.0.0'], - ['>=*', '0.2.4'], - ['', '1.0.0', true], - ['*', '1.2.3'], - ['*', 'v1.2.3-foo'], - ['>=1.0.0', '1.0.0'], - ['>=1.0.0', '1.0.1'], - ['>=1.0.0', '1.1.0'], - ['>1.0.0', '1.0.1'], - ['>1.0.0', '1.1.0'], - ['<=2.0.0', '2.0.0'], - ['<=2.0.0', '1.9999.9999'], - ['<=2.0.0', '0.2.9'], - ['<2.0.0', '1.9999.9999'], - ['<2.0.0', '0.2.9'], - ['>= 1.0.0', '1.0.0'], - ['>= 1.0.0', '1.0.1'], - ['>= 1.0.0', '1.1.0'], - ['> 1.0.0', '1.0.1'], - ['> 1.0.0', '1.1.0'], - ['<= 2.0.0', '2.0.0'], - ['<= 2.0.0', '1.9999.9999'], - ['<= 2.0.0', '0.2.9'], - ['< 2.0.0', '1.9999.9999'], - ['<\t2.0.0', '0.2.9'], - ['>=0.1.97', 'v0.1.97'], - ['>=0.1.97', '0.1.97'], - ['0.1.20 || 1.2.4', '1.2.4'], - ['0.1.20 || >1.2.4', '1.2.4'], - ['0.1.20 || 1.2.4', '1.2.3'], - ['0.1.20 || 1.2.4', '0.1.20'], - ['>=0.2.3 || <0.0.1', '0.0.0'], - ['>=0.2.3 || <0.0.1', '0.2.3'], - ['>=0.2.3 || <0.0.1', '0.2.4'], - ['||', '1.3.4'], - ['2.x.x', '2.1.3'], - ['1.2.x', '1.2.3'], - ['1.2.x || 2.x', '2.1.3'], - ['1.2.x || 2.x', '1.2.3'], - ['x', '1.2.3'], - ['2.*.*', '2.1.3'], - ['1.2.*', '1.2.3'], - ['1.2.* || 2.*', '2.1.3'], - ['1.2.* || 2.*', '1.2.3'], - ['1.2.* || 2.*', '1.2.3'], - ['*', '1.2.3'], - ['2', '2.1.2'], - ['2.3', '2.3.1'], - ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.4.5'], - ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0 - ['~1', '1.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '1.2.3'], - ['~> 1', '1.2.3'], - ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0 - ['~ 1.0', '1.0.2'], - ['>=1', '1.0.0'], - ['>= 1', '1.0.0'], - ['<1.2', '1.1.1'], - ['< 1.2', '1.1.1'], - ['1', '1.0.0beta', true], - ['~v0.5.4-pre', '0.5.5'], - ['~v0.5.4-pre', '0.5.4'], - ['=0.7.x', '0.7.2'], - ['>=0.7.x', '0.7.2'], - ['=0.7.x', '0.7.0-asdf'], - ['>=0.7.x', '0.7.0-asdf'], - ['<=0.7.x', '0.6.2'], - ['>0.2.3 >0.2.4 <=0.2.5', '0.2.5'], - ['>=0.2.3 <=0.2.4', '0.2.4'], - ['1.0.0 - 2.0.0', '2.0.0'], - ['^1', '0.0.0-0'], - ['^3.0.0', '2.0.0'], - ['^1.0.0 || ~2.0.1', '2.0.0'], - ['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'], - ['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true], - ['^0.1.0 || ~3.0.1 || 5.0.0', '5.0.0-0', true], - ['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0'] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var loose = tuple[2] || false; - var msg = '!gtr(' + version + ', ' + range + ', ' + loose + ')'; - t.notOk(gtr(version, range, loose), msg); - }); - t.end(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/index.js deleted file mode 100644 index de8acae..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/index.js +++ /dev/null @@ -1,653 +0,0 @@ -'use strict'; - -var tap = require('tap'); -var test = tap.test; -var semver = require('../semver.js'); -var eq = semver.eq; -var gt = semver.gt; -var lt = semver.lt; -var neq = semver.neq; -var cmp = semver.cmp; -var gte = semver.gte; -var lte = semver.lte; -var satisfies = semver.satisfies; -var validRange = semver.validRange; -var inc = semver.inc; -var replaceStars = semver.replaceStars; -var toComparators = semver.toComparators; -var SemVer = semver.SemVer; -var Range = semver.Range; - -test('\ncomparison tests', function(t) { - // [version1, version2] - // version1 should be greater than version2 - [['0.0.0', '0.0.0-foo'], - ['0.0.1', '0.0.0'], - ['1.0.0', '0.9.9'], - ['0.10.0', '0.9.0'], - ['0.99.0', '0.10.0'], - ['2.0.0', '1.2.3'], - ['v0.0.0', '0.0.0-foo', true], - ['v0.0.1', '0.0.0', true], - ['v1.0.0', '0.9.9', true], - ['v0.10.0', '0.9.0', true], - ['v0.99.0', '0.10.0', true], - ['v2.0.0', '1.2.3', true], - ['0.0.0', 'v0.0.0-foo', true], - ['0.0.1', 'v0.0.0', true], - ['1.0.0', 'v0.9.9', true], - ['0.10.0', 'v0.9.0', true], - ['0.99.0', 'v0.10.0', true], - ['2.0.0', 'v1.2.3', true], - ['1.2.3', '1.2.3-asdf'], - ['1.2.3', '1.2.3-4'], - ['1.2.3', '1.2.3-4-foo'], - ['1.2.3-5-foo', '1.2.3-5'], - ['1.2.3-5', '1.2.3-4'], - ['1.2.3-5-foo', '1.2.3-5-Foo'], - ['3.0.0', '2.7.2+asdf'], - ['1.2.3-a.10', '1.2.3-a.5'], - ['1.2.3-a.b', '1.2.3-a.5'], - ['1.2.3-a.b', '1.2.3-a'], - ['1.2.3-a.b.c.10.d.5', '1.2.3-a.b.c.5.d.100'] - ].forEach(function(v) { - var v0 = v[0]; - var v1 = v[1]; - var loose = v[2]; - t.ok(gt(v0, v1, loose), "gt('" + v0 + "', '" + v1 + "')"); - t.ok(lt(v1, v0, loose), "lt('" + v1 + "', '" + v0 + "')"); - t.ok(!gt(v1, v0, loose), "!gt('" + v1 + "', '" + v0 + "')"); - t.ok(!lt(v0, v1, loose), "!lt('" + v0 + "', '" + v1 + "')"); - t.ok(eq(v0, v0, loose), "eq('" + v0 + "', '" + v0 + "')"); - t.ok(eq(v1, v1, loose), "eq('" + v1 + "', '" + v1 + "')"); - t.ok(neq(v0, v1, loose), "neq('" + v0 + "', '" + v1 + "')"); - t.ok(cmp(v1, '==', v1, loose), "cmp('" + v1 + "' == '" + v1 + "')"); - t.ok(cmp(v0, '>=', v1, loose), "cmp('" + v0 + "' >= '" + v1 + "')"); - t.ok(cmp(v1, '<=', v0, loose), "cmp('" + v1 + "' <= '" + v0 + "')"); - t.ok(cmp(v0, '!=', v1, loose), "cmp('" + v0 + "' != '" + v1 + "')"); - }); - t.end(); -}); - -test('\nequality tests', function(t) { - // [version1, version2] - // version1 should be equivalent to version2 - [['1.2.3', 'v1.2.3', true], - ['1.2.3', '=1.2.3', true], - ['1.2.3', 'v 1.2.3', true], - ['1.2.3', '= 1.2.3', true], - ['1.2.3', ' v1.2.3', true], - ['1.2.3', ' =1.2.3', true], - ['1.2.3', ' v 1.2.3', true], - ['1.2.3', ' = 1.2.3', true], - ['1.2.3-0', 'v1.2.3-0', true], - ['1.2.3-0', '=1.2.3-0', true], - ['1.2.3-0', 'v 1.2.3-0', true], - ['1.2.3-0', '= 1.2.3-0', true], - ['1.2.3-0', ' v1.2.3-0', true], - ['1.2.3-0', ' =1.2.3-0', true], - ['1.2.3-0', ' v 1.2.3-0', true], - ['1.2.3-0', ' = 1.2.3-0', true], - ['1.2.3-1', 'v1.2.3-1', true], - ['1.2.3-1', '=1.2.3-1', true], - ['1.2.3-1', 'v 1.2.3-1', true], - ['1.2.3-1', '= 1.2.3-1', true], - ['1.2.3-1', ' v1.2.3-1', true], - ['1.2.3-1', ' =1.2.3-1', true], - ['1.2.3-1', ' v 1.2.3-1', true], - ['1.2.3-1', ' = 1.2.3-1', true], - ['1.2.3-beta', 'v1.2.3-beta', true], - ['1.2.3-beta', '=1.2.3-beta', true], - ['1.2.3-beta', 'v 1.2.3-beta', true], - ['1.2.3-beta', '= 1.2.3-beta', true], - ['1.2.3-beta', ' v1.2.3-beta', true], - ['1.2.3-beta', ' =1.2.3-beta', true], - ['1.2.3-beta', ' v 1.2.3-beta', true], - ['1.2.3-beta', ' = 1.2.3-beta', true], - ['1.2.3-beta+build', ' = 1.2.3-beta+otherbuild', true], - ['1.2.3+build', ' = 1.2.3+otherbuild', true], - ['1.2.3-beta+build', '1.2.3-beta+otherbuild'], - ['1.2.3+build', '1.2.3+otherbuild'], - [' v1.2.3+build', '1.2.3+otherbuild'] - ].forEach(function(v) { - var v0 = v[0]; - var v1 = v[1]; - var loose = v[2]; - t.ok(eq(v0, v1, loose), "eq('" + v0 + "', '" + v1 + "')"); - t.ok(!neq(v0, v1, loose), "!neq('" + v0 + "', '" + v1 + "')"); - t.ok(cmp(v0, '==', v1, loose), 'cmp(' + v0 + '==' + v1 + ')'); - t.ok(!cmp(v0, '!=', v1, loose), '!cmp(' + v0 + '!=' + v1 + ')'); - t.ok(!cmp(v0, '===', v1, loose), '!cmp(' + v0 + '===' + v1 + ')'); - t.ok(cmp(v0, '!==', v1, loose), 'cmp(' + v0 + '!==' + v1 + ')'); - t.ok(!gt(v0, v1, loose), "!gt('" + v0 + "', '" + v1 + "')"); - t.ok(gte(v0, v1, loose), "gte('" + v0 + "', '" + v1 + "')"); - t.ok(!lt(v0, v1, loose), "!lt('" + v0 + "', '" + v1 + "')"); - t.ok(lte(v0, v1, loose), "lte('" + v0 + "', '" + v1 + "')"); - }); - t.end(); -}); - - -test('\nrange tests', function(t) { - // [range, version] - // version should be included by range - [['1.0.0 - 2.0.0', '1.2.3'], - ['^1.2.3+build', '1.2.3'], - ['^1.2.3+build', '1.3.0'], - ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3'], - ['1.2.3pre+asdf - 2.4.3-pre+asdf', '1.2.3', true], - ['1.2.3-pre+asdf - 2.4.3pre+asdf', '1.2.3', true], - ['1.2.3pre+asdf - 2.4.3pre+asdf', '1.2.3', true], - ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3-pre.2'], - ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '2.4.3-alpha'], - ['1.2.3+asdf - 2.4.3+asdf', '1.2.3'], - ['1.0.0', '1.0.0'], - ['>=*', '0.2.4'], - ['', '1.0.0'], - ['*', '1.2.3'], - ['*', 'v1.2.3-foo', true], - ['>=1.0.0', '1.0.0'], - ['>=1.0.0', '1.0.1'], - ['>=1.0.0', '1.1.0'], - ['>1.0.0', '1.0.1'], - ['>1.0.0', '1.1.0'], - ['<=2.0.0', '2.0.0'], - ['<=2.0.0', '1.9999.9999'], - ['<=2.0.0', '0.2.9'], - ['<2.0.0', '1.9999.9999'], - ['<2.0.0', '0.2.9'], - ['>= 1.0.0', '1.0.0'], - ['>= 1.0.0', '1.0.1'], - ['>= 1.0.0', '1.1.0'], - ['> 1.0.0', '1.0.1'], - ['> 1.0.0', '1.1.0'], - ['<= 2.0.0', '2.0.0'], - ['<= 2.0.0', '1.9999.9999'], - ['<= 2.0.0', '0.2.9'], - ['< 2.0.0', '1.9999.9999'], - ['<\t2.0.0', '0.2.9'], - ['>=0.1.97', 'v0.1.97', true], - ['>=0.1.97', '0.1.97'], - ['0.1.20 || 1.2.4', '1.2.4'], - ['>=0.2.3 || <0.0.1', '0.0.0'], - ['>=0.2.3 || <0.0.1', '0.2.3'], - ['>=0.2.3 || <0.0.1', '0.2.4'], - ['||', '1.3.4'], - ['2.x.x', '2.1.3'], - ['1.2.x', '1.2.3'], - ['1.2.x || 2.x', '2.1.3'], - ['1.2.x || 2.x', '1.2.3'], - ['x', '1.2.3'], - ['2.*.*', '2.1.3'], - ['1.2.*', '1.2.3'], - ['1.2.* || 2.*', '2.1.3'], - ['1.2.* || 2.*', '1.2.3'], - ['*', '1.2.3'], - ['2', '2.1.2'], - ['2.3', '2.3.1'], - ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.4.5'], - ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0, - ['~1', '1.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '1.2.3'], - ['~> 1', '1.2.3'], - ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0, - ['~ 1.0', '1.0.2'], - ['~ 1.0.3', '1.0.12'], - ['>=1', '1.0.0'], - ['>= 1', '1.0.0'], - ['<1.2', '1.1.1'], - ['< 1.2', '1.1.1'], - ['~v0.5.4-pre', '0.5.5'], - ['~v0.5.4-pre', '0.5.4'], - ['=0.7.x', '0.7.2'], - ['<=0.7.x', '0.7.2'], - ['>=0.7.x', '0.7.2'], - ['<=0.7.x', '0.6.2'], - ['~1.2.1 >=1.2.3', '1.2.3'], - ['~1.2.1 =1.2.3', '1.2.3'], - ['~1.2.1 1.2.3', '1.2.3'], - ['~1.2.1 >=1.2.3 1.2.3', '1.2.3'], - ['~1.2.1 1.2.3 >=1.2.3', '1.2.3'], - ['~1.2.1 1.2.3', '1.2.3'], - ['>=1.2.1 1.2.3', '1.2.3'], - ['1.2.3 >=1.2.1', '1.2.3'], - ['>=1.2.3 >=1.2.1', '1.2.3'], - ['>=1.2.1 >=1.2.3', '1.2.3'], - ['>=1.2', '1.2.8'], - ['^1.2.3', '1.8.1'], - ['^0.1.2', '0.1.2'], - ['^0.1', '0.1.2'], - ['^1.2', '1.4.2'], - ['^1.2 ^1', '1.4.2'], - ['^1.2.3-alpha', '1.2.3-pre'], - ['^1.2.0-alpha', '1.2.0-pre'], - ['^0.0.1-alpha', '0.0.1-beta'] - ].forEach(function(v) { - var range = v[0]; - var ver = v[1]; - var loose = v[2]; - t.ok(satisfies(ver, range, loose), range + ' satisfied by ' + ver); - }); - t.end(); -}); - -test('\nnegative range tests', function(t) { - // [range, version] - // version should not be included by range - [['1.0.0 - 2.0.0', '2.2.3'], - ['1.2.3+asdf - 2.4.3+asdf', '1.2.3-pre.2'], - ['1.2.3+asdf - 2.4.3+asdf', '2.4.3-alpha'], - ['^1.2.3+build', '2.0.0'], - ['^1.2.3+build', '1.2.0'], - ['^1.2.3', '1.2.3-pre'], - ['^1.2', '1.2.0-pre'], - ['>1.2', '1.3.0-beta'], - ['<=1.2.3', '1.2.3-beta'], - ['^1.2.3', '1.2.3-beta'], - ['=0.7.x', '0.7.0-asdf'], - ['>=0.7.x', '0.7.0-asdf'], - ['1', '1.0.0beta', true], - ['<1', '1.0.0beta', true], - ['< 1', '1.0.0beta', true], - ['1.0.0', '1.0.1'], - ['>=1.0.0', '0.0.0'], - ['>=1.0.0', '0.0.1'], - ['>=1.0.0', '0.1.0'], - ['>1.0.0', '0.0.1'], - ['>1.0.0', '0.1.0'], - ['<=2.0.0', '3.0.0'], - ['<=2.0.0', '2.9999.9999'], - ['<=2.0.0', '2.2.9'], - ['<2.0.0', '2.9999.9999'], - ['<2.0.0', '2.2.9'], - ['>=0.1.97', 'v0.1.93', true], - ['>=0.1.97', '0.1.93'], - ['0.1.20 || 1.2.4', '1.2.3'], - ['>=0.2.3 || <0.0.1', '0.0.3'], - ['>=0.2.3 || <0.0.1', '0.2.2'], - ['2.x.x', '1.1.3'], - ['2.x.x', '3.1.3'], - ['1.2.x', '1.3.3'], - ['1.2.x || 2.x', '3.1.3'], - ['1.2.x || 2.x', '1.1.3'], - ['2.*.*', '1.1.3'], - ['2.*.*', '3.1.3'], - ['1.2.*', '1.3.3'], - ['1.2.* || 2.*', '3.1.3'], - ['1.2.* || 2.*', '1.1.3'], - ['2', '1.1.2'], - ['2.3', '2.4.1'], - ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.3.9'], - ['~>3.2.1', '3.3.2'], // >=3.2.1 <3.3.0 - ['~>3.2.1', '3.2.0'], // >=3.2.1 <3.3.0 - ['~1', '0.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '2.2.3'], - ['~1.0', '1.1.0'], // >=1.0.0 <1.1.0 - ['<1', '1.0.0'], - ['>=1.2', '1.1.1'], - ['1', '2.0.0beta', true], - ['~v0.5.4-beta', '0.5.4-alpha'], - ['=0.7.x', '0.8.2'], - ['>=0.7.x', '0.6.2'], - ['<0.7.x', '0.7.2'], - ['<1.2.3', '1.2.3-beta'], - ['=1.2.3', '1.2.3-beta'], - ['>1.2', '1.2.8'], - ['^1.2.3', '2.0.0-alpha'], - ['^1.2.3', '1.2.2'], - ['^1.2', '1.1.9'], - // invalid ranges never satisfied! - ['blerg', '1.2.3'], - ['git+https://user:password0123@github.com/foo', '123.0.0', true], - ['^1.2.3', '2.0.0-pre'] - ].forEach(function(v) { - var range = v[0]; - var ver = v[1]; - var loose = v[2]; - var found = satisfies(ver, range, loose); - t.ok(!found, ver + ' not satisfied by ' + range); - }); - t.end(); -}); - -test('\nincrement versions test', function(t) { -// [version, inc, result, identifier] -// inc(version, inc) -> result - [['1.2.3', 'major', '2.0.0'], - ['1.2.3', 'minor', '1.3.0'], - ['1.2.3', 'patch', '1.2.4'], - ['1.2.3tag', 'major', '2.0.0', true], - ['1.2.3-tag', 'major', '2.0.0'], - ['1.2.3', 'fake', null], - ['1.2.0-0', 'patch', '1.2.0'], - ['fake', 'major', null], - ['1.2.3-4', 'major', '2.0.0'], - ['1.2.3-4', 'minor', '1.3.0'], - ['1.2.3-4', 'patch', '1.2.3'], - ['1.2.3-alpha.0.beta', 'major', '2.0.0'], - ['1.2.3-alpha.0.beta', 'minor', '1.3.0'], - ['1.2.3-alpha.0.beta', 'patch', '1.2.3'], - ['1.2.4', 'prerelease', '1.2.5-0'], - ['1.2.3-0', 'prerelease', '1.2.3-1'], - ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1'], - ['1.2.3-alpha.1', 'prerelease', '1.2.3-alpha.2'], - ['1.2.3-alpha.2', 'prerelease', '1.2.3-alpha.3'], - ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-alpha.1.beta'], - ['1.2.3-alpha.1.beta', 'prerelease', '1.2.3-alpha.2.beta'], - ['1.2.3-alpha.2.beta', 'prerelease', '1.2.3-alpha.3.beta'], - ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-alpha.10.1.beta'], - ['1.2.3-alpha.10.1.beta', 'prerelease', '1.2.3-alpha.10.2.beta'], - ['1.2.3-alpha.10.2.beta', 'prerelease', '1.2.3-alpha.10.3.beta'], - ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-alpha.10.beta.1'], - ['1.2.3-alpha.10.beta.1', 'prerelease', '1.2.3-alpha.10.beta.2'], - ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3'], - ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta'], - ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta'], - ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta'], - ['1.2.0', 'prepatch', '1.2.1-0'], - ['1.2.0-1', 'prepatch', '1.2.1-0'], - ['1.2.0', 'preminor', '1.3.0-0'], - ['1.2.3-1', 'preminor', '1.3.0-0'], - ['1.2.0', 'premajor', '2.0.0-0'], - ['1.2.3-1', 'premajor', '2.0.0-0'], - ['1.2.0-1', 'minor', '1.2.0'], - ['1.0.0-1', 'major', '1.0.0'], - - ['1.2.3', 'major', '2.0.0', false, 'dev'], - ['1.2.3', 'minor', '1.3.0', false, 'dev'], - ['1.2.3', 'patch', '1.2.4', false, 'dev'], - ['1.2.3tag', 'major', '2.0.0', true, 'dev'], - ['1.2.3-tag', 'major', '2.0.0', false, 'dev'], - ['1.2.3', 'fake', null, false, 'dev'], - ['1.2.0-0', 'patch', '1.2.0', false, 'dev'], - ['fake', 'major', null, false, 'dev'], - ['1.2.3-4', 'major', '2.0.0', false, 'dev'], - ['1.2.3-4', 'minor', '1.3.0', false, 'dev'], - ['1.2.3-4', 'patch', '1.2.3', false, 'dev'], - ['1.2.3-alpha.0.beta', 'major', '2.0.0', false, 'dev'], - ['1.2.3-alpha.0.beta', 'minor', '1.3.0', false, 'dev'], - ['1.2.3-alpha.0.beta', 'patch', '1.2.3', false, 'dev'], - ['1.2.4', 'prerelease', '1.2.5-dev.0', false, 'dev'], - ['1.2.3-0', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.0', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1', false, 'alpha'], - ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-alpha.1.beta', false, 'alpha'], - ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-alpha.10.1.beta', false, 'alpha'], - ['1.2.3-alpha.10.1.beta', 'prerelease', '1.2.3-alpha.10.2.beta', false, 'alpha'], - ['1.2.3-alpha.10.2.beta', 'prerelease', '1.2.3-alpha.10.3.beta', false, 'alpha'], - ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-alpha.10.beta.1', false, 'alpha'], - ['1.2.3-alpha.10.beta.1', 'prerelease', '1.2.3-alpha.10.beta.2', false, 'alpha'], - ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3', false, 'alpha'], - ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta', false, 'alpha'], - ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta', false, 'alpha'], - ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta', false, 'alpha'], - ['1.2.0', 'prepatch', '1.2.1-dev.0', 'dev'], - ['1.2.0-1', 'prepatch', '1.2.1-dev.0', 'dev'], - ['1.2.0', 'preminor', '1.3.0-dev.0', 'dev'], - ['1.2.3-1', 'preminor', '1.3.0-dev.0', 'dev'], - ['1.2.0', 'premajor', '2.0.0-dev.0', 'dev'], - ['1.2.3-1', 'premajor', '2.0.0-dev.0', 'dev'], - ['1.2.0-1', 'minor', '1.2.0', 'dev'], - ['1.0.0-1', 'major', '1.0.0', 'dev'], - ['1.2.3-dev.bar', 'prerelease', '1.2.3-dev.0', false, 'dev'] - - ].forEach(function(v) { - var pre = v[0]; - var what = v[1]; - var wanted = v[2]; - var loose = v[3]; - var id = v[4]; - var found = inc(pre, what, loose, id); - var cmd = 'inc(' + pre + ', ' + what + ', ' + id + ')'; - t.equal(found, wanted, cmd + ' === ' + wanted); - }); - - t.end(); -}); - -test('\nvalid range test', function(t) { - // [range, result] - // validRange(range) -> result - // translate ranges into their canonical form - [['1.0.0 - 2.0.0', '>=1.0.0 <=2.0.0'], - ['1.0.0', '1.0.0'], - ['>=*', '*'], - ['', '*'], - ['*', '*'], - ['*', '*'], - ['>=1.0.0', '>=1.0.0'], - ['>1.0.0', '>1.0.0'], - ['<=2.0.0', '<=2.0.0'], - ['1', '>=1.0.0 <2.0.0'], - ['<=2.0.0', '<=2.0.0'], - ['<=2.0.0', '<=2.0.0'], - ['<2.0.0', '<2.0.0'], - ['<2.0.0', '<2.0.0'], - ['>= 1.0.0', '>=1.0.0'], - ['>= 1.0.0', '>=1.0.0'], - ['>= 1.0.0', '>=1.0.0'], - ['> 1.0.0', '>1.0.0'], - ['> 1.0.0', '>1.0.0'], - ['<= 2.0.0', '<=2.0.0'], - ['<= 2.0.0', '<=2.0.0'], - ['<= 2.0.0', '<=2.0.0'], - ['< 2.0.0', '<2.0.0'], - ['< 2.0.0', '<2.0.0'], - ['>=0.1.97', '>=0.1.97'], - ['>=0.1.97', '>=0.1.97'], - ['0.1.20 || 1.2.4', '0.1.20||1.2.4'], - ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'], - ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'], - ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'], - ['||', '||'], - ['2.x.x', '>=2.0.0 <3.0.0'], - ['1.2.x', '>=1.2.0 <1.3.0'], - ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'], - ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'], - ['x', '*'], - ['2.*.*', '>=2.0.0 <3.0.0'], - ['1.2.*', '>=1.2.0 <1.3.0'], - ['1.2.* || 2.*', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'], - ['*', '*'], - ['2', '>=2.0.0 <3.0.0'], - ['2.3', '>=2.3.0 <2.4.0'], - ['~2.4', '>=2.4.0 <2.5.0'], - ['~2.4', '>=2.4.0 <2.5.0'], - ['~>3.2.1', '>=3.2.1 <3.3.0'], - ['~1', '>=1.0.0 <2.0.0'], - ['~>1', '>=1.0.0 <2.0.0'], - ['~> 1', '>=1.0.0 <2.0.0'], - ['~1.0', '>=1.0.0 <1.1.0'], - ['~ 1.0', '>=1.0.0 <1.1.0'], - ['^0', '>=0.0.0 <1.0.0'], - ['^ 1', '>=1.0.0 <2.0.0'], - ['^0.1', '>=0.1.0 <0.2.0'], - ['^1.0', '>=1.0.0 <2.0.0'], - ['^1.2', '>=1.2.0 <2.0.0'], - ['^0.0.1', '>=0.0.1 <0.0.2'], - ['^0.0.1-beta', '>=0.0.1-beta <0.0.2'], - ['^0.1.2', '>=0.1.2 <0.2.0'], - ['^1.2.3', '>=1.2.3 <2.0.0'], - ['^1.2.3-beta.4', '>=1.2.3-beta.4 <2.0.0'], - ['<1', '<1.0.0'], - ['< 1', '<1.0.0'], - ['>=1', '>=1.0.0'], - ['>= 1', '>=1.0.0'], - ['<1.2', '<1.2.0'], - ['< 1.2', '<1.2.0'], - ['1', '>=1.0.0 <2.0.0'], - ['>01.02.03', '>1.2.3', true], - ['>01.02.03', null], - ['~1.2.3beta', '>=1.2.3-beta <1.3.0', true], - ['~1.2.3beta', null], - ['^ 1.2 ^ 1', '>=1.2.0 <2.0.0 >=1.0.0 <2.0.0'] - ].forEach(function(v) { - var pre = v[0]; - var wanted = v[1]; - var loose = v[2]; - var found = validRange(pre, loose); - - t.equal(found, wanted, 'validRange(' + pre + ') === ' + wanted); - }); - - t.end(); -}); - -test('\ncomparators test', function(t) { - // [range, comparators] - // turn range into a set of individual comparators - [['1.0.0 - 2.0.0', [['>=1.0.0', '<=2.0.0']]], - ['1.0.0', [['1.0.0']]], - ['>=*', [['']]], - ['', [['']]], - ['*', [['']]], - ['*', [['']]], - ['>=1.0.0', [['>=1.0.0']]], - ['>=1.0.0', [['>=1.0.0']]], - ['>=1.0.0', [['>=1.0.0']]], - ['>1.0.0', [['>1.0.0']]], - ['>1.0.0', [['>1.0.0']]], - ['<=2.0.0', [['<=2.0.0']]], - ['1', [['>=1.0.0', '<2.0.0']]], - ['<=2.0.0', [['<=2.0.0']]], - ['<=2.0.0', [['<=2.0.0']]], - ['<2.0.0', [['<2.0.0']]], - ['<2.0.0', [['<2.0.0']]], - ['>= 1.0.0', [['>=1.0.0']]], - ['>= 1.0.0', [['>=1.0.0']]], - ['>= 1.0.0', [['>=1.0.0']]], - ['> 1.0.0', [['>1.0.0']]], - ['> 1.0.0', [['>1.0.0']]], - ['<= 2.0.0', [['<=2.0.0']]], - ['<= 2.0.0', [['<=2.0.0']]], - ['<= 2.0.0', [['<=2.0.0']]], - ['< 2.0.0', [['<2.0.0']]], - ['<\t2.0.0', [['<2.0.0']]], - ['>=0.1.97', [['>=0.1.97']]], - ['>=0.1.97', [['>=0.1.97']]], - ['0.1.20 || 1.2.4', [['0.1.20'], ['1.2.4']]], - ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]], - ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]], - ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]], - ['||', [[''], ['']]], - ['2.x.x', [['>=2.0.0', '<3.0.0']]], - ['1.2.x', [['>=1.2.0', '<1.3.0']]], - ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], - ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], - ['x', [['']]], - ['2.*.*', [['>=2.0.0', '<3.0.0']]], - ['1.2.*', [['>=1.2.0', '<1.3.0']]], - ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], - ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], - ['*', [['']]], - ['2', [['>=2.0.0', '<3.0.0']]], - ['2.3', [['>=2.3.0', '<2.4.0']]], - ['~2.4', [['>=2.4.0', '<2.5.0']]], - ['~2.4', [['>=2.4.0', '<2.5.0']]], - ['~>3.2.1', [['>=3.2.1', '<3.3.0']]], - ['~1', [['>=1.0.0', '<2.0.0']]], - ['~>1', [['>=1.0.0', '<2.0.0']]], - ['~> 1', [['>=1.0.0', '<2.0.0']]], - ['~1.0', [['>=1.0.0', '<1.1.0']]], - ['~ 1.0', [['>=1.0.0', '<1.1.0']]], - ['~ 1.0.3', [['>=1.0.3', '<1.1.0']]], - ['~> 1.0.3', [['>=1.0.3', '<1.1.0']]], - ['<1', [['<1.0.0']]], - ['< 1', [['<1.0.0']]], - ['>=1', [['>=1.0.0']]], - ['>= 1', [['>=1.0.0']]], - ['<1.2', [['<1.2.0']]], - ['< 1.2', [['<1.2.0']]], - ['1', [['>=1.0.0', '<2.0.0']]], - ['1 2', [['>=1.0.0', '<2.0.0', '>=2.0.0', '<3.0.0']]], - ['1.2 - 3.4.5', [['>=1.2.0', '<=3.4.5']]], - ['1.2.3 - 3.4', [['>=1.2.3', '<3.5.0']]], - ['1.2.3 - 3', [['>=1.2.3', '<4.0.0']]], - ['>*', [['<0.0.0']]], - ['<*', [['<0.0.0']]] - ].forEach(function(v) { - var pre = v[0]; - var wanted = v[1]; - var found = toComparators(v[0]); - var jw = JSON.stringify(wanted); - t.equivalent(found, wanted, 'toComparators(' + pre + ') === ' + jw); - }); - - t.end(); -}); - -test('\ninvalid version numbers', function(t) { - ['1.2.3.4', - 'NOT VALID', - 1.2, - null, - 'Infinity.NaN.Infinity' - ].forEach(function(v) { - t.throws(function() { - new SemVer(v); - }, {name:'TypeError', message:'Invalid Version: ' + v}); - }); - - t.end(); -}); - -test('\nstrict vs loose version numbers', function(t) { - [['=1.2.3', '1.2.3'], - ['01.02.03', '1.2.3'], - ['1.2.3-beta.01', '1.2.3-beta.1'], - [' =1.2.3', '1.2.3'], - ['1.2.3foo', '1.2.3-foo'] - ].forEach(function(v) { - var loose = v[0]; - var strict = v[1]; - t.throws(function() { - new SemVer(loose); - }); - var lv = new SemVer(loose, true); - t.equal(lv.version, strict); - t.ok(eq(loose, strict, true)); - t.throws(function() { - eq(loose, strict); - }); - t.throws(function() { - new SemVer(strict).compare(loose); - }); - }); - t.end(); -}); - -test('\nstrict vs loose ranges', function(t) { - [['>=01.02.03', '>=1.2.3'], - ['~1.02.03beta', '>=1.2.3-beta <1.3.0'] - ].forEach(function(v) { - var loose = v[0]; - var comps = v[1]; - t.throws(function() { - new Range(loose); - }); - t.equal(new Range(loose, true).range, comps); - }); - t.end(); -}); - -test('\nmax satisfying', function(t) { - [[['1.2.3', '1.2.4'], '1.2', '1.2.4'], - [['1.2.4', '1.2.3'], '1.2', '1.2.4'], - [['1.2.3', '1.2.4', '1.2.5', '1.2.6'], '~1.2.3', '1.2.6'], - [['1.1.0', '1.2.0', '1.2.1', '1.3.0', '2.0.0b1', '2.0.0b2', '2.0.0b3', '2.0.0', '2.1.0'], '~2.0.0', '2.0.0', true] - ].forEach(function(v) { - var versions = v[0]; - var range = v[1]; - var expect = v[2]; - var loose = v[3]; - var actual = semver.maxSatisfying(versions, range, loose); - t.equal(actual, expect); - }); - t.end(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/ltr.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/ltr.js deleted file mode 100644 index ecd1387..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/ltr.js +++ /dev/null @@ -1,181 +0,0 @@ -var tap = require('tap'); -var test = tap.test; -var semver = require('../semver.js'); -var ltr = semver.ltr; - -test('\nltr tests', function(t) { - // [range, version, loose] - // Version should be less than range - [ - ['~1.2.2', '1.2.1'], - ['~0.6.1-1', '0.6.1-0'], - ['1.0.0 - 2.0.0', '0.0.1'], - ['1.0.0-beta.2', '1.0.0-beta.1'], - ['1.0.0', '0.0.0'], - ['>=2.0.0', '1.1.1'], - ['>=2.0.0', '1.2.9'], - ['>2.0.0', '2.0.0'], - ['0.1.20 || 1.2.4', '0.1.5'], - ['2.x.x', '1.0.0'], - ['1.2.x', '1.1.0'], - ['1.2.x || 2.x', '1.0.0'], - ['2.*.*', '1.0.1'], - ['1.2.*', '1.1.3'], - ['1.2.* || 2.*', '1.1.9999'], - ['2', '1.0.0'], - ['2.3', '2.2.2'], - ['~2.4', '2.3.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.3.5'], - ['~>3.2.1', '3.2.0'], // >=3.2.1 <3.3.0 - ['~1', '0.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '0.2.4'], - ['~> 1', '0.2.3'], - ['~1.0', '0.1.2'], // >=1.0.0 <1.1.0 - ['~ 1.0', '0.1.0'], - ['>1.2', '1.2.0'], - ['> 1.2', '1.2.1'], - ['1', '0.0.0beta', true], - ['~v0.5.4-pre', '0.5.4-alpha'], - ['~v0.5.4-pre', '0.5.4-alpha'], - ['=0.7.x', '0.6.0'], - ['=0.7.x', '0.6.0-asdf'], - ['>=0.7.x', '0.6.0'], - ['~1.2.2', '1.2.1'], - ['1.0.0 - 2.0.0', '0.2.3'], - ['1.0.0', '0.0.1'], - ['>=2.0.0', '1.0.0'], - ['>=2.0.0', '1.9999.9999'], - ['>=2.0.0', '1.2.9'], - ['>2.0.0', '2.0.0'], - ['>2.0.0', '1.2.9'], - ['2.x.x', '1.1.3'], - ['1.2.x', '1.1.3'], - ['1.2.x || 2.x', '1.1.3'], - ['2.*.*', '1.1.3'], - ['1.2.*', '1.1.3'], - ['1.2.* || 2.*', '1.1.3'], - ['2', '1.9999.9999'], - ['2.3', '2.2.1'], - ['~2.4', '2.3.0'], // >=2.4.0 <2.5.0 - ['~>3.2.1', '2.3.2'], // >=3.2.1 <3.3.0 - ['~1', '0.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '0.2.3'], - ['~1.0', '0.0.0'], // >=1.0.0 <1.1.0 - ['>1', '1.0.0'], - ['2', '1.0.0beta', true], - ['>1', '1.0.0beta', true], - ['> 1', '1.0.0beta', true], - ['=0.7.x', '0.6.2'], - ['=0.7.x', '0.7.0-asdf'], - ['^1', '1.0.0-0'], - ['>=0.7.x', '0.7.0-asdf'], - ['1', '1.0.0beta', true], - ['>=0.7.x', '0.6.2'] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var loose = tuple[2] || false; - var msg = 'ltr(' + version + ', ' + range + ', ' + loose + ')'; - t.ok(ltr(version, range, loose), msg); - }); - t.end(); -}); - -test('\nnegative ltr tests', function(t) { - // [range, version, loose] - // Version should NOT be greater than range - [ - ['~ 1.0', '1.1.0'], - ['~0.6.1-1', '0.6.1-1'], - ['1.0.0 - 2.0.0', '1.2.3'], - ['1.0.0 - 2.0.0', '2.9.9'], - ['1.0.0', '1.0.0'], - ['>=*', '0.2.4'], - ['', '1.0.0', true], - ['*', '1.2.3'], - ['*', 'v1.2.3-foo'], - ['>=1.0.0', '1.0.0'], - ['>=1.0.0', '1.0.1'], - ['>=1.0.0', '1.1.0'], - ['>1.0.0', '1.0.1'], - ['>1.0.0', '1.1.0'], - ['<=2.0.0', '2.0.0'], - ['<=2.0.0', '1.9999.9999'], - ['<=2.0.0', '0.2.9'], - ['<2.0.0', '1.9999.9999'], - ['<2.0.0', '0.2.9'], - ['>= 1.0.0', '1.0.0'], - ['>= 1.0.0', '1.0.1'], - ['>= 1.0.0', '1.1.0'], - ['> 1.0.0', '1.0.1'], - ['> 1.0.0', '1.1.0'], - ['<= 2.0.0', '2.0.0'], - ['<= 2.0.0', '1.9999.9999'], - ['<= 2.0.0', '0.2.9'], - ['< 2.0.0', '1.9999.9999'], - ['<\t2.0.0', '0.2.9'], - ['>=0.1.97', 'v0.1.97'], - ['>=0.1.97', '0.1.97'], - ['0.1.20 || 1.2.4', '1.2.4'], - ['0.1.20 || >1.2.4', '1.2.4'], - ['0.1.20 || 1.2.4', '1.2.3'], - ['0.1.20 || 1.2.4', '0.1.20'], - ['>=0.2.3 || <0.0.1', '0.0.0'], - ['>=0.2.3 || <0.0.1', '0.2.3'], - ['>=0.2.3 || <0.0.1', '0.2.4'], - ['||', '1.3.4'], - ['2.x.x', '2.1.3'], - ['1.2.x', '1.2.3'], - ['1.2.x || 2.x', '2.1.3'], - ['1.2.x || 2.x', '1.2.3'], - ['x', '1.2.3'], - ['2.*.*', '2.1.3'], - ['1.2.*', '1.2.3'], - ['1.2.* || 2.*', '2.1.3'], - ['1.2.* || 2.*', '1.2.3'], - ['1.2.* || 2.*', '1.2.3'], - ['*', '1.2.3'], - ['2', '2.1.2'], - ['2.3', '2.3.1'], - ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.4.5'], - ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0 - ['~1', '1.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '1.2.3'], - ['~> 1', '1.2.3'], - ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0 - ['~ 1.0', '1.0.2'], - ['>=1', '1.0.0'], - ['>= 1', '1.0.0'], - ['<1.2', '1.1.1'], - ['< 1.2', '1.1.1'], - ['~v0.5.4-pre', '0.5.5'], - ['~v0.5.4-pre', '0.5.4'], - ['=0.7.x', '0.7.2'], - ['>=0.7.x', '0.7.2'], - ['<=0.7.x', '0.6.2'], - ['>0.2.3 >0.2.4 <=0.2.5', '0.2.5'], - ['>=0.2.3 <=0.2.4', '0.2.4'], - ['1.0.0 - 2.0.0', '2.0.0'], - ['^3.0.0', '4.0.0'], - ['^1.0.0 || ~2.0.1', '2.0.0'], - ['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'], - ['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true], - ['^0.1.0 || ~3.0.1 || 5.0.0', '5.0.0-0', true], - ['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0'], - ['^1.0.0alpha', '1.0.0beta', true], - ['~1.0.0alpha', '1.0.0beta', true], - ['^1.0.0-alpha', '1.0.0beta', true], - ['~1.0.0-alpha', '1.0.0beta', true], - ['^1.0.0-alpha', '1.0.0-beta'], - ['~1.0.0-alpha', '1.0.0-beta'], - ['=0.1.0', '1.0.0'] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var loose = tuple[2] || false; - var msg = '!ltr(' + version + ', ' + range + ', ' + loose + ')'; - t.notOk(ltr(version, range, loose), msg); - }); - t.end(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/no-module.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/no-module.js deleted file mode 100644 index 8b50873..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/semver/test/no-module.js +++ /dev/null @@ -1,19 +0,0 @@ -var tap = require('tap'); -var test = tap.test; - -test('no module system', function(t) { - var fs = require('fs'); - var vm = require('vm'); - var head = fs.readFileSync(require.resolve('../head.js.txt'), 'utf8'); - var src = fs.readFileSync(require.resolve('../'), 'utf8'); - var foot = fs.readFileSync(require.resolve('../foot.js.txt'), 'utf8'); - vm.runInThisContext(head + src + foot, 'semver.js'); - - // just some basic poking to see if it did some stuff - t.type(global.semver, 'object'); - t.type(global.semver.SemVer, 'function'); - t.type(global.semver.Range, 'function'); - t.ok(global.semver.satisfies('1.2.3', '1.2')); - t.end(); -}); - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/.npmignore deleted file mode 100644 index 080b47e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/.npmignore +++ /dev/null @@ -1,14 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid - -pids -logs -results - -npm-debug.log -node_modules diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/.travis.yml deleted file mode 100644 index 1d8a1a6..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/README.md deleted file mode 100644 index 135424b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Tar Pack - -Package and un-package modules of some sort (in tar/gz bundles). This is mostly useful for package managers. Note that it doesn't check for or touch `package.json` so it can be used even if that's not the way you store your package info. - -[![Build Status](https://travis-ci.org/ForbesLindesay/tar-pack.png?branch=master)](https://travis-ci.org/ForbesLindesay/tar-pack) -[![Dependency Status](https://gemnasium.com/ForbesLindesay/tar-pack.png)](https://gemnasium.com/ForbesLindesay/tar-pack) -[![NPM version](https://badge.fury.io/js/tar-pack.png)](http://badge.fury.io/js/tar-pack) - -## Installation - - $ npm install tar-pack - -## API - -### pack(folder|packer, [options]) - -Pack the folder at `folder` into a gzipped tarball and return the tgz as a stream. Files ignored by `.gitignore` will not be in the package. - -You can optionally pass a `fstream.DirReader` directly, instead of folder. For example, to create an npm package, do: - -```js -pack(require("fstream-npm")(folder), [options]) -``` - -Options: - - - `noProprietary` (defaults to `false`) Set this to `true` to prevent any proprietary attributes being added to the tarball. These attributes are allowed by the spec, but may trip up some poorly written tarball parsers. - - `ignoreFiles` (defaults to `['.gitignore']`) These files can specify files to be excluded from the package using the syntax of `.gitignore`. This option is ignored if you parse a `fstream.DirReader` instead of a string for folder. - - `filter` (defaults to `entry => true`) A function that takes an entry and returns `true` if it should be included in the package and `false` if it should not. Entryies are of the form `{path, basename, dirname, type}` where (type is "Directory" or "File"). This function is ignored if you parse a `fstream.DirReader` instead of a string for folder. - -Example: - -```js -var write = require('fs').createWriteStream -var pack = require('tar-pack').pack -pack(process.cwd()) - .pipe(write(__dirname + '/package.tar.gz')) - .on('error', function (err) { - console.error(err.stack) - }) - .on('close', function () { - console.log('done') - }) -``` - -### unpack(folder, [options,] cb) - -Return a stream that unpacks a tarball into a folder at `folder`. N.B. the output folder will be removed first if it already exists. - -The callback is called with an optional error and, as its second argument, a string which is one of: - - - `'directory'`, indicating that the extracted package was a directory (either `.tar.gz` or `.tar`) - - `'file'`, incating that the extracted package was just a single file (extracted to `defaultName`, see options) - -Basic Options: - - - `defaultName` (defaults to `index.js`) If the package is a single file, rather than a tarball, it will be "extracted" to this file name, set to `false` to disable. - -Advanced Options (you probably don't need any of these): - - - `gid` - (defaults to `null`) the `gid` to use when writing files - - `uid` - (defaults to `null`) the `uid` to use when writing files - - `dmode` - (defaults to `0777`) The mode to use when creating directories - - `fmode` - (defaults to `0666`) The mode to use when creating files - - `unsafe` - (defaults to `false`) (on non win32 OSes it overrides `gid` and `uid` with the current processes IDs) - -Example: - -```js -var read = require('fs').createReadStream -var unpack = require('tar-pack').unpack -read(process.cwd() + '/package.tar.gz') - .pipe(unpack(__dirname + '/package/', function (err) { - if (err) console.error(err.stack) - else console.log('done') - })) -``` - -## License - - BSD \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/index.js deleted file mode 100644 index 23b95a9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/index.js +++ /dev/null @@ -1,246 +0,0 @@ -"use strict" - -var debug = require('debug')('tar-pack') -var uidNumber = require('uid-number') -var rm = require('rimraf') -var tar = require('tar') -var once = require('once') -var fstream = require('fstream') -var packer = require('fstream-ignore') - -var PassThrough = require('stream').PassThrough || require('readable-stream').PassThrough -var zlib = require('zlib') -var path = require('path') -var fs -try { - fs = require('graceful-fs') -} catch (ex) { - fs = require('fs') -} - -var win32 = process.platform === 'win32' -var myUid = process.getuid && process.getuid() -var myGid = process.getgid && process.getgid() - -if (process.env.SUDO_UID && myUid === 0) { - if (!isNaN(process.env.SUDO_UID)) myUid = +process.env.SUDO_UID - if (!isNaN(process.env.SUDO_GID)) myGid = +process.env.SUDO_GID -} - -exports.pack = pack -exports.unpack = unpack - -function pack(folder, options) { - options = options || {} - if (typeof folder === 'string') { - - var filter = options.filter || function (entry) { return true; } - - folder = packer({ - path: folder, - type: 'Directory', - isDirectory: true, - ignoreFiles: options.ignoreFiles || ['.gitignore'], - filter: function (entry) { // {path, basename, dirname, type} (type is "Directory" or "File") - var basename = entry.basename - // some files are *never* allowed under any circumstances - // these files should always be either temporary files or - // version control related files - if (basename === '.git' || basename === '.lock-wscript' || basename.match(/^\.wafpickle-[0-9]+$/) || - basename === 'CVS' || basename === '.svn' || basename === '.hg' || basename.match(/^\..*\.swp$/) || - basename === '.DS_Store' || basename.match(/^\._/)) { - return false - } - //custom excludes - return filter(entry) - } - }) - } - // By default, npm includes some proprietary attributes in the - // package tarball. This is sane, and allowed by the spec. - // However, npm *itself* excludes these from its own package, - // so that it can be more easily bootstrapped using old and - // non-compliant tar implementations. - var tarPack = tar.Pack({ noProprietary: options.noProprietary || false }) - var gzip = zlib.Gzip() - - folder - .on('error', function (er) { - if (er) debug('Error reading folder') - return gzip.emit('error', er) - }) - tarPack - .on('error', function (er) { - if (er) debug('tar creation error') - gzip.emit('error', er) - }) - return folder.pipe(tarPack).pipe(gzip) -} - -function unpack(unpackTarget, options, cb) { - if (typeof options === 'function' && cb === undefined) cb = options, options = undefined - - var tarball = new PassThrough() - if (typeof cb === 'function') { - cb = once(cb) - tarball.on('error', cb) - tarball.on('close', function () { - cb() - }) - } - - var parent = path.dirname(unpackTarget) - var base = path.basename(unpackTarget) - - options = options || {} - var gid = options.gid || null - var uid = options.uid || null - var dMode = options.dmode || 0x0777 //npm.modes.exec - var fMode = options.fmode || 0x0666 //npm.modes.file - var defaultName = options.defaultName || (options.defaultName === false ? false : 'index.js') - - // figure out who we're supposed to be, if we're not pretending - // to be a specific user. - if (options.unsafe && !win32) { - uid = myUid - gid = myGid - } - - var pending = 2 - uidNumber(uid, gid, function (er, uid, gid) { - if (er) { - tarball.emit('error', er) - return tarball.end() - } - if (0 === --pending) next() - }) - rm(unpackTarget, function (er) { - if (er) { - tarball.emit('error', er) - return tarball.end() - } - if (0 === --pending) next() - }) - function next() { - // gzip {tarball} --decompress --stdout \ - // | tar -mvxpf - --strip-components=1 -C {unpackTarget} - gunzTarPerm(tarball, unpackTarget, dMode, fMode, uid, gid, defaultName) - } - return tarball -} - - -function gunzTarPerm(tarball, target, dMode, fMode, uid, gid, defaultName) { - debug('modes %j', [dMode.toString(8), fMode.toString(8)]) - - function fixEntry(entry) { - debug('fixEntry %j', entry.path) - // never create things that are user-unreadable, - // or dirs that are user-un-listable. Only leads to headaches. - var originalMode = entry.mode = entry.mode || entry.props.mode - entry.mode = entry.mode | (entry.type === 'Directory' ? dMode : fMode) - entry.props.mode = entry.mode - if (originalMode !== entry.mode) { - debug('modified mode %j', [entry.path, originalMode, entry.mode]) - } - - // if there's a specific owner uid/gid that we want, then set that - if (!win32 && typeof uid === 'number' && typeof gid === 'number') { - entry.props.uid = entry.uid = uid - entry.props.gid = entry.gid = gid - } - } - - var extractOpts = { type: 'Directory', path: target, strip: 1 } - - if (!win32 && typeof uid === 'number' && typeof gid === 'number') { - extractOpts.uid = uid - extractOpts.gid = gid - } - - extractOpts.filter = function () { - // symbolic links are not allowed in packages. - if (this.type.match(/^.*Link$/)) { - debug('excluding symbolic link: ' + this.path.substr(target.length + 1) + ' -> ' + this.linkpath) - return false - } - return true - } - - - type(tarball, function (err, type) { - if (err) return tarball.emit('error', err) - var strm = tarball - if (type === 'gzip') { - strm = strm.pipe(zlib.Unzip()) - strm.on('error', function (er) { - if (er) debug('unzip error') - tarball.emit('error', er) - }) - type = 'tar' - } - if (type === 'tar') { - strm - .pipe(tar.Extract(extractOpts)) - .on('entry', fixEntry) - .on('error', function (er) { - if (er) debug('untar error') - tarball.emit('error', er) - }) - .on('close', function () { - tarball.emit('close') - }) - return - } - if (type === 'naked-file' && defaultName) { - var jsOpts = { path: path.resolve(target, defaultName) } - - if (!win32 && typeof uid === 'number' && typeof gid === 'number') { - jsOpts.uid = uid - jsOpts.gid = gid - } - - strm - .pipe(fstream.Writer(jsOpts)) - .on('error', function (er) { - if (er) debug('copy error') - tarball.emit('error', er) - }) - .on('close', function () { - tarball.emit('close') - }) - return - } - - return cb(new Error('Unrecognised package type')); - }) -} - -function type(stream, callback) { - stream.on('error', handle) - stream.on('data', parse) - function handle(err) { - stream.removeListener('data', parse) - stream.removeListener('error', handle) - } - function parse(chunk) { - // detect what it is. - // Then, depending on that, we'll figure out whether it's - // a single-file module, gzipped tarball, or naked tarball. - - // gzipped files all start with 1f8b08 - if (chunk[0] === 0x1F && chunk[1] === 0x8B && chunk[2] === 0x08) { - callback(null, 'gzip') - } else if (chunk.toString().match(/^package\/\u0000/)) { - // note, this will only pick up on tarballs with a root directory called package - callback(null, 'tar') - } else { - callback(null, 'naked-file') - } - - // now un-hook, and re-emit the chunk - stream.removeListener('data', parse) - stream.removeListener('error', handle) - stream.unshift(chunk) - } -} \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/Readme.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/Readme.md deleted file mode 100644 index c5a34e8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/Readme.md +++ /dev/null @@ -1,115 +0,0 @@ -# debug - - tiny node.js debugging utility modelled after node core's debugging technique. - -## Installation - -``` -$ npm install debug -``` - -## Usage - - With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility. - -Example _app.js_: - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %s', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example _worker.js_: - -```js -var debug = require('debug')('worker'); - -setInterval(function(){ - debug('doing some work'); -}, 1000); -``` - - The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: - - ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) - - ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) - -## Millisecond diff - - When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) - - When stderr is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: - _(NOTE: Debug now uses stderr instead of stdout, so the correct shell command for this example is actually `DEBUG=* node example/worker 2> out &`)_ - - ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) - -## Conventions - - If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". - -## Wildcards - - The "*" character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - - You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=* -connect:*` would include all debuggers except those starting with "connect:". - -## Browser support - - Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - a('doing some work'); -}, 1200); -``` - -## License - -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/debug.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/debug.js deleted file mode 100644 index 509dc0d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/debug.js +++ /dev/null @@ -1,137 +0,0 @@ - -/** - * Expose `debug()` as the module. - */ - -module.exports = debug; - -/** - * Create a debugger with the given `name`. - * - * @param {String} name - * @return {Type} - * @api public - */ - -function debug(name) { - if (!debug.enabled(name)) return function(){}; - - return function(fmt){ - fmt = coerce(fmt); - - var curr = new Date; - var ms = curr - (debug[name] || curr); - debug[name] = curr; - - fmt = name - + ' ' - + fmt - + ' +' + debug.humanize(ms); - - // This hackery is required for IE8 - // where `console.log` doesn't have 'apply' - window.console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); - } -} - -/** - * The currently active debug mode names. - */ - -debug.names = []; -debug.skips = []; - -/** - * Enables a debug mode by name. This can include modes - * separated by a colon and wildcards. - * - * @param {String} name - * @api public - */ - -debug.enable = function(name) { - try { - localStorage.debug = name; - } catch(e){} - - var split = (name || '').split(/[\s,]+/) - , len = split.length; - - for (var i = 0; i < len; i++) { - name = split[i].replace('*', '.*?'); - if (name[0] === '-') { - debug.skips.push(new RegExp('^' + name.substr(1) + '$')); - } - else { - debug.names.push(new RegExp('^' + name + '$')); - } - } -}; - -/** - * Disable debug output. - * - * @api public - */ - -debug.disable = function(){ - debug.enable(''); -}; - -/** - * Humanize the given `ms`. - * - * @param {Number} m - * @return {String} - * @api private - */ - -debug.humanize = function(ms) { - var sec = 1000 - , min = 60 * 1000 - , hour = 60 * min; - - if (ms >= hour) return (ms / hour).toFixed(1) + 'h'; - if (ms >= min) return (ms / min).toFixed(1) + 'm'; - if (ms >= sec) return (ms / sec | 0) + 's'; - return ms + 'ms'; -}; - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -debug.enabled = function(name) { - for (var i = 0, len = debug.skips.length; i < len; i++) { - if (debug.skips[i].test(name)) { - return false; - } - } - for (var i = 0, len = debug.names.length; i < len; i++) { - if (debug.names[i].test(name)) { - return true; - } - } - return false; -}; - -/** - * Coerce `val`. - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} - -// persist - -try { - if (window.localStorage) debug.enable(localStorage.debug); -} catch(e){} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/index.js deleted file mode 100644 index e02c13b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/index.js +++ /dev/null @@ -1,5 +0,0 @@ -if ('undefined' == typeof window) { - module.exports = require('./lib/debug'); -} else { - module.exports = require('./debug'); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/lib/debug.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/lib/debug.js deleted file mode 100644 index 3b0a918..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/lib/debug.js +++ /dev/null @@ -1,147 +0,0 @@ -/** - * Module dependencies. - */ - -var tty = require('tty'); - -/** - * Expose `debug()` as the module. - */ - -module.exports = debug; - -/** - * Enabled debuggers. - */ - -var names = [] - , skips = []; - -(process.env.DEBUG || '') - .split(/[\s,]+/) - .forEach(function(name){ - name = name.replace('*', '.*?'); - if (name[0] === '-') { - skips.push(new RegExp('^' + name.substr(1) + '$')); - } else { - names.push(new RegExp('^' + name + '$')); - } - }); - -/** - * Colors. - */ - -var colors = [6, 2, 3, 4, 5, 1]; - -/** - * Previous debug() call. - */ - -var prev = {}; - -/** - * Previously assigned color. - */ - -var prevColor = 0; - -/** - * Is stdout a TTY? Colored output is disabled when `true`. - */ - -var isatty = tty.isatty(2); - -/** - * Select a color. - * - * @return {Number} - * @api private - */ - -function color() { - return colors[prevColor++ % colors.length]; -} - -/** - * Humanize the given `ms`. - * - * @param {Number} m - * @return {String} - * @api private - */ - -function humanize(ms) { - var sec = 1000 - , min = 60 * 1000 - , hour = 60 * min; - - if (ms >= hour) return (ms / hour).toFixed(1) + 'h'; - if (ms >= min) return (ms / min).toFixed(1) + 'm'; - if (ms >= sec) return (ms / sec | 0) + 's'; - return ms + 'ms'; -} - -/** - * Create a debugger with the given `name`. - * - * @param {String} name - * @return {Type} - * @api public - */ - -function debug(name) { - function disabled(){} - disabled.enabled = false; - - var match = skips.some(function(re){ - return re.test(name); - }); - - if (match) return disabled; - - match = names.some(function(re){ - return re.test(name); - }); - - if (!match) return disabled; - var c = color(); - - function colored(fmt) { - fmt = coerce(fmt); - - var curr = new Date; - var ms = curr - (prev[name] || curr); - prev[name] = curr; - - fmt = ' \u001b[9' + c + 'm' + name + ' ' - + '\u001b[3' + c + 'm\u001b[90m' - + fmt + '\u001b[3' + c + 'm' - + ' +' + humanize(ms) + '\u001b[0m'; - - console.error.apply(this, arguments); - } - - function plain(fmt) { - fmt = coerce(fmt); - - fmt = new Date().toUTCString() - + ' ' + name + ' ' + fmt; - console.error.apply(this, arguments); - } - - colored.enabled = plain.enabled = true; - - return isatty || process.env.DEBUG_COLORS - ? colored - : plain; -} - -/** - * Coerce `val`. - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/package.json deleted file mode 100644 index 0944d24..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "debug", - "version": "0.7.4", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/debug.git" - }, - "description": "small debugging utility", - "keywords": [ - "debug", - "log", - "debugger" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "*" - }, - "main": "lib/debug.js", - "browser": "./debug.js", - "engines": { - "node": "*" - }, - "files": [ - "lib/debug.js", - "debug.js", - "index.js" - ], - "component": { - "scripts": { - "debug/index.js": "index.js", - "debug/debug.js": "debug.js" - } - }, - "bugs": { - "url": "https://github.com/visionmedia/debug/issues" - }, - "homepage": "https://github.com/visionmedia/debug", - "_id": "debug@0.7.4", - "dist": { - "shasum": "06e1ea8082c2cb14e39806e22e2f6f757f92af39", - "tarball": "http://registry.npmjs.org/debug/-/debug-0.7.4.tgz" - }, - "_from": "debug@~0.7.2", - "_npmVersion": "1.3.13", - "_npmUser": { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - } - ], - "directories": {}, - "_shasum": "06e1ea8082c2cb14e39806e22e2f6f757f92af39", - "_resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/.npmignore deleted file mode 100644 index a843dc4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test/fixtures diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/README.md deleted file mode 100644 index 31170fe..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# fstream-ignore - -A fstream DirReader that filters out files that match globs in `.ignore` -files throughout the tree, like how git ignores files based on a -`.gitignore` file. - -Here's an example: - -```javascript -var Ignore = require("fstream-ignore") -Ignore({ path: __dirname - , ignoreFiles: [".ignore", ".gitignore"] - }) - .on("child", function (c) { - console.error(c.path.substr(c.root.path.length + 1)) - }) - .pipe(tar.Pack()) - .pipe(fs.createWriteStream("foo.tar")) -``` - -This will tar up the files in __dirname into `foo.tar`, ignoring -anything matched by the globs in any .iginore or .gitignore file. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/example/basic.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/example/basic.js deleted file mode 100644 index ff45342..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/example/basic.js +++ /dev/null @@ -1,13 +0,0 @@ -var Ignore = require("../") -Ignore({ path: __dirname - , ignoreFiles: [".ignore", ".gitignore"] - }) - .on("child", function (c) { - console.error(c.path.substr(c.root.path.length + 1)) - c.on("ignoreFile", onIgnoreFile) - }) - .on("ignoreFile", onIgnoreFile) - -function onIgnoreFile (e) { - console.error("adding ignore file", e.path) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/ignore.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/ignore.js deleted file mode 100644 index 0728f7c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/ignore.js +++ /dev/null @@ -1,275 +0,0 @@ -// Essentially, this is a fstream.DirReader class, but with a -// bit of special logic to read the specified sort of ignore files, -// and a filter that prevents it from picking up anything excluded -// by those files. - -var Minimatch = require("minimatch").Minimatch -, fstream = require("fstream") -, DirReader = fstream.DirReader -, inherits = require("inherits") -, path = require("path") -, fs = require("fs") - -module.exports = IgnoreReader - -inherits(IgnoreReader, DirReader) - -function IgnoreReader (props) { - if (!(this instanceof IgnoreReader)) { - return new IgnoreReader(props) - } - - // must be a Directory type - if (typeof props === "string") { - props = { path: path.resolve(props) } - } - - props.type = "Directory" - props.Directory = true - - if (!props.ignoreFiles) props.ignoreFiles = [".ignore"] - this.ignoreFiles = props.ignoreFiles - - this.ignoreRules = null - - // ensure that .ignore files always show up at the top of the list - // that way, they can be read before proceeding to handle other - // entries in that same folder - if (props.sort) { - this._sort = props.sort === "alpha" ? alphasort : props.sort - props.sort = null - } - - this.on("entries", function () { - // if there are any ignore files in the list, then - // pause and add them. - // then, filter the list based on our ignoreRules - - var hasIg = this.entries.some(this.isIgnoreFile, this) - - if (!hasIg) return this.filterEntries() - - this.addIgnoreFiles() - }) - - // we filter entries before we know what they are. - // however, directories have to be re-tested against - // rules with a "/" appended, because "a/b/" will only - // match if "a/b" is a dir, and not otherwise. - this.on("_entryStat", function (entry, props) { - var t = entry.basename - if (!this.applyIgnores(entry.basename, - entry.type === "Directory", - entry)) { - entry.abort() - } - }.bind(this)) - - DirReader.call(this, props) -} - - -IgnoreReader.prototype.addIgnoreFiles = function () { - if (this._paused) { - this.once("resume", this.addIgnoreFiles) - return - } - if (this._ignoreFilesAdded) return - this._ignoreFilesAdded = true - - var newIg = this.entries.filter(this.isIgnoreFile, this) - , count = newIg.length - , errState = null - - if (!count) return - - this.pause() - - var then = function then (er) { - if (errState) return - if (er) return this.emit("error", errState = er) - if (-- count === 0) { - this.filterEntries() - this.resume() - } - }.bind(this) - - newIg.forEach(function (ig) { - this.addIgnoreFile(ig, then) - }, this) -} - - -IgnoreReader.prototype.isIgnoreFile = function (e) { - return e !== "." && - e !== ".." && - -1 !== this.ignoreFiles.indexOf(e) -} - - -IgnoreReader.prototype.getChildProps = function (stat) { - var props = DirReader.prototype.getChildProps.call(this, stat) - props.ignoreFiles = this.ignoreFiles - - // Directories have to be read as IgnoreReaders - // otherwise fstream.Reader will create a DirReader instead. - if (stat.isDirectory()) { - props.type = this.constructor - } - return props -} - - -IgnoreReader.prototype.addIgnoreFile = function (e, cb) { - // read the file, and then call addIgnoreRules - // if there's an error, then tell the cb about it. - - var ig = path.resolve(this.path, e) - fs.readFile(ig, function (er, data) { - if (er) return cb(er) - - this.emit("ignoreFile", e, data) - var rules = this.readRules(data, e) - this.addIgnoreRules(rules, e) - cb() - }.bind(this)) -} - - -IgnoreReader.prototype.readRules = function (buf, e) { - return buf.toString().split(/\r?\n/) -} - - -// Override this to do fancier things, like read the -// "files" array from a package.json file or something. -IgnoreReader.prototype.addIgnoreRules = function (set, e) { - // filter out anything obvious - set = set.filter(function (s) { - s = s.trim() - return s && !s.match(/^#/) - }) - - // no rules to add! - if (!set.length) return - - // now get a minimatch object for each one of these. - // Note that we need to allow dot files by default, and - // not switch the meaning of their exclusion - var mmopt = { matchBase: true, dot: true, flipNegate: true } - , mm = set.map(function (s) { - var m = new Minimatch(s, mmopt) - m.ignoreFile = e - return m - }) - - if (!this.ignoreRules) this.ignoreRules = [] - this.ignoreRules.push.apply(this.ignoreRules, mm) -} - - -IgnoreReader.prototype.filterEntries = function () { - // this exclusion is at the point where we know the list of - // entries in the dir, but don't know what they are. since - // some of them *might* be directories, we have to run the - // match in dir-mode as well, so that we'll pick up partials - // of files that will be included later. Anything included - // at this point will be checked again later once we know - // what it is. - this.entries = this.entries.filter(function (entry) { - // at this point, we don't know if it's a dir or not. - return this.applyIgnores(entry) || this.applyIgnores(entry, true) - }, this) -} - - -IgnoreReader.prototype.applyIgnores = function (entry, partial, obj) { - var included = true - - // this = /a/b/c - // entry = d - // parent /a/b sees c/d - if (this.parent && this.parent.applyIgnores) { - var pt = this.basename + "/" + entry - included = this.parent.applyIgnores(pt, partial) - } - - // Negated Rules - // Since we're *ignoring* things here, negating means that a file - // is re-included, if it would have been excluded by a previous - // rule. So, negated rules are only relevant if the file - // has been excluded. - // - // Similarly, if a file has been excluded, then there's no point - // trying it against rules that have already been applied - // - // We're using the "flipnegate" flag here, which tells minimatch - // to set the "negate" for our information, but still report - // whether the core pattern was a hit or a miss. - - if (!this.ignoreRules) { - return included - } - - this.ignoreRules.forEach(function (rule) { - // negation means inclusion - if (rule.negate && included || - !rule.negate && !included) { - // unnecessary - return - } - - // first, match against /foo/bar - var match = rule.match("/" + entry) - - if (!match) { - // try with the leading / trimmed off the test - // eg: foo/bar instead of /foo/bar - match = rule.match(entry) - } - - // if the entry is a directory, then it will match - // with a trailing slash. eg: /foo/bar/ or foo/bar/ - if (!match && partial) { - match = rule.match("/" + entry + "/") || - rule.match(entry + "/") - } - - // When including a file with a negated rule, it's - // relevant if a directory partially matches, since - // it may then match a file within it. - // Eg, if you ignore /a, but !/a/b/c - if (!match && rule.negate && partial) { - match = rule.match("/" + entry, true) || - rule.match(entry, true) - } - - if (match) { - included = rule.negate - } - }, this) - - return included -} - - -IgnoreReader.prototype.sort = function (a, b) { - var aig = this.ignoreFiles.indexOf(a) !== -1 - , big = this.ignoreFiles.indexOf(b) !== -1 - - if (aig && !big) return -1 - if (big && !aig) return 1 - return this._sort(a, b) -} - -IgnoreReader.prototype._sort = function (a, b) { - return 0 -} - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/README.md deleted file mode 100644 index b1c5665..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits_browser.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/package.json deleted file mode 100644 index 754a114..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "_id": "inherits@2.0.1", - "dist": { - "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "_from": "inherits@2", - "_npmVersion": "1.3.8", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "homepage": "https://github.com/isaacs/inherits" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/test.js deleted file mode 100644 index fc53012..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -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. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/README.md deleted file mode 100644 index 978268e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/README.md +++ /dev/null @@ -1,218 +0,0 @@ -# minimatch - -A minimal matching utility. - -[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) - - -This is the matching library used internally by npm. - -Eventually, it will replace the C binding in node-glob. - -It works by converting glob expressions into JavaScript `RegExp` -objects. - -## Usage - -```javascript -var minimatch = require("minimatch") - -minimatch("bar.foo", "*.foo") // true! -minimatch("bar.foo", "*.bar") // false! -minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy! -``` - -## Features - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` - -## Minimatch Class - -Create a minimatch object by instanting the `minimatch.Minimatch` class. - -```javascript -var Minimatch = require("minimatch").Minimatch -var mm = new Minimatch(pattern, options) -``` - -### Properties - -* `pattern` The original pattern the minimatch object represents. -* `options` The options supplied to the constructor. -* `set` A 2-dimensional array of regexp or string expressions. - Each row in the - array corresponds to a brace-expanded pattern. Each item in the row - corresponds to a single path-part. For example, the pattern - `{a,b/c}/d` would expand to a set of patterns like: - - [ [ a, d ] - , [ b, c, d ] ] - - If a portion of the pattern doesn't have any "magic" in it - (that is, it's something like `"foo"` rather than `fo*o?`), then it - will be left as a string rather than converted to a regular - expression. - -* `regexp` Created by the `makeRe` method. A single regular expression - expressing the entire pattern. This is useful in cases where you wish - to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. -* `negate` True if the pattern is negated. -* `comment` True if the pattern is a comment. -* `empty` True if the pattern is `""`. - -### Methods - -* `makeRe` Generate the `regexp` member if necessary, and return it. - Will return `false` if the pattern is invalid. -* `match(fname)` Return true if the filename matches the pattern, or - false otherwise. -* `matchOne(fileArray, patternArray, partial)` Take a `/`-split - filename, and match it against a single row in the `regExpSet`. This - method is mainly for internal use, but is exposed so that it can be - used by a glob-walker that needs to avoid excessive filesystem calls. - -All other methods are internal, and will be called as necessary. - -## Functions - -The top-level exported function has a `cache` property, which is an LRU -cache set to store 100 items. So, calling these methods repeatedly -with the same pattern and options will use the same Minimatch object, -saving the cost of parsing it multiple times. - -### minimatch(path, pattern, options) - -Main export. Tests a path against the pattern using the options. - -```javascript -var isJS = minimatch(file, "*.js", { matchBase: true }) -``` - -### minimatch.filter(pattern, options) - -Returns a function that tests its -supplied argument, suitable for use with `Array.filter`. Example: - -```javascript -var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) -``` - -### minimatch.match(list, pattern, options) - -Match against the list of -files, in the style of fnmatch or glob. If nothing is matched, and -options.nonull is set, then return a list containing the pattern itself. - -```javascript -var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) -``` - -### minimatch.makeRe(pattern, options) - -Make a regular expression object from the pattern. - -## Options - -All options are `false` by default. - -### debug - -Dump a ton of stuff to stderr. - -### nobrace - -Do not expand `{a,b}` and `{1..3}` brace sets. - -### noglobstar - -Disable `**` matching against multiple folder names. - -### dot - -Allow patterns to match filenames starting with a period, even if -the pattern does not explicitly have a period in that spot. - -Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` -is set. - -### noext - -Disable "extglob" style patterns like `+(a|b)`. - -### nocase - -Perform a case-insensitive match. - -### nonull - -When a match is not found by `minimatch.match`, return a list containing -the pattern itself. When set, an empty list is returned if there are -no matches. - -### matchBase - -If set, then patterns without slashes will be matched -against the basename of the path if it contains slashes. For example, -`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. - -### nocomment - -Suppress the behavior of treating `#` at the start of a pattern as a -comment. - -### nonegate - -Suppress the behavior of treating a leading `!` character as negation. - -### flipNegate - -Returns from negate expressions the same as if they were not negated. -(Ie, true on a hit, false on a miss.) - - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between minimatch and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then minimatch.match returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/minimatch.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/minimatch.js deleted file mode 100644 index c633f89..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/minimatch.js +++ /dev/null @@ -1,1055 +0,0 @@ -;(function (require, exports, module, platform) { - -if (module) module.exports = minimatch -else exports.minimatch = minimatch - -if (!require) { - require = function (id) { - switch (id) { - case "sigmund": return function sigmund (obj) { - return JSON.stringify(obj) - } - case "path": return { basename: function (f) { - f = f.split(/[\/\\]/) - var e = f.pop() - if (!e) e = f.pop() - return e - }} - case "lru-cache": return function LRUCache () { - // not quite an LRU, but still space-limited. - var cache = {} - var cnt = 0 - this.set = function (k, v) { - cnt ++ - if (cnt >= 100) cache = {} - cache[k] = v - } - this.get = function (k) { return cache[k] } - } - } - } -} - -minimatch.Minimatch = Minimatch - -var LRU = require("lru-cache") - , cache = minimatch.cache = new LRU({max: 100}) - , GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} - , sigmund = require("sigmund") - -var path = require("path") - // any single thing other than / - // don't need to escape / when using new RegExp() - , qmark = "[^/]" - - // * => any number of characters - , star = qmark + "*?" - - // ** when dots are allowed. Anything goes, except .. and . - // not (^ or / followed by one or two dots followed by $ or /), - // followed by anything, any number of times. - , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" - - // not a ^ or / followed by a dot, - // followed by anything, any number of times. - , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" - - // characters that need to be escaped in RegExp. - , reSpecials = charSet("().*{}+?[]^$\\!") - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split("").reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - - -function minimatch (p, pattern, options) { - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - return false - } - - // "" only matches "" - if (pattern.trim() === "") return p === "" - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options, cache) - } - - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - pattern = pattern.split("\\").join("/") - } - - // lru storage. - // these things aren't particularly big, but walking down the string - // and turning it into a regexp can get pretty costly. - var cacheKey = pattern + "\n" + sigmund(options) - var cached = minimatch.cache.get(cacheKey) - if (cached) return cached - minimatch.cache.set(cacheKey, this) - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.debug = function() {} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) this.debug = console.error - - this.debug(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - this.debug(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - this.debug(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return -1 === s.indexOf(false) - }) - - this.debug(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - , negate = false - , options = this.options - , negateOffset = 0 - - if (options.nonegate) return - - for ( var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === "!" - ; i ++) { - negate = !negate - negateOffset ++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return new Minimatch(pattern, options).braceExpand() -} - -Minimatch.prototype.braceExpand = braceExpand -function braceExpand (pattern, options) { - options = options || this.options - pattern = typeof pattern === "undefined" - ? this.pattern : pattern - - if (typeof pattern === "undefined") { - throw new Error("undefined pattern") - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - var escaping = false - - // examples and comments refer to this crazy pattern: - // a{b,c{d,e},{f,g}h}x{y,z} - // expected: - // abxy - // abxz - // acdxy - // acdxz - // acexy - // acexz - // afhxy - // afhxz - // aghxy - // aghxz - - // everything before the first \{ is just a prefix. - // So, we pluck that off, and work with the rest, - // and then prepend it to everything we find. - if (pattern.charAt(0) !== "{") { - this.debug(pattern) - var prefix = null - for (var i = 0, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - this.debug(i, c) - if (c === "\\") { - escaping = !escaping - } else if (c === "{" && !escaping) { - prefix = pattern.substr(0, i) - break - } - } - - // actually no sets, all { were escaped. - if (prefix === null) { - this.debug("no sets") - return [pattern] - } - - var tail = braceExpand.call(this, pattern.substr(i), options) - return tail.map(function (t) { - return prefix + t - }) - } - - // now we have something like: - // {b,c{d,e},{f,g}h}x{y,z} - // walk through the set, expanding each part, until - // the set ends. then, we'll expand the suffix. - // If the set only has a single member, then'll put the {} back - - // first, handle numeric sets, since they're easier - var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/) - if (numset) { - this.debug("numset", numset[1], numset[2]) - var suf = braceExpand.call(this, pattern.substr(numset[0].length), options) - , start = +numset[1] - , end = +numset[2] - , inc = start > end ? -1 : 1 - , set = [] - for (var i = start; i != (end + inc); i += inc) { - // append all the suffixes - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - set.push(i + suf[ii]) - } - } - return set - } - - // ok, walk through the set - // We hope, somewhat optimistically, that there - // will be a } at the end. - // If the closing brace isn't found, then the pattern is - // interpreted as braceExpand("\\" + pattern) so that - // the leading \{ will be interpreted literally. - var i = 1 // skip the \{ - , depth = 1 - , set = [] - , member = "" - , sawEnd = false - , escaping = false - - function addMember () { - set.push(member) - member = "" - } - - this.debug("Entering for") - FOR: for (i = 1, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - this.debug("", i, c) - - if (escaping) { - escaping = false - member += "\\" + c - } else { - switch (c) { - case "\\": - escaping = true - continue - - case "{": - depth ++ - member += "{" - continue - - case "}": - depth -- - // if this closes the actual set, then we're done - if (depth === 0) { - addMember() - // pluck off the close-brace - i ++ - break FOR - } else { - member += c - continue - } - - case ",": - if (depth === 1) { - addMember() - } else { - member += c - } - continue - - default: - member += c - continue - } // switch - } // else - } // for - - // now we've either finished the set, and the suffix is - // pattern.substr(i), or we have *not* closed the set, - // and need to escape the leading brace - if (depth !== 0) { - this.debug("didn't close", pattern) - return braceExpand.call(this, "\\" + pattern, options) - } - - // x{y,z} -> ["xy", "xz"] - this.debug("set", set) - this.debug("suffix", pattern.substr(i)) - var suf = braceExpand.call(this, pattern.substr(i), options) - // ["b", "c{d,e}","{f,g}h"] -> - // [["b"], ["cd", "ce"], ["fh", "gh"]] - var addBraces = set.length === 1 - this.debug("set pre-expanded", set) - set = set.map(function (p) { - return braceExpand.call(this, p, options) - }, this) - this.debug("set expanded", set) - - - // [["b"], ["cd", "ce"], ["fh", "gh"]] -> - // ["b", "cd", "ce", "fh", "gh"] - set = set.reduce(function (l, r) { - return l.concat(r) - }) - - if (addBraces) { - set = set.map(function (s) { - return "{" + s + "}" - }) - } - - // now attach the suffixes. - var ret = [] - for (var i = 0, l = set.length; i < l; i ++) { - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - ret.push(set[i] + suf[ii]) - } - } - return ret -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === "**") return GLOBSTAR - if (pattern === "") return "" - - var re = "" - , hasMagic = !!options.nocase - , escaping = false - // ? => one single character - , patternListStack = [] - , plType - , stateChar - , inClass = false - , reClassStart = -1 - , classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - , patternStart = pattern.charAt(0) === "." ? "" // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" - : "(?!\\.)" - , self = this - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case "*": - re += star - hasMagic = true - break - case "?": - re += qmark - hasMagic = true - break - default: - re += "\\"+stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for ( var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i ++ ) { - - this.debug("%s\t%s %s %j", pattern, i, re, c) - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += "\\" + c - escaping = false - continue - } - - SWITCH: switch (c) { - case "/": - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case "\\": - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case "?": - case "*": - case "+": - case "@": - case "!": - this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === "!" && i === classStart + 1) c = "^" - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case "(": - if (inClass) { - re += "(" - continue - } - - if (!stateChar) { - re += "\\(" - continue - } - - plType = stateChar - patternListStack.push({ type: plType - , start: i - 1 - , reStart: re.length }) - // negation is (?:(?!js)[^/]*) - re += stateChar === "!" ? "(?:(?!" : "(?:" - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - - case ")": - if (inClass || !patternListStack.length) { - re += "\\)" - continue - } - - clearStateChar() - hasMagic = true - re += ")" - plType = patternListStack.pop().type - // negation is (?:(?!js)[^/]*) - // The others are (?:) - switch (plType) { - case "!": - re += "[^/]*?)" - break - case "?": - case "+": - case "*": re += plType - case "@": break // the default anyway - } - continue - - case "|": - if (inClass || !patternListStack.length || escaping) { - re += "\\|" - escaping = false - continue - } - - clearStateChar() - re += "|" - continue - - // these are mostly the same in regexp and glob - case "[": - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += "\\" + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case "]": - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += "\\" + c - escaping = false - continue - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === "^" && inClass)) { - re += "\\" - } - - re += c - - } // switch - } // for - - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - var cs = pattern.substr(classStart + 1) - , sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + "\\[" + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - var pl - while (pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + 3) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = "\\" - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + "|" - }) - - this.debug("tail=%j\n %s", tail, tail) - var t = pl.type === "*" ? star - : pl.type === "?" ? qmark - : "\\" + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) - + t + "\\(" - + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += "\\\\" - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case ".": - case "[": - case "(": addPatternStart = true - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== "" && hasMagic) re = "(?=.)" + re - - if (addPatternStart) re = patternStart + re - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [ re, hasMagic ] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? "i" : "" - , regExp = new RegExp("^" + re + "$", flags) - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) return this.regexp = false - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - , flags = options.nocase ? "i" : "" - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === "string") ? regExpEscape(p) - : p._src - }).join("\\\/") - }).join("|") - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = "^(?:" + re + ")$" - - // can match anything, as long as it's not this. - if (this.negate) re = "^(?!" + re + ").*$" - - try { - return this.regexp = new RegExp(re, flags) - } catch (ex) { - return this.regexp = false - } -} - -minimatch.match = function (list, pattern, options) { - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - this.debug("match", f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === "" - - if (f === "/" && partial) return true - - var options = this.options - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - f = f.split("\\").join("/") - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, "split", f) - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - this.debug(this.pattern, "set", set) - - var splitFile = path.basename(f.join("/")).split("/") - - for (var i = 0, l = set.length; i < l; i ++) { - var pattern = set[i], file = f - if (options.matchBase && pattern.length === 1) { - file = splitFile - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - this.debug("matchOne", - { "this": this - , file: file - , pattern: pattern }) - - this.debug("matchOne", file.length, pattern.length) - - for ( var fi = 0 - , pi = 0 - , fl = file.length - , pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi ++, pi ++ ) { - - this.debug("matchOne loop") - var p = pattern[pi] - , f = file[fi] - - this.debug(pattern, p, f) - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - , pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for ( ; fi < fl; fi ++) { - if (file[fi] === "." || file[fi] === ".." || - (!options.dot && file[fi].charAt(0) === ".")) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - WHILE: while (fr < fl) { - var swallowee = file[fr] - - this.debug('\nglobstar while', - file, fr, pattern, pr, swallowee) - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === "." || swallowee === ".." || - (!options.dot && swallowee.charAt(0) === ".")) { - this.debug("dot detected!", file, fr, pattern, pr) - break WHILE - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr ++ - } - } - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - this.debug("\n>>> no match, partial?", file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === "string") { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - this.debug("string match", p, f, hit) - } else { - hit = f.match(p) - this.debug("pattern match", p, f, hit) - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") - return emptyFileEnd - } - - // should be unreachable. - throw new Error("wtf?") -} - - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, "$1") -} - - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") -} - -})( typeof require === "function" ? require : null, - this, - typeof module === "object" ? module : null, - typeof process === "object" ? process.platform : "win32" - ) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/.npmignore deleted file mode 100644 index 07e6e47..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS deleted file mode 100644 index 4a0bc50..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS +++ /dev/null @@ -1,14 +0,0 @@ -# Authors, sorted by whether or not they are me -Isaac Z. Schlueter -Brian Cottingham -Carlos Brito Lage -Jesse Dailey -Kevin O'Hara -Marco Rogers -Mark Cavage -Marko Mikulicic -Nathan Rajlich -Satheesh Natesan -Trent Mick -ashleybrener -n4kz diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -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. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/README.md deleted file mode 100644 index 03ee0f9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# lru cache - -A cache object that deletes the least-recently-used items. - -## Usage: - -```javascript -var LRU = require("lru-cache") - , options = { max: 500 - , length: function (n) { return n * 2 } - , dispose: function (key, n) { n.close() } - , maxAge: 1000 * 60 * 60 } - , cache = LRU(options) - , otherCache = LRU(50) // sets just the max size - -cache.set("key", "value") -cache.get("key") // "value" - -cache.reset() // empty the cache -``` - -If you put more stuff in it, then items will fall out. - -If you try to put an oversized thing in it, then it'll fall out right -away. - -## Options - -* `max` The maximum size of the cache, checked by applying the length - function to all values in the cache. Not setting this is kind of - silly, since that's the whole purpose of this lib, but it defaults - to `Infinity`. -* `maxAge` Maximum age in ms. Items are not pro-actively pruned out - as they age, but if you try to get an item that is too old, it'll - drop it and return undefined instead of giving it to you. -* `length` Function that is used to calculate the length of stored - items. If you're storing strings or buffers, then you probably want - to do something like `function(n){return n.length}`. The default is - `function(n){return 1}`, which is fine if you want to store `n` - like-sized things. -* `dispose` Function that is called on items when they are dropped - from the cache. This can be handy if you want to close file - descriptors or do other cleanup tasks when items are no longer - accessible. Called with `key, value`. It's called *before* - actually removing the item from the internal cache, so if you want - to immediately put it back in, you'll have to do that in a - `nextTick` or `setTimeout` callback or it won't do anything. -* `stale` By default, if you set a `maxAge`, it'll only actually pull - stale items out of the cache when you `get(key)`. (That is, it's - not pre-emptively doing a `setTimeout` or anything.) If you set - `stale:true`, it'll return the stale value before deleting it. If - you don't set this, then it'll return `undefined` when you try to - get a stale entry, as if it had already been deleted. - -## API - -* `set(key, value)` -* `get(key) => value` - - Both of these will update the "recently used"-ness of the key. - They do what you think. - -* `peek(key)` - - Returns the key value (or `undefined` if not found) without - updating the "recently used"-ness of the key. - - (If you find yourself using this a lot, you *might* be using the - wrong sort of data structure, but there are some use cases where - it's handy.) - -* `del(key)` - - Deletes a key out of the cache. - -* `reset()` - - Clear the cache entirely, throwing away all values. - -* `has(key)` - - Check if a key is in the cache, without updating the recent-ness - or deleting it for being stale. - -* `forEach(function(value,key,cache), [thisp])` - - Just like `Array.prototype.forEach`. Iterates over all the keys - in the cache, in order of recent-ness. (Ie, more recently used - items are iterated over first.) - -* `keys()` - - Return an array of the keys in the cache. - -* `values()` - - Return an array of the values in the cache. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js deleted file mode 100644 index d1d1381..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js +++ /dev/null @@ -1,252 +0,0 @@ -;(function () { // closure for web browsers - -if (typeof module === 'object' && module.exports) { - module.exports = LRUCache -} else { - // just set the global for non-node platforms. - this.LRUCache = LRUCache -} - -function hOP (obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key) -} - -function naiveLength () { return 1 } - -function LRUCache (options) { - if (!(this instanceof LRUCache)) - return new LRUCache(options) - - if (typeof options === 'number') - options = { max: options } - - if (!options) - options = {} - - this._max = options.max - // Kind of weird to have a default max of Infinity, but oh well. - if (!this._max || !(typeof this._max === "number") || this._max <= 0 ) - this._max = Infinity - - this._lengthCalculator = options.length || naiveLength - if (typeof this._lengthCalculator !== "function") - this._lengthCalculator = naiveLength - - this._allowStale = options.stale || false - this._maxAge = options.maxAge || null - this._dispose = options.dispose - this.reset() -} - -// resize the cache when the max changes. -Object.defineProperty(LRUCache.prototype, "max", - { set : function (mL) { - if (!mL || !(typeof mL === "number") || mL <= 0 ) mL = Infinity - this._max = mL - if (this._length > this._max) trim(this) - } - , get : function () { return this._max } - , enumerable : true - }) - -// resize the cache when the lengthCalculator changes. -Object.defineProperty(LRUCache.prototype, "lengthCalculator", - { set : function (lC) { - if (typeof lC !== "function") { - this._lengthCalculator = naiveLength - this._length = this._itemCount - for (var key in this._cache) { - this._cache[key].length = 1 - } - } else { - this._lengthCalculator = lC - this._length = 0 - for (var key in this._cache) { - this._cache[key].length = this._lengthCalculator(this._cache[key].value) - this._length += this._cache[key].length - } - } - - if (this._length > this._max) trim(this) - } - , get : function () { return this._lengthCalculator } - , enumerable : true - }) - -Object.defineProperty(LRUCache.prototype, "length", - { get : function () { return this._length } - , enumerable : true - }) - - -Object.defineProperty(LRUCache.prototype, "itemCount", - { get : function () { return this._itemCount } - , enumerable : true - }) - -LRUCache.prototype.forEach = function (fn, thisp) { - thisp = thisp || this - var i = 0; - for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) { - i++ - var hit = this._lruList[k] - if (this._maxAge && (Date.now() - hit.now > this._maxAge)) { - del(this, hit) - if (!this._allowStale) hit = undefined - } - if (hit) { - fn.call(thisp, hit.value, hit.key, this) - } - } -} - -LRUCache.prototype.keys = function () { - var keys = new Array(this._itemCount) - var i = 0 - for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) { - var hit = this._lruList[k] - keys[i++] = hit.key - } - return keys -} - -LRUCache.prototype.values = function () { - var values = new Array(this._itemCount) - var i = 0 - for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) { - var hit = this._lruList[k] - values[i++] = hit.value - } - return values -} - -LRUCache.prototype.reset = function () { - if (this._dispose && this._cache) { - for (var k in this._cache) { - this._dispose(k, this._cache[k].value) - } - } - - this._cache = Object.create(null) // hash of items by key - this._lruList = Object.create(null) // list of items in order of use recency - this._mru = 0 // most recently used - this._lru = 0 // least recently used - this._length = 0 // number of items in the list - this._itemCount = 0 -} - -// Provided for debugging/dev purposes only. No promises whatsoever that -// this API stays stable. -LRUCache.prototype.dump = function () { - return this._cache -} - -LRUCache.prototype.dumpLru = function () { - return this._lruList -} - -LRUCache.prototype.set = function (key, value) { - if (hOP(this._cache, key)) { - // dispose of the old one before overwriting - if (this._dispose) this._dispose(key, this._cache[key].value) - if (this._maxAge) this._cache[key].now = Date.now() - this._cache[key].value = value - this.get(key) - return true - } - - var len = this._lengthCalculator(value) - var age = this._maxAge ? Date.now() : 0 - var hit = new Entry(key, value, this._mru++, len, age) - - // oversized objects fall out of cache automatically. - if (hit.length > this._max) { - if (this._dispose) this._dispose(key, value) - return false - } - - this._length += hit.length - this._lruList[hit.lu] = this._cache[key] = hit - this._itemCount ++ - - if (this._length > this._max) trim(this) - return true -} - -LRUCache.prototype.has = function (key) { - if (!hOP(this._cache, key)) return false - var hit = this._cache[key] - if (this._maxAge && (Date.now() - hit.now > this._maxAge)) { - return false - } - return true -} - -LRUCache.prototype.get = function (key) { - return get(this, key, true) -} - -LRUCache.prototype.peek = function (key) { - return get(this, key, false) -} - -LRUCache.prototype.pop = function () { - var hit = this._lruList[this._lru] - del(this, hit) - return hit || null -} - -LRUCache.prototype.del = function (key) { - del(this, this._cache[key]) -} - -function get (self, key, doUse) { - var hit = self._cache[key] - if (hit) { - if (self._maxAge && (Date.now() - hit.now > self._maxAge)) { - del(self, hit) - if (!self._allowStale) hit = undefined - } else { - if (doUse) use(self, hit) - } - if (hit) hit = hit.value - } - return hit -} - -function use (self, hit) { - shiftLU(self, hit) - hit.lu = self._mru ++ - self._lruList[hit.lu] = hit -} - -function trim (self) { - while (self._lru < self._mru && self._length > self._max) - del(self, self._lruList[self._lru]) -} - -function shiftLU (self, hit) { - delete self._lruList[ hit.lu ] - while (self._lru < self._mru && !self._lruList[self._lru]) self._lru ++ -} - -function del (self, hit) { - if (hit) { - if (self._dispose) self._dispose(hit.key, hit.value) - self._length -= hit.length - self._itemCount -- - delete self._cache[ hit.key ] - shiftLU(self, hit) - } -} - -// classy, since V8 prefers predictable objects. -function Entry (key, value, lu, length, now) { - this.key = key - this.value = value - this.lu = lu - this.length = length - this.now = now -} - -})() diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/package.json deleted file mode 100644 index 2474729..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "lru-cache", - "description": "A cache object that deletes the least-recently-used items.", - "version": "2.5.0", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me" - }, - "scripts": { - "test": "tap test --gc" - }, - "main": "lib/lru-cache.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-lru-cache.git" - }, - "devDependencies": { - "tap": "", - "weak": "" - }, - "license": { - "type": "MIT", - "url": "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE" - }, - "bugs": { - "url": "https://github.com/isaacs/node-lru-cache/issues" - }, - "homepage": "https://github.com/isaacs/node-lru-cache", - "_id": "lru-cache@2.5.0", - "dist": { - "shasum": "d82388ae9c960becbea0c73bb9eb79b6c6ce9aeb", - "tarball": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz" - }, - "_from": "lru-cache@2", - "_npmVersion": "1.3.15", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "d82388ae9c960becbea0c73bb9eb79b6c6ce9aeb", - "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/basic.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/basic.js deleted file mode 100644 index f72697c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/basic.js +++ /dev/null @@ -1,369 +0,0 @@ -var test = require("tap").test - , LRU = require("../") - -test("basic", function (t) { - var cache = new LRU({max: 10}) - cache.set("key", "value") - t.equal(cache.get("key"), "value") - t.equal(cache.get("nada"), undefined) - t.equal(cache.length, 1) - t.equal(cache.max, 10) - t.end() -}) - -test("least recently set", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), "B") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("lru recently gotten", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - cache.get("a") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), undefined) - t.equal(cache.get("a"), "A") - t.end() -}) - -test("del", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.del("a") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("max", function (t) { - var cache = new LRU(3) - - // test changing the max, verify that the LRU items get dropped. - cache.max = 100 - for (var i = 0; i < 100; i ++) cache.set(i, i) - t.equal(cache.length, 100) - for (var i = 0; i < 100; i ++) { - t.equal(cache.get(i), i) - } - cache.max = 3 - t.equal(cache.length, 3) - for (var i = 0; i < 97; i ++) { - t.equal(cache.get(i), undefined) - } - for (var i = 98; i < 100; i ++) { - t.equal(cache.get(i), i) - } - - // now remove the max restriction, and try again. - cache.max = "hello" - for (var i = 0; i < 100; i ++) cache.set(i, i) - t.equal(cache.length, 100) - for (var i = 0; i < 100; i ++) { - t.equal(cache.get(i), i) - } - // should trigger an immediate resize - cache.max = 3 - t.equal(cache.length, 3) - for (var i = 0; i < 97; i ++) { - t.equal(cache.get(i), undefined) - } - for (var i = 98; i < 100; i ++) { - t.equal(cache.get(i), i) - } - t.end() -}) - -test("reset", function (t) { - var cache = new LRU(10) - cache.set("a", "A") - cache.set("b", "B") - cache.reset() - t.equal(cache.length, 0) - t.equal(cache.max, 10) - t.equal(cache.get("a"), undefined) - t.equal(cache.get("b"), undefined) - t.end() -}) - - -// Note: `.dump()` is a debugging tool only. No guarantees are made -// about the format/layout of the response. -test("dump", function (t) { - var cache = new LRU(10) - var d = cache.dump(); - t.equal(Object.keys(d).length, 0, "nothing in dump for empty cache") - cache.set("a", "A") - var d = cache.dump() // { a: { key: "a", value: "A", lu: 0 } } - t.ok(d.a) - t.equal(d.a.key, "a") - t.equal(d.a.value, "A") - t.equal(d.a.lu, 0) - - cache.set("b", "B") - cache.get("b") - d = cache.dump() - t.ok(d.b) - t.equal(d.b.key, "b") - t.equal(d.b.value, "B") - t.equal(d.b.lu, 2) - - t.end() -}) - - -test("basic with weighed length", function (t) { - var cache = new LRU({ - max: 100, - length: function (item) { return item.size } - }) - cache.set("key", {val: "value", size: 50}) - t.equal(cache.get("key").val, "value") - t.equal(cache.get("nada"), undefined) - t.equal(cache.lengthCalculator(cache.get("key")), 50) - t.equal(cache.length, 50) - t.equal(cache.max, 100) - t.end() -}) - - -test("weighed length item too large", function (t) { - var cache = new LRU({ - max: 10, - length: function (item) { return item.size } - }) - t.equal(cache.max, 10) - - // should fall out immediately - cache.set("key", {val: "value", size: 50}) - - t.equal(cache.length, 0) - t.equal(cache.get("key"), undefined) - t.end() -}) - -test("least recently set with weighed length", function (t) { - var cache = new LRU({ - max:8, - length: function (item) { return item.length } - }) - cache.set("a", "A") - cache.set("b", "BB") - cache.set("c", "CCC") - cache.set("d", "DDDD") - t.equal(cache.get("d"), "DDDD") - t.equal(cache.get("c"), "CCC") - t.equal(cache.get("b"), undefined) - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("lru recently gotten with weighed length", function (t) { - var cache = new LRU({ - max: 8, - length: function (item) { return item.length } - }) - cache.set("a", "A") - cache.set("b", "BB") - cache.set("c", "CCC") - cache.get("a") - cache.get("b") - cache.set("d", "DDDD") - t.equal(cache.get("c"), undefined) - t.equal(cache.get("d"), "DDDD") - t.equal(cache.get("b"), "BB") - t.equal(cache.get("a"), "A") - t.end() -}) - -test("set returns proper booleans", function(t) { - var cache = new LRU({ - max: 5, - length: function (item) { return item.length } - }) - - t.equal(cache.set("a", "A"), true) - - // should return false for max exceeded - t.equal(cache.set("b", "donuts"), false) - - t.equal(cache.set("b", "B"), true) - t.equal(cache.set("c", "CCCC"), true) - t.end() -}) - -test("drop the old items", function(t) { - var cache = new LRU({ - max: 5, - maxAge: 50 - }) - - cache.set("a", "A") - - setTimeout(function () { - cache.set("b", "b") - t.equal(cache.get("a"), "A") - }, 25) - - setTimeout(function () { - cache.set("c", "C") - // timed out - t.notOk(cache.get("a")) - }, 60) - - setTimeout(function () { - t.notOk(cache.get("b")) - t.equal(cache.get("c"), "C") - }, 90) - - setTimeout(function () { - t.notOk(cache.get("c")) - t.end() - }, 155) -}) - -test("disposal function", function(t) { - var disposed = false - var cache = new LRU({ - max: 1, - dispose: function (k, n) { - disposed = n - } - }) - - cache.set(1, 1) - cache.set(2, 2) - t.equal(disposed, 1) - cache.set(3, 3) - t.equal(disposed, 2) - cache.reset() - t.equal(disposed, 3) - t.end() -}) - -test("disposal function on too big of item", function(t) { - var disposed = false - var cache = new LRU({ - max: 1, - length: function (k) { - return k.length - }, - dispose: function (k, n) { - disposed = n - } - }) - var obj = [ 1, 2 ] - - t.equal(disposed, false) - cache.set("obj", obj) - t.equal(disposed, obj) - t.end() -}) - -test("has()", function(t) { - var cache = new LRU({ - max: 1, - maxAge: 10 - }) - - cache.set('foo', 'bar') - t.equal(cache.has('foo'), true) - cache.set('blu', 'baz') - t.equal(cache.has('foo'), false) - t.equal(cache.has('blu'), true) - setTimeout(function() { - t.equal(cache.has('blu'), false) - t.end() - }, 15) -}) - -test("stale", function(t) { - var cache = new LRU({ - maxAge: 10, - stale: true - }) - - cache.set('foo', 'bar') - t.equal(cache.get('foo'), 'bar') - t.equal(cache.has('foo'), true) - setTimeout(function() { - t.equal(cache.has('foo'), false) - t.equal(cache.get('foo'), 'bar') - t.equal(cache.get('foo'), undefined) - t.end() - }, 15) -}) - -test("lru update via set", function(t) { - var cache = LRU({ max: 2 }); - - cache.set('foo', 1); - cache.set('bar', 2); - cache.del('bar'); - cache.set('baz', 3); - cache.set('qux', 4); - - t.equal(cache.get('foo'), undefined) - t.equal(cache.get('bar'), undefined) - t.equal(cache.get('baz'), 3) - t.equal(cache.get('qux'), 4) - t.end() -}) - -test("least recently set w/ peek", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - t.equal(cache.peek("a"), "A") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), "B") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("pop the least used item", function (t) { - var cache = new LRU(3) - , last - - cache.set("a", "A") - cache.set("b", "B") - cache.set("c", "C") - - t.equal(cache.length, 3) - t.equal(cache.max, 3) - - // Ensure we pop a, c, b - cache.get("b", "B") - - last = cache.pop() - t.equal(last.key, "a") - t.equal(last.value, "A") - t.equal(cache.length, 2) - t.equal(cache.max, 3) - - last = cache.pop() - t.equal(last.key, "c") - t.equal(last.value, "C") - t.equal(cache.length, 1) - t.equal(cache.max, 3) - - last = cache.pop() - t.equal(last.key, "b") - t.equal(last.value, "B") - t.equal(cache.length, 0) - t.equal(cache.max, 3) - - last = cache.pop() - t.equal(last, null) - t.equal(cache.length, 0) - t.equal(cache.max, 3) - - t.end() -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/foreach.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/foreach.js deleted file mode 100644 index eefb80d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/foreach.js +++ /dev/null @@ -1,52 +0,0 @@ -var test = require('tap').test -var LRU = require('../') - -test('forEach', function (t) { - var l = new LRU(5) - for (var i = 0; i < 10; i ++) { - l.set(i.toString(), i.toString(2)) - } - - var i = 9 - l.forEach(function (val, key, cache) { - t.equal(cache, l) - t.equal(key, i.toString()) - t.equal(val, i.toString(2)) - i -= 1 - }) - - // get in order of most recently used - l.get(6) - l.get(8) - - var order = [ 8, 6, 9, 7, 5 ] - var i = 0 - - l.forEach(function (val, key, cache) { - var j = order[i ++] - t.equal(cache, l) - t.equal(key, j.toString()) - t.equal(val, j.toString(2)) - }) - - t.end() -}) - -test('keys() and values()', function (t) { - var l = new LRU(5) - for (var i = 0; i < 10; i ++) { - l.set(i.toString(), i.toString(2)) - } - - t.similar(l.keys(), ['9', '8', '7', '6', '5']) - t.similar(l.values(), ['1001', '1000', '111', '110', '101']) - - // get in order of most recently used - l.get(6) - l.get(8) - - t.similar(l.keys(), ['8', '6', '9', '7', '5']) - t.similar(l.values(), ['1000', '110', '1001', '111', '101']) - - t.end() -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js deleted file mode 100644 index 7af45b0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env node --expose_gc - -var weak = require('weak'); -var test = require('tap').test -var LRU = require('../') -var l = new LRU({ max: 10 }) -var refs = 0 -function X() { - refs ++ - weak(this, deref) -} - -function deref() { - refs -- -} - -test('no leaks', function (t) { - // fill up the cache - for (var i = 0; i < 100; i++) { - l.set(i, new X); - // throw some gets in there, too. - if (i % 2 === 0) - l.get(i / 2) - } - - gc() - - var start = process.memoryUsage() - - // capture the memory - var startRefs = refs - - // do it again, but more - for (var i = 0; i < 10000; i++) { - l.set(i, new X); - // throw some gets in there, too. - if (i % 2 === 0) - l.get(i / 2) - } - - gc() - - var end = process.memoryUsage() - t.equal(refs, startRefs, 'no leaky refs') - - console.error('start: %j\n' + - 'end: %j', start, end); - t.pass(); - t.end(); -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/README.md deleted file mode 100644 index 7e36512..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# sigmund - -Quick and dirty signatures for Objects. - -This is like a much faster `deepEquals` comparison, which returns a -string key suitable for caches and the like. - -## Usage - -```javascript -function doSomething (someObj) { - var key = sigmund(someObj, maxDepth) // max depth defaults to 10 - var cached = cache.get(key) - if (cached) return cached) - - var result = expensiveCalculation(someObj) - cache.set(key, result) - return result -} -``` - -The resulting key will be as unique and reproducible as calling -`JSON.stringify` or `util.inspect` on the object, but is much faster. -In order to achieve this speed, some differences are glossed over. -For example, the object `{0:'foo'}` will be treated identically to the -array `['foo']`. - -Also, just as there is no way to summon the soul from the scribblings -of a cocain-addled psychoanalyst, there is no way to revive the object -from the signature string that sigmund gives you. In fact, it's -barely even readable. - -As with `sys.inspect` and `JSON.stringify`, larger objects will -produce larger signature strings. - -Because sigmund is a bit less strict than the more thorough -alternatives, the strings will be shorter, and also there is a -slightly higher chance for collisions. For example, these objects -have the same signature: - - var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} - var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} - -Like a good Freudian, sigmund is most effective when you already have -some understanding of what you're looking for. It can help you help -yourself, but you must be willing to do some work as well. - -Cycles are handled, and cyclical objects are silently omitted (though -the key is included in the signature output.) - -The second argument is the maximum depth, which defaults to 10, -because that is the maximum object traversal depth covered by most -insurance carriers. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/bench.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/bench.js deleted file mode 100644 index 5acfd6d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/bench.js +++ /dev/null @@ -1,283 +0,0 @@ -// different ways to id objects -// use a req/res pair, since it's crazy deep and cyclical - -// sparseFE10 and sigmund are usually pretty close, which is to be expected, -// since they are essentially the same algorithm, except that sigmund handles -// regular expression objects properly. - - -var http = require('http') -var util = require('util') -var sigmund = require('./sigmund.js') -var sreq, sres, creq, cres, test - -http.createServer(function (q, s) { - sreq = q - sres = s - sres.end('ok') - this.close(function () { setTimeout(function () { - start() - }, 200) }) -}).listen(1337, function () { - creq = http.get({ port: 1337 }) - creq.on('response', function (s) { cres = s }) -}) - -function start () { - test = [sreq, sres, creq, cres] - // test = sreq - // sreq.sres = sres - // sreq.creq = creq - // sreq.cres = cres - - for (var i in exports.compare) { - console.log(i) - var hash = exports.compare[i]() - console.log(hash) - console.log(hash.length) - console.log('') - } - - require('bench').runMain() -} - -function customWs (obj, md, d) { - d = d || 0 - var to = typeof obj - if (to === 'undefined' || to === 'function' || to === null) return '' - if (d > md || !obj || to !== 'object') return ('' + obj).replace(/[\n ]+/g, '') - - if (Array.isArray(obj)) { - return obj.map(function (i, _, __) { - return customWs(i, md, d + 1) - }).reduce(function (a, b) { return a + b }, '') - } - - var keys = Object.keys(obj) - return keys.map(function (k, _, __) { - return k + ':' + customWs(obj[k], md, d + 1) - }).reduce(function (a, b) { return a + b }, '') -} - -function custom (obj, md, d) { - d = d || 0 - var to = typeof obj - if (to === 'undefined' || to === 'function' || to === null) return '' - if (d > md || !obj || to !== 'object') return '' + obj - - if (Array.isArray(obj)) { - return obj.map(function (i, _, __) { - return custom(i, md, d + 1) - }).reduce(function (a, b) { return a + b }, '') - } - - var keys = Object.keys(obj) - return keys.map(function (k, _, __) { - return k + ':' + custom(obj[k], md, d + 1) - }).reduce(function (a, b) { return a + b }, '') -} - -function sparseFE2 (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - Object.keys(v).forEach(function (k, _, __) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') return - var to = typeof v[k] - if (to === 'function' || to === 'undefined') return - soFar += k + ':' - ch(v[k], depth + 1) - }) - soFar += '}' - } - ch(obj, 0) - return soFar -} - -function sparseFE (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - Object.keys(v).forEach(function (k, _, __) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') return - var to = typeof v[k] - if (to === 'function' || to === 'undefined') return - soFar += k - ch(v[k], depth + 1) - }) - } - ch(obj, 0) - return soFar -} - -function sparse (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k - ch(v[k], depth + 1) - } - } - ch(obj, 0) - return soFar -} - -function noCommas (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k + ':' - ch(v[k], depth + 1) - } - soFar += '}' - } - ch(obj, 0) - return soFar -} - - -function flatten (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k + ':' - ch(v[k], depth + 1) - soFar += ',' - } - soFar += '}' - } - ch(obj, 0) - return soFar -} - -exports.compare = -{ - // 'custom 2': function () { - // return custom(test, 2, 0) - // }, - // 'customWs 2': function () { - // return customWs(test, 2, 0) - // }, - 'JSON.stringify (guarded)': function () { - var seen = [] - return JSON.stringify(test, function (k, v) { - if (typeof v !== 'object' || !v) return v - if (seen.indexOf(v) !== -1) return undefined - seen.push(v) - return v - }) - }, - - 'flatten 10': function () { - return flatten(test, 10) - }, - - // 'flattenFE 10': function () { - // return flattenFE(test, 10) - // }, - - 'noCommas 10': function () { - return noCommas(test, 10) - }, - - 'sparse 10': function () { - return sparse(test, 10) - }, - - 'sparseFE 10': function () { - return sparseFE(test, 10) - }, - - 'sparseFE2 10': function () { - return sparseFE2(test, 10) - }, - - sigmund: function() { - return sigmund(test, 10) - }, - - - // 'util.inspect 1': function () { - // return util.inspect(test, false, 1, false) - // }, - // 'util.inspect undefined': function () { - // util.inspect(test) - // }, - // 'util.inspect 2': function () { - // util.inspect(test, false, 2, false) - // }, - // 'util.inspect 3': function () { - // util.inspect(test, false, 3, false) - // }, - // 'util.inspect 4': function () { - // util.inspect(test, false, 4, false) - // }, - // 'util.inspect Infinity': function () { - // util.inspect(test, false, Infinity, false) - // } -} - -/** results -**/ diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/package.json deleted file mode 100644 index a1f755a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "sigmund", - "version": "1.0.0", - "description": "Quick and dirty signatures for Objects.", - "main": "sigmund.js", - "directories": { - "test": "test" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.3.0" - }, - "scripts": { - "test": "tap test/*.js", - "bench": "node bench.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/sigmund" - }, - "keywords": [ - "object", - "signature", - "key", - "data", - "psychoanalysis" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "BSD", - "readme": "# sigmund\n\nQuick and dirty signatures for Objects.\n\nThis is like a much faster `deepEquals` comparison, which returns a\nstring key suitable for caches and the like.\n\n## Usage\n\n```javascript\nfunction doSomething (someObj) {\n var key = sigmund(someObj, maxDepth) // max depth defaults to 10\n var cached = cache.get(key)\n if (cached) return cached)\n\n var result = expensiveCalculation(someObj)\n cache.set(key, result)\n return result\n}\n```\n\nThe resulting key will be as unique and reproducible as calling\n`JSON.stringify` or `util.inspect` on the object, but is much faster.\nIn order to achieve this speed, some differences are glossed over.\nFor example, the object `{0:'foo'}` will be treated identically to the\narray `['foo']`.\n\nAlso, just as there is no way to summon the soul from the scribblings\nof a cocain-addled psychoanalyst, there is no way to revive the object\nfrom the signature string that sigmund gives you. In fact, it's\nbarely even readable.\n\nAs with `sys.inspect` and `JSON.stringify`, larger objects will\nproduce larger signature strings.\n\nBecause sigmund is a bit less strict than the more thorough\nalternatives, the strings will be shorter, and also there is a\nslightly higher chance for collisions. For example, these objects\nhave the same signature:\n\n var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]}\n var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']}\n\nLike a good Freudian, sigmund is most effective when you already have\nsome understanding of what you're looking for. It can help you help\nyourself, but you must be willing to do some work as well.\n\nCycles are handled, and cyclical objects are silently omitted (though\nthe key is included in the signature output.)\n\nThe second argument is the maximum depth, which defaults to 10,\nbecause that is the maximum object traversal depth covered by most\ninsurance carriers.\n", - "_id": "sigmund@1.0.0", - "dist": { - "shasum": "66a2b3a749ae8b5fb89efd4fcc01dc94fbe02296", - "tarball": "http://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz" - }, - "_npmVersion": "1.1.48", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "_shasum": "66a2b3a749ae8b5fb89efd4fcc01dc94fbe02296", - "_from": "sigmund@~1.0.0", - "_resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz", - "bugs": { - "url": "https://github.com/isaacs/sigmund/issues" - }, - "homepage": "https://github.com/isaacs/sigmund" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/sigmund.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/sigmund.js deleted file mode 100644 index 82c7ab8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/sigmund.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = sigmund -function sigmund (subject, maxSessions) { - maxSessions = maxSessions || 10; - var notes = []; - var analysis = ''; - var RE = RegExp; - - function psychoAnalyze (subject, session) { - if (session > maxSessions) return; - - if (typeof subject === 'function' || - typeof subject === 'undefined') { - return; - } - - if (typeof subject !== 'object' || !subject || - (subject instanceof RE)) { - analysis += subject; - return; - } - - if (notes.indexOf(subject) !== -1 || session === maxSessions) return; - - notes.push(subject); - analysis += '{'; - Object.keys(subject).forEach(function (issue, _, __) { - // pseudo-private values. skip those. - if (issue.charAt(0) === '_') return; - var to = typeof subject[issue]; - if (to === 'function' || to === 'undefined') return; - analysis += issue; - psychoAnalyze(subject[issue], session + 1); - }); - } - psychoAnalyze(subject, 0); - return analysis; -} - -// vim: set softtabstop=4 shiftwidth=4: diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/test/basic.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/test/basic.js deleted file mode 100644 index 50c53a1..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/sigmund/test/basic.js +++ /dev/null @@ -1,24 +0,0 @@ -var test = require('tap').test -var sigmund = require('../sigmund.js') - - -// occasionally there are duplicates -// that's an acceptable edge-case. JSON.stringify and util.inspect -// have some collision potential as well, though less, and collision -// detection is expensive. -var hash = '{abc/def/g{0h1i2{jkl' -var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} -var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} - -var obj3 = JSON.parse(JSON.stringify(obj1)) -obj3.c = /def/ -obj3.g[2].cycle = obj3 -var cycleHash = '{abc/def/g{0h1i2{jklcycle' - -test('basic', function (t) { - t.equal(sigmund(obj1), hash) - t.equal(sigmund(obj2), hash) - t.equal(sigmund(obj3), cycleHash) - t.end() -}) - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/package.json deleted file mode 100644 index 441cdca..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "minimatch", - "description": "a glob matcher in javascript", - "version": "0.2.14", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/minimatch.git" - }, - "main": "minimatch.js", - "scripts": { - "test": "tap test/*.js" - }, - "engines": { - "node": "*" - }, - "dependencies": { - "lru-cache": "2", - "sigmund": "~1.0.0" - }, - "devDependencies": { - "tap": "" - }, - "license": { - "type": "MIT", - "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE" - }, - "bugs": { - "url": "https://github.com/isaacs/minimatch/issues" - }, - "homepage": "https://github.com/isaacs/minimatch", - "_id": "minimatch@0.2.14", - "dist": { - "shasum": "c74e780574f63c6f9a090e90efbe6ef53a6a756a", - "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz" - }, - "_from": "minimatch@~0.2.0", - "_npmVersion": "1.3.17", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "c74e780574f63c6f9a090e90efbe6ef53a6a756a", - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/basic.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/basic.js deleted file mode 100644 index ae7ac73..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/basic.js +++ /dev/null @@ -1,399 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - - -var patterns = - [ "http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - // https://github.com/isaacs/minimatch/issues/5 - , function () { - files = [ 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' - , 'a/b/.x' - , 'a/b/.x/' - , 'a/.x/b' - , '.x' - , '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b/.x/c' - , '.x/.x' ] - } - , ["**/.x/**", [ '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b' - , 'a/b/.x/' - , 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' ] ] - - ] - -var regexps = - [ '/^(?:(?=.)a[^/]*?)$/', - '/^(?:(?=.)X[^/]*?)$/', - '/^(?:(?=.)X[^/]*?)$/', - '/^(?:\\*)$/', - '/^(?:(?=.)\\*[^/]*?)$/', - '/^(?:\\*\\*)$/', - '/^(?:(?=.)b[^/]*?\\/)$/', - '/^(?:(?=.)c[^/]*?)$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', - '/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/', - '/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/', - '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/', - '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\u0001\\/)$/', - '/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/', - '/^(?:(?=.)a[^/]*?[^c])$/', - '/^(?:(?=.)a[X-]b)$/', - '/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/', - '/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/', - '/^(?:(?=.)a[b]c)$/', - '/^(?:(?=.)a[b]c)$/', - '/^(?:(?=.)a[^/]c)$/', - '/^(?:a\\*c)$/', - 'false', - '/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/', - '/^(?:man\\/man1\\/bash\\.1)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[-abc])$/', - '/^(?:(?!\\.)(?=.)[abc-])$/', - '/^(?:\\\\)$/', - '/^(?:(?!\\.)(?=.)[\\\\])$/', - '/^(?:(?!\\.)(?=.)[\\[])$/', - '/^(?:\\[)$/', - '/^(?:(?=.)\\[(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[\\]])$/', - '/^(?:(?!\\.)(?=.)[\\]-])$/', - '/^(?:(?!\\.)(?=.)[a-z])$/', - '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:\\[\\])$/', - '/^(?:\\[abc)$/', - '/^(?:(?=.)XYZ)$/i', - '/^(?:(?=.)ab[^/]*?)$/i', - '/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i', - '/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/', - '/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', - '/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/', - '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', - '/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/', - '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', - '/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\/b\\))$/', - '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:(?=.)\\[(?=.)\\!a[^/]*?)$/', - '/^(?:(?=.)\\[(?=.)#a[^/]*?)$/', - '/^(?:(?=.)\\+\\(a\\|[^/]*?\\|c\\\\\\\\\\|d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\|g)$/', - '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:a|(?!\\.)(?=.)[^/]*?\\(b\\|c|d\\))$/', - '/^(?:a|(?!\\.)(?=.)(?:b|c)*|(?!\\.)(?=.)(?:b|d)*)$/', - '/^(?:(?!\\.)(?=.)(?:a|b|c)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/', - '/^(?:(?=.)a[^/]b)$/', - '/^(?:(?=.)#[^/]*?)$/', - '/^(?!^(?:(?=.)a[^/]*?)$).*$/', - '/^(?:(?=.)\\!a[^/]*?)$/', - '/^(?:(?=.)a[^/]*?)$/', - '/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!js)[^/]*?))$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?\\/\\.x\\/(?:(?!(?:\\/|^)\\.).)*?)$/' ] -var re = 0; - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - patterns.forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] || {} - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var m = new mm.Minimatch(pattern, options) - var r = m.makeRe() - var expectRe = regexps[re++] - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - - t.equal(tapOpts.re, expectRe, tapOpts) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/brace-expand.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/brace-expand.js deleted file mode 100644 index 7ee278a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/brace-expand.js +++ /dev/null @@ -1,33 +0,0 @@ -var tap = require("tap") - , minimatch = require("../") - -tap.test("brace expansion", function (t) { - // [ pattern, [expanded] ] - ; [ [ "a{b,c{d,e},{f,g}h}x{y,z}" - , [ "abxy" - , "abxz" - , "acdxy" - , "acdxz" - , "acexy" - , "acexz" - , "afhxy" - , "afhxz" - , "aghxy" - , "aghxz" ] ] - , [ "a{1..5}b" - , [ "a1b" - , "a2b" - , "a3b" - , "a4b" - , "a5b" ] ] - , [ "a{b}c", ["a{b}c"] ] - ].forEach(function (tc) { - var p = tc[0] - , expect = tc[1] - t.equivalent(minimatch.braceExpand(p), expect, p) - }) - console.error("ending") - t.end() -}) - - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/caching.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/caching.js deleted file mode 100644 index 0fec4b0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/caching.js +++ /dev/null @@ -1,14 +0,0 @@ -var Minimatch = require("../minimatch.js").Minimatch -var tap = require("tap") -tap.test("cache test", function (t) { - var mm1 = new Minimatch("a?b") - var mm2 = new Minimatch("a?b") - t.equal(mm1, mm2, "should get the same object") - // the lru should drop it after 100 entries - for (var i = 0; i < 100; i ++) { - new Minimatch("a"+i) - } - mm2 = new Minimatch("a?b") - t.notEqual(mm1, mm2, "cache should have dropped") - t.end() -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/defaults.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/defaults.js deleted file mode 100644 index 25f1f60..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/defaults.js +++ /dev/null @@ -1,274 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - ; [ "http://www.bashcookbook.com/bashinfo" + - "/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - ].forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] || {} - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var Class = mm.defaults(options).Minimatch - var m = new Class(pattern, {}) - var r = m.makeRe() - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/extglob-ending-with-state-char.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/extglob-ending-with-state-char.js deleted file mode 100644 index 6676e26..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/test/extglob-ending-with-state-char.js +++ /dev/null @@ -1,8 +0,0 @@ -var test = require('tap').test -var minimatch = require('../') - -test('extglob ending with statechar', function(t) { - t.notOk(minimatch('ax', 'a?(b*)')) - t.ok(minimatch('ax', '?(a*|b)')) - t.end() -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/package.json deleted file mode 100644 index 06d6ed9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "fstream-ignore", - "description": "A thing for ignoring files based on globs", - "version": "0.0.7", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/fstream-ignore.git" - }, - "main": "ignore.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "minimatch": "~0.2.0", - "fstream": "~0.1.17", - "inherits": "2" - }, - "devDependencies": { - "tap": "", - "rimraf": "", - "mkdirp": "" - }, - "license": "BSD", - "bugs": { - "url": "https://github.com/isaacs/fstream-ignore/issues" - }, - "_id": "fstream-ignore@0.0.7", - "dist": { - "shasum": "eea3033f0c3728139de7b57ab1b0d6d89c353c63", - "tarball": "http://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.7.tgz" - }, - "_from": "fstream-ignore@0.0.7", - "_npmVersion": "1.2.23", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "eea3033f0c3728139de7b57ab1b0d6d89c353c63", - "_resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.7.tgz", - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/isaacs/fstream-ignore" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/.ignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/.ignore deleted file mode 100644 index 773679d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/.ignore +++ /dev/null @@ -1,2 +0,0 @@ -.gitignore -.*.swp diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/.npmignore deleted file mode 100644 index 1b26d0d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/.npmignore +++ /dev/null @@ -1 +0,0 @@ -*/a diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/00-setup.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/00-setup.js deleted file mode 100644 index 7d7e4a1..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/00-setup.js +++ /dev/null @@ -1,71 +0,0 @@ -// The test fixtures work like this: -// These dirs are all created: {a,b,c}/{a,b,c}/{a,b,c}/ -// in each one, these files are created: -// {.,}{a,b,c}{a,b,c}{a,b,c} -// -// So, there'll be a/b/c/abc, a/b/c/aba, etc., and dot-versions of each. -// -// Each test then writes their own ignore file rules for their purposes, -// and is responsible for removing them afterwards. - -var mkdirp = require("mkdirp") -var path = require("path") -var i = 0 -var tap = require("tap") -var fs = require("fs") -var rimraf = require("rimraf") -var fixtures = path.resolve(__dirname, "fixtures") - -var chars = ['a', 'b', 'c'] -var dirs = [] - -for (var i = 0; i < 3; i ++) { - for (var j = 0; j < 3; j ++) { - for (var k = 0; k < 3; k ++) { - dirs.push(chars[i] + '/' + chars[j] + '/' + chars[k]) - } - } -} - -var files = [] - -for (var i = 0; i < 3; i ++) { - for (var j = 0; j < 3; j ++) { - for (var k = 0; k < 3; k ++) { - files.push(chars[i] + chars[j] + chars[k]) - files.push('.' + chars[i] + chars[j] + chars[k]) - } - } -} - -tap.test("remove fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "remove fixtures") - t.end() - }) -}) - -tap.test("create fixtures", function (t) { - dirs.forEach(function (dir) { - dir = path.resolve(fixtures, dir) - t.test("mkdir "+dir, function (t) { - mkdirp(dir, function (er) { - t.ifError(er, "mkdir "+dir) - if (er) return t.end() - - files.forEach(function (file) { - file = path.resolve(dir, file) - t.test("writeFile "+file, function (t) { - fs.writeFile(file, path.basename(file), function (er) { - t.ifError(er, "writing "+file) - t.end() - }) - }) - }) - t.end() - }) - }) - }) - t.end() -}) - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/basic.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/basic.js deleted file mode 100644 index 3718076..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/basic.js +++ /dev/null @@ -1,28 +0,0 @@ -var IgnoreFile = require("../") - -// set the ignores just for this test -var c = require("./common.js") -c.ignores({ "a/.basic-ignore": ["b/", "aca"] }) - -// the files that we expect to not see -var notAllowed = - [ /^\/a\/b\/.*/ - , /^\/a\/.*\/aca$/ ] - - -require("tap").test("basic ignore rules", function (t) { - t.pass("start") - - IgnoreFile({ path: __dirname + "/fixtures" - , ignoreFiles: [".basic-ignore"] }) - .on("ignoreFile", function (e) { - console.error("ignore file!", e) - }) - .on("child", function (e) { - var p = e.path.substr(e.root.path.length) - notAllowed.forEach(function (na) { - t.dissimilar(p, na) - }) - }) - .on("close", t.end.bind(t)) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/common.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/common.js deleted file mode 100644 index 0e6cd98..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/common.js +++ /dev/null @@ -1,40 +0,0 @@ -if (require.main === module) { - console.log("0..1") - console.log("ok 1 trivial pass") - return -} - -var fs = require("fs") -var path = require("path") -var rimraf = require("rimraf") - -exports.ignores = ignores -exports.writeIgnoreFile = writeIgnoreFile -exports.writeIgnores = writeIgnores -exports.clearIgnores = clearIgnores - -function writeIgnoreFile (file, rules) { - file = path.resolve(__dirname, "fixtures", file) - if (Array.isArray(rules)) { - rules = rules.join("\n") - } - fs.writeFileSync(file, rules) - console.error(file, rules) -} - -function writeIgnores (set) { - Object.keys(set).forEach(function (f) { - writeIgnoreFile(f, set[f]) - }) -} - -function clearIgnores (set) { - Object.keys(set).forEach(function (file) { - fs.unlinkSync(path.resolve(__dirname, "fixtures", file)) - }) -} - -function ignores (set) { - writeIgnores(set) - process.on("exit", clearIgnores.bind(null, set)) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/ignore-most.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/ignore-most.js deleted file mode 100644 index 43eec4b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/ignore-most.js +++ /dev/null @@ -1,41 +0,0 @@ -// ignore most things -var IgnoreFile = require("../") - -// set the ignores just for this test -var c = require("./common.js") -c.ignores({ ".ignore": ["*", "!a/b/c/.abc", "!/c/b/a/cba"] }) - -// the only files we expect to see -var expected = - [ "/a/b/c/.abc" - , "/a" - , "/a/b" - , "/a/b/c" - , "/c/b/a/cba" - , "/c" - , "/c/b" - , "/c/b/a" ] - -require("tap").test("basic ignore rules", function (t) { - t.pass("start") - - IgnoreFile({ path: __dirname + "/fixtures" - , ignoreFiles: [".ignore"] }) - .on("ignoreFile", function (e) { - console.error("ignore file!", e) - }) - .on("child", function (e) { - var p = e.path.substr(e.root.path.length) - var i = expected.indexOf(p) - if (i === -1) { - t.fail("unexpected file found", {file: p}) - } else { - t.pass(p) - expected.splice(i, 1) - } - }) - .on("close", function () { - t.notOk(expected.length, "all expected files should be seen") - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/nested-ignores.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/nested-ignores.js deleted file mode 100644 index a9ede59..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/nested-ignores.js +++ /dev/null @@ -1,51 +0,0 @@ -// ignore most things -var IgnoreFile = require("../") - -// set the ignores just for this test -var c = require("./common.js") -c.ignores( - { ".ignore": ["*", "a", "c", "!a/b/c/.abc", "!/c/b/a/cba"] - , "a/.ignore": [ "!*", ".ignore" ] // unignore everything - , "a/a/.ignore": [ "*" ] // re-ignore everything - , "a/b/.ignore": [ "*", "!/c/.abc" ] // original unignore - , "a/c/.ignore": [ "*" ] // ignore everything again - , "c/b/a/.ignore": [ "!cba", "!.cba", "!/a{bc,cb}" ] - }) - -// the only files we expect to see -var expected = - [ "/a" - , "/a/a" - , "/a/b" - , "/a/b/c" - , "/a/b/c/.abc" - , "/a/c" - , "/c" - , "/c/b" - , "/c/b/a" - , "/c/b/a/cba" - , "/c/b/a/.cba" - , "/c/b/a/abc" - , "/c/b/a/acb" ] - -require("tap").test("basic ignore rules", function (t) { - t.pass("start") - - IgnoreFile({ path: __dirname + "/fixtures" - , ignoreFiles: [".ignore"] }) - .on("child", function (e) { - var p = e.path.substr(e.root.path.length) - var i = expected.indexOf(p) - if (i === -1) { - console.log("not ok "+p) - t.fail("unexpected file found", {found: p}) - } else { - t.pass(p) - expected.splice(i, 1) - } - }) - .on("close", function () { - t.deepEqual(expected, [], "all expected files should be seen") - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/unignore-child.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/unignore-child.js deleted file mode 100644 index 5812354..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/unignore-child.js +++ /dev/null @@ -1,38 +0,0 @@ -// ignore most things -var IgnoreFile = require("../") - -// set the ignores just for this test -var c = require("./common.js") -c.ignores({ ".ignore": ["*", "a", "c", "!a/b/c/.abc", "!/c/b/a/cba"] }) - -// the only files we expect to see -var expected = - [ "/a/b/c/.abc" - , "/a" - , "/a/b" - , "/a/b/c" - , "/c/b/a/cba" - , "/c" - , "/c/b" - , "/c/b/a" ] - -require("tap").test("basic ignore rules", function (t) { - t.pass("start") - - IgnoreFile({ path: __dirname + "/fixtures" - , ignoreFiles: [".ignore"] }) - .on("child", function (e) { - var p = e.path.substr(e.root.path.length) - var i = expected.indexOf(p) - if (i === -1) { - t.fail("unexpected file found", {f: p}) - } else { - t.pass(p) - expected.splice(i, 1) - } - }) - .on("close", function () { - t.notOk(expected.length, "all expected files should be seen") - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/zz-cleanup.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/zz-cleanup.js deleted file mode 100644 index 82f064a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/test/zz-cleanup.js +++ /dev/null @@ -1,10 +0,0 @@ -var tap = require("tap") -, rimraf = require("rimraf") -, path = require("path") - -tap.test("remove fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "remove fixtures") - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/.npmignore deleted file mode 100644 index 494272a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.*.swp -node_modules/ -examples/deep-copy/ -examples/path/ -examples/filter-copy/ diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/.travis.yml deleted file mode 100644 index 2d26206..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/README.md deleted file mode 100644 index 9d8cb77..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/README.md +++ /dev/null @@ -1,76 +0,0 @@ -Like FS streams, but with stat on them, and supporting directories and -symbolic links, as well as normal files. Also, you can use this to set -the stats on a file, even if you don't change its contents, or to create -a symlink, etc. - -So, for example, you can "write" a directory, and it'll call `mkdir`. You -can specify a uid and gid, and it'll call `chown`. You can specify a -`mtime` and `atime`, and it'll call `utimes`. You can call it a symlink -and provide a `linkpath` and it'll call `symlink`. - -Note that it won't automatically resolve symbolic links. So, if you -call `fstream.Reader('/some/symlink')` then you'll get an object -that stats and then ends immediately (since it has no data). To follow -symbolic links, do this: `fstream.Reader({path:'/some/symlink', follow: -true })`. - -There are various checks to make sure that the bytes emitted are the -same as the intended size, if the size is set. - -## Examples - -```javascript -fstream - .Writer({ path: "path/to/file" - , mode: 0755 - , size: 6 - }) - .write("hello\n") - .end() -``` - -This will create the directories if they're missing, and then write -`hello\n` into the file, chmod it to 0755, and assert that 6 bytes have -been written when it's done. - -```javascript -fstream - .Writer({ path: "path/to/file" - , mode: 0755 - , size: 6 - , flags: "a" - }) - .write("hello\n") - .end() -``` - -You can pass flags in, if you want to append to a file. - -```javascript -fstream - .Writer({ path: "path/to/symlink" - , linkpath: "./file" - , SymbolicLink: true - , mode: "0755" // octal strings supported - }) - .end() -``` - -If isSymbolicLink is a function, it'll be called, and if it returns -true, then it'll treat it as a symlink. If it's not a function, then -any truish value will make a symlink, or you can set `type: -'SymbolicLink'`, which does the same thing. - -Note that the linkpath is relative to the symbolic link location, not -the parent dir or cwd. - -```javascript -fstream - .Reader("path/to/dir") - .pipe(fstream.Writer("path/to/other/dir")) -``` - -This will do like `cp -Rp path/to/dir path/to/other/dir`. If the other -dir exists and isn't a directory, then it'll emit an error. It'll also -set the uid, gid, mode, etc. to be identical. In this way, it's more -like `rsync -a` than simply a copy. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/filter-pipe.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/filter-pipe.js deleted file mode 100644 index c6b55b3..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/filter-pipe.js +++ /dev/null @@ -1,131 +0,0 @@ -var fstream = require("../fstream.js") -var path = require("path") - -var r = fstream.Reader({ path: path.dirname(__dirname) - , filter: function () { - return !this.basename.match(/^\./) && - !this.basename.match(/^node_modules$/) - !this.basename.match(/^deep-copy$/) - !this.basename.match(/^filter-copy$/) - } - }) - -// this writer will only write directories -var w = fstream.Writer({ path: path.resolve(__dirname, "filter-copy") - , type: "Directory" - , filter: function () { - return this.type === "Directory" - } - }) - -var indent = "" -var escape = {} - -r.on("entry", appears) -r.on("ready", function () { - console.error("ready to begin!", r.path) -}) - -function appears (entry) { - console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename) - if (foggy) { - console.error("FOGGY!") - var p = entry - do { - console.error(p.depth, p.path, p._paused) - } while (p = p.parent) - - throw new Error("\033[mshould not have entries while foggy") - } - indent += "\t" - entry.on("data", missile(entry)) - entry.on("end", runaway(entry)) - entry.on("entry", appears) -} - -var foggy -function missile (entry) { - if (entry.type === "Directory") { - var ended = false - entry.once("end", function () { ended = true }) - return function (c) { - // throw in some pathological pause()/resume() behavior - // just for extra fun. - process.nextTick(function () { - if (!foggy && !ended) { // && Math.random() < 0.3) { - console.error(indent +"%s casts a spell", entry.basename) - console.error("\na slowing fog comes over the battlefield...\n\033[32m") - entry.pause() - entry.once("resume", liftFog) - foggy = setTimeout(liftFog, 1000) - - function liftFog (who) { - if (!foggy) return - if (who) { - console.error("%s breaks the spell!", who && who.path) - } else { - console.error("the spell expires!") - } - console.error("\033[mthe fog lifts!\n") - clearTimeout(foggy) - foggy = null - if (entry._paused) entry.resume() - } - - } - }) - } - } - - return function (c) { - var e = Math.random() < 0.5 - console.error(indent + "%s %s for %d damage!", - entry.basename, - e ? "is struck" : "fires a chunk", - c.length) - } -} - -function runaway (entry) { return function () { - var e = Math.random() < 0.5 - console.error(indent + "%s %s", - entry.basename, - e ? "turns to flee" : "is vanquished!") - indent = indent.slice(0, -1) -}} - - -w.on("entry", attacks) -//w.on("ready", function () { attacks(w) }) -function attacks (entry) { - console.error(indent + "%s %s!", entry.basename, - entry.type === "Directory" ? "calls for backup" : "attacks") - entry.on("entry", attacks) -} - -ended = false -var i = 1 -r.on("end", function () { - if (foggy) clearTimeout(foggy) - console.error("\033[mIT'S OVER!!") - console.error("A WINNAR IS YOU!") - - console.log("ok " + (i ++) + " A WINNAR IS YOU") - ended = true - // now go through and verify that everything in there is a dir. - var p = path.resolve(__dirname, "filter-copy") - var checker = fstream.Reader({ path: p }) - checker.checker = true - checker.on("child", function (e) { - var ok = e.type === "Directory" - console.log((ok ? "" : "not ") + "ok " + (i ++) + - " should be a dir: " + - e.path.substr(checker.path.length + 1)) - }) -}) - -process.on("exit", function () { - console.log((ended ? "" : "not ") + "ok " + (i ++) + " ended") -}) - -r.pipe(w) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/pipe.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/pipe.js deleted file mode 100644 index 648ec84..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/pipe.js +++ /dev/null @@ -1,115 +0,0 @@ -var fstream = require("../fstream.js") -var path = require("path") - -var r = fstream.Reader({ path: path.dirname(__dirname) - , filter: function () { - return !this.basename.match(/^\./) && - !this.basename.match(/^node_modules$/) - !this.basename.match(/^deep-copy$/) - } - }) - -var w = fstream.Writer({ path: path.resolve(__dirname, "deep-copy") - , type: "Directory" - }) - -var indent = "" -var escape = {} - -r.on("entry", appears) -r.on("ready", function () { - console.error("ready to begin!", r.path) -}) - -function appears (entry) { - console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename, entry) - if (foggy) { - console.error("FOGGY!") - var p = entry - do { - console.error(p.depth, p.path, p._paused) - } while (p = p.parent) - - throw new Error("\033[mshould not have entries while foggy") - } - indent += "\t" - entry.on("data", missile(entry)) - entry.on("end", runaway(entry)) - entry.on("entry", appears) -} - -var foggy -function missile (entry) { - if (entry.type === "Directory") { - var ended = false - entry.once("end", function () { ended = true }) - return function (c) { - // throw in some pathological pause()/resume() behavior - // just for extra fun. - process.nextTick(function () { - if (!foggy && !ended) { // && Math.random() < 0.3) { - console.error(indent +"%s casts a spell", entry.basename) - console.error("\na slowing fog comes over the battlefield...\n\033[32m") - entry.pause() - entry.once("resume", liftFog) - foggy = setTimeout(liftFog, 10) - - function liftFog (who) { - if (!foggy) return - if (who) { - console.error("%s breaks the spell!", who && who.path) - } else { - console.error("the spell expires!") - } - console.error("\033[mthe fog lifts!\n") - clearTimeout(foggy) - foggy = null - if (entry._paused) entry.resume() - } - - } - }) - } - } - - return function (c) { - var e = Math.random() < 0.5 - console.error(indent + "%s %s for %d damage!", - entry.basename, - e ? "is struck" : "fires a chunk", - c.length) - } -} - -function runaway (entry) { return function () { - var e = Math.random() < 0.5 - console.error(indent + "%s %s", - entry.basename, - e ? "turns to flee" : "is vanquished!") - indent = indent.slice(0, -1) -}} - - -w.on("entry", attacks) -//w.on("ready", function () { attacks(w) }) -function attacks (entry) { - console.error(indent + "%s %s!", entry.basename, - entry.type === "Directory" ? "calls for backup" : "attacks") - entry.on("entry", attacks) -} - -ended = false -r.on("end", function () { - if (foggy) clearTimeout(foggy) - console.error("\033[mIT'S OVER!!") - console.error("A WINNAR IS YOU!") - - console.log("ok 1 A WINNAR IS YOU") - ended = true -}) - -process.on("exit", function () { - console.log((ended ? "" : "not ") + "ok 2 ended") -}) - -r.pipe(w) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/reader.js deleted file mode 100644 index 9aa1a95..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/reader.js +++ /dev/null @@ -1,54 +0,0 @@ -var fstream = require("../fstream.js") -var tap = require("tap") -var fs = require("fs") -var path = require("path") -var children = -1 -var dir = path.dirname(__dirname) - -var gotReady = false -var ended = false - -tap.test("reader test", function (t) { - - var r = fstream.Reader({ path: dir - , filter: function () { - // return this.parent === r - return this.parent === r || this === r - } - }) - - r.on("ready", function () { - gotReady = true - children = fs.readdirSync(dir).length - console.error("Setting expected children to "+children) - t.equal(r.type, "Directory", "should be a directory") - }) - - r.on("entry", function (entry) { - children -- - if (!gotReady) { - t.fail("children before ready!") - } - t.equal(entry.dirname, r.path, "basename is parent dir") - }) - - r.on("error", function (er) { - t.fail(er) - t.end() - process.exit(1) - }) - - r.on("end", function () { - t.equal(children, 0, "should have seen all children") - ended = true - }) - - var closed = false - r.on("close", function () { - t.ok(ended, "saw end before close") - t.notOk(closed, "close should only happen once") - closed = true - t.end() - }) - -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/symlink-write.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/symlink-write.js deleted file mode 100644 index d7816d2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/symlink-write.js +++ /dev/null @@ -1,24 +0,0 @@ -var fstream = require("../fstream.js") - , closed = false - -fstream - .Writer({ path: "path/to/symlink" - , linkpath: "./file" - , isSymbolicLink: true - , mode: "0755" // octal strings supported - }) - .on("close", function () { - closed = true - var fs = require("fs") - var s = fs.lstatSync("path/to/symlink") - var isSym = s.isSymbolicLink() - console.log((isSym?"":"not ") +"ok 1 should be symlink") - var t = fs.readlinkSync("path/to/symlink") - var isTarget = t === "./file" - console.log((isTarget?"":"not ") +"ok 2 should link to ./file") - }) - .end() - -process.on("exit", function () { - console.log((closed?"":"not ")+"ok 3 should be closed") -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/fstream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/fstream.js deleted file mode 100644 index c66d26f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/fstream.js +++ /dev/null @@ -1,31 +0,0 @@ -exports.Abstract = require("./lib/abstract.js") -exports.Reader = require("./lib/reader.js") -exports.Writer = require("./lib/writer.js") - -exports.File = - { Reader: require("./lib/file-reader.js") - , Writer: require("./lib/file-writer.js") } - -exports.Dir = - { Reader : require("./lib/dir-reader.js") - , Writer : require("./lib/dir-writer.js") } - -exports.Link = - { Reader : require("./lib/link-reader.js") - , Writer : require("./lib/link-writer.js") } - -exports.Proxy = - { Reader : require("./lib/proxy-reader.js") - , Writer : require("./lib/proxy-writer.js") } - -exports.Reader.Dir = exports.DirReader = exports.Dir.Reader -exports.Reader.File = exports.FileReader = exports.File.Reader -exports.Reader.Link = exports.LinkReader = exports.Link.Reader -exports.Reader.Proxy = exports.ProxyReader = exports.Proxy.Reader - -exports.Writer.Dir = exports.DirWriter = exports.Dir.Writer -exports.Writer.File = exports.FileWriter = exports.File.Writer -exports.Writer.Link = exports.LinkWriter = exports.Link.Writer -exports.Writer.Proxy = exports.ProxyWriter = exports.Proxy.Writer - -exports.collect = require("./lib/collect.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/abstract.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/abstract.js deleted file mode 100644 index 11ef0e2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/abstract.js +++ /dev/null @@ -1,85 +0,0 @@ -// the parent class for all fstreams. - -module.exports = Abstract - -var Stream = require("stream").Stream - , inherits = require("inherits") - -function Abstract () { - Stream.call(this) -} - -inherits(Abstract, Stream) - -Abstract.prototype.on = function (ev, fn) { - if (ev === "ready" && this.ready) { - process.nextTick(fn.bind(this)) - } else { - Stream.prototype.on.call(this, ev, fn) - } - return this -} - -Abstract.prototype.abort = function () { - this._aborted = true - this.emit("abort") -} - -Abstract.prototype.destroy = function () {} - -Abstract.prototype.warn = function (msg, code) { - var me = this - , er = decorate(msg, code, me) - if (!me.listeners("warn")) { - console.error("%s %s\n" + - "path = %s\n" + - "syscall = %s\n" + - "fstream_type = %s\n" + - "fstream_path = %s\n" + - "fstream_unc_path = %s\n" + - "fstream_class = %s\n" + - "fstream_stack =\n%s\n", - code || "UNKNOWN", - er.stack, - er.path, - er.syscall, - er.fstream_type, - er.fstream_path, - er.fstream_unc_path, - er.fstream_class, - er.fstream_stack.join("\n")) - } else { - me.emit("warn", er) - } -} - -Abstract.prototype.info = function (msg, code) { - this.emit("info", msg, code) -} - -Abstract.prototype.error = function (msg, code, th) { - var er = decorate(msg, code, this) - if (th) throw er - else this.emit("error", er) -} - -function decorate (er, code, me) { - if (!(er instanceof Error)) er = new Error(er) - er.code = er.code || code - er.path = er.path || me.path - er.fstream_type = er.fstream_type || me.type - er.fstream_path = er.fstream_path || me.path - if (me._path !== me.path) { - er.fstream_unc_path = er.fstream_unc_path || me._path - } - if (me.linkpath) { - er.fstream_linkpath = er.fstream_linkpath || me.linkpath - } - er.fstream_class = er.fstream_class || me.constructor.name - er.fstream_stack = er.fstream_stack || - new Error().stack.split(/\n/).slice(3).map(function (s) { - return s.replace(/^ at /, "") - }) - - return er -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/collect.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/collect.js deleted file mode 100644 index a36f780..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/collect.js +++ /dev/null @@ -1,67 +0,0 @@ -module.exports = collect - -function collect (stream) { - if (stream._collected) return - - stream._collected = true - stream.pause() - - stream.on("data", save) - stream.on("end", save) - var buf = [] - function save (b) { - if (typeof b === "string") b = new Buffer(b) - if (Buffer.isBuffer(b) && !b.length) return - buf.push(b) - } - - stream.on("entry", saveEntry) - var entryBuffer = [] - function saveEntry (e) { - collect(e) - entryBuffer.push(e) - } - - stream.on("proxy", proxyPause) - function proxyPause (p) { - p.pause() - } - - - // replace the pipe method with a new version that will - // unlock the buffered stuff. if you just call .pipe() - // without a destination, then it'll re-play the events. - stream.pipe = (function (orig) { return function (dest) { - // console.error(" === open the pipes", dest && dest.path) - - // let the entries flow through one at a time. - // Once they're all done, then we can resume completely. - var e = 0 - ;(function unblockEntry () { - var entry = entryBuffer[e++] - // console.error(" ==== unblock entry", entry && entry.path) - if (!entry) return resume() - entry.on("end", unblockEntry) - if (dest) dest.add(entry) - else stream.emit("entry", entry) - })() - - function resume () { - stream.removeListener("entry", saveEntry) - stream.removeListener("data", save) - stream.removeListener("end", save) - - stream.pipe = orig - if (dest) stream.pipe(dest) - - buf.forEach(function (b) { - if (b) stream.emit("data", b) - else stream.emit("end") - }) - - stream.resume() - } - - return dest - }})(stream.pipe) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-reader.js deleted file mode 100644 index 346ac2b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-reader.js +++ /dev/null @@ -1,251 +0,0 @@ -// A thing that emits "entry" events with Reader objects -// Pausing it causes it to stop emitting entry events, and also -// pauses the current entry if there is one. - -module.exports = DirReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Reader = fstream.Reader - , inherits = require("inherits") - , mkdir = require("mkdirp") - , path = require("path") - , Reader = require("./reader.js") - , assert = require("assert").ok - -inherits(DirReader, Reader) - -function DirReader (props) { - var me = this - if (!(me instanceof DirReader)) throw new Error( - "DirReader must be called as constructor.") - - // should already be established as a Directory type - if (props.type !== "Directory" || !props.Directory) { - throw new Error("Non-directory type "+ props.type) - } - - me.entries = null - me._index = -1 - me._paused = false - me._length = -1 - - if (props.sort) { - this.sort = props.sort - } - - Reader.call(this, props) -} - -DirReader.prototype._getEntries = function () { - var me = this - - // race condition. might pause() before calling _getEntries, - // and then resume, and try to get them a second time. - if (me._gotEntries) return - me._gotEntries = true - - fs.readdir(me._path, function (er, entries) { - if (er) return me.error(er) - - me.entries = entries - - me.emit("entries", entries) - if (me._paused) me.once("resume", processEntries) - else processEntries() - - function processEntries () { - me._length = me.entries.length - if (typeof me.sort === "function") { - me.entries = me.entries.sort(me.sort.bind(me)) - } - me._read() - } - }) -} - -// start walking the dir, and emit an "entry" event for each one. -DirReader.prototype._read = function () { - var me = this - - if (!me.entries) return me._getEntries() - - if (me._paused || me._currentEntry || me._aborted) { - // console.error("DR paused=%j, current=%j, aborted=%j", me._paused, !!me._currentEntry, me._aborted) - return - } - - me._index ++ - if (me._index >= me.entries.length) { - if (!me._ended) { - me._ended = true - me.emit("end") - me.emit("close") - } - return - } - - // ok, handle this one, then. - - // save creating a proxy, by stat'ing the thing now. - var p = path.resolve(me._path, me.entries[me._index]) - assert(p !== me._path) - assert(me.entries[me._index]) - - // set this to prevent trying to _read() again in the stat time. - me._currentEntry = p - fs[ me.props.follow ? "stat" : "lstat" ](p, function (er, stat) { - if (er) return me.error(er) - - var who = me._proxy || me - - stat.path = p - stat.basename = path.basename(p) - stat.dirname = path.dirname(p) - var childProps = me.getChildProps.call(who, stat) - childProps.path = p - childProps.basename = path.basename(p) - childProps.dirname = path.dirname(p) - - var entry = Reader(childProps, stat) - - // console.error("DR Entry", p, stat.size) - - me._currentEntry = entry - - // "entry" events are for direct entries in a specific dir. - // "child" events are for any and all children at all levels. - // This nomenclature is not completely final. - - entry.on("pause", function (who) { - if (!me._paused && !entry._disowned) { - me.pause(who) - } - }) - - entry.on("resume", function (who) { - if (me._paused && !entry._disowned) { - me.resume(who) - } - }) - - entry.on("stat", function (props) { - me.emit("_entryStat", entry, props) - if (entry._aborted) return - if (entry._paused) entry.once("resume", function () { - me.emit("entryStat", entry, props) - }) - else me.emit("entryStat", entry, props) - }) - - entry.on("ready", function EMITCHILD () { - // console.error("DR emit child", entry._path) - if (me._paused) { - // console.error(" DR emit child - try again later") - // pause the child, and emit the "entry" event once we drain. - // console.error("DR pausing child entry") - entry.pause(me) - return me.once("resume", EMITCHILD) - } - - // skip over sockets. they can't be piped around properly, - // so there's really no sense even acknowledging them. - // if someone really wants to see them, they can listen to - // the "socket" events. - if (entry.type === "Socket") { - me.emit("socket", entry) - } else { - me.emitEntry(entry) - } - }) - - var ended = false - entry.on("close", onend) - entry.on("disown", onend) - function onend () { - if (ended) return - ended = true - me.emit("childEnd", entry) - me.emit("entryEnd", entry) - me._currentEntry = null - if (!me._paused) { - me._read() - } - } - - // XXX Remove this. Works in node as of 0.6.2 or so. - // Long filenames should not break stuff. - entry.on("error", function (er) { - if (entry._swallowErrors) { - me.warn(er) - entry.emit("end") - entry.emit("close") - } else { - me.emit("error", er) - } - }) - - // proxy up some events. - ; [ "child" - , "childEnd" - , "warn" - ].forEach(function (ev) { - entry.on(ev, me.emit.bind(me, ev)) - }) - }) -} - -DirReader.prototype.disown = function (entry) { - entry.emit("beforeDisown") - entry._disowned = true - entry.parent = entry.root = null - if (entry === this._currentEntry) { - this._currentEntry = null - } - entry.emit("disown") -} - -DirReader.prototype.getChildProps = function (stat) { - return { depth: this.depth + 1 - , root: this.root || this - , parent: this - , follow: this.follow - , filter: this.filter - , sort: this.props.sort - , hardlinks: this.props.hardlinks - } -} - -DirReader.prototype.pause = function (who) { - var me = this - if (me._paused) return - who = who || me - me._paused = true - if (me._currentEntry && me._currentEntry.pause) { - me._currentEntry.pause(who) - } - me.emit("pause", who) -} - -DirReader.prototype.resume = function (who) { - var me = this - if (!me._paused) return - who = who || me - - me._paused = false - // console.error("DR Emit Resume", me._path) - me.emit("resume", who) - if (me._paused) { - // console.error("DR Re-paused", me._path) - return - } - - if (me._currentEntry) { - if (me._currentEntry.resume) me._currentEntry.resume(who) - } else me._read() -} - -DirReader.prototype.emitEntry = function (entry) { - this.emit("entry", entry) - this.emit("child", entry) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-writer.js deleted file mode 100644 index 7073b88..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-writer.js +++ /dev/null @@ -1,171 +0,0 @@ -// It is expected that, when .add() returns false, the consumer -// of the DirWriter will pause until a "drain" event occurs. Note -// that this is *almost always going to be the case*, unless the -// thing being written is some sort of unsupported type, and thus -// skipped over. - -module.exports = DirWriter - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Writer = require("./writer.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , path = require("path") - , collect = require("./collect.js") - -inherits(DirWriter, Writer) - -function DirWriter (props) { - var me = this - if (!(me instanceof DirWriter)) me.error( - "DirWriter must be called as constructor.", null, true) - - // should already be established as a Directory type - if (props.type !== "Directory" || !props.Directory) { - me.error("Non-directory type "+ props.type + " " + - JSON.stringify(props), null, true) - } - - Writer.call(this, props) -} - -DirWriter.prototype._create = function () { - var me = this - mkdir(me._path, Writer.dirmode, function (er) { - if (er) return me.error(er) - // ready to start getting entries! - me.ready = true - me.emit("ready") - me._process() - }) -} - -// a DirWriter has an add(entry) method, but its .write() doesn't -// do anything. Why a no-op rather than a throw? Because this -// leaves open the door for writing directory metadata for -// gnu/solaris style dumpdirs. -DirWriter.prototype.write = function () { - return true -} - -DirWriter.prototype.end = function () { - this._ended = true - this._process() -} - -DirWriter.prototype.add = function (entry) { - var me = this - - // console.error("\tadd", entry._path, "->", me._path) - collect(entry) - if (!me.ready || me._currentEntry) { - me._buffer.push(entry) - return false - } - - // create a new writer, and pipe the incoming entry into it. - if (me._ended) { - return me.error("add after end") - } - - me._buffer.push(entry) - me._process() - - return 0 === this._buffer.length -} - -DirWriter.prototype._process = function () { - var me = this - - // console.error("DW Process p=%j", me._processing, me.basename) - - if (me._processing) return - - var entry = me._buffer.shift() - if (!entry) { - // console.error("DW Drain") - me.emit("drain") - if (me._ended) me._finish() - return - } - - me._processing = true - // console.error("DW Entry", entry._path) - - me.emit("entry", entry) - - // ok, add this entry - // - // don't allow recursive copying - var p = entry - do { - var pp = p._path || p.path - if (pp === me.root._path || pp === me._path || - (pp && pp.indexOf(me._path) === 0)) { - // console.error("DW Exit (recursive)", entry.basename, me._path) - me._processing = false - if (entry._collected) entry.pipe() - return me._process() - } - } while (p = p.parent) - - // console.error("DW not recursive") - - // chop off the entry's root dir, replace with ours - var props = { parent: me - , root: me.root || me - , type: entry.type - , depth: me.depth + 1 } - - var p = entry._path || entry.path || entry.props.path - if (entry.parent) { - p = p.substr(entry.parent._path.length + 1) - } - // get rid of any ../../ shenanigans - props.path = path.join(me.path, path.join("/", p)) - - // if i have a filter, the child should inherit it. - props.filter = me.filter - - // all the rest of the stuff, copy over from the source. - Object.keys(entry.props).forEach(function (k) { - if (!props.hasOwnProperty(k)) { - props[k] = entry.props[k] - } - }) - - // not sure at this point what kind of writer this is. - var child = me._currentChild = new Writer(props) - child.on("ready", function () { - // console.error("DW Child Ready", child.type, child._path) - // console.error(" resuming", entry._path) - entry.pipe(child) - entry.resume() - }) - - // XXX Make this work in node. - // Long filenames should not break stuff. - child.on("error", function (er) { - if (child._swallowErrors) { - me.warn(er) - child.emit("end") - child.emit("close") - } else { - me.emit("error", er) - } - }) - - // we fire _end internally *after* end, so that we don't move on - // until any "end" listeners have had their chance to do stuff. - child.on("close", onend) - var ended = false - function onend () { - if (ended) return - ended = true - // console.error("* DW Child end", child.basename) - me._currentChild = null - me._processing = false - me._process() - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-reader.js deleted file mode 100644 index b1f9861..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-reader.js +++ /dev/null @@ -1,147 +0,0 @@ -// Basically just a wrapper around an fs.ReadStream - -module.exports = FileReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Reader = fstream.Reader - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - , EOF = {EOF: true} - , CLOSE = {CLOSE: true} - -inherits(FileReader, Reader) - -function FileReader (props) { - // console.error(" FR create", props.path, props.size, new Error().stack) - var me = this - if (!(me instanceof FileReader)) throw new Error( - "FileReader must be called as constructor.") - - // should already be established as a File type - // XXX Todo: preserve hardlinks by tracking dev+inode+nlink, - // with a HardLinkReader class. - if (!((props.type === "Link" && props.Link) || - (props.type === "File" && props.File))) { - throw new Error("Non-file type "+ props.type) - } - - me._buffer = [] - me._bytesEmitted = 0 - Reader.call(me, props) -} - -FileReader.prototype._getStream = function () { - var me = this - , stream = me._stream = fs.createReadStream(me._path, me.props) - - if (me.props.blksize) { - stream.bufferSize = me.props.blksize - } - - stream.on("open", me.emit.bind(me, "open")) - - stream.on("data", function (c) { - // console.error("\t\t%d %s", c.length, me.basename) - me._bytesEmitted += c.length - // no point saving empty chunks - if (!c.length) return - else if (me._paused || me._buffer.length) { - me._buffer.push(c) - me._read() - } else me.emit("data", c) - }) - - stream.on("end", function () { - if (me._paused || me._buffer.length) { - // console.error("FR Buffering End", me._path) - me._buffer.push(EOF) - me._read() - } else { - me.emit("end") - } - - if (me._bytesEmitted !== me.props.size) { - me.error("Didn't get expected byte count\n"+ - "expect: "+me.props.size + "\n" + - "actual: "+me._bytesEmitted) - } - }) - - stream.on("close", function () { - if (me._paused || me._buffer.length) { - // console.error("FR Buffering Close", me._path) - me._buffer.push(CLOSE) - me._read() - } else { - // console.error("FR close 1", me._path) - me.emit("close") - } - }) - - me._read() -} - -FileReader.prototype._read = function () { - var me = this - // console.error("FR _read", me._path) - if (me._paused) { - // console.error("FR _read paused", me._path) - return - } - - if (!me._stream) { - // console.error("FR _getStream calling", me._path) - return me._getStream() - } - - // clear out the buffer, if there is one. - if (me._buffer.length) { - // console.error("FR _read has buffer", me._buffer.length, me._path) - var buf = me._buffer - for (var i = 0, l = buf.length; i < l; i ++) { - var c = buf[i] - if (c === EOF) { - // console.error("FR Read emitting buffered end", me._path) - me.emit("end") - } else if (c === CLOSE) { - // console.error("FR Read emitting buffered close", me._path) - me.emit("close") - } else { - // console.error("FR Read emitting buffered data", me._path) - me.emit("data", c) - } - - if (me._paused) { - // console.error("FR Read Re-pausing at "+i, me._path) - me._buffer = buf.slice(i) - return - } - } - me._buffer.length = 0 - } - // console.error("FR _read done") - // that's about all there is to it. -} - -FileReader.prototype.pause = function (who) { - var me = this - // console.error("FR Pause", me._path) - if (me._paused) return - who = who || me - me._paused = true - if (me._stream) me._stream.pause() - me.emit("pause", who) -} - -FileReader.prototype.resume = function (who) { - var me = this - // console.error("FR Resume", me._path) - if (!me._paused) return - who = who || me - me.emit("resume", who) - me._paused = false - if (me._stream) me._stream.resume() - me._read() -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-writer.js deleted file mode 100644 index 5e9902a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-writer.js +++ /dev/null @@ -1,104 +0,0 @@ -module.exports = FileWriter - -var fs = require("graceful-fs") - , mkdir = require("mkdirp") - , Writer = require("./writer.js") - , inherits = require("inherits") - , EOF = {} - -inherits(FileWriter, Writer) - -function FileWriter (props) { - var me = this - if (!(me instanceof FileWriter)) throw new Error( - "FileWriter must be called as constructor.") - - // should already be established as a File type - if (props.type !== "File" || !props.File) { - throw new Error("Non-file type "+ props.type) - } - - me._buffer = [] - me._bytesWritten = 0 - - Writer.call(this, props) -} - -FileWriter.prototype._create = function () { - var me = this - if (me._stream) return - - var so = {} - if (me.props.flags) so.flags = me.props.flags - so.mode = Writer.filemode - if (me._old && me._old.blksize) so.bufferSize = me._old.blksize - - me._stream = fs.createWriteStream(me._path, so) - - me._stream.on("open", function (fd) { - // console.error("FW open", me._buffer, me._path) - me.ready = true - me._buffer.forEach(function (c) { - if (c === EOF) me._stream.end() - else me._stream.write(c) - }) - me.emit("ready") - // give this a kick just in case it needs it. - me.emit("drain") - }) - - me._stream.on("drain", function () { me.emit("drain") }) - - me._stream.on("close", function () { - // console.error("\n\nFW Stream Close", me._path, me.size) - me._finish() - }) -} - -FileWriter.prototype.write = function (c) { - var me = this - - me._bytesWritten += c.length - - if (!me.ready) { - if (!Buffer.isBuffer(c) && typeof c !== 'string') - throw new Error('invalid write data') - me._buffer.push(c) - return false - } - - var ret = me._stream.write(c) - // console.error("\t-- fw wrote, _stream says", ret, me._stream._queue.length) - - // allow 2 buffered writes, because otherwise there's just too - // much stop and go bs. - if (ret === false && me._stream._queue) { - return me._stream._queue.length <= 2; - } else { - return ret; - } -} - -FileWriter.prototype.end = function (c) { - var me = this - - if (c) me.write(c) - - if (!me.ready) { - me._buffer.push(EOF) - return false - } - - return me._stream.end() -} - -FileWriter.prototype._finish = function () { - var me = this - if (typeof me.size === "number" && me._bytesWritten != me.size) { - me.error( - "Did not get expected byte count.\n" + - "expect: " + me.size + "\n" + - "actual: " + me._bytesWritten) - } - Writer.prototype._finish.call(me) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/get-type.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/get-type.js deleted file mode 100644 index cd65c41..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/get-type.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = getType - -function getType (st) { - var types = - [ "Directory" - , "File" - , "SymbolicLink" - , "Link" // special for hardlinks from tarballs - , "BlockDevice" - , "CharacterDevice" - , "FIFO" - , "Socket" ] - , type - - if (st.type && -1 !== types.indexOf(st.type)) { - st[st.type] = true - return st.type - } - - for (var i = 0, l = types.length; i < l; i ++) { - type = types[i] - var is = st[type] || st["is" + type] - if (typeof is === "function") is = is.call(st) - if (is) { - st[type] = true - st.type = type - return type - } - } - - return null -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-reader.js deleted file mode 100644 index 7e7ab6c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-reader.js +++ /dev/null @@ -1,54 +0,0 @@ -// Basically just a wrapper around an fs.readlink -// -// XXX: Enhance this to support the Link type, by keeping -// a lookup table of {:}, so that hardlinks -// can be preserved in tarballs. - -module.exports = LinkReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - -inherits(LinkReader, Reader) - -function LinkReader (props) { - var me = this - if (!(me instanceof LinkReader)) throw new Error( - "LinkReader must be called as constructor.") - - if (!((props.type === "Link" && props.Link) || - (props.type === "SymbolicLink" && props.SymbolicLink))) { - throw new Error("Non-link type "+ props.type) - } - - Reader.call(me, props) -} - -// When piping a LinkReader into a LinkWriter, we have to -// already have the linkpath property set, so that has to -// happen *before* the "ready" event, which means we need to -// override the _stat method. -LinkReader.prototype._stat = function (currentStat) { - var me = this - fs.readlink(me._path, function (er, linkpath) { - if (er) return me.error(er) - me.linkpath = me.props.linkpath = linkpath - me.emit("linkpath", linkpath) - Reader.prototype._stat.call(me, currentStat) - }) -} - -LinkReader.prototype._read = function () { - var me = this - if (me._paused) return - // basically just a no-op, since we got all the info we need - // from the _stat method - if (!me._ended) { - me.emit("end") - me.emit("close") - me._ended = true - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-writer.js deleted file mode 100644 index 5c8f1e7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-writer.js +++ /dev/null @@ -1,95 +0,0 @@ - -module.exports = LinkWriter - -var fs = require("graceful-fs") - , Writer = require("./writer.js") - , inherits = require("inherits") - , path = require("path") - , rimraf = require("rimraf") - -inherits(LinkWriter, Writer) - -function LinkWriter (props) { - var me = this - if (!(me instanceof LinkWriter)) throw new Error( - "LinkWriter must be called as constructor.") - - // should already be established as a Link type - if (!((props.type === "Link" && props.Link) || - (props.type === "SymbolicLink" && props.SymbolicLink))) { - throw new Error("Non-link type "+ props.type) - } - - if (props.linkpath === "") props.linkpath = "." - if (!props.linkpath) { - me.error("Need linkpath property to create " + props.type) - } - - Writer.call(this, props) -} - -LinkWriter.prototype._create = function () { - // console.error(" LW _create") - var me = this - , hard = me.type === "Link" || process.platform === "win32" - , link = hard ? "link" : "symlink" - , lp = hard ? path.resolve(me.dirname, me.linkpath) : me.linkpath - - // can only change the link path by clobbering - // For hard links, let's just assume that's always the case, since - // there's no good way to read them if we don't already know. - if (hard) return clobber(me, lp, link) - - fs.readlink(me._path, function (er, p) { - // only skip creation if it's exactly the same link - if (p && p === lp) return finish(me) - clobber(me, lp, link) - }) -} - -function clobber (me, lp, link) { - rimraf(me._path, function (er) { - if (er) return me.error(er) - create(me, lp, link) - }) -} - -function create (me, lp, link) { - fs[link](lp, me._path, function (er) { - // if this is a hard link, and we're in the process of writing out a - // directory, it's very possible that the thing we're linking to - // doesn't exist yet (especially if it was intended as a symlink), - // so swallow ENOENT errors here and just soldier in. - // Additionally, an EPERM or EACCES can happen on win32 if it's trying - // to make a link to a directory. Again, just skip it. - // A better solution would be to have fs.symlink be supported on - // windows in some nice fashion. - if (er) { - if ((er.code === "ENOENT" || - er.code === "EACCES" || - er.code === "EPERM" ) && process.platform === "win32") { - me.ready = true - me.emit("ready") - me.emit("end") - me.emit("close") - me.end = me._finish = function () {} - } else return me.error(er) - } - finish(me) - }) -} - -function finish (me) { - me.ready = true - me.emit("ready") - if (me._ended && !me._finished) me._finish() -} - -LinkWriter.prototype.end = function () { - // console.error("LW finish in end") - this._ended = true - if (this.ready) { - this._finished = true - this._finish() - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-reader.js deleted file mode 100644 index a0ece34..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-reader.js +++ /dev/null @@ -1,93 +0,0 @@ -// A reader for when we don't yet know what kind of thing -// the thing is. - -module.exports = ProxyReader - -var Reader = require("./reader.js") - , getType = require("./get-type.js") - , inherits = require("inherits") - , fs = require("graceful-fs") - -inherits(ProxyReader, Reader) - -function ProxyReader (props) { - var me = this - if (!(me instanceof ProxyReader)) throw new Error( - "ProxyReader must be called as constructor.") - - me.props = props - me._buffer = [] - me.ready = false - - Reader.call(me, props) -} - -ProxyReader.prototype._stat = function () { - var me = this - , props = me.props - // stat the thing to see what the proxy should be. - , stat = props.follow ? "stat" : "lstat" - - fs[stat](props.path, function (er, current) { - var type - if (er || !current) { - type = "File" - } else { - type = getType(current) - } - - props[type] = true - props.type = me.type = type - - me._old = current - me._addProxy(Reader(props, current)) - }) -} - -ProxyReader.prototype._addProxy = function (proxy) { - var me = this - if (me._proxyTarget) { - return me.error("proxy already set") - } - - me._proxyTarget = proxy - proxy._proxy = me - - ; [ "error" - , "data" - , "end" - , "close" - , "linkpath" - , "entry" - , "entryEnd" - , "child" - , "childEnd" - , "warn" - , "stat" - ].forEach(function (ev) { - // console.error("~~ proxy event", ev, me.path) - proxy.on(ev, me.emit.bind(me, ev)) - }) - - me.emit("proxy", proxy) - - proxy.on("ready", function () { - // console.error("~~ proxy is ready!", me.path) - me.ready = true - me.emit("ready") - }) - - var calls = me._buffer - me._buffer.length = 0 - calls.forEach(function (c) { - proxy[c[0]].apply(proxy, c[1]) - }) -} - -ProxyReader.prototype.pause = function () { - return this._proxyTarget ? this._proxyTarget.pause() : false -} - -ProxyReader.prototype.resume = function () { - return this._proxyTarget ? this._proxyTarget.resume() : false -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-writer.js deleted file mode 100644 index b047663..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-writer.js +++ /dev/null @@ -1,109 +0,0 @@ -// A writer for when we don't know what kind of thing -// the thing is. That is, it's not explicitly set, -// so we're going to make it whatever the thing already -// is, or "File" -// -// Until then, collect all events. - -module.exports = ProxyWriter - -var Writer = require("./writer.js") - , getType = require("./get-type.js") - , inherits = require("inherits") - , collect = require("./collect.js") - , fs = require("fs") - -inherits(ProxyWriter, Writer) - -function ProxyWriter (props) { - var me = this - if (!(me instanceof ProxyWriter)) throw new Error( - "ProxyWriter must be called as constructor.") - - me.props = props - me._needDrain = false - - Writer.call(me, props) -} - -ProxyWriter.prototype._stat = function () { - var me = this - , props = me.props - // stat the thing to see what the proxy should be. - , stat = props.follow ? "stat" : "lstat" - - fs[stat](props.path, function (er, current) { - var type - if (er || !current) { - type = "File" - } else { - type = getType(current) - } - - props[type] = true - props.type = me.type = type - - me._old = current - me._addProxy(Writer(props, current)) - }) -} - -ProxyWriter.prototype._addProxy = function (proxy) { - // console.error("~~ set proxy", this.path) - var me = this - if (me._proxy) { - return me.error("proxy already set") - } - - me._proxy = proxy - ; [ "ready" - , "error" - , "close" - , "pipe" - , "drain" - , "warn" - ].forEach(function (ev) { - proxy.on(ev, me.emit.bind(me, ev)) - }) - - me.emit("proxy", proxy) - - var calls = me._buffer - calls.forEach(function (c) { - // console.error("~~ ~~ proxy buffered call", c[0], c[1]) - proxy[c[0]].apply(proxy, c[1]) - }) - me._buffer.length = 0 - if (me._needsDrain) me.emit("drain") -} - -ProxyWriter.prototype.add = function (entry) { - // console.error("~~ proxy add") - collect(entry) - - if (!this._proxy) { - this._buffer.push(["add", [entry]]) - this._needDrain = true - return false - } - return this._proxy.add(entry) -} - -ProxyWriter.prototype.write = function (c) { - // console.error("~~ proxy write") - if (!this._proxy) { - this._buffer.push(["write", [c]]) - this._needDrain = true - return false - } - return this._proxy.write(c) -} - -ProxyWriter.prototype.end = function (c) { - // console.error("~~ proxy end") - if (!this._proxy) { - this._buffer.push(["end", [c]]) - return false - } - return this._proxy.end(c) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/reader.js deleted file mode 100644 index 0edb794..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/reader.js +++ /dev/null @@ -1,262 +0,0 @@ - -module.exports = Reader - -var fs = require("graceful-fs") - , Stream = require("stream").Stream - , inherits = require("inherits") - , path = require("path") - , getType = require("./get-type.js") - , hardLinks = Reader.hardLinks = {} - , Abstract = require("./abstract.js") - -// Must do this *before* loading the child classes -inherits(Reader, Abstract) - -var DirReader = require("./dir-reader.js") - , FileReader = require("./file-reader.js") - , LinkReader = require("./link-reader.js") - , SocketReader = require("./socket-reader.js") - , ProxyReader = require("./proxy-reader.js") - -function Reader (props, currentStat) { - var me = this - if (!(me instanceof Reader)) return new Reader(props, currentStat) - - if (typeof props === "string") { - props = { path: props } - } - - if (!props.path) { - me.error("Must provide a path", null, true) - } - - // polymorphism. - // call fstream.Reader(dir) to get a DirReader object, etc. - // Note that, unlike in the Writer case, ProxyReader is going - // to be the *normal* state of affairs, since we rarely know - // the type of a file prior to reading it. - - - var type - , ClassType - - if (props.type && typeof props.type === "function") { - type = props.type - ClassType = type - } else { - type = getType(props) - ClassType = Reader - } - - if (currentStat && !type) { - type = getType(currentStat) - props[type] = true - props.type = type - } - - switch (type) { - case "Directory": - ClassType = DirReader - break - - case "Link": - // XXX hard links are just files. - // However, it would be good to keep track of files' dev+inode - // and nlink values, and create a HardLinkReader that emits - // a linkpath value of the original copy, so that the tar - // writer can preserve them. - // ClassType = HardLinkReader - // break - - case "File": - ClassType = FileReader - break - - case "SymbolicLink": - ClassType = LinkReader - break - - case "Socket": - ClassType = SocketReader - break - - case null: - ClassType = ProxyReader - break - } - - if (!(me instanceof ClassType)) { - return new ClassType(props) - } - - Abstract.call(me) - - me.readable = true - me.writable = false - - me.type = type - me.props = props - me.depth = props.depth = props.depth || 0 - me.parent = props.parent || null - me.root = props.root || (props.parent && props.parent.root) || me - - me._path = me.path = path.resolve(props.path) - if (process.platform === "win32") { - me.path = me._path = me.path.replace(/\?/g, "_") - if (me._path.length >= 260) { - // how DOES one create files on the moon? - // if the path has spaces in it, then UNC will fail. - me._swallowErrors = true - //if (me._path.indexOf(" ") === -1) { - me._path = "\\\\?\\" + me.path.replace(/\//g, "\\") - //} - } - } - me.basename = props.basename = path.basename(me.path) - me.dirname = props.dirname = path.dirname(me.path) - - // these have served their purpose, and are now just noisy clutter - props.parent = props.root = null - - // console.error("\n\n\n%s setting size to", props.path, props.size) - me.size = props.size - me.filter = typeof props.filter === "function" ? props.filter : null - if (props.sort === "alpha") props.sort = alphasort - - // start the ball rolling. - // this will stat the thing, and then call me._read() - // to start reading whatever it is. - // console.error("calling stat", props.path, currentStat) - me._stat(currentStat) -} - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - -Reader.prototype._stat = function (currentStat) { - var me = this - , props = me.props - , stat = props.follow ? "stat" : "lstat" - // console.error("Reader._stat", me._path, currentStat) - if (currentStat) process.nextTick(statCb.bind(null, null, currentStat)) - else fs[stat](me._path, statCb) - - - function statCb (er, props_) { - // console.error("Reader._stat, statCb", me._path, props_, props_.nlink) - if (er) return me.error(er) - - Object.keys(props_).forEach(function (k) { - props[k] = props_[k] - }) - - // if it's not the expected size, then abort here. - if (undefined !== me.size && props.size !== me.size) { - return me.error("incorrect size") - } - me.size = props.size - - var type = getType(props) - var handleHardlinks = props.hardlinks !== false - - // special little thing for handling hardlinks. - if (handleHardlinks && type !== "Directory" && props.nlink && props.nlink > 1) { - var k = props.dev + ":" + props.ino - // console.error("Reader has nlink", me._path, k) - if (hardLinks[k] === me._path || !hardLinks[k]) hardLinks[k] = me._path - else { - // switch into hardlink mode. - type = me.type = me.props.type = "Link" - me.Link = me.props.Link = true - me.linkpath = me.props.linkpath = hardLinks[k] - // console.error("Hardlink detected, switching mode", me._path, me.linkpath) - // Setting __proto__ would arguably be the "correct" - // approach here, but that just seems too wrong. - me._stat = me._read = LinkReader.prototype._read - } - } - - if (me.type && me.type !== type) { - me.error("Unexpected type: " + type) - } - - // if the filter doesn't pass, then just skip over this one. - // still have to emit end so that dir-walking can move on. - if (me.filter) { - var who = me._proxy || me - // special handling for ProxyReaders - if (!me.filter.call(who, who, props)) { - if (!me._disowned) { - me.abort() - me.emit("end") - me.emit("close") - } - return - } - } - - // last chance to abort or disown before the flow starts! - var events = ["_stat", "stat", "ready"] - var e = 0 - ;(function go () { - if (me._aborted) { - me.emit("end") - me.emit("close") - return - } - - if (me._paused && me.type !== "Directory") { - me.once("resume", go) - return - } - - var ev = events[e ++] - if (!ev) { - return me._read() - } - me.emit(ev, props) - go() - })() - } -} - -Reader.prototype.pipe = function (dest, opts) { - var me = this - if (typeof dest.add === "function") { - // piping to a multi-compatible, and we've got directory entries. - me.on("entry", function (entry) { - var ret = dest.add(entry) - if (false === ret) { - me.pause() - } - }) - } - - // console.error("R Pipe apply Stream Pipe") - return Stream.prototype.pipe.apply(this, arguments) -} - -Reader.prototype.pause = function (who) { - this._paused = true - who = who || this - this.emit("pause", who) - if (this._stream) this._stream.pause(who) -} - -Reader.prototype.resume = function (who) { - this._paused = false - who = who || this - this.emit("resume", who) - if (this._stream) this._stream.resume(who) - this._read() -} - -Reader.prototype._read = function () { - this.error("Cannot read unknown type: "+this.type) -} - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/socket-reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/socket-reader.js deleted file mode 100644 index e89c173..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/socket-reader.js +++ /dev/null @@ -1,38 +0,0 @@ -// Just get the stats, and then don't do anything. -// You can't really "read" from a socket. You "connect" to it. -// Mostly, this is here so that reading a dir with a socket in it -// doesn't blow up. - -module.exports = SocketReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - -inherits(SocketReader, Reader) - -function SocketReader (props) { - var me = this - if (!(me instanceof SocketReader)) throw new Error( - "SocketReader must be called as constructor.") - - if (!(props.type === "Socket" && props.Socket)) { - throw new Error("Non-socket type "+ props.type) - } - - Reader.call(me, props) -} - -SocketReader.prototype._read = function () { - var me = this - if (me._paused) return - // basically just a no-op, since we got all the info we have - // from the _stat method - if (!me._ended) { - me.emit("end") - me.emit("close") - me._ended = true - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/writer.js deleted file mode 100644 index 5599fb2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/writer.js +++ /dev/null @@ -1,389 +0,0 @@ - -module.exports = Writer - -var fs = require("graceful-fs") - , inherits = require("inherits") - , rimraf = require("rimraf") - , mkdir = require("mkdirp") - , path = require("path") - , umask = process.platform === "win32" ? 0 : process.umask() - , getType = require("./get-type.js") - , Abstract = require("./abstract.js") - -// Must do this *before* loading the child classes -inherits(Writer, Abstract) - -Writer.dirmode = 0777 & (~umask) -Writer.filemode = 0666 & (~umask) - -var DirWriter = require("./dir-writer.js") - , LinkWriter = require("./link-writer.js") - , FileWriter = require("./file-writer.js") - , ProxyWriter = require("./proxy-writer.js") - -// props is the desired state. current is optionally the current stat, -// provided here so that subclasses can avoid statting the target -// more than necessary. -function Writer (props, current) { - var me = this - - if (typeof props === "string") { - props = { path: props } - } - - if (!props.path) me.error("Must provide a path", null, true) - - // polymorphism. - // call fstream.Writer(dir) to get a DirWriter object, etc. - var type = getType(props) - , ClassType = Writer - - switch (type) { - case "Directory": - ClassType = DirWriter - break - case "File": - ClassType = FileWriter - break - case "Link": - case "SymbolicLink": - ClassType = LinkWriter - break - case null: - // Don't know yet what type to create, so we wrap in a proxy. - ClassType = ProxyWriter - break - } - - if (!(me instanceof ClassType)) return new ClassType(props) - - // now get down to business. - - Abstract.call(me) - - // props is what we want to set. - // set some convenience properties as well. - me.type = props.type - me.props = props - me.depth = props.depth || 0 - me.clobber = false === props.clobber ? props.clobber : true - me.parent = props.parent || null - me.root = props.root || (props.parent && props.parent.root) || me - - me._path = me.path = path.resolve(props.path) - if (process.platform === "win32") { - me.path = me._path = me.path.replace(/\?/g, "_") - if (me._path.length >= 260) { - me._swallowErrors = true - me._path = "\\\\?\\" + me.path.replace(/\//g, "\\") - } - } - me.basename = path.basename(props.path) - me.dirname = path.dirname(props.path) - me.linkpath = props.linkpath || null - - props.parent = props.root = null - - // console.error("\n\n\n%s setting size to", props.path, props.size) - me.size = props.size - - if (typeof props.mode === "string") { - props.mode = parseInt(props.mode, 8) - } - - me.readable = false - me.writable = true - - // buffer until ready, or while handling another entry - me._buffer = [] - me.ready = false - - me.filter = typeof props.filter === "function" ? props.filter: null - - // start the ball rolling. - // this checks what's there already, and then calls - // me._create() to call the impl-specific creation stuff. - me._stat(current) -} - -// Calling this means that it's something we can't create. -// Just assert that it's already there, otherwise raise a warning. -Writer.prototype._create = function () { - var me = this - fs[me.props.follow ? "stat" : "lstat"](me._path, function (er, current) { - if (er) { - return me.warn("Cannot create " + me._path + "\n" + - "Unsupported type: "+me.type, "ENOTSUP") - } - me._finish() - }) -} - -Writer.prototype._stat = function (current) { - var me = this - , props = me.props - , stat = props.follow ? "stat" : "lstat" - , who = me._proxy || me - - if (current) statCb(null, current) - else fs[stat](me._path, statCb) - - function statCb (er, current) { - if (me.filter && !me.filter.call(who, who, current)) { - me._aborted = true - me.emit("end") - me.emit("close") - return - } - - // if it's not there, great. We'll just create it. - // if it is there, then we'll need to change whatever differs - if (er || !current) { - return create(me) - } - - me._old = current - var currentType = getType(current) - - // if it's a type change, then we need to clobber or error. - // if it's not a type change, then let the impl take care of it. - if (currentType !== me.type) { - return rimraf(me._path, function (er) { - if (er) return me.error(er) - me._old = null - create(me) - }) - } - - // otherwise, just handle in the app-specific way - // this creates a fs.WriteStream, or mkdir's, or whatever - create(me) - } -} - -function create (me) { - // console.error("W create", me._path, Writer.dirmode) - - // XXX Need to clobber non-dirs that are in the way, - // unless { clobber: false } in the props. - mkdir(path.dirname(me._path), Writer.dirmode, function (er, made) { - // console.error("W created", path.dirname(me._path), er) - if (er) return me.error(er) - - // later on, we have to set the mode and owner for these - me._madeDir = made - return me._create() - }) -} - -function endChmod (me, want, current, path, cb) { - var wantMode = want.mode - , chmod = want.follow || me.type !== "SymbolicLink" - ? "chmod" : "lchmod" - - if (!fs[chmod]) return cb() - if (typeof wantMode !== "number") return cb() - - var curMode = current.mode & 0777 - wantMode = wantMode & 0777 - if (wantMode === curMode) return cb() - - fs[chmod](path, wantMode, cb) -} - - -function endChown (me, want, current, path, cb) { - // Don't even try it unless root. Too easy to EPERM. - if (process.platform === "win32") return cb() - if (!process.getuid || !process.getuid() === 0) return cb() - if (typeof want.uid !== "number" && - typeof want.gid !== "number" ) return cb() - - if (current.uid === want.uid && - current.gid === want.gid) return cb() - - var chown = (me.props.follow || me.type !== "SymbolicLink") - ? "chown" : "lchown" - if (!fs[chown]) return cb() - - if (typeof want.uid !== "number") want.uid = current.uid - if (typeof want.gid !== "number") want.gid = current.gid - - fs[chown](path, want.uid, want.gid, cb) -} - -function endUtimes (me, want, current, path, cb) { - if (!fs.utimes || process.platform === "win32") return cb() - - var utimes = (want.follow || me.type !== "SymbolicLink") - ? "utimes" : "lutimes" - - if (utimes === "lutimes" && !fs[utimes]) { - utimes = "utimes" - } - - if (!fs[utimes]) return cb() - - var curA = current.atime - , curM = current.mtime - , meA = want.atime - , meM = want.mtime - - if (meA === undefined) meA = curA - if (meM === undefined) meM = curM - - if (!isDate(meA)) meA = new Date(meA) - if (!isDate(meM)) meA = new Date(meM) - - if (meA.getTime() === curA.getTime() && - meM.getTime() === curM.getTime()) return cb() - - fs[utimes](path, meA, meM, cb) -} - - -// XXX This function is beastly. Break it up! -Writer.prototype._finish = function () { - var me = this - - // console.error(" W Finish", me._path, me.size) - - // set up all the things. - // At this point, we're already done writing whatever we've gotta write, - // adding files to the dir, etc. - var todo = 0 - var errState = null - var done = false - - if (me._old) { - // the times will almost *certainly* have changed. - // adds the utimes syscall, but remove another stat. - me._old.atime = new Date(0) - me._old.mtime = new Date(0) - // console.error(" W Finish Stale Stat", me._path, me.size) - setProps(me._old) - } else { - var stat = me.props.follow ? "stat" : "lstat" - // console.error(" W Finish Stating", me._path, me.size) - fs[stat](me._path, function (er, current) { - // console.error(" W Finish Stated", me._path, me.size, current) - if (er) { - // if we're in the process of writing out a - // directory, it's very possible that the thing we're linking to - // doesn't exist yet (especially if it was intended as a symlink), - // so swallow ENOENT errors here and just soldier on. - if (er.code === "ENOENT" && - (me.type === "Link" || me.type === "SymbolicLink") && - process.platform === "win32") { - me.ready = true - me.emit("ready") - me.emit("end") - me.emit("close") - me.end = me._finish = function () {} - return - } else return me.error(er) - } - setProps(me._old = current) - }) - } - - return - - function setProps (current) { - todo += 3 - endChmod(me, me.props, current, me._path, next("chmod")) - endChown(me, me.props, current, me._path, next("chown")) - endUtimes(me, me.props, current, me._path, next("utimes")) - } - - function next (what) { - return function (er) { - // console.error(" W Finish", what, todo) - if (errState) return - if (er) { - er.fstream_finish_call = what - return me.error(errState = er) - } - if (--todo > 0) return - if (done) return - done = true - - // we may still need to set the mode/etc. on some parent dirs - // that were created previously. delay end/close until then. - if (!me._madeDir) return end() - else endMadeDir(me, me._path, end) - - function end (er) { - if (er) { - er.fstream_finish_call = "setupMadeDir" - return me.error(er) - } - // all the props have been set, so we're completely done. - me.emit("end") - me.emit("close") - } - } - } -} - -function endMadeDir (me, p, cb) { - var made = me._madeDir - // everything *between* made and path.dirname(me._path) - // needs to be set up. Note that this may just be one dir. - var d = path.dirname(p) - - endMadeDir_(me, d, function (er) { - if (er) return cb(er) - if (d === made) { - return cb() - } - endMadeDir(me, d, cb) - }) -} - -function endMadeDir_ (me, p, cb) { - var dirProps = {} - Object.keys(me.props).forEach(function (k) { - dirProps[k] = me.props[k] - - // only make non-readable dirs if explicitly requested. - if (k === "mode" && me.type !== "Directory") { - dirProps[k] = dirProps[k] | 0111 - } - }) - - var todo = 3 - , errState = null - fs.stat(p, function (er, current) { - if (er) return cb(errState = er) - endChmod(me, dirProps, current, p, next) - endChown(me, dirProps, current, p, next) - endUtimes(me, dirProps, current, p, next) - }) - - function next (er) { - if (errState) return - if (er) return cb(errState = er) - if (-- todo === 0) return cb() - } -} - -Writer.prototype.pipe = function () { - this.error("Can't pipe from writable stream") -} - -Writer.prototype.add = function () { - this.error("Cannot add to non-Directory type") -} - -Writer.prototype.write = function () { - return true -} - -function objectToString (d) { - return Object.prototype.toString.call(d) -} - -function isDate(d) { - return typeof d === 'object' && objectToString(d) === '[object Date]'; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/README.md deleted file mode 100644 index 13a2e86..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/fs.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/fs.js deleted file mode 100644 index ae9fd6f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,11 +0,0 @@ -// eeeeeevvvvviiiiiiillllll -// more evil than monkey-patching the native builtin? -// Not sure. - -var mod = require("module") -var pre = '(function (exports, require, module, __filename, __dirname) { ' -var post = '});' -var src = pre + process.binding('natives').fs + post -var vm = require('vm') -var fn = vm.runInThisContext(src) -return fn(exports, require, module, __filename, __dirname) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index 77fc702..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,158 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('./fs.js') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/package.json deleted file mode 100644 index b12fe37..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "graceful-fs", - "description": "A drop-in replacement for fs, making various improvements.", - "version": "3.0.4", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "main": "graceful-fs.js", - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "BSD", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^0.4.13" - }, - "gitHead": "d3fd03247ccc4fa8a3eee399307fd266c70efb06", - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "homepage": "https://github.com/isaacs/node-graceful-fs", - "_id": "graceful-fs@3.0.4", - "_shasum": "a0306d9b0940e0fc512d33b5df1014e88e0637a3", - "_from": "graceful-fs@~3.0.2", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "a0306d9b0940e0fc512d33b5df1014e88e0637a3", - "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.4.tgz" - }, - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.4.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/polyfills.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 9d62af5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,255 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. -// It should not fail on enosys ever, as this just indicates -// that a fs doesn't support the intended operation. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chmod = chownFix(fs.chmod) -fs.fchmod = chownFix(fs.fchmod) -fs.lchmod = chownFix(fs.lchmod) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -fs.chmodSync = chownFix(fs.chmodSync) -fs.fchmodSync = chownFix(fs.fchmodSync) -fs.lchmodSync = chownFix(fs.lchmodSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/max-open.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/max-open.js deleted file mode 100644 index 44d5267..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/max-open.js +++ /dev/null @@ -1,69 +0,0 @@ -var test = require('tap').test -var fs = require('../') - -test('open lots of stuff', function (t) { - // Get around EBADF from libuv by making sure that stderr is opened - // Otherwise Darwin will refuse to give us a FD for stderr! - process.stderr.write('') - - // How many parallel open()'s to do - var n = 1024 - var opens = 0 - var fds = [] - var going = true - var closing = false - var doneCalled = 0 - - for (var i = 0; i < n; i++) { - go() - } - - function go() { - opens++ - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fds.push(fd) - if (going) go() - }) - } - - // should hit ulimit pretty fast - setTimeout(function () { - going = false - t.equal(opens - fds.length, n) - done() - }, 100) - - - function done () { - if (closing) return - doneCalled++ - - if (fds.length === 0) { - //console.error('done called %d times', doneCalled) - // First because of the timeout - // Then to close the fd's opened afterwards - // Then this time, to complete. - // Might take multiple passes, depending on CPU speed - // and ulimit, but at least 3 in every case. - t.ok(doneCalled >= 3) - return t.end() - } - - closing = true - setTimeout(function () { - // console.error('do closing again') - closing = false - done() - }, 100) - - // console.error('closing time') - var closes = fds.slice(0) - fds.length = 0 - closes.forEach(function (fd) { - fs.close(fd, function (er) { - if (er) throw er - }) - }) - } -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/open.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 85732f2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('../fs.js')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index cb63a68..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require("tap").test -var fs = require("../fs.js") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js deleted file mode 100644 index 3a3db54..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js +++ /dev/null @@ -1,45 +0,0 @@ -var fs = require('../'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); -var test = require('tap').test; -var p = require('path').resolve(__dirname, 'files'); - -// Make sure to reserve the stderr fd -process.stderr.write(''); - -var num = 4097; -var paths = new Array(num); - -test('make files', function (t) { - rimraf.sync(p); - mkdirp.sync(p); - - for (var i = 0; i < num; ++i) { - paths[i] = 'files/file-' + i; - fs.writeFileSync(paths[i], 'content'); - } - - t.end(); -}) - -test('read files', function (t) { - // now read them - var done = 0; - for (var i = 0; i < num; ++i) { - fs.readFile(paths[i], function(err, data) { - if (err) - throw err; - - ++done; - if (done === num) { - t.pass('success'); - t.end() - } - }); - } -}); - -test('cleanup', function (t) { - rimraf.sync(p); - t.end(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/README.md deleted file mode 100644 index b1c5665..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits_browser.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/package.json deleted file mode 100644 index 837558d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "_id": "inherits@2.0.1", - "dist": { - "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "_from": "inherits@~2.0.0", - "_npmVersion": "1.3.8", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "homepage": "https://github.com/isaacs/inherits" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/test.js deleted file mode 100644 index fc53012..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/package.json deleted file mode 100644 index 29622a3..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "fstream", - "description": "Advanced file system stream things", - "version": "0.1.31", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/fstream.git" - }, - "main": "fstream.js", - "engines": { - "node": ">=0.6" - }, - "dependencies": { - "graceful-fs": "~3.0.2", - "inherits": "~2.0.0", - "mkdirp": "0.5", - "rimraf": "2" - }, - "devDependencies": { - "tap": "" - }, - "scripts": { - "test": "tap examples/*.js" - }, - "license": "BSD", - "gitHead": "3512b3d41b4c9b3ef15cf32a04e06b297f3dd6a4", - "bugs": { - "url": "https://github.com/isaacs/fstream/issues" - }, - "homepage": "https://github.com/isaacs/fstream", - "_id": "fstream@0.1.31", - "_shasum": "7337f058fbbbbefa8c9f561a28cab0849202c988", - "_from": "fstream@~0.1.22", - "_npmVersion": "2.0.0-alpha-5", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "7337f058fbbbbefa8c9f561a28cab0849202c988", - "tarball": "http://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/README.md deleted file mode 100644 index 01af3d6..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over fs module - -graceful-fs: - -* keeps track of how many file descriptors are open, and by default - limits this to 1024. Any further requests to open a file are put in a - queue until new slots become available. If 1024 turns out to be too - much, it decreases the limit further. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## Configuration - -The maximum number of open file descriptors that graceful-fs manages may -be adjusted by setting `fs.MAX_OPEN` to a different number. The default -is 1024. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/graceful-fs.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index ca91152..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,442 +0,0 @@ -// this keeps a queue of opened file descriptors, and will make -// fs operations wait until some have closed before trying to open more. - -var fs = exports = module.exports = {} -fs._originalFs = require("fs") - -Object.getOwnPropertyNames(fs._originalFs).forEach(function(prop) { - var desc = Object.getOwnPropertyDescriptor(fs._originalFs, prop) - Object.defineProperty(fs, prop, desc) -}) - -var queue = [] - , constants = require("constants") - -fs._curOpen = 0 - -fs.MIN_MAX_OPEN = 64 -fs.MAX_OPEN = 1024 - -// prevent EMFILE errors -function OpenReq (path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb -} - -function noop () {} - -fs.open = gracefulOpen - -function gracefulOpen (path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - - if (fs._curOpen >= fs.MAX_OPEN) { - queue.push(new OpenReq(path, flags, mode, cb)) - setTimeout(flush) - return - } - open(path, flags, mode, function (er, fd) { - if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) { - // that was too many. reduce max, get back in queue. - // this should only happen once in a great while, and only - // if the ulimit -n is set lower than 1024. - fs.MAX_OPEN = fs._curOpen - 1 - return fs.open(path, flags, mode, cb) - } - cb(er, fd) - }) -} - -function open (path, flags, mode, cb) { - cb = cb || noop - fs._curOpen ++ - fs._originalFs.open.call(fs, path, flags, mode, function (er, fd) { - if (er) onclose() - cb(er, fd) - }) -} - -fs.openSync = function (path, flags, mode) { - var ret - ret = fs._originalFs.openSync.call(fs, path, flags, mode) - fs._curOpen ++ - return ret -} - -function onclose () { - fs._curOpen -- - flush() -} - -function flush () { - while (fs._curOpen < fs.MAX_OPEN) { - var req = queue.shift() - if (!req) return - switch (req.constructor.name) { - case 'OpenReq': - open(req.path, req.flags || "r", req.mode || 0777, req.cb) - break - case 'ReaddirReq': - readdir(req.path, req.cb) - break - case 'ReadFileReq': - readFile(req.path, req.options, req.cb) - break - case 'WriteFileReq': - writeFile(req.path, req.data, req.options, req.cb) - break - default: - throw new Error('Unknown req type: ' + req.constructor.name) - } - } -} - -fs.close = function (fd, cb) { - cb = cb || noop - fs._originalFs.close.call(fs, fd, function (er) { - onclose() - cb(er) - }) -} - -fs.closeSync = function (fd) { - try { - return fs._originalFs.closeSync.call(fs, fd) - } finally { - onclose() - } -} - - -// readdir takes a fd as well. -// however, the sync version closes it right away, so -// there's no need to wrap. -// It would be nice to catch when it throws an EMFILE, -// but that's relatively rare anyway. - -fs.readdir = gracefulReaddir - -function gracefulReaddir (path, cb) { - if (fs._curOpen >= fs.MAX_OPEN) { - queue.push(new ReaddirReq(path, cb)) - setTimeout(flush) - return - } - - readdir(path, function (er, files) { - if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) { - fs.MAX_OPEN = fs._curOpen - 1 - return fs.readdir(path, cb) - } - cb(er, files) - }) -} - -function readdir (path, cb) { - cb = cb || noop - fs._curOpen ++ - fs._originalFs.readdir.call(fs, path, function (er, files) { - onclose() - cb(er, files) - }) -} - -function ReaddirReq (path, cb) { - this.path = path - this.cb = cb -} - - -fs.readFile = gracefulReadFile - -function gracefulReadFile(path, options, cb) { - if (typeof options === "function") cb = options, options = null - if (typeof cb !== "function") cb = noop - - if (fs._curOpen >= fs.MAX_OPEN) { - queue.push(new ReadFileReq(path, options, cb)) - setTimeout(flush) - return - } - - readFile(path, options, function (er, data) { - if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) { - fs.MAX_OPEN = fs._curOpen - 1 - return fs.readFile(path, options, cb) - } - cb(er, data) - }) -} - -function readFile (path, options, cb) { - cb = cb || noop - fs._curOpen ++ - fs._originalFs.readFile.call(fs, path, options, function (er, data) { - onclose() - cb(er, data) - }) -} - -function ReadFileReq (path, options, cb) { - this.path = path - this.options = options - this.cb = cb -} - - - - -fs.writeFile = gracefulWriteFile - -function gracefulWriteFile(path, data, options, cb) { - if (typeof options === "function") cb = options, options = null - if (typeof cb !== "function") cb = noop - - if (fs._curOpen >= fs.MAX_OPEN) { - queue.push(new WriteFileReq(path, data, options, cb)) - setTimeout(flush) - return - } - - writeFile(path, data, options, function (er) { - if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) { - fs.MAX_OPEN = fs._curOpen - 1 - return fs.writeFile(path, data, options, cb) - } - cb(er) - }) -} - -function writeFile (path, data, options, cb) { - cb = cb || noop - fs._curOpen ++ - fs._originalFs.writeFile.call(fs, path, data, options, function (er) { - onclose() - cb(er) - }) -} - -function WriteFileReq (path, data, options, cb) { - this.path = path - this.data = data - this.options = options - this.cb = cb -} - - -// (re-)implement some things that are known busted or missing. - -var constants = require("constants") - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -function chownErOk (er) { - // if there's no getuid, or if getuid() is something other than 0, - // and the error is EINVAL or EPERM, then just ignore it. - // This specific case is a silent failure in cp, install, tar, - // and most other unix tools that manage permissions. - // When running as root, or if other types of errors are encountered, - // then it's strict. - if (!er || (!process.getuid || process.getuid() !== 0) - && (er.code === "EINVAL" || er.code === "EPERM")) return true -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/package.json deleted file mode 100644 index c37a67d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "graceful-fs", - "description": "A drop-in replacement for fs, making various improvements.", - "version": "1.2.3", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "main": "graceful-fs.js", - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "BSD", - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "_id": "graceful-fs@1.2.3", - "dist": { - "shasum": "15a4806a57547cb2d2dbf27f42e89a8c3451b364", - "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" - }, - "_from": "graceful-fs@1.2", - "_npmVersion": "1.3.2", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "_shasum": "15a4806a57547cb2d2dbf27f42e89a8c3451b364", - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/isaacs/node-graceful-fs" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/test/open.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 930d532..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,46 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is not fs', function (t) { - t.notEqual(fs, require('fs')) - t.end() -}) - -test('open an existing file works', function (t) { - var start = fs._curOpen - var fd = fs.openSync(__filename, 'r') - t.equal(fs._curOpen, start + 1) - fs.closeSync(fd) - t.equal(fs._curOpen, start) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - t.equal(fs._curOpen, start + 1) - fs.close(fd, function (er) { - if (er) throw er - t.equal(fs._curOpen, start) - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var start = fs._curOpen - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.equal(fs._curOpen, start) - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.equal(fs._curOpen, start) - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/test/ulimit.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/test/ulimit.js deleted file mode 100644 index 8d0882d..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/graceful-fs/test/ulimit.js +++ /dev/null @@ -1,158 +0,0 @@ -var test = require('tap').test - -// simulated ulimit -// this is like graceful-fs, but in reverse -var fs_ = require('fs') -var fs = require('../graceful-fs.js') -var files = fs.readdirSync(__dirname) - -// Ok, no more actual file reading! - -var fds = 0 -var nextFd = 60 -var limit = 8 -fs_.open = function (path, flags, mode, cb) { - process.nextTick(function() { - ++fds - if (fds >= limit) { - --fds - var er = new Error('EMFILE Curses!') - er.code = 'EMFILE' - er.path = path - return cb(er) - } else { - cb(null, nextFd++) - } - }) -} - -fs_.openSync = function (path, flags, mode) { - if (fds >= limit) { - var er = new Error('EMFILE Curses!') - er.code = 'EMFILE' - er.path = path - throw er - } else { - ++fds - return nextFd++ - } -} - -fs_.close = function (fd, cb) { - process.nextTick(function () { - --fds - cb() - }) -} - -fs_.closeSync = function (fd) { - --fds -} - -fs_.readdir = function (path, cb) { - process.nextTick(function() { - if (fds >= limit) { - var er = new Error('EMFILE Curses!') - er.code = 'EMFILE' - er.path = path - return cb(er) - } else { - ++fds - process.nextTick(function () { - --fds - cb(null, [__filename, "some-other-file.js"]) - }) - } - }) -} - -fs_.readdirSync = function (path) { - if (fds >= limit) { - var er = new Error('EMFILE Curses!') - er.code = 'EMFILE' - er.path = path - throw er - } else { - return [__filename, "some-other-file.js"] - } -} - - -test('open emfile autoreduce', function (t) { - fs.MIN_MAX_OPEN = 4 - t.equal(fs.MAX_OPEN, 1024) - - var max = 12 - for (var i = 0; i < max; i++) { - fs.open(__filename, 'r', next(i)) - } - - var phase = 0 - - var expect = - [ [ 0, 60, null, 1024, 4, 12, 1 ], - [ 1, 61, null, 1024, 4, 12, 2 ], - [ 2, 62, null, 1024, 4, 12, 3 ], - [ 3, 63, null, 1024, 4, 12, 4 ], - [ 4, 64, null, 1024, 4, 12, 5 ], - [ 5, 65, null, 1024, 4, 12, 6 ], - [ 6, 66, null, 1024, 4, 12, 7 ], - [ 7, 67, null, 6, 4, 5, 1 ], - [ 8, 68, null, 6, 4, 5, 2 ], - [ 9, 69, null, 6, 4, 5, 3 ], - [ 10, 70, null, 6, 4, 5, 4 ], - [ 11, 71, null, 6, 4, 5, 5 ] ] - - var actual = [] - - function next (i) { return function (er, fd) { - if (er) - throw er - actual.push([i, fd, er, fs.MAX_OPEN, fs.MIN_MAX_OPEN, fs._curOpen, fds]) - - if (i === max - 1) { - t.same(actual, expect) - t.ok(fs.MAX_OPEN < limit) - t.end() - } - - fs.close(fd) - } } -}) - -test('readdir emfile autoreduce', function (t) { - fs.MAX_OPEN = 1024 - var max = 12 - for (var i = 0; i < max; i ++) { - fs.readdir(__dirname, next(i)) - } - - var expect = - [ [0,[__filename,"some-other-file.js"],null,7,4,7,7], - [1,[__filename,"some-other-file.js"],null,7,4,7,6], - [2,[__filename,"some-other-file.js"],null,7,4,7,5], - [3,[__filename,"some-other-file.js"],null,7,4,7,4], - [4,[__filename,"some-other-file.js"],null,7,4,7,3], - [5,[__filename,"some-other-file.js"],null,7,4,6,2], - [6,[__filename,"some-other-file.js"],null,7,4,5,1], - [7,[__filename,"some-other-file.js"],null,7,4,4,0], - [8,[__filename,"some-other-file.js"],null,7,4,3,3], - [9,[__filename,"some-other-file.js"],null,7,4,2,2], - [10,[__filename,"some-other-file.js"],null,7,4,1,1], - [11,[__filename,"some-other-file.js"],null,7,4,0,0] ] - - var actual = [] - - function next (i) { return function (er, files) { - if (er) - throw er - var line = [i, files, er, fs.MAX_OPEN, fs.MIN_MAX_OPEN, fs._curOpen, fds ] - actual.push(line) - - if (i === max - 1) { - t.ok(fs.MAX_OPEN < limit) - t.same(actual, expect) - t.end() - } - } } -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/README.md deleted file mode 100644 index e833b83..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# once - -Only call a function once. - -## usage - -```javascript -var once = require('once') - -function load (file, cb) { - cb = once(cb) - loader.load('file') - loader.once('load', cb) - loader.once('error', cb) -} -``` - -Or add to the Function.prototype in a responsible way: - -```javascript -// only has to be done once -require('once').proto() - -function load (file, cb) { - cb = cb.once() - loader.load('file') - loader.once('load', cb) - loader.once('error', cb) -} -``` - -Ironically, the prototype feature makes this module twice as -complicated as necessary. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/once.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/once.js deleted file mode 100644 index effc50a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/once.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = once - -once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this) - }, - configurable: true - }) -}) - -function once (fn) { - var called = false - return function () { - if (called) return - called = true - return fn.apply(this, arguments) - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/package.json deleted file mode 100644 index cd02de6..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "once", - "version": "1.1.1", - "description": "Run a function exactly one time", - "main": "once.js", - "directories": { - "test": "test" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.3.0" - }, - "scripts": { - "test": "tap test/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/once" - }, - "keywords": [ - "once", - "function", - "one", - "single" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "BSD", - "_id": "once@1.1.1", - "dist": { - "shasum": "9db574933ccb08c3a7614d154032c09ea6f339e7", - "tarball": "http://registry.npmjs.org/once/-/once-1.1.1.tgz" - }, - "_npmVersion": "1.1.48", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "_shasum": "9db574933ccb08c3a7614d154032c09ea6f339e7", - "_from": "once@~1.1.1", - "_resolved": "https://registry.npmjs.org/once/-/once-1.1.1.tgz", - "bugs": { - "url": "https://github.com/isaacs/once/issues" - }, - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/isaacs/once" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/test/once.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/test/once.js deleted file mode 100644 index f0291a4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/test/once.js +++ /dev/null @@ -1,18 +0,0 @@ -var test = require('tap').test -var once = require('../once.js') - -test('once', function (t) { - var f = 0 - var foo = once(function (g) { - t.equal(f, 0) - f ++ - return f + g + this - }) - for (var i = 0; i < 1E3; i++) { - t.same(f, i === 0 ? 0 : 1) - var g = foo.call(1, 1) - t.same(g, i === 0 ? 3 : undefined) - t.same(f, 1) - } - t.end() -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e69..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/README.md deleted file mode 100644 index 3fb3e80..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/duplex.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index b513d61..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 895ca50..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 6307220..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,982 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (typeof chunk === 'string' && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - state.buffer.push(chunk); - } - - if (state.needReadable) - emitReadable(stream); - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - var ret; - - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - ret = null; - - // In cases where the decoder did not receive enough data - // to produce a full chunk, then immediately received an - // EOF, state.buffer will contain [, ]. - // howMuchToRead will see this and coerce the amount to - // read to zero (because it's looking at the length of the - // first in state.buffer), and we'll end up here. - // - // This can only happen via state.decoder -- no other venue - // exists for pushing a zero-length chunk into state.buffer - // and triggering this behavior. In this case, we return our - // remaining data and end the stream, if appropriate. - if (state.length > 0 && state.decoder) { - ret = fromList(n, state); - state.length -= ret.length; - } - - if (state.length === 0) - endReadable(this); - - return ret; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) - doRead = false; - - if (doRead) { - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read called its callback synchronously, then `reading` - // will be false, and we need to re-evaluate how much data we - // can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (state.emittedReadable) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function onend() { - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - forEach(state.pipes, write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - if (state.decoder) - chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - //if (state.objectMode && util.isNullOrUndefined(chunk)) - if (state.objectMode && (chunk === null || chunk === undefined)) - return; - else if (!state.objectMode && (!chunk || !chunk.length)) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted && state.calledRead) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf (xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index eb188df..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - var ts = this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('finish', function() { - if ('function' === typeof this._flush) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var rs = stream._readableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 4bdaa4f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (typeof cb !== 'function') - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - cb(er); - }); - else - cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/README.md deleted file mode 100644 index 5a76b41..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# core-util-is - -The `util.is*` functions introduced in Node v0.12. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/float.patch b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/float.patch deleted file mode 100644 index a06d5c0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/float.patch +++ /dev/null @@ -1,604 +0,0 @@ -diff --git a/lib/util.js b/lib/util.js -index a03e874..9074e8e 100644 ---- a/lib/util.js -+++ b/lib/util.js -@@ -19,430 +19,6 @@ - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - --var formatRegExp = /%[sdj%]/g; --exports.format = function(f) { -- if (!isString(f)) { -- var objects = []; -- for (var i = 0; i < arguments.length; i++) { -- objects.push(inspect(arguments[i])); -- } -- return objects.join(' '); -- } -- -- var i = 1; -- var args = arguments; -- var len = args.length; -- var str = String(f).replace(formatRegExp, function(x) { -- if (x === '%%') return '%'; -- if (i >= len) return x; -- switch (x) { -- case '%s': return String(args[i++]); -- case '%d': return Number(args[i++]); -- case '%j': -- try { -- return JSON.stringify(args[i++]); -- } catch (_) { -- return '[Circular]'; -- } -- default: -- return x; -- } -- }); -- for (var x = args[i]; i < len; x = args[++i]) { -- if (isNull(x) || !isObject(x)) { -- str += ' ' + x; -- } else { -- str += ' ' + inspect(x); -- } -- } -- return str; --}; -- -- --// Mark that a method should not be used. --// Returns a modified function which warns once by default. --// If --no-deprecation is set, then it is a no-op. --exports.deprecate = function(fn, msg) { -- // Allow for deprecating things in the process of starting up. -- if (isUndefined(global.process)) { -- return function() { -- return exports.deprecate(fn, msg).apply(this, arguments); -- }; -- } -- -- if (process.noDeprecation === true) { -- return fn; -- } -- -- var warned = false; -- function deprecated() { -- if (!warned) { -- if (process.throwDeprecation) { -- throw new Error(msg); -- } else if (process.traceDeprecation) { -- console.trace(msg); -- } else { -- console.error(msg); -- } -- warned = true; -- } -- return fn.apply(this, arguments); -- } -- -- return deprecated; --}; -- -- --var debugs = {}; --var debugEnviron; --exports.debuglog = function(set) { -- if (isUndefined(debugEnviron)) -- debugEnviron = process.env.NODE_DEBUG || ''; -- set = set.toUpperCase(); -- if (!debugs[set]) { -- if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { -- var pid = process.pid; -- debugs[set] = function() { -- var msg = exports.format.apply(exports, arguments); -- console.error('%s %d: %s', set, pid, msg); -- }; -- } else { -- debugs[set] = function() {}; -- } -- } -- return debugs[set]; --}; -- -- --/** -- * Echos the value of a value. Trys to print the value out -- * in the best way possible given the different types. -- * -- * @param {Object} obj The object to print out. -- * @param {Object} opts Optional options object that alters the output. -- */ --/* legacy: obj, showHidden, depth, colors*/ --function inspect(obj, opts) { -- // default options -- var ctx = { -- seen: [], -- stylize: stylizeNoColor -- }; -- // legacy... -- if (arguments.length >= 3) ctx.depth = arguments[2]; -- if (arguments.length >= 4) ctx.colors = arguments[3]; -- if (isBoolean(opts)) { -- // legacy... -- ctx.showHidden = opts; -- } else if (opts) { -- // got an "options" object -- exports._extend(ctx, opts); -- } -- // set default options -- if (isUndefined(ctx.showHidden)) ctx.showHidden = false; -- if (isUndefined(ctx.depth)) ctx.depth = 2; -- if (isUndefined(ctx.colors)) ctx.colors = false; -- if (isUndefined(ctx.customInspect)) ctx.customInspect = true; -- if (ctx.colors) ctx.stylize = stylizeWithColor; -- return formatValue(ctx, obj, ctx.depth); --} --exports.inspect = inspect; -- -- --// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics --inspect.colors = { -- 'bold' : [1, 22], -- 'italic' : [3, 23], -- 'underline' : [4, 24], -- 'inverse' : [7, 27], -- 'white' : [37, 39], -- 'grey' : [90, 39], -- 'black' : [30, 39], -- 'blue' : [34, 39], -- 'cyan' : [36, 39], -- 'green' : [32, 39], -- 'magenta' : [35, 39], -- 'red' : [31, 39], -- 'yellow' : [33, 39] --}; -- --// Don't use 'blue' not visible on cmd.exe --inspect.styles = { -- 'special': 'cyan', -- 'number': 'yellow', -- 'boolean': 'yellow', -- 'undefined': 'grey', -- 'null': 'bold', -- 'string': 'green', -- 'date': 'magenta', -- // "name": intentionally not styling -- 'regexp': 'red' --}; -- -- --function stylizeWithColor(str, styleType) { -- var style = inspect.styles[styleType]; -- -- if (style) { -- return '\u001b[' + inspect.colors[style][0] + 'm' + str + -- '\u001b[' + inspect.colors[style][1] + 'm'; -- } else { -- return str; -- } --} -- -- --function stylizeNoColor(str, styleType) { -- return str; --} -- -- --function arrayToHash(array) { -- var hash = {}; -- -- array.forEach(function(val, idx) { -- hash[val] = true; -- }); -- -- return hash; --} -- -- --function formatValue(ctx, value, recurseTimes) { -- // Provide a hook for user-specified inspect functions. -- // Check that value is an object with an inspect function on it -- if (ctx.customInspect && -- value && -- isFunction(value.inspect) && -- // Filter out the util module, it's inspect function is special -- value.inspect !== exports.inspect && -- // Also filter out any prototype objects using the circular check. -- !(value.constructor && value.constructor.prototype === value)) { -- var ret = value.inspect(recurseTimes, ctx); -- if (!isString(ret)) { -- ret = formatValue(ctx, ret, recurseTimes); -- } -- return ret; -- } -- -- // Primitive types cannot have properties -- var primitive = formatPrimitive(ctx, value); -- if (primitive) { -- return primitive; -- } -- -- // Look up the keys of the object. -- var keys = Object.keys(value); -- var visibleKeys = arrayToHash(keys); -- -- if (ctx.showHidden) { -- keys = Object.getOwnPropertyNames(value); -- } -- -- // Some type of object without properties can be shortcutted. -- if (keys.length === 0) { -- if (isFunction(value)) { -- var name = value.name ? ': ' + value.name : ''; -- return ctx.stylize('[Function' + name + ']', 'special'); -- } -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } -- if (isDate(value)) { -- return ctx.stylize(Date.prototype.toString.call(value), 'date'); -- } -- if (isError(value)) { -- return formatError(value); -- } -- } -- -- var base = '', array = false, braces = ['{', '}']; -- -- // Make Array say that they are Array -- if (isArray(value)) { -- array = true; -- braces = ['[', ']']; -- } -- -- // Make functions say that they are functions -- if (isFunction(value)) { -- var n = value.name ? ': ' + value.name : ''; -- base = ' [Function' + n + ']'; -- } -- -- // Make RegExps say that they are RegExps -- if (isRegExp(value)) { -- base = ' ' + RegExp.prototype.toString.call(value); -- } -- -- // Make dates with properties first say the date -- if (isDate(value)) { -- base = ' ' + Date.prototype.toUTCString.call(value); -- } -- -- // Make error with message first say the error -- if (isError(value)) { -- base = ' ' + formatError(value); -- } -- -- if (keys.length === 0 && (!array || value.length == 0)) { -- return braces[0] + base + braces[1]; -- } -- -- if (recurseTimes < 0) { -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } else { -- return ctx.stylize('[Object]', 'special'); -- } -- } -- -- ctx.seen.push(value); -- -- var output; -- if (array) { -- output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); -- } else { -- output = keys.map(function(key) { -- return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); -- }); -- } -- -- ctx.seen.pop(); -- -- return reduceToSingleString(output, base, braces); --} -- -- --function formatPrimitive(ctx, value) { -- if (isUndefined(value)) -- return ctx.stylize('undefined', 'undefined'); -- if (isString(value)) { -- var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') -- .replace(/'/g, "\\'") -- .replace(/\\"/g, '"') + '\''; -- return ctx.stylize(simple, 'string'); -- } -- if (isNumber(value)) { -- // Format -0 as '-0'. Strict equality won't distinguish 0 from -0, -- // so instead we use the fact that 1 / -0 < 0 whereas 1 / 0 > 0 . -- if (value === 0 && 1 / value < 0) -- return ctx.stylize('-0', 'number'); -- return ctx.stylize('' + value, 'number'); -- } -- if (isBoolean(value)) -- return ctx.stylize('' + value, 'boolean'); -- // For some reason typeof null is "object", so special case here. -- if (isNull(value)) -- return ctx.stylize('null', 'null'); --} -- -- --function formatError(value) { -- return '[' + Error.prototype.toString.call(value) + ']'; --} -- -- --function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { -- var output = []; -- for (var i = 0, l = value.length; i < l; ++i) { -- if (hasOwnProperty(value, String(i))) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- String(i), true)); -- } else { -- output.push(''); -- } -- } -- keys.forEach(function(key) { -- if (!key.match(/^\d+$/)) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- key, true)); -- } -- }); -- return output; --} -- -- --function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { -- var name, str, desc; -- desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; -- if (desc.get) { -- if (desc.set) { -- str = ctx.stylize('[Getter/Setter]', 'special'); -- } else { -- str = ctx.stylize('[Getter]', 'special'); -- } -- } else { -- if (desc.set) { -- str = ctx.stylize('[Setter]', 'special'); -- } -- } -- if (!hasOwnProperty(visibleKeys, key)) { -- name = '[' + key + ']'; -- } -- if (!str) { -- if (ctx.seen.indexOf(desc.value) < 0) { -- if (isNull(recurseTimes)) { -- str = formatValue(ctx, desc.value, null); -- } else { -- str = formatValue(ctx, desc.value, recurseTimes - 1); -- } -- if (str.indexOf('\n') > -1) { -- if (array) { -- str = str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n').substr(2); -- } else { -- str = '\n' + str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n'); -- } -- } -- } else { -- str = ctx.stylize('[Circular]', 'special'); -- } -- } -- if (isUndefined(name)) { -- if (array && key.match(/^\d+$/)) { -- return str; -- } -- name = JSON.stringify('' + key); -- if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { -- name = name.substr(1, name.length - 2); -- name = ctx.stylize(name, 'name'); -- } else { -- name = name.replace(/'/g, "\\'") -- .replace(/\\"/g, '"') -- .replace(/(^"|"$)/g, "'"); -- name = ctx.stylize(name, 'string'); -- } -- } -- -- return name + ': ' + str; --} -- -- --function reduceToSingleString(output, base, braces) { -- var numLinesEst = 0; -- var length = output.reduce(function(prev, cur) { -- numLinesEst++; -- if (cur.indexOf('\n') >= 0) numLinesEst++; -- return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; -- }, 0); -- -- if (length > 60) { -- return braces[0] + -- (base === '' ? '' : base + '\n ') + -- ' ' + -- output.join(',\n ') + -- ' ' + -- braces[1]; -- } -- -- return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; --} -- -- - // NOTE: These type checking functions intentionally don't use `instanceof` - // because it is fragile and can be easily faked with `Object.create()`. - function isArray(ar) { -@@ -522,166 +98,10 @@ function isPrimitive(arg) { - exports.isPrimitive = isPrimitive; - - function isBuffer(arg) { -- return arg instanceof Buffer; -+ return Buffer.isBuffer(arg); - } - exports.isBuffer = isBuffer; - - function objectToString(o) { - return Object.prototype.toString.call(o); --} -- -- --function pad(n) { -- return n < 10 ? '0' + n.toString(10) : n.toString(10); --} -- -- --var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', -- 'Oct', 'Nov', 'Dec']; -- --// 26 Feb 16:19:34 --function timestamp() { -- var d = new Date(); -- var time = [pad(d.getHours()), -- pad(d.getMinutes()), -- pad(d.getSeconds())].join(':'); -- return [d.getDate(), months[d.getMonth()], time].join(' '); --} -- -- --// log is just a thin wrapper to console.log that prepends a timestamp --exports.log = function() { -- console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); --}; -- -- --/** -- * Inherit the prototype methods from one constructor into another. -- * -- * The Function.prototype.inherits from lang.js rewritten as a standalone -- * function (not on Function.prototype). NOTE: If this file is to be loaded -- * during bootstrapping this function needs to be rewritten using some native -- * functions as prototype setup using normal JavaScript does not work as -- * expected during bootstrapping (see mirror.js in r114903). -- * -- * @param {function} ctor Constructor function which needs to inherit the -- * prototype. -- * @param {function} superCtor Constructor function to inherit prototype from. -- */ --exports.inherits = function(ctor, superCtor) { -- ctor.super_ = superCtor; -- ctor.prototype = Object.create(superCtor.prototype, { -- constructor: { -- value: ctor, -- enumerable: false, -- writable: true, -- configurable: true -- } -- }); --}; -- --exports._extend = function(origin, add) { -- // Don't do anything if add isn't an object -- if (!add || !isObject(add)) return origin; -- -- var keys = Object.keys(add); -- var i = keys.length; -- while (i--) { -- origin[keys[i]] = add[keys[i]]; -- } -- return origin; --}; -- --function hasOwnProperty(obj, prop) { -- return Object.prototype.hasOwnProperty.call(obj, prop); --} -- -- --// Deprecated old stuff. -- --exports.p = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- console.error(exports.inspect(arguments[i])); -- } --}, 'util.p: Use console.error() instead'); -- -- --exports.exec = exports.deprecate(function() { -- return require('child_process').exec.apply(this, arguments); --}, 'util.exec is now called `child_process.exec`.'); -- -- --exports.print = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(String(arguments[i])); -- } --}, 'util.print: Use console.log instead'); -- -- --exports.puts = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(arguments[i] + '\n'); -- } --}, 'util.puts: Use console.log instead'); -- -- --exports.debug = exports.deprecate(function(x) { -- process.stderr.write('DEBUG: ' + x + '\n'); --}, 'util.debug: Use console.error instead'); -- -- --exports.error = exports.deprecate(function(x) { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stderr.write(arguments[i] + '\n'); -- } --}, 'util.error: Use console.error instead'); -- -- --exports.pump = exports.deprecate(function(readStream, writeStream, callback) { -- var callbackCalled = false; -- -- function call(a, b, c) { -- if (callback && !callbackCalled) { -- callback(a, b, c); -- callbackCalled = true; -- } -- } -- -- readStream.addListener('data', function(chunk) { -- if (writeStream.write(chunk) === false) readStream.pause(); -- }); -- -- writeStream.addListener('drain', function() { -- readStream.resume(); -- }); -- -- readStream.addListener('end', function() { -- writeStream.end(); -- }); -- -- readStream.addListener('close', function() { -- call(); -- }); -- -- readStream.addListener('error', function(err) { -- writeStream.end(); -- call(err); -- }); -- -- writeStream.addListener('error', function(err) { -- readStream.destroy(); -- call(err); -- }); --}, 'util.pump(): Use readableStream.pipe() instead'); -- -- --var uv; --exports._errnoException = function(err, syscall) { -- if (isUndefined(uv)) uv = process.binding('uv'); -- var errname = uv.errname(err); -- var e = new Error(syscall + ' ' + errname); -- e.code = errname; -- e.errno = errname; -- e.syscall = syscall; -- return e; --}; -+} \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/lib/util.js deleted file mode 100644 index 9074e8e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -function isBuffer(arg) { - return Buffer.isBuffer(arg); -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/package.json deleted file mode 100644 index 2b7593c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "core-util-is", - "version": "1.0.1", - "description": "The `util.is*` functions introduced in Node v0.12.", - "main": "lib/util.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/core-util-is" - }, - "keywords": [ - "util", - "isBuffer", - "isArray", - "isNumber", - "isString", - "isRegExp", - "isThis", - "isThat", - "polyfill" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/isaacs/core-util-is/issues" - }, - "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/isaacs/core-util-is", - "_id": "core-util-is@1.0.1", - "dist": { - "shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538", - "tarball": "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "_from": "core-util-is@~1.0.0", - "_npmVersion": "1.3.23", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538", - "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", - "scripts": {} -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/util.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/util.js deleted file mode 100644 index 007fa10..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/util.js +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && objectToString(e) === '[object Error]'; -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -function isBuffer(arg) { - return arg instanceof Buffer; -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/README.md deleted file mode 100644 index b1c5665..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits_browser.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/package.json deleted file mode 100644 index 3d69f4f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "_id": "inherits@2.0.1", - "dist": { - "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "_from": "inherits@~2.0.1", - "_npmVersion": "1.3.8", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "homepage": "https://github.com/isaacs/inherits" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/test.js deleted file mode 100644 index fc53012..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/README.md deleted file mode 100644 index 052a62b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/README.md +++ /dev/null @@ -1,54 +0,0 @@ - -# isarray - -`Array#isArray` for older browsers. - -## Usage - -```js -var isArray = require('isarray'); - -console.log(isArray([])); // => true -console.log(isArray({})); // => false -``` - -## Installation - -With [npm](http://npmjs.org) do - -```bash -$ npm install isarray -``` - -Then bundle for the browser with -[browserify](https://github.com/substack/browserify). - -With [component](http://component.io) do - -```bash -$ component install juliangruber/isarray -``` - -## License - -(MIT) - -Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/component.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/component.json deleted file mode 100644 index 9e31b68..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name" : "isarray", - "description" : "Array#isArray for older browsers", - "version" : "0.0.1", - "repository" : "juliangruber/isarray", - "homepage": "https://github.com/juliangruber/isarray", - "main" : "index.js", - "scripts" : [ - "index.js" - ], - "dependencies" : {}, - "keywords": ["browser","isarray","array"], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/index.js deleted file mode 100644 index 5f5ad45..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/package.json deleted file mode 100644 index fc7904b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "isarray", - "description": "Array#isArray for older browsers", - "version": "0.0.1", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/isarray.git" - }, - "homepage": "https://github.com/juliangruber/isarray", - "main": "index.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "*" - }, - "keywords": [ - "browser", - "isarray", - "array" - ], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT", - "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "readmeFilename": "README.md", - "_id": "isarray@0.0.1", - "dist": { - "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "_from": "isarray@0.0.1", - "_npmVersion": "1.2.18", - "_npmUser": { - "name": "juliangruber", - "email": "julian@juliangruber.com" - }, - "maintainers": [ - { - "name": "juliangruber", - "email": "julian@juliangruber.com" - } - ], - "directories": {}, - "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "bugs": { - "url": "https://github.com/juliangruber/isarray/issues" - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa00..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/README.md +++ /dev/null @@ -1,7 +0,0 @@ -**string_decoder.js** (`require('string_decoder')`) from Node.js core - -Copyright Joyent, Inc. and other Node contributors. See LICENCE file for details. - -Version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.** - -The *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version. \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index b00e54f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/index.js +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -var Buffer = require('buffer').Buffer; - -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } - - -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. CESU-8 is handled as part of the UTF-8 encoding. -// -// @TODO Handling all encodings inside a single object makes it very difficult -// to reason about this code, so it should be split up in the future. -// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code -// points as used by CESU-8. -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - // Enough space to store all bytes of a single character. UTF-8 needs 4 - // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). - this.charBuffer = new Buffer(6); - // Number of bytes received for the current incomplete multi-byte character. - this.charReceived = 0; - // Number of bytes expected for the current incomplete multi-byte character. - this.charLength = 0; -}; - - -// write decodes the given buffer and returns it as JS string that is -// guaranteed to not contain any partial multi-byte characters. Any partial -// character found at the end of the buffer is buffered up, and will be -// returned when calling write again with the remaining bytes. -// -// Note: Converting a Buffer containing an orphan surrogate to a String -// currently works, but converting a String to a Buffer (via `new Buffer`, or -// Buffer#write) will replace incomplete surrogates with the unicode -// replacement character. See https://codereview.chromium.org/121173009/ . -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var available = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, 0, available); - this.charReceived += available; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // remove bytes belonging to the current character from the buffer - buffer = buffer.slice(available, buffer.length); - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (buffer.length === 0) { - return charStr; - } - break; - } - - // determine and set charLength / charReceived - this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); - end -= this.charReceived; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - buffer.copy(this.charBuffer, 0, 0, size); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; -}; - -// detectIncompleteChar determines if there is an incomplete UTF-8 character at -// the end of the given buffer. If so, it sets this.charLength to the byte -// length that character, and sets this.charReceived to the number of bytes -// that are available for this character. -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - this.charReceived = i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 2; - this.charLength = this.charReceived ? 2 : 0; -} - -function base64DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 3; - this.charLength = this.charReceived ? 3 : 0; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index a8c586b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "string_decoder", - "version": "0.10.31", - "description": "The string_decoder module from Node core", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "tap": "~0.4.8" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/rvagg/string_decoder.git" - }, - "homepage": "https://github.com/rvagg/string_decoder", - "keywords": [ - "string", - "decoder", - "browser", - "browserify" - ], - "license": "MIT", - "gitHead": "d46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0", - "bugs": { - "url": "https://github.com/rvagg/string_decoder/issues" - }, - "_id": "string_decoder@0.10.31", - "_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", - "_from": "string_decoder@~0.10.x", - "_npmVersion": "1.4.23", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - }, - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", - "tarball": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/package.json deleted file mode 100644 index b5cf0d6..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "readable-stream", - "version": "1.0.33", - "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x", - "main": "readable.js", - "dependencies": { - "core-util-is": "~1.0.0", - "isarray": "0.0.1", - "string_decoder": "~0.10.x", - "inherits": "~2.0.1" - }, - "devDependencies": { - "tap": "~0.2.6" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "browser": { - "util": false - }, - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "gitHead": "0bf97a117c5646556548966409ebc57a6dda2638", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "homepage": "https://github.com/isaacs/readable-stream", - "_id": "readable-stream@1.0.33", - "_shasum": "3a360dd66c1b1d7fd4705389860eda1d0f61126c", - "_from": "readable-stream@~1.0.2", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - }, - { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - }, - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "3a360dd66c1b1d7fd4705389860eda1d0f61126c", - "tarball": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/passthrough.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/readable.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/readable.js deleted file mode 100644 index 8b5337b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,8 +0,0 @@ -var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/transform.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/writable.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efd..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/.npmignore deleted file mode 100644 index c167ad5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.*.swp -node_modules -examples/extract/ -test/tmp/ -test/fixtures/ diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/.travis.yml deleted file mode 100644 index 2d26206..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/LICENCE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/LICENCE deleted file mode 100644 index 74489e2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/LICENCE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) Isaac Z. Schlueter -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/README.md deleted file mode 100644 index 424a278..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# node-tar - -Tar for Node.js. - -[![NPM](https://nodei.co/npm/tar.png)](https://nodei.co/npm/tar/) - -## API - -See `examples/` for usage examples. - -### var tar = require('tar') - -Returns an object with `.Pack`, `.Extract` and `.Parse` methods. - -### tar.Pack([properties]) - -Returns a through stream. Use -[fstream](https://npmjs.org/package/fstream) to write files into the -pack stream and you will receive tar archive data from the pack -stream. - -This only works with directories, it does not work with individual files. - -The optional `properties` object are used to set properties in the tar -'Global Extended Header'. - -### tar.Extract([options]) - -Returns a through stream. Write tar data to the stream and the files -in the tarball will be extracted onto the filesystem. - -`options` can be: - -```js -{ - path: '/path/to/extract/tar/into', - strip: 0, // how many path segments to strip from the root when extracting -} -``` - -`options` also get passed to the `fstream.Writer` instance that `tar` -uses internally. - -### tar.Parse() - -Returns a writable stream. Write tar data to it and it will emit -`entry` events for each entry parsed from the tarball. This is used by -`tar.Extract`. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/extracter.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/extracter.js deleted file mode 100644 index e150abf..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/extracter.js +++ /dev/null @@ -1,11 +0,0 @@ -var tar = require("../tar.js") - , fs = require("fs") - -fs.createReadStream(__dirname + "/../test/fixtures/c.tar") - .pipe(tar.Extract({ path: __dirname + "/extract" })) - .on("error", function (er) { - console.error("error here") - }) - .on("end", function () { - console.error("done") - }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/packer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/packer.js deleted file mode 100644 index ebe3892..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/packer.js +++ /dev/null @@ -1,10 +0,0 @@ -var tar = require("../tar.js") - , fstream = require("fstream") - , fs = require("fs") - -var dir_destination = fs.createWriteStream('dir.tar') - -// This must be a "directory" -fstream.Reader({ path: __dirname, type: "Directory" }) - .pipe(tar.Pack({ noProprietary: true })) - .pipe(dir_destination) \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/reader.js deleted file mode 100644 index 39f3f08..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/examples/reader.js +++ /dev/null @@ -1,36 +0,0 @@ -var tar = require("../tar.js") - , fs = require("fs") - -fs.createReadStream(__dirname + "/../test/fixtures/c.tar") - .pipe(tar.Parse()) - .on("extendedHeader", function (e) { - console.error("extended pax header", e.props) - e.on("end", function () { - console.error("extended pax fields:", e.fields) - }) - }) - .on("ignoredEntry", function (e) { - console.error("ignoredEntry?!?", e.props) - }) - .on("longLinkpath", function (e) { - console.error("longLinkpath entry", e.props) - e.on("end", function () { - console.error("value=%j", e.body.toString()) - }) - }) - .on("longPath", function (e) { - console.error("longPath entry", e.props) - e.on("end", function () { - console.error("value=%j", e.body.toString()) - }) - }) - .on("entry", function (e) { - console.error("entry", e.props) - e.on("data", function (c) { - console.error(" >>>" + c.toString().replace(/\n/g, "\\n")) - }) - e.on("end", function () { - console.error(" << 0 - return !this._needDrain -} - -EntryWriter.prototype.end = function (c) { - // console.error(".. ew end") - if (c) this._buffer.push(c) - this._buffer.push(EOF) - this._ended = true - this._process() - this._needDrain = this._buffer.length > 0 -} - -EntryWriter.prototype.pause = function () { - // console.error(".. ew pause") - this._paused = true - this.emit("pause") -} - -EntryWriter.prototype.resume = function () { - // console.error(".. ew resume") - this._paused = false - this.emit("resume") - this._process() -} - -EntryWriter.prototype.add = function (entry) { - // console.error(".. ew add") - if (!this.parent) return this.emit("error", new Error("no parent")) - - // make sure that the _header and such is emitted, and clear out - // the _currentEntry link on the parent. - if (!this._ended) this.end() - - return this.parent.add(entry) -} - -EntryWriter.prototype._header = function () { - // console.error(".. ew header") - if (this._didHeader) return - this._didHeader = true - - var headerBlock = TarHeader.encode(this.props) - - if (this.props.needExtended && !this._meta) { - var me = this - - ExtendedHeaderWriter = ExtendedHeaderWriter || - require("./extended-header-writer.js") - - ExtendedHeaderWriter(this.props) - .on("data", function (c) { - me.emit("data", c) - }) - .on("error", function (er) { - me.emit("error", er) - }) - .end() - } - - // console.error(".. .. ew headerBlock emitting") - this.emit("data", headerBlock) - this.emit("header") -} - -EntryWriter.prototype._process = function () { - // console.error(".. .. ew process") - if (!this._didHeader && !this._meta) { - this._header() - } - - if (this._paused || this._processing) { - // console.error(".. .. .. paused=%j, processing=%j", this._paused, this._processing) - return - } - - this._processing = true - - var buf = this._buffer - for (var i = 0; i < buf.length; i ++) { - // console.error(".. .. .. i=%d", i) - - var c = buf[i] - - if (c === EOF) this._stream.end() - else this._stream.write(c) - - if (this._paused) { - // console.error(".. .. .. paused mid-emission") - this._processing = false - if (i < buf.length) { - this._needDrain = true - this._buffer = buf.slice(i + 1) - } - return - } - } - - // console.error(".. .. .. emitted") - this._buffer.length = 0 - this._processing = false - - // console.error(".. .. .. emitting drain") - this.emit("drain") -} - -EntryWriter.prototype.destroy = function () {} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/entry.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/entry.js deleted file mode 100644 index 4af5c41..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/entry.js +++ /dev/null @@ -1,213 +0,0 @@ -// A passthrough read/write stream that sets its properties -// based on a header, extendedHeader, and globalHeader -// -// Can be either a file system object of some sort, or -// a pax/ustar metadata entry. - -module.exports = Entry - -var TarHeader = require("./header.js") - , tar = require("../tar") - , assert = require("assert").ok - , Stream = require("stream").Stream - , inherits = require("inherits") - , fstream = require("fstream").Abstract - -function Entry (header, extended, global) { - Stream.call(this) - this.readable = true - this.writable = true - - this._needDrain = false - this._paused = false - this._reading = false - this._ending = false - this._ended = false - this._remaining = 0 - this._queue = [] - this._index = 0 - this._queueLen = 0 - - this._read = this._read.bind(this) - - this.props = {} - this._header = header - this._extended = extended || {} - - // globals can change throughout the course of - // a file parse operation. Freeze it at its current state. - this._global = {} - var me = this - Object.keys(global || {}).forEach(function (g) { - me._global[g] = global[g] - }) - - this._setProps() -} - -inherits(Entry, Stream) - -Entry.prototype.write = function (c) { - if (this._ending) this.error("write() after end()", null, true) - if (this._remaining === 0) { - this.error("invalid bytes past eof") - } - - // often we'll get a bunch of \0 at the end of the last write, - // since chunks will always be 512 bytes when reading a tarball. - if (c.length > this._remaining) { - c = c.slice(0, this._remaining) - } - this._remaining -= c.length - - // put it on the stack. - var ql = this._queueLen - this._queue.push(c) - this._queueLen ++ - - this._read() - - // either paused, or buffered - if (this._paused || ql > 0) { - this._needDrain = true - return false - } - - return true -} - -Entry.prototype.end = function (c) { - if (c) this.write(c) - this._ending = true - this._read() -} - -Entry.prototype.pause = function () { - this._paused = true - this.emit("pause") -} - -Entry.prototype.resume = function () { - // console.error(" Tar Entry resume", this.path) - this.emit("resume") - this._paused = false - this._read() - return this._queueLen - this._index > 1 -} - - // This is bound to the instance -Entry.prototype._read = function () { - // console.error(" Tar Entry _read", this.path) - - if (this._paused || this._reading || this._ended) return - - // set this flag so that event handlers don't inadvertently - // get multiple _read() calls running. - this._reading = true - - // have any data to emit? - while (this._index < this._queueLen && !this._paused) { - var chunk = this._queue[this._index ++] - this.emit("data", chunk) - } - - // check if we're drained - if (this._index >= this._queueLen) { - this._queue.length = this._queueLen = this._index = 0 - if (this._needDrain) { - this._needDrain = false - this.emit("drain") - } - if (this._ending) { - this._ended = true - this.emit("end") - } - } - - // if the queue gets too big, then pluck off whatever we can. - // this should be fairly rare. - var mql = this._maxQueueLen - if (this._queueLen > mql && this._index > 0) { - mql = Math.min(this._index, mql) - this._index -= mql - this._queueLen -= mql - this._queue = this._queue.slice(mql) - } - - this._reading = false -} - -Entry.prototype._setProps = function () { - // props = extended->global->header->{} - var header = this._header - , extended = this._extended - , global = this._global - , props = this.props - - // first get the values from the normal header. - var fields = tar.fields - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , val = header[field] - if (typeof val !== "undefined") props[field] = val - } - - // next, the global header for this file. - // numeric values, etc, will have already been parsed. - ;[global, extended].forEach(function (p) { - Object.keys(p).forEach(function (f) { - if (typeof p[f] !== "undefined") props[f] = p[f] - }) - }) - - // no nulls allowed in path or linkpath - ;["path", "linkpath"].forEach(function (p) { - if (props.hasOwnProperty(p)) { - props[p] = props[p].split("\0")[0] - } - }) - - - // set date fields to be a proper date - ;["mtime", "ctime", "atime"].forEach(function (p) { - if (props.hasOwnProperty(p)) { - props[p] = new Date(props[p] * 1000) - } - }) - - // set the type so that we know what kind of file to create - var type - switch (tar.types[props.type]) { - case "OldFile": - case "ContiguousFile": - type = "File" - break - - case "GNUDumpDir": - type = "Directory" - break - - case undefined: - type = "Unknown" - break - - case "Link": - case "SymbolicLink": - case "CharacterDevice": - case "BlockDevice": - case "Directory": - case "FIFO": - default: - type = tar.types[props.type] - } - - this.type = type - this.path = props.path - this.size = props.size - - // size is special, since it signals when the file needs to end. - this._remaining = props.size -} - -Entry.prototype.warn = fstream.warn -Entry.prototype.error = fstream.error diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extended-header-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extended-header-writer.js deleted file mode 100644 index 1728c45..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extended-header-writer.js +++ /dev/null @@ -1,191 +0,0 @@ - -module.exports = ExtendedHeaderWriter - -var inherits = require("inherits") - , EntryWriter = require("./entry-writer.js") - -inherits(ExtendedHeaderWriter, EntryWriter) - -var tar = require("../tar.js") - , path = require("path") - , TarHeader = require("./header.js") - -// props is the props of the thing we need to write an -// extended header for. -// Don't be shy with it. Just encode everything. -function ExtendedHeaderWriter (props) { - // console.error(">> ehw ctor") - var me = this - - if (!(me instanceof ExtendedHeaderWriter)) { - return new ExtendedHeaderWriter(props) - } - - me.fields = props - - var p = - { path : ("PaxHeader" + path.join("/", props.path || "")) - .replace(/\\/g, "/").substr(0, 100) - , mode : props.mode || 0666 - , uid : props.uid || 0 - , gid : props.gid || 0 - , size : 0 // will be set later - , mtime : props.mtime || Date.now() / 1000 - , type : "x" - , linkpath : "" - , ustar : "ustar\0" - , ustarver : "00" - , uname : props.uname || "" - , gname : props.gname || "" - , devmaj : props.devmaj || 0 - , devmin : props.devmin || 0 - } - - - EntryWriter.call(me, p) - // console.error(">> ehw props", me.props) - me.props = p - - me._meta = true -} - -ExtendedHeaderWriter.prototype.end = function () { - // console.error(">> ehw end") - var me = this - - if (me._ended) return - me._ended = true - - me._encodeFields() - - if (me.props.size === 0) { - // nothing to write! - me._ready = true - me._stream.end() - return - } - - me._stream.write(TarHeader.encode(me.props)) - me.body.forEach(function (l) { - me._stream.write(l) - }) - me._ready = true - - // console.error(">> ehw _process calling end()", me.props) - this._stream.end() -} - -ExtendedHeaderWriter.prototype._encodeFields = function () { - // console.error(">> ehw _encodeFields") - this.body = [] - if (this.fields.prefix) { - this.fields.path = this.fields.prefix + "/" + this.fields.path - this.fields.prefix = "" - } - encodeFields(this.fields, "", this.body, this.fields.noProprietary) - var me = this - this.body.forEach(function (l) { - me.props.size += l.length - }) -} - -function encodeFields (fields, prefix, body, nop) { - // console.error(">> >> ehw encodeFields") - // "%d %s=%s\n", , , - // The length is a decimal number, and includes itself and the \n - // Numeric values are decimal strings. - - Object.keys(fields).forEach(function (k) { - var val = fields[k] - , numeric = tar.numeric[k] - - if (prefix) k = prefix + "." + k - - // already including NODETAR.type, don't need File=true also - if (k === fields.type && val === true) return - - switch (k) { - // don't include anything that's always handled just fine - // in the normal header, or only meaningful in the context - // of nodetar - case "mode": - case "cksum": - case "ustar": - case "ustarver": - case "prefix": - case "basename": - case "dirname": - case "needExtended": - case "block": - case "filter": - return - - case "rdev": - if (val === 0) return - break - - case "nlink": - case "dev": // Truly a hero among men, Creator of Star! - case "ino": // Speak his name with reverent awe! It is: - k = "SCHILY." + k - break - - default: break - } - - if (val && typeof val === "object" && - !Buffer.isBuffer(val)) encodeFields(val, k, body, nop) - else if (val === null || val === undefined) return - else body.push.apply(body, encodeField(k, val, nop)) - }) - - return body -} - -function encodeField (k, v, nop) { - // lowercase keys must be valid, otherwise prefix with - // "NODETAR." - if (k.charAt(0) === k.charAt(0).toLowerCase()) { - var m = k.split(".")[0] - if (!tar.knownExtended[m]) k = "NODETAR." + k - } - - // no proprietary - if (nop && k.charAt(0) !== k.charAt(0).toLowerCase()) { - return [] - } - - if (typeof val === "number") val = val.toString(10) - - var s = new Buffer(" " + k + "=" + v + "\n") - , digits = Math.floor(Math.log(s.length) / Math.log(10)) + 1 - - // console.error("1 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) - - // if adding that many digits will make it go over that length, - // then add one to it. For example, if the string is: - // " foo=bar\n" - // then that's 9 characters. With the "9", that bumps the length - // up to 10. However, this is invalid: - // "10 foo=bar\n" - // but, since that's actually 11 characters, since 10 adds another - // character to the length, and the length includes the number - // itself. In that case, just bump it up again. - if (s.length + digits >= Math.pow(10, digits)) digits += 1 - // console.error("2 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) - - var len = digits + s.length - // console.error("3 s=%j digits=%j s.length=%d len=%d", s.toString(), digits, s.length, len) - var lenBuf = new Buffer("" + len) - if (lenBuf.length + s.length !== len) { - throw new Error("Bad length calculation\n"+ - "len="+len+"\n"+ - "lenBuf="+JSON.stringify(lenBuf.toString())+"\n"+ - "lenBuf.length="+lenBuf.length+"\n"+ - "digits="+digits+"\n"+ - "s="+JSON.stringify(s.toString())+"\n"+ - "s.length="+s.length) - } - - return [lenBuf, s] -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extended-header.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extended-header.js deleted file mode 100644 index 74f432c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extended-header.js +++ /dev/null @@ -1,140 +0,0 @@ -// An Entry consisting of: -// -// "%d %s=%s\n", , , -// -// The length is a decimal number, and includes itself and the \n -// \0 does not terminate anything. Only the length terminates the string. -// Numeric values are decimal strings. - -module.exports = ExtendedHeader - -var Entry = require("./entry.js") - , inherits = require("inherits") - , tar = require("../tar.js") - , numeric = tar.numeric - , keyTrans = { "SCHILY.dev": "dev" - , "SCHILY.ino": "ino" - , "SCHILY.nlink": "nlink" } - -function ExtendedHeader () { - Entry.apply(this, arguments) - this.on("data", this._parse) - this.fields = {} - this._position = 0 - this._fieldPos = 0 - this._state = SIZE - this._sizeBuf = [] - this._keyBuf = [] - this._valBuf = [] - this._size = -1 - this._key = "" -} - -inherits(ExtendedHeader, Entry) -ExtendedHeader.prototype._parse = parse - -var s = 0 - , states = ExtendedHeader.states = {} - , SIZE = states.SIZE = s++ - , KEY = states.KEY = s++ - , VAL = states.VAL = s++ - , ERR = states.ERR = s++ - -Object.keys(states).forEach(function (s) { - states[states[s]] = states[s] -}) - -states[s] = null - -// char code values for comparison -var _0 = "0".charCodeAt(0) - , _9 = "9".charCodeAt(0) - , point = ".".charCodeAt(0) - , a = "a".charCodeAt(0) - , Z = "Z".charCodeAt(0) - , a = "a".charCodeAt(0) - , z = "z".charCodeAt(0) - , space = " ".charCodeAt(0) - , eq = "=".charCodeAt(0) - , cr = "\n".charCodeAt(0) - -function parse (c) { - if (this._state === ERR) return - - for ( var i = 0, l = c.length - ; i < l - ; this._position++, this._fieldPos++, i++) { - // console.error("top of loop, size="+this._size) - - var b = c[i] - - if (this._size >= 0 && this._fieldPos > this._size) { - error(this, "field exceeds length="+this._size) - return - } - - switch (this._state) { - case ERR: return - - case SIZE: - // console.error("parsing size, b=%d, rest=%j", b, c.slice(i).toString()) - if (b === space) { - this._state = KEY - // this._fieldPos = this._sizeBuf.length - this._size = parseInt(new Buffer(this._sizeBuf).toString(), 10) - this._sizeBuf.length = 0 - continue - } - if (b < _0 || b > _9) { - error(this, "expected [" + _0 + ".." + _9 + "], got " + b) - return - } - this._sizeBuf.push(b) - continue - - case KEY: - // can be any char except =, not > size. - if (b === eq) { - this._state = VAL - this._key = new Buffer(this._keyBuf).toString() - if (keyTrans[this._key]) this._key = keyTrans[this._key] - this._keyBuf.length = 0 - continue - } - this._keyBuf.push(b) - continue - - case VAL: - // field must end with cr - if (this._fieldPos === this._size - 1) { - // console.error("finished with "+this._key) - if (b !== cr) { - error(this, "expected \\n at end of field") - return - } - var val = new Buffer(this._valBuf).toString() - if (numeric[this._key]) { - val = parseFloat(val) - } - this.fields[this._key] = val - - this._valBuf.length = 0 - this._state = SIZE - this._size = -1 - this._fieldPos = -1 - continue - } - this._valBuf.push(b) - continue - } - } -} - -function error (me, msg) { - msg = "invalid header: " + msg - + "\nposition=" + me._position - + "\nfield position=" + me._fieldPos - - me.error(msg) - me.state = ERR -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extract.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extract.js deleted file mode 100644 index c34a81e..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/extract.js +++ /dev/null @@ -1,78 +0,0 @@ -// give it a tarball and a path, and it'll dump the contents - -module.exports = Extract - -var tar = require("../tar.js") - , fstream = require("fstream") - , inherits = require("inherits") - , path = require("path") - -function Extract (opts) { - if (!(this instanceof Extract)) return new Extract(opts) - tar.Parse.apply(this) - - // have to dump into a directory - opts.type = "Directory" - opts.Directory = true - - if (typeof opts !== "object") { - opts = { path: opts } - } - - // better to drop in cwd? seems more standard. - opts.path = opts.path || path.resolve("node-tar-extract") - opts.type = "Directory" - opts.Directory = true - - // similar to --strip or --strip-components - opts.strip = +opts.strip - if (!opts.strip || opts.strip <= 0) opts.strip = 0 - - this._fst = fstream.Writer(opts) - - this.pause() - var me = this - - // Hardlinks in tarballs are relative to the root - // of the tarball. So, they need to be resolved against - // the target directory in order to be created properly. - me.on("entry", function (entry) { - // if there's a "strip" argument, then strip off that many - // path components. - if (opts.strip) { - var p = entry.path.split("/").slice(opts.strip).join("/") - entry.path = entry.props.path = p - if (entry.linkpath) { - var lp = entry.linkpath.split("/").slice(opts.strip).join("/") - entry.linkpath = entry.props.linkpath = lp - } - } - if (entry.type !== "Link") return - entry.linkpath = entry.props.linkpath = - path.join(opts.path, path.join("/", entry.props.linkpath)) - }) - - this._fst.on("ready", function () { - me.pipe(me._fst, { end: false }) - me.resume() - }) - - // this._fst.on("end", function () { - // console.error("\nEEEE Extract End", me._fst.path) - // }) - - this._fst.on("close", function () { - // console.error("\nEEEE Extract End", me._fst.path) - me.emit("end") - me.emit("close") - }) -} - -inherits(Extract, tar.Parse) - -Extract.prototype._streamEnd = function () { - var me = this - if (!me._ended) me.error("unexpected eof") - me._fst.end() - // my .end() is coming later. -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/global-header-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/global-header-writer.js deleted file mode 100644 index 0bfc7b8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/global-header-writer.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = GlobalHeaderWriter - -var ExtendedHeaderWriter = require("./extended-header-writer.js") - , inherits = require("inherits") - -inherits(GlobalHeaderWriter, ExtendedHeaderWriter) - -function GlobalHeaderWriter (props) { - if (!(this instanceof GlobalHeaderWriter)) { - return new GlobalHeaderWriter(props) - } - ExtendedHeaderWriter.call(this, props) - this.props.type = "g" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/header.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/header.js deleted file mode 100644 index 05b237c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/header.js +++ /dev/null @@ -1,385 +0,0 @@ -// parse a 512-byte header block to a data object, or vice-versa -// If the data won't fit nicely in a simple header, then generate -// the appropriate extended header file, and return that. - -module.exports = TarHeader - -var tar = require("../tar.js") - , fields = tar.fields - , fieldOffs = tar.fieldOffs - , fieldEnds = tar.fieldEnds - , fieldSize = tar.fieldSize - , numeric = tar.numeric - , assert = require("assert").ok - , space = " ".charCodeAt(0) - , slash = "/".charCodeAt(0) - , bslash = process.platform === "win32" ? "\\".charCodeAt(0) : null - -function TarHeader (block) { - if (!(this instanceof TarHeader)) return new TarHeader(block) - if (block) this.decode(block) -} - -TarHeader.prototype = - { decode : decode - , encode: encode - , calcSum: calcSum - , checkSum: checkSum - } - -TarHeader.parseNumeric = parseNumeric -TarHeader.encode = encode -TarHeader.decode = decode - -// note that this will only do the normal ustar header, not any kind -// of extended posix header file. If something doesn't fit comfortably, -// then it will set obj.needExtended = true, and set the block to -// the closest approximation. -function encode (obj) { - if (!obj && !(this instanceof TarHeader)) throw new Error( - "encode must be called on a TarHeader, or supplied an object") - - obj = obj || this - var block = obj.block = new Buffer(512) - - // if the object has a "prefix", then that's actually an extension of - // the path field. - if (obj.prefix) { - // console.error("%% header encoding, got a prefix", obj.prefix) - obj.path = obj.prefix + "/" + obj.path - // console.error("%% header encoding, prefixed path", obj.path) - obj.prefix = "" - } - - obj.needExtended = false - - if (obj.mode) { - if (typeof obj.mode === "string") obj.mode = parseInt(obj.mode, 8) - obj.mode = obj.mode & 0777 - } - - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , off = fieldOffs[f] - , end = fieldEnds[f] - , ret - - switch (field) { - case "cksum": - // special, done below, after all the others - break - - case "prefix": - // special, this is an extension of the "path" field. - // console.error("%% header encoding, skip prefix later") - break - - case "type": - // convert from long name to a single char. - var type = obj.type || "0" - if (type.length > 1) { - type = tar.types[obj.type] - if (!type) type = "0" - } - writeText(block, off, end, type) - break - - case "path": - // uses the "prefix" field if > 100 bytes, but <= 255 - var pathLen = Buffer.byteLength(obj.path) - , pathFSize = fieldSize[fields.path] - , prefFSize = fieldSize[fields.prefix] - - // paths between 100 and 255 should use the prefix field. - // longer than 255 - if (pathLen > pathFSize && - pathLen <= pathFSize + prefFSize) { - // need to find a slash somewhere in the middle so that - // path and prefix both fit in their respective fields - var searchStart = pathLen - 1 - pathFSize - , searchEnd = prefFSize - , found = false - , pathBuf = new Buffer(obj.path) - - for ( var s = searchStart - ; (s <= searchEnd) - ; s ++ ) { - if (pathBuf[s] === slash || pathBuf[s] === bslash) { - found = s - break - } - } - - if (found !== false) { - prefix = pathBuf.slice(0, found).toString("utf8") - path = pathBuf.slice(found + 1).toString("utf8") - - ret = writeText(block, off, end, path) - off = fieldOffs[fields.prefix] - end = fieldEnds[fields.prefix] - // console.error("%% header writing prefix", off, end, prefix) - ret = writeText(block, off, end, prefix) || ret - break - } - } - - // paths less than 100 chars don't need a prefix - // and paths longer than 255 need an extended header and will fail - // on old implementations no matter what we do here. - // Null out the prefix, and fallthrough to default. - // console.error("%% header writing no prefix") - var poff = fieldOffs[fields.prefix] - , pend = fieldEnds[fields.prefix] - writeText(block, poff, pend, "") - // fallthrough - - // all other fields are numeric or text - default: - ret = numeric[field] - ? writeNumeric(block, off, end, obj[field]) - : writeText(block, off, end, obj[field] || "") - break - } - obj.needExtended = obj.needExtended || ret - } - - var off = fieldOffs[fields.cksum] - , end = fieldEnds[fields.cksum] - - writeNumeric(block, off, end, calcSum.call(this, block)) - - return block -} - -// if it's a negative number, or greater than will fit, -// then use write256. -var MAXNUM = { 12: 077777777777 - , 11: 07777777777 - , 8 : 07777777 - , 7 : 0777777 } -function writeNumeric (block, off, end, num) { - var writeLen = end - off - , maxNum = MAXNUM[writeLen] || 0 - - num = num || 0 - // console.error(" numeric", num) - - if (num instanceof Date || - Object.prototype.toString.call(num) === "[object Date]") { - num = num.getTime() / 1000 - } - - if (num > maxNum || num < 0) { - write256(block, off, end, num) - // need an extended header if negative or too big. - return true - } - - // god, tar is so annoying - // if the string is small enough, you should put a space - // between the octal string and the \0, but if it doesn't - // fit, then don't. - var numStr = Math.floor(num).toString(8) - if (num < MAXNUM[writeLen - 1]) numStr += " " - - // pad with "0" chars - if (numStr.length < writeLen) { - numStr = (new Array(writeLen - numStr.length).join("0")) + numStr - } - - if (numStr.length !== writeLen - 1) { - throw new Error("invalid length: " + JSON.stringify(numStr) + "\n" + - "expected: "+writeLen) - } - block.write(numStr, off, writeLen, "utf8") - block[end - 1] = 0 -} - -function write256 (block, off, end, num) { - var buf = block.slice(off, end) - var positive = num >= 0 - buf[0] = positive ? 0x80 : 0xFF - - // get the number as a base-256 tuple - if (!positive) num *= -1 - var tuple = [] - do { - var n = num % 256 - tuple.push(n) - num = (num - n) / 256 - } while (num) - - var bytes = tuple.length - - var fill = buf.length - bytes - for (var i = 1; i < fill; i ++) { - buf[i] = positive ? 0 : 0xFF - } - - // tuple is a base256 number, with [0] as the *least* significant byte - // if it's negative, then we need to flip all the bits once we hit the - // first non-zero bit. The 2's-complement is (0x100 - n), and the 1's- - // complement is (0xFF - n). - var zero = true - for (i = bytes; i > 0; i --) { - var byte = tuple[bytes - i] - if (positive) buf[fill + i] = byte - else if (zero && byte === 0) buf[fill + i] = 0 - else if (zero) { - zero = false - buf[fill + i] = 0x100 - byte - } else buf[fill + i] = 0xFF - byte - } -} - -function writeText (block, off, end, str) { - // strings are written as utf8, then padded with \0 - var strLen = Buffer.byteLength(str) - , writeLen = Math.min(strLen, end - off) - // non-ascii fields need extended headers - // long fields get truncated - , needExtended = strLen !== str.length || strLen > writeLen - - // write the string, and null-pad - if (writeLen > 0) block.write(str, off, writeLen, "utf8") - for (var i = off + writeLen; i < end; i ++) block[i] = 0 - - return needExtended -} - -function calcSum (block) { - block = block || this.block - assert(Buffer.isBuffer(block) && block.length === 512) - - if (!block) throw new Error("Need block to checksum") - - // now figure out what it would be if the cksum was " " - var sum = 0 - , start = fieldOffs[fields.cksum] - , end = fieldEnds[fields.cksum] - - for (var i = 0; i < fieldOffs[fields.cksum]; i ++) { - sum += block[i] - } - - for (var i = start; i < end; i ++) { - sum += space - } - - for (var i = end; i < 512; i ++) { - sum += block[i] - } - - return sum -} - - -function checkSum (block) { - var sum = calcSum.call(this, block) - block = block || this.block - - var cksum = block.slice(fieldOffs[fields.cksum], fieldEnds[fields.cksum]) - cksum = parseNumeric(cksum) - - return cksum === sum -} - -function decode (block) { - block = block || this.block - assert(Buffer.isBuffer(block) && block.length === 512) - - this.block = block - this.cksumValid = this.checkSum() - - var prefix = null - - // slice off each field. - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , val = block.slice(fieldOffs[f], fieldEnds[f]) - - switch (field) { - case "ustar": - // if not ustar, then everything after that is just padding. - if (val.toString() !== "ustar\0") { - this.ustar = false - return - } else { - // console.error("ustar:", val, val.toString()) - this.ustar = val.toString() - } - break - - // prefix is special, since it might signal the xstar header - case "prefix": - var atime = parseNumeric(val.slice(131, 131 + 12)) - , ctime = parseNumeric(val.slice(131 + 12, 131 + 12 + 12)) - if ((val[130] === 0 || val[130] === space) && - typeof atime === "number" && - typeof ctime === "number" && - val[131 + 12] === space && - val[131 + 12 + 12] === space) { - this.atime = atime - this.ctime = ctime - val = val.slice(0, 130) - } - prefix = val.toString("utf8").replace(/\0+$/, "") - // console.error("%% header reading prefix", prefix) - break - - // all other fields are null-padding text - // or a number. - default: - if (numeric[field]) { - this[field] = parseNumeric(val) - } else { - this[field] = val.toString("utf8").replace(/\0+$/, "") - } - break - } - } - - // if we got a prefix, then prepend it to the path. - if (prefix) { - this.path = prefix + "/" + this.path - // console.error("%% header got a prefix", this.path) - } -} - -function parse256 (buf) { - // first byte MUST be either 80 or FF - // 80 for positive, FF for 2's comp - var positive - if (buf[0] === 0x80) positive = true - else if (buf[0] === 0xFF) positive = false - else return null - - // build up a base-256 tuple from the least sig to the highest - var zero = false - , tuple = [] - for (var i = buf.length - 1; i > 0; i --) { - var byte = buf[i] - if (positive) tuple.push(byte) - else if (zero && byte === 0) tuple.push(0) - else if (zero) { - zero = false - tuple.push(0x100 - byte) - } else tuple.push(0xFF - byte) - } - - for (var sum = 0, i = 0, l = tuple.length; i < l; i ++) { - sum += tuple[i] * Math.pow(256, i) - } - - return positive ? sum : -1 * sum -} - -function parseNumeric (f) { - if (f[0] & 0x80) return parse256(f) - - var str = f.toString("utf8").split("\0")[0].trim() - , res = parseInt(str, 8) - - return isNaN(res) ? null : res -} - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/pack.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/pack.js deleted file mode 100644 index 3ff14dd..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/pack.js +++ /dev/null @@ -1,231 +0,0 @@ -// pipe in an fstream, and it'll make a tarball. -// key-value pair argument is global extended header props. - -module.exports = Pack - -var EntryWriter = require("./entry-writer.js") - , Stream = require("stream").Stream - , path = require("path") - , inherits = require("inherits") - , GlobalHeaderWriter = require("./global-header-writer.js") - , collect = require("fstream").collect - , eof = new Buffer(512) - -for (var i = 0; i < 512; i ++) eof[i] = 0 - -inherits(Pack, Stream) - -function Pack (props) { - // console.error("-- p ctor") - var me = this - if (!(me instanceof Pack)) return new Pack(props) - - if (props) me._noProprietary = props.noProprietary - else me._noProprietary = false - - me._global = props - - me.readable = true - me.writable = true - me._buffer = [] - // console.error("-- -- set current to null in ctor") - me._currentEntry = null - me._processing = false - - me._pipeRoot = null - me.on("pipe", function (src) { - if (src.root === me._pipeRoot) return - me._pipeRoot = src - src.on("end", function () { - me._pipeRoot = null - }) - me.add(src) - }) -} - -Pack.prototype.addGlobal = function (props) { - // console.error("-- p addGlobal") - if (this._didGlobal) return - this._didGlobal = true - - var me = this - GlobalHeaderWriter(props) - .on("data", function (c) { - me.emit("data", c) - }) - .end() -} - -Pack.prototype.add = function (stream) { - if (this._global && !this._didGlobal) this.addGlobal(this._global) - - if (this._ended) return this.emit("error", new Error("add after end")) - - collect(stream) - this._buffer.push(stream) - this._process() - this._needDrain = this._buffer.length > 0 - return !this._needDrain -} - -Pack.prototype.pause = function () { - this._paused = true - if (this._currentEntry) this._currentEntry.pause() - this.emit("pause") -} - -Pack.prototype.resume = function () { - this._paused = false - if (this._currentEntry) this._currentEntry.resume() - this.emit("resume") - this._process() -} - -Pack.prototype.end = function () { - this._ended = true - this._buffer.push(eof) - this._process() -} - -Pack.prototype._process = function () { - var me = this - if (me._paused || me._processing) { - return - } - - var entry = me._buffer.shift() - - if (!entry) { - if (me._needDrain) { - me.emit("drain") - } - return - } - - if (entry.ready === false) { - // console.error("-- entry is not ready", entry) - me._buffer.unshift(entry) - entry.on("ready", function () { - // console.error("-- -- ready!", entry) - me._process() - }) - return - } - - me._processing = true - - if (entry === eof) { - // need 2 ending null blocks. - me.emit("data", eof) - me.emit("data", eof) - me.emit("end") - me.emit("close") - return - } - - // Change the path to be relative to the root dir that was - // added to the tarball. - // - // XXX This should be more like how -C works, so you can - // explicitly set a root dir, and also explicitly set a pathname - // in the tarball to use. That way we can skip a lot of extra - // work when resolving symlinks for bundled dependencies in npm. - - var root = path.dirname((entry.root || entry).path) - var wprops = {} - - Object.keys(entry.props || {}).forEach(function (k) { - wprops[k] = entry.props[k] - }) - - if (me._noProprietary) wprops.noProprietary = true - - wprops.path = path.relative(root, entry.path || '') - - // actually not a matter of opinion or taste. - if (process.platform === "win32") { - wprops.path = wprops.path.replace(/\\/g, "/") - } - - if (!wprops.type) - wprops.type = 'Directory' - - switch (wprops.type) { - // sockets not supported - case "Socket": - return - - case "Directory": - wprops.path += "/" - wprops.size = 0 - break - - case "Link": - var lp = path.resolve(path.dirname(entry.path), entry.linkpath) - wprops.linkpath = path.relative(root, lp) || "." - wprops.size = 0 - break - - case "SymbolicLink": - var lp = path.resolve(path.dirname(entry.path), entry.linkpath) - wprops.linkpath = path.relative(path.dirname(entry.path), lp) || "." - wprops.size = 0 - break - } - - // console.error("-- new writer", wprops) - // if (!wprops.type) { - // // console.error("-- no type?", entry.constructor.name, entry) - // } - - // console.error("-- -- set current to new writer", wprops.path) - var writer = me._currentEntry = EntryWriter(wprops) - - writer.parent = me - - // writer.on("end", function () { - // // console.error("-- -- writer end", writer.path) - // }) - - writer.on("data", function (c) { - me.emit("data", c) - }) - - writer.on("header", function () { - Buffer.prototype.toJSON = function () { - return this.toString().split(/\0/).join(".") - } - // console.error("-- -- writer header %j", writer.props) - if (writer.props.size === 0) nextEntry() - }) - writer.on("close", nextEntry) - - var ended = false - function nextEntry () { - if (ended) return - ended = true - - // console.error("-- -- writer close", writer.path) - // console.error("-- -- set current to null", wprops.path) - me._currentEntry = null - me._processing = false - me._process() - } - - writer.on("error", function (er) { - // console.error("-- -- writer error", writer.path) - me.emit("error", er) - }) - - // if it's the root, then there's no need to add its entries, - // or data, since they'll be added directly. - if (entry === me._pipeRoot) { - // console.error("-- is the root, don't auto-add") - writer.add = null - } - - entry.pipe(writer) -} - -Pack.prototype.destroy = function () {} -Pack.prototype.write = function () {} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/parse.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/parse.js deleted file mode 100644 index 009a85f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/lib/parse.js +++ /dev/null @@ -1,271 +0,0 @@ - -// A writable stream. -// It emits "entry" events, which provide a readable stream that has -// header info attached. - -module.exports = Parse.create = Parse - -var stream = require("stream") - , Stream = stream.Stream - , BlockStream = require("block-stream") - , tar = require("../tar.js") - , TarHeader = require("./header.js") - , Entry = require("./entry.js") - , BufferEntry = require("./buffer-entry.js") - , ExtendedHeader = require("./extended-header.js") - , assert = require("assert").ok - , inherits = require("inherits") - , fstream = require("fstream") - -// reading a tar is a lot like reading a directory -// However, we're actually not going to run the ctor, -// since it does a stat and various other stuff. -// This inheritance gives us the pause/resume/pipe -// behavior that is desired. -inherits(Parse, fstream.Reader) - -function Parse () { - var me = this - if (!(me instanceof Parse)) return new Parse() - - // doesn't apply fstream.Reader ctor? - // no, becasue we don't want to stat/etc, we just - // want to get the entry/add logic from .pipe() - Stream.apply(me) - - me.writable = true - me.readable = true - me._stream = new BlockStream(512) - me.position = 0 - me._ended = false - - me._stream.on("error", function (e) { - me.emit("error", e) - }) - - me._stream.on("data", function (c) { - me._process(c) - }) - - me._stream.on("end", function () { - me._streamEnd() - }) - - me._stream.on("drain", function () { - me.emit("drain") - }) -} - -// overridden in Extract class, since it needs to -// wait for its DirWriter part to finish before -// emitting "end" -Parse.prototype._streamEnd = function () { - var me = this - if (!me._ended) me.error("unexpected eof") - me.emit("end") -} - -// a tar reader is actually a filter, not just a readable stream. -// So, you should pipe a tarball stream into it, and it needs these -// write/end methods to do that. -Parse.prototype.write = function (c) { - if (this._ended) { - // gnutar puts a LOT of nulls at the end. - // you can keep writing these things forever. - // Just ignore them. - for (var i = 0, l = c.length; i > l; i ++) { - if (c[i] !== 0) return this.error("write() after end()") - } - return - } - return this._stream.write(c) -} - -Parse.prototype.end = function (c) { - this._ended = true - return this._stream.end(c) -} - -// don't need to do anything, since we're just -// proxying the data up from the _stream. -// Just need to override the parent's "Not Implemented" -// error-thrower. -Parse.prototype._read = function () {} - -Parse.prototype._process = function (c) { - assert(c && c.length === 512, "block size should be 512") - - // one of three cases. - // 1. A new header - // 2. A part of a file/extended header - // 3. One of two or more EOF null blocks - - if (this._entry) { - var entry = this._entry - entry.write(c) - if (entry._remaining === 0) { - entry.end() - this._entry = null - } - } else { - // either zeroes or a header - var zero = true - for (var i = 0; i < 512 && zero; i ++) { - zero = c[i] === 0 - } - - // eof is *at least* 2 blocks of nulls, and then the end of the - // file. you can put blocks of nulls between entries anywhere, - // so appending one tarball to another is technically valid. - // ending without the eof null blocks is not allowed, however. - if (zero) { - if (this._eofStarted) - this._ended = true - this._eofStarted = true - } else { - this._eofStarted = false - this._startEntry(c) - } - } - - this.position += 512 -} - -// take a header chunk, start the right kind of entry. -Parse.prototype._startEntry = function (c) { - var header = new TarHeader(c) - , self = this - , entry - , ev - , EntryType - , onend - , meta = false - - if (null === header.size || !header.cksumValid) { - var e = new Error("invalid tar file") - e.header = header - e.tar_file_offset = this.position - e.tar_block = this.position / 512 - this.emit("error", e) - } - - switch (tar.types[header.type]) { - case "File": - case "OldFile": - case "Link": - case "SymbolicLink": - case "CharacterDevice": - case "BlockDevice": - case "Directory": - case "FIFO": - case "ContiguousFile": - case "GNUDumpDir": - // start a file. - // pass in any extended headers - // These ones consumers are typically most interested in. - EntryType = Entry - ev = "entry" - break - - case "GlobalExtendedHeader": - // extended headers that apply to the rest of the tarball - EntryType = ExtendedHeader - onend = function () { - self._global = self._global || {} - Object.keys(entry.fields).forEach(function (k) { - self._global[k] = entry.fields[k] - }) - } - ev = "globalExtendedHeader" - meta = true - break - - case "ExtendedHeader": - case "OldExtendedHeader": - // extended headers that apply to the next entry - EntryType = ExtendedHeader - onend = function () { - self._extended = entry.fields - } - ev = "extendedHeader" - meta = true - break - - case "NextFileHasLongLinkpath": - // set linkpath= in extended header - EntryType = BufferEntry - onend = function () { - self._extended = self._extended || {} - self._extended.linkpath = entry.body - } - ev = "longLinkpath" - meta = true - break - - case "NextFileHasLongPath": - case "OldGnuLongPath": - // set path= in file-extended header - EntryType = BufferEntry - onend = function () { - self._extended = self._extended || {} - self._extended.path = entry.body - } - ev = "longPath" - meta = true - break - - default: - // all the rest we skip, but still set the _entry - // member, so that we can skip over their data appropriately. - // emit an event to say that this is an ignored entry type? - EntryType = Entry - ev = "ignoredEntry" - break - } - - var global, extended - if (meta) { - global = extended = null - } else { - var global = this._global - var extended = this._extended - - // extendedHeader only applies to one entry, so once we start - // an entry, it's over. - this._extended = null - } - entry = new EntryType(header, extended, global) - entry.meta = meta - - // only proxy data events of normal files. - if (!meta) { - entry.on("data", function (c) { - me.emit("data", c) - }) - } - - if (onend) entry.on("end", onend) - - this._entry = entry - var me = this - - entry.on("pause", function () { - me.pause() - }) - - entry.on("resume", function () { - me.resume() - }) - - if (this.listeners("*").length) { - this.emit("*", ev, entry) - } - - this.emit(ev, entry) - - // Zero-byte entry. End immediately. - if (entry.props.size === 0) { - entry.end() - this._entry = null - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/LICENCE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/LICENCE deleted file mode 100644 index 74489e2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/LICENCE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) Isaac Z. Schlueter -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/README.md deleted file mode 100644 index c16e9c4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# block-stream - -A stream of blocks. - -Write data into it, and it'll output data in buffer blocks the size you -specify, padding with zeroes if necessary. - -```javascript -var block = new BlockStream(512) -fs.createReadStream("some-file").pipe(block) -block.pipe(fs.createWriteStream("block-file")) -``` - -When `.end()` or `.flush()` is called, it'll pad the block with zeroes. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js deleted file mode 100644 index 9328844..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js +++ /dev/null @@ -1,70 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - f.pause() - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - f.resume() - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/block-stream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/block-stream.js deleted file mode 100644 index 1141f3a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/block-stream.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js deleted file mode 100644 index 93e4068..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js +++ /dev/null @@ -1,70 +0,0 @@ -var BlockStream = require("dropper") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - f.pause() - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - f.resume() - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/dropper.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/dropper.js deleted file mode 100644 index 55fa133..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/bench/dropper.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("dropper") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/block-stream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/block-stream.js deleted file mode 100644 index 008de03..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/block-stream.js +++ /dev/null @@ -1,209 +0,0 @@ -// write data to it, and it'll emit data in 512 byte blocks. -// if you .end() or .flush(), it'll emit whatever it's got, -// padded with nulls to 512 bytes. - -module.exports = BlockStream - -var Stream = require("stream").Stream - , inherits = require("inherits") - , assert = require("assert").ok - , debug = process.env.DEBUG ? console.error : function () {} - -function BlockStream (size, opt) { - this.writable = this.readable = true - this._opt = opt || {} - this._chunkSize = size || 512 - this._offset = 0 - this._buffer = [] - this._bufferLength = 0 - if (this._opt.nopad) this._zeroes = false - else { - this._zeroes = new Buffer(this._chunkSize) - for (var i = 0; i < this._chunkSize; i ++) { - this._zeroes[i] = 0 - } - } -} - -inherits(BlockStream, Stream) - -BlockStream.prototype.write = function (c) { - // debug(" BS write", c) - if (this._ended) throw new Error("BlockStream: write after end") - if (c && !Buffer.isBuffer(c)) c = new Buffer(c + "") - if (c.length) { - this._buffer.push(c) - this._bufferLength += c.length - } - // debug("pushed onto buffer", this._bufferLength) - if (this._bufferLength >= this._chunkSize) { - if (this._paused) { - // debug(" BS paused, return false, need drain") - this._needDrain = true - return false - } - this._emitChunk() - } - return true -} - -BlockStream.prototype.pause = function () { - // debug(" BS pausing") - this._paused = true -} - -BlockStream.prototype.resume = function () { - // debug(" BS resume") - this._paused = false - return this._emitChunk() -} - -BlockStream.prototype.end = function (chunk) { - // debug("end", chunk) - if (typeof chunk === "function") cb = chunk, chunk = null - if (chunk) this.write(chunk) - this._ended = true - this.flush() -} - -BlockStream.prototype.flush = function () { - this._emitChunk(true) -} - -BlockStream.prototype._emitChunk = function (flush) { - // debug("emitChunk flush=%j emitting=%j paused=%j", flush, this._emitting, this._paused) - - // emit a chunk - if (flush && this._zeroes) { - // debug(" BS push zeroes", this._bufferLength) - // push a chunk of zeroes - var padBytes = (this._bufferLength % this._chunkSize) - if (padBytes !== 0) padBytes = this._chunkSize - padBytes - if (padBytes > 0) { - // debug("padBytes", padBytes, this._zeroes.slice(0, padBytes)) - this._buffer.push(this._zeroes.slice(0, padBytes)) - this._bufferLength += padBytes - // debug(this._buffer[this._buffer.length - 1].length, this._bufferLength) - } - } - - if (this._emitting || this._paused) return - this._emitting = true - - // debug(" BS entering loops") - var bufferIndex = 0 - while (this._bufferLength >= this._chunkSize && - (flush || !this._paused)) { - // debug(" BS data emission loop", this._bufferLength) - - var out - , outOffset = 0 - , outHas = this._chunkSize - - while (outHas > 0 && (flush || !this._paused) ) { - // debug(" BS data inner emit loop", this._bufferLength) - var cur = this._buffer[bufferIndex] - , curHas = cur.length - this._offset - // debug("cur=", cur) - // debug("curHas=%j", curHas) - // If it's not big enough to fill the whole thing, then we'll need - // to copy multiple buffers into one. However, if it is big enough, - // then just slice out the part we want, to save unnecessary copying. - // Also, need to copy if we've already done some copying, since buffers - // can't be joined like cons strings. - if (out || curHas < outHas) { - out = out || new Buffer(this._chunkSize) - cur.copy(out, outOffset, - this._offset, this._offset + Math.min(curHas, outHas)) - } else if (cur.length === outHas && this._offset === 0) { - // shortcut -- cur is exactly long enough, and no offset. - out = cur - } else { - // slice out the piece of cur that we need. - out = cur.slice(this._offset, this._offset + outHas) - } - - if (curHas > outHas) { - // means that the current buffer couldn't be completely output - // update this._offset to reflect how much WAS written - this._offset += outHas - outHas = 0 - } else { - // output the entire current chunk. - // toss it away - outHas -= curHas - outOffset += curHas - bufferIndex ++ - this._offset = 0 - } - } - - this._bufferLength -= this._chunkSize - assert(out.length === this._chunkSize) - // debug("emitting data", out) - // debug(" BS emitting, paused=%j", this._paused, this._bufferLength) - this.emit("data", out) - out = null - } - // debug(" BS out of loops", this._bufferLength) - - // whatever is left, it's not enough to fill up a block, or we're paused - this._buffer = this._buffer.slice(bufferIndex) - if (this._paused) { - // debug(" BS paused, leaving", this._bufferLength) - this._needsDrain = true - this._emitting = false - return - } - - // if flushing, and not using null-padding, then need to emit the last - // chunk(s) sitting in the queue. We know that it's not enough to - // fill up a whole block, because otherwise it would have been emitted - // above, but there may be some offset. - var l = this._buffer.length - if (flush && !this._zeroes && l) { - if (l === 1) { - if (this._offset) { - this.emit("data", this._buffer[0].slice(this._offset)) - } else { - this.emit("data", this._buffer[0]) - } - } else { - var outHas = this._bufferLength - , out = new Buffer(outHas) - , outOffset = 0 - for (var i = 0; i < l; i ++) { - var cur = this._buffer[i] - , curHas = cur.length - this._offset - cur.copy(out, outOffset, this._offset) - this._offset = 0 - outOffset += curHas - this._bufferLength -= curHas - } - this.emit("data", out) - } - // truncate - this._buffer.length = 0 - this._bufferLength = 0 - this._offset = 0 - } - - // now either drained or ended - // debug("either draining, or ended", this._bufferLength, this._ended) - // means that we've flushed out all that we can so far. - if (this._needDrain) { - // debug("emitting drain", this._bufferLength) - this._needDrain = false - this.emit("drain") - } - - if ((this._bufferLength === 0) && this._ended && !this._endEmitted) { - // debug("emitting end", this._bufferLength) - this._endEmitted = true - this.emit("end") - } - - this._emitting = false - - // debug(" BS no longer emitting", flush, this._paused, this._emitting, this._bufferLength, this._chunkSize) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/package.json deleted file mode 100644 index b9be4d9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "block-stream", - "description": "a stream of blocks", - "version": "0.0.7", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/block-stream.git" - }, - "engines": { - "node": "0.4 || >=0.5.8" - }, - "main": "block-stream.js", - "dependencies": { - "inherits": "~2.0.0" - }, - "devDependencies": { - "tap": "0.x" - }, - "scripts": { - "test": "tap test/" - }, - "license": "BSD", - "readme": "# block-stream\n\nA stream of blocks.\n\nWrite data into it, and it'll output data in buffer blocks the size you\nspecify, padding with zeroes if necessary.\n\n```javascript\nvar block = new BlockStream(512)\nfs.createReadStream(\"some-file\").pipe(block)\nblock.pipe(fs.createWriteStream(\"block-file\"))\n```\n\nWhen `.end()` or `.flush()` is called, it'll pad the block with zeroes.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/block-stream/issues" - }, - "_id": "block-stream@0.0.7", - "dist": { - "shasum": "9088ab5ae1e861f4d81b176b4a8046080703deed", - "tarball": "http://registry.npmjs.org/block-stream/-/block-stream-0.0.7.tgz" - }, - "_from": "block-stream@*", - "_npmVersion": "1.3.4", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "9088ab5ae1e861f4d81b176b4a8046080703deed", - "_resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.7.tgz", - "homepage": "https://github.com/isaacs/block-stream" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/basic.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/basic.js deleted file mode 100644 index b4b9305..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/basic.js +++ /dev/null @@ -1,27 +0,0 @@ -var tap = require("tap") - , BlockStream = require("../block-stream.js") - -tap.test("basic test", function (t) { - var b = new BlockStream(16) - var fs = require("fs") - var fstr = fs.createReadStream(__filename, {encoding: "utf8"}) - fstr.pipe(b) - - var stat - t.doesNotThrow(function () { - stat = fs.statSync(__filename) - }, "stat should not throw") - - var totalBytes = 0 - b.on("data", function (c) { - t.equal(c.length, 16, "chunks should be 16 bytes long") - t.type(c, Buffer, "chunks should be buffer objects") - totalBytes += c.length - }) - b.on("end", function () { - var expectedBytes = stat.size + (16 - stat.size % 16) - t.equal(totalBytes, expectedBytes, "Should be multiple of 16") - t.end() - }) - -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js deleted file mode 100644 index 7a8de88..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16]//, 25]//, 1024] - , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/nopad.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/nopad.js deleted file mode 100644 index 6d38429..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/nopad.js +++ /dev/null @@ -1,57 +0,0 @@ -var BlockStream = require("../") -var tap = require("tap") - - -tap.test("don't pad, small writes", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(1) - - f.on("data", function (c) { - t.equal(c.toString(), "abc", "should get 'abc'") - }) - - f.on("end", function () { t.end() }) - - f.write(new Buffer("a")) - f.write(new Buffer("b")) - f.write(new Buffer("c")) - f.end() -}) - -tap.test("don't pad, exact write", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(1) - - var first = true - f.on("data", function (c) { - if (first) { - first = false - t.equal(c.toString(), "abcdefghijklmnop", "first chunk") - } else { - t.fail("should only get one") - } - }) - - f.on("end", function () { t.end() }) - - f.end(new Buffer("abcdefghijklmnop")) -}) - -tap.test("don't pad, big write", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(2) - - var first = true - f.on("data", function (c) { - if (first) { - first = false - t.equal(c.toString(), "abcdefghijklmnop", "first chunk") - } else { - t.equal(c.toString(), "q") - } - }) - - f.on("end", function () { t.end() }) - - f.end(new Buffer("abcdefghijklmnopq")) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/pause-resume.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/pause-resume.js deleted file mode 100644 index 64d0d09..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/pause-resume.js +++ /dev/null @@ -1,73 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16] - , writeSizes = [15, 16, 17] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - var paused = false - - f.on("data", function (c) { - timeouts ++ - t.notOk(paused, "should not be paused when emitting data") - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - paused = true - f.pause() - process.nextTick(function () { - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - paused = false - f.resume() - timeouts -- - }) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = expectChunks * blockSize - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 200) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/thorough.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/thorough.js deleted file mode 100644 index 1cc9ea0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/thorough.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16]//, 25]//, 1024] - , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = expectChunks * blockSize - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/two-stream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/two-stream.js deleted file mode 100644 index c6db79a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/block-stream/test/two-stream.js +++ /dev/null @@ -1,59 +0,0 @@ -var log = console.log, - assert = require( 'assert' ), - BlockStream = require("../block-stream.js"), - isize = 0, tsize = 0, fsize = 0, psize = 0, i = 0, - filter = null, paper = null, stack = null, - -// a source data buffer -tsize = 1 * 1024; // <- 1K -stack = new Buffer( tsize ); -for ( ; i < tsize; i++) stack[i] = "x".charCodeAt(0); - -isize = 1 * 1024; // <- initial packet size with 4K no bug! -fsize = 2 * 1024 ; // <- first block-stream size -psize = Math.ceil( isize / 6 ); // <- second block-stream size - -fexpected = Math.ceil( tsize / fsize ); // <- packets expected for first -pexpected = Math.ceil( tsize / psize ); // <- packets expected for second - - -filter = new BlockStream( fsize, { nopad : true } ); -paper = new BlockStream( psize, { nopad : true } ); - - -var fcounter = 0; -filter.on( 'data', function (c) { - // verify that they're not null-padded - for (var i = 0; i < c.length; i ++) { - assert.strictEqual(c[i], "x".charCodeAt(0)) - } - ++fcounter; -} ); - -var pcounter = 0; -paper.on( 'data', function (c) { - // verify that they're not null-padded - for (var i = 0; i < c.length; i ++) { - assert.strictEqual(c[i], "x".charCodeAt(0)) - } - ++pcounter; -} ); - -filter.pipe( paper ); - -filter.on( 'end', function () { - log("fcounter: %s === %s", fcounter, fexpected) - assert.strictEqual( fcounter, fexpected ); -} ); - -paper.on( 'end', function () { - log("pcounter: %s === %s", pcounter, pexpected); - assert.strictEqual( pcounter, pexpected ); -} ); - - -for ( i = 0, j = isize; j <= tsize; j += isize ) { - filter.write( stack.slice( j - isize, j ) ); -} - -filter.end(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/README.md deleted file mode 100644 index b1c5665..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/inherits.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/inherits_browser.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/package.json deleted file mode 100644 index 754a114..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "_id": "inherits@2.0.1", - "dist": { - "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "_from": "inherits@2", - "_npmVersion": "1.3.8", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "homepage": "https://github.com/isaacs/inherits" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/test.js deleted file mode 100644 index fc53012..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/package.json deleted file mode 100644 index ea072cb..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "tar", - "description": "tar for node", - "version": "0.1.20", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-tar.git" - }, - "main": "tar.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "block-stream": "*", - "fstream": "~0.1.28", - "inherits": "2" - }, - "devDependencies": { - "tap": "0.x", - "rimraf": "1.x" - }, - "license": "BSD", - "gitHead": "b5931010907cd1ef5a186bc947954391050cbcce", - "bugs": { - "url": "https://github.com/isaacs/node-tar/issues" - }, - "homepage": "https://github.com/isaacs/node-tar", - "_id": "tar@0.1.20", - "_shasum": "42940bae5b5f22c74483699126f9f3f27449cb13", - "_from": "tar@~0.1.17", - "_npmVersion": "1.4.16", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "42940bae5b5f22c74483699126f9f3f27449cb13", - "tarball": "http://registry.npmjs.org/tar/-/tar-0.1.20.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/tar.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/tar.js deleted file mode 100644 index a81298b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/tar.js +++ /dev/null @@ -1,173 +0,0 @@ -// field paths that every tar file must have. -// header is padded to 512 bytes. -var f = 0 - , fields = {} - , path = fields.path = f++ - , mode = fields.mode = f++ - , uid = fields.uid = f++ - , gid = fields.gid = f++ - , size = fields.size = f++ - , mtime = fields.mtime = f++ - , cksum = fields.cksum = f++ - , type = fields.type = f++ - , linkpath = fields.linkpath = f++ - , headerSize = 512 - , blockSize = 512 - , fieldSize = [] - -fieldSize[path] = 100 -fieldSize[mode] = 8 -fieldSize[uid] = 8 -fieldSize[gid] = 8 -fieldSize[size] = 12 -fieldSize[mtime] = 12 -fieldSize[cksum] = 8 -fieldSize[type] = 1 -fieldSize[linkpath] = 100 - -// "ustar\0" may introduce another bunch of headers. -// these are optional, and will be nulled out if not present. - -var ustar = fields.ustar = f++ - , ustarver = fields.ustarver = f++ - , uname = fields.uname = f++ - , gname = fields.gname = f++ - , devmaj = fields.devmaj = f++ - , devmin = fields.devmin = f++ - , prefix = fields.prefix = f++ - , fill = fields.fill = f++ - -// terminate fields. -fields[f] = null - -fieldSize[ustar] = 6 -fieldSize[ustarver] = 2 -fieldSize[uname] = 32 -fieldSize[gname] = 32 -fieldSize[devmaj] = 8 -fieldSize[devmin] = 8 -fieldSize[prefix] = 155 -fieldSize[fill] = 12 - -// nb: prefix field may in fact be 130 bytes of prefix, -// a null char, 12 bytes for atime, 12 bytes for ctime. -// -// To recognize this format: -// 1. prefix[130] === ' ' or '\0' -// 2. atime and ctime are octal numeric values -// 3. atime and ctime have ' ' in their last byte - -var fieldEnds = {} - , fieldOffs = {} - , fe = 0 -for (var i = 0; i < f; i ++) { - fieldOffs[i] = fe - fieldEnds[i] = (fe += fieldSize[i]) -} - -// build a translation table of field paths. -Object.keys(fields).forEach(function (f) { - if (fields[f] !== null) fields[fields[f]] = f -}) - -// different values of the 'type' field -// paths match the values of Stats.isX() functions, where appropriate -var types = - { 0: "File" - , "\0": "OldFile" // like 0 - , "": "OldFile" - , 1: "Link" - , 2: "SymbolicLink" - , 3: "CharacterDevice" - , 4: "BlockDevice" - , 5: "Directory" - , 6: "FIFO" - , 7: "ContiguousFile" // like 0 - // posix headers - , g: "GlobalExtendedHeader" // k=v for the rest of the archive - , x: "ExtendedHeader" // k=v for the next file - // vendor-specific stuff - , A: "SolarisACL" // skip - , D: "GNUDumpDir" // like 5, but with data, which should be skipped - , I: "Inode" // metadata only, skip - , K: "NextFileHasLongLinkpath" // data = link path of next file - , L: "NextFileHasLongPath" // data = path of next file - , M: "ContinuationFile" // skip - , N: "OldGnuLongPath" // like L - , S: "SparseFile" // skip - , V: "TapeVolumeHeader" // skip - , X: "OldExtendedHeader" // like x - } - -Object.keys(types).forEach(function (t) { - types[types[t]] = types[types[t]] || t -}) - -// values for the mode field -var modes = - { suid: 04000 // set uid on extraction - , sgid: 02000 // set gid on extraction - , svtx: 01000 // set restricted deletion flag on dirs on extraction - , uread: 0400 - , uwrite: 0200 - , uexec: 0100 - , gread: 040 - , gwrite: 020 - , gexec: 010 - , oread: 4 - , owrite: 2 - , oexec: 1 - , all: 07777 - } - -var numeric = - { mode: true - , uid: true - , gid: true - , size: true - , mtime: true - , devmaj: true - , devmin: true - , cksum: true - , atime: true - , ctime: true - , dev: true - , ino: true - , nlink: true - } - -Object.keys(modes).forEach(function (t) { - modes[modes[t]] = modes[modes[t]] || t -}) - -var knownExtended = - { atime: true - , charset: true - , comment: true - , ctime: true - , gid: true - , gname: true - , linkpath: true - , mtime: true - , path: true - , realtime: true - , security: true - , size: true - , uid: true - , uname: true } - - -exports.fields = fields -exports.fieldSize = fieldSize -exports.fieldOffs = fieldOffs -exports.fieldEnds = fieldEnds -exports.types = types -exports.modes = modes -exports.numeric = numeric -exports.headerSize = headerSize -exports.blockSize = blockSize -exports.knownExtended = knownExtended - -exports.Pack = require("./lib/pack.js") -exports.Parse = require("./lib/parse.js") -exports.Extract = require("./lib/extract.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/00-setup-fixtures.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/00-setup-fixtures.js deleted file mode 100644 index 1524ff7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/00-setup-fixtures.js +++ /dev/null @@ -1,53 +0,0 @@ -// the fixtures have some weird stuff that is painful -// to include directly in the repo for various reasons. -// -// So, unpack the fixtures with the system tar first. -// -// This means, of course, that it'll only work if you -// already have a tar implementation, and some of them -// will not properly unpack the fixtures anyway. -// -// But, since usually those tests will fail on Windows -// and other systems with less capable filesystems anyway, -// at least this way we don't cause inconveniences by -// merely cloning the repo or installing the package. - -var tap = require("tap") -, child_process = require("child_process") -, rimraf = require("rimraf") -, test = tap.test -, path = require("path") - -test("clean fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "rimraf ./fixtures/") - t.end() - }) -}) - -test("clean tmp", function (t) { - rimraf(path.resolve(__dirname, "tmp"), function (er) { - t.ifError(er, "rimraf ./tmp/") - t.end() - }) -}) - -test("extract fixtures", function (t) { - var c = child_process.spawn("tar" - ,["xzvf", "fixtures.tgz"] - ,{ cwd: __dirname }) - - c.stdout.on("data", errwrite) - c.stderr.on("data", errwrite) - function errwrite (chunk) { - process.stderr.write(chunk) - } - - c.on("exit", function (code) { - t.equal(code, 0, "extract fixtures should exit with 0") - if (code) { - t.comment("Note, all tests from here on out will fail because of this.") - } - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/extract.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/extract.js deleted file mode 100644 index a68144b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/extract.js +++ /dev/null @@ -1,367 +0,0 @@ -// Set the umask, so that it works the same everywhere. -process.umask(parseInt('22', 8)) - -var tap = require("tap") - , tar = require("../tar.js") - , fs = require("fs") - , path = require("path") - , file = path.resolve(__dirname, "fixtures/c.tar") - , target = path.resolve(__dirname, "tmp/extract-test") - , index = 0 - , fstream = require("fstream") - - , ee = 0 - , expectEntries = -[ { path: 'c.txt', - mode: '644', - type: '0', - depth: undefined, - size: 513, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'cc.txt', - mode: '644', - type: '0', - depth: undefined, - size: 513, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 100, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'Ω.txt', - mode: '644', - type: '0', - depth: undefined, - size: 2, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'Ω.txt', - mode: '644', - type: '0', - depth: undefined, - size: 2, - linkpath: '', - nlink: 1, - dev: 234881026, - ino: 51693379 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 200, - linkpath: '', - nlink: 1, - dev: 234881026, - ino: 51681874 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 201, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: '777', - type: '2', - depth: undefined, - size: 0, - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: '200-hard', - mode: '644', - type: '0', - depth: undefined, - size: 200, - linkpath: '', - nlink: 2, - dev: 234881026, - ino: 51681874 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '1', - depth: undefined, - size: 0, - linkpath: path.resolve(target, '200-hard'), - nlink: 2, - dev: 234881026, - ino: 51681874 } ] - - , ef = 0 - , expectFiles = -[ { path: '', - mode: '40755', - type: 'Directory', - depth: 0, - linkpath: undefined }, - { path: '/200-hard', - mode: '100644', - type: 'File', - depth: 1, - size: 200, - linkpath: undefined, - nlink: 2 }, - { path: '/200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: '120755', - type: 'SymbolicLink', - depth: 1, - size: 200, - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - nlink: 1 }, - { path: '/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '100644', - type: 'Link', - depth: 1, - size: 200, - linkpath: path.join(target, '200-hard'), - nlink: 2 }, - { path: '/c.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 513, - linkpath: undefined, - nlink: 1 }, - { path: '/cc.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 513, - linkpath: undefined, - nlink: 1 }, - { path: '/r', - mode: '40755', - type: 'Directory', - depth: 1, - linkpath: undefined }, - { path: '/r/e', - mode: '40755', - type: 'Directory', - depth: 2, - linkpath: undefined }, - { path: '/r/e/a', - mode: '40755', - type: 'Directory', - depth: 3, - linkpath: undefined }, - { path: '/r/e/a/l', - mode: '40755', - type: 'Directory', - depth: 4, - linkpath: undefined }, - { path: '/r/e/a/l/l', - mode: '40755', - type: 'Directory', - depth: 5, - linkpath: undefined }, - { path: '/r/e/a/l/l/y', - mode: '40755', - type: 'Directory', - depth: 6, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-', - mode: '40755', - type: 'Directory', - depth: 7, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d', - mode: '40755', - type: 'Directory', - depth: 8, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e', - mode: '40755', - type: 'Directory', - depth: 9, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e', - mode: '40755', - type: 'Directory', - depth: 10, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p', - mode: '40755', - type: 'Directory', - depth: 11, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-', - mode: '40755', - type: 'Directory', - depth: 12, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f', - mode: '40755', - type: 'Directory', - depth: 13, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o', - mode: '40755', - type: 'Directory', - depth: 14, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l', - mode: '40755', - type: 'Directory', - depth: 15, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d', - mode: '40755', - type: 'Directory', - depth: 16, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e', - mode: '40755', - type: 'Directory', - depth: 17, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r', - mode: '40755', - type: 'Directory', - depth: 18, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-', - mode: '40755', - type: 'Directory', - depth: 19, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p', - mode: '40755', - type: 'Directory', - depth: 20, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a', - mode: '40755', - type: 'Directory', - depth: 21, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t', - mode: '40755', - type: 'Directory', - depth: 22, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h', - mode: '40755', - type: 'Directory', - depth: 23, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '100644', - type: 'File', - depth: 24, - size: 100, - linkpath: undefined, - nlink: 1 }, - { path: '/Ω.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 2, - linkpath: undefined, - nlink: 1 } ] - - - -// The extract class basically just pipes the input -// to a Reader, and then to a fstream.DirWriter - -// So, this is as much a test of fstream.Reader and fstream.Writer -// as it is of tar.Extract, but it sort of makes sense. - -tap.test("preclean", function (t) { - require("rimraf").sync(__dirname + "/tmp/extract-test") - t.pass("cleaned!") - t.end() -}) - -tap.test("extract test", function (t) { - var extract = tar.Extract(target) - var inp = fs.createReadStream(file) - - // give it a weird buffer size to try to break in odd places - inp.bufferSize = 1234 - - inp.pipe(extract) - - extract.on("end", function () { - t.equal(ee, expectEntries.length, "should see "+ee+" entries") - - // should get no more entries after end - extract.removeAllListeners("entry") - extract.on("entry", function (e) { - t.fail("Should not get entries after end!") - }) - - next() - }) - - extract.on("entry", function (entry) { - var found = - { path: entry.path - , mode: entry.props.mode.toString(8) - , type: entry.props.type - , depth: entry.props.depth - , size: entry.props.size - , linkpath: entry.props.linkpath - , nlink: entry.props.nlink - , dev: entry.props.dev - , ino: entry.props.ino - } - - var wanted = expectEntries[ee ++] - - t.equivalent(found, wanted, "tar entry " + ee + " " + wanted.path) - }) - - function next () { - var r = fstream.Reader({ path: target - , type: "Directory" - // this is just to encourage consistency - , sort: "alpha" }) - - r.on("ready", function () { - foundEntry(r) - }) - - r.on("end", finish) - - function foundEntry (entry) { - var p = entry.path.substr(target.length) - var found = - { path: p - , mode: entry.props.mode.toString(8) - , type: entry.props.type - , depth: entry.props.depth - , size: entry.props.size - , linkpath: entry.props.linkpath - , nlink: entry.props.nlink - } - - var wanted = expectFiles[ef ++] - - t.has(found, wanted, "unpacked file " + ef + " " + wanted.path) - - entry.on("entry", foundEntry) - } - - function finish () { - t.equal(ef, expectFiles.length, "should have "+ef+" items") - t.end() - } - } -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/fixtures.tgz b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/fixtures.tgz deleted file mode 100644 index 4501bcf22695435b84edb3d4076cd9a70687b035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19205 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 b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - - -function runTest (t, doGH) { - var reader = Reader({ path: input - , filter: function () { - return !this.path.match(/\.(tar|hex)$/) - } - , sort: alphasort - }) - - var props = doGH ? pkg : {} - props.noProprietary = true - var pack = Pack(props) - var writer = Writer(target) - - // global header should be skipped regardless, since it has no content. - var entry = 0 - - t.ok(reader, "reader ok") - t.ok(pack, "pack ok") - t.ok(writer, "writer ok") - - pack.pipe(writer) - - var parse = tar.Parse() - t.ok(parse, "parser should be ok") - - pack.on("data", function (c) { - // console.error("PACK DATA") - if (c.length !== 512) { - // this one is too noisy, only assert if it'll be relevant - t.equal(c.length, 512, "parser should emit data in 512byte blocks") - } - parse.write(c) - }) - - pack.on("end", function () { - // console.error("PACK END") - t.pass("parser ends") - parse.end() - }) - - pack.on("error", function (er) { - t.fail("pack error", er) - }) - - parse.on("error", function (er) { - t.fail("parse error", er) - }) - - writer.on("error", function (er) { - t.fail("writer error", er) - }) - - reader.on("error", function (er) { - t.fail("reader error", er) - }) - - parse.on("*", function (ev, e) { - var wanted = entries[entry++] - if (!wanted) { - t.fail("unexpected event: "+ev) - return - } - t.equal(ev, wanted[0], "event type should be "+wanted[0]) - - if (ev !== wanted[0] || e.path !== wanted[1].path) { - console.error(wanted) - console.error([ev, e.props]) - e.on("end", function () { - console.error(e.fields) - throw "break" - }) - } - - t.has(e.props, wanted[1], "properties "+wanted[1].path) - if (wanted[2]) { - e.on("end", function () { - if (!e.fields) { - t.ok(e.fields, "should get fields") - } else { - t.has(e.fields, wanted[2], "should get expected fields") - } - }) - } - }) - - reader.pipe(pack) - - writer.on("close", function () { - t.equal(entry, entries.length, "should get all expected entries") - t.pass("it finished") - t.end() - }) - -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/pack.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/pack.js deleted file mode 100644 index 0f50994..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/pack.js +++ /dev/null @@ -1,897 +0,0 @@ - -// the symlink file is excluded from git, because it makes -// windows freak the hell out. -var fs = require("fs") - , path = require("path") - , symlink = path.resolve(__dirname, "fixtures/symlink") -try { fs.unlinkSync(symlink) } catch (e) {} -fs.symlinkSync("./hardlink-1", symlink) -process.on("exit", function () { - fs.unlinkSync(symlink) -}) - - -var tap = require("tap") - , tar = require("../tar.js") - , pkg = require("../package.json") - , Pack = tar.Pack - , fstream = require("fstream") - , Reader = fstream.Reader - , Writer = fstream.Writer - , input = path.resolve(__dirname, "fixtures/") - , target = path.resolve(__dirname, "tmp/pack.tar") - , uid = process.getuid ? process.getuid() : 0 - , gid = process.getgid ? process.getgid() : 0 - - , entries = - - // the global header and root fixtures/ dir are going to get - // a different date each time, so omit that bit. - // Also, dev/ino values differ across machines, so that's not - // included. - [ [ 'globalExtendedHeader', - { path: 'PaxHeader/', - mode: 438, - uid: 0, - gid: 0, - type: 'g', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { "NODETAR.author": pkg.author, - "NODETAR.name": pkg.name, - "NODETAR.description": pkg.description, - "NODETAR.version": pkg.version, - "NODETAR.repository.type": pkg.repository.type, - "NODETAR.repository.url": pkg.repository.url, - "NODETAR.main": pkg.main, - "NODETAR.scripts.test": pkg.scripts.test } ] - - , [ 'entry', - { path: 'fixtures/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - uid: uid, - gid: gid, - size: 200, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/a.txt', - mode: 420, - uid: uid, - gid: gid, - size: 257, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/b.txt', - mode: 420, - uid: uid, - gid: gid, - size: 512, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/c.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/cc.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/foo.js', - mode: 420, - uid: uid, - gid: gid, - size: 4, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-1', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-2', - mode: 420, - uid: uid, - gid: gid, - size: 0, - type: '1', - linkpath: 'fixtures/hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/star.4.html', - mode: 420, - uid: uid, - gid: gid, - size: 54081, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/packtest/Ω.txt', - 'NODETAR.depth': '2', - 'NODETAR.type': 'File', - nlink: 1, - uid: uid, - gid: gid, - size: 2, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '2', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 100, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/symlink', - uid: uid, - gid: gid, - size: 0, - type: '2', - linkpath: 'hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: "fixtures/Ω.txt" - , "NODETAR.depth": "1" - , "NODETAR.type": "File" - , nlink: 1 - , uid: uid - , gid: gid - , size: 2 - , "NODETAR.blksize": "4096" - , "NODETAR.blocks": "8" } ] - - , [ 'entry', - { path: 'fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - ] - - -// first, make sure that the hardlinks are actually hardlinks, or this -// won't work. Git has a way of replacing them with a copy. -var hard1 = path.resolve(__dirname, "fixtures/hardlink-1") - , hard2 = path.resolve(__dirname, "fixtures/hardlink-2") - , fs = require("fs") - -try { fs.unlinkSync(hard2) } catch (e) {} -fs.linkSync(hard1, hard2) - -tap.test("with global header", { timeout: 10000 }, function (t) { - runTest(t, true) -}) - -tap.test("without global header", { timeout: 10000 }, function (t) { - runTest(t, false) -}) - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - - -function runTest (t, doGH) { - var reader = Reader({ path: input - , filter: function () { - return !this.path.match(/\.(tar|hex)$/) - } - , sort: alphasort - }) - - var pack = Pack(doGH ? pkg : null) - var writer = Writer(target) - - // skip the global header if we're not doing that. - var entry = doGH ? 0 : 1 - - t.ok(reader, "reader ok") - t.ok(pack, "pack ok") - t.ok(writer, "writer ok") - - pack.pipe(writer) - - var parse = tar.Parse() - t.ok(parse, "parser should be ok") - - pack.on("data", function (c) { - // console.error("PACK DATA") - if (c.length !== 512) { - // this one is too noisy, only assert if it'll be relevant - t.equal(c.length, 512, "parser should emit data in 512byte blocks") - } - parse.write(c) - }) - - pack.on("end", function () { - // console.error("PACK END") - t.pass("parser ends") - parse.end() - }) - - pack.on("error", function (er) { - t.fail("pack error", er) - }) - - parse.on("error", function (er) { - t.fail("parse error", er) - }) - - writer.on("error", function (er) { - t.fail("writer error", er) - }) - - reader.on("error", function (er) { - t.fail("reader error", er) - }) - - parse.on("*", function (ev, e) { - var wanted = entries[entry++] - if (!wanted) { - t.fail("unexpected event: "+ev) - return - } - t.equal(ev, wanted[0], "event type should be "+wanted[0]) - - // if (ev !== wanted[0] || e.path !== wanted[1].path) { - // console.error(wanted) - // console.error([ev, e.props]) - // throw "break" - // } - - t.has(e.props, wanted[1], "properties "+wanted[1].path) - if (wanted[2]) { - e.on("end", function () { - if (!e.fields) { - t.ok(e.fields, "should get fields") - } else { - t.has(e.fields, wanted[2], "should get expected fields") - } - }) - } - }) - - reader.pipe(pack) - - writer.on("close", function () { - t.equal(entry, entries.length, "should get all expected entries") - t.pass("it finished") - t.end() - }) - -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/parse.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/parse.js deleted file mode 100644 index f765a50..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/parse.js +++ /dev/null @@ -1,359 +0,0 @@ -var tap = require("tap") - , tar = require("../tar.js") - , fs = require("fs") - , path = require("path") - , file = path.resolve(__dirname, "fixtures/c.tar") - , index = 0 - - , expect = -[ [ 'entry', - { path: 'c.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 513, - mtime: new Date('Wed, 26 Oct 2011 01:10:58 GMT'), - cksum: 5422, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'cc.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 513, - mtime: new Date('Wed, 26 Oct 2011 01:11:02 GMT'), - cksum: 5525, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 100, - mtime: new Date('Thu, 27 Oct 2011 03:43:23 GMT'), - cksum: 18124, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 2, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 5695, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 120, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 6702, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'Ω.txt', - ctime: 1319737909, - atime: 1319739061, - dev: 234881026, - ino: 51693379, - nlink: 1 } ], - [ 'entry', - { path: 'Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 2, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 5695, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - atime: new Date('Thu, 27 Oct 2011 18:11:01 GMT'), - dev: 234881026, - ino: 51693379, - nlink: 1 }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 353, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14488, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ctime: 1319686868, - atime: 1319741254, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 1 } ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 200, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14570, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - atime: new Date('Thu, 27 Oct 2011 18:47:34 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 1 }, - undefined ], - [ 'longPath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4976, - type: 'L', - linkpath: '', - ustar: false }, - '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 1000, - gid: 1000, - size: 201, - mtime: new Date('Thu, 27 Oct 2011 22:21:50 GMT'), - cksum: 14086, - type: '0', - linkpath: '', - ustar: false }, - undefined ], - [ 'longLinkpath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4975, - type: 'K', - linkpath: '', - ustar: false }, - '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], - [ 'longPath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4976, - type: 'L', - linkpath: '', - ustar: false }, - '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' ], - [ 'entry', - { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: 511, - uid: 1000, - gid: 1000, - size: 0, - mtime: new Date('Fri, 28 Oct 2011 23:05:17 GMT'), - cksum: 21603, - type: '2', - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ustar: false }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200-hard', - mode: 420, - uid: 24561, - gid: 20, - size: 143, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 6533, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { ctime: 1320617144, - atime: 1320617232, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 } ], - [ 'entry', - { path: '200-hard', - mode: 420, - uid: 24561, - gid: 20, - size: 200, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 5526, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), - atime: new Date('Sun, 06 Nov 2011 22:07:12 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 353, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14488, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ctime: 1320617144, - atime: 1320617406, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 } ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 0, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 15173, - type: '1', - linkpath: '200-hard', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), - atime: new Date('Sun, 06 Nov 2011 22:10:06 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 }, - undefined ] ] - - -tap.test("parser test", function (t) { - var parser = tar.Parse() - - parser.on("end", function () { - t.equal(index, expect.length, "saw all expected events") - t.end() - }) - - fs.createReadStream(file) - .pipe(parser) - .on("*", function (ev, entry) { - var wanted = expect[index] - if (!wanted) { - return t.fail("Unexpected event: " + ev) - } - var result = [ev, entry.props] - entry.on("end", function () { - result.push(entry.fields || entry.body) - - t.equal(ev, wanted[0], index + " event type") - t.equivalent(entry.props, wanted[1], wanted[1].path + " entry properties") - if (wanted[2]) { - t.equivalent(result[2], wanted[2], "metadata values") - } - index ++ - }) - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/zz-cleanup.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/zz-cleanup.js deleted file mode 100644 index a00ff7f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/tar/test/zz-cleanup.js +++ /dev/null @@ -1,20 +0,0 @@ -// clean up the fixtures - -var tap = require("tap") -, rimraf = require("rimraf") -, test = tap.test -, path = require("path") - -test("clean fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "rimraf ./fixtures/") - t.end() - }) -}) - -test("clean tmp", function (t) { - rimraf(path.resolve(__dirname, "tmp"), function (er) { - t.ifError(er, "rimraf ./tmp/") - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/LICENCE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/LICENCE deleted file mode 100644 index 74489e2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/LICENCE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) Isaac Z. Schlueter -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/README.md deleted file mode 100644 index 8116675..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/README.md +++ /dev/null @@ -1,17 +0,0 @@ -Use this module to convert a username/groupname to a uid/gid number. - -Usage: - -``` -npm install uid-number -``` - -Then, in your node program: - -```javascript -var uidNumber = require("uid-number") -uidNumber("isaacs", function (er, uid, gid) { - // gid is null because we didn't ask for a group name - // uid === 24561 because that's my number. -}) -``` diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/get-uid-gid.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/get-uid-gid.js deleted file mode 100755 index 0b39174..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/get-uid-gid.js +++ /dev/null @@ -1,24 +0,0 @@ -if (module !== require.main) { - throw new Error("This file should not be loaded with require()") -} - -if (!process.getuid || !process.getgid) { - throw new Error("this file should not be called without uid/gid support") -} - -var argv = process.argv.slice(2) - , user = argv[0] || process.getuid() - , group = argv[1] || process.getgid() - -if (!isNaN(user)) user = +user -if (!isNaN(group)) group = +group - -console.error([user, group]) - -try { - process.setgid(group) - process.setuid(user) - console.log(JSON.stringify({uid:+process.getuid(), gid:+process.getgid()})) -} catch (ex) { - console.log(JSON.stringify({error:ex.message,errno:ex.errno})) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/package.json deleted file mode 100644 index fc9e2f7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "uid-number", - "description": "Convert a username/group name to a uid/gid number", - "version": "0.0.3", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/uid-number.git" - }, - "main": "uid-number.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "license": "BSD", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "_id": "uid-number@0.0.3", - "_engineSupported": true, - "_npmVersion": "1.1.23", - "_nodeVersion": "v0.7.10-pre", - "_defaultsLoaded": true, - "dist": { - "shasum": "cefb0fa138d8d8098da71a40a0d04a8327d6e1cc", - "tarball": "http://registry.npmjs.org/uid-number/-/uid-number-0.0.3.tgz" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "cefb0fa138d8d8098da71a40a0d04a8327d6e1cc", - "_from": "uid-number@0.0.3", - "_resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.3.tgz" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/uid-number.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/uid-number.js deleted file mode 100644 index 93f372b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/uid-number.js +++ /dev/null @@ -1,54 +0,0 @@ -module.exports = uidNumber - -// This module calls into get-uid-gid.js, which sets the -// uid and gid to the supplied argument, in order to find out their -// numeric value. This can't be done in the main node process, -// because otherwise node would be running as that user from this -// point on. - -var child_process = require("child_process") - , path = require("path") - , uidSupport = process.getuid && process.setuid - , uidCache = {} - , gidCache = {} - -function uidNumber (uid, gid, cb) { - if (!uidSupport) return cb() - if (typeof cb !== "function") cb = gid, gid = null - if (typeof cb !== "function") cb = uid, uid = null - if (gid == null) gid = process.getgid() - if (uid == null) uid = process.getuid() - if (!isNaN(gid)) gid = uidCache[gid] = +gid - if (!isNaN(uid)) uid = uidCache[uid] = +uid - - if (uidCache.hasOwnProperty(uid)) uid = uidCache[uid] - if (gidCache.hasOwnProperty(gid)) gid = gidCache[gid] - - if (typeof gid === "number" && typeof uid === "number") { - return process.nextTick(cb.bind(null, null, uid, gid)) - } - - var getter = require.resolve("./get-uid-gid.js") - - child_process.execFile( process.execPath - , [getter, uid, gid] - , function (code, out, err) { - if (er) return cb(new Error("could not get uid/gid\n" + err)) - try { - out = JSON.parse(out+"") - } catch (ex) { - return cb(ex) - } - - if (out.error) { - var er = new Error(out.error) - er.errno = out.errno - return cb(er) - } - - if (isNaN(out.uid) || isNaN(out.gid)) return cb(new Error( - "Could not get uid/gid: "+JSON.stringify(out))) - - cb(null, uidCache[uid] = +out.uid, uidCache[gid] = +out.gid) - }) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/package.json deleted file mode 100644 index 432e902..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "tar-pack", - "version": "2.0.0", - "description": "Package and un-package modules of some sort (in tar/gz bundles).", - "scripts": { - "test": "mocha -R list" - }, - "repository": { - "type": "git", - "url": "https://github.com/ForbesLindesay/tar-pack.git" - }, - "license": "BSD", - "optionalDependencies": { - "graceful-fs": "1.2" - }, - "dependencies": { - "uid-number": "0.0.3", - "once": "~1.1.1", - "debug": "~0.7.2", - "rimraf": "~2.2.0", - "fstream": "~0.1.22", - "tar": "~0.1.17", - "fstream-ignore": "0.0.7", - "readable-stream": "~1.0.2", - "graceful-fs": "1.2" - }, - "devDependencies": { - "mocha": "*", - "rfile": "*", - "mkdirp": "*" - }, - "readme": "# Tar Pack\r\n\r\nPackage and un-package modules of some sort (in tar/gz bundles). This is mostly useful for package managers. Note that it doesn't check for or touch `package.json` so it can be used even if that's not the way you store your package info.\r\n\r\n[![Build Status](https://travis-ci.org/ForbesLindesay/tar-pack.png?branch=master)](https://travis-ci.org/ForbesLindesay/tar-pack)\r\n[![Dependency Status](https://gemnasium.com/ForbesLindesay/tar-pack.png)](https://gemnasium.com/ForbesLindesay/tar-pack)\r\n[![NPM version](https://badge.fury.io/js/tar-pack.png)](http://badge.fury.io/js/tar-pack)\r\n\r\n## Installation\r\n\r\n $ npm install tar-pack\r\n\r\n## API\r\n\r\n### pack(folder|packer, [options])\r\n\r\nPack the folder at `folder` into a gzipped tarball and return the tgz as a stream. Files ignored by `.gitignore` will not be in the package.\r\n\r\nYou can optionally pass a `fstream.DirReader` directly, instead of folder. For example, to create an npm package, do:\r\n\r\n```js\r\npack(require(\"fstream-npm\")(folder), [options])\r\n```\r\n\r\nOptions:\r\n\r\n - `noProprietary` (defaults to `false`) Set this to `true` to prevent any proprietary attributes being added to the tarball. These attributes are allowed by the spec, but may trip up some poorly written tarball parsers.\r\n - `ignoreFiles` (defaults to `['.gitignore']`) These files can specify files to be excluded from the package using the syntax of `.gitignore`. This option is ignored if you parse a `fstream.DirReader` instead of a string for folder.\r\n - `filter` (defaults to `entry => true`) A function that takes an entry and returns `true` if it should be included in the package and `false` if it should not. Entryies are of the form `{path, basename, dirname, type}` where (type is \"Directory\" or \"File\"). This function is ignored if you parse a `fstream.DirReader` instead of a string for folder.\r\n\r\nExample:\r\n\r\n```js\r\nvar write = require('fs').createWriteStream\r\nvar pack = require('tar-pack').pack\r\npack(process.cwd())\r\n .pipe(write(__dirname + '/package.tar.gz'))\r\n .on('error', function (err) {\r\n console.error(err.stack)\r\n })\r\n .on('close', function () {\r\n console.log('done')\r\n })\r\n```\r\n\r\n### unpack(folder, [options,] cb)\r\n\r\nReturn a stream that unpacks a tarball into a folder at `folder`. N.B. the output folder will be removed first if it already exists.\r\n\r\nThe callback is called with an optional error and, as its second argument, a string which is one of:\r\n\r\n - `'directory'`, indicating that the extracted package was a directory (either `.tar.gz` or `.tar`)\r\n - `'file'`, incating that the extracted package was just a single file (extracted to `defaultName`, see options)\r\n\r\nBasic Options:\r\n\r\n - `defaultName` (defaults to `index.js`) If the package is a single file, rather than a tarball, it will be \"extracted\" to this file name, set to `false` to disable.\r\n\r\nAdvanced Options (you probably don't need any of these):\r\n\r\n - `gid` - (defaults to `null`) the `gid` to use when writing files\r\n - `uid` - (defaults to `null`) the `uid` to use when writing files\r\n - `dmode` - (defaults to `0777`) The mode to use when creating directories\r\n - `fmode` - (defaults to `0666`) The mode to use when creating files\r\n - `unsafe` - (defaults to `false`) (on non win32 OSes it overrides `gid` and `uid` with the current processes IDs)\r\n\r\nExample:\r\n\r\n```js\r\nvar read = require('fs').createReadStream\r\nvar unpack = require('tar-pack').unpack\r\nread(process.cwd() + '/package.tar.gz')\r\n .pipe(unpack(__dirname + '/package/', function (err) {\r\n if (err) console.error(err.stack)\r\n else console.log('done')\r\n }))\r\n```\r\n\r\n## License\r\n\r\n BSD", - "readmeFilename": "README.md", - "_id": "tar-pack@2.0.0", - "dist": { - "shasum": "c2c401c02dd366138645e917b3a6baa256a9dcab", - "tarball": "http://registry.npmjs.org/tar-pack/-/tar-pack-2.0.0.tgz" - }, - "_from": "tar-pack@~2.0.0", - "_npmVersion": "1.2.10", - "_npmUser": { - "name": "forbeslindesay", - "email": "forbes@lindesay.co.uk" - }, - "maintainers": [ - { - "name": "forbeslindesay", - "email": "forbes@lindesay.co.uk" - } - ], - "directories": {}, - "_shasum": "c2c401c02dd366138645e917b3a6baa256a9dcab", - "_resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-2.0.0.tgz", - "bugs": { - "url": "https://github.com/ForbesLindesay/tar-pack/issues" - }, - "homepage": "https://github.com/ForbesLindesay/tar-pack" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed-file.txt b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed-file.txt deleted file mode 100644 index ba0e162..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed-file.txt +++ /dev/null @@ -1 +0,0 @@ -bar \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed.tar b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed.tar deleted file mode 100644 index 35fd1745182fd4c3c4572a7d11e0d9f2f41658b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 zcmeH{K?(vf3`KjCoIsPdnVhF1>cYhgG7ItaMy)WoaTOTwchfe|B)s3Bxg9R;eB7tN zMU~Br5C~06%Nc|=-cm2n9-7U8z1dH%5{R?&dH4oMGH-ABi yL%KoIHG#3+*H@hXjKIhLr)k=T|24n-pMCzr|M8#E=YD(E_7jX0PWO03Iah41>hVd7f>@lNzOAX*jS9n z6yoU}#YM2$YLcfTRTkX(XB^`12+V^V_A=KiO0 zKek7s5rQoBpML#Y?%7-;lMswHl_$Y|&HKO9x{dv7{OsQh`(H!<`vd?0`||=f!0QwM G4gdh@=127a diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/bar.txt b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/bar.txt deleted file mode 100644 index 3f95386..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/bar.txt +++ /dev/null @@ -1 +0,0 @@ -baz \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/foo.txt b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/foo.txt deleted file mode 100644 index ba0e162..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/foo.txt +++ /dev/null @@ -1 +0,0 @@ -bar \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/index.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/index.js deleted file mode 100644 index 85b5f41..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar-pack/test/index.js +++ /dev/null @@ -1,67 +0,0 @@ -var tar = require('../') -var path = require('path') -var rfile = require('rfile') -var rimraf = require('rimraf').sync -var mkdir = require('mkdirp').sync - -var read = require('fs').createReadStream -var write = require('fs').createWriteStream -var assert = require('assert') - -beforeEach(function () { - rimraf(__dirname + '/output') -}) -afterEach(function () { - rimraf(__dirname + '/output') -}) -describe('tarball.pipe(unpack(directory, callback))', function () { - it('unpacks the tarball into the directory', function (done) { - read(__dirname + '/fixtures/packed.tar').pipe(tar.unpack(__dirname + '/output/unpacked', function (err) { - if (err) return done(err) - assert.equal(rfile('./output/unpacked/bar.txt'), rfile('./fixtures/to-pack/bar.txt')) - assert.equal(rfile('./output/unpacked/foo.txt'), rfile('./fixtures/to-pack/foo.txt')) - done() - })) - }) -}) -describe('gziptarball.pipe(unpack(directory, callback))', function () { - it('unpacks the tarball into the directory', function (done) { - read(__dirname + '/fixtures/packed.tar.gz').pipe(tar.unpack(__dirname + '/output/unpacked', function (err) { - if (err) return done(err) - assert.equal(rfile('./output/unpacked/bar.txt'), rfile('./fixtures/to-pack/bar.txt')) - assert.equal(rfile('./output/unpacked/foo.txt'), rfile('./fixtures/to-pack/foo.txt')) - done() - })) - }) -}) -describe('file.pipe(unpack(directory, callback))', function () { - it('copies the file into the directory', function (done) { - read(__dirname + '/fixtures/packed-file.txt').pipe(tar.unpack(__dirname + '/output/unpacked', function (err) { - if (err) return done(err) - assert.equal(rfile('./output/unpacked/index.js'), rfile('./fixtures/packed-file.txt')) - done() - })) - }) -}) -describe('pack(directory).pipe(tarball)', function () { - it('packs the directory into the output', function (done) { - var called = false - mkdir(__dirname + '/output/') - tar.pack(__dirname + '/fixtures/to-pack').pipe(write(__dirname + '/output/packed.tar.gz')) - .on('error', function (err) { - if (called) return - called = true - done(err) - }) - .on('close', function () { - if (called) return - called = true - read(__dirname + '/output/packed.tar.gz').pipe(tar.unpack(__dirname + '/output/unpacked', function (err) { - if (err) return done(err) - assert.equal(rfile('./output/unpacked/bar.txt'), rfile('./fixtures/to-pack/bar.txt')) - assert.equal(rfile('./output/unpacked/foo.txt'), rfile('./fixtures/to-pack/foo.txt')) - done() - })) - }) - }) -}) \ No newline at end of file diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/.npmignore deleted file mode 100644 index c167ad5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.*.swp -node_modules -examples/extract/ -test/tmp/ -test/fixtures/ diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/.travis.yml deleted file mode 100644 index fca8ef0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.10 - - 0.11 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/LICENCE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/LICENCE deleted file mode 100644 index 74489e2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/LICENCE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) Isaac Z. Schlueter -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/README.md deleted file mode 100644 index 424a278..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# node-tar - -Tar for Node.js. - -[![NPM](https://nodei.co/npm/tar.png)](https://nodei.co/npm/tar/) - -## API - -See `examples/` for usage examples. - -### var tar = require('tar') - -Returns an object with `.Pack`, `.Extract` and `.Parse` methods. - -### tar.Pack([properties]) - -Returns a through stream. Use -[fstream](https://npmjs.org/package/fstream) to write files into the -pack stream and you will receive tar archive data from the pack -stream. - -This only works with directories, it does not work with individual files. - -The optional `properties` object are used to set properties in the tar -'Global Extended Header'. - -### tar.Extract([options]) - -Returns a through stream. Write tar data to the stream and the files -in the tarball will be extracted onto the filesystem. - -`options` can be: - -```js -{ - path: '/path/to/extract/tar/into', - strip: 0, // how many path segments to strip from the root when extracting -} -``` - -`options` also get passed to the `fstream.Writer` instance that `tar` -uses internally. - -### tar.Parse() - -Returns a writable stream. Write tar data to it and it will emit -`entry` events for each entry parsed from the tarball. This is used by -`tar.Extract`. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/extracter.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/extracter.js deleted file mode 100644 index f6253a7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/extracter.js +++ /dev/null @@ -1,19 +0,0 @@ -var tar = require("../tar.js") - , fs = require("fs") - - -function onError(err) { - console.error('An error occurred:', err) -} - -function onEnd() { - console.log('Extracted!') -} - -var extractor = tar.Extract({path: __dirname + "/extract"}) - .on('error', onError) - .on('end', onEnd); - -fs.createReadStream(__dirname + "/../test/fixtures/c.tar") - .on('error', onError) - .pipe(extractor); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/packer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/packer.js deleted file mode 100644 index 039969c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/packer.js +++ /dev/null @@ -1,24 +0,0 @@ -var tar = require("../tar.js") - , fstream = require("fstream") - , fs = require("fs") - -var dirDest = fs.createWriteStream('dir.tar') - - -function onError(err) { - console.error('An error occurred:', err) -} - -function onEnd() { - console.log('Packed!') -} - -var packer = tar.Pack({ noProprietary: true }) - .on('error', onError) - .on('end', onEnd); - -// This must be a "directory" -fstream.Reader({ path: __dirname, type: "Directory" }) - .on('error', onError) - .pipe(packer) - .pipe(dirDest) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/reader.js deleted file mode 100644 index 39f3f08..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/examples/reader.js +++ /dev/null @@ -1,36 +0,0 @@ -var tar = require("../tar.js") - , fs = require("fs") - -fs.createReadStream(__dirname + "/../test/fixtures/c.tar") - .pipe(tar.Parse()) - .on("extendedHeader", function (e) { - console.error("extended pax header", e.props) - e.on("end", function () { - console.error("extended pax fields:", e.fields) - }) - }) - .on("ignoredEntry", function (e) { - console.error("ignoredEntry?!?", e.props) - }) - .on("longLinkpath", function (e) { - console.error("longLinkpath entry", e.props) - e.on("end", function () { - console.error("value=%j", e.body.toString()) - }) - }) - .on("longPath", function (e) { - console.error("longPath entry", e.props) - e.on("end", function () { - console.error("value=%j", e.body.toString()) - }) - }) - .on("entry", function (e) { - console.error("entry", e.props) - e.on("data", function (c) { - console.error(" >>>" + c.toString().replace(/\n/g, "\\n")) - }) - e.on("end", function () { - console.error(" << 0 - return !this._needDrain -} - -EntryWriter.prototype.end = function (c) { - // console.error(".. ew end") - if (c) this._buffer.push(c) - this._buffer.push(EOF) - this._ended = true - this._process() - this._needDrain = this._buffer.length > 0 -} - -EntryWriter.prototype.pause = function () { - // console.error(".. ew pause") - this._paused = true - this.emit("pause") -} - -EntryWriter.prototype.resume = function () { - // console.error(".. ew resume") - this._paused = false - this.emit("resume") - this._process() -} - -EntryWriter.prototype.add = function (entry) { - // console.error(".. ew add") - if (!this.parent) return this.emit("error", new Error("no parent")) - - // make sure that the _header and such is emitted, and clear out - // the _currentEntry link on the parent. - if (!this._ended) this.end() - - return this.parent.add(entry) -} - -EntryWriter.prototype._header = function () { - // console.error(".. ew header") - if (this._didHeader) return - this._didHeader = true - - var headerBlock = TarHeader.encode(this.props) - - if (this.props.needExtended && !this._meta) { - var me = this - - ExtendedHeaderWriter = ExtendedHeaderWriter || - require("./extended-header-writer.js") - - ExtendedHeaderWriter(this.props) - .on("data", function (c) { - me.emit("data", c) - }) - .on("error", function (er) { - me.emit("error", er) - }) - .end() - } - - // console.error(".. .. ew headerBlock emitting") - this.emit("data", headerBlock) - this.emit("header") -} - -EntryWriter.prototype._process = function () { - // console.error(".. .. ew process") - if (!this._didHeader && !this._meta) { - this._header() - } - - if (this._paused || this._processing) { - // console.error(".. .. .. paused=%j, processing=%j", this._paused, this._processing) - return - } - - this._processing = true - - var buf = this._buffer - for (var i = 0; i < buf.length; i ++) { - // console.error(".. .. .. i=%d", i) - - var c = buf[i] - - if (c === EOF) this._stream.end() - else this._stream.write(c) - - if (this._paused) { - // console.error(".. .. .. paused mid-emission") - this._processing = false - if (i < buf.length) { - this._needDrain = true - this._buffer = buf.slice(i + 1) - } - return - } - } - - // console.error(".. .. .. emitted") - this._buffer.length = 0 - this._processing = false - - // console.error(".. .. .. emitting drain") - this.emit("drain") -} - -EntryWriter.prototype.destroy = function () {} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/entry.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/entry.js deleted file mode 100644 index 4af5c41..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/entry.js +++ /dev/null @@ -1,213 +0,0 @@ -// A passthrough read/write stream that sets its properties -// based on a header, extendedHeader, and globalHeader -// -// Can be either a file system object of some sort, or -// a pax/ustar metadata entry. - -module.exports = Entry - -var TarHeader = require("./header.js") - , tar = require("../tar") - , assert = require("assert").ok - , Stream = require("stream").Stream - , inherits = require("inherits") - , fstream = require("fstream").Abstract - -function Entry (header, extended, global) { - Stream.call(this) - this.readable = true - this.writable = true - - this._needDrain = false - this._paused = false - this._reading = false - this._ending = false - this._ended = false - this._remaining = 0 - this._queue = [] - this._index = 0 - this._queueLen = 0 - - this._read = this._read.bind(this) - - this.props = {} - this._header = header - this._extended = extended || {} - - // globals can change throughout the course of - // a file parse operation. Freeze it at its current state. - this._global = {} - var me = this - Object.keys(global || {}).forEach(function (g) { - me._global[g] = global[g] - }) - - this._setProps() -} - -inherits(Entry, Stream) - -Entry.prototype.write = function (c) { - if (this._ending) this.error("write() after end()", null, true) - if (this._remaining === 0) { - this.error("invalid bytes past eof") - } - - // often we'll get a bunch of \0 at the end of the last write, - // since chunks will always be 512 bytes when reading a tarball. - if (c.length > this._remaining) { - c = c.slice(0, this._remaining) - } - this._remaining -= c.length - - // put it on the stack. - var ql = this._queueLen - this._queue.push(c) - this._queueLen ++ - - this._read() - - // either paused, or buffered - if (this._paused || ql > 0) { - this._needDrain = true - return false - } - - return true -} - -Entry.prototype.end = function (c) { - if (c) this.write(c) - this._ending = true - this._read() -} - -Entry.prototype.pause = function () { - this._paused = true - this.emit("pause") -} - -Entry.prototype.resume = function () { - // console.error(" Tar Entry resume", this.path) - this.emit("resume") - this._paused = false - this._read() - return this._queueLen - this._index > 1 -} - - // This is bound to the instance -Entry.prototype._read = function () { - // console.error(" Tar Entry _read", this.path) - - if (this._paused || this._reading || this._ended) return - - // set this flag so that event handlers don't inadvertently - // get multiple _read() calls running. - this._reading = true - - // have any data to emit? - while (this._index < this._queueLen && !this._paused) { - var chunk = this._queue[this._index ++] - this.emit("data", chunk) - } - - // check if we're drained - if (this._index >= this._queueLen) { - this._queue.length = this._queueLen = this._index = 0 - if (this._needDrain) { - this._needDrain = false - this.emit("drain") - } - if (this._ending) { - this._ended = true - this.emit("end") - } - } - - // if the queue gets too big, then pluck off whatever we can. - // this should be fairly rare. - var mql = this._maxQueueLen - if (this._queueLen > mql && this._index > 0) { - mql = Math.min(this._index, mql) - this._index -= mql - this._queueLen -= mql - this._queue = this._queue.slice(mql) - } - - this._reading = false -} - -Entry.prototype._setProps = function () { - // props = extended->global->header->{} - var header = this._header - , extended = this._extended - , global = this._global - , props = this.props - - // first get the values from the normal header. - var fields = tar.fields - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , val = header[field] - if (typeof val !== "undefined") props[field] = val - } - - // next, the global header for this file. - // numeric values, etc, will have already been parsed. - ;[global, extended].forEach(function (p) { - Object.keys(p).forEach(function (f) { - if (typeof p[f] !== "undefined") props[f] = p[f] - }) - }) - - // no nulls allowed in path or linkpath - ;["path", "linkpath"].forEach(function (p) { - if (props.hasOwnProperty(p)) { - props[p] = props[p].split("\0")[0] - } - }) - - - // set date fields to be a proper date - ;["mtime", "ctime", "atime"].forEach(function (p) { - if (props.hasOwnProperty(p)) { - props[p] = new Date(props[p] * 1000) - } - }) - - // set the type so that we know what kind of file to create - var type - switch (tar.types[props.type]) { - case "OldFile": - case "ContiguousFile": - type = "File" - break - - case "GNUDumpDir": - type = "Directory" - break - - case undefined: - type = "Unknown" - break - - case "Link": - case "SymbolicLink": - case "CharacterDevice": - case "BlockDevice": - case "Directory": - case "FIFO": - default: - type = tar.types[props.type] - } - - this.type = type - this.path = props.path - this.size = props.size - - // size is special, since it signals when the file needs to end. - this._remaining = props.size -} - -Entry.prototype.warn = fstream.warn -Entry.prototype.error = fstream.error diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header-writer.js deleted file mode 100644 index 1728c45..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header-writer.js +++ /dev/null @@ -1,191 +0,0 @@ - -module.exports = ExtendedHeaderWriter - -var inherits = require("inherits") - , EntryWriter = require("./entry-writer.js") - -inherits(ExtendedHeaderWriter, EntryWriter) - -var tar = require("../tar.js") - , path = require("path") - , TarHeader = require("./header.js") - -// props is the props of the thing we need to write an -// extended header for. -// Don't be shy with it. Just encode everything. -function ExtendedHeaderWriter (props) { - // console.error(">> ehw ctor") - var me = this - - if (!(me instanceof ExtendedHeaderWriter)) { - return new ExtendedHeaderWriter(props) - } - - me.fields = props - - var p = - { path : ("PaxHeader" + path.join("/", props.path || "")) - .replace(/\\/g, "/").substr(0, 100) - , mode : props.mode || 0666 - , uid : props.uid || 0 - , gid : props.gid || 0 - , size : 0 // will be set later - , mtime : props.mtime || Date.now() / 1000 - , type : "x" - , linkpath : "" - , ustar : "ustar\0" - , ustarver : "00" - , uname : props.uname || "" - , gname : props.gname || "" - , devmaj : props.devmaj || 0 - , devmin : props.devmin || 0 - } - - - EntryWriter.call(me, p) - // console.error(">> ehw props", me.props) - me.props = p - - me._meta = true -} - -ExtendedHeaderWriter.prototype.end = function () { - // console.error(">> ehw end") - var me = this - - if (me._ended) return - me._ended = true - - me._encodeFields() - - if (me.props.size === 0) { - // nothing to write! - me._ready = true - me._stream.end() - return - } - - me._stream.write(TarHeader.encode(me.props)) - me.body.forEach(function (l) { - me._stream.write(l) - }) - me._ready = true - - // console.error(">> ehw _process calling end()", me.props) - this._stream.end() -} - -ExtendedHeaderWriter.prototype._encodeFields = function () { - // console.error(">> ehw _encodeFields") - this.body = [] - if (this.fields.prefix) { - this.fields.path = this.fields.prefix + "/" + this.fields.path - this.fields.prefix = "" - } - encodeFields(this.fields, "", this.body, this.fields.noProprietary) - var me = this - this.body.forEach(function (l) { - me.props.size += l.length - }) -} - -function encodeFields (fields, prefix, body, nop) { - // console.error(">> >> ehw encodeFields") - // "%d %s=%s\n", , , - // The length is a decimal number, and includes itself and the \n - // Numeric values are decimal strings. - - Object.keys(fields).forEach(function (k) { - var val = fields[k] - , numeric = tar.numeric[k] - - if (prefix) k = prefix + "." + k - - // already including NODETAR.type, don't need File=true also - if (k === fields.type && val === true) return - - switch (k) { - // don't include anything that's always handled just fine - // in the normal header, or only meaningful in the context - // of nodetar - case "mode": - case "cksum": - case "ustar": - case "ustarver": - case "prefix": - case "basename": - case "dirname": - case "needExtended": - case "block": - case "filter": - return - - case "rdev": - if (val === 0) return - break - - case "nlink": - case "dev": // Truly a hero among men, Creator of Star! - case "ino": // Speak his name with reverent awe! It is: - k = "SCHILY." + k - break - - default: break - } - - if (val && typeof val === "object" && - !Buffer.isBuffer(val)) encodeFields(val, k, body, nop) - else if (val === null || val === undefined) return - else body.push.apply(body, encodeField(k, val, nop)) - }) - - return body -} - -function encodeField (k, v, nop) { - // lowercase keys must be valid, otherwise prefix with - // "NODETAR." - if (k.charAt(0) === k.charAt(0).toLowerCase()) { - var m = k.split(".")[0] - if (!tar.knownExtended[m]) k = "NODETAR." + k - } - - // no proprietary - if (nop && k.charAt(0) !== k.charAt(0).toLowerCase()) { - return [] - } - - if (typeof val === "number") val = val.toString(10) - - var s = new Buffer(" " + k + "=" + v + "\n") - , digits = Math.floor(Math.log(s.length) / Math.log(10)) + 1 - - // console.error("1 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) - - // if adding that many digits will make it go over that length, - // then add one to it. For example, if the string is: - // " foo=bar\n" - // then that's 9 characters. With the "9", that bumps the length - // up to 10. However, this is invalid: - // "10 foo=bar\n" - // but, since that's actually 11 characters, since 10 adds another - // character to the length, and the length includes the number - // itself. In that case, just bump it up again. - if (s.length + digits >= Math.pow(10, digits)) digits += 1 - // console.error("2 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) - - var len = digits + s.length - // console.error("3 s=%j digits=%j s.length=%d len=%d", s.toString(), digits, s.length, len) - var lenBuf = new Buffer("" + len) - if (lenBuf.length + s.length !== len) { - throw new Error("Bad length calculation\n"+ - "len="+len+"\n"+ - "lenBuf="+JSON.stringify(lenBuf.toString())+"\n"+ - "lenBuf.length="+lenBuf.length+"\n"+ - "digits="+digits+"\n"+ - "s="+JSON.stringify(s.toString())+"\n"+ - "s.length="+s.length) - } - - return [lenBuf, s] -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header.js deleted file mode 100644 index 74f432c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header.js +++ /dev/null @@ -1,140 +0,0 @@ -// An Entry consisting of: -// -// "%d %s=%s\n", , , -// -// The length is a decimal number, and includes itself and the \n -// \0 does not terminate anything. Only the length terminates the string. -// Numeric values are decimal strings. - -module.exports = ExtendedHeader - -var Entry = require("./entry.js") - , inherits = require("inherits") - , tar = require("../tar.js") - , numeric = tar.numeric - , keyTrans = { "SCHILY.dev": "dev" - , "SCHILY.ino": "ino" - , "SCHILY.nlink": "nlink" } - -function ExtendedHeader () { - Entry.apply(this, arguments) - this.on("data", this._parse) - this.fields = {} - this._position = 0 - this._fieldPos = 0 - this._state = SIZE - this._sizeBuf = [] - this._keyBuf = [] - this._valBuf = [] - this._size = -1 - this._key = "" -} - -inherits(ExtendedHeader, Entry) -ExtendedHeader.prototype._parse = parse - -var s = 0 - , states = ExtendedHeader.states = {} - , SIZE = states.SIZE = s++ - , KEY = states.KEY = s++ - , VAL = states.VAL = s++ - , ERR = states.ERR = s++ - -Object.keys(states).forEach(function (s) { - states[states[s]] = states[s] -}) - -states[s] = null - -// char code values for comparison -var _0 = "0".charCodeAt(0) - , _9 = "9".charCodeAt(0) - , point = ".".charCodeAt(0) - , a = "a".charCodeAt(0) - , Z = "Z".charCodeAt(0) - , a = "a".charCodeAt(0) - , z = "z".charCodeAt(0) - , space = " ".charCodeAt(0) - , eq = "=".charCodeAt(0) - , cr = "\n".charCodeAt(0) - -function parse (c) { - if (this._state === ERR) return - - for ( var i = 0, l = c.length - ; i < l - ; this._position++, this._fieldPos++, i++) { - // console.error("top of loop, size="+this._size) - - var b = c[i] - - if (this._size >= 0 && this._fieldPos > this._size) { - error(this, "field exceeds length="+this._size) - return - } - - switch (this._state) { - case ERR: return - - case SIZE: - // console.error("parsing size, b=%d, rest=%j", b, c.slice(i).toString()) - if (b === space) { - this._state = KEY - // this._fieldPos = this._sizeBuf.length - this._size = parseInt(new Buffer(this._sizeBuf).toString(), 10) - this._sizeBuf.length = 0 - continue - } - if (b < _0 || b > _9) { - error(this, "expected [" + _0 + ".." + _9 + "], got " + b) - return - } - this._sizeBuf.push(b) - continue - - case KEY: - // can be any char except =, not > size. - if (b === eq) { - this._state = VAL - this._key = new Buffer(this._keyBuf).toString() - if (keyTrans[this._key]) this._key = keyTrans[this._key] - this._keyBuf.length = 0 - continue - } - this._keyBuf.push(b) - continue - - case VAL: - // field must end with cr - if (this._fieldPos === this._size - 1) { - // console.error("finished with "+this._key) - if (b !== cr) { - error(this, "expected \\n at end of field") - return - } - var val = new Buffer(this._valBuf).toString() - if (numeric[this._key]) { - val = parseFloat(val) - } - this.fields[this._key] = val - - this._valBuf.length = 0 - this._state = SIZE - this._size = -1 - this._fieldPos = -1 - continue - } - this._valBuf.push(b) - continue - } - } -} - -function error (me, msg) { - msg = "invalid header: " + msg - + "\nposition=" + me._position - + "\nfield position=" + me._fieldPos - - me.error(msg) - me.state = ERR -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extract.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extract.js deleted file mode 100644 index 68ff89c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/extract.js +++ /dev/null @@ -1,82 +0,0 @@ -// give it a tarball and a path, and it'll dump the contents - -module.exports = Extract - -var tar = require("../tar.js") - , fstream = require("fstream") - , inherits = require("inherits") - , path = require("path") - -function Extract (opts) { - if (!(this instanceof Extract)) return new Extract(opts) - tar.Parse.apply(this) - - // have to dump into a directory - opts.type = "Directory" - opts.Directory = true - - if (typeof opts !== "object") { - opts = { path: opts } - } - - // better to drop in cwd? seems more standard. - opts.path = opts.path || path.resolve("node-tar-extract") - opts.type = "Directory" - opts.Directory = true - - // similar to --strip or --strip-components - opts.strip = +opts.strip - if (!opts.strip || opts.strip <= 0) opts.strip = 0 - - this._fst = fstream.Writer(opts) - - this.pause() - var me = this - - // Hardlinks in tarballs are relative to the root - // of the tarball. So, they need to be resolved against - // the target directory in order to be created properly. - me.on("entry", function (entry) { - // if there's a "strip" argument, then strip off that many - // path components. - if (opts.strip) { - var p = entry.path.split("/").slice(opts.strip).join("/") - entry.path = entry.props.path = p - if (entry.linkpath) { - var lp = entry.linkpath.split("/").slice(opts.strip).join("/") - entry.linkpath = entry.props.linkpath = lp - } - } - if (entry.type !== "Link") return - entry.linkpath = entry.props.linkpath = - path.join(opts.path, path.join("/", entry.props.linkpath)) - }) - - this._fst.on("ready", function () { - me.pipe(me._fst, { end: false }) - me.resume() - }) - - this._fst.on('error', function(err) { - me.emit('error', err) - }) - - // this._fst.on("end", function () { - // console.error("\nEEEE Extract End", me._fst.path) - // }) - - this._fst.on("close", function () { - // console.error("\nEEEE Extract End", me._fst.path) - me.emit("end") - me.emit("close") - }) -} - -inherits(Extract, tar.Parse) - -Extract.prototype._streamEnd = function () { - var me = this - if (!me._ended) me.error("unexpected eof") - me._fst.end() - // my .end() is coming later. -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/global-header-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/global-header-writer.js deleted file mode 100644 index 0bfc7b8..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/global-header-writer.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = GlobalHeaderWriter - -var ExtendedHeaderWriter = require("./extended-header-writer.js") - , inherits = require("inherits") - -inherits(GlobalHeaderWriter, ExtendedHeaderWriter) - -function GlobalHeaderWriter (props) { - if (!(this instanceof GlobalHeaderWriter)) { - return new GlobalHeaderWriter(props) - } - ExtendedHeaderWriter.call(this, props) - this.props.type = "g" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/header.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/header.js deleted file mode 100644 index 05b237c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/header.js +++ /dev/null @@ -1,385 +0,0 @@ -// parse a 512-byte header block to a data object, or vice-versa -// If the data won't fit nicely in a simple header, then generate -// the appropriate extended header file, and return that. - -module.exports = TarHeader - -var tar = require("../tar.js") - , fields = tar.fields - , fieldOffs = tar.fieldOffs - , fieldEnds = tar.fieldEnds - , fieldSize = tar.fieldSize - , numeric = tar.numeric - , assert = require("assert").ok - , space = " ".charCodeAt(0) - , slash = "/".charCodeAt(0) - , bslash = process.platform === "win32" ? "\\".charCodeAt(0) : null - -function TarHeader (block) { - if (!(this instanceof TarHeader)) return new TarHeader(block) - if (block) this.decode(block) -} - -TarHeader.prototype = - { decode : decode - , encode: encode - , calcSum: calcSum - , checkSum: checkSum - } - -TarHeader.parseNumeric = parseNumeric -TarHeader.encode = encode -TarHeader.decode = decode - -// note that this will only do the normal ustar header, not any kind -// of extended posix header file. If something doesn't fit comfortably, -// then it will set obj.needExtended = true, and set the block to -// the closest approximation. -function encode (obj) { - if (!obj && !(this instanceof TarHeader)) throw new Error( - "encode must be called on a TarHeader, or supplied an object") - - obj = obj || this - var block = obj.block = new Buffer(512) - - // if the object has a "prefix", then that's actually an extension of - // the path field. - if (obj.prefix) { - // console.error("%% header encoding, got a prefix", obj.prefix) - obj.path = obj.prefix + "/" + obj.path - // console.error("%% header encoding, prefixed path", obj.path) - obj.prefix = "" - } - - obj.needExtended = false - - if (obj.mode) { - if (typeof obj.mode === "string") obj.mode = parseInt(obj.mode, 8) - obj.mode = obj.mode & 0777 - } - - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , off = fieldOffs[f] - , end = fieldEnds[f] - , ret - - switch (field) { - case "cksum": - // special, done below, after all the others - break - - case "prefix": - // special, this is an extension of the "path" field. - // console.error("%% header encoding, skip prefix later") - break - - case "type": - // convert from long name to a single char. - var type = obj.type || "0" - if (type.length > 1) { - type = tar.types[obj.type] - if (!type) type = "0" - } - writeText(block, off, end, type) - break - - case "path": - // uses the "prefix" field if > 100 bytes, but <= 255 - var pathLen = Buffer.byteLength(obj.path) - , pathFSize = fieldSize[fields.path] - , prefFSize = fieldSize[fields.prefix] - - // paths between 100 and 255 should use the prefix field. - // longer than 255 - if (pathLen > pathFSize && - pathLen <= pathFSize + prefFSize) { - // need to find a slash somewhere in the middle so that - // path and prefix both fit in their respective fields - var searchStart = pathLen - 1 - pathFSize - , searchEnd = prefFSize - , found = false - , pathBuf = new Buffer(obj.path) - - for ( var s = searchStart - ; (s <= searchEnd) - ; s ++ ) { - if (pathBuf[s] === slash || pathBuf[s] === bslash) { - found = s - break - } - } - - if (found !== false) { - prefix = pathBuf.slice(0, found).toString("utf8") - path = pathBuf.slice(found + 1).toString("utf8") - - ret = writeText(block, off, end, path) - off = fieldOffs[fields.prefix] - end = fieldEnds[fields.prefix] - // console.error("%% header writing prefix", off, end, prefix) - ret = writeText(block, off, end, prefix) || ret - break - } - } - - // paths less than 100 chars don't need a prefix - // and paths longer than 255 need an extended header and will fail - // on old implementations no matter what we do here. - // Null out the prefix, and fallthrough to default. - // console.error("%% header writing no prefix") - var poff = fieldOffs[fields.prefix] - , pend = fieldEnds[fields.prefix] - writeText(block, poff, pend, "") - // fallthrough - - // all other fields are numeric or text - default: - ret = numeric[field] - ? writeNumeric(block, off, end, obj[field]) - : writeText(block, off, end, obj[field] || "") - break - } - obj.needExtended = obj.needExtended || ret - } - - var off = fieldOffs[fields.cksum] - , end = fieldEnds[fields.cksum] - - writeNumeric(block, off, end, calcSum.call(this, block)) - - return block -} - -// if it's a negative number, or greater than will fit, -// then use write256. -var MAXNUM = { 12: 077777777777 - , 11: 07777777777 - , 8 : 07777777 - , 7 : 0777777 } -function writeNumeric (block, off, end, num) { - var writeLen = end - off - , maxNum = MAXNUM[writeLen] || 0 - - num = num || 0 - // console.error(" numeric", num) - - if (num instanceof Date || - Object.prototype.toString.call(num) === "[object Date]") { - num = num.getTime() / 1000 - } - - if (num > maxNum || num < 0) { - write256(block, off, end, num) - // need an extended header if negative or too big. - return true - } - - // god, tar is so annoying - // if the string is small enough, you should put a space - // between the octal string and the \0, but if it doesn't - // fit, then don't. - var numStr = Math.floor(num).toString(8) - if (num < MAXNUM[writeLen - 1]) numStr += " " - - // pad with "0" chars - if (numStr.length < writeLen) { - numStr = (new Array(writeLen - numStr.length).join("0")) + numStr - } - - if (numStr.length !== writeLen - 1) { - throw new Error("invalid length: " + JSON.stringify(numStr) + "\n" + - "expected: "+writeLen) - } - block.write(numStr, off, writeLen, "utf8") - block[end - 1] = 0 -} - -function write256 (block, off, end, num) { - var buf = block.slice(off, end) - var positive = num >= 0 - buf[0] = positive ? 0x80 : 0xFF - - // get the number as a base-256 tuple - if (!positive) num *= -1 - var tuple = [] - do { - var n = num % 256 - tuple.push(n) - num = (num - n) / 256 - } while (num) - - var bytes = tuple.length - - var fill = buf.length - bytes - for (var i = 1; i < fill; i ++) { - buf[i] = positive ? 0 : 0xFF - } - - // tuple is a base256 number, with [0] as the *least* significant byte - // if it's negative, then we need to flip all the bits once we hit the - // first non-zero bit. The 2's-complement is (0x100 - n), and the 1's- - // complement is (0xFF - n). - var zero = true - for (i = bytes; i > 0; i --) { - var byte = tuple[bytes - i] - if (positive) buf[fill + i] = byte - else if (zero && byte === 0) buf[fill + i] = 0 - else if (zero) { - zero = false - buf[fill + i] = 0x100 - byte - } else buf[fill + i] = 0xFF - byte - } -} - -function writeText (block, off, end, str) { - // strings are written as utf8, then padded with \0 - var strLen = Buffer.byteLength(str) - , writeLen = Math.min(strLen, end - off) - // non-ascii fields need extended headers - // long fields get truncated - , needExtended = strLen !== str.length || strLen > writeLen - - // write the string, and null-pad - if (writeLen > 0) block.write(str, off, writeLen, "utf8") - for (var i = off + writeLen; i < end; i ++) block[i] = 0 - - return needExtended -} - -function calcSum (block) { - block = block || this.block - assert(Buffer.isBuffer(block) && block.length === 512) - - if (!block) throw new Error("Need block to checksum") - - // now figure out what it would be if the cksum was " " - var sum = 0 - , start = fieldOffs[fields.cksum] - , end = fieldEnds[fields.cksum] - - for (var i = 0; i < fieldOffs[fields.cksum]; i ++) { - sum += block[i] - } - - for (var i = start; i < end; i ++) { - sum += space - } - - for (var i = end; i < 512; i ++) { - sum += block[i] - } - - return sum -} - - -function checkSum (block) { - var sum = calcSum.call(this, block) - block = block || this.block - - var cksum = block.slice(fieldOffs[fields.cksum], fieldEnds[fields.cksum]) - cksum = parseNumeric(cksum) - - return cksum === sum -} - -function decode (block) { - block = block || this.block - assert(Buffer.isBuffer(block) && block.length === 512) - - this.block = block - this.cksumValid = this.checkSum() - - var prefix = null - - // slice off each field. - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , val = block.slice(fieldOffs[f], fieldEnds[f]) - - switch (field) { - case "ustar": - // if not ustar, then everything after that is just padding. - if (val.toString() !== "ustar\0") { - this.ustar = false - return - } else { - // console.error("ustar:", val, val.toString()) - this.ustar = val.toString() - } - break - - // prefix is special, since it might signal the xstar header - case "prefix": - var atime = parseNumeric(val.slice(131, 131 + 12)) - , ctime = parseNumeric(val.slice(131 + 12, 131 + 12 + 12)) - if ((val[130] === 0 || val[130] === space) && - typeof atime === "number" && - typeof ctime === "number" && - val[131 + 12] === space && - val[131 + 12 + 12] === space) { - this.atime = atime - this.ctime = ctime - val = val.slice(0, 130) - } - prefix = val.toString("utf8").replace(/\0+$/, "") - // console.error("%% header reading prefix", prefix) - break - - // all other fields are null-padding text - // or a number. - default: - if (numeric[field]) { - this[field] = parseNumeric(val) - } else { - this[field] = val.toString("utf8").replace(/\0+$/, "") - } - break - } - } - - // if we got a prefix, then prepend it to the path. - if (prefix) { - this.path = prefix + "/" + this.path - // console.error("%% header got a prefix", this.path) - } -} - -function parse256 (buf) { - // first byte MUST be either 80 or FF - // 80 for positive, FF for 2's comp - var positive - if (buf[0] === 0x80) positive = true - else if (buf[0] === 0xFF) positive = false - else return null - - // build up a base-256 tuple from the least sig to the highest - var zero = false - , tuple = [] - for (var i = buf.length - 1; i > 0; i --) { - var byte = buf[i] - if (positive) tuple.push(byte) - else if (zero && byte === 0) tuple.push(0) - else if (zero) { - zero = false - tuple.push(0x100 - byte) - } else tuple.push(0xFF - byte) - } - - for (var sum = 0, i = 0, l = tuple.length; i < l; i ++) { - sum += tuple[i] * Math.pow(256, i) - } - - return positive ? sum : -1 * sum -} - -function parseNumeric (f) { - if (f[0] & 0x80) return parse256(f) - - var str = f.toString("utf8").split("\0")[0].trim() - , res = parseInt(str, 8) - - return isNaN(res) ? null : res -} - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/pack.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/pack.js deleted file mode 100644 index 3ff14dd..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/pack.js +++ /dev/null @@ -1,231 +0,0 @@ -// pipe in an fstream, and it'll make a tarball. -// key-value pair argument is global extended header props. - -module.exports = Pack - -var EntryWriter = require("./entry-writer.js") - , Stream = require("stream").Stream - , path = require("path") - , inherits = require("inherits") - , GlobalHeaderWriter = require("./global-header-writer.js") - , collect = require("fstream").collect - , eof = new Buffer(512) - -for (var i = 0; i < 512; i ++) eof[i] = 0 - -inherits(Pack, Stream) - -function Pack (props) { - // console.error("-- p ctor") - var me = this - if (!(me instanceof Pack)) return new Pack(props) - - if (props) me._noProprietary = props.noProprietary - else me._noProprietary = false - - me._global = props - - me.readable = true - me.writable = true - me._buffer = [] - // console.error("-- -- set current to null in ctor") - me._currentEntry = null - me._processing = false - - me._pipeRoot = null - me.on("pipe", function (src) { - if (src.root === me._pipeRoot) return - me._pipeRoot = src - src.on("end", function () { - me._pipeRoot = null - }) - me.add(src) - }) -} - -Pack.prototype.addGlobal = function (props) { - // console.error("-- p addGlobal") - if (this._didGlobal) return - this._didGlobal = true - - var me = this - GlobalHeaderWriter(props) - .on("data", function (c) { - me.emit("data", c) - }) - .end() -} - -Pack.prototype.add = function (stream) { - if (this._global && !this._didGlobal) this.addGlobal(this._global) - - if (this._ended) return this.emit("error", new Error("add after end")) - - collect(stream) - this._buffer.push(stream) - this._process() - this._needDrain = this._buffer.length > 0 - return !this._needDrain -} - -Pack.prototype.pause = function () { - this._paused = true - if (this._currentEntry) this._currentEntry.pause() - this.emit("pause") -} - -Pack.prototype.resume = function () { - this._paused = false - if (this._currentEntry) this._currentEntry.resume() - this.emit("resume") - this._process() -} - -Pack.prototype.end = function () { - this._ended = true - this._buffer.push(eof) - this._process() -} - -Pack.prototype._process = function () { - var me = this - if (me._paused || me._processing) { - return - } - - var entry = me._buffer.shift() - - if (!entry) { - if (me._needDrain) { - me.emit("drain") - } - return - } - - if (entry.ready === false) { - // console.error("-- entry is not ready", entry) - me._buffer.unshift(entry) - entry.on("ready", function () { - // console.error("-- -- ready!", entry) - me._process() - }) - return - } - - me._processing = true - - if (entry === eof) { - // need 2 ending null blocks. - me.emit("data", eof) - me.emit("data", eof) - me.emit("end") - me.emit("close") - return - } - - // Change the path to be relative to the root dir that was - // added to the tarball. - // - // XXX This should be more like how -C works, so you can - // explicitly set a root dir, and also explicitly set a pathname - // in the tarball to use. That way we can skip a lot of extra - // work when resolving symlinks for bundled dependencies in npm. - - var root = path.dirname((entry.root || entry).path) - var wprops = {} - - Object.keys(entry.props || {}).forEach(function (k) { - wprops[k] = entry.props[k] - }) - - if (me._noProprietary) wprops.noProprietary = true - - wprops.path = path.relative(root, entry.path || '') - - // actually not a matter of opinion or taste. - if (process.platform === "win32") { - wprops.path = wprops.path.replace(/\\/g, "/") - } - - if (!wprops.type) - wprops.type = 'Directory' - - switch (wprops.type) { - // sockets not supported - case "Socket": - return - - case "Directory": - wprops.path += "/" - wprops.size = 0 - break - - case "Link": - var lp = path.resolve(path.dirname(entry.path), entry.linkpath) - wprops.linkpath = path.relative(root, lp) || "." - wprops.size = 0 - break - - case "SymbolicLink": - var lp = path.resolve(path.dirname(entry.path), entry.linkpath) - wprops.linkpath = path.relative(path.dirname(entry.path), lp) || "." - wprops.size = 0 - break - } - - // console.error("-- new writer", wprops) - // if (!wprops.type) { - // // console.error("-- no type?", entry.constructor.name, entry) - // } - - // console.error("-- -- set current to new writer", wprops.path) - var writer = me._currentEntry = EntryWriter(wprops) - - writer.parent = me - - // writer.on("end", function () { - // // console.error("-- -- writer end", writer.path) - // }) - - writer.on("data", function (c) { - me.emit("data", c) - }) - - writer.on("header", function () { - Buffer.prototype.toJSON = function () { - return this.toString().split(/\0/).join(".") - } - // console.error("-- -- writer header %j", writer.props) - if (writer.props.size === 0) nextEntry() - }) - writer.on("close", nextEntry) - - var ended = false - function nextEntry () { - if (ended) return - ended = true - - // console.error("-- -- writer close", writer.path) - // console.error("-- -- set current to null", wprops.path) - me._currentEntry = null - me._processing = false - me._process() - } - - writer.on("error", function (er) { - // console.error("-- -- writer error", writer.path) - me.emit("error", er) - }) - - // if it's the root, then there's no need to add its entries, - // or data, since they'll be added directly. - if (entry === me._pipeRoot) { - // console.error("-- is the root, don't auto-add") - writer.add = null - } - - entry.pipe(writer) -} - -Pack.prototype.destroy = function () {} -Pack.prototype.write = function () {} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/parse.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/parse.js deleted file mode 100644 index 009a85f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/lib/parse.js +++ /dev/null @@ -1,271 +0,0 @@ - -// A writable stream. -// It emits "entry" events, which provide a readable stream that has -// header info attached. - -module.exports = Parse.create = Parse - -var stream = require("stream") - , Stream = stream.Stream - , BlockStream = require("block-stream") - , tar = require("../tar.js") - , TarHeader = require("./header.js") - , Entry = require("./entry.js") - , BufferEntry = require("./buffer-entry.js") - , ExtendedHeader = require("./extended-header.js") - , assert = require("assert").ok - , inherits = require("inherits") - , fstream = require("fstream") - -// reading a tar is a lot like reading a directory -// However, we're actually not going to run the ctor, -// since it does a stat and various other stuff. -// This inheritance gives us the pause/resume/pipe -// behavior that is desired. -inherits(Parse, fstream.Reader) - -function Parse () { - var me = this - if (!(me instanceof Parse)) return new Parse() - - // doesn't apply fstream.Reader ctor? - // no, becasue we don't want to stat/etc, we just - // want to get the entry/add logic from .pipe() - Stream.apply(me) - - me.writable = true - me.readable = true - me._stream = new BlockStream(512) - me.position = 0 - me._ended = false - - me._stream.on("error", function (e) { - me.emit("error", e) - }) - - me._stream.on("data", function (c) { - me._process(c) - }) - - me._stream.on("end", function () { - me._streamEnd() - }) - - me._stream.on("drain", function () { - me.emit("drain") - }) -} - -// overridden in Extract class, since it needs to -// wait for its DirWriter part to finish before -// emitting "end" -Parse.prototype._streamEnd = function () { - var me = this - if (!me._ended) me.error("unexpected eof") - me.emit("end") -} - -// a tar reader is actually a filter, not just a readable stream. -// So, you should pipe a tarball stream into it, and it needs these -// write/end methods to do that. -Parse.prototype.write = function (c) { - if (this._ended) { - // gnutar puts a LOT of nulls at the end. - // you can keep writing these things forever. - // Just ignore them. - for (var i = 0, l = c.length; i > l; i ++) { - if (c[i] !== 0) return this.error("write() after end()") - } - return - } - return this._stream.write(c) -} - -Parse.prototype.end = function (c) { - this._ended = true - return this._stream.end(c) -} - -// don't need to do anything, since we're just -// proxying the data up from the _stream. -// Just need to override the parent's "Not Implemented" -// error-thrower. -Parse.prototype._read = function () {} - -Parse.prototype._process = function (c) { - assert(c && c.length === 512, "block size should be 512") - - // one of three cases. - // 1. A new header - // 2. A part of a file/extended header - // 3. One of two or more EOF null blocks - - if (this._entry) { - var entry = this._entry - entry.write(c) - if (entry._remaining === 0) { - entry.end() - this._entry = null - } - } else { - // either zeroes or a header - var zero = true - for (var i = 0; i < 512 && zero; i ++) { - zero = c[i] === 0 - } - - // eof is *at least* 2 blocks of nulls, and then the end of the - // file. you can put blocks of nulls between entries anywhere, - // so appending one tarball to another is technically valid. - // ending without the eof null blocks is not allowed, however. - if (zero) { - if (this._eofStarted) - this._ended = true - this._eofStarted = true - } else { - this._eofStarted = false - this._startEntry(c) - } - } - - this.position += 512 -} - -// take a header chunk, start the right kind of entry. -Parse.prototype._startEntry = function (c) { - var header = new TarHeader(c) - , self = this - , entry - , ev - , EntryType - , onend - , meta = false - - if (null === header.size || !header.cksumValid) { - var e = new Error("invalid tar file") - e.header = header - e.tar_file_offset = this.position - e.tar_block = this.position / 512 - this.emit("error", e) - } - - switch (tar.types[header.type]) { - case "File": - case "OldFile": - case "Link": - case "SymbolicLink": - case "CharacterDevice": - case "BlockDevice": - case "Directory": - case "FIFO": - case "ContiguousFile": - case "GNUDumpDir": - // start a file. - // pass in any extended headers - // These ones consumers are typically most interested in. - EntryType = Entry - ev = "entry" - break - - case "GlobalExtendedHeader": - // extended headers that apply to the rest of the tarball - EntryType = ExtendedHeader - onend = function () { - self._global = self._global || {} - Object.keys(entry.fields).forEach(function (k) { - self._global[k] = entry.fields[k] - }) - } - ev = "globalExtendedHeader" - meta = true - break - - case "ExtendedHeader": - case "OldExtendedHeader": - // extended headers that apply to the next entry - EntryType = ExtendedHeader - onend = function () { - self._extended = entry.fields - } - ev = "extendedHeader" - meta = true - break - - case "NextFileHasLongLinkpath": - // set linkpath= in extended header - EntryType = BufferEntry - onend = function () { - self._extended = self._extended || {} - self._extended.linkpath = entry.body - } - ev = "longLinkpath" - meta = true - break - - case "NextFileHasLongPath": - case "OldGnuLongPath": - // set path= in file-extended header - EntryType = BufferEntry - onend = function () { - self._extended = self._extended || {} - self._extended.path = entry.body - } - ev = "longPath" - meta = true - break - - default: - // all the rest we skip, but still set the _entry - // member, so that we can skip over their data appropriately. - // emit an event to say that this is an ignored entry type? - EntryType = Entry - ev = "ignoredEntry" - break - } - - var global, extended - if (meta) { - global = extended = null - } else { - var global = this._global - var extended = this._extended - - // extendedHeader only applies to one entry, so once we start - // an entry, it's over. - this._extended = null - } - entry = new EntryType(header, extended, global) - entry.meta = meta - - // only proxy data events of normal files. - if (!meta) { - entry.on("data", function (c) { - me.emit("data", c) - }) - } - - if (onend) entry.on("end", onend) - - this._entry = entry - var me = this - - entry.on("pause", function () { - me.pause() - }) - - entry.on("resume", function () { - me.resume() - }) - - if (this.listeners("*").length) { - this.emit("*", ev, entry) - } - - this.emit(ev, entry) - - // Zero-byte entry. End immediately. - if (entry.props.size === 0) { - entry.end() - this._entry = null - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/LICENCE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/LICENCE deleted file mode 100644 index 74489e2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/LICENCE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) Isaac Z. Schlueter -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/README.md deleted file mode 100644 index c16e9c4..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# block-stream - -A stream of blocks. - -Write data into it, and it'll output data in buffer blocks the size you -specify, padding with zeroes if necessary. - -```javascript -var block = new BlockStream(512) -fs.createReadStream("some-file").pipe(block) -block.pipe(fs.createWriteStream("block-file")) -``` - -When `.end()` or `.flush()` is called, it'll pad the block with zeroes. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js deleted file mode 100644 index 9328844..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js +++ /dev/null @@ -1,70 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - f.pause() - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - f.resume() - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/block-stream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/block-stream.js deleted file mode 100644 index 1141f3a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/block-stream.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js deleted file mode 100644 index 93e4068..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js +++ /dev/null @@ -1,70 +0,0 @@ -var BlockStream = require("dropper") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - f.pause() - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - f.resume() - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/dropper.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/dropper.js deleted file mode 100644 index 55fa133..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/bench/dropper.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("dropper") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/block-stream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/block-stream.js deleted file mode 100644 index 008de03..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/block-stream.js +++ /dev/null @@ -1,209 +0,0 @@ -// write data to it, and it'll emit data in 512 byte blocks. -// if you .end() or .flush(), it'll emit whatever it's got, -// padded with nulls to 512 bytes. - -module.exports = BlockStream - -var Stream = require("stream").Stream - , inherits = require("inherits") - , assert = require("assert").ok - , debug = process.env.DEBUG ? console.error : function () {} - -function BlockStream (size, opt) { - this.writable = this.readable = true - this._opt = opt || {} - this._chunkSize = size || 512 - this._offset = 0 - this._buffer = [] - this._bufferLength = 0 - if (this._opt.nopad) this._zeroes = false - else { - this._zeroes = new Buffer(this._chunkSize) - for (var i = 0; i < this._chunkSize; i ++) { - this._zeroes[i] = 0 - } - } -} - -inherits(BlockStream, Stream) - -BlockStream.prototype.write = function (c) { - // debug(" BS write", c) - if (this._ended) throw new Error("BlockStream: write after end") - if (c && !Buffer.isBuffer(c)) c = new Buffer(c + "") - if (c.length) { - this._buffer.push(c) - this._bufferLength += c.length - } - // debug("pushed onto buffer", this._bufferLength) - if (this._bufferLength >= this._chunkSize) { - if (this._paused) { - // debug(" BS paused, return false, need drain") - this._needDrain = true - return false - } - this._emitChunk() - } - return true -} - -BlockStream.prototype.pause = function () { - // debug(" BS pausing") - this._paused = true -} - -BlockStream.prototype.resume = function () { - // debug(" BS resume") - this._paused = false - return this._emitChunk() -} - -BlockStream.prototype.end = function (chunk) { - // debug("end", chunk) - if (typeof chunk === "function") cb = chunk, chunk = null - if (chunk) this.write(chunk) - this._ended = true - this.flush() -} - -BlockStream.prototype.flush = function () { - this._emitChunk(true) -} - -BlockStream.prototype._emitChunk = function (flush) { - // debug("emitChunk flush=%j emitting=%j paused=%j", flush, this._emitting, this._paused) - - // emit a chunk - if (flush && this._zeroes) { - // debug(" BS push zeroes", this._bufferLength) - // push a chunk of zeroes - var padBytes = (this._bufferLength % this._chunkSize) - if (padBytes !== 0) padBytes = this._chunkSize - padBytes - if (padBytes > 0) { - // debug("padBytes", padBytes, this._zeroes.slice(0, padBytes)) - this._buffer.push(this._zeroes.slice(0, padBytes)) - this._bufferLength += padBytes - // debug(this._buffer[this._buffer.length - 1].length, this._bufferLength) - } - } - - if (this._emitting || this._paused) return - this._emitting = true - - // debug(" BS entering loops") - var bufferIndex = 0 - while (this._bufferLength >= this._chunkSize && - (flush || !this._paused)) { - // debug(" BS data emission loop", this._bufferLength) - - var out - , outOffset = 0 - , outHas = this._chunkSize - - while (outHas > 0 && (flush || !this._paused) ) { - // debug(" BS data inner emit loop", this._bufferLength) - var cur = this._buffer[bufferIndex] - , curHas = cur.length - this._offset - // debug("cur=", cur) - // debug("curHas=%j", curHas) - // If it's not big enough to fill the whole thing, then we'll need - // to copy multiple buffers into one. However, if it is big enough, - // then just slice out the part we want, to save unnecessary copying. - // Also, need to copy if we've already done some copying, since buffers - // can't be joined like cons strings. - if (out || curHas < outHas) { - out = out || new Buffer(this._chunkSize) - cur.copy(out, outOffset, - this._offset, this._offset + Math.min(curHas, outHas)) - } else if (cur.length === outHas && this._offset === 0) { - // shortcut -- cur is exactly long enough, and no offset. - out = cur - } else { - // slice out the piece of cur that we need. - out = cur.slice(this._offset, this._offset + outHas) - } - - if (curHas > outHas) { - // means that the current buffer couldn't be completely output - // update this._offset to reflect how much WAS written - this._offset += outHas - outHas = 0 - } else { - // output the entire current chunk. - // toss it away - outHas -= curHas - outOffset += curHas - bufferIndex ++ - this._offset = 0 - } - } - - this._bufferLength -= this._chunkSize - assert(out.length === this._chunkSize) - // debug("emitting data", out) - // debug(" BS emitting, paused=%j", this._paused, this._bufferLength) - this.emit("data", out) - out = null - } - // debug(" BS out of loops", this._bufferLength) - - // whatever is left, it's not enough to fill up a block, or we're paused - this._buffer = this._buffer.slice(bufferIndex) - if (this._paused) { - // debug(" BS paused, leaving", this._bufferLength) - this._needsDrain = true - this._emitting = false - return - } - - // if flushing, and not using null-padding, then need to emit the last - // chunk(s) sitting in the queue. We know that it's not enough to - // fill up a whole block, because otherwise it would have been emitted - // above, but there may be some offset. - var l = this._buffer.length - if (flush && !this._zeroes && l) { - if (l === 1) { - if (this._offset) { - this.emit("data", this._buffer[0].slice(this._offset)) - } else { - this.emit("data", this._buffer[0]) - } - } else { - var outHas = this._bufferLength - , out = new Buffer(outHas) - , outOffset = 0 - for (var i = 0; i < l; i ++) { - var cur = this._buffer[i] - , curHas = cur.length - this._offset - cur.copy(out, outOffset, this._offset) - this._offset = 0 - outOffset += curHas - this._bufferLength -= curHas - } - this.emit("data", out) - } - // truncate - this._buffer.length = 0 - this._bufferLength = 0 - this._offset = 0 - } - - // now either drained or ended - // debug("either draining, or ended", this._bufferLength, this._ended) - // means that we've flushed out all that we can so far. - if (this._needDrain) { - // debug("emitting drain", this._bufferLength) - this._needDrain = false - this.emit("drain") - } - - if ((this._bufferLength === 0) && this._ended && !this._endEmitted) { - // debug("emitting end", this._bufferLength) - this._endEmitted = true - this.emit("end") - } - - this._emitting = false - - // debug(" BS no longer emitting", flush, this._paused, this._emitting, this._bufferLength, this._chunkSize) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/package.json deleted file mode 100644 index b9be4d9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "block-stream", - "description": "a stream of blocks", - "version": "0.0.7", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/block-stream.git" - }, - "engines": { - "node": "0.4 || >=0.5.8" - }, - "main": "block-stream.js", - "dependencies": { - "inherits": "~2.0.0" - }, - "devDependencies": { - "tap": "0.x" - }, - "scripts": { - "test": "tap test/" - }, - "license": "BSD", - "readme": "# block-stream\n\nA stream of blocks.\n\nWrite data into it, and it'll output data in buffer blocks the size you\nspecify, padding with zeroes if necessary.\n\n```javascript\nvar block = new BlockStream(512)\nfs.createReadStream(\"some-file\").pipe(block)\nblock.pipe(fs.createWriteStream(\"block-file\"))\n```\n\nWhen `.end()` or `.flush()` is called, it'll pad the block with zeroes.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/block-stream/issues" - }, - "_id": "block-stream@0.0.7", - "dist": { - "shasum": "9088ab5ae1e861f4d81b176b4a8046080703deed", - "tarball": "http://registry.npmjs.org/block-stream/-/block-stream-0.0.7.tgz" - }, - "_from": "block-stream@*", - "_npmVersion": "1.3.4", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "9088ab5ae1e861f4d81b176b4a8046080703deed", - "_resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.7.tgz", - "homepage": "https://github.com/isaacs/block-stream" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/basic.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/basic.js deleted file mode 100644 index b4b9305..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/basic.js +++ /dev/null @@ -1,27 +0,0 @@ -var tap = require("tap") - , BlockStream = require("../block-stream.js") - -tap.test("basic test", function (t) { - var b = new BlockStream(16) - var fs = require("fs") - var fstr = fs.createReadStream(__filename, {encoding: "utf8"}) - fstr.pipe(b) - - var stat - t.doesNotThrow(function () { - stat = fs.statSync(__filename) - }, "stat should not throw") - - var totalBytes = 0 - b.on("data", function (c) { - t.equal(c.length, 16, "chunks should be 16 bytes long") - t.type(c, Buffer, "chunks should be buffer objects") - totalBytes += c.length - }) - b.on("end", function () { - var expectedBytes = stat.size + (16 - stat.size % 16) - t.equal(totalBytes, expectedBytes, "Should be multiple of 16") - t.end() - }) - -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js deleted file mode 100644 index 7a8de88..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16]//, 25]//, 1024] - , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/nopad.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/nopad.js deleted file mode 100644 index 6d38429..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/nopad.js +++ /dev/null @@ -1,57 +0,0 @@ -var BlockStream = require("../") -var tap = require("tap") - - -tap.test("don't pad, small writes", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(1) - - f.on("data", function (c) { - t.equal(c.toString(), "abc", "should get 'abc'") - }) - - f.on("end", function () { t.end() }) - - f.write(new Buffer("a")) - f.write(new Buffer("b")) - f.write(new Buffer("c")) - f.end() -}) - -tap.test("don't pad, exact write", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(1) - - var first = true - f.on("data", function (c) { - if (first) { - first = false - t.equal(c.toString(), "abcdefghijklmnop", "first chunk") - } else { - t.fail("should only get one") - } - }) - - f.on("end", function () { t.end() }) - - f.end(new Buffer("abcdefghijklmnop")) -}) - -tap.test("don't pad, big write", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(2) - - var first = true - f.on("data", function (c) { - if (first) { - first = false - t.equal(c.toString(), "abcdefghijklmnop", "first chunk") - } else { - t.equal(c.toString(), "q") - } - }) - - f.on("end", function () { t.end() }) - - f.end(new Buffer("abcdefghijklmnopq")) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/pause-resume.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/pause-resume.js deleted file mode 100644 index 64d0d09..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/pause-resume.js +++ /dev/null @@ -1,73 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16] - , writeSizes = [15, 16, 17] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - var paused = false - - f.on("data", function (c) { - timeouts ++ - t.notOk(paused, "should not be paused when emitting data") - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - paused = true - f.pause() - process.nextTick(function () { - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - paused = false - f.resume() - timeouts -- - }) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = expectChunks * blockSize - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 200) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/thorough.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/thorough.js deleted file mode 100644 index 1cc9ea0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/thorough.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16]//, 25]//, 1024] - , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = expectChunks * blockSize - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/two-stream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/two-stream.js deleted file mode 100644 index c6db79a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/test/two-stream.js +++ /dev/null @@ -1,59 +0,0 @@ -var log = console.log, - assert = require( 'assert' ), - BlockStream = require("../block-stream.js"), - isize = 0, tsize = 0, fsize = 0, psize = 0, i = 0, - filter = null, paper = null, stack = null, - -// a source data buffer -tsize = 1 * 1024; // <- 1K -stack = new Buffer( tsize ); -for ( ; i < tsize; i++) stack[i] = "x".charCodeAt(0); - -isize = 1 * 1024; // <- initial packet size with 4K no bug! -fsize = 2 * 1024 ; // <- first block-stream size -psize = Math.ceil( isize / 6 ); // <- second block-stream size - -fexpected = Math.ceil( tsize / fsize ); // <- packets expected for first -pexpected = Math.ceil( tsize / psize ); // <- packets expected for second - - -filter = new BlockStream( fsize, { nopad : true } ); -paper = new BlockStream( psize, { nopad : true } ); - - -var fcounter = 0; -filter.on( 'data', function (c) { - // verify that they're not null-padded - for (var i = 0; i < c.length; i ++) { - assert.strictEqual(c[i], "x".charCodeAt(0)) - } - ++fcounter; -} ); - -var pcounter = 0; -paper.on( 'data', function (c) { - // verify that they're not null-padded - for (var i = 0; i < c.length; i ++) { - assert.strictEqual(c[i], "x".charCodeAt(0)) - } - ++pcounter; -} ); - -filter.pipe( paper ); - -filter.on( 'end', function () { - log("fcounter: %s === %s", fcounter, fexpected) - assert.strictEqual( fcounter, fexpected ); -} ); - -paper.on( 'end', function () { - log("pcounter: %s === %s", pcounter, pexpected); - assert.strictEqual( pcounter, pexpected ); -} ); - - -for ( i = 0, j = isize; j <= tsize; j += isize ) { - filter.write( stack.slice( j - isize, j ) ); -} - -filter.end(); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/.npmignore deleted file mode 100644 index 494272a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.*.swp -node_modules/ -examples/deep-copy/ -examples/path/ -examples/filter-copy/ diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/.travis.yml b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/.travis.yml deleted file mode 100644 index 2d26206..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/README.md deleted file mode 100644 index 9d8cb77..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/README.md +++ /dev/null @@ -1,76 +0,0 @@ -Like FS streams, but with stat on them, and supporting directories and -symbolic links, as well as normal files. Also, you can use this to set -the stats on a file, even if you don't change its contents, or to create -a symlink, etc. - -So, for example, you can "write" a directory, and it'll call `mkdir`. You -can specify a uid and gid, and it'll call `chown`. You can specify a -`mtime` and `atime`, and it'll call `utimes`. You can call it a symlink -and provide a `linkpath` and it'll call `symlink`. - -Note that it won't automatically resolve symbolic links. So, if you -call `fstream.Reader('/some/symlink')` then you'll get an object -that stats and then ends immediately (since it has no data). To follow -symbolic links, do this: `fstream.Reader({path:'/some/symlink', follow: -true })`. - -There are various checks to make sure that the bytes emitted are the -same as the intended size, if the size is set. - -## Examples - -```javascript -fstream - .Writer({ path: "path/to/file" - , mode: 0755 - , size: 6 - }) - .write("hello\n") - .end() -``` - -This will create the directories if they're missing, and then write -`hello\n` into the file, chmod it to 0755, and assert that 6 bytes have -been written when it's done. - -```javascript -fstream - .Writer({ path: "path/to/file" - , mode: 0755 - , size: 6 - , flags: "a" - }) - .write("hello\n") - .end() -``` - -You can pass flags in, if you want to append to a file. - -```javascript -fstream - .Writer({ path: "path/to/symlink" - , linkpath: "./file" - , SymbolicLink: true - , mode: "0755" // octal strings supported - }) - .end() -``` - -If isSymbolicLink is a function, it'll be called, and if it returns -true, then it'll treat it as a symlink. If it's not a function, then -any truish value will make a symlink, or you can set `type: -'SymbolicLink'`, which does the same thing. - -Note that the linkpath is relative to the symbolic link location, not -the parent dir or cwd. - -```javascript -fstream - .Reader("path/to/dir") - .pipe(fstream.Writer("path/to/other/dir")) -``` - -This will do like `cp -Rp path/to/dir path/to/other/dir`. If the other -dir exists and isn't a directory, then it'll emit an error. It'll also -set the uid, gid, mode, etc. to be identical. In this way, it's more -like `rsync -a` than simply a copy. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/filter-pipe.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/filter-pipe.js deleted file mode 100644 index c6b55b3..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/filter-pipe.js +++ /dev/null @@ -1,131 +0,0 @@ -var fstream = require("../fstream.js") -var path = require("path") - -var r = fstream.Reader({ path: path.dirname(__dirname) - , filter: function () { - return !this.basename.match(/^\./) && - !this.basename.match(/^node_modules$/) - !this.basename.match(/^deep-copy$/) - !this.basename.match(/^filter-copy$/) - } - }) - -// this writer will only write directories -var w = fstream.Writer({ path: path.resolve(__dirname, "filter-copy") - , type: "Directory" - , filter: function () { - return this.type === "Directory" - } - }) - -var indent = "" -var escape = {} - -r.on("entry", appears) -r.on("ready", function () { - console.error("ready to begin!", r.path) -}) - -function appears (entry) { - console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename) - if (foggy) { - console.error("FOGGY!") - var p = entry - do { - console.error(p.depth, p.path, p._paused) - } while (p = p.parent) - - throw new Error("\033[mshould not have entries while foggy") - } - indent += "\t" - entry.on("data", missile(entry)) - entry.on("end", runaway(entry)) - entry.on("entry", appears) -} - -var foggy -function missile (entry) { - if (entry.type === "Directory") { - var ended = false - entry.once("end", function () { ended = true }) - return function (c) { - // throw in some pathological pause()/resume() behavior - // just for extra fun. - process.nextTick(function () { - if (!foggy && !ended) { // && Math.random() < 0.3) { - console.error(indent +"%s casts a spell", entry.basename) - console.error("\na slowing fog comes over the battlefield...\n\033[32m") - entry.pause() - entry.once("resume", liftFog) - foggy = setTimeout(liftFog, 1000) - - function liftFog (who) { - if (!foggy) return - if (who) { - console.error("%s breaks the spell!", who && who.path) - } else { - console.error("the spell expires!") - } - console.error("\033[mthe fog lifts!\n") - clearTimeout(foggy) - foggy = null - if (entry._paused) entry.resume() - } - - } - }) - } - } - - return function (c) { - var e = Math.random() < 0.5 - console.error(indent + "%s %s for %d damage!", - entry.basename, - e ? "is struck" : "fires a chunk", - c.length) - } -} - -function runaway (entry) { return function () { - var e = Math.random() < 0.5 - console.error(indent + "%s %s", - entry.basename, - e ? "turns to flee" : "is vanquished!") - indent = indent.slice(0, -1) -}} - - -w.on("entry", attacks) -//w.on("ready", function () { attacks(w) }) -function attacks (entry) { - console.error(indent + "%s %s!", entry.basename, - entry.type === "Directory" ? "calls for backup" : "attacks") - entry.on("entry", attacks) -} - -ended = false -var i = 1 -r.on("end", function () { - if (foggy) clearTimeout(foggy) - console.error("\033[mIT'S OVER!!") - console.error("A WINNAR IS YOU!") - - console.log("ok " + (i ++) + " A WINNAR IS YOU") - ended = true - // now go through and verify that everything in there is a dir. - var p = path.resolve(__dirname, "filter-copy") - var checker = fstream.Reader({ path: p }) - checker.checker = true - checker.on("child", function (e) { - var ok = e.type === "Directory" - console.log((ok ? "" : "not ") + "ok " + (i ++) + - " should be a dir: " + - e.path.substr(checker.path.length + 1)) - }) -}) - -process.on("exit", function () { - console.log((ended ? "" : "not ") + "ok " + (i ++) + " ended") -}) - -r.pipe(w) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/pipe.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/pipe.js deleted file mode 100644 index 648ec84..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/pipe.js +++ /dev/null @@ -1,115 +0,0 @@ -var fstream = require("../fstream.js") -var path = require("path") - -var r = fstream.Reader({ path: path.dirname(__dirname) - , filter: function () { - return !this.basename.match(/^\./) && - !this.basename.match(/^node_modules$/) - !this.basename.match(/^deep-copy$/) - } - }) - -var w = fstream.Writer({ path: path.resolve(__dirname, "deep-copy") - , type: "Directory" - }) - -var indent = "" -var escape = {} - -r.on("entry", appears) -r.on("ready", function () { - console.error("ready to begin!", r.path) -}) - -function appears (entry) { - console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename, entry) - if (foggy) { - console.error("FOGGY!") - var p = entry - do { - console.error(p.depth, p.path, p._paused) - } while (p = p.parent) - - throw new Error("\033[mshould not have entries while foggy") - } - indent += "\t" - entry.on("data", missile(entry)) - entry.on("end", runaway(entry)) - entry.on("entry", appears) -} - -var foggy -function missile (entry) { - if (entry.type === "Directory") { - var ended = false - entry.once("end", function () { ended = true }) - return function (c) { - // throw in some pathological pause()/resume() behavior - // just for extra fun. - process.nextTick(function () { - if (!foggy && !ended) { // && Math.random() < 0.3) { - console.error(indent +"%s casts a spell", entry.basename) - console.error("\na slowing fog comes over the battlefield...\n\033[32m") - entry.pause() - entry.once("resume", liftFog) - foggy = setTimeout(liftFog, 10) - - function liftFog (who) { - if (!foggy) return - if (who) { - console.error("%s breaks the spell!", who && who.path) - } else { - console.error("the spell expires!") - } - console.error("\033[mthe fog lifts!\n") - clearTimeout(foggy) - foggy = null - if (entry._paused) entry.resume() - } - - } - }) - } - } - - return function (c) { - var e = Math.random() < 0.5 - console.error(indent + "%s %s for %d damage!", - entry.basename, - e ? "is struck" : "fires a chunk", - c.length) - } -} - -function runaway (entry) { return function () { - var e = Math.random() < 0.5 - console.error(indent + "%s %s", - entry.basename, - e ? "turns to flee" : "is vanquished!") - indent = indent.slice(0, -1) -}} - - -w.on("entry", attacks) -//w.on("ready", function () { attacks(w) }) -function attacks (entry) { - console.error(indent + "%s %s!", entry.basename, - entry.type === "Directory" ? "calls for backup" : "attacks") - entry.on("entry", attacks) -} - -ended = false -r.on("end", function () { - if (foggy) clearTimeout(foggy) - console.error("\033[mIT'S OVER!!") - console.error("A WINNAR IS YOU!") - - console.log("ok 1 A WINNAR IS YOU") - ended = true -}) - -process.on("exit", function () { - console.log((ended ? "" : "not ") + "ok 2 ended") -}) - -r.pipe(w) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/reader.js deleted file mode 100644 index 9aa1a95..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/reader.js +++ /dev/null @@ -1,54 +0,0 @@ -var fstream = require("../fstream.js") -var tap = require("tap") -var fs = require("fs") -var path = require("path") -var children = -1 -var dir = path.dirname(__dirname) - -var gotReady = false -var ended = false - -tap.test("reader test", function (t) { - - var r = fstream.Reader({ path: dir - , filter: function () { - // return this.parent === r - return this.parent === r || this === r - } - }) - - r.on("ready", function () { - gotReady = true - children = fs.readdirSync(dir).length - console.error("Setting expected children to "+children) - t.equal(r.type, "Directory", "should be a directory") - }) - - r.on("entry", function (entry) { - children -- - if (!gotReady) { - t.fail("children before ready!") - } - t.equal(entry.dirname, r.path, "basename is parent dir") - }) - - r.on("error", function (er) { - t.fail(er) - t.end() - process.exit(1) - }) - - r.on("end", function () { - t.equal(children, 0, "should have seen all children") - ended = true - }) - - var closed = false - r.on("close", function () { - t.ok(ended, "saw end before close") - t.notOk(closed, "close should only happen once") - closed = true - t.end() - }) - -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/symlink-write.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/symlink-write.js deleted file mode 100644 index d7816d2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/symlink-write.js +++ /dev/null @@ -1,24 +0,0 @@ -var fstream = require("../fstream.js") - , closed = false - -fstream - .Writer({ path: "path/to/symlink" - , linkpath: "./file" - , isSymbolicLink: true - , mode: "0755" // octal strings supported - }) - .on("close", function () { - closed = true - var fs = require("fs") - var s = fs.lstatSync("path/to/symlink") - var isSym = s.isSymbolicLink() - console.log((isSym?"":"not ") +"ok 1 should be symlink") - var t = fs.readlinkSync("path/to/symlink") - var isTarget = t === "./file" - console.log((isTarget?"":"not ") +"ok 2 should link to ./file") - }) - .end() - -process.on("exit", function () { - console.log((closed?"":"not ")+"ok 3 should be closed") -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/fstream.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/fstream.js deleted file mode 100644 index c66d26f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/fstream.js +++ /dev/null @@ -1,31 +0,0 @@ -exports.Abstract = require("./lib/abstract.js") -exports.Reader = require("./lib/reader.js") -exports.Writer = require("./lib/writer.js") - -exports.File = - { Reader: require("./lib/file-reader.js") - , Writer: require("./lib/file-writer.js") } - -exports.Dir = - { Reader : require("./lib/dir-reader.js") - , Writer : require("./lib/dir-writer.js") } - -exports.Link = - { Reader : require("./lib/link-reader.js") - , Writer : require("./lib/link-writer.js") } - -exports.Proxy = - { Reader : require("./lib/proxy-reader.js") - , Writer : require("./lib/proxy-writer.js") } - -exports.Reader.Dir = exports.DirReader = exports.Dir.Reader -exports.Reader.File = exports.FileReader = exports.File.Reader -exports.Reader.Link = exports.LinkReader = exports.Link.Reader -exports.Reader.Proxy = exports.ProxyReader = exports.Proxy.Reader - -exports.Writer.Dir = exports.DirWriter = exports.Dir.Writer -exports.Writer.File = exports.FileWriter = exports.File.Writer -exports.Writer.Link = exports.LinkWriter = exports.Link.Writer -exports.Writer.Proxy = exports.ProxyWriter = exports.Proxy.Writer - -exports.collect = require("./lib/collect.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/abstract.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/abstract.js deleted file mode 100644 index 11ef0e2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/abstract.js +++ /dev/null @@ -1,85 +0,0 @@ -// the parent class for all fstreams. - -module.exports = Abstract - -var Stream = require("stream").Stream - , inherits = require("inherits") - -function Abstract () { - Stream.call(this) -} - -inherits(Abstract, Stream) - -Abstract.prototype.on = function (ev, fn) { - if (ev === "ready" && this.ready) { - process.nextTick(fn.bind(this)) - } else { - Stream.prototype.on.call(this, ev, fn) - } - return this -} - -Abstract.prototype.abort = function () { - this._aborted = true - this.emit("abort") -} - -Abstract.prototype.destroy = function () {} - -Abstract.prototype.warn = function (msg, code) { - var me = this - , er = decorate(msg, code, me) - if (!me.listeners("warn")) { - console.error("%s %s\n" + - "path = %s\n" + - "syscall = %s\n" + - "fstream_type = %s\n" + - "fstream_path = %s\n" + - "fstream_unc_path = %s\n" + - "fstream_class = %s\n" + - "fstream_stack =\n%s\n", - code || "UNKNOWN", - er.stack, - er.path, - er.syscall, - er.fstream_type, - er.fstream_path, - er.fstream_unc_path, - er.fstream_class, - er.fstream_stack.join("\n")) - } else { - me.emit("warn", er) - } -} - -Abstract.prototype.info = function (msg, code) { - this.emit("info", msg, code) -} - -Abstract.prototype.error = function (msg, code, th) { - var er = decorate(msg, code, this) - if (th) throw er - else this.emit("error", er) -} - -function decorate (er, code, me) { - if (!(er instanceof Error)) er = new Error(er) - er.code = er.code || code - er.path = er.path || me.path - er.fstream_type = er.fstream_type || me.type - er.fstream_path = er.fstream_path || me.path - if (me._path !== me.path) { - er.fstream_unc_path = er.fstream_unc_path || me._path - } - if (me.linkpath) { - er.fstream_linkpath = er.fstream_linkpath || me.linkpath - } - er.fstream_class = er.fstream_class || me.constructor.name - er.fstream_stack = er.fstream_stack || - new Error().stack.split(/\n/).slice(3).map(function (s) { - return s.replace(/^ at /, "") - }) - - return er -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/collect.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/collect.js deleted file mode 100644 index a36f780..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/collect.js +++ /dev/null @@ -1,67 +0,0 @@ -module.exports = collect - -function collect (stream) { - if (stream._collected) return - - stream._collected = true - stream.pause() - - stream.on("data", save) - stream.on("end", save) - var buf = [] - function save (b) { - if (typeof b === "string") b = new Buffer(b) - if (Buffer.isBuffer(b) && !b.length) return - buf.push(b) - } - - stream.on("entry", saveEntry) - var entryBuffer = [] - function saveEntry (e) { - collect(e) - entryBuffer.push(e) - } - - stream.on("proxy", proxyPause) - function proxyPause (p) { - p.pause() - } - - - // replace the pipe method with a new version that will - // unlock the buffered stuff. if you just call .pipe() - // without a destination, then it'll re-play the events. - stream.pipe = (function (orig) { return function (dest) { - // console.error(" === open the pipes", dest && dest.path) - - // let the entries flow through one at a time. - // Once they're all done, then we can resume completely. - var e = 0 - ;(function unblockEntry () { - var entry = entryBuffer[e++] - // console.error(" ==== unblock entry", entry && entry.path) - if (!entry) return resume() - entry.on("end", unblockEntry) - if (dest) dest.add(entry) - else stream.emit("entry", entry) - })() - - function resume () { - stream.removeListener("entry", saveEntry) - stream.removeListener("data", save) - stream.removeListener("end", save) - - stream.pipe = orig - if (dest) stream.pipe(dest) - - buf.forEach(function (b) { - if (b) stream.emit("data", b) - else stream.emit("end") - }) - - stream.resume() - } - - return dest - }})(stream.pipe) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-reader.js deleted file mode 100644 index 346ac2b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-reader.js +++ /dev/null @@ -1,251 +0,0 @@ -// A thing that emits "entry" events with Reader objects -// Pausing it causes it to stop emitting entry events, and also -// pauses the current entry if there is one. - -module.exports = DirReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Reader = fstream.Reader - , inherits = require("inherits") - , mkdir = require("mkdirp") - , path = require("path") - , Reader = require("./reader.js") - , assert = require("assert").ok - -inherits(DirReader, Reader) - -function DirReader (props) { - var me = this - if (!(me instanceof DirReader)) throw new Error( - "DirReader must be called as constructor.") - - // should already be established as a Directory type - if (props.type !== "Directory" || !props.Directory) { - throw new Error("Non-directory type "+ props.type) - } - - me.entries = null - me._index = -1 - me._paused = false - me._length = -1 - - if (props.sort) { - this.sort = props.sort - } - - Reader.call(this, props) -} - -DirReader.prototype._getEntries = function () { - var me = this - - // race condition. might pause() before calling _getEntries, - // and then resume, and try to get them a second time. - if (me._gotEntries) return - me._gotEntries = true - - fs.readdir(me._path, function (er, entries) { - if (er) return me.error(er) - - me.entries = entries - - me.emit("entries", entries) - if (me._paused) me.once("resume", processEntries) - else processEntries() - - function processEntries () { - me._length = me.entries.length - if (typeof me.sort === "function") { - me.entries = me.entries.sort(me.sort.bind(me)) - } - me._read() - } - }) -} - -// start walking the dir, and emit an "entry" event for each one. -DirReader.prototype._read = function () { - var me = this - - if (!me.entries) return me._getEntries() - - if (me._paused || me._currentEntry || me._aborted) { - // console.error("DR paused=%j, current=%j, aborted=%j", me._paused, !!me._currentEntry, me._aborted) - return - } - - me._index ++ - if (me._index >= me.entries.length) { - if (!me._ended) { - me._ended = true - me.emit("end") - me.emit("close") - } - return - } - - // ok, handle this one, then. - - // save creating a proxy, by stat'ing the thing now. - var p = path.resolve(me._path, me.entries[me._index]) - assert(p !== me._path) - assert(me.entries[me._index]) - - // set this to prevent trying to _read() again in the stat time. - me._currentEntry = p - fs[ me.props.follow ? "stat" : "lstat" ](p, function (er, stat) { - if (er) return me.error(er) - - var who = me._proxy || me - - stat.path = p - stat.basename = path.basename(p) - stat.dirname = path.dirname(p) - var childProps = me.getChildProps.call(who, stat) - childProps.path = p - childProps.basename = path.basename(p) - childProps.dirname = path.dirname(p) - - var entry = Reader(childProps, stat) - - // console.error("DR Entry", p, stat.size) - - me._currentEntry = entry - - // "entry" events are for direct entries in a specific dir. - // "child" events are for any and all children at all levels. - // This nomenclature is not completely final. - - entry.on("pause", function (who) { - if (!me._paused && !entry._disowned) { - me.pause(who) - } - }) - - entry.on("resume", function (who) { - if (me._paused && !entry._disowned) { - me.resume(who) - } - }) - - entry.on("stat", function (props) { - me.emit("_entryStat", entry, props) - if (entry._aborted) return - if (entry._paused) entry.once("resume", function () { - me.emit("entryStat", entry, props) - }) - else me.emit("entryStat", entry, props) - }) - - entry.on("ready", function EMITCHILD () { - // console.error("DR emit child", entry._path) - if (me._paused) { - // console.error(" DR emit child - try again later") - // pause the child, and emit the "entry" event once we drain. - // console.error("DR pausing child entry") - entry.pause(me) - return me.once("resume", EMITCHILD) - } - - // skip over sockets. they can't be piped around properly, - // so there's really no sense even acknowledging them. - // if someone really wants to see them, they can listen to - // the "socket" events. - if (entry.type === "Socket") { - me.emit("socket", entry) - } else { - me.emitEntry(entry) - } - }) - - var ended = false - entry.on("close", onend) - entry.on("disown", onend) - function onend () { - if (ended) return - ended = true - me.emit("childEnd", entry) - me.emit("entryEnd", entry) - me._currentEntry = null - if (!me._paused) { - me._read() - } - } - - // XXX Remove this. Works in node as of 0.6.2 or so. - // Long filenames should not break stuff. - entry.on("error", function (er) { - if (entry._swallowErrors) { - me.warn(er) - entry.emit("end") - entry.emit("close") - } else { - me.emit("error", er) - } - }) - - // proxy up some events. - ; [ "child" - , "childEnd" - , "warn" - ].forEach(function (ev) { - entry.on(ev, me.emit.bind(me, ev)) - }) - }) -} - -DirReader.prototype.disown = function (entry) { - entry.emit("beforeDisown") - entry._disowned = true - entry.parent = entry.root = null - if (entry === this._currentEntry) { - this._currentEntry = null - } - entry.emit("disown") -} - -DirReader.prototype.getChildProps = function (stat) { - return { depth: this.depth + 1 - , root: this.root || this - , parent: this - , follow: this.follow - , filter: this.filter - , sort: this.props.sort - , hardlinks: this.props.hardlinks - } -} - -DirReader.prototype.pause = function (who) { - var me = this - if (me._paused) return - who = who || me - me._paused = true - if (me._currentEntry && me._currentEntry.pause) { - me._currentEntry.pause(who) - } - me.emit("pause", who) -} - -DirReader.prototype.resume = function (who) { - var me = this - if (!me._paused) return - who = who || me - - me._paused = false - // console.error("DR Emit Resume", me._path) - me.emit("resume", who) - if (me._paused) { - // console.error("DR Re-paused", me._path) - return - } - - if (me._currentEntry) { - if (me._currentEntry.resume) me._currentEntry.resume(who) - } else me._read() -} - -DirReader.prototype.emitEntry = function (entry) { - this.emit("entry", entry) - this.emit("child", entry) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-writer.js deleted file mode 100644 index 7073b88..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-writer.js +++ /dev/null @@ -1,171 +0,0 @@ -// It is expected that, when .add() returns false, the consumer -// of the DirWriter will pause until a "drain" event occurs. Note -// that this is *almost always going to be the case*, unless the -// thing being written is some sort of unsupported type, and thus -// skipped over. - -module.exports = DirWriter - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Writer = require("./writer.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , path = require("path") - , collect = require("./collect.js") - -inherits(DirWriter, Writer) - -function DirWriter (props) { - var me = this - if (!(me instanceof DirWriter)) me.error( - "DirWriter must be called as constructor.", null, true) - - // should already be established as a Directory type - if (props.type !== "Directory" || !props.Directory) { - me.error("Non-directory type "+ props.type + " " + - JSON.stringify(props), null, true) - } - - Writer.call(this, props) -} - -DirWriter.prototype._create = function () { - var me = this - mkdir(me._path, Writer.dirmode, function (er) { - if (er) return me.error(er) - // ready to start getting entries! - me.ready = true - me.emit("ready") - me._process() - }) -} - -// a DirWriter has an add(entry) method, but its .write() doesn't -// do anything. Why a no-op rather than a throw? Because this -// leaves open the door for writing directory metadata for -// gnu/solaris style dumpdirs. -DirWriter.prototype.write = function () { - return true -} - -DirWriter.prototype.end = function () { - this._ended = true - this._process() -} - -DirWriter.prototype.add = function (entry) { - var me = this - - // console.error("\tadd", entry._path, "->", me._path) - collect(entry) - if (!me.ready || me._currentEntry) { - me._buffer.push(entry) - return false - } - - // create a new writer, and pipe the incoming entry into it. - if (me._ended) { - return me.error("add after end") - } - - me._buffer.push(entry) - me._process() - - return 0 === this._buffer.length -} - -DirWriter.prototype._process = function () { - var me = this - - // console.error("DW Process p=%j", me._processing, me.basename) - - if (me._processing) return - - var entry = me._buffer.shift() - if (!entry) { - // console.error("DW Drain") - me.emit("drain") - if (me._ended) me._finish() - return - } - - me._processing = true - // console.error("DW Entry", entry._path) - - me.emit("entry", entry) - - // ok, add this entry - // - // don't allow recursive copying - var p = entry - do { - var pp = p._path || p.path - if (pp === me.root._path || pp === me._path || - (pp && pp.indexOf(me._path) === 0)) { - // console.error("DW Exit (recursive)", entry.basename, me._path) - me._processing = false - if (entry._collected) entry.pipe() - return me._process() - } - } while (p = p.parent) - - // console.error("DW not recursive") - - // chop off the entry's root dir, replace with ours - var props = { parent: me - , root: me.root || me - , type: entry.type - , depth: me.depth + 1 } - - var p = entry._path || entry.path || entry.props.path - if (entry.parent) { - p = p.substr(entry.parent._path.length + 1) - } - // get rid of any ../../ shenanigans - props.path = path.join(me.path, path.join("/", p)) - - // if i have a filter, the child should inherit it. - props.filter = me.filter - - // all the rest of the stuff, copy over from the source. - Object.keys(entry.props).forEach(function (k) { - if (!props.hasOwnProperty(k)) { - props[k] = entry.props[k] - } - }) - - // not sure at this point what kind of writer this is. - var child = me._currentChild = new Writer(props) - child.on("ready", function () { - // console.error("DW Child Ready", child.type, child._path) - // console.error(" resuming", entry._path) - entry.pipe(child) - entry.resume() - }) - - // XXX Make this work in node. - // Long filenames should not break stuff. - child.on("error", function (er) { - if (child._swallowErrors) { - me.warn(er) - child.emit("end") - child.emit("close") - } else { - me.emit("error", er) - } - }) - - // we fire _end internally *after* end, so that we don't move on - // until any "end" listeners have had their chance to do stuff. - child.on("close", onend) - var ended = false - function onend () { - if (ended) return - ended = true - // console.error("* DW Child end", child.basename) - me._currentChild = null - me._processing = false - me._process() - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-reader.js deleted file mode 100644 index b1f9861..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-reader.js +++ /dev/null @@ -1,147 +0,0 @@ -// Basically just a wrapper around an fs.ReadStream - -module.exports = FileReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Reader = fstream.Reader - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - , EOF = {EOF: true} - , CLOSE = {CLOSE: true} - -inherits(FileReader, Reader) - -function FileReader (props) { - // console.error(" FR create", props.path, props.size, new Error().stack) - var me = this - if (!(me instanceof FileReader)) throw new Error( - "FileReader must be called as constructor.") - - // should already be established as a File type - // XXX Todo: preserve hardlinks by tracking dev+inode+nlink, - // with a HardLinkReader class. - if (!((props.type === "Link" && props.Link) || - (props.type === "File" && props.File))) { - throw new Error("Non-file type "+ props.type) - } - - me._buffer = [] - me._bytesEmitted = 0 - Reader.call(me, props) -} - -FileReader.prototype._getStream = function () { - var me = this - , stream = me._stream = fs.createReadStream(me._path, me.props) - - if (me.props.blksize) { - stream.bufferSize = me.props.blksize - } - - stream.on("open", me.emit.bind(me, "open")) - - stream.on("data", function (c) { - // console.error("\t\t%d %s", c.length, me.basename) - me._bytesEmitted += c.length - // no point saving empty chunks - if (!c.length) return - else if (me._paused || me._buffer.length) { - me._buffer.push(c) - me._read() - } else me.emit("data", c) - }) - - stream.on("end", function () { - if (me._paused || me._buffer.length) { - // console.error("FR Buffering End", me._path) - me._buffer.push(EOF) - me._read() - } else { - me.emit("end") - } - - if (me._bytesEmitted !== me.props.size) { - me.error("Didn't get expected byte count\n"+ - "expect: "+me.props.size + "\n" + - "actual: "+me._bytesEmitted) - } - }) - - stream.on("close", function () { - if (me._paused || me._buffer.length) { - // console.error("FR Buffering Close", me._path) - me._buffer.push(CLOSE) - me._read() - } else { - // console.error("FR close 1", me._path) - me.emit("close") - } - }) - - me._read() -} - -FileReader.prototype._read = function () { - var me = this - // console.error("FR _read", me._path) - if (me._paused) { - // console.error("FR _read paused", me._path) - return - } - - if (!me._stream) { - // console.error("FR _getStream calling", me._path) - return me._getStream() - } - - // clear out the buffer, if there is one. - if (me._buffer.length) { - // console.error("FR _read has buffer", me._buffer.length, me._path) - var buf = me._buffer - for (var i = 0, l = buf.length; i < l; i ++) { - var c = buf[i] - if (c === EOF) { - // console.error("FR Read emitting buffered end", me._path) - me.emit("end") - } else if (c === CLOSE) { - // console.error("FR Read emitting buffered close", me._path) - me.emit("close") - } else { - // console.error("FR Read emitting buffered data", me._path) - me.emit("data", c) - } - - if (me._paused) { - // console.error("FR Read Re-pausing at "+i, me._path) - me._buffer = buf.slice(i) - return - } - } - me._buffer.length = 0 - } - // console.error("FR _read done") - // that's about all there is to it. -} - -FileReader.prototype.pause = function (who) { - var me = this - // console.error("FR Pause", me._path) - if (me._paused) return - who = who || me - me._paused = true - if (me._stream) me._stream.pause() - me.emit("pause", who) -} - -FileReader.prototype.resume = function (who) { - var me = this - // console.error("FR Resume", me._path) - if (!me._paused) return - who = who || me - me.emit("resume", who) - me._paused = false - if (me._stream) me._stream.resume() - me._read() -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-writer.js deleted file mode 100644 index 5e9902a..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-writer.js +++ /dev/null @@ -1,104 +0,0 @@ -module.exports = FileWriter - -var fs = require("graceful-fs") - , mkdir = require("mkdirp") - , Writer = require("./writer.js") - , inherits = require("inherits") - , EOF = {} - -inherits(FileWriter, Writer) - -function FileWriter (props) { - var me = this - if (!(me instanceof FileWriter)) throw new Error( - "FileWriter must be called as constructor.") - - // should already be established as a File type - if (props.type !== "File" || !props.File) { - throw new Error("Non-file type "+ props.type) - } - - me._buffer = [] - me._bytesWritten = 0 - - Writer.call(this, props) -} - -FileWriter.prototype._create = function () { - var me = this - if (me._stream) return - - var so = {} - if (me.props.flags) so.flags = me.props.flags - so.mode = Writer.filemode - if (me._old && me._old.blksize) so.bufferSize = me._old.blksize - - me._stream = fs.createWriteStream(me._path, so) - - me._stream.on("open", function (fd) { - // console.error("FW open", me._buffer, me._path) - me.ready = true - me._buffer.forEach(function (c) { - if (c === EOF) me._stream.end() - else me._stream.write(c) - }) - me.emit("ready") - // give this a kick just in case it needs it. - me.emit("drain") - }) - - me._stream.on("drain", function () { me.emit("drain") }) - - me._stream.on("close", function () { - // console.error("\n\nFW Stream Close", me._path, me.size) - me._finish() - }) -} - -FileWriter.prototype.write = function (c) { - var me = this - - me._bytesWritten += c.length - - if (!me.ready) { - if (!Buffer.isBuffer(c) && typeof c !== 'string') - throw new Error('invalid write data') - me._buffer.push(c) - return false - } - - var ret = me._stream.write(c) - // console.error("\t-- fw wrote, _stream says", ret, me._stream._queue.length) - - // allow 2 buffered writes, because otherwise there's just too - // much stop and go bs. - if (ret === false && me._stream._queue) { - return me._stream._queue.length <= 2; - } else { - return ret; - } -} - -FileWriter.prototype.end = function (c) { - var me = this - - if (c) me.write(c) - - if (!me.ready) { - me._buffer.push(EOF) - return false - } - - return me._stream.end() -} - -FileWriter.prototype._finish = function () { - var me = this - if (typeof me.size === "number" && me._bytesWritten != me.size) { - me.error( - "Did not get expected byte count.\n" + - "expect: " + me.size + "\n" + - "actual: " + me._bytesWritten) - } - Writer.prototype._finish.call(me) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/get-type.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/get-type.js deleted file mode 100644 index cd65c41..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/get-type.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = getType - -function getType (st) { - var types = - [ "Directory" - , "File" - , "SymbolicLink" - , "Link" // special for hardlinks from tarballs - , "BlockDevice" - , "CharacterDevice" - , "FIFO" - , "Socket" ] - , type - - if (st.type && -1 !== types.indexOf(st.type)) { - st[st.type] = true - return st.type - } - - for (var i = 0, l = types.length; i < l; i ++) { - type = types[i] - var is = st[type] || st["is" + type] - if (typeof is === "function") is = is.call(st) - if (is) { - st[type] = true - st.type = type - return type - } - } - - return null -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-reader.js deleted file mode 100644 index 7e7ab6c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-reader.js +++ /dev/null @@ -1,54 +0,0 @@ -// Basically just a wrapper around an fs.readlink -// -// XXX: Enhance this to support the Link type, by keeping -// a lookup table of {:}, so that hardlinks -// can be preserved in tarballs. - -module.exports = LinkReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - -inherits(LinkReader, Reader) - -function LinkReader (props) { - var me = this - if (!(me instanceof LinkReader)) throw new Error( - "LinkReader must be called as constructor.") - - if (!((props.type === "Link" && props.Link) || - (props.type === "SymbolicLink" && props.SymbolicLink))) { - throw new Error("Non-link type "+ props.type) - } - - Reader.call(me, props) -} - -// When piping a LinkReader into a LinkWriter, we have to -// already have the linkpath property set, so that has to -// happen *before* the "ready" event, which means we need to -// override the _stat method. -LinkReader.prototype._stat = function (currentStat) { - var me = this - fs.readlink(me._path, function (er, linkpath) { - if (er) return me.error(er) - me.linkpath = me.props.linkpath = linkpath - me.emit("linkpath", linkpath) - Reader.prototype._stat.call(me, currentStat) - }) -} - -LinkReader.prototype._read = function () { - var me = this - if (me._paused) return - // basically just a no-op, since we got all the info we need - // from the _stat method - if (!me._ended) { - me.emit("end") - me.emit("close") - me._ended = true - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-writer.js deleted file mode 100644 index 5c8f1e7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-writer.js +++ /dev/null @@ -1,95 +0,0 @@ - -module.exports = LinkWriter - -var fs = require("graceful-fs") - , Writer = require("./writer.js") - , inherits = require("inherits") - , path = require("path") - , rimraf = require("rimraf") - -inherits(LinkWriter, Writer) - -function LinkWriter (props) { - var me = this - if (!(me instanceof LinkWriter)) throw new Error( - "LinkWriter must be called as constructor.") - - // should already be established as a Link type - if (!((props.type === "Link" && props.Link) || - (props.type === "SymbolicLink" && props.SymbolicLink))) { - throw new Error("Non-link type "+ props.type) - } - - if (props.linkpath === "") props.linkpath = "." - if (!props.linkpath) { - me.error("Need linkpath property to create " + props.type) - } - - Writer.call(this, props) -} - -LinkWriter.prototype._create = function () { - // console.error(" LW _create") - var me = this - , hard = me.type === "Link" || process.platform === "win32" - , link = hard ? "link" : "symlink" - , lp = hard ? path.resolve(me.dirname, me.linkpath) : me.linkpath - - // can only change the link path by clobbering - // For hard links, let's just assume that's always the case, since - // there's no good way to read them if we don't already know. - if (hard) return clobber(me, lp, link) - - fs.readlink(me._path, function (er, p) { - // only skip creation if it's exactly the same link - if (p && p === lp) return finish(me) - clobber(me, lp, link) - }) -} - -function clobber (me, lp, link) { - rimraf(me._path, function (er) { - if (er) return me.error(er) - create(me, lp, link) - }) -} - -function create (me, lp, link) { - fs[link](lp, me._path, function (er) { - // if this is a hard link, and we're in the process of writing out a - // directory, it's very possible that the thing we're linking to - // doesn't exist yet (especially if it was intended as a symlink), - // so swallow ENOENT errors here and just soldier in. - // Additionally, an EPERM or EACCES can happen on win32 if it's trying - // to make a link to a directory. Again, just skip it. - // A better solution would be to have fs.symlink be supported on - // windows in some nice fashion. - if (er) { - if ((er.code === "ENOENT" || - er.code === "EACCES" || - er.code === "EPERM" ) && process.platform === "win32") { - me.ready = true - me.emit("ready") - me.emit("end") - me.emit("close") - me.end = me._finish = function () {} - } else return me.error(er) - } - finish(me) - }) -} - -function finish (me) { - me.ready = true - me.emit("ready") - if (me._ended && !me._finished) me._finish() -} - -LinkWriter.prototype.end = function () { - // console.error("LW finish in end") - this._ended = true - if (this.ready) { - this._finished = true - this._finish() - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-reader.js deleted file mode 100644 index a0ece34..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-reader.js +++ /dev/null @@ -1,93 +0,0 @@ -// A reader for when we don't yet know what kind of thing -// the thing is. - -module.exports = ProxyReader - -var Reader = require("./reader.js") - , getType = require("./get-type.js") - , inherits = require("inherits") - , fs = require("graceful-fs") - -inherits(ProxyReader, Reader) - -function ProxyReader (props) { - var me = this - if (!(me instanceof ProxyReader)) throw new Error( - "ProxyReader must be called as constructor.") - - me.props = props - me._buffer = [] - me.ready = false - - Reader.call(me, props) -} - -ProxyReader.prototype._stat = function () { - var me = this - , props = me.props - // stat the thing to see what the proxy should be. - , stat = props.follow ? "stat" : "lstat" - - fs[stat](props.path, function (er, current) { - var type - if (er || !current) { - type = "File" - } else { - type = getType(current) - } - - props[type] = true - props.type = me.type = type - - me._old = current - me._addProxy(Reader(props, current)) - }) -} - -ProxyReader.prototype._addProxy = function (proxy) { - var me = this - if (me._proxyTarget) { - return me.error("proxy already set") - } - - me._proxyTarget = proxy - proxy._proxy = me - - ; [ "error" - , "data" - , "end" - , "close" - , "linkpath" - , "entry" - , "entryEnd" - , "child" - , "childEnd" - , "warn" - , "stat" - ].forEach(function (ev) { - // console.error("~~ proxy event", ev, me.path) - proxy.on(ev, me.emit.bind(me, ev)) - }) - - me.emit("proxy", proxy) - - proxy.on("ready", function () { - // console.error("~~ proxy is ready!", me.path) - me.ready = true - me.emit("ready") - }) - - var calls = me._buffer - me._buffer.length = 0 - calls.forEach(function (c) { - proxy[c[0]].apply(proxy, c[1]) - }) -} - -ProxyReader.prototype.pause = function () { - return this._proxyTarget ? this._proxyTarget.pause() : false -} - -ProxyReader.prototype.resume = function () { - return this._proxyTarget ? this._proxyTarget.resume() : false -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-writer.js deleted file mode 100644 index b047663..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-writer.js +++ /dev/null @@ -1,109 +0,0 @@ -// A writer for when we don't know what kind of thing -// the thing is. That is, it's not explicitly set, -// so we're going to make it whatever the thing already -// is, or "File" -// -// Until then, collect all events. - -module.exports = ProxyWriter - -var Writer = require("./writer.js") - , getType = require("./get-type.js") - , inherits = require("inherits") - , collect = require("./collect.js") - , fs = require("fs") - -inherits(ProxyWriter, Writer) - -function ProxyWriter (props) { - var me = this - if (!(me instanceof ProxyWriter)) throw new Error( - "ProxyWriter must be called as constructor.") - - me.props = props - me._needDrain = false - - Writer.call(me, props) -} - -ProxyWriter.prototype._stat = function () { - var me = this - , props = me.props - // stat the thing to see what the proxy should be. - , stat = props.follow ? "stat" : "lstat" - - fs[stat](props.path, function (er, current) { - var type - if (er || !current) { - type = "File" - } else { - type = getType(current) - } - - props[type] = true - props.type = me.type = type - - me._old = current - me._addProxy(Writer(props, current)) - }) -} - -ProxyWriter.prototype._addProxy = function (proxy) { - // console.error("~~ set proxy", this.path) - var me = this - if (me._proxy) { - return me.error("proxy already set") - } - - me._proxy = proxy - ; [ "ready" - , "error" - , "close" - , "pipe" - , "drain" - , "warn" - ].forEach(function (ev) { - proxy.on(ev, me.emit.bind(me, ev)) - }) - - me.emit("proxy", proxy) - - var calls = me._buffer - calls.forEach(function (c) { - // console.error("~~ ~~ proxy buffered call", c[0], c[1]) - proxy[c[0]].apply(proxy, c[1]) - }) - me._buffer.length = 0 - if (me._needsDrain) me.emit("drain") -} - -ProxyWriter.prototype.add = function (entry) { - // console.error("~~ proxy add") - collect(entry) - - if (!this._proxy) { - this._buffer.push(["add", [entry]]) - this._needDrain = true - return false - } - return this._proxy.add(entry) -} - -ProxyWriter.prototype.write = function (c) { - // console.error("~~ proxy write") - if (!this._proxy) { - this._buffer.push(["write", [c]]) - this._needDrain = true - return false - } - return this._proxy.write(c) -} - -ProxyWriter.prototype.end = function (c) { - // console.error("~~ proxy end") - if (!this._proxy) { - this._buffer.push(["end", [c]]) - return false - } - return this._proxy.end(c) -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/reader.js deleted file mode 100644 index 0edb794..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/reader.js +++ /dev/null @@ -1,262 +0,0 @@ - -module.exports = Reader - -var fs = require("graceful-fs") - , Stream = require("stream").Stream - , inherits = require("inherits") - , path = require("path") - , getType = require("./get-type.js") - , hardLinks = Reader.hardLinks = {} - , Abstract = require("./abstract.js") - -// Must do this *before* loading the child classes -inherits(Reader, Abstract) - -var DirReader = require("./dir-reader.js") - , FileReader = require("./file-reader.js") - , LinkReader = require("./link-reader.js") - , SocketReader = require("./socket-reader.js") - , ProxyReader = require("./proxy-reader.js") - -function Reader (props, currentStat) { - var me = this - if (!(me instanceof Reader)) return new Reader(props, currentStat) - - if (typeof props === "string") { - props = { path: props } - } - - if (!props.path) { - me.error("Must provide a path", null, true) - } - - // polymorphism. - // call fstream.Reader(dir) to get a DirReader object, etc. - // Note that, unlike in the Writer case, ProxyReader is going - // to be the *normal* state of affairs, since we rarely know - // the type of a file prior to reading it. - - - var type - , ClassType - - if (props.type && typeof props.type === "function") { - type = props.type - ClassType = type - } else { - type = getType(props) - ClassType = Reader - } - - if (currentStat && !type) { - type = getType(currentStat) - props[type] = true - props.type = type - } - - switch (type) { - case "Directory": - ClassType = DirReader - break - - case "Link": - // XXX hard links are just files. - // However, it would be good to keep track of files' dev+inode - // and nlink values, and create a HardLinkReader that emits - // a linkpath value of the original copy, so that the tar - // writer can preserve them. - // ClassType = HardLinkReader - // break - - case "File": - ClassType = FileReader - break - - case "SymbolicLink": - ClassType = LinkReader - break - - case "Socket": - ClassType = SocketReader - break - - case null: - ClassType = ProxyReader - break - } - - if (!(me instanceof ClassType)) { - return new ClassType(props) - } - - Abstract.call(me) - - me.readable = true - me.writable = false - - me.type = type - me.props = props - me.depth = props.depth = props.depth || 0 - me.parent = props.parent || null - me.root = props.root || (props.parent && props.parent.root) || me - - me._path = me.path = path.resolve(props.path) - if (process.platform === "win32") { - me.path = me._path = me.path.replace(/\?/g, "_") - if (me._path.length >= 260) { - // how DOES one create files on the moon? - // if the path has spaces in it, then UNC will fail. - me._swallowErrors = true - //if (me._path.indexOf(" ") === -1) { - me._path = "\\\\?\\" + me.path.replace(/\//g, "\\") - //} - } - } - me.basename = props.basename = path.basename(me.path) - me.dirname = props.dirname = path.dirname(me.path) - - // these have served their purpose, and are now just noisy clutter - props.parent = props.root = null - - // console.error("\n\n\n%s setting size to", props.path, props.size) - me.size = props.size - me.filter = typeof props.filter === "function" ? props.filter : null - if (props.sort === "alpha") props.sort = alphasort - - // start the ball rolling. - // this will stat the thing, and then call me._read() - // to start reading whatever it is. - // console.error("calling stat", props.path, currentStat) - me._stat(currentStat) -} - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - -Reader.prototype._stat = function (currentStat) { - var me = this - , props = me.props - , stat = props.follow ? "stat" : "lstat" - // console.error("Reader._stat", me._path, currentStat) - if (currentStat) process.nextTick(statCb.bind(null, null, currentStat)) - else fs[stat](me._path, statCb) - - - function statCb (er, props_) { - // console.error("Reader._stat, statCb", me._path, props_, props_.nlink) - if (er) return me.error(er) - - Object.keys(props_).forEach(function (k) { - props[k] = props_[k] - }) - - // if it's not the expected size, then abort here. - if (undefined !== me.size && props.size !== me.size) { - return me.error("incorrect size") - } - me.size = props.size - - var type = getType(props) - var handleHardlinks = props.hardlinks !== false - - // special little thing for handling hardlinks. - if (handleHardlinks && type !== "Directory" && props.nlink && props.nlink > 1) { - var k = props.dev + ":" + props.ino - // console.error("Reader has nlink", me._path, k) - if (hardLinks[k] === me._path || !hardLinks[k]) hardLinks[k] = me._path - else { - // switch into hardlink mode. - type = me.type = me.props.type = "Link" - me.Link = me.props.Link = true - me.linkpath = me.props.linkpath = hardLinks[k] - // console.error("Hardlink detected, switching mode", me._path, me.linkpath) - // Setting __proto__ would arguably be the "correct" - // approach here, but that just seems too wrong. - me._stat = me._read = LinkReader.prototype._read - } - } - - if (me.type && me.type !== type) { - me.error("Unexpected type: " + type) - } - - // if the filter doesn't pass, then just skip over this one. - // still have to emit end so that dir-walking can move on. - if (me.filter) { - var who = me._proxy || me - // special handling for ProxyReaders - if (!me.filter.call(who, who, props)) { - if (!me._disowned) { - me.abort() - me.emit("end") - me.emit("close") - } - return - } - } - - // last chance to abort or disown before the flow starts! - var events = ["_stat", "stat", "ready"] - var e = 0 - ;(function go () { - if (me._aborted) { - me.emit("end") - me.emit("close") - return - } - - if (me._paused && me.type !== "Directory") { - me.once("resume", go) - return - } - - var ev = events[e ++] - if (!ev) { - return me._read() - } - me.emit(ev, props) - go() - })() - } -} - -Reader.prototype.pipe = function (dest, opts) { - var me = this - if (typeof dest.add === "function") { - // piping to a multi-compatible, and we've got directory entries. - me.on("entry", function (entry) { - var ret = dest.add(entry) - if (false === ret) { - me.pause() - } - }) - } - - // console.error("R Pipe apply Stream Pipe") - return Stream.prototype.pipe.apply(this, arguments) -} - -Reader.prototype.pause = function (who) { - this._paused = true - who = who || this - this.emit("pause", who) - if (this._stream) this._stream.pause(who) -} - -Reader.prototype.resume = function (who) { - this._paused = false - who = who || this - this.emit("resume", who) - if (this._stream) this._stream.resume(who) - this._read() -} - -Reader.prototype._read = function () { - this.error("Cannot read unknown type: "+this.type) -} - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/socket-reader.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/socket-reader.js deleted file mode 100644 index e89c173..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/socket-reader.js +++ /dev/null @@ -1,38 +0,0 @@ -// Just get the stats, and then don't do anything. -// You can't really "read" from a socket. You "connect" to it. -// Mostly, this is here so that reading a dir with a socket in it -// doesn't blow up. - -module.exports = SocketReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - -inherits(SocketReader, Reader) - -function SocketReader (props) { - var me = this - if (!(me instanceof SocketReader)) throw new Error( - "SocketReader must be called as constructor.") - - if (!(props.type === "Socket" && props.Socket)) { - throw new Error("Non-socket type "+ props.type) - } - - Reader.call(me, props) -} - -SocketReader.prototype._read = function () { - var me = this - if (me._paused) return - // basically just a no-op, since we got all the info we have - // from the _stat method - if (!me._ended) { - me.emit("end") - me.emit("close") - me._ended = true - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/writer.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/writer.js deleted file mode 100644 index 8b1bbf9..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/writer.js +++ /dev/null @@ -1,392 +0,0 @@ - -module.exports = Writer - -var fs = require("graceful-fs") - , inherits = require("inherits") - , rimraf = require("rimraf") - , mkdir = require("mkdirp") - , path = require("path") - , umask = process.platform === "win32" ? 0 : process.umask() - , getType = require("./get-type.js") - , Abstract = require("./abstract.js") - -// Must do this *before* loading the child classes -inherits(Writer, Abstract) - -Writer.dirmode = 0777 & (~umask) -Writer.filemode = 0666 & (~umask) - -var DirWriter = require("./dir-writer.js") - , LinkWriter = require("./link-writer.js") - , FileWriter = require("./file-writer.js") - , ProxyWriter = require("./proxy-writer.js") - -// props is the desired state. current is optionally the current stat, -// provided here so that subclasses can avoid statting the target -// more than necessary. -function Writer (props, current) { - var me = this - - if (typeof props === "string") { - props = { path: props } - } - - if (!props.path) me.error("Must provide a path", null, true) - - // polymorphism. - // call fstream.Writer(dir) to get a DirWriter object, etc. - var type = getType(props) - , ClassType = Writer - - switch (type) { - case "Directory": - ClassType = DirWriter - break - case "File": - ClassType = FileWriter - break - case "Link": - case "SymbolicLink": - ClassType = LinkWriter - break - case null: - // Don't know yet what type to create, so we wrap in a proxy. - ClassType = ProxyWriter - break - } - - if (!(me instanceof ClassType)) return new ClassType(props) - - // now get down to business. - - Abstract.call(me) - - // props is what we want to set. - // set some convenience properties as well. - me.type = props.type - me.props = props - me.depth = props.depth || 0 - me.clobber = false === props.clobber ? props.clobber : true - me.parent = props.parent || null - me.root = props.root || (props.parent && props.parent.root) || me - - me._path = me.path = path.resolve(props.path) - if (process.platform === "win32") { - me.path = me._path = me.path.replace(/\?/g, "_") - if (me._path.length >= 260) { - me._swallowErrors = true - me._path = "\\\\?\\" + me.path.replace(/\//g, "\\") - } - } - me.basename = path.basename(props.path) - me.dirname = path.dirname(props.path) - me.linkpath = props.linkpath || null - - props.parent = props.root = null - - // console.error("\n\n\n%s setting size to", props.path, props.size) - me.size = props.size - - if (typeof props.mode === "string") { - props.mode = parseInt(props.mode, 8) - } - - me.readable = false - me.writable = true - - // buffer until ready, or while handling another entry - me._buffer = [] - me.ready = false - - me.filter = typeof props.filter === "function" ? props.filter: null - - // start the ball rolling. - // this checks what's there already, and then calls - // me._create() to call the impl-specific creation stuff. - me._stat(current) -} - -// Calling this means that it's something we can't create. -// Just assert that it's already there, otherwise raise a warning. -Writer.prototype._create = function () { - var me = this - fs[me.props.follow ? "stat" : "lstat"](me._path, function (er, current) { - if (er) { - return me.warn("Cannot create " + me._path + "\n" + - "Unsupported type: "+me.type, "ENOTSUP") - } - me._finish() - }) -} - -Writer.prototype._stat = function (current) { - var me = this - , props = me.props - , stat = props.follow ? "stat" : "lstat" - , who = me._proxy || me - - if (current) statCb(null, current) - else fs[stat](me._path, statCb) - - function statCb (er, current) { - if (me.filter && !me.filter.call(who, who, current)) { - me._aborted = true - me.emit("end") - me.emit("close") - return - } - - // if it's not there, great. We'll just create it. - // if it is there, then we'll need to change whatever differs - if (er || !current) { - return create(me) - } - - me._old = current - var currentType = getType(current) - - // if it's a type change, then we need to clobber or error. - // if it's not a type change, then let the impl take care of it. - if (currentType !== me.type) { - return rimraf(me._path, function (er) { - if (er) return me.error(er) - me._old = null - create(me) - }) - } - - // otherwise, just handle in the app-specific way - // this creates a fs.WriteStream, or mkdir's, or whatever - create(me) - } -} - -function create (me) { - // console.error("W create", me._path, Writer.dirmode) - - // XXX Need to clobber non-dirs that are in the way, - // unless { clobber: false } in the props. - mkdir(path.dirname(me._path), Writer.dirmode, function (er, made) { - // console.error("W created", path.dirname(me._path), er) - if (er) return me.error(er) - - // later on, we have to set the mode and owner for these - me._madeDir = made - return me._create() - }) -} - -function endChmod (me, want, current, path, cb) { - var wantMode = want.mode - , chmod = want.follow || me.type !== "SymbolicLink" - ? "chmod" : "lchmod" - - if (!fs[chmod]) return cb() - if (typeof wantMode !== "number") return cb() - - var curMode = current.mode & 0777 - wantMode = wantMode & 0777 - if (wantMode === curMode) return cb() - - fs[chmod](path, wantMode, cb) -} - - -function endChown (me, want, current, path, cb) { - // Don't even try it unless root. Too easy to EPERM. - if (process.platform === "win32") return cb() - if (!process.getuid || !process.getuid() === 0) return cb() - if (typeof want.uid !== "number" && - typeof want.gid !== "number" ) return cb() - - if (current.uid === want.uid && - current.gid === want.gid) return cb() - - var chown = (me.props.follow || me.type !== "SymbolicLink") - ? "chown" : "lchown" - if (!fs[chown]) return cb() - - if (typeof want.uid !== "number") want.uid = current.uid - if (typeof want.gid !== "number") want.gid = current.gid - - fs[chown](path, want.uid, want.gid, cb) -} - -function endUtimes (me, want, current, path, cb) { - if (!fs.utimes || process.platform === "win32") return cb() - - var utimes = (want.follow || me.type !== "SymbolicLink") - ? "utimes" : "lutimes" - - if (utimes === "lutimes" && !fs[utimes]) { - utimes = "utimes" - } - - if (!fs[utimes]) return cb() - - var curA = current.atime - , curM = current.mtime - , meA = want.atime - , meM = want.mtime - - if (meA === undefined) meA = curA - if (meM === undefined) meM = curM - - if (!isDate(meA)) meA = new Date(meA) - if (!isDate(meM)) meA = new Date(meM) - - if (meA.getTime() === curA.getTime() && - meM.getTime() === curM.getTime()) return cb() - - fs[utimes](path, meA, meM, cb) -} - - -// XXX This function is beastly. Break it up! -Writer.prototype._finish = function () { - var me = this - - if (me._finishing) return - me._finishing = true - - // console.error(" W Finish", me._path, me.size) - - // set up all the things. - // At this point, we're already done writing whatever we've gotta write, - // adding files to the dir, etc. - var todo = 0 - var errState = null - var done = false - - if (me._old) { - // the times will almost *certainly* have changed. - // adds the utimes syscall, but remove another stat. - me._old.atime = new Date(0) - me._old.mtime = new Date(0) - // console.error(" W Finish Stale Stat", me._path, me.size) - setProps(me._old) - } else { - var stat = me.props.follow ? "stat" : "lstat" - // console.error(" W Finish Stating", me._path, me.size) - fs[stat](me._path, function (er, current) { - // console.error(" W Finish Stated", me._path, me.size, current) - if (er) { - // if we're in the process of writing out a - // directory, it's very possible that the thing we're linking to - // doesn't exist yet (especially if it was intended as a symlink), - // so swallow ENOENT errors here and just soldier on. - if (er.code === "ENOENT" && - (me.type === "Link" || me.type === "SymbolicLink") && - process.platform === "win32") { - me.ready = true - me.emit("ready") - me.emit("end") - me.emit("close") - me.end = me._finish = function () {} - return - } else return me.error(er) - } - setProps(me._old = current) - }) - } - - return - - function setProps (current) { - todo += 3 - endChmod(me, me.props, current, me._path, next("chmod")) - endChown(me, me.props, current, me._path, next("chown")) - endUtimes(me, me.props, current, me._path, next("utimes")) - } - - function next (what) { - return function (er) { - // console.error(" W Finish", what, todo) - if (errState) return - if (er) { - er.fstream_finish_call = what - return me.error(errState = er) - } - if (--todo > 0) return - if (done) return - done = true - - // we may still need to set the mode/etc. on some parent dirs - // that were created previously. delay end/close until then. - if (!me._madeDir) return end() - else endMadeDir(me, me._path, end) - - function end (er) { - if (er) { - er.fstream_finish_call = "setupMadeDir" - return me.error(er) - } - // all the props have been set, so we're completely done. - me.emit("end") - me.emit("close") - } - } - } -} - -function endMadeDir (me, p, cb) { - var made = me._madeDir - // everything *between* made and path.dirname(me._path) - // needs to be set up. Note that this may just be one dir. - var d = path.dirname(p) - - endMadeDir_(me, d, function (er) { - if (er) return cb(er) - if (d === made) { - return cb() - } - endMadeDir(me, d, cb) - }) -} - -function endMadeDir_ (me, p, cb) { - var dirProps = {} - Object.keys(me.props).forEach(function (k) { - dirProps[k] = me.props[k] - - // only make non-readable dirs if explicitly requested. - if (k === "mode" && me.type !== "Directory") { - dirProps[k] = dirProps[k] | 0111 - } - }) - - var todo = 3 - , errState = null - fs.stat(p, function (er, current) { - if (er) return cb(errState = er) - endChmod(me, dirProps, current, p, next) - endChown(me, dirProps, current, p, next) - endUtimes(me, dirProps, current, p, next) - }) - - function next (er) { - if (errState) return - if (er) return cb(errState = er) - if (-- todo === 0) return cb() - } -} - -Writer.prototype.pipe = function () { - this.error("Can't pipe from writable stream") -} - -Writer.prototype.add = function () { - this.error("Cannot add to non-Directory type") -} - -Writer.prototype.write = function () { - return true -} - -function objectToString (d) { - return Object.prototype.toString.call(d) -} - -function isDate(d) { - return typeof d === 'object' && objectToString(d) === '[object Date]'; -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md deleted file mode 100644 index 13a2e86..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/fs.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/fs.js deleted file mode 100644 index ae9fd6f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,11 +0,0 @@ -// eeeeeevvvvviiiiiiillllll -// more evil than monkey-patching the native builtin? -// Not sure. - -var mod = require("module") -var pre = '(function (exports, require, module, __filename, __dirname) { ' -var post = '});' -var src = pre + process.binding('natives').fs + post -var vm = require('vm') -var fn = vm.runInThisContext(src) -return fn(exports, require, module, __filename, __dirname) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index 77fc702..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,158 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('./fs.js') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json deleted file mode 100644 index a6dd9b1..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "graceful-fs", - "description": "A drop-in replacement for fs, making various improvements.", - "version": "3.0.4", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "main": "graceful-fs.js", - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "BSD", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^0.4.13" - }, - "gitHead": "d3fd03247ccc4fa8a3eee399307fd266c70efb06", - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "homepage": "https://github.com/isaacs/node-graceful-fs", - "_id": "graceful-fs@3.0.4", - "_shasum": "a0306d9b0940e0fc512d33b5df1014e88e0637a3", - "_from": "graceful-fs@3", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "a0306d9b0940e0fc512d33b5df1014e88e0637a3", - "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.4.tgz" - }, - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.4.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 9d62af5..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,255 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. -// It should not fail on enosys ever, as this just indicates -// that a fs doesn't support the intended operation. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chmod = chownFix(fs.chmod) -fs.fchmod = chownFix(fs.fchmod) -fs.lchmod = chownFix(fs.lchmod) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -fs.chmodSync = chownFix(fs.chmodSync) -fs.fchmodSync = chownFix(fs.fchmodSync) -fs.lchmodSync = chownFix(fs.lchmodSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/max-open.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/max-open.js deleted file mode 100644 index 44d5267..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/max-open.js +++ /dev/null @@ -1,69 +0,0 @@ -var test = require('tap').test -var fs = require('../') - -test('open lots of stuff', function (t) { - // Get around EBADF from libuv by making sure that stderr is opened - // Otherwise Darwin will refuse to give us a FD for stderr! - process.stderr.write('') - - // How many parallel open()'s to do - var n = 1024 - var opens = 0 - var fds = [] - var going = true - var closing = false - var doneCalled = 0 - - for (var i = 0; i < n; i++) { - go() - } - - function go() { - opens++ - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fds.push(fd) - if (going) go() - }) - } - - // should hit ulimit pretty fast - setTimeout(function () { - going = false - t.equal(opens - fds.length, n) - done() - }, 100) - - - function done () { - if (closing) return - doneCalled++ - - if (fds.length === 0) { - //console.error('done called %d times', doneCalled) - // First because of the timeout - // Then to close the fd's opened afterwards - // Then this time, to complete. - // Might take multiple passes, depending on CPU speed - // and ulimit, but at least 3 in every case. - t.ok(doneCalled >= 3) - return t.end() - } - - closing = true - setTimeout(function () { - // console.error('do closing again') - closing = false - done() - }, 100) - - // console.error('closing time') - var closes = fds.slice(0) - fds.length = 0 - closes.forEach(function (fd) { - fs.close(fd, function (er) { - if (er) throw er - }) - }) - } -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 85732f2..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('../fs.js')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index cb63a68..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require("tap").test -var fs = require("../fs.js") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js deleted file mode 100644 index 3a3db54..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js +++ /dev/null @@ -1,45 +0,0 @@ -var fs = require('../'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); -var test = require('tap').test; -var p = require('path').resolve(__dirname, 'files'); - -// Make sure to reserve the stderr fd -process.stderr.write(''); - -var num = 4097; -var paths = new Array(num); - -test('make files', function (t) { - rimraf.sync(p); - mkdirp.sync(p); - - for (var i = 0; i < num; ++i) { - paths[i] = 'files/file-' + i; - fs.writeFileSync(paths[i], 'content'); - } - - t.end(); -}) - -test('read files', function (t) { - // now read them - var done = 0; - for (var i = 0; i < num; ++i) { - fs.readFile(paths[i], function(err, data) { - if (err) - throw err; - - ++done; - if (done === num) { - t.pass('success'); - t.end() - } - }); - } -}); - -test('cleanup', function (t) { - rimraf.sync(p); - t.end(); -}); diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/package.json deleted file mode 100644 index c29e2ce..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "fstream", - "description": "Advanced file system stream things", - "version": "1.0.2", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/fstream.git" - }, - "main": "fstream.js", - "engines": { - "node": ">=0.6" - }, - "dependencies": { - "graceful-fs": "3", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "devDependencies": { - "tap": "" - }, - "scripts": { - "test": "tap examples/*.js" - }, - "license": "BSD", - "gitHead": "b3b74e92ef4a91ae206fab90b7998c7cd2e4290d", - "bugs": { - "url": "https://github.com/isaacs/fstream/issues" - }, - "homepage": "https://github.com/isaacs/fstream", - "_id": "fstream@1.0.2", - "_shasum": "56930ff1b4d4d7b1a689c8656b3a11e744ab92c6", - "_from": "fstream@^1.0.2", - "_npmVersion": "1.4.23", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "56930ff1b4d4d7b1a689c8656b3a11e744ab92c6", - "tarball": "http://registry.npmjs.org/fstream/-/fstream-1.0.2.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.2.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/LICENSE b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/README.md b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/README.md deleted file mode 100644 index b1c5665..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits_browser.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/package.json deleted file mode 100644 index 754a114..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "_id": "inherits@2.0.1", - "dist": { - "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "_from": "inherits@2", - "_npmVersion": "1.3.8", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "homepage": "https://github.com/isaacs/inherits" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/test.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/test.js deleted file mode 100644 index fc53012..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/package.json deleted file mode 100644 index 5648fe0..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "tar", - "description": "tar for node", - "version": "1.0.2", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-tar.git" - }, - "main": "tar.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" - }, - "devDependencies": { - "graceful-fs": "^3.0.2", - "rimraf": "1.x", - "tap": "0.x", - "mkdirp": "^0.5.0" - }, - "license": "BSD", - "gitHead": "f31811bfa4ed1d1a89c380c65595ac92474dd84d", - "bugs": { - "url": "https://github.com/isaacs/node-tar/issues" - }, - "homepage": "https://github.com/isaacs/node-tar", - "_id": "tar@1.0.2", - "_shasum": "8b0f6740f9946259de26a3ed9c9a22890dff023f", - "_from": "tar@~1.0.2", - "_npmVersion": "2.1.3", - "_nodeVersion": "0.10.31", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "8b0f6740f9946259de26a3ed9c9a22890dff023f", - "tarball": "http://registry.npmjs.org/tar/-/tar-1.0.2.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/tar/-/tar-1.0.2.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/tar.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/tar.js deleted file mode 100644 index a81298b..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/tar.js +++ /dev/null @@ -1,173 +0,0 @@ -// field paths that every tar file must have. -// header is padded to 512 bytes. -var f = 0 - , fields = {} - , path = fields.path = f++ - , mode = fields.mode = f++ - , uid = fields.uid = f++ - , gid = fields.gid = f++ - , size = fields.size = f++ - , mtime = fields.mtime = f++ - , cksum = fields.cksum = f++ - , type = fields.type = f++ - , linkpath = fields.linkpath = f++ - , headerSize = 512 - , blockSize = 512 - , fieldSize = [] - -fieldSize[path] = 100 -fieldSize[mode] = 8 -fieldSize[uid] = 8 -fieldSize[gid] = 8 -fieldSize[size] = 12 -fieldSize[mtime] = 12 -fieldSize[cksum] = 8 -fieldSize[type] = 1 -fieldSize[linkpath] = 100 - -// "ustar\0" may introduce another bunch of headers. -// these are optional, and will be nulled out if not present. - -var ustar = fields.ustar = f++ - , ustarver = fields.ustarver = f++ - , uname = fields.uname = f++ - , gname = fields.gname = f++ - , devmaj = fields.devmaj = f++ - , devmin = fields.devmin = f++ - , prefix = fields.prefix = f++ - , fill = fields.fill = f++ - -// terminate fields. -fields[f] = null - -fieldSize[ustar] = 6 -fieldSize[ustarver] = 2 -fieldSize[uname] = 32 -fieldSize[gname] = 32 -fieldSize[devmaj] = 8 -fieldSize[devmin] = 8 -fieldSize[prefix] = 155 -fieldSize[fill] = 12 - -// nb: prefix field may in fact be 130 bytes of prefix, -// a null char, 12 bytes for atime, 12 bytes for ctime. -// -// To recognize this format: -// 1. prefix[130] === ' ' or '\0' -// 2. atime and ctime are octal numeric values -// 3. atime and ctime have ' ' in their last byte - -var fieldEnds = {} - , fieldOffs = {} - , fe = 0 -for (var i = 0; i < f; i ++) { - fieldOffs[i] = fe - fieldEnds[i] = (fe += fieldSize[i]) -} - -// build a translation table of field paths. -Object.keys(fields).forEach(function (f) { - if (fields[f] !== null) fields[fields[f]] = f -}) - -// different values of the 'type' field -// paths match the values of Stats.isX() functions, where appropriate -var types = - { 0: "File" - , "\0": "OldFile" // like 0 - , "": "OldFile" - , 1: "Link" - , 2: "SymbolicLink" - , 3: "CharacterDevice" - , 4: "BlockDevice" - , 5: "Directory" - , 6: "FIFO" - , 7: "ContiguousFile" // like 0 - // posix headers - , g: "GlobalExtendedHeader" // k=v for the rest of the archive - , x: "ExtendedHeader" // k=v for the next file - // vendor-specific stuff - , A: "SolarisACL" // skip - , D: "GNUDumpDir" // like 5, but with data, which should be skipped - , I: "Inode" // metadata only, skip - , K: "NextFileHasLongLinkpath" // data = link path of next file - , L: "NextFileHasLongPath" // data = path of next file - , M: "ContinuationFile" // skip - , N: "OldGnuLongPath" // like L - , S: "SparseFile" // skip - , V: "TapeVolumeHeader" // skip - , X: "OldExtendedHeader" // like x - } - -Object.keys(types).forEach(function (t) { - types[types[t]] = types[types[t]] || t -}) - -// values for the mode field -var modes = - { suid: 04000 // set uid on extraction - , sgid: 02000 // set gid on extraction - , svtx: 01000 // set restricted deletion flag on dirs on extraction - , uread: 0400 - , uwrite: 0200 - , uexec: 0100 - , gread: 040 - , gwrite: 020 - , gexec: 010 - , oread: 4 - , owrite: 2 - , oexec: 1 - , all: 07777 - } - -var numeric = - { mode: true - , uid: true - , gid: true - , size: true - , mtime: true - , devmaj: true - , devmin: true - , cksum: true - , atime: true - , ctime: true - , dev: true - , ino: true - , nlink: true - } - -Object.keys(modes).forEach(function (t) { - modes[modes[t]] = modes[modes[t]] || t -}) - -var knownExtended = - { atime: true - , charset: true - , comment: true - , ctime: true - , gid: true - , gname: true - , linkpath: true - , mtime: true - , path: true - , realtime: true - , security: true - , size: true - , uid: true - , uname: true } - - -exports.fields = fields -exports.fieldSize = fieldSize -exports.fieldOffs = fieldOffs -exports.fieldEnds = fieldEnds -exports.types = types -exports.modes = modes -exports.numeric = numeric -exports.headerSize = headerSize -exports.blockSize = blockSize -exports.knownExtended = knownExtended - -exports.Pack = require("./lib/pack.js") -exports.Parse = require("./lib/parse.js") -exports.Extract = require("./lib/extract.js") diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/00-setup-fixtures.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/00-setup-fixtures.js deleted file mode 100644 index 1524ff7..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/00-setup-fixtures.js +++ /dev/null @@ -1,53 +0,0 @@ -// the fixtures have some weird stuff that is painful -// to include directly in the repo for various reasons. -// -// So, unpack the fixtures with the system tar first. -// -// This means, of course, that it'll only work if you -// already have a tar implementation, and some of them -// will not properly unpack the fixtures anyway. -// -// But, since usually those tests will fail on Windows -// and other systems with less capable filesystems anyway, -// at least this way we don't cause inconveniences by -// merely cloning the repo or installing the package. - -var tap = require("tap") -, child_process = require("child_process") -, rimraf = require("rimraf") -, test = tap.test -, path = require("path") - -test("clean fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "rimraf ./fixtures/") - t.end() - }) -}) - -test("clean tmp", function (t) { - rimraf(path.resolve(__dirname, "tmp"), function (er) { - t.ifError(er, "rimraf ./tmp/") - t.end() - }) -}) - -test("extract fixtures", function (t) { - var c = child_process.spawn("tar" - ,["xzvf", "fixtures.tgz"] - ,{ cwd: __dirname }) - - c.stdout.on("data", errwrite) - c.stderr.on("data", errwrite) - function errwrite (chunk) { - process.stderr.write(chunk) - } - - c.on("exit", function (code) { - t.equal(code, 0, "extract fixtures should exit with 0") - if (code) { - t.comment("Note, all tests from here on out will fail because of this.") - } - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/extract-move.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/extract-move.js deleted file mode 100644 index 45400cd..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/extract-move.js +++ /dev/null @@ -1,132 +0,0 @@ -// Set the umask, so that it works the same everywhere. -process.umask(parseInt('22', 8)) - -var tap = require("tap") - , tar = require("../tar.js") - , fs = require("fs") - , gfs = require("graceful-fs") - , path = require("path") - , file = path.resolve(__dirname, "fixtures/dir.tar") - , target = path.resolve(__dirname, "tmp/extract-test") - , index = 0 - , fstream = require("fstream") - , rimraf = require("rimraf") - , mkdirp = require("mkdirp") - - , ee = 0 - , expectEntries = [ - { - "path" : "dir/", - "mode" : "750", - "type" : "5", - "depth" : undefined, - "size" : 0, - "linkpath" : "", - "nlink" : undefined, - "dev" : undefined, - "ino" : undefined - }, - { - "path" : "dir/sub/", - "mode" : "750", - "type" : "5", - "depth" : undefined, - "size" : 0, - "linkpath" : "", - "nlink" : undefined, - "dev" : undefined, - "ino" : undefined - } ] - -function slow (fs, method, t1, t2) { - var orig = fs[method] - if (!orig) return null - fs[method] = function () { - var args = [].slice.call(arguments) - console.error("slow", method, args[0]) - var cb = args.pop() - - setTimeout(function () { - orig.apply(fs, args.concat(function(er, data) { - setTimeout(function() { - cb(er, data) - }, t2) - })) - }, t1) - } -} - -// Make sure we get the graceful-fs that fstream is using. -var gfs2 -try { - gfs2 = require("fstream/node_modules/graceful-fs") -} catch (er) {} - -var slowMethods = ["chown", "chmod", "utimes", "lutimes"] -slowMethods.forEach(function (method) { - var t1 = 500 - var t2 = 0 - slow(fs, method, t1, t2) - slow(gfs, method, t1, t2) - if (gfs2) { - slow(gfs2, method, t1, t2) - } -}) - - - -// The extract class basically just pipes the input -// to a Reader, and then to a fstream.DirWriter - -// So, this is as much a test of fstream.Reader and fstream.Writer -// as it is of tar.Extract, but it sort of makes sense. - -tap.test("preclean", function (t) { - rimraf.sync(target) - /mkdirp.sync(target) - t.pass("cleaned!") - t.end() -}) - -tap.test("extract test", function (t) { - var extract = tar.Extract(target) - var inp = fs.createReadStream(file) - - // give it a weird buffer size to try to break in odd places - inp.bufferSize = 1234 - - inp.pipe(extract) - - extract.on("end", function () { - rimraf.sync(target) - - t.equal(ee, expectEntries.length, "should see "+ee+" entries") - - // should get no more entries after end - extract.removeAllListeners("entry") - extract.on("entry", function (e) { - t.fail("Should not get entries after end!") - }) - - t.end() - }) - - - extract.on("entry", function (entry) { - var found = - { path: entry.path - , mode: entry.props.mode.toString(8) - , type: entry.props.type - , depth: entry.props.depth - , size: entry.props.size - , linkpath: entry.props.linkpath - , nlink: entry.props.nlink - , dev: entry.props.dev - , ino: entry.props.ino - } - - var wanted = expectEntries[ee ++] - - t.equivalent(found, wanted, "tar entry " + ee + " " + wanted.path) - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/extract.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/extract.js deleted file mode 100644 index eca4e7c..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/extract.js +++ /dev/null @@ -1,367 +0,0 @@ -// Set the umask, so that it works the same everywhere. -process.umask(parseInt('22', 8)) - -var tap = require("tap") - , tar = require("../tar.js") - , fs = require("fs") - , path = require("path") - , file = path.resolve(__dirname, "fixtures/c.tar") - , target = path.resolve(__dirname, "tmp/extract-test") - , index = 0 - , fstream = require("fstream") - - , ee = 0 - , expectEntries = -[ { path: 'c.txt', - mode: '644', - type: '0', - depth: undefined, - size: 513, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'cc.txt', - mode: '644', - type: '0', - depth: undefined, - size: 513, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 100, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'Ω.txt', - mode: '644', - type: '0', - depth: undefined, - size: 2, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'Ω.txt', - mode: '644', - type: '0', - depth: undefined, - size: 2, - linkpath: '', - nlink: 1, - dev: 234881026, - ino: 51693379 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 200, - linkpath: '', - nlink: 1, - dev: 234881026, - ino: 51681874 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 201, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: '777', - type: '2', - depth: undefined, - size: 0, - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: '200-hard', - mode: '644', - type: '0', - depth: undefined, - size: 200, - linkpath: '', - nlink: 2, - dev: 234881026, - ino: 51681874 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '1', - depth: undefined, - size: 0, - linkpath: path.resolve(target, '200-hard'), - nlink: 2, - dev: 234881026, - ino: 51681874 } ] - - , ef = 0 - , expectFiles = -[ { path: '', - mode: '40755', - type: 'Directory', - depth: 0, - linkpath: undefined }, - { path: '/200-hard', - mode: '100644', - type: 'File', - depth: 1, - size: 200, - linkpath: undefined, - nlink: 2 }, - { path: '/200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: '120777', - type: 'SymbolicLink', - depth: 1, - size: 200, - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - nlink: 1 }, - { path: '/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '100644', - type: 'Link', - depth: 1, - size: 200, - linkpath: path.join(target, '200-hard'), - nlink: 2 }, - { path: '/c.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 513, - linkpath: undefined, - nlink: 1 }, - { path: '/cc.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 513, - linkpath: undefined, - nlink: 1 }, - { path: '/r', - mode: '40755', - type: 'Directory', - depth: 1, - linkpath: undefined }, - { path: '/r/e', - mode: '40755', - type: 'Directory', - depth: 2, - linkpath: undefined }, - { path: '/r/e/a', - mode: '40755', - type: 'Directory', - depth: 3, - linkpath: undefined }, - { path: '/r/e/a/l', - mode: '40755', - type: 'Directory', - depth: 4, - linkpath: undefined }, - { path: '/r/e/a/l/l', - mode: '40755', - type: 'Directory', - depth: 5, - linkpath: undefined }, - { path: '/r/e/a/l/l/y', - mode: '40755', - type: 'Directory', - depth: 6, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-', - mode: '40755', - type: 'Directory', - depth: 7, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d', - mode: '40755', - type: 'Directory', - depth: 8, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e', - mode: '40755', - type: 'Directory', - depth: 9, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e', - mode: '40755', - type: 'Directory', - depth: 10, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p', - mode: '40755', - type: 'Directory', - depth: 11, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-', - mode: '40755', - type: 'Directory', - depth: 12, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f', - mode: '40755', - type: 'Directory', - depth: 13, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o', - mode: '40755', - type: 'Directory', - depth: 14, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l', - mode: '40755', - type: 'Directory', - depth: 15, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d', - mode: '40755', - type: 'Directory', - depth: 16, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e', - mode: '40755', - type: 'Directory', - depth: 17, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r', - mode: '40755', - type: 'Directory', - depth: 18, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-', - mode: '40755', - type: 'Directory', - depth: 19, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p', - mode: '40755', - type: 'Directory', - depth: 20, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a', - mode: '40755', - type: 'Directory', - depth: 21, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t', - mode: '40755', - type: 'Directory', - depth: 22, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h', - mode: '40755', - type: 'Directory', - depth: 23, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '100644', - type: 'File', - depth: 24, - size: 100, - linkpath: undefined, - nlink: 1 }, - { path: '/Ω.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 2, - linkpath: undefined, - nlink: 1 } ] - - - -// The extract class basically just pipes the input -// to a Reader, and then to a fstream.DirWriter - -// So, this is as much a test of fstream.Reader and fstream.Writer -// as it is of tar.Extract, but it sort of makes sense. - -tap.test("preclean", function (t) { - require("rimraf").sync(__dirname + "/tmp/extract-test") - t.pass("cleaned!") - t.end() -}) - -tap.test("extract test", function (t) { - var extract = tar.Extract(target) - var inp = fs.createReadStream(file) - - // give it a weird buffer size to try to break in odd places - inp.bufferSize = 1234 - - inp.pipe(extract) - - extract.on("end", function () { - t.equal(ee, expectEntries.length, "should see "+ee+" entries") - - // should get no more entries after end - extract.removeAllListeners("entry") - extract.on("entry", function (e) { - t.fail("Should not get entries after end!") - }) - - next() - }) - - extract.on("entry", function (entry) { - var found = - { path: entry.path - , mode: entry.props.mode.toString(8) - , type: entry.props.type - , depth: entry.props.depth - , size: entry.props.size - , linkpath: entry.props.linkpath - , nlink: entry.props.nlink - , dev: entry.props.dev - , ino: entry.props.ino - } - - var wanted = expectEntries[ee ++] - - t.equivalent(found, wanted, "tar entry " + ee + " " + wanted.path) - }) - - function next () { - var r = fstream.Reader({ path: target - , type: "Directory" - // this is just to encourage consistency - , sort: "alpha" }) - - r.on("ready", function () { - foundEntry(r) - }) - - r.on("end", finish) - - function foundEntry (entry) { - var p = entry.path.substr(target.length) - var found = - { path: p - , mode: entry.props.mode.toString(8) - , type: entry.props.type - , depth: entry.props.depth - , size: entry.props.size - , linkpath: entry.props.linkpath - , nlink: entry.props.nlink - } - - var wanted = expectFiles[ef ++] - - t.has(found, wanted, "unpacked file " + ef + " " + wanted.path) - - entry.on("entry", foundEntry) - } - - function finish () { - t.equal(ef, expectFiles.length, "should have "+ef+" items") - t.end() - } - } -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/fixtures.tgz b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/fixtures.tgz deleted file mode 100644 index f1676023afa2bba2aa18b5508c92f03e1d0816c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19352 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 diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/header.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/header.js deleted file mode 100644 index 8ea6f79..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/header.js +++ /dev/null @@ -1,183 +0,0 @@ -var tap = require("tap") -var TarHeader = require("../lib/header.js") -var tar = require("../tar.js") -var fs = require("fs") - - -var headers = - { "a.txt file header": - [ "612e747874000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303430312031313635313336303333332030313234353100203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'a.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 257 - , mtime: 1319493851 - , cksum: 5417 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "omega pax": // the extended header from omega tar. - [ "5061784865616465722fcea92e74787400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303137302031313534333731303631312030313530353100207800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'PaxHeader/Ω.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 120 - , mtime: 1301254537 - , cksum: 6697 - , type: 'x' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } ] - - , "omega file header": - [ "cea92e7478740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303030322031313534333731303631312030313330373200203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'Ω.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 2 - , mtime: 1301254537 - , cksum: 5690 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } ] - - , "foo.js file header": - [ "666f6f2e6a730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303030342031313534333637303734312030313236313700203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'foo.js' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 4 - , mtime: 1301246433 - , cksum: 5519 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "b.txt file header": - [ "622e747874000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030313030302031313635313336303637372030313234363100203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'b.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 512 - , mtime: 1319494079 - , cksum: 5425 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "deep nested file": - [ "636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363633030303634342000303537373631200030303030323420003030303030303030313434203131363532313531353333203034333331340020300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075737461720030306973616163730000000000000000000000000000000000000000000000000000737461666600000000000000000000000000000000000000000000000000000030303030303020003030303030302000722f652f612f6c2f6c2f792f2d2f642f652f652f702f2d2f662f6f2f6c2f642f652f722f2d2f702f612f742f680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true, - path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 100 - , mtime: 1319687003 - , cksum: 18124 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - } - -tap.test("parsing", function (t) { - Object.keys(headers).forEach(function (name) { - var h = headers[name] - , header = new Buffer(h[0], "hex") - , expect = h[1] - , parsed = new TarHeader(header) - - // console.error(parsed) - t.has(parsed, expect, "parse " + name) - }) - t.end() -}) - -tap.test("encoding", function (t) { - Object.keys(headers).forEach(function (name) { - var h = headers[name] - , expect = new Buffer(h[0], "hex") - , encoded = TarHeader.encode(h[1]) - - // might have slightly different bytes, since the standard - // isn't very strict, but should have the same semantics - // checkSum will be different, but cksumValid will be true - - var th = new TarHeader(encoded) - delete h[1].block - delete h[1].needExtended - delete h[1].cksum - t.has(th, h[1], "fields "+name) - }) - t.end() -}) - -// test these manually. they're a bit rare to find in the wild -tap.test("parseNumeric tests", function (t) { - var parseNumeric = TarHeader.parseNumeric - , numbers = - { "303737373737373700": 2097151 - , "30373737373737373737373700": 8589934591 - , "303030303036343400": 420 - , "800000ffffffffffff": 281474976710655 - , "ffffff000000000001": -281474976710654 - , "ffffff000000000000": -281474976710655 - , "800000000000200000": 2097152 - , "8000000000001544c5": 1393861 - , "ffffffffffff1544c5": -15383354 } - Object.keys(numbers).forEach(function (n) { - var b = new Buffer(n, "hex") - t.equal(parseNumeric(b), numbers[n], n + " === " + numbers[n]) - }) - t.end() -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/pack-no-proprietary.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/pack-no-proprietary.js deleted file mode 100644 index d4b03a1..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/pack-no-proprietary.js +++ /dev/null @@ -1,886 +0,0 @@ -// This is exactly like test/pack.js, except that it's excluding -// any proprietary headers. -// -// This loses some information about the filesystem, but creates -// tarballs that are supported by more versions of tar, especially -// old non-spec-compliant copies of gnutar. - -// the symlink file is excluded from git, because it makes -// windows freak the hell out. -var fs = require("fs") - , path = require("path") - , symlink = path.resolve(__dirname, "fixtures/symlink") -try { fs.unlinkSync(symlink) } catch (e) {} -fs.symlinkSync("./hardlink-1", symlink) -process.on("exit", function () { - fs.unlinkSync(symlink) -}) - -var tap = require("tap") - , tar = require("../tar.js") - , pkg = require("../package.json") - , Pack = tar.Pack - , fstream = require("fstream") - , Reader = fstream.Reader - , Writer = fstream.Writer - , input = path.resolve(__dirname, "fixtures/") - , target = path.resolve(__dirname, "tmp/pack.tar") - , uid = process.getuid ? process.getuid() : 0 - , gid = process.getgid ? process.getgid() : 0 - - , entries = - - // the global header and root fixtures/ dir are going to get - // a different date each time, so omit that bit. - // Also, dev/ino values differ across machines, so that's not - // included. - [ [ 'entry', - { path: 'fixtures/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - uid: uid, - gid: gid, - size: 200 } ] - - , [ 'entry', - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/a.txt', - mode: 420, - uid: uid, - gid: gid, - size: 257, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/b.txt', - mode: 420, - uid: uid, - gid: gid, - size: 512, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/c.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/cc.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/dir/', - mode: 488, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/dir/sub/', - mode: 488, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/foo.js', - mode: 420, - uid: uid, - gid: gid, - size: 4, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-1', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-2', - mode: 420, - uid: uid, - gid: gid, - size: 0, - type: '1', - linkpath: 'fixtures/hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/star.4.html', - mode: 420, - uid: uid, - gid: gid, - size: 54081, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/packtest/Ω.txt', - uid: uid, - gid: gid, - size: 2 } ] - - , [ 'entry', - { path: 'fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 100, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/symlink', - uid: uid, - gid: gid, - size: 0, - type: '2', - linkpath: 'hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: "fixtures/Ω.txt" - , uid: uid - , gid: gid - , size: 2 } ] - - , [ 'entry', - { path: 'fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - ] - - -// first, make sure that the hardlinks are actually hardlinks, or this -// won't work. Git has a way of replacing them with a copy. -var hard1 = path.resolve(__dirname, "fixtures/hardlink-1") - , hard2 = path.resolve(__dirname, "fixtures/hardlink-2") - , fs = require("fs") - -try { fs.unlinkSync(hard2) } catch (e) {} -fs.linkSync(hard1, hard2) - -tap.test("with global header", { timeout: 10000 }, function (t) { - runTest(t, true) -}) - -tap.test("without global header", { timeout: 10000 }, function (t) { - runTest(t, false) -}) - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - - -function runTest (t, doGH) { - var reader = Reader({ path: input - , filter: function () { - return !this.path.match(/\.(tar|hex)$/) - } - , sort: alphasort - }) - - var props = doGH ? pkg : {} - props.noProprietary = true - var pack = Pack(props) - var writer = Writer(target) - - // global header should be skipped regardless, since it has no content. - var entry = 0 - - t.ok(reader, "reader ok") - t.ok(pack, "pack ok") - t.ok(writer, "writer ok") - - pack.pipe(writer) - - var parse = tar.Parse() - t.ok(parse, "parser should be ok") - - pack.on("data", function (c) { - // console.error("PACK DATA") - if (c.length !== 512) { - // this one is too noisy, only assert if it'll be relevant - t.equal(c.length, 512, "parser should emit data in 512byte blocks") - } - parse.write(c) - }) - - pack.on("end", function () { - // console.error("PACK END") - t.pass("parser ends") - parse.end() - }) - - pack.on("error", function (er) { - t.fail("pack error", er) - }) - - parse.on("error", function (er) { - t.fail("parse error", er) - }) - - writer.on("error", function (er) { - t.fail("writer error", er) - }) - - reader.on("error", function (er) { - t.fail("reader error", er) - }) - - parse.on("*", function (ev, e) { - var wanted = entries[entry++] - if (!wanted) { - t.fail("unexpected event: "+ev) - return - } - t.equal(ev, wanted[0], "event type should be "+wanted[0]) - - if (ev !== wanted[0] || e.path !== wanted[1].path) { - console.error("wanted", wanted) - console.error([ev, e.props]) - e.on("end", function () { - console.error(e.fields) - throw "break" - }) - } - - t.has(e.props, wanted[1], "properties "+wanted[1].path) - if (wanted[2]) { - e.on("end", function () { - if (!e.fields) { - t.ok(e.fields, "should get fields") - } else { - t.has(e.fields, wanted[2], "should get expected fields") - } - }) - } - }) - - reader.pipe(pack) - - writer.on("close", function () { - t.equal(entry, entries.length, "should get all expected entries") - t.pass("it finished") - t.end() - }) - -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/pack.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/pack.js deleted file mode 100644 index bf033c1..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/pack.js +++ /dev/null @@ -1,934 +0,0 @@ - -// the symlink file is excluded from git, because it makes -// windows freak the hell out. -var fs = require("fs") - , path = require("path") - , symlink = path.resolve(__dirname, "fixtures/symlink") -try { fs.unlinkSync(symlink) } catch (e) {} -fs.symlinkSync("./hardlink-1", symlink) -process.on("exit", function () { - fs.unlinkSync(symlink) -}) - - -var tap = require("tap") - , tar = require("../tar.js") - , pkg = require("../package.json") - , Pack = tar.Pack - , fstream = require("fstream") - , Reader = fstream.Reader - , Writer = fstream.Writer - , input = path.resolve(__dirname, "fixtures/") - , target = path.resolve(__dirname, "tmp/pack.tar") - , uid = process.getuid ? process.getuid() : 0 - , gid = process.getgid ? process.getgid() : 0 - - , entries = - - // the global header and root fixtures/ dir are going to get - // a different date each time, so omit that bit. - // Also, dev/ino values differ across machines, so that's not - // included. - [ [ 'globalExtendedHeader', - { path: 'PaxHeader/', - mode: 438, - uid: 0, - gid: 0, - type: 'g', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { "NODETAR.author": pkg.author, - "NODETAR.name": pkg.name, - "NODETAR.description": pkg.description, - "NODETAR.version": pkg.version, - "NODETAR.repository.type": pkg.repository.type, - "NODETAR.repository.url": pkg.repository.url, - "NODETAR.main": pkg.main, - "NODETAR.scripts.test": pkg.scripts.test } ] - - , [ 'entry', - { path: 'fixtures/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - uid: uid, - gid: gid, - size: 200, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/a.txt', - mode: 420, - uid: uid, - gid: gid, - size: 257, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/b.txt', - mode: 420, - uid: uid, - gid: gid, - size: 512, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/c.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/cc.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/dir/', - mode: 488, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/dir/sub/', - mode: 488, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - - , [ 'entry', - { path: 'fixtures/foo.js', - mode: 420, - uid: uid, - gid: gid, - size: 4, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-1', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-2', - mode: 420, - uid: uid, - gid: gid, - size: 0, - type: '1', - linkpath: 'fixtures/hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/star.4.html', - mode: 420, - uid: uid, - gid: gid, - size: 54081, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/packtest/Ω.txt', - 'NODETAR.depth': '2', - 'NODETAR.type': 'File', - nlink: 1, - uid: uid, - gid: gid, - size: 2, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '2', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 100, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/symlink', - uid: uid, - gid: gid, - size: 0, - type: '2', - linkpath: 'hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: "fixtures/Ω.txt" - , "NODETAR.depth": "1" - , "NODETAR.type": "File" - , nlink: 1 - , uid: uid - , gid: gid - , size: 2 - , "NODETAR.blksize": "4096" - , "NODETAR.blocks": "8" } ] - - , [ 'entry', - { path: 'fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - ] - - -// first, make sure that the hardlinks are actually hardlinks, or this -// won't work. Git has a way of replacing them with a copy. -var hard1 = path.resolve(__dirname, "fixtures/hardlink-1") - , hard2 = path.resolve(__dirname, "fixtures/hardlink-2") - , fs = require("fs") - -try { fs.unlinkSync(hard2) } catch (e) {} -fs.linkSync(hard1, hard2) - -tap.test("with global header", { timeout: 10000 }, function (t) { - runTest(t, true) -}) - -tap.test("without global header", { timeout: 10000 }, function (t) { - runTest(t, false) -}) - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - - -function runTest (t, doGH) { - var reader = Reader({ path: input - , filter: function () { - return !this.path.match(/\.(tar|hex)$/) - } - , sort: alphasort - }) - - var pack = Pack(doGH ? pkg : null) - var writer = Writer(target) - - // skip the global header if we're not doing that. - var entry = doGH ? 0 : 1 - - t.ok(reader, "reader ok") - t.ok(pack, "pack ok") - t.ok(writer, "writer ok") - - pack.pipe(writer) - - var parse = tar.Parse() - t.ok(parse, "parser should be ok") - - pack.on("data", function (c) { - // console.error("PACK DATA") - if (c.length !== 512) { - // this one is too noisy, only assert if it'll be relevant - t.equal(c.length, 512, "parser should emit data in 512byte blocks") - } - parse.write(c) - }) - - pack.on("end", function () { - // console.error("PACK END") - t.pass("parser ends") - parse.end() - }) - - pack.on("error", function (er) { - t.fail("pack error", er) - }) - - parse.on("error", function (er) { - t.fail("parse error", er) - }) - - writer.on("error", function (er) { - t.fail("writer error", er) - }) - - reader.on("error", function (er) { - t.fail("reader error", er) - }) - - parse.on("*", function (ev, e) { - var wanted = entries[entry++] - if (!wanted) { - t.fail("unexpected event: "+ev) - return - } - t.equal(ev, wanted[0], "event type should be "+wanted[0]) - - if (ev !== wanted[0] || e.path !== wanted[1].path) { - console.error("wanted", wanted) - console.error([ev, e.props]) - e.on("end", function () { - console.error(e.fields) - throw "break" - }) - } - - - t.has(e.props, wanted[1], "properties "+wanted[1].path) - if (wanted[2]) { - e.on("end", function () { - if (!e.fields) { - t.ok(e.fields, "should get fields") - } else { - t.has(e.fields, wanted[2], "should get expected fields") - } - }) - } - }) - - reader.pipe(pack) - - writer.on("close", function () { - t.equal(entry, entries.length, "should get all expected entries") - t.pass("it finished") - t.end() - }) - -} diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/parse.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/parse.js deleted file mode 100644 index f765a50..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/parse.js +++ /dev/null @@ -1,359 +0,0 @@ -var tap = require("tap") - , tar = require("../tar.js") - , fs = require("fs") - , path = require("path") - , file = path.resolve(__dirname, "fixtures/c.tar") - , index = 0 - - , expect = -[ [ 'entry', - { path: 'c.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 513, - mtime: new Date('Wed, 26 Oct 2011 01:10:58 GMT'), - cksum: 5422, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'cc.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 513, - mtime: new Date('Wed, 26 Oct 2011 01:11:02 GMT'), - cksum: 5525, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 100, - mtime: new Date('Thu, 27 Oct 2011 03:43:23 GMT'), - cksum: 18124, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 2, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 5695, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 120, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 6702, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'Ω.txt', - ctime: 1319737909, - atime: 1319739061, - dev: 234881026, - ino: 51693379, - nlink: 1 } ], - [ 'entry', - { path: 'Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 2, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 5695, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - atime: new Date('Thu, 27 Oct 2011 18:11:01 GMT'), - dev: 234881026, - ino: 51693379, - nlink: 1 }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 353, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14488, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ctime: 1319686868, - atime: 1319741254, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 1 } ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 200, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14570, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - atime: new Date('Thu, 27 Oct 2011 18:47:34 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 1 }, - undefined ], - [ 'longPath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4976, - type: 'L', - linkpath: '', - ustar: false }, - '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 1000, - gid: 1000, - size: 201, - mtime: new Date('Thu, 27 Oct 2011 22:21:50 GMT'), - cksum: 14086, - type: '0', - linkpath: '', - ustar: false }, - undefined ], - [ 'longLinkpath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4975, - type: 'K', - linkpath: '', - ustar: false }, - '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], - [ 'longPath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4976, - type: 'L', - linkpath: '', - ustar: false }, - '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' ], - [ 'entry', - { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: 511, - uid: 1000, - gid: 1000, - size: 0, - mtime: new Date('Fri, 28 Oct 2011 23:05:17 GMT'), - cksum: 21603, - type: '2', - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ustar: false }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200-hard', - mode: 420, - uid: 24561, - gid: 20, - size: 143, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 6533, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { ctime: 1320617144, - atime: 1320617232, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 } ], - [ 'entry', - { path: '200-hard', - mode: 420, - uid: 24561, - gid: 20, - size: 200, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 5526, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), - atime: new Date('Sun, 06 Nov 2011 22:07:12 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 353, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14488, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ctime: 1320617144, - atime: 1320617406, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 } ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 0, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 15173, - type: '1', - linkpath: '200-hard', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), - atime: new Date('Sun, 06 Nov 2011 22:10:06 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 }, - undefined ] ] - - -tap.test("parser test", function (t) { - var parser = tar.Parse() - - parser.on("end", function () { - t.equal(index, expect.length, "saw all expected events") - t.end() - }) - - fs.createReadStream(file) - .pipe(parser) - .on("*", function (ev, entry) { - var wanted = expect[index] - if (!wanted) { - return t.fail("Unexpected event: " + ev) - } - var result = [ev, entry.props] - entry.on("end", function () { - result.push(entry.fields || entry.body) - - t.equal(ev, wanted[0], index + " event type") - t.equivalent(entry.props, wanted[1], wanted[1].path + " entry properties") - if (wanted[2]) { - t.equivalent(result[2], wanted[2], "metadata values") - } - index ++ - }) - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/zz-cleanup.js b/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/zz-cleanup.js deleted file mode 100644 index a00ff7f..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/node_modules/tar/test/zz-cleanup.js +++ /dev/null @@ -1,20 +0,0 @@ -// clean up the fixtures - -var tap = require("tap") -, rimraf = require("rimraf") -, test = tap.test -, path = require("path") - -test("clean fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "rimraf ./fixtures/") - t.end() - }) -}) - -test("clean tmp", function (t) { - rimraf(path.resolve(__dirname, "tmp"), function (er) { - t.ifError(er, "rimraf ./tmp/") - t.end() - }) -}) diff --git a/node_modules/sqlite3/node_modules/node-pre-gyp/package.json b/node_modules/sqlite3/node_modules/node-pre-gyp/package.json deleted file mode 100644 index 706dc11..0000000 --- a/node_modules/sqlite3/node_modules/node-pre-gyp/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "node-pre-gyp", - "description": "Node.js native addon binary install tool", - "version": "0.6.1", - "keywords": [ - "native", - "addon", - "module", - "c", - "c++", - "bindings", - "binary" - ], - "license": "BSD", - "author": { - "name": "Dane Springmeyer", - "email": "dane@mapbox.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/mapbox/node-pre-gyp.git" - }, - "bin": { - "node-pre-gyp": "./bin/node-pre-gyp" - }, - "main": "./lib/node-pre-gyp.js", - "dependencies": { - "nopt": "~3.0.1", - "npmlog": "~0.1.1", - "request": "2.x", - "semver": "~4.1.0", - "tar": "~1.0.2", - "tar-pack": "~2.0.0", - "mkdirp": "~0.5.0", - "rc": "~0.5.1", - "rimraf": "~2.2.8" - }, - "devDependencies": { - "aws-sdk": "*", - "mocha": "1.x" - }, - "engineStrict": true, - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "prepublish": "npm ls", - "update-crosswalk": "node scripts/abi_crosswalk.js > lib/util/abi_crosswalk.json", - "test": "mocha -R spec --timeout 100000" - }, - "readme": "# node-pre-gyp\n\n#### node-pre-gyp makes it easy to publish and install Node.js C++ addons from binaries\n\n[![NPM](https://nodei.co/npm/node-pre-gyp.png?downloads=true&downloadRank=true)](https://nodei.co/npm/node-pre-gyp/)\n\n[![Build Status](https://api.travis-ci.org/mapbox/node-pre-gyp.svg)](https://travis-ci.org/mapbox/node-pre-gyp)\n[![Build status](https://ci.appveyor.com/api/projects/status/3nxewb425y83c0gv)](https://ci.appveyor.com/project/Mapbox/node-pre-gyp)\n[![Dependencies](https://david-dm.org/mapbox/node-pre-gyp.svg)](https://david-dm.org/mapbox/node-pre-gyp)\n\n`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.\n\n### Features\n\n - A command line tool called `node-pre-gyp` that can install your package's c++ module from a binary.\n - A variety of developer targeted commands for packaging, testing, and publishing binaries.\n - A Javascript module that can dynamically require your installed binary: `require('node-pre-gyp').find`\n\nFor a hello world example of a module packaged with `node-pre-gyp` see and [the wiki ](https://github.com/mapbox/node-pre-gyp/wiki/Modules-using-node-pre-gyp) for real world examples.\n\n## Credits\n\n - The module is modeled after [node-gyp](https://github.com/Tootallnate/node-gyp) by [@Tootallnate](https://github.com/Tootallnate)\n - Motivation for initial development came from [@ErisDS](https://github.com/ErisDS) and the [Ghost Project](https://github.com/TryGhost/Ghost).\n - Development is sponsored by [Mapbox](https://www.mapbox.com/)\n\n## FAQ\n\nSee the [Frequently Ask Questions](https://github.com/mapbox/node-pre-gyp/wiki/FAQ).\n\n## Depends\n\n - Node.js 0.10.x or 0.8.x\n\n## Install\n\n`node-pre-gyp` is designed to be installed as a local dependency of your Node.js C++ addon and accessed like:\n\n ./node_modules/.bin/node-pre-gyp --help\n\nBut you can also install it globally:\n\n npm install node-pre-gyp -g\n\n## Usage\n\n### Commands\n\nView all possible commands:\n\n node-pre-gyp --help\n\n- clean - Removes the entire folder containing the compiled .node module\n- install - Attempts to install pre-built binary for module\n- reinstall - Runs \"clean\" and \"install\" at once\n- build - Attempts to compile the module by dispatching to node-gyp or nw-gyp\n- rebuild - Runs \"clean\" and \"build\" at once\n- package - Packs binary into tarball\n- testpackage - Tests that the staged package is valid\n- publish - Publishes pre-built binary\n- unpublish - Unpublishes pre-built binary\n- info - Fetches info on published binaries\n\nYou can also chain commands:\n\n node-pre-gyp clean build unpublish publish info\n\n### Options\n\nOptions include:\n\n - `-C/--directory`: run the command in this directory\n - `--build-from-source`: build from source instead of using pre-built binary\n - `--runtime=node-webkit`: customize the runtime: `node` and `node-webkit` are the valid options\n - `--fallback-to-build`: fallback to building from source if pre-built binary is not available\n - `--target=0.10.25`: Pass the target node or node-webkit version to compile against\n - `--target_arch=ia32`: Pass the target arch and override the host `arch`. Valid values are 'ia32','x64', or `arm`.\n - `--target_platform=win32`: Pass the target platform and override the host `platform`. Valid values are `linux`, `darwin`, `win32`, `sunos`, `freebsd`, `openbsd`, and `aix`.\n\nBoth `--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.\n\nFor example: `npm install --build-from-source=myapp`. This is useful if:\n\n - `myapp` is referenced in the package.json of a larger app and therefore `myapp` is being installed as a dependent with `npm install`.\n - The larger app also depends on other modules installed with `node-pre-gyp`\n - You only want to trigger a source compile for `myapp` and the other modules.\n\n### Configuring\n\nThis is a guide to configuring your module to use node-pre-gyp.\n\n#### 1) Add new entries to your `package.json`\n\n - Add `node-pre-gyp` to `bundledDependencies`\n - Add `aws-sdk` as a `devDependency`\n - Add a custom `install` script\n - Declare a `binary` object\n\nThis looks like:\n\n```js\n \"dependencies\" : {\n \"node-pre-gyp\": \"0.5.x\"\n },\n \"bundledDependencies\":[\"node-pre-gyp\"],\n \"devDependencies\": {\n \"aws-sdk\": \"~2.0.0-rc.15\"\n }\n \"scripts\": {\n \"install\": \"node-pre-gyp install --fallback-to-build\",\n },\n \"binary\": {\n \"module_name\": \"your_module\",\n \"module_path\": \"./lib/binding/\",\n \"host\": \"https://your_module.s3-us-west-1.amazonaws.com\"\n }\n```\n\nFor a full example see [node-addon-examples's package.json](https://github.com/springmeyer/node-addon-example/blob/2ff60a8ded7f042864ad21db00c3a5a06cf47075/package.json#L11-L22).\n\n##### The `binary` object has three required properties\n\n###### module_name\n\nThe name of your native node module. This value must:\n\n - Match the name passed to [the NODE_MODULE macro](http://nodejs.org/api/addons.html#addons_hello_world)\n - Must be a valid C variable name (e.g. it cannot contain `-`)\n - Should not include the `.node` extension.\n\n###### module_path\n\nThe 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.\n\nNote: This property supports variables based on [Versioning](#versioning).\n\n###### host\n\nA url to the remote location where you've published tarball binaries (must be `https` not `http`).\n\nIt is highly recommended that you use Amazon S3. The reasons are:\n\n - Various node-pre-gyp commands like `publish` and `info` only work with an S3 host.\n - 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).\n - We provide detail documentation for using [S3 hosting](#s3-hosting) with node-pre-gyp.\n\nWhy 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.\n\n##### The `binary` object has two optional properties\n\n###### remote_path\n\nIt **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`.\n\nNote: This property supports variables based on [Versioning](#versioning).\n\n###### package_name\n\nIt 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`.\n\nNote: This property supports variables based on [Versioning](#versioning).\n\n#### 2) Add a new target to binding.gyp\n\n`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).\n\nA 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`.\n\nAdd a target like this at the end of your `targets` list:\n\n```js\n {\n \"target_name\": \"action_after_build\",\n \"type\": \"none\",\n \"dependencies\": [ \"<(module_name)\" ],\n \"copies\": [\n {\n \"files\": [ \"<(PRODUCT_DIR)/<(module_name).node\" ],\n \"destination\": \"<(module_path)\"\n }\n ]\n }\n```\n\nFor a full example see [node-addon-example's binding.gyp](https://github.com/springmeyer/node-addon-example/blob/2ff60a8ded7f042864ad21db00c3a5a06cf47075/binding.gyp).\n\n#### 3) Dynamically require your `.node`\n\nInside the main js file that requires your addon module you are likely currently doing:\n\n```js\nvar binding = require('../build/Release/binding.node');\n```\n\nor:\n\n```js\nvar bindings = require('./bindings')\n```\n\nChange those lines to:\n\n```js\nvar binary = require('node-pre-gyp');\nvar path = require('path');\nvar binding_path = binary.find(path.resolve(path.join(__dirname,'./package.json')));\nvar binding = require(binding_path);\n```\n\nFor a full example see [node-addon-example's index.js](https://github.com/springmeyer/node-addon-example/blob/2ff60a8ded7f042864ad21db00c3a5a06cf47075/index.js#L1-L4)\n\n#### 4) Build and package your app\n\nNow build your module from source:\n\n npm install --build-from-source\n\nThe `--build-from-source` tells `node-pre-gyp` to not look for a remote package and instead dispatch to node-gyp to build.\n\nNow `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`.\n\n#### 5) Test\n\nNow `npm test` should work just as it did before.\n\n#### 6) Publish the tarball\n\nThen package your app:\n\n ./node_modules/.bin/node-pre-gyp package\n\nOnce packaged, now you can publish:\n\n ./node_modules/.bin/node-pre-gyp publish\n\nCurrently the `publish` command pushes your binary to S3. This requires:\n\n - You have installed `aws-sdk` with `npm install aws-sdk`\n - You have created a bucket already.\n - The `host` points to an S3 http or https endpoint.\n - You have configured node-pre-gyp to read your S3 credentials (see [S3 hosting](#s3-hosting) for details).\n\nYou can also host your binaries elsewhere. To do this requires:\n\n - You manually publish the binary created by the `package` command to an `https` endpoint\n - Ensure that the `host` value points to your custom `https` endpoint.\n\n#### 7) Automate builds\n\nNow you need to publish builds for all the platforms and node versions you wish to support. This is best automated.\n\n - See [Appveyor Automation](#appveyor-automation) for how to auto-publish builds on Windows.\n - See [Travis Automation](#travis-automation) for how to auto-publish builds on OS X and Linux.\n\n#### 8) You're done!\n\nNow publish your module to the npm registry. Users will now be able to install your module from a binary. \n\nWhat will happen is this:\n\n1. `npm install ` will pull from the npm registry\n2. npm will run the `install` script which will call out to `node-pre-gyp`\n3. `node-pre-gyp` will fetch the binary `.node` module and unpack in the right place\n4. Assuming that all worked, you are done\n\nIf 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.\n\n## S3 Hosting\n\nYou 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:\n\nFirst, get setup locally and test the workflow:\n\n#### 1) Create an S3 bucket\n\nAnd have your **key** and **secret key** ready for writing to the bucket.\n\nIt 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:\n\n```js\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"Stmt1394587197000\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:DeleteObject\",\n \"s3:GetObject\",\n \"s3:GetObjectAcl\",\n \"s3:ListBucket\",\n \"s3:PutObject\",\n \"s3:PutObjectAcl\"\n ],\n \"Resource\": [\n \"arn:aws:s3:::node-pre-gyp-tests/*\"\n ]\n }\n ]\n}\n```\n\n#### 2) Install node-pre-gyp\n\nEither install it globally:\n\n npm install node-pre-gyp -g\n\nOr put the local version on your PATH\n\n export PATH=`pwd`/node_modules/.bin/:$PATH\n\n#### 3) Configure AWS credentials\n\nThere are several ways to do this.\n\nYou can use any of the methods described at http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html.\n\nOr you can create a `~/.node_pre_gyprc`\n\nOr pass options in any way supported by [RC](https://github.com/dominictarr/rc#standards)\n\nA `~/.node_pre_gyprc` looks like:\n\n```js\n{\n \"accessKeyId\": \"xxx\",\n \"secretAccessKey\": \"xxx\"\n}\n```\n\nAnother way is to use your environment:\n\n export node_pre_gyp_accessKeyId=xxx\n export node_pre_gyp_secretAccessKey=xxx\n\nYou 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.\n\n#### 4) Package and publish your build\n\nInstall the `aws-sdk`:\n\n npm install aws-sdk\n\nThen publish:\n\n node-pre-gyp package publish\n\nNote: 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.\n\n## Appveyor Automation\n\n[Appveyor](http://www.appveyor.com/) can build binaries and publish the results per commit and supports:\n\n - Windows Visual Studio 2013 and related compilers\n - Both 64 bit (x64) and 32 bit (x86) build configurations\n - Multiple Node.js versions\n\nFor an example of doing this see [node-sqlite3's appveyor.yml](https://github.com/mapbox/node-sqlite3/blob/master/appveyor.yml).\n\nBelow is a guide to getting set up:\n\n#### 1) Create a free Appveyor account\n\nGo to https://ci.appveyor.com/signup/free and sign in with your github account.\n\n#### 2) Create a new project\n\nGo to https://ci.appveyor.com/projects/new and select the github repo for your module\n\n#### 3) Add appveyor.yml and push it\n\nOnce 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.\n\n#### 4) Create secure variables\n\nEncrypt your S3 AWS keys by going to and hitting the `encrypt` button.\n\nThen paste the result into your `appveyor.yml`\n\n```yml\nenvironment:\n node_pre_gyp_accessKeyId:\n secure: Dn9HKdLNYvDgPdQOzRq/DqZ/MPhjknRHB1o+/lVU8MA=\n node_pre_gyp_secretAccessKey:\n secure: W1rwNoSnOku1r+28gnoufO8UA8iWADmL1LiiwH9IOkIVhDTNGdGPJqAlLjNqwLnL\n```\n\nNOTE: 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).\n\n#### 5) Hook up publishing\n\nJust put `node-pre-gyp package publish` in your `appveyor.yml` after `npm install`.\n\n#### 6) Publish when you want\n\nYou 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]`:\n\n SET CM=%APPVEYOR_REPO_COMMIT_MESSAGE%\n if not \"%CM%\" == \"%CM:[publish binary]=%\" node-pre-gyp --msvs_version=2013 publish\n\nIf 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()`:\n\n ps: if($env:APPVEYOR_REPO_COMMIT_MESSAGE.ToLower().Contains('[publish binary]')) { node-pre-gyp --msvs_version=2013 publish }\n\nRemember 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/\n\n\n## Travis Automation\n\n[Travis](https://travis-ci.org/) can push to S3 after a successful build and supports both:\n\n - Ubuntu Precise and OS X (64 bit)\n - Multiple Node.js versions\n\nFor an example of doing this see [node-add-example's .travis.yml](https://github.com/springmeyer/node-addon-example/blob/2ff60a8ded7f042864ad21db00c3a5a06cf47075/.travis.yml).\n\nNote: if you need 32 bit binaries, this can be done from a 64 bit travis machine. See [the node-sqlite3 scripts for an example of doing this](https://github.com/mapbox/node-sqlite3/blob/bae122aa6a2b8a45f6b717fab24e207740e32b5d/scripts/build_against_node.sh#L54-L74).\n\nBelow is a guide to getting set up:\n\n#### 1) Install the travis gem\n\n gem install travis\n\n#### 2) Create secure variables\n\nMake sure you run this command from within the directory of your module.\n\nUse `travis-encrypt` like:\n\n travis encrypt node_pre_gyp_accessKeyId=${node_pre_gyp_accessKeyId}\n travis encrypt node_pre_gyp_secretAccessKey=${node_pre_gyp_secretAccessKey}\n\nThen put those values in your `.travis.yml` like:\n\n```yaml\nenv:\n global:\n - secure: F+sEL/v56CzHqmCSSES4pEyC9NeQlkoR0Gs/ZuZxX1ytrj8SKtp3MKqBj7zhIclSdXBz4Ev966Da5ctmcTd410p0b240MV6BVOkLUtkjZJyErMBOkeb8n8yVfSoeMx8RiIhBmIvEn+rlQq+bSFis61/JkE9rxsjkGRZi14hHr4M=\n - secure: o2nkUQIiABD139XS6L8pxq3XO5gch27hvm/gOdV+dzNKc/s2KomVPWcOyXNxtJGhtecAkABzaW8KHDDi5QL1kNEFx6BxFVMLO8rjFPsMVaBG9Ks6JiDQkkmrGNcnVdxI/6EKTLHTH5WLsz8+J7caDBzvKbEfTux5EamEhxIWgrI=\n```\n\nMore details on travis encryption at http://about.travis-ci.org/docs/user/encryption-keys/.\n\n#### 3) Hook up publishing\n\nJust put `node-pre-gyp package publish` in your `.travis.yml` after `npm install`.\n\nIf you want binaries for OS X change you have two options:\n\n - Enable `multi-os` for your repo by emailing a request to `support@travis-ci.com`. More details at . An example of a repo using multi-os is [node-sqlite3](https://github.com/mapbox/node-sqlite3/blob/f69b89a078e2200fee54a9f897e6957bd627d8b7/.travis.yml#L4-L6).\n - 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:\n\n\n##### OS X publishing via a branch\n\nTweak your `.travis.yml` to use:\n\n```yml\nlanguage: objective-c\n```\n\nKeep that change in a different git branch and sync that when you want binaries published.\n\nNote: using `language: objective-c` instead of `language: nodejs` looses node.js specific travis sugar like a matrix for multiple node.js versions.\n\nBut you can replicate the lost behavior by replacing:\n\n```yml\nnode_js:\n - \"0.8\"\n - \"0.10\"\n```\n\nWith:\n\n```yml\nenv:\n matrix:\n - export NODE_VERSION=\"0.8\"\n - export NODE_VERSION=\"0.10\"\n\nbefore_install:\n - git clone https://github.com/creationix/nvm.git ./.nvm\n - source ./.nvm/nvm.sh\n - nvm install $NODE_VERSION\n - nvm use $NODE_VERSION\n```\n\n#### 4) Publish when you want\n\nYou 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]`:\n\n COMMIT_MESSAGE=$(git show -s --format=%B $TRAVIS_COMMIT | tr -d '\\n')\n if [[ ${COMMIT_MESSAGE} =~ \"[publish binary]\" ]]; then node-pre-gyp publish; fi;\n\nThen you can trigger new binaries to be built like:\n\n git commit -a -m \"[publish binary]\"\n\nOr, if you don't have any changes to make simply run:\n\n git commit --allow-empty -m \"[publish binary]\"\n\nRemember 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/\n\n# Versioning\n\nThe `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.\n\n - `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.\n - `platform` matches node's `process.platform` like `linux`, `darwin`, and `win32` unless the user passed the `--target_platform` option to override.\n - `arch` matches node's `process.arch` like `x64` or `ia32` unless the user passes the `--target_arch` option to override.\n - `configuration` - Either 'Release' or 'Debug' depending on if `--debug` is passed during the build.\n - `module_name` - the `binary.module_name` attribute from `package.json`.\n - `version` - the semver `version` value for your module from `package.json` (NOTE: ignores the `semver.build` property).\n - `major`, `minor`, `patch`, and `prelease` match the individual semver values for your module's `version`\n - `build` - the sevmer `build` value. For example it would be `this.that` if your package.json `version` was `v1.0.0+this.that`\n - `prerelease` - the semver `prerelease` value. For example it would be `alpha.beta` if your package.json `version` was `v1.0.0-alpha.beta`\n\n\nThe options are visible in the code at \n", - "readmeFilename": "README.md", - "gitHead": "cb3677a6d0c0868c09490e96f1701f6fa50a529b", - "bugs": { - "url": "https://github.com/mapbox/node-pre-gyp/issues" - }, - "homepage": "https://github.com/mapbox/node-pre-gyp", - "bundleDependencies": [ - "nopt", - "npmlog", - "request", - "semver", - "tar", - "tar-pack", - "mkdirp", - "rc", - "rimraf" - ], - "_id": "node-pre-gyp@0.6.1", - "_shasum": "5d0327d1e1e58bac33fb74494e234205ddc53aae", - "_from": "node-pre-gyp@~0.6.1" -} diff --git a/node_modules/sqlite3/package.json b/node_modules/sqlite3/package.json deleted file mode 100644 index d721ca6..0000000 --- a/node_modules/sqlite3/package.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "name": "sqlite3", - "description": "Asynchronous, non-blocking SQLite3 bindings", - "version": "3.0.4", - "homepage": "http://github.com/mapbox/node-sqlite3", - "author": { - "name": "MapBox", - "url": "https://mapbox.com/" - }, - "binary": { - "module_name": "node_sqlite3", - "module_path": "./lib/binding/{node_abi}-{platform}-{arch}", - "host": "https://mapbox-node-binary.s3.amazonaws.com", - "remote_path": "./{name}/v{version}/{toolset}/", - "package_name": "{node_abi}-{platform}-{arch}.tar.gz" - }, - "contributors": [ - { - "name": "Konstantin Käfer", - "email": "mail@kkaefer.com" - }, - { - "name": "Dane Springmeyer", - "email": "dane@mapbox.com" - }, - { - "name": "Will White", - "email": "will@mapbox.com" - }, - { - "name": "Orlando Vazquez", - "email": "ovazquez@gmail.com" - }, - { - "name": "Artem Kustikov", - "email": "kustikoff@gmail.com" - }, - { - "name": "Eric Fredricksen", - "email": "efredricksen@gmail.com" - }, - { - "name": "John Wright", - "email": "mrjjwright@gmail.com" - }, - { - "name": "Ryan Dahl", - "email": "ry@tinyclouds.org" - }, - { - "name": "Tom MacWright", - "email": "tom@mapbox.com" - }, - { - "name": "Carter Thaxton", - "email": "carter.thaxton@gmail.com" - }, - { - "name": "Audrius Kažukauskas", - "email": "audrius@neutrino.lt" - }, - { - "name": "Johannes Schauer", - "email": "josch@pyneo.org" - }, - { - "name": "Nathan Rajlich", - "email": "nathan@tootallnate.net" - }, - { - "name": "AJ ONeal", - "email": "coolaj86@gmail.com" - }, - { - "name": "Mithgol" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/mapbox/node-sqlite3.git" - }, - "dependencies": { - "nan": "~1.4.1", - "node-pre-gyp": "~0.6.1" - }, - "devDependencies": { - "mocha": "1.x", - "aws-sdk": "~2.0.25" - }, - "engines": { - "node": ">= 0.10.0 < 0.11.0 || >= 0.11.13 < 0.13.0" - }, - "engineStrict": true, - "scripts": { - "prepublish": "npm ls", - "install": "node-pre-gyp install --fallback-to-build", - "pretest": "node test/support/createdb.js", - "test": "mocha -R spec --timeout 480000" - }, - "licenses": [ - { - "type": "BSD" - } - ], - "main": "./lib/sqlite3", - "gitHead": "e66d5a8b472bc9127f7747f0c229a94721a29447", - "bugs": { - "url": "https://github.com/mapbox/node-sqlite3/issues" - }, - "bundleDependencies": [ - "node-pre-gyp" - ], - "_id": "sqlite3@3.0.4", - "_shasum": "ebee3525aac5e318074647bf4e3577b33b600b73", - "_from": "sqlite3@3.0.4", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "springmeyer", - "email": "dane@mapbox.com" - }, - "maintainers": [ - { - "name": "kkaefer", - "email": "kkaefer@gmail.com" - }, - { - "name": "yhahn", - "email": "young@developmentseed.org" - }, - { - "name": "tmcw", - "email": "macwright@gmail.com" - }, - { - "name": "springmeyer", - "email": "dane@dbsgeo.com" - } - ], - "dist": { - "shasum": "ebee3525aac5e318074647bf4e3577b33b600b73", - "tarball": "http://registry.npmjs.org/sqlite3/-/sqlite3-3.0.4.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-3.0.4.tgz" -} diff --git a/node_modules/sqlite3/sqlite3.js b/node_modules/sqlite3/sqlite3.js deleted file mode 100644 index c4b587d..0000000 --- a/node_modules/sqlite3/sqlite3.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/sqlite3'); diff --git a/node_modules/sqlite3/src/async.h b/node_modules/sqlite3/src/async.h deleted file mode 100644 index 2b167ce..0000000 --- a/node_modules/sqlite3/src/async.h +++ /dev/null @@ -1,89 +0,0 @@ -#ifndef NODE_SQLITE3_SRC_ASYNC_H -#define NODE_SQLITE3_SRC_ASYNC_H - -#include "threading.h" -#include - -#if defined(NODE_SQLITE3_BOOST_THREADING) -#include -#endif - - -// Generic uv_async handler. -template class Async { - typedef void (*Callback)(Parent* parent, Item* item); - -protected: - uv_async_t watcher; - NODE_SQLITE3_MUTEX_t - std::vector data; - Callback callback; -public: - Parent* parent; - -public: - Async(Parent* parent_, Callback cb_) - : callback(cb_), parent(parent_) { - watcher.data = this; - NODE_SQLITE3_MUTEX_INIT - uv_async_init(uv_default_loop(), &watcher, reinterpret_cast(listener)); - } - - static void listener(uv_async_t* handle, int status) { - Async* async = static_cast(handle->data); - std::vector rows; - NODE_SQLITE3_MUTEX_LOCK(&async->mutex) - rows.swap(async->data); - NODE_SQLITE3_MUTEX_UNLOCK(&async->mutex) - for (unsigned int i = 0, size = rows.size(); i < size; i++) { -#if NODE_VERSION_AT_LEAST(0, 7, 9) - uv_unref((uv_handle_t *)&async->watcher); -#else - uv_unref(uv_default_loop()); -#endif - async->callback(async->parent, rows[i]); - } - } - - static void close(uv_handle_t* handle) { - assert(handle != NULL); - assert(handle->data != NULL); - Async* async = static_cast(handle->data); - delete async; - } - - void finish() { - // Need to call the listener again to ensure all items have been - // processed. Is this a bug in uv_async? Feels like uv_close - // should handle that. - listener(&watcher, 0); - uv_close((uv_handle_t*)&watcher, close); - } - - void add(Item* item) { - // Make sure node runs long enough to deliver the messages. -#if NODE_VERSION_AT_LEAST(0, 7, 9) - uv_ref((uv_handle_t *)&watcher); -#else - uv_ref(uv_default_loop()); -#endif - NODE_SQLITE3_MUTEX_LOCK(&mutex); - data.push_back(item); - NODE_SQLITE3_MUTEX_UNLOCK(&mutex) - } - - void send() { - uv_async_send(&watcher); - } - - void send(Item* item) { - add(item); - send(); - } - - ~Async() { - NODE_SQLITE3_MUTEX_DESTROY - } -}; - -#endif diff --git a/node_modules/sqlite3/src/database.cc b/node_modules/sqlite3/src/database.cc deleted file mode 100644 index 27e4252..0000000 --- a/node_modules/sqlite3/src/database.cc +++ /dev/null @@ -1,673 +0,0 @@ -#include -#include - -#include "macros.h" -#include "database.h" -#include "statement.h" - -using namespace node_sqlite3; - -Persistent Database::constructor_template; - -void Database::Init(Handle target) { - NanScope(); - - Local t = NanNew(New); - - t->InstanceTemplate()->SetInternalFieldCount(1); - t->SetClassName(NanNew("Database")); - - NODE_SET_PROTOTYPE_METHOD(t, "close", Close); - NODE_SET_PROTOTYPE_METHOD(t, "exec", Exec); - NODE_SET_PROTOTYPE_METHOD(t, "wait", Wait); - NODE_SET_PROTOTYPE_METHOD(t, "loadExtension", LoadExtension); - NODE_SET_PROTOTYPE_METHOD(t, "serialize", Serialize); - NODE_SET_PROTOTYPE_METHOD(t, "parallelize", Parallelize); - NODE_SET_PROTOTYPE_METHOD(t, "configure", Configure); - - NODE_SET_GETTER(t, "open", OpenGetter); - - NanAssignPersistent(constructor_template, t); - - target->Set(NanNew("Database"), - t->GetFunction()); -} - -void Database::Process() { - NanScope(); - - if (!open && locked && !queue.empty()) { - EXCEPTION(NanNew("Database handle is closed"), SQLITE_MISUSE, exception); - Local argv[] = { exception }; - bool called = false; - - // Call all callbacks with the error object. - while (!queue.empty()) { - Call* call = queue.front(); - Local cb = NanNew(call->baton->callback); - if (!cb.IsEmpty() && cb->IsFunction()) { - TRY_CATCH_CALL(NanObjectWrapHandle(this), cb, 1, argv); - called = true; - } - queue.pop(); - // We don't call the actual callback, so we have to make sure that - // the baton gets destroyed. - delete call->baton; - delete call; - } - - // When we couldn't call a callback function, emit an error on the - // Database object. - if (!called) { - Local args[] = { NanNew("error"), exception }; - EMIT_EVENT(NanObjectWrapHandle(this), 2, args); - } - return; - } - - while (open && (!locked || pending == 0) && !queue.empty()) { - Call* call = queue.front(); - - if (call->exclusive && pending > 0) { - break; - } - - queue.pop(); - locked = call->exclusive; - call->callback(call->baton); - delete call; - - if (locked) break; - } -} - -void Database::Schedule(Work_Callback callback, Baton* baton, bool exclusive) { - NanScope(); - if (!open && locked) { - EXCEPTION(NanNew("Database is closed"), SQLITE_MISUSE, exception); - Local cb = NanNew(baton->callback); - if (!cb.IsEmpty() && cb->IsFunction()) { - Local argv[] = { exception }; - TRY_CATCH_CALL(NanObjectWrapHandle(this), cb, 1, argv); - } - else { - Local argv[] = { NanNew("error"), exception }; - EMIT_EVENT(NanObjectWrapHandle(this), 2, argv); - } - return; - } - - if (!open || ((locked || exclusive || serialize) && pending > 0)) { - queue.push(new Call(callback, baton, exclusive || serialize)); - } - else { - locked = exclusive; - callback(baton); - } -} - -NAN_METHOD(Database::New) { - NanScope(); - - if (!args.IsConstructCall()) { - return NanThrowTypeError("Use the new operator to create new Database objects"); - } - - REQUIRE_ARGUMENT_STRING(0, filename); - int pos = 1; - - int mode; - if (args.Length() >= pos && args[pos]->IsInt32()) { - mode = args[pos++]->Int32Value(); - } else { - mode = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_FULLMUTEX; - } - - Local callback; - if (args.Length() >= pos && args[pos]->IsFunction()) { - callback = Local::Cast(args[pos++]); - } - - Database* db = new Database(); - db->Wrap(args.This()); - - args.This()->Set(NanNew("filename"), args[0]->ToString(), ReadOnly); - args.This()->Set(NanNew("mode"), NanNew(mode), ReadOnly); - - // Start opening the database. - OpenBaton* baton = new OpenBaton(db, callback, *filename, mode); - Work_BeginOpen(baton); - - NanReturnValue(args.This()); -} - -void Database::Work_BeginOpen(Baton* baton) { - int status = uv_queue_work(uv_default_loop(), - &baton->request, Work_Open, (uv_after_work_cb)Work_AfterOpen); - assert(status == 0); -} - -void Database::Work_Open(uv_work_t* req) { - OpenBaton* baton = static_cast(req->data); - Database* db = baton->db; - - baton->status = sqlite3_open_v2( - baton->filename.c_str(), - &db->_handle, - baton->mode, - NULL - ); - - if (baton->status != SQLITE_OK) { - baton->message = std::string(sqlite3_errmsg(db->_handle)); - sqlite3_close(db->_handle); - db->_handle = NULL; - } - else { - // Set default database handle values. - sqlite3_busy_timeout(db->_handle, 1000); - } -} - -void Database::Work_AfterOpen(uv_work_t* req) { - NanScope(); - OpenBaton* baton = static_cast(req->data); - Database* db = baton->db; - - Local argv[1]; - if (baton->status != SQLITE_OK) { - EXCEPTION(NanNew(baton->message.c_str()), baton->status, exception); - argv[0] = exception; - } - else { - db->open = true; - argv[0] = NanNew(NanNull()); - } - - Local cb = NanNew(baton->callback); - - if (!cb.IsEmpty() && cb->IsFunction()) { - TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv); - } - else if (!db->open) { - Local args[] = { NanNew("error"), argv[0] }; - EMIT_EVENT(NanObjectWrapHandle(db), 2, args); - } - - if (db->open) { - Local args[] = { NanNew("open") }; - EMIT_EVENT(NanObjectWrapHandle(db), 1, args); - db->Process(); - } - - delete baton; -} - -NAN_GETTER(Database::OpenGetter) { - NanScope(); - Database* db = ObjectWrap::Unwrap(args.This()); - NanReturnValue(NanNew(db->open)); -} - -NAN_METHOD(Database::Close) { - NanScope(); - Database* db = ObjectWrap::Unwrap(args.This()); - OPTIONAL_ARGUMENT_FUNCTION(0, callback); - - Baton* baton = new Baton(db, callback); - db->Schedule(Work_BeginClose, baton, true); - - NanReturnValue(args.This()); -} - -void Database::Work_BeginClose(Baton* baton) { - assert(baton->db->locked); - assert(baton->db->open); - assert(baton->db->_handle); - assert(baton->db->pending == 0); - - baton->db->RemoveCallbacks(); - int status = uv_queue_work(uv_default_loop(), - &baton->request, Work_Close, (uv_after_work_cb)Work_AfterClose); - assert(status == 0); -} - -void Database::Work_Close(uv_work_t* req) { - Baton* baton = static_cast(req->data); - Database* db = baton->db; - - baton->status = sqlite3_close(db->_handle); - - if (baton->status != SQLITE_OK) { - baton->message = std::string(sqlite3_errmsg(db->_handle)); - } - else { - db->_handle = NULL; - } -} - -void Database::Work_AfterClose(uv_work_t* req) { - NanScope(); - Baton* baton = static_cast(req->data); - Database* db = baton->db; - - Local argv[1]; - if (baton->status != SQLITE_OK) { - EXCEPTION(NanNew(baton->message.c_str()), baton->status, exception); - argv[0] = exception; - } - else { - db->open = false; - // Leave db->locked to indicate that this db object has reached - // the end of its life. - argv[0] = NanNew(NanNull()); - } - - Local cb = NanNew(baton->callback); - - // Fire callbacks. - if (!cb.IsEmpty() && cb->IsFunction()) { - TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv); - } - else if (db->open) { - Local args[] = { NanNew("error"), argv[0] }; - EMIT_EVENT(NanObjectWrapHandle(db), 2, args); - } - - if (!db->open) { - Local args[] = { NanNew("close"), argv[0] }; - EMIT_EVENT(NanObjectWrapHandle(db), 1, args); - db->Process(); - } - - delete baton; -} - -NAN_METHOD(Database::Serialize) { - NanScope(); - Database* db = ObjectWrap::Unwrap(args.This()); - OPTIONAL_ARGUMENT_FUNCTION(0, callback); - - bool before = db->serialize; - db->serialize = true; - - if (!callback.IsEmpty() && callback->IsFunction()) { - TRY_CATCH_CALL(args.This(), callback, 0, NULL); - db->serialize = before; - } - - db->Process(); - - NanReturnValue(args.This()); -} - -NAN_METHOD(Database::Parallelize) { - NanScope(); - Database* db = ObjectWrap::Unwrap(args.This()); - OPTIONAL_ARGUMENT_FUNCTION(0, callback); - - bool before = db->serialize; - db->serialize = false; - - if (!callback.IsEmpty() && callback->IsFunction()) { - TRY_CATCH_CALL(args.This(), callback, 0, NULL); - db->serialize = before; - } - - db->Process(); - - NanReturnValue(args.This()); -} - -NAN_METHOD(Database::Configure) { - NanScope(); - Database* db = ObjectWrap::Unwrap(args.This()); - - REQUIRE_ARGUMENTS(2); - - if (args[0]->Equals(NanNew("trace"))) { - Local handle; - Baton* baton = new Baton(db, handle); - db->Schedule(RegisterTraceCallback, baton); - } - else if (args[0]->Equals(NanNew("profile"))) { - Local handle; - Baton* baton = new Baton(db, handle); - db->Schedule(RegisterProfileCallback, baton); - } - else if (args[0]->Equals(NanNew("busyTimeout"))) { - if (!args[1]->IsInt32()) { - return NanThrowTypeError("Value must be an integer"); - } - Local handle; - Baton* baton = new Baton(db, handle); - baton->status = args[1]->Int32Value(); - db->Schedule(SetBusyTimeout, baton); - } - else { - return NanThrowError(Exception::Error(String::Concat( - args[0]->ToString(), - NanNew(" is not a valid configuration option") - ))); - } - - db->Process(); - - NanReturnValue(args.This()); -} - -void Database::SetBusyTimeout(Baton* baton) { - assert(baton->db->open); - assert(baton->db->_handle); - - // Abuse the status field for passing the timeout. - sqlite3_busy_timeout(baton->db->_handle, baton->status); - - delete baton; -} - -void Database::RegisterTraceCallback(Baton* baton) { - assert(baton->db->open); - assert(baton->db->_handle); - Database* db = baton->db; - - if (db->debug_trace == NULL) { - // Add it. - db->debug_trace = new AsyncTrace(db, TraceCallback); - sqlite3_trace(db->_handle, TraceCallback, db); - } - else { - // Remove it. - sqlite3_trace(db->_handle, NULL, NULL); - db->debug_trace->finish(); - db->debug_trace = NULL; - } - - delete baton; -} - -void Database::TraceCallback(void* db, const char* sql) { - // Note: This function is called in the thread pool. - // Note: Some queries, such as "EXPLAIN" queries, are not sent through this. - static_cast(db)->debug_trace->send(new std::string(sql)); -} - -void Database::TraceCallback(Database* db, std::string* sql) { - // Note: This function is called in the main V8 thread. - NanScope(); - Local argv[] = { - NanNew("trace"), - NanNew(sql->c_str()) - }; - EMIT_EVENT(NanObjectWrapHandle(db), 2, argv); - delete sql; -} - -void Database::RegisterProfileCallback(Baton* baton) { - assert(baton->db->open); - assert(baton->db->_handle); - Database* db = baton->db; - - if (db->debug_profile == NULL) { - // Add it. - db->debug_profile = new AsyncProfile(db, ProfileCallback); - sqlite3_profile(db->_handle, ProfileCallback, db); - } - else { - // Remove it. - sqlite3_profile(db->_handle, NULL, NULL); - db->debug_profile->finish(); - db->debug_profile = NULL; - } - - delete baton; -} - -void Database::ProfileCallback(void* db, const char* sql, sqlite3_uint64 nsecs) { - // Note: This function is called in the thread pool. - // Note: Some queries, such as "EXPLAIN" queries, are not sent through this. - ProfileInfo* info = new ProfileInfo(); - info->sql = std::string(sql); - info->nsecs = nsecs; - static_cast(db)->debug_profile->send(info); -} - -void Database::ProfileCallback(Database *db, ProfileInfo* info) { - NanScope(); - Local argv[] = { - NanNew("profile"), - NanNew(info->sql.c_str()), - NanNew((double)info->nsecs / 1000000.0) - }; - EMIT_EVENT(NanObjectWrapHandle(db), 3, argv); - delete info; -} - -void Database::RegisterUpdateCallback(Baton* baton) { - assert(baton->db->open); - assert(baton->db->_handle); - Database* db = baton->db; - - if (db->update_event == NULL) { - // Add it. - db->update_event = new AsyncUpdate(db, UpdateCallback); - sqlite3_update_hook(db->_handle, UpdateCallback, db); - } - else { - // Remove it. - sqlite3_update_hook(db->_handle, NULL, NULL); - db->update_event->finish(); - db->update_event = NULL; - } - - delete baton; -} - -void Database::UpdateCallback(void* db, int type, const char* database, - const char* table, sqlite3_int64 rowid) { - // Note: This function is called in the thread pool. - // Note: Some queries, such as "EXPLAIN" queries, are not sent through this. - UpdateInfo* info = new UpdateInfo(); - info->type = type; - info->database = std::string(database); - info->table = std::string(table); - info->rowid = rowid; - static_cast(db)->update_event->send(info); -} - -void Database::UpdateCallback(Database *db, UpdateInfo* info) { - NanScope(); - - Local argv[] = { - NanNew(sqlite_authorizer_string(info->type)), - NanNew(info->database.c_str()), - NanNew(info->table.c_str()), - NanNew(info->rowid), - }; - EMIT_EVENT(NanObjectWrapHandle(db), 4, argv); - delete info; -} - -NAN_METHOD(Database::Exec) { - NanScope(); - Database* db = ObjectWrap::Unwrap(args.This()); - - REQUIRE_ARGUMENT_STRING(0, sql); - OPTIONAL_ARGUMENT_FUNCTION(1, callback); - - Baton* baton = new ExecBaton(db, callback, *sql); - db->Schedule(Work_BeginExec, baton, true); - - NanReturnValue(args.This()); -} - -void Database::Work_BeginExec(Baton* baton) { - assert(baton->db->locked); - assert(baton->db->open); - assert(baton->db->_handle); - assert(baton->db->pending == 0); - int status = uv_queue_work(uv_default_loop(), - &baton->request, Work_Exec, (uv_after_work_cb)Work_AfterExec); - assert(status == 0); -} - -void Database::Work_Exec(uv_work_t* req) { - ExecBaton* baton = static_cast(req->data); - - char* message = NULL; - baton->status = sqlite3_exec( - baton->db->_handle, - baton->sql.c_str(), - NULL, - NULL, - &message - ); - - if (baton->status != SQLITE_OK && message != NULL) { - baton->message = std::string(message); - sqlite3_free(message); - } -} - -void Database::Work_AfterExec(uv_work_t* req) { - NanScope(); - ExecBaton* baton = static_cast(req->data); - Database* db = baton->db; - - Local cb = NanNew(baton->callback); - - if (baton->status != SQLITE_OK) { - EXCEPTION(NanNew(baton->message.c_str()), baton->status, exception); - - if (!cb.IsEmpty() && cb->IsFunction()) { - Local argv[] = { exception }; - TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv); - } - else { - Local args[] = { NanNew("error"), exception }; - EMIT_EVENT(NanObjectWrapHandle(db), 2, args); - } - } - else if (!cb.IsEmpty() && cb->IsFunction()) { - Local argv[] = { NanNew(NanNull()) }; - TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv); - } - - db->Process(); - - delete baton; -} - -NAN_METHOD(Database::Wait) { - NanScope(); - Database* db = ObjectWrap::Unwrap(args.This()); - - OPTIONAL_ARGUMENT_FUNCTION(0, callback); - - Baton* baton = new Baton(db, callback); - db->Schedule(Work_Wait, baton, true); - - NanReturnValue(args.This()); -} - -void Database::Work_Wait(Baton* baton) { - NanScope(); - - assert(baton->db->locked); - assert(baton->db->open); - assert(baton->db->_handle); - assert(baton->db->pending == 0); - - Local cb = NanNew(baton->callback); - if (!cb.IsEmpty() && cb->IsFunction()) { - Local argv[] = { NanNew(NanNull()) }; - TRY_CATCH_CALL(NanObjectWrapHandle(baton->db), cb, 1, argv); - } - - baton->db->Process(); - - delete baton; -} - -NAN_METHOD(Database::LoadExtension) { - NanScope(); - Database* db = ObjectWrap::Unwrap(args.This()); - - REQUIRE_ARGUMENT_STRING(0, filename); - OPTIONAL_ARGUMENT_FUNCTION(1, callback); - - Baton* baton = new LoadExtensionBaton(db, callback, *filename); - db->Schedule(Work_BeginLoadExtension, baton, true); - - NanReturnValue(args.This()); -} - -void Database::Work_BeginLoadExtension(Baton* baton) { - assert(baton->db->locked); - assert(baton->db->open); - assert(baton->db->_handle); - assert(baton->db->pending == 0); - int status = uv_queue_work(uv_default_loop(), - &baton->request, Work_LoadExtension, (uv_after_work_cb)Work_AfterLoadExtension); - assert(status == 0); -} - -void Database::Work_LoadExtension(uv_work_t* req) { - LoadExtensionBaton* baton = static_cast(req->data); - - sqlite3_enable_load_extension(baton->db->_handle, 1); - - char* message = NULL; - baton->status = sqlite3_load_extension( - baton->db->_handle, - baton->filename.c_str(), - 0, - &message - ); - - sqlite3_enable_load_extension(baton->db->_handle, 0); - - if (baton->status != SQLITE_OK && message != NULL) { - baton->message = std::string(message); - sqlite3_free(message); - } -} - -void Database::Work_AfterLoadExtension(uv_work_t* req) { - NanScope(); - LoadExtensionBaton* baton = static_cast(req->data); - Database* db = baton->db; - Local cb = NanNew(baton->callback); - - if (baton->status != SQLITE_OK) { - EXCEPTION(NanNew(baton->message.c_str()), baton->status, exception); - - if (!cb.IsEmpty() && cb->IsFunction()) { - Local argv[] = { exception }; - TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv); - } - else { - Local args[] = { NanNew("error"), exception }; - EMIT_EVENT(NanObjectWrapHandle(db), 2, args); - } - } - else if (!cb.IsEmpty() && cb->IsFunction()) { - Local argv[] = { NanNew(NanNull()) }; - TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv); - } - - db->Process(); - - delete baton; -} - -void Database::RemoveCallbacks() { - if (debug_trace) { - debug_trace->finish(); - debug_trace = NULL; - } - if (debug_profile) { - debug_profile->finish(); - debug_profile = NULL; - } -} diff --git a/node_modules/sqlite3/src/database.h b/node_modules/sqlite3/src/database.h deleted file mode 100644 index af83ee7..0000000 --- a/node_modules/sqlite3/src/database.h +++ /dev/null @@ -1,189 +0,0 @@ - -#ifndef NODE_SQLITE3_SRC_DATABASE_H -#define NODE_SQLITE3_SRC_DATABASE_H - -#include - -#include -#include - -#include -#include "nan.h" -#include "async.h" - -using namespace v8; -using namespace node; - -namespace node_sqlite3 { - -class Database; - - -class Database : public ObjectWrap { -public: - static Persistent constructor_template; - static void Init(Handle target); - - static inline bool HasInstance(Handle val) { - NanScope(); - if (!val->IsObject()) return false; - Local obj = val->ToObject(); - return NanNew(constructor_template)->HasInstance(obj); - } - - struct Baton { - uv_work_t request; - Database* db; - Persistent callback; - int status; - std::string message; - - Baton(Database* db_, Handle cb_) : - db(db_), status(SQLITE_OK) { - db->Ref(); - request.data = this; - NanAssignPersistent(callback, cb_); - } - virtual ~Baton() { - db->Unref(); - NanDisposePersistent(callback); - } - }; - - struct OpenBaton : Baton { - std::string filename; - int mode; - OpenBaton(Database* db_, Handle cb_, const char* filename_, int mode_) : - Baton(db_, cb_), filename(filename_), mode(mode_) {} - }; - - struct ExecBaton : Baton { - std::string sql; - ExecBaton(Database* db_, Handle cb_, const char* sql_) : - Baton(db_, cb_), sql(sql_) {} - }; - - struct LoadExtensionBaton : Baton { - std::string filename; - LoadExtensionBaton(Database* db_, Handle cb_, const char* filename_) : - Baton(db_, cb_), filename(filename_) {} - }; - - typedef void (*Work_Callback)(Baton* baton); - - struct Call { - Call(Work_Callback cb_, Baton* baton_, bool exclusive_ = false) : - callback(cb_), exclusive(exclusive_), baton(baton_) {}; - Work_Callback callback; - bool exclusive; - Baton* baton; - }; - - struct ProfileInfo { - std::string sql; - sqlite3_int64 nsecs; - }; - - struct UpdateInfo { - int type; - std::string database; - std::string table; - sqlite3_int64 rowid; - }; - - bool IsOpen() { return open; } - bool IsLocked() { return locked; } - - typedef Async AsyncTrace; - typedef Async AsyncProfile; - typedef Async AsyncUpdate; - - friend class Statement; - -protected: - Database() : ObjectWrap(), - _handle(NULL), - open(false), - locked(false), - pending(0), - serialize(false), - debug_trace(NULL), - debug_profile(NULL), - update_event(NULL) { - } - - ~Database() { - RemoveCallbacks(); - sqlite3_close(_handle); - _handle = NULL; - open = false; - } - - static NAN_METHOD(New); - static void Work_BeginOpen(Baton* baton); - static void Work_Open(uv_work_t* req); - static void Work_AfterOpen(uv_work_t* req); - - static NAN_GETTER(OpenGetter); - - void Schedule(Work_Callback callback, Baton* baton, bool exclusive = false); - void Process(); - - static NAN_METHOD(Exec); - static void Work_BeginExec(Baton* baton); - static void Work_Exec(uv_work_t* req); - static void Work_AfterExec(uv_work_t* req); - - static NAN_METHOD(Wait); - static void Work_Wait(Baton* baton); - - static NAN_METHOD(Close); - static void Work_BeginClose(Baton* baton); - static void Work_Close(uv_work_t* req); - static void Work_AfterClose(uv_work_t* req); - - static NAN_METHOD(LoadExtension); - static void Work_BeginLoadExtension(Baton* baton); - static void Work_LoadExtension(uv_work_t* req); - static void Work_AfterLoadExtension(uv_work_t* req); - - static NAN_METHOD(Serialize); - static NAN_METHOD(Parallelize); - - static NAN_METHOD(Configure); - - static void SetBusyTimeout(Baton* baton); - - static void RegisterTraceCallback(Baton* baton); - static void TraceCallback(void* db, const char* sql); - static void TraceCallback(Database* db, std::string* sql); - - static void RegisterProfileCallback(Baton* baton); - static void ProfileCallback(void* db, const char* sql, sqlite3_uint64 nsecs); - static void ProfileCallback(Database* db, ProfileInfo* info); - - static void RegisterUpdateCallback(Baton* baton); - static void UpdateCallback(void* db, int type, const char* database, const char* table, sqlite3_int64 rowid); - static void UpdateCallback(Database* db, UpdateInfo* info); - - void RemoveCallbacks(); - -protected: - sqlite3* _handle; - - bool open; - bool locked; - unsigned int pending; - - bool serialize; - - std::queue queue; - - AsyncTrace* debug_trace; - AsyncProfile* debug_profile; - AsyncUpdate* update_event; -}; - -} - -#endif diff --git a/node_modules/sqlite3/src/gcc-preinclude.h b/node_modules/sqlite3/src/gcc-preinclude.h deleted file mode 100644 index c515fa6..0000000 --- a/node_modules/sqlite3/src/gcc-preinclude.h +++ /dev/null @@ -1,4 +0,0 @@ - -// https://rjpower9000.wordpress.com/2012/04/09/fun-with-shared-libraries-version-glibc_2-14-not-found/ - -__asm__(".symver memcpy,memcpy@GLIBC_2.2.5"); diff --git a/node_modules/sqlite3/src/macros.h b/node_modules/sqlite3/src/macros.h deleted file mode 100644 index c98a86b..0000000 --- a/node_modules/sqlite3/src/macros.h +++ /dev/null @@ -1,150 +0,0 @@ -#ifndef NODE_SQLITE3_SRC_MACROS_H -#define NODE_SQLITE3_SRC_MACROS_H - -const char* sqlite_code_string(int code); -const char* sqlite_authorizer_string(int type); - - -#define REQUIRE_ARGUMENTS(n) \ - if (args.Length() < (n)) { \ - return NanThrowTypeError("Expected " #n "arguments"); \ - } - - -#define REQUIRE_ARGUMENT_EXTERNAL(i, var) \ - if (args.Length() <= (i) || !args[i]->IsExternal()) { \ - return NanThrowTypeError("Argument " #i " invalid"); \ - } \ - Local var = Local::Cast(args[i]); - - -#define REQUIRE_ARGUMENT_FUNCTION(i, var) \ - if (args.Length() <= (i) || !args[i]->IsFunction()) { \ - return NanThrowTypeError("Argument " #i " must be a function"); \ - } \ - Local var = Local::Cast(args[i]); - - -#define REQUIRE_ARGUMENT_STRING(i, var) \ - if (args.Length() <= (i) || !args[i]->IsString()) { \ - return NanThrowTypeError("Argument " #i " must be a string"); \ - } \ - String::Utf8Value var(args[i]->ToString()); - - -#define OPTIONAL_ARGUMENT_FUNCTION(i, var) \ - Local var; \ - if (args.Length() > i && !args[i]->IsUndefined()) { \ - if (!args[i]->IsFunction()) { \ - return NanThrowTypeError("Argument " #i " must be a function"); \ - } \ - var = Local::Cast(args[i]); \ - } - - -#define OPTIONAL_ARGUMENT_INTEGER(i, var, default) \ - int var; \ - if (args.Length() <= (i)) { \ - var = (default); \ - } \ - else if (args[i]->IsInt32()) { \ - var = args[i]->Int32Value(); \ - } \ - else { \ - return NanThrowTypeError("Argument " #i " must be an integer"); \ - } - - -#define DEFINE_CONSTANT_INTEGER(target, constant, name) \ - (target)->Set( \ - NanNew(#name), \ - NanNew(constant), \ - static_cast(ReadOnly | DontDelete) \ - ); - -#define DEFINE_CONSTANT_STRING(target, constant, name) \ - (target)->Set( \ - NanNew(#name), \ - NanNew(constant), \ - static_cast(ReadOnly | DontDelete) \ - ); - - -#define NODE_SET_GETTER(target, name, function) \ - (target)->InstanceTemplate() \ - ->SetAccessor(NanNew(name), (function)); - -#define GET_STRING(source, name, property) \ - String::Utf8Value name((source)->Get(NanNew(property))); - -#define GET_INTEGER(source, name, property) \ - int name = (source)->Get(NanNew(property))->Int32Value(); - -#define EXCEPTION(msg, errno, name) \ - Local name = Exception::Error( \ - String::Concat( \ - String::Concat( \ - NanNew(sqlite_code_string(errno)), \ - NanNew(": ") \ - ), \ - (msg) \ - ) \ - ); \ - Local name ##_obj = name->ToObject(); \ - name ##_obj->Set(NanNew("errno"), NanNew(errno)); \ - name ##_obj->Set(NanNew("code"), \ - NanNew(sqlite_code_string(errno))); - - -#define EMIT_EVENT(obj, argc, argv) \ - TRY_CATCH_CALL((obj), \ - Local::Cast((obj)->Get(NanNew("emit"))), \ - argc, argv \ - ); - -#define TRY_CATCH_CALL(context, callback, argc, argv) \ - NanMakeCallback((context), (callback), (argc), (argv)) - -#define WORK_DEFINITION(name) \ - static NAN_METHOD(name); \ - static void Work_Begin##name(Baton* baton); \ - static void Work_##name(uv_work_t* req); \ - static void Work_After##name(uv_work_t* req); - -#define STATEMENT_BEGIN(type) \ - assert(baton); \ - assert(baton->stmt); \ - assert(!baton->stmt->locked); \ - assert(!baton->stmt->finalized); \ - assert(baton->stmt->prepared); \ - baton->stmt->locked = true; \ - baton->stmt->db->pending++; \ - int status = uv_queue_work(uv_default_loop(), \ - &baton->request, Work_##type, (uv_after_work_cb)Work_After##type); \ - assert(status == 0); - -#define STATEMENT_INIT(type) \ - type* baton = static_cast(req->data); \ - Statement* stmt = baton->stmt; - -#define STATEMENT_END() \ - assert(stmt->locked); \ - assert(stmt->db->pending); \ - stmt->locked = false; \ - stmt->db->pending--; \ - stmt->Process(); \ - stmt->db->Process(); \ - delete baton; - -#define DELETE_FIELD(field) \ - if (field != NULL) { \ - switch ((field)->type) { \ - case SQLITE_INTEGER: delete (Values::Integer*)(field); break; \ - case SQLITE_FLOAT: delete (Values::Float*)(field); break; \ - case SQLITE_TEXT: delete (Values::Text*)(field); break; \ - case SQLITE_BLOB: delete (Values::Blob*)(field); break; \ - case SQLITE_NULL: delete (Values::Null*)(field); break; \ - } \ - } - -#endif diff --git a/node_modules/sqlite3/src/node_sqlite3.cc b/node_modules/sqlite3/src/node_sqlite3.cc deleted file mode 100644 index 42fbabb..0000000 --- a/node_modules/sqlite3/src/node_sqlite3.cc +++ /dev/null @@ -1,107 +0,0 @@ -#include -#include - -#include -#include -#include -#include -#include - -#include "macros.h" -#include "database.h" -#include "statement.h" - -using namespace node_sqlite3; - -namespace { - -void RegisterModule(v8::Handle target) { - NanScope(); - Database::Init(target); - Statement::Init(target); - - DEFINE_CONSTANT_INTEGER(target, SQLITE_OPEN_READONLY, OPEN_READONLY); - DEFINE_CONSTANT_INTEGER(target, SQLITE_OPEN_READWRITE, OPEN_READWRITE); - DEFINE_CONSTANT_INTEGER(target, SQLITE_OPEN_CREATE, OPEN_CREATE); - DEFINE_CONSTANT_STRING(target, SQLITE_VERSION, VERSION); -#ifdef SQLITE_SOURCE_ID - DEFINE_CONSTANT_STRING(target, SQLITE_SOURCE_ID, SOURCE_ID); -#endif - DEFINE_CONSTANT_INTEGER(target, SQLITE_VERSION_NUMBER, VERSION_NUMBER); - - DEFINE_CONSTANT_INTEGER(target, SQLITE_OK, OK); - DEFINE_CONSTANT_INTEGER(target, SQLITE_ERROR, ERROR); - DEFINE_CONSTANT_INTEGER(target, SQLITE_INTERNAL, INTERNAL); - DEFINE_CONSTANT_INTEGER(target, SQLITE_PERM, PERM); - DEFINE_CONSTANT_INTEGER(target, SQLITE_ABORT, ABORT); - DEFINE_CONSTANT_INTEGER(target, SQLITE_BUSY, BUSY); - DEFINE_CONSTANT_INTEGER(target, SQLITE_LOCKED, LOCKED); - DEFINE_CONSTANT_INTEGER(target, SQLITE_NOMEM, NOMEM); - DEFINE_CONSTANT_INTEGER(target, SQLITE_READONLY, READONLY); - DEFINE_CONSTANT_INTEGER(target, SQLITE_INTERRUPT, INTERRUPT); - DEFINE_CONSTANT_INTEGER(target, SQLITE_IOERR, IOERR); - DEFINE_CONSTANT_INTEGER(target, SQLITE_CORRUPT, CORRUPT); - DEFINE_CONSTANT_INTEGER(target, SQLITE_NOTFOUND, NOTFOUND); - DEFINE_CONSTANT_INTEGER(target, SQLITE_FULL, FULL); - DEFINE_CONSTANT_INTEGER(target, SQLITE_CANTOPEN, CANTOPEN); - DEFINE_CONSTANT_INTEGER(target, SQLITE_PROTOCOL, PROTOCOL); - DEFINE_CONSTANT_INTEGER(target, SQLITE_EMPTY, EMPTY); - DEFINE_CONSTANT_INTEGER(target, SQLITE_SCHEMA, SCHEMA); - DEFINE_CONSTANT_INTEGER(target, SQLITE_TOOBIG, TOOBIG); - DEFINE_CONSTANT_INTEGER(target, SQLITE_CONSTRAINT, CONSTRAINT); - DEFINE_CONSTANT_INTEGER(target, SQLITE_MISMATCH, MISMATCH); - DEFINE_CONSTANT_INTEGER(target, SQLITE_MISUSE, MISUSE); - DEFINE_CONSTANT_INTEGER(target, SQLITE_NOLFS, NOLFS); - DEFINE_CONSTANT_INTEGER(target, SQLITE_AUTH, AUTH); - DEFINE_CONSTANT_INTEGER(target, SQLITE_FORMAT, FORMAT); - DEFINE_CONSTANT_INTEGER(target, SQLITE_RANGE, RANGE); - DEFINE_CONSTANT_INTEGER(target, SQLITE_NOTADB, NOTADB); -} - -} - -const char* sqlite_code_string(int code) { - switch (code) { - case SQLITE_OK: return "SQLITE_OK"; - case SQLITE_ERROR: return "SQLITE_ERROR"; - case SQLITE_INTERNAL: return "SQLITE_INTERNAL"; - case SQLITE_PERM: return "SQLITE_PERM"; - case SQLITE_ABORT: return "SQLITE_ABORT"; - case SQLITE_BUSY: return "SQLITE_BUSY"; - case SQLITE_LOCKED: return "SQLITE_LOCKED"; - case SQLITE_NOMEM: return "SQLITE_NOMEM"; - case SQLITE_READONLY: return "SQLITE_READONLY"; - case SQLITE_INTERRUPT: return "SQLITE_INTERRUPT"; - case SQLITE_IOERR: return "SQLITE_IOERR"; - case SQLITE_CORRUPT: return "SQLITE_CORRUPT"; - case SQLITE_NOTFOUND: return "SQLITE_NOTFOUND"; - case SQLITE_FULL: return "SQLITE_FULL"; - case SQLITE_CANTOPEN: return "SQLITE_CANTOPEN"; - case SQLITE_PROTOCOL: return "SQLITE_PROTOCOL"; - case SQLITE_EMPTY: return "SQLITE_EMPTY"; - case SQLITE_SCHEMA: return "SQLITE_SCHEMA"; - case SQLITE_TOOBIG: return "SQLITE_TOOBIG"; - case SQLITE_CONSTRAINT: return "SQLITE_CONSTRAINT"; - case SQLITE_MISMATCH: return "SQLITE_MISMATCH"; - case SQLITE_MISUSE: return "SQLITE_MISUSE"; - case SQLITE_NOLFS: return "SQLITE_NOLFS"; - case SQLITE_AUTH: return "SQLITE_AUTH"; - case SQLITE_FORMAT: return "SQLITE_FORMAT"; - case SQLITE_RANGE: return "SQLITE_RANGE"; - case SQLITE_NOTADB: return "SQLITE_NOTADB"; - case SQLITE_ROW: return "SQLITE_ROW"; - case SQLITE_DONE: return "SQLITE_DONE"; - default: return "UNKNOWN"; - } -} - -const char* sqlite_authorizer_string(int type) { - switch (type) { - case SQLITE_INSERT: return "insert"; - case SQLITE_UPDATE: return "update"; - case SQLITE_DELETE: return "delete"; - default: return ""; - } -} - -NODE_MODULE(node_sqlite3, RegisterModule) diff --git a/node_modules/sqlite3/src/statement.cc b/node_modules/sqlite3/src/statement.cc deleted file mode 100644 index 4f43048..0000000 --- a/node_modules/sqlite3/src/statement.cc +++ /dev/null @@ -1,900 +0,0 @@ -#include -#include -#include -#include - -#include "macros.h" -#include "database.h" -#include "statement.h" - -using namespace node_sqlite3; - -Persistent Statement::constructor_template; - -void Statement::Init(Handle target) { - NanScope(); - - Local t = NanNew(New); - - t->InstanceTemplate()->SetInternalFieldCount(1); - t->SetClassName(NanNew("Statement")); - - NODE_SET_PROTOTYPE_METHOD(t, "bind", Bind); - NODE_SET_PROTOTYPE_METHOD(t, "get", Get); - NODE_SET_PROTOTYPE_METHOD(t, "run", Run); - NODE_SET_PROTOTYPE_METHOD(t, "all", All); - NODE_SET_PROTOTYPE_METHOD(t, "each", Each); - NODE_SET_PROTOTYPE_METHOD(t, "reset", Reset); - NODE_SET_PROTOTYPE_METHOD(t, "finalize", Finalize); - - NanAssignPersistent(constructor_template, t); - target->Set(NanNew("Statement"), - t->GetFunction()); -} - -void Statement::Process() { - if (finalized && !queue.empty()) { - return CleanQueue(); - } - - while (prepared && !locked && !queue.empty()) { - Call* call = queue.front(); - queue.pop(); - - call->callback(call->baton); - delete call; - } -} - -void Statement::Schedule(Work_Callback callback, Baton* baton) { - if (finalized) { - queue.push(new Call(callback, baton)); - CleanQueue(); - } - else if (!prepared || locked) { - queue.push(new Call(callback, baton)); - } - else { - callback(baton); - } -} - -template void Statement::Error(T* baton) { - NanScope(); - - Statement* stmt = baton->stmt; - // Fail hard on logic errors. - assert(stmt->status != 0); - EXCEPTION(NanNew(stmt->message.c_str()), stmt->status, exception); - - Local cb = NanNew(baton->callback); - - if (!cb.IsEmpty() && cb->IsFunction()) { - Local argv[] = { exception }; - TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 1, argv); - } - else { - Local argv[] = { NanNew("error"), exception }; - EMIT_EVENT(NanObjectWrapHandle(stmt), 2, argv); - } -} - -// { Database db, String sql, Array params, Function callback } -NAN_METHOD(Statement::New) { - NanScope(); - - if (!args.IsConstructCall()) { - return NanThrowTypeError("Use the new operator to create new Statement objects"); - } - - int length = args.Length(); - - if (length <= 0 || !Database::HasInstance(args[0])) { - return NanThrowTypeError("Database object expected"); - } - else if (length <= 1 || !args[1]->IsString()) { - return NanThrowTypeError("SQL query expected"); - } - else if (length > 2 && !args[2]->IsUndefined() && !args[2]->IsFunction()) { - return NanThrowTypeError("Callback expected"); - } - - Database* db = ObjectWrap::Unwrap(args[0]->ToObject()); - Local sql = Local::Cast(args[1]); - - args.This()->Set(NanNew("sql"), sql, ReadOnly); - - Statement* stmt = new Statement(db); - stmt->Wrap(args.This()); - - PrepareBaton* baton = new PrepareBaton(db, Local::Cast(args[2]), stmt); - baton->sql = std::string(*String::Utf8Value(sql)); - db->Schedule(Work_BeginPrepare, baton); - - NanReturnValue(args.This()); -} - -void Statement::Work_BeginPrepare(Database::Baton* baton) { - assert(baton->db->open); - baton->db->pending++; - int status = uv_queue_work(uv_default_loop(), - &baton->request, Work_Prepare, (uv_after_work_cb)Work_AfterPrepare); - assert(status == 0); -} - -void Statement::Work_Prepare(uv_work_t* req) { - STATEMENT_INIT(PrepareBaton); - - // In case preparing fails, we use a mutex to make sure we get the associated - // error message. - sqlite3_mutex* mtx = sqlite3_db_mutex(baton->db->_handle); - sqlite3_mutex_enter(mtx); - - stmt->status = sqlite3_prepare_v2( - baton->db->_handle, - baton->sql.c_str(), - baton->sql.size(), - &stmt->_handle, - NULL - ); - - if (stmt->status != SQLITE_OK) { - stmt->message = std::string(sqlite3_errmsg(baton->db->_handle)); - stmt->_handle = NULL; - } - - sqlite3_mutex_leave(mtx); -} - -void Statement::Work_AfterPrepare(uv_work_t* req) { - NanScope(); - STATEMENT_INIT(PrepareBaton); - - if (stmt->status != SQLITE_OK) { - Error(baton); - stmt->Finalize(); - } - else { - stmt->prepared = true; - Local cb = NanNew(baton->callback); - if (!cb.IsEmpty() && cb->IsFunction()) { - Local argv[] = { NanNew(NanNull()) }; - TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 1, argv); - } - } - - STATEMENT_END(); -} - -template Values::Field* - Statement::BindParameter(const Handle source, T pos) { - if (source->IsString() || source->IsRegExp()) { - String::Utf8Value val(source->ToString()); - return new Values::Text(pos, val.length(), *val); - } - else if (source->IsInt32()) { - return new Values::Integer(pos, source->Int32Value()); - } - else if (source->IsNumber()) { - return new Values::Float(pos, source->NumberValue()); - } - else if (source->IsBoolean()) { - return new Values::Integer(pos, source->BooleanValue() ? 1 : 0); - } - else if (source->IsNull()) { - return new Values::Null(pos); - } - else if (Buffer::HasInstance(source)) { - Local buffer = source->ToObject(); - return new Values::Blob(pos, Buffer::Length(buffer), Buffer::Data(buffer)); - } - else if (source->IsDate()) { - return new Values::Float(pos, source->NumberValue()); - } - else { - return NULL; - } -} - -template T* Statement::Bind(_NAN_METHOD_ARGS, int start, int last) { - NanScope(); - - if (last < 0) last = args.Length(); - Local callback; - if (last > start && args[last - 1]->IsFunction()) { - callback = Local::Cast(args[last - 1]); - last--; - } - - T* baton = new T(this, callback); - - if (start < last) { - if (args[start]->IsArray()) { - Local array = Local::Cast(args[start]); - int length = array->Length(); - // Note: bind parameters start with 1. - for (int i = 0, pos = 1; i < length; i++, pos++) { - baton->parameters.push_back(BindParameter(array->Get(i), pos)); - } - } - else if (!args[start]->IsObject() || args[start]->IsRegExp() || args[start]->IsDate() || Buffer::HasInstance(args[start])) { - // Parameters directly in array. - // Note: bind parameters start with 1. - for (int i = start, pos = 1; i < last; i++, pos++) { - baton->parameters.push_back(BindParameter(args[i], pos)); - } - } - else if (args[start]->IsObject()) { - Local object = Local::Cast(args[start]); - Local array = object->GetPropertyNames(); - int length = array->Length(); - for (int i = 0; i < length; i++) { - Local name = array->Get(i); - - if (name->IsInt32()) { - baton->parameters.push_back( - BindParameter(object->Get(name), name->Int32Value())); - } - else { - baton->parameters.push_back(BindParameter(object->Get(name), - *String::Utf8Value(Local::Cast(name)))); - } - } - } - else { - return NULL; - } - } - - return baton; -} - -bool Statement::Bind(const Parameters & parameters) { - if (parameters.size() == 0) { - return true; - } - - sqlite3_reset(_handle); - sqlite3_clear_bindings(_handle); - - Parameters::const_iterator it = parameters.begin(); - Parameters::const_iterator end = parameters.end(); - - for (; it < end; ++it) { - Values::Field* field = *it; - - if (field != NULL) { - int pos; - if (field->index > 0) { - pos = field->index; - } - else { - pos = sqlite3_bind_parameter_index(_handle, field->name.c_str()); - } - - switch (field->type) { - case SQLITE_INTEGER: { - status = sqlite3_bind_int(_handle, pos, - ((Values::Integer*)field)->value); - } break; - case SQLITE_FLOAT: { - status = sqlite3_bind_double(_handle, pos, - ((Values::Float*)field)->value); - } break; - case SQLITE_TEXT: { - status = sqlite3_bind_text(_handle, pos, - ((Values::Text*)field)->value.c_str(), - ((Values::Text*)field)->value.size(), SQLITE_TRANSIENT); - } break; - case SQLITE_BLOB: { - status = sqlite3_bind_blob(_handle, pos, - ((Values::Blob*)field)->value, - ((Values::Blob*)field)->length, SQLITE_TRANSIENT); - } break; - case SQLITE_NULL: { - status = sqlite3_bind_null(_handle, pos); - } break; - } - - if (status != SQLITE_OK) { - message = std::string(sqlite3_errmsg(db->_handle)); - return false; - } - } - } - - return true; -} - -NAN_METHOD(Statement::Bind) { - NanScope(); - Statement* stmt = ObjectWrap::Unwrap(args.This()); - - Baton* baton = stmt->Bind(args); - if (baton == NULL) { - return NanThrowTypeError("Data type is not supported"); - } - else { - stmt->Schedule(Work_BeginBind, baton); - NanReturnValue(args.This()); - } -} - -void Statement::Work_BeginBind(Baton* baton) { - STATEMENT_BEGIN(Bind); -} - -void Statement::Work_Bind(uv_work_t* req) { - STATEMENT_INIT(Baton); - - sqlite3_mutex* mtx = sqlite3_db_mutex(stmt->db->_handle); - sqlite3_mutex_enter(mtx); - stmt->Bind(baton->parameters); - sqlite3_mutex_leave(mtx); -} - -void Statement::Work_AfterBind(uv_work_t* req) { - NanScope(); - STATEMENT_INIT(Baton); - - if (stmt->status != SQLITE_OK) { - Error(baton); - } - else { - // Fire callbacks. - Local cb = NanNew(baton->callback); - if (!cb.IsEmpty() && cb->IsFunction()) { - Local argv[] = { NanNew(NanNull()) }; - TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 1, argv); - } - } - - STATEMENT_END(); -} - - - -NAN_METHOD(Statement::Get) { - NanScope(); - Statement* stmt = ObjectWrap::Unwrap(args.This()); - - Baton* baton = stmt->Bind(args); - if (baton == NULL) { - return NanThrowError("Data type is not supported"); - } - else { - stmt->Schedule(Work_BeginGet, baton); - NanReturnValue(args.This()); - } -} - -void Statement::Work_BeginGet(Baton* baton) { - STATEMENT_BEGIN(Get); -} - -void Statement::Work_Get(uv_work_t* req) { - STATEMENT_INIT(RowBaton); - - if (stmt->status != SQLITE_DONE || baton->parameters.size()) { - sqlite3_mutex* mtx = sqlite3_db_mutex(stmt->db->_handle); - sqlite3_mutex_enter(mtx); - - if (stmt->Bind(baton->parameters)) { - stmt->status = sqlite3_step(stmt->_handle); - - if (!(stmt->status == SQLITE_ROW || stmt->status == SQLITE_DONE)) { - stmt->message = std::string(sqlite3_errmsg(stmt->db->_handle)); - } - } - - sqlite3_mutex_leave(mtx); - - if (stmt->status == SQLITE_ROW) { - // Acquire one result row before returning. - GetRow(&baton->row, stmt->_handle); - } - } -} - -void Statement::Work_AfterGet(uv_work_t* req) { - NanScope(); - STATEMENT_INIT(RowBaton); - - if (stmt->status != SQLITE_ROW && stmt->status != SQLITE_DONE) { - Error(baton); - } - else { - // Fire callbacks. - Local cb = NanNew(baton->callback); - if (!cb.IsEmpty() && cb->IsFunction()) { - if (stmt->status == SQLITE_ROW) { - // Create the result array from the data we acquired. - Local argv[] = { NanNew(NanNull()), RowToJS(&baton->row) }; - TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 2, argv); - } - else { - Local argv[] = { NanNew(NanNull()) }; - TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 1, argv); - } - } - } - - STATEMENT_END(); -} - -NAN_METHOD(Statement::Run) { - NanScope(); - Statement* stmt = ObjectWrap::Unwrap(args.This()); - - Baton* baton = stmt->Bind(args); - if (baton == NULL) { - return NanThrowError("Data type is not supported"); - } - else { - stmt->Schedule(Work_BeginRun, baton); - NanReturnValue(args.This()); - } -} - -void Statement::Work_BeginRun(Baton* baton) { - STATEMENT_BEGIN(Run); -} - -void Statement::Work_Run(uv_work_t* req) { - STATEMENT_INIT(RunBaton); - - sqlite3_mutex* mtx = sqlite3_db_mutex(stmt->db->_handle); - sqlite3_mutex_enter(mtx); - - // Make sure that we also reset when there are no parameters. - if (!baton->parameters.size()) { - sqlite3_reset(stmt->_handle); - } - - if (stmt->Bind(baton->parameters)) { - stmt->status = sqlite3_step(stmt->_handle); - - if (!(stmt->status == SQLITE_ROW || stmt->status == SQLITE_DONE)) { - stmt->message = std::string(sqlite3_errmsg(stmt->db->_handle)); - } - else { - baton->inserted_id = sqlite3_last_insert_rowid(stmt->db->_handle); - baton->changes = sqlite3_changes(stmt->db->_handle); - } - } - - sqlite3_mutex_leave(mtx); -} - -void Statement::Work_AfterRun(uv_work_t* req) { - NanScope(); - STATEMENT_INIT(RunBaton); - - if (stmt->status != SQLITE_ROW && stmt->status != SQLITE_DONE) { - Error(baton); - } - else { - // Fire callbacks. - Local cb = NanNew(baton->callback); - if (!cb.IsEmpty() && cb->IsFunction()) { - NanObjectWrapHandle(stmt)->Set(NanNew("lastID"), NanNew(baton->inserted_id)); - NanObjectWrapHandle(stmt)->Set(NanNew("changes"), NanNew(baton->changes)); - - Local argv[] = { NanNew(NanNull()) }; - TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 1, argv); - } - } - - STATEMENT_END(); -} - -NAN_METHOD(Statement::All) { - NanScope(); - Statement* stmt = ObjectWrap::Unwrap(args.This()); - - Baton* baton = stmt->Bind(args); - if (baton == NULL) { - return NanThrowError("Data type is not supported"); - } - else { - stmt->Schedule(Work_BeginAll, baton); - NanReturnValue(args.This()); - } -} - -void Statement::Work_BeginAll(Baton* baton) { - STATEMENT_BEGIN(All); -} - -void Statement::Work_All(uv_work_t* req) { - STATEMENT_INIT(RowsBaton); - - sqlite3_mutex* mtx = sqlite3_db_mutex(stmt->db->_handle); - sqlite3_mutex_enter(mtx); - - // Make sure that we also reset when there are no parameters. - if (!baton->parameters.size()) { - sqlite3_reset(stmt->_handle); - } - - if (stmt->Bind(baton->parameters)) { - while ((stmt->status = sqlite3_step(stmt->_handle)) == SQLITE_ROW) { - Row* row = new Row(); - GetRow(row, stmt->_handle); - baton->rows.push_back(row); - } - - if (stmt->status != SQLITE_DONE) { - stmt->message = std::string(sqlite3_errmsg(stmt->db->_handle)); - } - } - - sqlite3_mutex_leave(mtx); -} - -void Statement::Work_AfterAll(uv_work_t* req) { - NanScope(); - STATEMENT_INIT(RowsBaton); - - if (stmt->status != SQLITE_DONE) { - Error(baton); - } - else { - // Fire callbacks. - Local cb = NanNew(baton->callback); - if (!cb.IsEmpty() && cb->IsFunction()) { - if (baton->rows.size()) { - // Create the result array from the data we acquired. - Local result(NanNew(baton->rows.size())); - Rows::const_iterator it = baton->rows.begin(); - Rows::const_iterator end = baton->rows.end(); - for (int i = 0; it < end; ++it, i++) { - result->Set(i, RowToJS(*it)); - delete *it; - } - - Local argv[] = { NanNew(NanNull()), result }; - TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 2, argv); - } - else { - // There were no result rows. - Local argv[] = { - NanNew(NanNull()), - NanNew(0) - }; - TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 2, argv); - } - } - } - - STATEMENT_END(); -} - -NAN_METHOD(Statement::Each) { - NanScope(); - Statement* stmt = ObjectWrap::Unwrap(args.This()); - - int last = args.Length(); - - Local completed; - if (last >= 2 && args[last - 1]->IsFunction() && args[last - 2]->IsFunction()) { - completed = Local::Cast(args[--last]); - } - - EachBaton* baton = stmt->Bind(args, 0, last); - if (baton == NULL) { - return NanThrowError("Data type is not supported"); - } - else { - NanAssignPersistent(baton->completed, completed); - stmt->Schedule(Work_BeginEach, baton); - NanReturnValue(args.This()); - } -} - -void Statement::Work_BeginEach(Baton* baton) { - // Only create the Async object when we're actually going into - // the event loop. This prevents dangling events. - EachBaton* each_baton = static_cast(baton); - each_baton->async = new Async(each_baton->stmt, reinterpret_cast(AsyncEach)); - NanAssignPersistent(each_baton->async->item_cb, each_baton->callback); - NanAssignPersistent(each_baton->async->completed_cb, each_baton->completed); - - STATEMENT_BEGIN(Each); -} - -void Statement::Work_Each(uv_work_t* req) { - STATEMENT_INIT(EachBaton); - - Async* async = baton->async; - - sqlite3_mutex* mtx = sqlite3_db_mutex(stmt->db->_handle); - - int retrieved = 0; - - // Make sure that we also reset when there are no parameters. - if (!baton->parameters.size()) { - sqlite3_reset(stmt->_handle); - } - - if (stmt->Bind(baton->parameters)) { - while (true) { - sqlite3_mutex_enter(mtx); - stmt->status = sqlite3_step(stmt->_handle); - if (stmt->status == SQLITE_ROW) { - sqlite3_mutex_leave(mtx); - Row* row = new Row(); - GetRow(row, stmt->_handle); - NODE_SQLITE3_MUTEX_LOCK(&async->mutex) - async->data.push_back(row); - retrieved++; - NODE_SQLITE3_MUTEX_UNLOCK(&async->mutex) - - uv_async_send(&async->watcher); - } - else { - if (stmt->status != SQLITE_DONE) { - stmt->message = std::string(sqlite3_errmsg(stmt->db->_handle)); - } - sqlite3_mutex_leave(mtx); - break; - } - } - } - - async->completed = true; - uv_async_send(&async->watcher); -} - -void Statement::CloseCallback(uv_handle_t* handle) { - assert(handle != NULL); - assert(handle->data != NULL); - Async* async = static_cast(handle->data); - delete async; -} - -void Statement::AsyncEach(uv_async_t* handle, int status) { - NanScope(); - Async* async = static_cast(handle->data); - - while (true) { - // Get the contents out of the data cache for us to process in the JS callback. - Rows rows; - NODE_SQLITE3_MUTEX_LOCK(&async->mutex) - rows.swap(async->data); - NODE_SQLITE3_MUTEX_UNLOCK(&async->mutex) - - if (rows.empty()) { - break; - } - - Local cb = NanNew(async->item_cb); - if (!cb.IsEmpty() && cb->IsFunction()) { - Local argv[2]; - argv[0] = NanNew(NanNull()); - - Rows::const_iterator it = rows.begin(); - Rows::const_iterator end = rows.end(); - for (int i = 0; it < end; ++it, i++) { - argv[1] = RowToJS(*it); - async->retrieved++; - TRY_CATCH_CALL(NanObjectWrapHandle(async->stmt), cb, 2, argv); - delete *it; - } - } - } - - Local cb = NanNew(async->completed_cb); - if (async->completed) { - if (!cb.IsEmpty() && - cb->IsFunction()) { - Local argv[] = { - NanNew(NanNull()), - NanNew(async->retrieved) - }; - TRY_CATCH_CALL(NanObjectWrapHandle(async->stmt), cb, 2, argv); - } - uv_close((uv_handle_t*)handle, CloseCallback); - } -} - -void Statement::Work_AfterEach(uv_work_t* req) { - NanScope(); - STATEMENT_INIT(EachBaton); - - if (stmt->status != SQLITE_DONE) { - Error(baton); - } - - STATEMENT_END(); -} - -NAN_METHOD(Statement::Reset) { - NanScope(); - Statement* stmt = ObjectWrap::Unwrap(args.This()); - - OPTIONAL_ARGUMENT_FUNCTION(0, callback); - - Baton* baton = new Baton(stmt, callback); - stmt->Schedule(Work_BeginReset, baton); - - NanReturnValue(args.This()); -} - -void Statement::Work_BeginReset(Baton* baton) { - STATEMENT_BEGIN(Reset); -} - -void Statement::Work_Reset(uv_work_t* req) { - STATEMENT_INIT(Baton); - - sqlite3_reset(stmt->_handle); - stmt->status = SQLITE_OK; -} - -void Statement::Work_AfterReset(uv_work_t* req) { - NanScope(); - STATEMENT_INIT(Baton); - - // Fire callbacks. - Local cb = NanNew(baton->callback); - if (!cb.IsEmpty() && cb->IsFunction()) { - Local argv[] = { NanNew(NanNull()) }; - TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 1, argv); - } - - STATEMENT_END(); -} - -Local Statement::RowToJS(Row* row) { - NanEscapableScope(); - - Local result(NanNew()); - - Row::const_iterator it = row->begin(); - Row::const_iterator end = row->end(); - for (int i = 0; it < end; ++it, i++) { - Values::Field* field = *it; - - Local value; - - switch (field->type) { - case SQLITE_INTEGER: { - value = NanNew(((Values::Integer*)field)->value); - } break; - case SQLITE_FLOAT: { - value = NanNew(((Values::Float*)field)->value); - } break; - case SQLITE_TEXT: { - value = NanNew(((Values::Text*)field)->value.c_str(), ((Values::Text*)field)->value.size()); - } break; - case SQLITE_BLOB: { - value = NanNew(NanNewBufferHandle(((Values::Blob*)field)->value, ((Values::Blob*)field)->length)); - } break; - case SQLITE_NULL: { - value = NanNew(NanNull()); - } break; - } - - result->Set(NanNew(field->name.c_str()), value); - - DELETE_FIELD(field); - } - - return NanEscapeScope(result); -} - -void Statement::GetRow(Row* row, sqlite3_stmt* stmt) { - int rows = sqlite3_column_count(stmt); - - for (int i = 0; i < rows; i++) { - int type = sqlite3_column_type(stmt, i); - const char* name = sqlite3_column_name(stmt, i); - switch (type) { - case SQLITE_INTEGER: { - row->push_back(new Values::Integer(name, sqlite3_column_int64(stmt, i))); - } break; - case SQLITE_FLOAT: { - row->push_back(new Values::Float(name, sqlite3_column_double(stmt, i))); - } break; - case SQLITE_TEXT: { - const char* text = (const char*)sqlite3_column_text(stmt, i); - int length = sqlite3_column_bytes(stmt, i); - row->push_back(new Values::Text(name, length, text)); - } break; - case SQLITE_BLOB: { - const void* blob = sqlite3_column_blob(stmt, i); - int length = sqlite3_column_bytes(stmt, i); - row->push_back(new Values::Blob(name, length, blob)); - } break; - case SQLITE_NULL: { - row->push_back(new Values::Null(name)); - } break; - default: - assert(false); - } - } -} - -NAN_METHOD(Statement::Finalize) { - NanScope(); - Statement* stmt = ObjectWrap::Unwrap(args.This()); - OPTIONAL_ARGUMENT_FUNCTION(0, callback); - - Baton* baton = new Baton(stmt, callback); - stmt->Schedule(Finalize, baton); - - NanReturnValue(NanObjectWrapHandle(stmt->db)); -} - -void Statement::Finalize(Baton* baton) { - NanScope(); - baton->stmt->Finalize(); - - // Fire callback in case there was one. - Local cb = NanNew(baton->callback); - if (!cb.IsEmpty() && cb->IsFunction()) { - TRY_CATCH_CALL(NanObjectWrapHandle(baton->stmt), cb, 0, NULL); - } - - delete baton; -} - -void Statement::Finalize() { - assert(!finalized); - finalized = true; - CleanQueue(); - // Finalize returns the status code of the last operation. We already fired - // error events in case those failed. - sqlite3_finalize(_handle); - _handle = NULL; - db->Unref(); -} - -void Statement::CleanQueue() { - NanScope(); - if (prepared && !queue.empty()) { - // This statement has already been prepared and is now finalized. - // Fire error for all remaining items in the queue. - EXCEPTION(NanNew("Statement is already finalized"), SQLITE_MISUSE, exception); - Local argv[] = { exception }; - bool called = false; - - // Clear out the queue so that this object can get GC'ed. - while (!queue.empty()) { - Call* call = queue.front(); - queue.pop(); - - Local cb = NanNew(call->baton->callback); - - if (prepared && !cb.IsEmpty() && - cb->IsFunction()) { - TRY_CATCH_CALL(NanObjectWrapHandle(this), cb, 1, argv); - called = true; - } - - // We don't call the actual callback, so we have to make sure that - // the baton gets destroyed. - delete call->baton; - delete call; - } - - // When we couldn't call a callback function, emit an error on the - // Statement object. - if (!called) { - Local args[] = { NanNew("error"), exception }; - EMIT_EVENT(NanObjectWrapHandle(this), 2, args); - } - } - else while (!queue.empty()) { - // Just delete all items in the queue; we already fired an event when - // preparing the statement failed. - Call* call = queue.front(); - queue.pop(); - - // We don't call the actual callback, so we have to make sure that - // the baton gets destroyed. - delete call->baton; - delete call; - } -} diff --git a/node_modules/sqlite3/src/statement.h b/node_modules/sqlite3/src/statement.h deleted file mode 100644 index b79d984..0000000 --- a/node_modules/sqlite3/src/statement.h +++ /dev/null @@ -1,249 +0,0 @@ -#ifndef NODE_SQLITE3_SRC_STATEMENT_H -#define NODE_SQLITE3_SRC_STATEMENT_H - -#include - -#include "database.h" -#include "threading.h" - -#include -#include -#include -#include -#include - -#include -#include "nan.h" - -using namespace v8; -using namespace node; - -namespace node_sqlite3 { - -namespace Values { - struct Field { - inline Field(unsigned short _index, unsigned short _type = SQLITE_NULL) : - type(_type), index(_index) {} - inline Field(const char* _name, unsigned short _type = SQLITE_NULL) : - type(_type), index(0), name(_name) {} - - unsigned short type; - unsigned short index; - std::string name; - }; - - struct Integer : Field { - template inline Integer(T _name, int64_t val) : - Field(_name, SQLITE_INTEGER), value(val) {} - int64_t value; - }; - - struct Float : Field { - template inline Float(T _name, double val) : - Field(_name, SQLITE_FLOAT), value(val) {} - double value; - }; - - struct Text : Field { - template inline Text(T _name, size_t len, const char* val) : - Field(_name, SQLITE_TEXT), value(val, len) {} - std::string value; - }; - - struct Blob : Field { - template inline Blob(T _name, size_t len, const void* val) : - Field(_name, SQLITE_BLOB), length(len) { - value = (char*)malloc(len); - memcpy(value, val, len); - } - inline ~Blob() { - free(value); - } - int length; - char* value; - }; - - typedef Field Null; -} - -typedef std::vector Row; -typedef std::vector Rows; -typedef Row Parameters; - - - -class Statement : public ObjectWrap { -public: - static Persistent constructor_template; - - static void Init(Handle target); - static NAN_METHOD(New); - - struct Baton { - uv_work_t request; - Statement* stmt; - Persistent callback; - Parameters parameters; - - Baton(Statement* stmt_, Handle cb_) : stmt(stmt_) { - stmt->Ref(); - request.data = this; - NanAssignPersistent(callback, cb_); - } - virtual ~Baton() { - for (unsigned int i = 0; i < parameters.size(); i++) { - Values::Field* field = parameters[i]; - DELETE_FIELD(field); - } - stmt->Unref(); - NanDisposePersistent(callback); - } - }; - - struct RowBaton : Baton { - RowBaton(Statement* stmt_, Handle cb_) : - Baton(stmt_, cb_) {} - Row row; - }; - - struct RunBaton : Baton { - RunBaton(Statement* stmt_, Handle cb_) : - Baton(stmt_, cb_), inserted_id(0), changes(0) {} - sqlite3_int64 inserted_id; - int changes; - }; - - struct RowsBaton : Baton { - RowsBaton(Statement* stmt_, Handle cb_) : - Baton(stmt_, cb_) {} - Rows rows; - }; - - struct Async; - - struct EachBaton : Baton { - Persistent completed; - Async* async; // Isn't deleted when the baton is deleted. - - EachBaton(Statement* stmt_, Handle cb_) : - Baton(stmt_, cb_) {} - virtual ~EachBaton() { - NanDisposePersistent(completed); - } - }; - - struct PrepareBaton : Database::Baton { - Statement* stmt; - std::string sql; - PrepareBaton(Database* db_, Handle cb_, Statement* stmt_) : - Baton(db_, cb_), stmt(stmt_) { - stmt->Ref(); - } - virtual ~PrepareBaton() { - stmt->Unref(); - if (!db->IsOpen() && db->IsLocked()) { - // The database handle was closed before the statement could be - // prepared. - stmt->Finalize(); - } - } - }; - - typedef void (*Work_Callback)(Baton* baton); - - struct Call { - Call(Work_Callback cb_, Baton* baton_) : callback(cb_), baton(baton_) {}; - Work_Callback callback; - Baton* baton; - }; - - struct Async { - uv_async_t watcher; - Statement* stmt; - Rows data; - NODE_SQLITE3_MUTEX_t; - bool completed; - int retrieved; - - // Store the callbacks here because we don't have - // access to the baton in the async callback. - Persistent item_cb; - Persistent completed_cb; - - Async(Statement* st, uv_async_cb async_cb) : - stmt(st), completed(false), retrieved(0) { - watcher.data = this; - NODE_SQLITE3_MUTEX_INIT - stmt->Ref(); - uv_async_init(uv_default_loop(), &watcher, async_cb); - } - - ~Async() { - stmt->Unref(); - NanDisposePersistent(item_cb); - NanDisposePersistent(completed_cb); - NODE_SQLITE3_MUTEX_DESTROY - } - }; - - Statement(Database* db_) : ObjectWrap(), - db(db_), - _handle(NULL), - status(SQLITE_OK), - prepared(false), - locked(true), - finalized(false) { - db->Ref(); - } - - ~Statement() { - if (!finalized) Finalize(); - } - - WORK_DEFINITION(Bind); - WORK_DEFINITION(Get); - WORK_DEFINITION(Run); - WORK_DEFINITION(All); - WORK_DEFINITION(Each); - WORK_DEFINITION(Reset); - - static NAN_METHOD(Finalize); - -protected: - static void Work_BeginPrepare(Database::Baton* baton); - static void Work_Prepare(uv_work_t* req); - static void Work_AfterPrepare(uv_work_t* req); - - static void AsyncEach(uv_async_t* handle, int status); - static void CloseCallback(uv_handle_t* handle); - - static void Finalize(Baton* baton); - void Finalize(); - - template inline Values::Field* BindParameter(const Handle source, T pos); - template T* Bind(_NAN_METHOD_ARGS, int start = 0, int end = -1); - bool Bind(const Parameters ¶meters); - - static void GetRow(Row* row, sqlite3_stmt* stmt); - static Local RowToJS(Row* row); - void Schedule(Work_Callback callback, Baton* baton); - void Process(); - void CleanQueue(); - template static void Error(T* baton); - -protected: - Database* db; - - sqlite3_stmt* _handle; - int status; - std::string message; - - bool prepared; - bool locked; - bool finalized; - std::queue queue; -}; - -} - -#endif diff --git a/node_modules/sqlite3/src/threading.h b/node_modules/sqlite3/src/threading.h deleted file mode 100644 index fe738a4..0000000 --- a/node_modules/sqlite3/src/threading.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef NODE_SQLITE3_SRC_THREADING_H -#define NODE_SQLITE3_SRC_THREADING_H - - -#ifdef _WIN32 - -#include - - #define NODE_SQLITE3_MUTEX_t HANDLE mutex; - - #define NODE_SQLITE3_MUTEX_INIT mutex = CreateMutex(NULL, FALSE, NULL); - - #define NODE_SQLITE3_MUTEX_LOCK(m) WaitForSingleObject(*m, INFINITE); - - #define NODE_SQLITE3_MUTEX_UNLOCK(m) ReleaseMutex(*m); - - #define NODE_SQLITE3_MUTEX_DESTROY CloseHandle(mutex); - -#elif defined(NODE_SQLITE3_BOOST_THREADING) - -#include - - #define NODE_SQLITE3_MUTEX_t boost::mutex mutex; - - #define NODE_SQLITE3_MUTEX_INIT - - #define NODE_SQLITE3_MUTEX_LOCK(m) (*m).lock(); - - #define NODE_SQLITE3_MUTEX_UNLOCK(m) (*m).unlock(); - - #define NODE_SQLITE3_MUTEX_DESTROY mutex.unlock(); - -#else - - #define NODE_SQLITE3_MUTEX_t pthread_mutex_t mutex; - - #define NODE_SQLITE3_MUTEX_INIT pthread_mutex_init(&mutex,NULL); - - #define NODE_SQLITE3_MUTEX_LOCK(m) pthread_mutex_lock(m); - - #define NODE_SQLITE3_MUTEX_UNLOCK(m) pthread_mutex_unlock(m); - - #define NODE_SQLITE3_MUTEX_DESTROY pthread_mutex_destroy(&mutex); - -#endif - - -#endif // NODE_SQLITE3_SRC_THREADING_H

    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%0D<3^8iEy$qLP@BFfEn@miMg{XmMwb7L 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 z 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%0A)S%W*H zb_72a2riKTzn{@yAHpcrXBGOJ!?9}|KK>P}# z-T)6$nspMm1wm3zbzyuB)zOx@qawjiNaHvrUvVbQ0jpJw#kdaExeG@F$(fEDo<%ZN z?H6({ZUUM1m03hQ_W9Lrh_{$7XZFk+xhC{I?eH7!T|iZLL#38n{FeL>>#G>V;1aXWKO=5}#PHeWA|0m8+qRUV6=;KZvOEoAn`^3}Uav=QKH|l4);2nR_b4 z5Lz=9I~wvm?1&fQ^hLAN%21`0@hUB!WWzpDo0 z_h6@7DE(%UT95zMgDbDm)SK8?be9+9|Go1Cr5?*=qWUc9LV=+Cd8|FXF>J&i zuK+u3{W?!-n5sV`*Cm|R%b)jI*U0)J=3I{9-V2Gco|B-HXoktD=d_fqxp|gA@?F;$ zaAJPMYn?!86weCacv^v}8b!G4mH* z;H4sPm{-+S`lq~7Qx|znfo(?SPS-i>l~1_i_!Mq!8D${7-!y&rbxOBw8891`Sd&4b z+B=y8L2Q>gicqj=M!z8Pr=+*Z-I$NoZ;SrAV@ywpky;Zd)Q+6OXZquIPblkhcV~0w;v~Se7F-hx`b2yMwujd1p6k}a z;v&U`tdL`^bknP{kOQxMrk-wiz5DCaJD?juh?pqEBE%+BjA7!aWui-E+8`HGv&_;KA%Om`N%n90wZ?tYgRoWzT3a^Dd&zwG`7g>TPzvyblY zL@lU3o$6;Fad&B8^$V2RAomD>+`YrNfj`va`1_UGcWA^4zfRoaWA;Yu*K=Z2#ZPGb zUI-%Rf+!Op%Hh= zFZ6p@q2E&a{k-3Am*{V{qJgkrQTszbBBHIuyI0~E-ZN=-8w6WdQB41~Cf8PI zgl8mr`o#w&l_Lj~73@lv>TAFqiiwC8vSjqUUkm9qE8N#e6F$-l_r>%C2AkY^h%EPc z8NN6%OVD$uDED$|dNj`1v73t1Q6dh*R?wr7uF;LANt?EGi?q@Vyaj z+0EkC-pS$yU#h`hB*&^X0*;?Wz4eF|E7o!~M2)JN_Dd8!?jS|mHeAI#KEpys`OSk5#%b@=P8lJs)>M?;JcUN`Qs|VQ^yzU+! zJzUhU!u*3)C?Jx(f9h-cD+ejrCPN+~eqk86bdJD2qkntu--d1Et z=i{5{d!`%Z2s|M+>@^`bpo zLpHfDPy@-n07~#Jv%fJ6ats-W5X55wt>y|Ww4X{;Y|EWJYs`I$miEz-SXd12v41m$ zgVY|YS7Y^Rh%rj!RlQj9UxaW!pKp$Q7|<~B;H6XY@Pt>%F1_&|CkJ{q_VU|>+ZSs` z3^n^ncl1ONn{g;(T>HyXpzH*=ygL?vbsSehJb*iLe+MQHMsMKXeR*$U9|uM>XQqNc zA$5DkGb)Zc=eiqcnF$bO)-z?5kea0SUf*kx$`s>a~uB7fpgDahuq!X3|z_%trt&0W30^W zLc<5UWf?dN89S&w4U>osHNPwoP0pVfu+q{m%U!K@Pgg^|mfHRHVt-Ka8&RH5RN>lf zd<>XNzIzP~CtWbPXVq5^6sv{u%M-qAvtQoG04Oq<}Q`Dxc0B4uUdfT+T1akgq$ zMl?qG)sUQkDP6mV@;UT>z?WHx$2`h?USTL^5E@PGHh1Ukgdcg)aCpGA*DplVYpJha z8LsAZA@$%Liv{!=x9AE~6S<`@pzO4u-P~%W$1#s+c7Ak?E(lz27^I>Q>+WM^K45`$ z)lv^Pt+v5X2YS1y7Utat0nktI2Cd5Hvd%Kl6nrdt++nfyMi88noyfay!#^ zD0@*poO#d6D7I^8@qqwyv2MM^`yr{PwPX=LXzMS?sP7>QLu&(^Phxp$chFk3kHp?% z<^A~xAMe7j%{<(VRojq9Y9F?LlGHpD;T}mGwv5pD=48y?x~7u%uCxAQ8EUlC_Jf7l ztS-!CjhRVZ!%QoaXZ7;J(qWuA+l(Zdi_y94f>lMEC61@v8m`Tt^! zX>eQCQ_!rso;?3!JEOCgsB9AI&%4K;3*8mG@tfN~PY=?#B2VG)DJT&juTJYUHj}LS*1qaDh7mw)e-ScbKyTb}Vl*p*uNWJ@fZ@G%z zQ6An0L|>zAv@zc;Q3dqyFFS@ia_+y8524Q2D?>vb(kCqCI9cX#kTIZp$nAN+W0yf+ zG69vI;R__q)IK^(RXuEf>oR-#C1k^yZ8u!xG+b$$?1Z*KZc!&YlQOxl>$J)K)xVE^ zTHlJ4*B6maBM{@lOHv}pG<{RZiscy?#1t1 zp;La(Kaomemxo>w>?FHzoI8);i;yY%)98#fV$;_=lcAQaA?L!MT^X+1`Tax2O}`{; zP2SD_JBc5V+E<#`A!?eqC|uWa$@Qfoic>?Tnutmy8^tN&4#7r9l;sIOsykALI?OlwRaT3bW7V=u6$@+86=1Motyi_tXzOIXF5jL@36+ulklBteietYFNYBHT9yau52ET(Cv<#v^>q6_)qLm>mxIx&x)EDDYk>A^S z-*?~S{w%hj0%n&v%lh1`myq>b(?A0Z>)4PpW#+hsORS6nCTTpHyT+8IoHG`scHG~K^*iQ98S7bvl@g2xGVxgDW-W6Cxu5`~s zxIxeX=F7gWz>;w#ey-ee@NshnBayLgEnyx8RDVMw9@jJn^~Xi96*~wl7Jz*KF9x@U z>N?{WY`D1_DzWrlRtIy6OBKoU84nMThmBf0{MY6gTMePwnSz7(*Za;VQ8u*OPczcw{Q7{E`5jLM#9|mV1J3S! zKQhKLtPW*<4{RhCYzUb6rshoigf||1DC&QFh|_Qh98IO%?-!s?`nkt!Hdn!LI`uQ{ zqMn=kojb97h2=H984O&2>cT2pnbYYc_chbgz#+oTk7RseC%YON0=e-*P{$@|_S4+> za$b4dc*c7wNnAUC6Hj~@rADF#U51tJp)2$mxmQh>X(|8{+;g}~w&z|qCkv@He2W;H zo=466Jub*7F;+=Zly7UJmY_uQFtr9SN*K`e=Z=)1w;y-(6@KbE+_zuW64 zdZuZ_N4C;3r;@?_`Vt-#;t@+VuvC89ScBWpVS<y&c{!QI;C?S^@LF-9$~T463?AyC?fZX(&_y_qFK7M7ETTzoX+2We;j+| z%Q}yVlCFk{+$M*OW(6Nc4Qc-~f?a6;prjaP>4a-i?sLZMMffLk7VD*x2pZrCuCe*i z^@6U@1E_SNYSW07!kuh5-y&m>kfZCgTIKQs3Y-T=T3)-2KK}Oq!6J|e z8>5bk&=!(vrk`uJ0%c$&t^5p)oJD*#h88f8bz67s3nu)Kk2kqEw^ve#{jt(#^S}kA zet6hvm8c==w7TX`+YbIT;-gs}B`#PQ(HWvnQrBY>=Jp+&s@N0J`xJ^EXp5mCGQBZp zmCh;3HH>7@wS*3?50D)!RM%W>{RV4|O~Lddo}CWK!s0_Y_qTNt_aaUN{O#y@OJl{# zlrj^Oi`U{8O9oU%UrHb?yvL=a!(D=ggmc}|E>ej*Y`XwE`Ge6As-sv_e`qeH7@F6< z24W({di28#(;r{%3hMah6tUNE$gW8sfssRm;U3iA633RGALKj~u}gw*Y>eqG#f z2eR6~EmbP5R}3PgEAle0)yBFDA$-w;f5AIiWwx*UhNW4YhgwFw4JDY;L!ZjbcN7k{@#k0zZ5Ma+Lx0VQ) zqwS%p^0Jbm#r2^L`{34MWKoIjeM{Eio%<%Dp(*o1L=Z~yDIj-f&Bjp8v!S||!`1~K z;m~;72IZhJe0tLsHzo`uqm2#_-WKd501*uqI+vLNR4~3WUtw4uXdjAh4A}d$U#eaW z2ruZ*Pxx5&8Ahw;F(yWC$A-+n`tPl29433gqeN~X9xw?8!l?E)w9^ROe5^tp$W}4YgL6&n zKlHHYul(($d$b>4-s2Yd;XeAO?umTE0{3j|qhHbNgPKLyo!V(N&ZDO9c(Mkm9Q=Lq zT1>rT>4^9nP}zb zG}i34i-3!PSb27v&__eG)8z&kw+sEL6Z%~K57XyL)90&-V(rh{#F27?^qCt4d>Fli zKUBZ!EK{|a;U>K5PjOcpSbZarfO21=`e*nfg@l9x^qP&3_)s)gaOa#8cD`Glojep% zr3KjIPbq6`>52t8eH}f6J^cs)(09f<-x`ccF_?NJ$@y(9Pq?X_iyCV>Tgz1?_?UeT zTDh*0F;L}kW>LJbnB

    !$yKCUtxH#&h)5$wSrLn-w5TM^zEc*o&b2?VSL^<#))Bwk7?qx%3* ztXF@JQqETMdFz%G?5zC8XU`AoyUkzr4}T(6_yRZnq!)>DSC)FVy@$qqw^fDR$mw^2 zszuT*F6dajbloF$P&;AxP8pO+Q4Ou4HGI* z=Uh@YKOEtnu96#9gtb3cUMHxwlVo}FHK9zyDbv2~#SV%Y^9E>QIr0Dxmd0&M%z{u;qG#e(*XT4)M z{CesbN+xYoC&2yL<7CSdjBxrj2S^j9&9hR)qqHUlys>riVc@zzh#F7EB&LNlmcVmi zHc#g17>inBuzT8j^`q^do3#_;$|BK_lh}bn-%Q{&N8x=M&+RcOt?BOm;Bfor`cadV zV(P9~zIpX*XS)GhTzrRY6-Yiu-;meyW37|yl|MiYRC#)5jy#l5;-_0B{P+J0J@P-UT+@TG>sZ72K8YE#0CW9EJ z0@2N?7q}f=X+BXa5U+H#@%}SvHn)iFvl_mO@3hLA#vZ*qgay{RwH#TE7qzwAw5v1g z;IMDXevug-dRN{}B=&zo8utr>Qh1V%oIDCrf{`5HY$i9XD{nB4HuS-dGATEvUEkT+ zZ$MLeJxn5q8y}@QVuNH95+1KI5mn9d^oXocs1@RR&Ijlw0kx3$*PWoE6+qq*ON!|% zLZ<;;sv#-a*ioo`*lg|{9oF}b(%@5hSxNvJhbeSmX1}Hb*`!u;7b@9qIMShMR?2}y zm99T`$odNp7Y2ts6YV}w;A>Jtu(nY?pCK8}C_PPAsfwmid_rBNtn7=f@_xEX$24c^ zDl=f`sH@CgIc{C$6!^cZt}?qzQ*@Qn3uWsnrE`Hp0;mEoB2`rsDE)a0T@U6wgS8G7=ZKO@pzNq1g{uQL76K@QS5nJ_Xn& zzu=O<-Q)FWM?wL@#0im<5LlvyfKHvrQk)xvP1h6Es~C>(hQgo(1kJx z`)Ea1-+nC~SJt5|Z=OxgH^k#d-~R9xpdLo(( znb4nr@Vn}oPWqiC{_e!z)u}s>|EyxO4*++`haCaa&jL%E#ReqN5M6IjUrIsm;JK81 zq{*E@!YrltCt-_c-I&ZOeg`TU{Ut;)`a&iD16X6%+L=lqody2p^wHI)+2k>+)J*E= zE_i?9xGK{?6pjwOZVC&k6Z= zC3vpROrdmH;MpY3UE%?>?M}k~oLRO`d-PDs)E-TzO`|`VI<-e%=+obuKDky*7KL)c z{(Whbt2lrKeD-o#OGd(0^*Z;`v{nV}YZy2{o!F?l4r zb1K^p%Me5chv9LvM@)k7d~AjBxuA?UNZC8)7UMI{vH%pL=feVL(iogiM#}c!BdjZt zv{Bkc((~R;UEnNZ9X(02po|+~$IYPu>bN+(_m+koK$()!r=pZxB&nCW?GLm+0k$Af z1wS#ZOyn*!x*2(}>u>b5P;NE~4S{PBvlvli$mF<7L`n}5MEXVnFA?zjm3L!XDWbtK zxsR^Ev(Z3Drr@|8PTRv}eP6#^N?Us+rZvABQ=5B}18T!F)x*O3gL>nq`io|JufE&7 z)#)2lciCK_%QqH!T$H~Q^qSDoRmOHpUEj+>I1J?FX1G2{L(P=2M`ada`HY)QB+9f) zL(|W@OykK1~(Uee?{WLfyHc*K)%S>_>7%WITH@!)}~)P0~ON=wqUX`|D}HW zSs|d(^SSDZ1T{}jT6ApnNlxO(WGWC21~%&Td`_nX!d7(CKMi}4P|5Ykfi>P=SRmm^ zYb5mZr2njXH(!gu`*T*3!=&cN@xG_9Rqg^Qo+{HeQ4Y;i(?o{3vt=TKf3#s@R;^CE zLS)!`&-u#?wPU579pVGW6v|iQ^n_HZ_xVH8&{39>oRDJrXqrO$=Hb1H#Z8xT6 zQ|5SY^V{cemi4{P2!*P1a#IT_Lpz*goLX4&DNvPgH8fb5H9#wJ}-?2OC_isc7s!demV12d1`rVZ#mPA;P7-k5L z3M@-aiCt(P*7x8@dzfC*8g51u4|A%HnuZaHP<^4&Gpfk^6|MmqKq{u~=dD@+{@E1t zjqK-JO^gP3w11eR2#67eV<(=2;=lmQAsE=efkc#=`v(s;l*o&(zm|n-Ry;-j+9$Oa zqAV7LRE%{dV-JN!5E&l{_-3Y1xbG-K0U761-6pxT-VWuYxxjXD7^K&|`4IY9Jl`(dg zP*y>ejE?DOt|Ps8Xf4XIvdD)`+hwd~DG#>B{!pw|ybaMLQAs>`EKY%H%R7sIJye2) zd4BTPK*Wkisr;HkmZz4xyFAM{ri!x!a%X9lppjIQ)q||WZ&|RZTlQ%MfPz>F zA{-jS-TkdsJI!{hv47CK+ro*r5GoTnVWF;9tyoNLf3oU(EQP5>t<|uQxfGxm zovavRa&ige&P#!yaVh+QUz|&U-za;rhb#la;8+IwIWGfaCreGoC9t%#k@IX=mB-rv zB&PJ1v`J`Kd5NKFfg>7B`ltR#;y9!53d$e0^56?OY0@R@m@>sSU?z8f8Du2PLj$zg zxi#;2A8p<~r<+ofaAt%v2UHvqqO87-PLgIJ|H_LpknL6Ra9a@M5sNbZGuMNLD=^nH z#qMbZ+49cOt;qnb`v#UfT~-*3`u6KY>?H?60MY|=c~UXQDrxHXQ4E1mXBHoj0MW+{ zFV~s_Olt@ZfjR{vUn*yX?~QslsM@7;(t}t9$!6p#;t8s1B4+F>hPJ^UC#+QzMc47B zxw!bq~%K#^g#xp6v!N2jpEj0G^ze$U_d(lP)VJnL73!ELB<2?EF5M&JK($F83wKO#FJ7}dj zy1_07dW4LY_vO+i`_hKS$g$Wyn|m8*V8Lo{ zE_3Sde}3cQNSxRF=&!o~POjxKP7$blJRIC2rM6z3)GpFuht7r0oheR+%1^yS{xb#JSd3atlMZe?}yUhk2VLy)Lk*AvsxN;)udoFKhX=%4%Nm zlstt}I782#lmbG^RHdAD6qG&+V!a%V(JhTbYl7g?_ugRw0uU;%e3>ir!dGHUYwIT? zR;S9ONsf1%i5g)6$jUQSv1;vm=RpVGYpHU#B@UDXhGnG!aea05k!T&Pi89RQ>1m{} z?A9AEVUZzl?)$#H1SJki1DabXhuqTfx{ym4DH(ISD&vUP@ z;Xl|76n9>CyS}^iR-H0_K%qmXg+Q7N%o!^F;!}XZkRThz20*^N5fI}zw*sx3%kUl3Zy8X&IH;F*@i+Fay5&@1~K_FL5WDu2za7duwfwl}}9g$m5V72jR;%8=&VN6pJ z$PmDta>o#)OdCVrS@oLC8}q;bB*t8FoAvO{5X7SS z4n5aF6Cjxz&0VBY+ZY8>i6b=k-xV%!Oh}QDy}_KSlcf$OjYt*W6vL}->BOdN$=&8C zm&ka7w>3z-Y%!}m@LHUMKjQ+0qj~F2&UC1lYCg}TU{)kwG{Dab@iJSF$Ad;&dD3`czyL7PNErh-uYvU z=G;kwuWI$f-Jc(Cnx*Io z{wsF34_Y82J`yMraY4G_fp?n=i6RUPfX!VAs&1rf`2%XLIA{p$bspJ&=!5-uJ)dA~ z4CcoX9dP?he09UQb>p}cF#(THWL@Hrj&8aW!-!9qh?@)HvG6V!ssuD-w=tH*sJrqz zC1R2{N3waa^t`KgqWpYC6yK}d*wBfkoL(H{v2HQu^)p7nG(Q*EG zkY5pnwN0~RVNLuKC#yuOSC!Obd7KzELLzR(?WU{xb*uV#(v9lJA?#p(gs>S%9$83e zL|o+`WtD$yl{b1455Z$ul*-=fd`hO=i}kW?gDLd#dMxOkZRQfubr$wpYRrFWGz)qL zq`9IcS_8o0{{E4p7Wu}Itoy)O^!&&Wul?OqpDvvn-+Ut;qb9}fgc2U(S{{i12-Q>h zR7cI8fT-l|38|O(rK2**r~$RLD@k@CMjv;<#F~XCZmjCCqUQ2*z1=piiQ~NUakVoVPkB|1ZlbuRL)j7u2m7}=>e!9x zu@Qd0JP3Q?c__+KxdTk3{07aF>t(~h#j8Sr#Q0F9{A_#A9s#s-ca4EGGKnkyzd)4t zf!6)<2!stewYS|wA#E}em)l>5GV4Z}d_0?EuV0)DfY}UtXb;7<+`#E@d==4dM}B8A zLL2T*7`_YqqApCNEm{$s%2`ERjK{-`YE{YumA*Q+DnQVx{|dUb?|*pw?RSsNz&odt zvon8$x1MLfjJ>L8|IPop@HMJNF|UPBo4Qf>%cLwa|r zsE$rh$)wpOV#1nqVA*B_Qjj8YulH_Dt<(Ee_qjn56?NUUc~J#eQ(sB%SntHF9 zhZ8z3P^=Pd&aR|B6`F_zY&unYJ&AuoH4i_bd0RU>sez7n4+3#EQHrN)x=?5*p`7x! zCK27{t;-2uU?y{+b9+gJW)C^N*{#rD{Y5-(1WcC9coR#_6yzkKi~BcVL`Gjoy8+WttKYr{S=9RLkzOv2B7@TEPPv zxy<>0Km?pdI{HoHFOGcENE$xk2pl$M5s;6d7oR72P@SJ&tQ$9}(1UEieIXk&h_Xw<T%+9ZXToZ*ojD*fSH?g{^6pM%HLQ)1W3*{b~7^Y+RO#9j^ z7LF?5n`fL4(~4%D8C2$BXT@A1RY>iVOp!v8Cq7(QWKFx(rI7~boGFQL6uG;GqEI80 zo&JQXO=mjc$M=smks6MV$xlL!$Vf$^-x+3VreJ14r80y#Z9p@OKuKqG{r!{nlgH&N z_>W|}N9$!=rSu+ls_T7^^NB2=v9sf~H{#bS0G0zpg@z+AcO&!(E1ORSq4aGzZhY|M z`zP5=PrWr8o_d*Vb_yWb=oEmv$)B*$kpirXGAB3b z-H^v=#1}dAP-cx_mKfMuM1AB!jldS_yOCTdhC~-Rx1(PVnziy3wdy&lwBn$>6bA`? zeJRc_Wm3Wm2|Sj7i#(h3R?yIEgNjPMbU*425=v=lvQqU2L#7+*h$bUlHUu_@d)tAG4)dNY3fkM-|=ZdJZt{m1$bi19kdXvj8YRlQ;~Skz^Sm)m#*yFiVS7$7t4OJq(`Owm2WuWp zIC;9kyxRqDZOv2$T0#jI$k_`gpM8jcZQRW@LQ~ z!2;WI_o!E|Ez1r1Y8$=8ArWfb_ID&R4oixx!ZI#t<+>MC0%cMkY zk649jncLs{P-AOrs7YB>$xt!b`G`dRu4QyY5~(buOB=ed!Tg`*T2i+edFKL)!n|BD zZl4|23+J_IWkcDgYMXqr%;r$&ag*cl=UJ{JN#FCd(RSiJ;<>-r5&H~~cpxwRlzf0z z-aw%XDtgNdk>kF|P~1>PzDcusWWX}6n|^0s50k2JxB~M{9J`vo!AbTye#_3w=#phV z)xjKOjpb8(m(ymK)>NsOAbkoef*vcW?Oy&Cw{RqyJI_TlzJcY?y@5hHSw(=+@&{tO zUVieJ?K5!L4h|aDIbWSbqiUxU(bZTF_TvlGc8pQ(zvHrKG}^5u4w39wvHS}NF^4M@ zt)hMSY7dT@CSBbX?fFO-Jam?!8!H&MB(RuT!(E!5A^HjG!Kr^e^oXXLjW$M3jo9gh z2L$IaeA(S-9X5q3DatRuT?4uEi2gktgm8e5ZW4OgMkYOm*lFvDLDZ1;KJ)im>UgrrS^4Z>yJ68ZV-N?xV0oi)aR$lzm`n&Z zL8P0^fj@2!#-YbKOJQ!hEA#?8A(q(djuIbHxD4zVn_L7ilK5g8FVmo46oRQPhmh$#@>~86A@2L31(I_Ek?f;3T#)ISDzmy`#VNwhRE+IF)ax!zHjR? zpD_6=R`ezN>;1C7#&emO^wkELW3E?wVYqX=CSd-qxn1pUWGGVHfZ4fRld!2At~U2c z+d~nxe9Tx7Id5%M_gm%1l?<8=rxq|&WyM8IrSV!vnnB{TjySsx370&;^18hHId-P; z>kAO}+U~AAq}8#o*L>Y*F$e(h`CMtq@_F=b}1R-1t!}Zaqh-|Ic<*RAzj&=$tK&c z_YazT?biOQ!$z|Wq`JAc)pX>ell9p#1otR2xy&CLi^ZfAjxXtD*?I$07Q-AYS#_?6 zwH5JZi$Yyqd1N6}!L4^8(+5hcK;W9y(^KHP3K#9C#ox?Wiob**d!;?KH*|GgyWQNxwyr$g>;ifE{j0Go(I=PlV9w;5$yq=8l;NlP(PAa(Zo8dbmvbh>mm*wB~F8Zz7&HJv`16zqKVjQ@53M* zH4k^U_gi-CINl7dVyOUej&5;}%qtdbKTwtbmc{a5(tqchY$Zm`Sdpg0HAk`rVr9yj z@;;O-E^ppmn~im8BGsS0OrAWRx=PevYAq9?Ga(Y!;O4EhUdKDZU~;|u0gk`r4}1Rj zS!=7j<(~%L;EvaauKU4cAknzBce3nt%l|0b#Kuz3>#uf>%p3yp)x9;S3YXHP-b=ST z|Bb0lQ|@rqTf4$nmaR!YW-8{P0eGO*@*NWBK||ds^YFzdO_FC0+&nYo;m~L2 z#*=TQv9lu=9xfxdHO!PbPS9@K^at%cDId{kC@t&7H{u)voQVq$qa~w3=g9Ao-V{#G zU;y2u+-GMBL2Rzj3(zEQJQ|1HrBa13m(O5Gl%@uUP(&A`kMX)_AFM4RC}_uU6vDCG zC-o?7VhjmLCl%e%#OSCEK4XJYud=Q(ui1M^&Kks^v&V*^{QG_>fIa z@!_R+T}tVQS$E(_3uLg>_+wMX=UR?YBqu0Kr=o4C8u|*Zd zI0`GOJ1R;+(HtvkOllqJ;bVzq))YB-ueH=9xEM5dRnrZgZF9%{fshMqW1%6PY)I-a z57{gip%xalLNsrt^Nip2;@6}$mBAe7`i1R}qpAj~R!>}_s(fn*Zi}ihI#y~oOr#l% zxB+PLElt1f?n{QyQ!L2!mXmyTe6z+6=(s?mP*lgG*DoYtd=ee3>Kj*QW3J2U0Ikj$OoCe~nO4X&5J`NwMW%h{lS2!|b3;*Qt>k?w0FNVQU+!Kmx_3KBi?RV()Yoy6;gcl+Pn~&8f=nI4~G%4uTv*wHKJ@NiI6cXQ*^PBsJ_$`0C zDc+-Ea4D#*ZwCLY?LFTNzWJs^NkuT>9!EN!xV$*B+ zPtvZh?$)x5rp;ET@Ff=VYbUW*d^qfoo_bEY7UJRo=L1zPiQ>~VF9_Nu&<84Drf6W? z;H!+~& zYW1U*Nm|7dryY9q{gb)xO7>BI__j34&)k;``=@S9uJZ4+3Ax2ncA*6L8*f87DKqwA z3^i*b$~AbOotRh`Q+D0*{kELGqGMG8WtY2v|Ll88U}&)!!PxJNk@Y&J1Niu4=EdKG zv9534#&^qlQ<)BMs5uTWOwgls!e(S{I`iUuX)p=O2b%{Jn4EK96Ggcx%D;+r+tE*h#GdN12#;Y4;$)j2d)B zQjyK>`R#t#o%H-W5asD*GYK-<)S1u^B*{bW!c3FPd#;Z|*RZ#c9M z4;Y^vNDj*&*OQ|kU78VPSBCDpUPtV=#A~s(T6v7=BJjR&L|1GZ$*X?3C@}u~e(N<5 z!-JjuUw4~(M{N%OP4X}2tr5kw)#KwzQOCrF|1cE{N~)sV8;i#npaf5d7_AogO*Af5 zLTwiA8J50sH1dXyHwDA$lA+ga_r2@3ObpmY&7xAvd_3{@S*-BJ7g3vopxpBWa3h#{ z45W&D`m=zxb*kRK%^{F#dB#bQhWk4n2kCj5awa%|rymUIC3{!feAg0k=*weS;WCI6 z0lf&iU4KB=`c`EQXR+P=tyeqEcB`>}&=l=9P?$@gh;4Q-X}428V+&I%)K(kL8{b*} zzfLcKtzT1#xt-@@g2NYI18*-Z-abNZ_~@M~9y@WZ;Q1Jw-B5ZSE14@=QYc5eN^;;e zhc1mLk?)VgwZ1?4sr_twkFGf~4DTub1_$H<*{Ahu>!`_TIIh>$9voW8^6HX(dA+ta z!~H7;%qFJ6X&V~$5eg2h=n^k!q*$cRKXn|*OpbhafH~rdw9|`)%OdOz{K#+e4|Rm% zFOmNs*_V7&)oLhF6;(J{%%>=5@#B*`c@l7D$Atw$39p+}-ln)eFd&Cd%=}5N&AMZN zk^s=d0naVWh2Ag9%EdncY4tVWuU!0?I0Rmg`rGIo>h*#@{JHpbrRLmq2E;Evv99Lc z3x`*XUOmQif7EfIJDhn&SP*d#w7YD2@Aru}*Ij=!E5d+=o4V)6@BUl1{1#fo(T)7k zt7om+ntJk+e!#b(GNTSDO5mmbnL!`85Tf9l)q`e3mb9PEpJI&PrD?^{yEf8_)_8In zE$zM9*;x_!{EAqeGu5C~lR-52-G2|wp#DxH85+Q#7>j_4E}i8rrS+V?QuZ;%X@&1E z3`-S4pp8;hZed1MvFK5{88s+_nHrr`4PQQ(N*!X4kop*XQp#M}Eqx2~H5;#vxX)R7 zKB z`MQfEv>lX04Ntj;{?PE@Uw86}$er0{iCGFb%Pi3%1pmADy8I;Gmhe*?9vxU_isZ3Q z0U0sZO0S1NE84BVi`a!={A##!e64+sd>YV5aL zKbId>*3)sIr-cZx`UBg=@1142(!wj&xIAN1+k7%Gi^lcS5W~KmX5%__;Ib)@8qF7f z-Uvpb~sKbAv!|aF#%;njnhc;=*BJ_Zf__ngP`VF%AJ=8FV?C65#Q`!M%FC4?6 zyL~3wht1~R(P4e>NJh-&gQmN}^Uw-=-YC!>Ggn~@BBMl?Bk#=DfptdVWDM`3ic>>n zRF*otT;K=$t?k#ExU`zPP;$HBIQg9G|EJk*D<2W0;y$r}?-$bIt`UnJL4}K`X7W<;qfXN)f*UKLSedd#g*sN6>V>Cm4sH-@2 zLsikYP=z&p0re1L!B&d=K|*UUPbdreE~@&_;3R^`WT0NCS^iE0)m6}uag_VS)bEjmVv zqAV0h?Kl@<>}maX;Cmdz&mH;9ZulL}N+3?Z_~ciF2RYv`-k=PP$;2@q6MCM*5MF5@ zF64D7xSt?VpV()gutOzWsKRjn^KwJj$bj+5%BaK|Na8c+QMYLc5&d7h z|A1rRFPxvmw3xecdWa`Y5Z7#i_)tSp$41r?gv&NGVM-hq&K5+9W*n%GqYasPPE66{ z)gG|;t)G`+MZFpX*S`Q+iUpNf0-!k##fM1k$nC(k(2d{;jKtCe+H!>+e`}RB;6r)2 zc>Q6|FNq89(w7=*BlHC3Y9sOJd=$Q;U8yt;A{?UTzaqpDE_DKxktr$SqnFd&@ zsu^Zm(~3^6!(_VE}N$Tq$*Af{Se zsl|3zGpn?s?g2_R{9vwcnmo@r>TGVsx=wp2pQse|9QCEk@ngE^Y0!=RDf-@d(4oD_ z5o~(i7!yI>k&pb?DoCoPRPs5dW%X`XIcytun`n*8`V-2R$J%Se&n!l_lGCasOf^%^q2PR=#1h;LIkz}oFlE)eYTfo3@OMRM!Dup|7(B!Y(L{AFyumpKAaA5J zJH$T`*DDdlsm3HrIHH)*aXCV49K+*_5YA~HLti2R)?m=}MqL=-!Q{-N>&;k~R7tKn zCwK02N9X*CLV0X+0unEmy zUq6)DDB}n4&ZQxt_q6dixA-SBjAV1jltwUJYs!b7xJ`q{QF>*ezN=x{~8=V9F!{GJH%lPB6B;KQNkFS8B zLqAthRA?igL~js-2algTLDQ~Ne0fU%{x!0jVyXGM(L6YUwbgFEZZ=*WHQO(t0XxmZ zk}e-}WL#MOUX#QIPAWH_28Y2kHVp?q&7a9Bu^F@Fisa8menn5kvN-Pp2Oq*Ic6v%5 z4#o^QwyBxUPkpbSX5Z-O{TL<k0dn;|CLaM37 z+=6k#g4PQ%8zId6a185Ptwz))V1&NQ05h2YqA{$th@<8$8o5+xGsnwiYrBPaLHKxcF&|<=AcD02;cpXWzs|cq74k> zFpOvx9!47HLfZItX9|6j^vXfx=*<*Lm++!rSa6Ts_2%6@?BzK#jRM&t>mWu6fcp!K zslojyqGC5Ei@v0xGDuAla37ONma!v_1@jQ36 zHCV1_I@bHYdN*6G$qbB>1j^XO2{k_q58JOJ|My9Nrt!Wv>fOXN$l*_s+P727TKgBKU`+dECD$hD3CMgx?!iQQxQ+3)0Zv+uZ_T~m73J)JIl z_l+%E`7l@SKW$^D51?@951u^!lxtLv%%|SOa?W5w-fa{AwSzHp!&>9^_t~(z+4tSB z#`N8L!|Jl}hIO@;iph4x3C8a&l?}qAMi2F*1K;B6X>RY2+iqw=&`Z42b!h_iQ2{S7 zt=&0DDX2-gTj&e3L`tkNi6sKG$q?pY#%U=uwE;zuN#ShHx4d+5Wl=ryb5fi zkM5JlxldrNCQ*w^uQ$Qyg-h}QDJ|wjON_p&t{CLQc$@Eqn7Ru7$$#{=j|UjUb(zi! zZ5XHu5XrB+8$oVrthz>^$!RnW#*?uxt&y3)DpMaq{mMm1NWw;6Us|Ldm%wf?KcM1p4pYW+j?Te99zEfqwA?8lri&Gs7OPZ=1%yO9 z6(jtGH|S#G;c$Fm58=_T2Ti){qC_J*?cM#Y?dRLg!{rB$;Zdh2Q-Y}0rGkn~1+>q_ z9PUSRa`k@9IhO?W$2B2pUp)AvP0p|D#7)C+pqT}k0g}pO1f0~7oPf?YrXskuf_vC`JSUQBbLlw7d=ID}b1O6DZ`BDgoGZ_s z7$TQVQUYQ=9Qwm;i|poP+8L$65?2J*SZ%skx`w2ls6HIC4Wq`7zGbYbB&sd<-;ey))$fS9|NIK4q=b z*#L7f8FY{xD}-K%|5b?cGK86THF~9PsEx& zwPAE9cGpA6L3nod=U`I?pKJnPOl-xY?&?pyh=g|b!z^>mmvVH| zKMi}4^2eN0dp=4*#=)$~YFV~!2E|DiNU6t^E#%dO58WT7`;TGA&Vx%IhQN?X8K^CR zz5xP2ixvq%yqOsY2z;$z!*9|?4&SNg0AlWNc)^>RTDbM>1*ODJy9Kf99WEgy-8L+r zX7Vn#<1OBb^48u~^Vus5+?8;FMsW2=!{;BQn4Pl9W2J0nW2t?&(;KK^oI_$*(ma?3 zh$Zc>*7Y$aC9JBFgD_;mB{#Lh6Dg^+NhmPBa%nKK2j$kdCv&-x$-(JkL=znuRX+4$ zC!`F;&~9^=M?FnvoyvZV{VT)&$$o0ATxUy-Mm=mAd3$x$?nmpvc#@KHITQG!$-k;W z_HlMooPg=WVqRxO^U@#Ppo%b7>Y`6K*GTFj&CI_o8s1Lu-)QEcRT{1<_uNv)*7<+eN}2t?-*3#^aD-Oi0CiLyfRv7a-v! zbJA147hYj3lSNK7WHx&c4$6r56mVe|;?|=R?-AO=hvYD$?AGRY=%sg*6{I`8qZaE8 z+~BZ)mdxPYD`IU$ym=M**jyTdBUUUOO44i&v^aU+nWxxlzLg;y@ zZBuabY65k<@v_wI$n{&l$qWw9?RP+oKeKHDql~v02vBRpPZ~4-SpU zR+Dz^Ve{~C|FC^13MQ&}RP6N>w@@#YsdMfaELuRu^YnluA<|=U$1WPZbIkMod3VKI z$8D2RawP37r?Bxe%ceDo&e3QibbI(9wE~{A(~u&!Zn8d87O3g)oSWO7sB6ch8~_9l z*y-f#&D!ef+fDuC8XC21G;wJaLr|Qp2)-E=Y(1x-$x`Po&{7fd)lhu+FgFLmsnZ}+ zjDD0VM2japIg4gj1I|OhmrCg621ibaVJ=Sn@s+P9bkRO2DFV{S?n8f4CstR(fZX?J3c{sXJ@k0ze;iwN=h}`we{!sJG z-Ly=O!actIga(iOkw!AT^a-rCVnqX!^AGI>$w@~3IjbL}ngP4PqofMmBS^r;9PQVf zTW5jeWXJ_?E_PVj4(qj#*i&kkz~b_H!wXL=UEjl0HOrI#p4;RvapPCg%Y$worgbnK z3TOtfIyy|^?S{6#`XPR-iM7Y8t2uJRT*~*oL2!nniE_5z&4V-rh=VgTfXEU_8@!o@ z!_=0}m&7`3JMjS-s^*Ks=7C6|6+c$H{$+IlvJ?WFxivs~qjRE*o}?`Q9UShzpd+zA z<|9oWC0_5!yNOUYL5kho*3XUazsW89+-UFC_qLxmTSx8Y?lYL3t(~1(Uab=#bui!+ z-6UCeA6SEHA9Jwu!t+p+^?M5#=W93_V@?({s>P{0-dqP9XF=XobMtlcQ`WquYEG?1 zO!8|zx&_d}d*|5PN-wttx_G1YE=3I1Kj2VMt;loC6?I_n#4qRcCgSv8$t^Sp<#9^M z1QRQs3dPGlRtitwmk-&J<@b&U`W>r8LVbwB0LZM8_V+tg8s&M0khRsUx3U zNiP8pYC0noLytnrTmv&CvBY+)z-})+efm`FQsB8%j9S3f2lk~j$C0?lIg{36PoIA7 z+%FU$ufyYHqPXzW-um}v+TRiuIk zT4(;uuBBp1o6V*b%!eQn0abe~4hFYZ-)-LNnK#0`<;`1zJL7SLp1ZwUKP|k_89;43 zxsCgEM!{Jqtnbk4yz|cSI+!j^0aGv%7?_3B%<vXommtnVR(-B8~McWuL z!t4z{YxTJ@Z06^>b=~PY@3P2w*zd5;5lK9rvsb+famI3)|6)y7K5e~PXKlRFgdcUh zA>JE?Os2{GLB>(Q@UcPX9lV_kg=Fn9y(Q56pzl{=Tq2}}DMhfW09fQx(~YBxrRngD z3+g-%^5UF?jYdM&h#$#NxVK4Dg6S*QS&13M)V_7*zj=wbTmIM|^*Mo(&r$h9_A(lG zdeH@*Z&eE11mA(1?o7reH-Yl8J_O}bK}*`sIOIce#EP!4Lkc+jaU-t$5jnn$DM|*Q zz$9W7Io*`So+e#~wUJTdRDfL?Q*;dAWOXPTV;#FNa}>`{3Ney@feFPzD5i72bRFYZ zphxjq4Bwq^54!$!1v<`=0r7@ma5KI@1h~&|f#@jxYGcq^nWxgjkOi8YeOaef*bIl3w1uFr`xoA0Vx2gT3{tlb7>!OB%fo~ZuevAIe5%MP$S3ct zr^blV{h@2(fTK!Ob!)fKG@*KchmqCUq-#;)CHoZR7HPG^!}c%Rt(WsV(Vhonb+BT3 zXyV3`#~KR6;UrRgfJ|T+pC3TX#joLnGNpPwyrfXqN+gSWY+44~j(J{G(Aa$>ISh(v z3RpNItPGJ9w}u0_ih9G6%~4q_O``db0!;HeSWu-%^r%gZtFe;NcoH9FK9CZLO}3m--~>WqS+%ql`fI3O;s6q1@XgN6q;?3f5ocD}U&JTmS) zaeDp@S&|@^#>x_T3uvL>3R!&;^L~IbTA|pR`dLv~+KO_SAC{?sIN{r4b@d300%kkK zOvZdG&KHerM-`0YAi=6fXhB7p4RFS#d*eIbAF^!~t|Dofg*jWg=u1AXpcRg6SOo>* ziOjn@M71kk3J#cC3S}^19C;pSw&g-=S->MXpK=*aTe8fN{eyBN9|u+UoohVdix+=z z***)yqOty#@J0d}2&3kYOPV=`W{*Y`2%qja(Bv!hy1anp+^@)STBf4Qst&@h(0EbA zDHfPxJPUih@Cvc;9;|33c#awM7y#X_VaZ&Lf;jFmjYc2%QSu4Jj7wKN3aJ{X`xRsf zQJsC|bGC^PLo`!>WN#Es23_r;9R-*|XGI`?i37orSbY_98COOtTp>Kzm3X}5D!?|W z>Jj)=Z#)XFVYSi?54M`qIYi?wUXRlfCF{LY+!4$r`HEd)R+hAY{+M^oMR0y0IQ~F# zB}@iA^eDelqpKDRv=N%Jl;Z=7ZI!V2$r8;hUJA$z*X4mIM%CYrm)>~gKkDWGYrmCW zR?9!M-!31QYL(^c@mh6QJkf_8iFt&yS352g7(Kn=tP%VQ>swr+$IEnZ40^ZAC2fqM z0Y?TPfa1DYEF6A2tyL>$8(pWnyFD{|v>^*i}S89&Gsf1F#$N7Z7rh=q&A>N%MR;5LAL(8exz zMs2S*nDpP$dQ3h$hHU|$75q{?K3=NJzws0v0;2? z0`gmp=mn0;oAX%i=aa0$yXsmkLk+dPt1V zwcn9%D;lTq&_ZlH$8$4#5t_uAb{0gAx0=se$S56*fUI@K+IfIw2WkfC z*4Rdl^^G_>S~?j`ddzAiF=z-j)zPS!^WA3I?<^Q$WvEFuj}zboxhiSmJ#`F94>EkKIsF07?otEuT$u7N9S_o^DXj~W#K+D$X7w+uMh(r$`Bf|r7~5c zPsz({^c9rbSiY$ha~pkJf;l*K3f1>Hv6mCk3LIjCm6e=075wrxrzo`~(m+?=EQq(u zi}Wv>tl(Gri4=E1EWPD_m*H3G?Q-e3Bwr#Cu9mlm09Vg*^5DJ;O2UYwd^)C6RIlbX z6j}g2`G1Rr-@aa6D!sowKK`&-gd;lt&maHw7CQYk6pX6JZ{n}U(?YdSfNw8z8;G&+ zKDTh5Tfj4AP_5z@_!RJdVF)8s%;74mov6dKpa(f`tk)AZx9XKzn8bHw-e7!C-<^W>KtF#G!K7@nfYjvoVENNWE3w z2dycuu-Tzn5ZLWk$CYZOx(Qz^VWBF&ocRz6<@1ii4xcK5PbL@Q;fTyE#c zdOX%Ia=G-q4SYK|kXJUFLVc%b*Bi(RvCSSCn7nG$DpgAbaGS?PMnYrz%nQ(I0+}(` z#sk*Tv?K4*r)C%r6EIS<6F(3ItJ3^EoC{$25%Eo6$T-cWfaBQ(P*&GSuVjOgAzlj& z@jj4*WWcZG7QYgO*30J34$#mS^4f;jX09KPgu}@o)=RJwgc`+rEY6q2IuTDgU5kct z*JeX7jK0>LbQrl-psXmx5N>sL5AZrC?Z|VX!*b*3Uu^$2ejk6b0@kxAm&N(}1?rfESnTSC80`UhMwV0){}F z3loig|9>D6%Xnb%D zDJcIBI@~3F5%3AaUci2jz$X;muYHp*Jk8(AY+r;SU~Le2!@-)vpnsFdJNJQdZgKKc zxhP>Jk|s`I#!-;{%IBh}F&1k@{4A0U|X)$vo!~?5QR4a=f5Vxh1iBLquXgnejWaLGt z;cbOIZv=h(PEaOq%;HUUuVl$DE|Tb zf;2^PUlfczl9yLrxJj5Dd3{0+5M_+OpwEC4x@CN=e&($;rA1mji3W;d{JcGg-wfy# zMHjRyJ`?|lKB`(oa6E8Ti*JglRG6<%mS{CjI;T}Ss(_Hd|5cs#?&0JS@W`)C@-s;0LZRO!hpDpI8Tyrm1PFdO*^sFjQV>PdgMXJBfNoCt)UX! z!I<q25L%5$R=>Kw_gng2>kqaPp5hQ8bywQ(k5(R0*0< zwp-1E`eFTO|4<%JUm3AVpi&!#PM;-w2FnA;Xel}XX?8*4^-f7j8TeP^1%pYcQO(c+3AcA6 z4YWpGe*`Ds|AJ_Tq%4T|u4+Vl8311*D~8u$;V9yKRmdXrnAx0XaT3A&;s)70iK366RBvqwqwD}HNUfqE0wa##W zfrA2^mwvPYEM!Fd_$kaG+Kus?-RjX=}0HP7=>WahyhuztTIq`trC|{6>%_bZ@661{0t`gAS@KcN*1P z4@?IsHlrhx(E(2yTNX&;6WUGO-xV3vd5vS|d&FIfRU*N9Xvoc&b~|fgkcm>Rs_L02 z`@f4-N%bVyn#pb!9w%5vR;biW7y@GRLN8HwA+)$(14{HEWr0+FhW)A`i0sP{0WXDqr9zml6g*8REt;XY%xY@jEf36><8;t@cTc+Fy4W^pF4`dsZ8Nga>0kF1tnbk$N#3P|CV2 z)W?lH8{nK-TX#vctcyZCMQi+*&{E)iY+qAY`=)kWz&&}ZrP>(<&=_Y;mH{3?*fSh2 zHsBc0^ziTnri^gSHZD1TM0a-t+xKy-u$Bp*=Q6qkpopZ+#TfN`v5jBs8F1bM#;qsM z%pOm@J@GW@kuny9&4;OWS?|FKuJu(Ipi{{;m9dtfi#gb3OG~8^8*YKTY0ef0Zi4qf z{=b3$0IVkNI5jj-#z1o?YKW`=%z4Q*I~ir9_*{4z-@F4U#PekBBsF1(1E?&8n^LO)a1H-4dO*)u?TlO| z4x>Kc%Vkk@vK*>*3zF@FSfx_UoAoNNn)+hYuix2ikdnv={G%&4F{;*53-mJGMzeB> zp(a0#s@0pgW;!ML?#%339wi?To(pokph|i~BVNVJ&+1$J5AQpd3q^7Kf#UJLRzRP?`-DYRwBY0KzvBmaCRTrY zjb-3JY|C9?OVGoqpivbdD%DN#d+`KGPMvl$N53EwhanJ;#svt$9n6b+=nc-1DfY-_ zspn%XoTygxPCIaboL>b0e%I>{!r||uXgs;Ry1x0NC_#6cM@P-WR;^fn*4S!3fAMnr ze}3B8-P=F--^13?tDk>){pHo*RZ_6)wT6UkH3BL-SG3aD9*~8Y0a3iZIqnn@21Wf22>TLE zaiO@mxv(gIvf=9B94{8UQwoMd1B$Zx^-W0#*_a|AQ(6NcZde1?1G3fk-;<~X^HJY^ zEuK`?PQ;HwuQ_E?V^*J&s=dt|HCuMHSRNFWByX6d6bkZ#0x-z0DALBt>#lkXdrxmt z69c}ennmSyO~SyV{yS83#E;DVBgOV5>iLfbKDWvlKzjpGj?6}@F1g^D(+94vR-|&Q z!dw*SWhH||jaU^iz6!;8IELwpHY5;8n)?H>+xivwPfBfb!gW)n(2pXWYWOgIf_HYx zsd2p|w*KeE!GZWE%I1$LfYcyFk9PELk2WQ~BHztY*qW;mvIHZ;l}{nt9&j7TvyN<@ z$=?CkJDsEl7Eos>%ELn$hbn8Nl5?P`^;gE!;mXizNIi%We@-SS>J9Ec5xqe|zn;Vl zD|xt7-_MERP2 zTiTMiC}Kmf_I0f&!TG-5fT=l(kphb4LktVaE>eAO$l(^*x?_xSv0w!N%i4e=6?Z+g zp5yV>^0Yc=-`xCT+2$wzabRwLjATv0fKPn#1G$=B zs*ntwu;0h-Q9wg13|rIc2mICabkL(1;$^eG1q#6p zdYuBm8}#68yeX3YvxQ|X^<=KYY0L0=ps($0H&C4FzSpI&Rh8UypIxha_uUF?Y)F=B zwfu4J_=HzekL)!tK>v);(m*hVRu6#Cp86xp{g_8b znioViHvCim$41>&(M0{fWBtER0yJzWm)Sm4iRk8^yt!qBWM+n=D~TM2dnK;CQ| zHFq)2Mf0tzAI8-3^09`MC?c^axkl;*h}H#ji{x^LOt9%9TP{Z#+DKhKjwg<6=92d-vzyloI;SHHOiKPY**wwXl@qFa_q7|Nv zuW$!GM~e!%UbhFG3LjW@8|8&89%NWHl4aS7APZd%-PfrhQ1 zVGr<2rxe@)%_%r-NifFAguV=~y0v0~zZ7%PsDlz+vA|!7Ic->cT&Vx@6Y=u!S@W*m zeFRBmYcZuQ!6+dS-bZ09LB50{Lo)3K%fyZ1Dk@&N(?-(`<){_aHgYmpI5A9%Xj8Vz zc07EZt+B4KTwbpIOZuClHw4XVY_+$h1V!avDdi;wwG8|uC;>`0%ov!?LK(D;WNWPV zBWlgWo9YT(q?$$PrpqWy|HcUTWHvmpWncsvtwr%tGF$3$P;LZNYH4cs!JvHc_xP*+ zroPBe{?HvTjQls$psADNgZ>_W)!)Tl|c z{N#@;+>9lGnh%l>@|*f1Kluay?MkHV{-8&J==cZzB0u>nP z*={*Mou)!kp3%i(DJ9Jl%|SbCY^l15%qM*46IZhq=bRVCxD~~`S`+pj=Uf>)CURNf zno@O?{D{{6U6M@QwKkdY1gEzo{?slRwNgFP&Iu zvU56Jfm9XX09RrSq&4OkqqP&B59q3&_vMBF=5(!?I|9xGzOBlUDYAEFNW36kSTk3d zmsM)qu`ifp3~(|qz(!u6qCsR&io_%*n%5$SOt8*&kjzFNo$xifu`HNFpmjJ>1UK(k zvalq0hxm=2l00c|9?G)>7%tnQO}dpR2ECS!RSu7ex`F%P1b%~Smq2d!hT)k_jE zZAG3RQiFQ28C5IQa`hZOe*@v7y0|FN2@}2+s$y}mx;fmu#{Y`!+xBe#HEK%^Ww)j4 zn$(Qo%jD*UN>LYv9(NC(?uRopIs2$I{F0^ftF@!Z(m1uvOm@Xlg7#lt#~CbH1QesC zoAlHON60idZw0HGUf2Rn5{Z}q1q0T+sm>DhNjAKgH&RJ`8?ziTO_%mJXNFH2H&0}^ zZas`-BPp3cd=YR)o6r=1WOU1cw6VHmBiOM&I`cXdcMBbJL6k=OItn2*z6hxv8O$0g zuCR@@s-FC}$iPP?!_gco2NJ@jiBq5Lf5|utbx$B8`n?-;R0{s^M&z$c*T=2NV810E zSJoV8Y>VTj46U`}$$eU>M+JC`ga)@TAjT+*i7=-WjMX~fyhZiKC z(Y5R-ezqxYISK_@R~pE3MG%oxrG~NQT2ZWtb+PtHtbLoijqh4LjD7@%lwZPjC)N`_ zp^2>Ibk9zfCVek@Csx1v4ja&ahl`P#%l_Q2=`Wvf&Lmr{_znqs0Ce3Pv5LG_E*B2# zdt3Xv@Hkl$UgvPxQto#4{gZp2!0M=2F=c+{jI>htwKrXV}@I`1mU ze1s$0Sw+QWgKi%ejzP{D9g{%=b9&y@I~owwcZlM%=8Nq;*lesT%zMY9)4aF^F2%H- zi}F!)48oiaaCCcWSo)b&VoQofR>=4b_ku_}8$iis6*1-zugWS0YFVp50lXvB zyo~0=aLtdET@S({sAh-qyzgRuio(92m9D9ct1MT){;Kdbhsfy#{c6!HCNUuwX4C>p zhKyHIJ5a}-rocMMSO|%2N7c2_y6hyYjprkOh)#UP--;)?NUivfui9TNilSn~dL9%R z^X_KZCF@^hlu;3i;8^|ns2=hB%1*@rR&a#%;2syMudBnnNX%H=(buRZGE;>~e0Vuz z4w+&3qi*=gWT;>ahix77&~BO5L}~)^x-DPnZ=xMP{E9NisEnSbO_3b#2V5I*0oK(f zwg#~A$j9T}j(3R)@|e58m_60jn>;CCie_N~OhPiVJ=JVTEZG^JG%t#%Nh zbITie^cFTFs$`$zm2Lk2m(M|0uy1sS4EvN=FgUIKUN=JS9=&dt*jJbyu8928JnD;x z*1-_fs06B*YWVN@_+p6w->khYsip*IyuT>|@lS;seth#yNgAMGOKXh&P4HGdvQWZr zR#KrssMQ~ZMDXoA6lu|O`B3(YT04>*SzAH0C6Uj|GVsL$z^cDdZTLn!Qt=?^r*0FK zEx~)M+uwW>yjAe=7_k=o)(pNUk*(>P&|V1%F`w)*D43f22kSy$z@!G1&+KXyR!eL! zY#I;SX7^U9;{soMNgNh0Q9aKaIY-eY;-A9B1pH_}<%guYbg;vk#=|^MhLVGnqFLYT zT)^mzZfs&7M4>oM(%;QxxUsh_WZ~py*N0Ml9@D4OO6IJ&+u#%5F*CQKL(Vim$q(lEsN~i-{Gj zm<-_M5ay>=l)>Vt3G}T-{{ksQf(=9v>FY+7!@s>udeAt;QGj%5RZcwIZ1r!pLy!TLS}5w*$G zOPV*U)bo6;l`wIJ=Sr_B1dqj8Ev8vx*vWZqnGA!n$U!8OGL9~rI8J3sZzb(Ql$ixJ znH5?KfM!XGs~m@d@0e9Q0d(#se>xRkfPkdB0OZoG{Z=^|!}+m7sFYfad!w`pGN{GL zMiJB9#pas`L`KmIsZqcu7|)`B)30v27P#Xv0^Y?{i3nY+dCaWmvLJ^r=DN&fx~8=s z6kdTX^KdYg0{6_ZUafn)MBC%L#k1tK;@J$NblcwCx`Q&-lDZx|lQ)AZ8aG~-?fBzj z1k@i@c0hyC^p7-|kvNI-8AvUkWw5mrRQ$?{Oh~}ECXuq(DXoa19}X!Tid0BMlM!$V zGSd>qn^e9j@K;^dIu}?zR?t05Gs8J?X#n-55OuLuj0@2*2O{i(b;Yq9i{T%D9B;tE z@ZrN|^kGAOUlAY9i@Al9q7{sp{hMxt)P ztmudapbFM3;}9>3J%0kHdoTFI*I7oidsoDIe_9P}1iB7#4=pCjLK~H z&L?hal9-P%SjZ`@6x4*95!+=gRZIm~t=^H?1>C{e;S)KN0DsL#YrSZfVR3dfRZ<&{%cF7w?wx@`C zes@<9yM)tMBn>hZ#htuGbO&;JTK}`$MWmAt>o|aa-As68(CpID%W;s{f>?v&8myG$ z3TSgqUB2`Phq@T5@@f_9sfw5_lq02$p_({p3UdHB2273xT9bBw>Rs}=-S6C@47u2Ocjb+`I&>+>T;rRKT%s9vyHsd(X>P8B zIUEaEES!&61v~Cai&>)H6~${xOGW(~QOjqp5l~>N%LXWPjE6_Y6T=AnIxId+x63@3^?>0Bo z-CO6K%9eSm6c}B+aq_Rkjqi<=lgfJK$tqc=8hG1Sx<;N6=F`ac2NWzF4|w&WR?Jlm zpeiZbki`C;yUkUf;wzNmt3&(|cJz0&>(W0kZ(`5aKhbA}z895~J$dh`G%u{*G#hc8 z*GIf$!1Ls4zihOOd6QIsZu|(zwQlJ0hh^1H{HmIX-{V%|FWE>U^!HC|lxQwyGn4iq z=K~dUrCc^zt6UCdraAg3%w^BSUdlQ7y1-xLW8hN@?~R7tawFugug{B`Jj4n@gIi|}8|Fw8C(6iN z)Wk`pNIAslLb$`U!4PBM*y@voJt{WHj1EY;u}iyBvB*j~nOm+8GC0ZMW>o2aJ;-wb zw+B_rY!GSeas}0phii*B#;`$?S;g9`P4N3qKd9{*3k4rGp}#qp zG4s%S`nBsA{5l0HPk;ote5%2v`jCM5yM7fP0sK1tZB=H1#J?>pNih4F2DN*rep#4o z5c5f@!ZfJ)l)(#*y_n1Av}>tBL}^VN=VQ@Ekx*bO$f7_gg3@~VAJt<#m>w*M$s9NA zvz=~s@)?qCdHMgI%)?QFRrjIQ#8!thByK!F=1(>aZ7!FV_C{`etl~CM((esSz*W>T zsJn(goHac3q%afJsd$OLkr|MEiH}c=rWSLoMbbyWDdraBtS)F+c+m6lc%@77XfpDp z8cG7(`K0+vT81Z8PDPAK=mt!#P3El1k-iqmoi$hNN^hZ{>5@FH@rqY1nrdApP{gle ziDl-c)ztk!7OdJloy-hm`UF;za5R5q{kE!zxo2k!DcHYBlb*|I(~E?Ew$tK;U??mN z&Ov4t5Nj`+c{6a%bbim!NT0D1-)v!&=Y(rnC6z&y7-6(m46g<{yC&z<8LALeRt1!? z6I}^pxr7U7VRqS}cUYrKgq1{5;#sme);276Hl#7{QvB|d=c(aCRa3(IQV4c;;OXJ^=1N>kkFg%Mv5 z#v>Vpl)ILb=?+KG?h!yPjrd=;Tj`wH#+ufL|4 z1RM?#H!xWglb7`c-RROCH0-{bSTl2xuv(vnKHguned%t9U2w<<+@t%YXgr!oLr$Un zR=BwaY0{CWEwf92Hl20Q%PETEc;pNIfP!zZ4^NxiOh|x$X&!`nmhXSoIXr|SK4%=w znQ=PZ6BnK*ctiaE{g?i+8*0}eDe4)ey)A@ z?JE6VqSy1w@Rt*$+JwD#@)Csyaw$Ekl4*x(}}{=cp_ zy_0A$9Q_#$`g8vlg)z$lLjmO$7ZO?Ebsk1!MOq$)(iKO|x@f8tcRG_gdK4fnqF9`Z z3wZ-~US4#M8K>5Dao$7)xG9oG=YU2=W>GLJlr12yY{`Kh=2f5+LY)ZNK=$r{#qyx1 zi1%vI=XC;~CHTn%G!nf4NN)b=Sr|Uev!lg1##vsFmvcJtK%#Y=oYL^L@07&a4?p}M zTGWuB6T!<7n()WT%1qex)z$Sf{PV4-)9K$D<3QL&$fDnmZ42_fpaV1ESH}LRALXUx zy>_5P7Kr>wiTgq}O8VKO6W=0xOzYI|2*Pu+wcTp$)VFt=hhqP^sKY4gspZ^(Qb08*ATftgefG*Z(&>A2X915^S{CkI0>lGK|+ zfop3%LDYsy5seKxm3M+QkW(c6Nli8jjNN-u24$a!Tcx1?1CILb^VbVtUsyiGE|ycbMoh$yPQYVJKN9b`Z3SSHysK|5(=@@y#Yc6;{f{* zg;@9oJ9tRB6>JtsN=YTU7Y~u1NZN*kuB%e|&V8s<2h>=p-^R{UkF2d1!{wl_?PuG2 z^}}r<0fi+KPbp`;GGR+H3+nJfi^nllul_}KW#?-abcJj?O57Cn`N5!FKEP8vvst!eF)$@&iow* zr{4If{sLHu`fjrn|CH$^OS$2@b5%Wp%kQNs4=bP{5ZNI)qz(Y9X@#Zurv;cZFE0SF zlFM!HwT|j?Qsnoi>S6ofaR0?&eb;!W9>p+Q^`p88fWPCnt;XT@!IAl%pWuODj0`PD zGoFhdHvN6)n`A^5K?DhK*%QmvD2*Yku5pB)xVzR zny;J9*GE(te|?(U*-F)zc=R;4TmPwvI|E;;@A7HuW&N$|~ezUU`KgBk* z%vbaP-X9sIj#Q~dJgP9AJU&+6pXTrzkPq5T@`e1#?^=fq^PT*O=zg-w{S+6&S7x!F z;!?)BHVBFRf|E=K1?S90$Sle;UNQq5fFQU;i4pk)J^>@{($W3_;)XSSwEc5awbOq3 zltlt!Dpx3Gz{r=$ez3OqmIn@qE36SHfMiYl-zUK2b-6Az;OhIlkNn0CV5R%{2>2S- zIiNJ(W<&V_HmQi#wZRx;gBZ@(q{#%99UZkLf26WjN#+1!GO%SmyMFtF%U~3842@Vm z;uJ;`%7Ga&Rux?WUA_mJ)4-+xK9o$A{V!ldOmfn0!U+YTrSW5*0iTlvlehU2=^>!U zuW=*~>xaLV=6VvtW<0D@3QnTdCRHwN6qby2Udk=r0~mk)6c>%BEL{>`asohjCzlL% zw082e@#_mL^HeZ$xj#x($>f}%LF|G+dZ!9;Hc^z6Yx%-b++b{w6Reb%NGQu{stkQ9 zkhm8J82>8ebBpx;r;N7$lx})Xb{kJIxmV<`r~HNnN)Js*|3DBpKNo-5HcIOsPx(c< zu!exLIZ5E3z1mhpGyeS)PvXYTtF2h9Qoo<_mX3dxx3w5p#q?8mE{N35{`Fe_WVR)y z_3D*R}6~bl!CV)LS&~v7~19yUFfx+YBbn}@|C%*J4Dz)Tf$E*-M+TT4u>45ssXy6j& zUKEzpO2O~--L|R=f12O%Rs2HrXr2dA3pjTYIq`O&OsXHc6HVy9K3ip0v#y#N8($2} zU__`|#&sR|(MDdWmSTAmRrsi8rd++86$+0@61nwVzsQ3ult4j30XnY6IR>N-K9cv= z3UxU~tDAy>pg1@zppUc)5s!J*@EdiUbFeKsxx)#_zX5J!oHE+Ak_V6nKG6dX21RAX zXo7L77Bv-6@}u7OW;p9pBr~Kv_Il`cb;DX@G~<}-i46_g5Nb%{L4k@o^VfCidgR2> zq3xWv74Zwjs)|IV+XL=vg|vSdm+Qg<#;_`N5W2m*K2Rmke3oOvWt=8%iPG+<$wrM1 zxl!Wem`e-|F5+3?Weog=y6NzZizKPG%&U3LYYuO&Go~8{bjVOa#9J#j---Jbmo_X1 zHEB|L4?BkVcMii%wg(6#r*uhPi*-S`=%F=9303kiMF=A|M1+yGv>L4pZ%XRw?cb9~ zv(Stu>_jrPBwDioA_}^s&N5P2Yo`fn46D-TI`YtnjoiXhwiVcBhJdyxyqLrptR*F1s;eW)sKO@z{MDVT=4iJpUcUi-=JvvYJ&9cRS#lnVa%Z}T#gs2t7IA-JkSq6 zfmRpEZ@lz0fp8o((FB&D7g;)AlW^23mC7bd%;ZN^AZo(bg3L~-APLc!jR>#Hs=m1{ z$kaq^#1s+cU8e#xB};=AuVpQ)+Inv6oVzG4D;kO-vv^W9T`Kap1o60FI4SZp z6e?hrQCrOK7YadMY$`zH%3`fs$%e~n6Box5a&x}RM>g2r=9HcyxCRn57?RRN(#7*o z?c>4{>sOKVeVRKfW7}=eiJdX$vK>|U9JnUkreBF!mxaw4SCawds>_wZeJ35JTF*3F z$7VIQYNU`a1Si?+Be5z>9PzSX!&Mi%qX(t+zdLApiM*_7*bqBW$@NBR6-=-~vHUVn zN|_m#FDr-Pm_F~G!Wm*o)9}a^$4z)9P8;)G(21)J!^aCJkF%)^r7&V~s*0gOnHP`# zaG-cqVtRo;qMKxY5X-@Idl+9MP!^IGbv(ENsYWi^I*wg)+)Eo9uamel1D-|dfN zLT^q@^p0-H%}Z`Tp{}_xpONT?k{U;n(YJ2Rsoi8R5P?9hF1nH7G_T~jtMlB#iK*B~ zbUC+BRy)MLjan$YSDN=*Tu-duE~VgP1=d}cuEo53PF7`?(DkXuMy2$uOp(t*RJ0-uB7hac?7+VE9Agj+;9O(6&G($B zzQ*Dt?)kRG8a?CH63GlisC6;y6;`BvhSr)&p4!*4C&gTeIL^jd50@tHoek=MWX}pq zeB(hgsHm{Clc-9V4uHelNR3AcLnd14!>nQ_q8wrxEj9=nv%UR=a$VCd7?gZYUyf6Y zdGDw=$t3tvx>M3-_b_;k+L@8+8Nc!DCT@e>wWE?4PP)GZa!{j6#EryBmb?wBp}3{&Bo zS*9c1qS{X5E8lx(k!odL6#%ggNAHv=Rd2ow%pwlQVY7u=KD3;M`sEc0kR5G8lPtvS zqtU!Kor||7BN?2DH*`J$v-g%A1gQOTsF(%RHN?WiSzrnVa=cB@ai_=ap<$1kpr2P2 zqa9s1U&A*X@8n>{09nJDM4{j?zoio_ZV2>*+3~IqoDJz!BtY5wq&{C&s?VnA-1QYjmX>-opM03z} zDBC}CCHoe+iWxiu-JGDt35f}FJc0yPkmFa#Z=7_JvC&7KGK|W@-10UL=Gto}kwO4l z8GEwE3d=ZVzoo`hJm_-F>hQhPas@wZWO1i#bjEWgxUwyh;OZ*I-YIZPG25HIo{AeJ zov}JzN890&zn|p-_i5A)Bp2N%amBp1*dJ&$IXiE$a0*gZIKCjwxxD|VKq;xm65?5$ z)53V6vVmYY5I9-_yaQFz;NXUW)g%9U74zU-zdK>=W`N8v!lE^Yc0;53X?-f|W|ZSO zuFIm>kwl6sC#^|rb7<*HkbBqJG`OSEgCch9urCi6rN0St{YsDAQyFcSyeOLVWzr73 zPo;=}9=bIUhui4^ohQM*MBFfPOUh(D9H%*V%{6^0<(@;8nx*Q|HgzRKUt?J-7E`Lr z_yEx4A5Ym~O!H$sj-h&y7IUb5$!Y@<`@BPIbH}2(WHiP|RMY}^{DBG9AW(Rf1S*r*erP$1~+9?@&pMoX*D zXJK&;gRwxCOzWN!FO{{tlT@hYo3uHj_UyLbp)fPG!6!X^<2&j|Ecuo5im1RNBmZ@L zi=@xJsAO1P;&L%uEy!djzAJ!QjNp7rbX581A$2|Gyz*B8oJnK@fu~bxg*^&gmEtw2 z!v(BY1rN7ycXa^MXvnI*t#&?=cva^#sefwPZ1HjX#XJG0e)!g(hf zaPPy;DCgL9xk~HR^XJ>Io2?DhkHrjeE~lh%QwwNH=t-MMJ5dq{ncXA=SO4|bi41E` z)o*#fhk6n6a43mH_N81-o2kZAr$p3ya3JaXAjdh!ROunKIfLRppw>IDu{7@Fyvyl6 zc)7p#D_^m(NIc$*6?%9vIZhRqHxWwL3+Xks$kZzSG4s(kyy%A?AYM*qDS@9qE`6D>YDit5%GI$XB*( zJ{6uJ4i9L}xkm{qgO0x<;@p-0_>xTvqhxuqNEBxyp8`Y;e9Xx{_Q>nH&#^K+y6YB*qrz>R z(;ts*U|A|j&W-Jmq&Y*J5ElD}x}Vb!NPlbqwq<7by1sJ#6d(@w~0p?b%9As1OY zs(Q7@H_eO&?>{a=w2Y*Tj`FG*4_&Dnll`tAY$FPVQ!bY{AQA40aD;PhM*38-s3SWV zHD8ww{3}GE*MPp{_6J=Zt|M+GCJELT+Bn+&Xzait<(7WX?J5PIiAK6dK#wWGu{0G$ z9GWkIGP2WV;#qaaj7x-Lmea1oWEZrq5QSb^U*Vijn!K1xx4mhFFcLGqH&*buTV%BYLcvL z1-~yXmzL;RDTSy@Ii*~vNXwKuZ%EG3gJo z$btwOVK32U0w+RrPk84F%qrp9n!^_S>)Kzk47&285IuE+x%+PwbvATby?&>MhqJSL z(<+tavg>0~Y79#z)y*15H`R@yO^Rw4b5h{ApnE9pKk^S5@DSMZ;31V61@BuYsaPLS zWn6Anjgx`QPoJvVeGVk&B2{x1)z4ZhnQPcyEQ-Fz1+$KYxTMjxem@wuFT(I$#yQ|P z1CV*_!O>Y-GH59jcEMne4WgHXBIDe)CcQ=*5~r%9z%!`4b$X>v(-iT|XoW@jT}SdA zNd8B)Xk-cnerjS9G)4Lnb-Wlh;d`uLidny^pEXEx`;9v!rtbGZ@ z*WEU=ei`qV#ke*Z(v+4G{J1|Fq4p<6);)Ed6#&+c&J%oQf;uydxuC3yuKiBNaO&v* z=^O=Xx#s9)0>==8luQw9$PXd-BRPcefKzJ`aOC@nE+?P!(FW9(8Zh#sNzWRybAQ}s zjVqG;M0fRYFw`|J0{0qDqLj6|R~$8kiphV{qjL_duGed0l;lekMzAGT-$-@_E$mIIq`aN^nz2VV=yX}jf&s3IahJAUCT?$eT>G^iI=8E+^3Y; zXV&SsQmItT3NTu_4WOF3oCHgppl-n7$OnNoYaUF}Lo3UA?Lst_z&cUU>%?LjjzZMM zCFH31XiWFNJz-XNCB4SU<=c-Ux7?b^v#9B!>^C@Hv2<&68`D!~(>v7!-c$+cOmB`m z2=56*N%29WGITbHB9t#7vvNJ%nMF+wG^^#V!huVjH3irdS2TD^Uz8|ktBfqASpqUc zE$3nyr%yqWEB}buWK^fF`Ftoc=i<0OvV=g8m=8-qr1$P9L2kTjQ?1JHNL>mA)LTvGE5(b<8TZ|v|FR67tDC%b<(8% z`iLK=2)<+K0ER(y=8xKB_%Jw6skG8Vt81SOyT|}fTdX7kn`2^qpEXSnBOnVYxn~BQ zgs#JY&eFwjar+oZ6-x|plGfi1{&ZTyoF(oun%Nzu9s-z?jlA^QXf;HT)nyFu2ZQpj zfBlOSr?a?)d^BE*xzq?26Z{8?zIaKpLL~?F(YcNI^hP|YJgTfcGSN#8v3T}Yww#2quVCCTET!D*fKvEq|2s#-oKdPZRV^MyiI%Nc>YZc( z%7c|G;ZO^u6(;ee&(!5ScctG9Tp9O%s43|2wKTA2v)XIvh?zWtaO(HN(M|gzIKQ}p z0T{*dYX&4nWi>bgz49kO>qrd7FYSaZESEdK^9N&t5#*A~X)xAp%z}bVe(46|0b;1} z=w=EGE^C@^r~IAdO^t#hpQ6>Zd1zAIHRY`KAOxss!b}2w9EPXCc}4-QKI-|%U?ysf z!n1Mv!uN)4vb#)A=;c{N2g+I0MjIxp+Xi-gKl0DfJHgf>Dc~l7)W%x{CsinZUE%Zw-LQ|gT>L(@YjD^k_O?UM z>6juiQUX%mmhHus8XR+?iE_e{dJJp!kkDg0(8Qm981U&M&OF|i=(Z(OE6euS+;dAd zFsUmDfRiCEn;^O{2rNCe2@F5OT4f=OgFIbz>Q(`31Q;$Up@%jrwqQqopF?ik0oE4N zB$)HMk*~3Uc4dd$3lh6X z?ex@f1qJB4L)}j=)vieHN$2*^yFGOuVUn3%crFzP4%I>O)J;%xQ-+GwW{F)+=CDCG zA-CfW?~jum%48g2ga<*VKeSIpms*kGCj&U~-?h=q_Uy(OFN<|?S`jTRUwJ*giokHk zWayYlBCkmC-~dZ*GNtFm0#mNDowUc@O38~_Ot9oF(^Ddk# zq3sW+H(09!X6YhL&46p`%sg)ly`Z)DzOQ`eUVD`LKwD+={!;tQq|w^Y)on!TxZ9Gq zKpAI4rf{TxsY;irVbj(nOSbE6}@rZ1;vd35PgUV!-?+s!XjgsmC zc>{3p42%}$aY|_ESYWi-aG6kz$D%YofefSiY%-3Upz78EH;%$o>>oB2Y=9w>WU@uek;H)2UL?AENq+)fXGZVKKc--k znD=+LkJ?+!gTrQ{e$?EWTFGQER*N~a5`f7qVlw-)6e>-x?R{aP(lGAQ>W*PrX@+r^ z58@tVmJhH88HMpCVpicNkKM)b5_(qMl*ip!I^oUWES-Rvg^2tdW*{P%S%}D+c?Kd* zqU^#GuiWf$;gy?J8kpFbrPrRg%agP@qjrKx7dLzzGK(89ZUoZhVJZR%lR_XbP7^EI zMj&C*Ws$*8mQ0pKm~_d6KZCPm0%j%>IfYY^IHu5WYsl_J43k+N?=@zXN0_MyjAfXK zAiED1dCfrK-qtSPh71H2%$*QHr)DC`?v!$UnARx;GYf|r-f1|dv?OtIII*}-j@VaX z%2v@ZQ;J)sM@DhS>0x+K%&LFdw946>Sw4FV4Y!I+3~oRbqZnp3 z79O4HSf;clagI6hxXv-lk7IWEDJ?K|S|)}mJ1uz@y2`uHLc`r-N&_^Et2}vi2>UNt zo?tQy+iZZluxs!VH@42=37DBkoab2zCJT+y<-5CL!_30rCYwo^EG%q@kTs|#%ybOx z%k`NU049Ybb{fc@+ZZNYTwShBSyvh+UE1(3$SiHZq!2h<4pImlFljt|4UpI!2|Ntr zD%+3FlSNZy0VbnpVp}2Oz&H!?K{CA{!=#GaZWiw1HcSQzvR%z=fdS(zpYA}qyzIdJ=GFGs$UttvWKD0N z96P2oQ^TZ%+myS9qj(A?jYWHUWH%y)nNnOjicBpoVNzIFn>&52GEBNC-wI4G$}p+2 zc(XNYiy(}%V2a#03OdM*H2IraRKjGHP1fuxn_Y8!!ey6sop7eD;>^n32*?>`M$bde zh>>n7g%(T}1~MI*(E@^* ziXcmQV8djgm@1pbFjIr!R z3Cc=)HjeDoG*t#OVbTap$C@kzCQJ&0?PBA`V8djfn9gEEQ&^O zrWu|!nXNQn(&d#m%#>bgm{jT5IVQVw43kwnp*MCGcj}ETcbeJd9dyfdvYFn3jN?oD z(@YsZ4U=8kz7lhnb{rgOH=V5VCQJsJ)D@Bgjq~_0y=!I{&zyzi;gOBNad_AsKC@9| zPGwU4=S1NgL^rc<7tdt&lU_lN!YP=~j)}INeB20Z825FeGCa>{g9VeupnYtz2O)-W z7f;{orHi}o^|WWslvSW%+@k(r6nnvBHN%8S zOU(%{7#D&hOcoNdp~-560h2Btd(LE+k6|*(lXuOG@&uDnKBXsfly~aM41b&%#R(>( z{CIRTWhH7DrwSrTg_5NujDv+YjaJ=dZJ4PdA-npxP$XfdqhSxA>1Y@x%~7LgP;xAi z95uqEOWOA4?vgf4`dpHpMbm0mFwVltmuOmH1>-~zyCY>Ih+#6M0rXVL?ttOWlr@dX zL&Y_XnTJZs!6_R@43qAO;q;W%6B8!g4DAz@JrpsF8#~f%< zFs?gR_Dq?wv^0#XH2Y9ZFHJD6!mfp#ES#~hlU`P?(n**!AqdlVt4SmPGwXa*QuMU* z(IG`E7pMe_NpJJmBQCS70pl#6w!2T4cPkk!f4C{7HH;I(W%^RW-W{125-CqPN9hzyZn~FT zvJTsG%H2X6#;v(x*Q(4xHelT4*;#6Od4@@o2bZ5)l03Lz9H+7A0_Sdt4U<+MNYAxt zt6jmQ3rA_QqEz9?Wmcp;=BAX?Fz##g^ioI)c`2A_x9Vn7T+(93Vz7MYrenxh4$=W` z>L5xOdAEd)rKVREY!jyk6?veN(^>~ewYb6*F*=DkjqVM)Vx9UZA4m?Gau0dr#YU!2 zfMj_&_DG{Gsj^kdx|*+#ntQG7{k`_~-uBTNwcd{JgEh|>r0mT795jnA~t+9xNCC&Gv*DRK5%-(kWUOcG>W}o@D7G9P&u`E)Vv|4_GT;FJC0j* zc@UPv;Y?^A7WNyx+{ETi1|%89^nWIfN68xb;?h`Tb^<5F_*bVq`|@Y}@ybo-|MNPS z(6(3UKmPbSrse-zTYvQ3>bFmf{D141|L@V`@4n>!`!oI)#koK5N0ho47eQasqthE9 z7lBx-tgThP73Jl!sLO?dKQM7=L#G5>YLvv<4?jFv!GFJ_f4`@He^|l%f~)lJ8vVOY z|30FBAFluw`23cBJ)wWUqkq4rf2s5um0nvD&+&?+1w#H6S}r~hCxb50#uZBc+^MMS z&5Fv>l}aSxDOqqP3Mh){{?M(MbO%TX{ZT)N=*$A5jM)#7v8-}VL}1@fCzwZXyh6#I z#}@)#;3qmKQmST2xT6(35PKoedoSXwYn&1hTR21}V|0m5%&PHZKIrxFZCp=R zceSaS4mkWvc~}K~IDG&FhHB&u#y9ACzS}%(yabH(XWKy7f5lEe-#*%Fwp!x({-LNt z`Gfl5(RSn2PW@0EygEGCZ#AKF{l{(QFP7fa8}0h5qkT+N-2SF40N@|$U0D}9Ink1nCBo87ryi<+~Lf_8OJ986Au#fR!TARhr`!G$rzXVFExVY8OfrhpEbglHX;?=DgqiE#y&%MzRy zm?2m2^+pNWdLuO?vLtuBj*?q6^g98x43mQsxH>zsn~ifFFgY{EB&MuhJlLK-;GkV9 zcnC!(StP*-=o^e1rUy2sA*PGz1haaO0YijJPu&D+I}JRYn1}+&qoP}|A!Ilecqv=u zTmbVshxIu-^^^q!v(8!9DJw+F_vJuLSz_3IN_5=y$6nBjxXZs%W@Jj@OD7VX1wPOz z;0u`^&0M;G!z0o|G|CvkO%ZXkc)BF9;gq#No>pWHP#$;HDIQo?1I{=MTQBU3i}854 zQLSEGT~*EplS()`ulBgksCqu^RW8Q;9xijh5T0UwUEVlo`h?3!uHH=Mk;n*6+P6r3 zyurI3M%EbvIJE6~a0b13-V4Lgig*SG9TwQFi`DhDwbk<4BcyzQ#rX+UfX+Lipes zlxQoGuup&o(sjONeuw!Z<^M!!hev+QG9h?^n+%&0R~(8eS*%0s%ZT84Z{w;8>&%G2xX>x}vf22l z{p{8D&eqoU;mi@__(8%ujlv#MBj%hqbQ4}m(ESLSKmc$=%8v=m97c@tI+*X-7|V3+ zIH;uAIT>DcPk<<(zUEjgix2Rzuw0@(02{j7deO#Q(DAV7I7uC(AXh$64%#qR7r+Tb zLo`H(#uM7NC9%1g^CPd5lfxhv)zX{&gCm%t*4vDQ1T}9ppTF9pdBqagUU(>1Auz(< zeovgU_=TtzHg$WivGZ!H*}{_bS35_D1b|;{A2x}jMs9lh1u)jH+b{qMiurGN{j3Re z2_Orr$VNc5J9XeFGT#DWJb0B|dTWQ9t+;!+Xq;0)Fgfgu7Ef`I2Sp5bHSS!%-1^r; z4{xP$096Pnpb&B)Z(t2WZ;Xn*Hc-dYpu6?v3a>9-3oyX7?Wx3g9D=5?uLeZ(#^9wFIEk)Zqq^ck9~{Acs#|FPl3%a>3L0TH(E1 zh4iyrJq-rc=;9W42M)x6H-fb+d&Vf5u+;dsT3krdw6HBt98!Feu*FnD5nIyR%7{EW z+s}^n_jl0UqgBfndSkSC$s?wE@5;N0Xde-ebv4kElPXm!7M7^ZB~e&{$!$|TK#WRN z30lN~YrT5bI$DxtjDct#y*j{}_VG%R7qbWl9e=~*XpY$#migyE?DS2xFBGt$nf*cmn(Tfx!Duc*$ z7F<`7CqY~}l2v4<06Pf3L!{h=wS0aPb~A&x6_gDy`!IWzJSQ&=ZrC`ofMjl zm-`~Gnx6;Mg;sM*ho{hgBio1 zMu@kyF(`?K(0h4uTPJaSZ+~yQQQv95+;1JFsjdY=$7C9YscsXbh$hst)&AdC`$(kg zhpjAF*o?R&VC^@4YVFipFAYk))oko6y}?a-P(OMJ2mx>XX#WtOtl>Wxb`xL04B`C} zFko5=Gc{WJSWIAzml^(ARTvG$6PHYvV)%@g?JzRlr(vjRj(XEgc9hGknX#s-PRt+; zc%$JuQ`WGKi)|1-nny49r^2;f!v5caGq(NwaDNvL z+r6LQM|REoJ6rAgVdLfY&&_NgW`f(TUw5DF?__iXbt3@LI^5qsGU$lp?i8!VtRGNF z)N6n|2P+L__t9iP2FV~?{t;cQ(5Zk?5s;clz8S?S;QWb8N2Uyw3+fP2L3@=ZX5{z7 zOW?r6GjR;3VaFSSgoagDawtR61{sL_apC>{wO%Sd_8X}1HZMriO9wmrhPuVxKJ}kD zx!hTRC!&evVMucEljZN`z-e%|c^;XQ$aXY9o)- z68_*a7=;78gAkYAD8S9PqAn?@PC|9*k-1c_^TiM6d_xAk*_ZWL+#B3+F{u>v(0 zOO+ga04b|^xg5?>`+P8I_qrsDv^$p+n?ybXu_T1%H5%};(a7_U=R5TmD7o+#l3ZFa zUy(QPl_VTd)3D>=B#H;XI3)lZo)Lh#(=iW^Bl!Zq)BwtU$2H3L+z#0c6K;zkwrahu z@mL=N^j80>g>qLIqQIMi;^tYzBXJ3MdgxT2)*IOkQXg?bSCo#3AH!z22)k;|V8e`! zRxm{c@^hz$oFWQ}cH!o_U7}rxY zma;x4=&fVLzJmH2nxm4FDLV4Tj&Gf$;#!HeQD+nk$2nv(UmYCmA07b{2sC8r4e}f` zvZ%mmE4@$rL>_$Rb4j*={Os2EwpyC^m2#_Ocirq}rcfXSgDti{^2C{cB~VO{Ca2Lj z7)$LwYCkXh-Vj6vya5GzGJ&!EeG;PTH_6#&FucHFFN$X%yGA`PxYEB!twFjx5uUG z@$vCm^}I+M5tWf>H+LFd`g~~&y+Ji0VbEIN@3LG2 zpzpB<@(cv%3)D{Ps*y13-kP-*b+4gKh_S887_Ex`3RU&_;D$j}&>(7ps*;~22cvjg zEaE@1YWkU7t4HY!yiOpKnMG^T5i6SbfHBJ(`*L51B-{{QTKX+s-F zw)SWAD{2~LBw)yi*;jr6T7Jm3Y3&eU>jh*Zt>)al}fz9AP|hRLq-v8 zM5AeS{E;Df#NEMKyDhRKdQUpRFu-?1xUwrX603-y5tsxfU_`3ZD>50Cw|7t0sG@ z%er7k6G3zOi54CQdX89)%syjC;z;&u5ooFJ#DR4?9g3IWqK1C#UWQc~_;!2JXBihC zWfQn~;eMfY1OpADO0v!5T0o6!6nz0xp}3PK##MU^SE1kl7y=98ImTb-T5!22dhUhS zt4HFww2{PrYpUuD#YN^RaHPD7tx~XC7ref_j6SlKyPmXoNVHI|rVpsaDz2WHp-J!! ziU$WB&d=(Lc>aX30;{oB3%JafAnany3j)eav?;C3O2(MNF`a)T&GCEap}Wth=`K9* z$QeTu8@=PLpLX(Es>ct^Tn^96sWNsf+hFap)!=wEzZt>2+ z3HJrQ%x*beR5~5e^W2WK+NXX@?wT1_55Z+NdK5<+z9=U#xJbj5;)k3(i zs$ADsffUwafxzbm15eq$k@XQgb$jSGb(@$%yF1BMC7PJyV(5SL#i1u43il(%VA}Oo{}vN5RjFsApQOtvj(KzAUhf6TNTH~t-(rAaTV1M ztjE^iR!D0~N@N(*D0O`=xn6K8aFrm?VpkHG)@0!SiibM^Q6m#dS}#)it>M2_A(sWE z@!R7ToT^>2-GAb+HAHptvWgk)Qhg)gA=!G&H|5m@ds@P6H9yi z=J}61KSyJn(fIojA8Wwv21rVc5)c^kMKB4dGs>ZvY@XqrBen?n=K6(} zVfsR}t4v*rnnbNy%TV{~3%5G8*`0aXy_VW;mAA!P?T=}9tWvpkkOLnf3$rNxwJFx* zeYCiOwt3XivSo6|oC=&|XB8Q<*&x)kI`KnpC?2VD8sUKv(b>ac&mUtotONrVJE~j~ z*y9SC0|H}(Bbi1H(mSUbrnVTc2N#sj+)gc=qQ{j4S%$0UA4!(Y>S#^PF$X*eWld@d z3;fI;e?9i_-Ygk~j^i?{Qux!fA#IT3O@!zF4*UURP0}O1wCPf|u&|JR+EF*EBGw9n zKAG2;ldY3C$8^AMp(a<(Lhc!WWdBQSp&LmRX`}M(0ys#t9zuZ-FtKqtlnTY^k3(`x z#V{hS6asrA$v2Wg2;E?ila+F$kSr=A=@~GcvgK&3kMd%6>apaCD1wyU8IkCV1a#0g zbnVHy7~6w{vs7H&ENOe1Gx!-9(-gCWm(F=<#`tfsm0OO>|6AP|eG!oOCtAb9N(7HmW?*B$|@;ZaC?58`UdEMw01p+ZE?0%D9vawy;7@)$7s$MEnc#e`m}G{mwTb z8F%~Sq)6fiD+XK4`xmO=ZDx}Mb4N>Bf?20ju~U}CRn97weYBDnAhk|e7N`%KjNx*o zZ|DS*;Y%L~_cDZu8=`_V@;i}ABD>#aJxZ1lmqwh(JE?YgVPa&fq!Javlyi-I2)Z9! zzej2WY~7}#jv^;Uog&Lj9v^-2XhQ0|#0gUE+#tv|%Q}%=Ls{$SmbX7^M%Ask%w`5; zFG8yiDnh544lYtQ&qQ^C8tJ4iCG^Iqpwg=nrNaG4cH&;3VZt?;_HP}L4^l8cdXuyL7#8=cfQHqUC#(Y`JlDJooTg}DYKHJPq;g*UH9L1)tTjMZzLwzQ)M!JsC0bk>Q2+MkIp z4Xt47aPS{P5iMIKg;}s87z|s|3sbuwMNdMUOs`Uu$*D@I!R-pjIdO(4nG}32ssm3^B zNxFBcZz*aKJQcb@32BBskd61!1>qNzA3L94Qku z5;fIia6at0ZI+X(nch2*MF6QABd|M=vd%;T_@E5|YCn2{qP4k~1j+W1!$Lp*4quwqwUVTn)c=*$=^N9fG>c@{ zYBu20C$V+h+IhEoQeLg#e$uZtOHs0tR?FlVXmq>v!ZA5>l8c2sOsW*cZCzRG$MzT? z99=3D27|ktv%Ax^mQ!C#{VjXrq|ubS=`^*fnq8PY@#=N$%{%cvyrQnYK0HRlPTH!3 zu_u}D5kluizK>`YFzzsbfZr93ZL-bB#o>+Xh4N&8hMfGgBEDPhcpsK2V%6Gr|6E1; zH#0#YY3NjpJt?J{Diu>Ki8AbmifNBah3U7j0@)&#$TqQ5(1wR4ZIDu_otr*w?UJ8Q`#9!2GSQE2Btx?W;hPD}|5fcY`*^ zC7=!BU;l!RkZ;A#;fum)v3a&yFrJhOp9@-YBCU|Lk(spDL^_l%HfxI0!kNKf*s{}# zbXAhhN~h=4DmKre3o?Fl9DZZ2dbv5o1D(! zw7LREmkr4$8S|%&fj!m;FRu!e?jy$2z?$9vmQx<;r9{kRK&gj=X z^)k6lF=g~VIYDOTl#TnxOksvejbWJga_3;@2;+8b^RR`Dp zEAkIw11>C)g#>u|`-U&dIjHO+RS4Zoq>toGs34_JTqxzv&Fy< z2iFKa}?}#Caf>IWFXU@gF5P3x1uTr72mXUU&Ak7R*op-tn8Jum#@k?;IZ^g2Ue7%hro+l?b*F z32)&T@_U;r1w3-TE3V?PvvmyT3vzFEn$^PMKLm4m#=@orSaicyAGnp`T7g}%Ph&pW zob7W#`dV-yToKpIRi9?p4IN>}spBmegx&w!!R)H%1qzdG^!3Fy@Fc1NGORCJ1&U3v zf-Fn>svmU3qZ?6NjRaLvfRZ+J6=lDfGBFa0fvJn-z$x9zd4ZDm5nNE*5iB`_zYT28 zSJH_xZ!zRL8nWof47gH7Lr^><{D=$j4T-trk&%Z{cy>4#a7bBL5c;me{;ZlyuP;mf zx;Oq@khm2GhbOxYxFV5xDqdhBPF@OmM!E+WsP z_GCmf&Jq`+rcW**vkqEJz%9Y_qk^&53K7_Rya`NK=p~j5&+m8NsqO}s%!~nJ1|N{{ z`Qf{A^GJG_$<+=Oe-_{UGf_-I)`$)Wo6c$B^qe!41ow||a1q_X>Ly)nGrL(OwgS%q znBVSXM5a;EJfp)FPpzWK3}s|g0`ynI*wqV#H=%p!!E`rQ&O}oqhny9lzqP9>EMD@T zpg(nGfVsklRlbNK4h<&$2@^*_x;e4>%@MU@Iex_)K)qz#4(Zas8C95M(Z>@I!*W7~ z4rb_h7n4hw0Ui!G9)Z`faAc2Cut2=6vWJ7VD zh_1s8h8eKfowdtfm0|_9#;x_2APbK`1#VLtOn@e@yQV)Bozua z3fpuHOh!XvR14K$ZA3mF7G^pUrh!gZHDSJp0a1`=INsM+w9knaHy6*)H*ck2AR;tZ z&lLX}t*1};9r1H&KMBnO;&qAL+w}Z78;pyzqF6q;elhlpq-LRQ$Zsjnq#PDMwc$g(wcdA4`ek+;=%aHB*Q6L3fOiRQnEwbYPQ$Vc0T2*cU4W%BU z0+pec%%I*A@qGxG0xoARsDe6W%8xN1GGGSq1wsvwII4R|9`8^Tk;%^|EN2;y+#!^I zv@cGbqD*wE4%Jmhtco?U`jnDlBAv#O#VTPZiZy{`n+c*DC(0j`bq>{zVkx}ul)|rm zA?%^jxu~I*`h(x`Boo!66HelZ*2p`bA}p|h3F0z-@X2Y`yw4^e&zXG}<)Y-oiYL3U z&ri1YUsps?4k+IJ6g-%wyu{bRL=z&-c^N-Q-vWDoLSJeF;NJ{MI`?Sx*YkDs06jd} zSr-i%!M^XZip>C~mM#%MhvD$OZ`T8|%moYC|79n)05aNM1Zc+C*}K7g@RoypczOMa>UDO~AO1 zLoNZAH5Fc$P|VaeIo{k71kGTZupVCYZctKrLB>$Gba_P8C(2NI9d-4@QiJc2GesIv z{Iw)BI-k9~WJDL-lx2eHGTtc~R9Xy^6bR%3_dQ7;aTiHs5AmsxB?ran;xx^Vdz zrBB1u4Dcr25ZomOlgSASj5nH~p7JeW=eZybT3t}>W{u!x+L!FnE6bh1(9alfYlP=S7TZk}h zjgy(iS`zBbk|Nn9dMs%*JeJ@1u_ov6LVxF1NBi*XXrF&D-b;zcw);4yh!IQDu+qb+#SU z@eCjdRaJ_&aJ{%%vPFj0>$3=lv7rxF1>21rDYAis;5uPb#8@KU0I6(8mXc(^j*aqV zt}_0U7&Eliq_QGjS2jjjf3Y)U502D{dr52=u5{^sDr7@q(ouq}Wjm3nfVGjs6WjSA z6S%OjpnFszQBEOQlZVwG`zmt}45Zm=o7z5Uo-* z6YD^>Rvi|wvz?-z>d1sm%{!in84$-Y>pVGgSuHmg9(6H^dxJc_X7Nq0b+s;mh8ign zt2jRz+68Ti6izN=EEl%3Z1*ON5RTSG zaHitcM>uwkjtm*2;^8EIiy~XrD`=BzJO)%|SIAhM9W&sGE)F>?298&PT5P1sEL9-{ z9l_cQ=2Gfn`ro24!{%Vn?xgX2{pR>p`DLI$5Vwx#tSL8N9^##hmgCDH!grOIs*mEwrS^Q|H|4fygWxuH~Ruud{yFDotQD*%?a*qmQ*)6I`k>7c_S{pYG z5S49doZP~(ycsro8Xfc9JH44>)YaIaR%)RG1nFlLJ3EJD#m`4M)AL$q zpWV!bw6UgFvBAb?6}xcdh%co0h>MT)$F9JBsj9G^=BdQ)xK)MqN<>j0vWq{Py-*tZVF^(Dv*dUvjp%WDbl<>yV3WYJ% zBVcnaN+D_!k(Nh~DvYb1Ov*GO+Mk-m%g)hA$&i_vCs-#(_A)c=kyUb>Tddp*^F1~+ zNyzuakW5X|n3Y2Ids>pChH>GLyq-o;P4l6%k1PvwHHp)0K{y+z#AuL8qUDBitZ#0K zhKR5$Z4hH+u1Z<-w^g2~MkAeL*)vf&s2*K>RHwcjQOKvR-%e?RE`=dS+il{LxJbGi z?S@j?FI%Ca1gQt#%lxj^jwXCQ<2b?6(`XBw#Ot(%Cem$eY7*|{Ap*^U+_Y+*AT@tu{Ca*=%}{*uWZHZQk? zl9)9|;1$pNV)81#|c$D%?TWypwb19P}r%e*#?bi0z z(c9evzT-@Fm)9fR!q6%_km;qIRh#L04k1QY?l25Gw`dO1aYxtwAPNR$Tos$!$3O3* z#*&bm!rT62?Dz2d`dMo7gZ-UtGzb;VLEr26<0(n^c3&T|>+CR?lI&20RSDSVWqQJA zPjpiLsuD-X6h1Y36+rCy~1q*~1Ntxo` z)FfU)Kj=&(36lpjY!yZ)$58fgGPGM!QloKMNj3+8Ok)W!;5fGeYJFDXjDe#gTyE^bv|P3fqgu*uh+{IQl`ZZt>t`or<9a3fm_ zw%nuuUKi~92&LBg&`e*ohh0Ol1UdtVzo{1%P(w7rNxRTQv2zQ*mI@0@y3v}l8w6!U zFRpwXdE?1wAXYa%1LcnBXj`Qwe<-1ypx_%zv_vgP)*(&{wazUtLw*~7)!z21u|bR~ za8gZV7v`;R0nI>jRtX1>b)qQYA)YKFFNDF}EPjsz%Fc#toaGu51ewTV^^(mq9IGM+ zbD|{J9g$cAW64I*hiHBTsaQK?$V_Wq9_+d$dfA57k%pST;>)9**CL~9kVY+O)|p$m zQwMr6veePY_LAcuLj^Jul4vQeSYd@HxkaKm4(2!ccv9mc&JAiw7QCMBNXkmY-mtl6 zH1MM4{VGgIGqaEve6rdIcrP6e^<=Z7tk1sdZM({K|QXZo~&an$jGW zu)_uRXloyjl_vSDEX?W=!4=L9ja3ZMh;o3Q1?zHa=Sx8`|nPM)qoLBzU@lU?$<@!saLj zx$vxFWSh2*fDBBmJ>wdMO>M}Gyg6z=+B(?VeQuX9waT;%)9RTuiMWT%xm(FOcjl3$ zN;j*a?G~-7YJE9>A0M`=^aIg84s#w%#wJTUm2wekIjH90p*xj%X2hD%vD=VvM^_C> z+upb2Rl;q+^JR`kQ-~G*iybGJFMSu7+?JVnWaRF^6-iMzUbDGwk*oD)b7ghyObhu5 zRmL50AleqjKu2kJXR}oNc-{M4(+>pwMm;<_+mv)9Nm=Sr&hmi3jtO6gLln^RLywD_ zZ=Nw%hqsq_aZz@=SS$|H*TpvZ9%0P*9xAo{@%Ng_;Ea9T-)bBlzr%2_dxt-xcWvur z>*(dqNe!~Ee6G@z;(RXP@9NSw&z5RD2;VGy;z#m#v-#~Rd2KJuJFAjSZlOi!WJtq~ zwaJx|tHinI6)Sk4w#uE!ZY9EUGBLv>Wpa+_CE&mocP!&()hvU@R24TQ`>3Rp`Xn;}N5Nb?|x zbtUCT7z`|Ip$@&(Yga{awZd$wkrG2};?1qaPD3*iX)||D$A@BC!te?vXy}fw7?ukY z8zx+Z)XfrG3$Yzy)I!lATB?u8u(wcc!_}0|CC1MOLR2EF;en6n1Ed!pqnrxf>0hNoL1V2i^ujybv-AQZkV&;1r=hu``z0pJ+-YrO`#L zg&_E)7Rv_ppr?j8X_6juo>Fkp=$(^$d`ktnrHmXT=SRR28M!WFdBo^D70pSVV#XQZ z6pZNCDyFnzZeSI`dIGLMWyW}lQ6xouGNh*{qV>OdR77hsnL2GrN-7D=!bK2DWe4oI zO=}s%2iM%1vhSxwXoxAPIxVJ+6f*LsMSc(e!fb}(RK*H}Z+f;_omoTkIGht2vD4xR zx8w3@F%0AbWO4|9Mii4LUGbwyNIyIAZt(e+=*6s-*Dl~q&&$<=SxrzQ$!C$-6n62c z{!(pKOX6QpaCFj<(EdAkWFK*-nP=SZfBx)zOis_|=%I0nf6h5;=_6M29(d5cz+%YL zU(39oE&G~z*}#9KvSvAU??}|%d)}}$9QhyM(t)~7Z!~~;9su*+q26M*iC?PqU5ubr z52BvmWtAn$dVs~2I-q~vuKVvA)jW$AZDUbH8Xe8%G23CrDm2(M4h${X+2fy&rS^!U zyl(BjE6)LUDjC{6jJPgb(f0>_-|cBj7Gi6e*(D{GhK7=Gon(4Iq3pHZOfiJop;F)= z)e)k-kGEPp+QTZDEg*taD3&MT2nA8=_>c0}lDMJ!uXirK!l#!LSJ&1>P=V4dGEyqJN~6s! zu1DqKE6JOG(~>-R-0~x3mCQE%h{)&1LV?q`E+$zy&mG1&$8stXC-^%PU+0%d1uleirOnJ*kjWe54|AQ zl9n)VZGnTD4zXCzobv*Tp(48>S3G-CLxnsu{?doF<98B^+>DD(YVmw+&$yrE>Fv8` zPadYjU0>15Kc)kYMWGyZ8KM?gOFmzD(itL)dTT)iHwMX%A$ycWP(aSqR+P)KOXOG9lx3i{r&>i*A+qrGlX=Pg24`0 zFCsl?*b{)zOVFi`!Ve5b-k3~*DTFqW<^ci~j{Wwehq46HI%}7qwfeIaE$Jn^gieQi zw>7@BjzWnDCVVzTXi4#?gc3%9Y(02~NC;f1>z25zP!z+min7eWoy4O80}$KYtfWRB zw#O1D2%l`K0MlRkuT-Gw2p%ErpBb+?jl#qsDb()4%X0IIk0}P`lJKU)d7R+Zu6o}bQ2PJg|E{Zpy^mWr9!4$??q5aCR@x5#JHY7_5 zg6c>I1Qy~Wi$pU(fs>fPd~R{`l4X{VLLq}^$+q0lWxdXu^Fsg|o5w(7lOpU*RgfZ} z7J5Th0?65ANc3VM6hz08BM_jN#61p=9!q+7&>~2xqn+b7dne^4KUb(y^eZC~Orc7a zOaX($FBu-e@ci6D7?=~pR5*U~^5xF4gzHRuPCzhIfK!SepKm3wR1iOahTsq0`nt;O ztvx$Qlnzg;&1JTOdSU$7P{cfjftXA;$*!ii>*0;NG z+QaF8ba;4@a;O@vr;(6mylE>M@B#YBk)jHTkT$xxIUI zCXPM4;S>J|H(!L@8mKFeFQa<_d4{AZB53|A%d4Qe(Ud~f8s$5$oh&MKYzYo2`Gm-1 zY}7-(HfTyN^RoRV)4(X+_+-GIh3I^&0$jj>f);uTgM#P@p;CpwBFKEMfnkr=b%GI7 z^%taK)@;;gENT&U>#Y}(raQV2y=*ij%$O-QGRiwAF+`1)uNrRaz$j=n)y4)@vdr3a zvkYlaVzx=a84-UR1J5SrSQR%2K9x!p;{g{Rql2*ypP6YS3g8J}@u>q8@9u(_Iu||J z5W$hIn`g2nNl%m2MBQ4i4T8^!%@)1azCl3nn9D zDN9%L3r|Qv4y+;-BA#q{4z`}}p)E(_#}p(ro1-(*$}Nd|j-Tpq5Vc;=elIVt$1R{s zuO&Wbxml}q{18PcwM1G-?V>#{N;rs6mHUL_c`@?b_sAJz%X`E)bwVbAye@Bwj3JsM7wV3rQxjtGxR=B@OU7DjIV0sKPRL~tpj;+~s8KIO zCMtNa`!3v1mugqT$qlVXd1>H)WjJ43&vz9B8exwh*F)Q&gy(?2Q8I0`lt&5eOqhU^ zqn}$lC{>93f-1)Tq^6wHW$wZsEK7Xvginjc#|Oq?XYWPr@fw;eyn6lSU2Avi*%Q34 z?QA-a*POzFwnLzV&z__ueD)+tD78+s?_;(-XlDwkmSA-Jk$>}S-r;F3o*_z-C>8g1 z4|Wa?OTy7N9p^ry78j!93D~+EOj^B83JIKRkQbI7uc5SpO+xmz5i)LXyVmP`7PY?D z>pot)2>brf!MA8VvUI?6k&zaX4rp3rY8HiLWq9`Fg3C@ClNh!I57iyBT^YT|*>+k_ zBEw~@bR}R z(F6HwJnX`EpiEKPzt;8+%v~K#lTDpqSX0NS!Xm%e8iHlgZTXKOLl+V{oCYT^Dn*UN z)a+JH7=Cjyc>MDe^>_`kQX;E7oS&N<4Z(DFMx4xi6}Kp@k(-vJK^&vSeDCq*^!FHX zP8c8a>?NOF)Uzj$F)`SwTVq-w8AG3|0nYkP5{jwG0;U#+B$W#?-y=q#x_$1`VDQGAA7{bIfbO9KCpb` zK}E=m5zE1m$tV{G#)0#w-Ilg4_%uTCh){kS(n@uvqeAoStcw3sv@?KJHk;w3z8M5( zMkQ3};cH7meWQ*~Djt{E z)9jFc1C~q0=)pE-Lkq8&)c_VA<}Ccn(&~tE7^iWP4~a-SjHFI%nny<|pn>0i^9+~0 z(RcMXjbKEnG+~RjYTnYKEt^`LKFfI-AQA%fZmqtyijr~_bhHJPtqG69)ggo>T!dMg zh=CNl5e!#7>T*{^4fzSKke4HGD9eeN#9PcS5|e;o{;z^@<>># zTRtf1^{2Bv=(?3;eCz;DQwbhlPuV;Y?mmbHo_1r>A{_HVXsJcEVhA5;;{Gj#>k)ZG zAD6d|;A%?&P$e`L#!}fj+H^;s<<}PP+xBSkId)0rIHarUaxCpKMv2R`DnqA!LDxET zZPsw#GP8upNw`U=vc(S+VM$)+QeGvBQxM0|T2JPReAk<= zST)u4Nc=}*kI7_cgt5JcEV1pD0mrhx-8$UchDVK8yFX^v%Rx-Qy=NkEa% z>niEahE=gHr8%V3rdMRFOy4%wA%8HNE)JsWUwCdNvB_T-7m5G9-ptfbK*CtZ&m zAHA$o9I-Hv1zu>FgrwH*6w@C6eyV&IYh!U*q*IAo$0x5;Y2CfptTN^CnHXCx&wP|w z7Ag)?#=-(K!4tM+mIwrIBUq{A<}h%= ztkqBA*{ro6lYVD+Q;Ng6j<@Ps#M&$h5XOc-2x%@e3nOzx)#6kv0XD_4y~^@-W;=)3c(Tr=z7;wxh%vd{q(`Z0m9#f#jdO1%Rkm)vZao&kdkc+%3;8XHJ%0L-`Rq)W73aWHwrzk#QHY68P zR@#kBm>5?m;fEdlnD#v?^D%;_5mrQDmy}m4QB+USbAj?LF>Q_F9RwpTq`X#9@#I__ zeloHdyFU45I=V#;0hp8@R}k8SF;O~oF5v)`c%)M`FugFo5sDkMwU8{;RJW40hl7Z6 zNz!Vk6ZGIhCPM#mAj$;ZEv{~dK&&eie28kt@st`NTr*Jo2=#*qJW55KM1w++1;}g@ zFJK>h7s}HpF0dO}UBi(PNVDv5&!Umn+B_4pOxnAV-kWUk*XumUpHDxoR98sn$!RL@bjn3AgyvIpxqM>r%B~Wjl3J zJ=7~vDUOlaiTRjQGR?V42lKp+)@nfQww)Hg2cFYphcmLnfnFvUlPGOPJ1o{ho+`Ns zE$;wc84)%#l6Z`Bf$%M?eY_kf^Ix@oSPLG-Q&S}!!xD5cIE4gV8L_}cL%ao&*tr9# z&z@ieA2O+z*L!73lZ9mG*nnylj@r#omXQj$X3v4~Ypq~iivAJ90a!x=4m5KXW=(dA z=+zk9xn@V{~Fy@(&Xahk=m;u>8vY-N-px=)Gdt|MK33OTiQN4>h-K}FApEQ2Zh}84vL7-5RRT*xs(zi6{sV)+KU+!3+a+FJb z@|1(z>ee5Aj9XAU8Zn2C(j<yRH?|HA4|W?{d#zW8$1>{6BHNaaDFFSA-=FkF&l_9< zuZjV;q-{JIaA?Tjq^0#dx!DZRaI|4jT6hcGl6!;K*A^5(2%;2e#NS*gu$d;CaBn(W z&l}rL6qAjvv-(Eg4?98F`S;~;C~xYdIHV|HRaRdyrVU2;L_em<5RJRX<6D?A49?Y= zcx*H-lM? zb)+{}*VexIW`m1cUHg&11TQEqBieQ;DGYpG4kmg`-wZlX59)zlO-3DaWM%X%d8T!= zX}v-!lm!eBC$aC36>*)lZ0a(fj#7vwn30!8Z57Sbb)gtlDhxar^C=y#t!@~-Yu{d? zCd2gEKS@XtvJll)N;sZSa7oo!QI_Sx z@bbJx)4BHa+53v>#x94+slxklDHQ)kv(4cIgEuSBMsoB-G6JQ@LR9EH*jZ{Qdp+ep z6UAb}QxxMn!?p99)o<5C85o9xljXG^m*2gvOxpmM+FS{JvfYnnecwMg;R#2oF(&6B z(F;&kk74U^ty28H32n~4*AGUw^VH||{Yy6p%__I>(c!V2h|YVAv>GirT2%t3Y6Qy+ zjung)8Z8yzg|5A5Xmyk#*BV=6hOj;Jw0Gc*QGN^?MA^o`S0z=B5Tfzh$i0N4zjv$q zMxmZ`kSBM9;o0S?e*Dd|=f~Ss3Igi6z?1;1;J?Q;-JOh(dcVT@TK(-!PE*ly(A*87X^(*h_J`ES{X-IrEZud~U22qR{@0 zp8vO=ct1ep7i?X)M8ILY_H1qS$rDqwuqtxG*m zv(&Xyh}y5nl(jPk;oLN&Sz2AHWS;q12C7omWEq`hc5G$s$;yh6={AHM=mF6Vo_=^n z-{8@c`r71Lt-kk60yfXd#05?Afl(LB-nhMtJzQ>g>z!rP_;?9-3_H4-EXc`2kLZrC za_E55%k`yZb3vS)EiadHlBCCLUqAaMF<4Uv>AZXiokPc1*;(|D6w`W^T28)x=Avi! zq-e$dB?La^d+P9slny)0J$jOM+AEj@q;RIrBG;$bL zIVcz+UP>@1`D5_}_{nGDYw?Xh+%LTWjN4K%`fhxcDLd+z5Q2QuHj5wWvxdQ+IT$Sc zBwM)f>hova?%l4%?JL)06)_bJGfTZ*WG5)uPi8l1ymV2qiz6vp{E%fqS8lJXI6b$G zTxTpfvDvyPc6}}ZeTT-VA-ldpmCZ-xx#ygFgAYphl{z?%wE-EtUH*}WUwWnu@i~Fw z`pKCsWE@H~4>|?vIrfY-8je^OPJM|3r>K@1?bOZKVphe!9AJ1R7rnFjnD4si1*fl! zjYp3RED~nEq3H(HYTpe*)GWJwU?kxjgQbE&2vAt)_M*$9+KuRNC*vOURbT>D6ieiQ z>4fuB!Q;~vjc!CZUxczRc{1W%@{CY6QCd4s&{G8oX;8(C{AQp_!=Wubb;Uq9F%l18 zX^>>hY;}4GF|&Y}pvEu*;JuqJ4|3Jj{(GtZkBPQsi{c2C0#aix5^;&R(CZ;2aVfPJ z`ioaPTiZKFt?j)Rjf2_2)XdbD(Ivlt?sav(7Hg(yq4$nJ~U$Qnf7j7o~r(wRdb4 z&^S6gKCZE%XE!C1^*4V~?fiQ?+DAkTcnhb|9v0e})HdfmLp|5(A z0bWc7n=2dqdl0lHz|M`l%~kaTt#jqGHO{8g!)6JE1Z2C^oc`rU%@DjawG0AFE#C`%lj>}|JR z?j1hg+QVsQgcjV0+k5h&aXr#H~$^`@9-tUpnPh>*c|lMyo|i&2m})7Mq*mF+Y@#_ID4Uzb)|{zNiqI zhEDt)KH`8I12jS^S46Ajj)5xz=GAMp%4O)EJeSIjyjVMxN@YV2g_T){dU&!1T&E5K zp-@cdF26(;N}Hn7L&=;duT;&=_bEP0l?@iw2&QOgsAAGImgRIs8B66$-^YSlMxxy5 zAp$qOtUA<8XuX{CSb>_X>RY&>Mr4RHU1C{qiLI!}cxe$yj+|AvOaT{-5DVgHNM#(& z1$BXemDTA1lK{!MOB*=z_y$wxCZ!Ys&*k8AQ#J~p&x~*zNhc%ZE7Nu2AGK2avw7n% z?z`psvP!){k&QM)CCzHc%&ulipt}$ng{NA6UwB%} zV3pz^fOrcoPOV_zBwouR6OTjbdT5A5wdQPi{dg^|L9?segDUqJy>e=mmU1qwAUO-O z%P?%cDMkmp@AU8>(U2S3n-oJUqGgMF>EcUZBd8qByu(ca8Fx}rQ)L()O2vnYH7uo3 zPOaDJIgARK=+14gbH_Q5PC?w;cz{k=`;Brlyy~g=Q488RN>#01I#G0~c#k{SWxJ5< zVzPQp6)ZGkO^XIn)}1<YEQ9fbx6WoFuccPwPrq2jStGQh=y!n-?ah5LK6MDJQOb zbdw_oUTv{@-DCVZl?SbkwI!XzP*!1JbbNwStG3Jc@)hX z1!8Jc$snDVT7p1GQlc8ZpH!K6}^YR2QNEQ25|2VKQ0ib7dZ|Jb^t^eHx9cbS<) zYCcU*jp%?G!^;WDzJX+dow)~G)^(?GSEqjZ@SAUE6o8YF{nnTiO&WO53Ue=6n^P{{ zDe(>E!q%%k?!%Qz5~y8F7oc0820SAmC+AIEAjWXIYvzR^0&4Ti7H(g|peq+Dzc9b()}6n@nLG6oBM zH2!i2UN8yCIBTfwrnDLbaZ zlYHm07C+|wQyl3y+5En8u>qa#Fqa(s*poEJxp)%oJQuGynKH|jBrg?B^(A3Ugvq08 zQO^vQY3<=nBTp~F{z`NK7-zO}Oa2fRjoO|r`X#!YCghtso+XZzqt#z!7 z6yz70U=_B6Pe*-8(e-oHTzqCHkq1J(o^q5VI~m6VFh?_j#Yqgb0?1fsZX+>`PR>*& z!r(L{@1b<~aTXxS>);VjKt;!Qi2oDkd}MHgPQV;XkHQ0?xDN3KNVCTif!mREI$7LG z)T%V5#l+B^i*HGCc@$ZrfUPAlPPpj+oxrKXfPzMtzkFK*Z^w+7EAvH=Q6#l7gf@#f zN=TE?_2hcwk3GZcHsJB$oXBW@@H@;YDs<|CHW!Kfe4+`U@urhCng_Z@8Xe_b9N&_? zLBy*Vq1G>~cq`C9qab3c#=)e0Wn`UR)IXmhxr&!@*Sh1V(b0PgOV2T0@I)EpPnPj^ z>j-WOh{9cp*ci3T&WT+u5kqp`M+?K+ze}VJzko>@pp}%os~bpRc#^QhO$y|UchLF- zFj4ec!}IK;v%s|{Q9Eb@k->2%VB=)1vPs?b(N>B!KZ!XHpZ^bnv(Ge=F;goenKJdS3JLbuUS5oQ*1 zs>F3h{3aP~T7{C7k9AzBZG+L3DT`*lI5>(PUr+Otum`?^0{A<1uqE48#vrriumW{(+~5?)o4Y)PP-w!*DRx>s4a4 zrk;&yF{0(cht{@|=icQFKsLLb*(|u%J=shd>O$pHj*A8vp-;W5*)Vq2%H?r26-j!5=y63Ou4uYAhQf7n z5z!jLmO>N4e6{=izSjYE-m}h5)dD3GqY9${E#|uDT3UxBo2NoRt{2CJ()}tIcfw09Lv`Zc!LfoykwI&1~1eYkOhH+cLFXz!#y@mg1N! zgtgc}T2{}mV)PuHA+Tw7bWWn{?!X9DY8+-6$A<;=NQjE?A_qTZq|Ow{?z}wOK`3ZK zWQ3M(62f5gD{*Wo4Os-?7{xC^Na!F8eeRWYB1J%v{1tJ2$vNVaC}IFcH%}UIMWB`*wB9_dxkFzd%Rd0 z4JMxA0+y9DL(`=|3snR4O{8Ie06ei5_FP9M>nv$B0I5*Yf@oKsEOQ##!-I*oXe6HzhrL*C%dj(?ivsE_3dt9*KNd{kJ z$tn~QvD3=IJ&KSz=%7@I%GcRM*{^$b;jB9qK~NhSON48aAzXp;#SpFRa5M-;6g3WmPgDx*?p;Adnz!bD6LRiWJB9c<1%j(bmb~5!T?G$7nS92*OQgz_D`q0wgE8 zDs=Qr6cbWF&9JICVYtB!g^K!3=8}uVt0O7_L6TrZdz5*QU{*3>Qa&>74_j$H z_8{K)cmqThUMgINHv5r#gYwjZ(2z64e5z5T)T7XDEyu6dn-1(M z@d7@VKb;PojnCv+0C~GXu<1A(Qig{9otrBga_UeK<{82HU5zA;}#bw7HfOx{296);MI`BgG3V#UlKbpok8QR#MVn}@+xNIkfySAkp6Rt zqquLq{ZX61xfcNfIgdtx(hvks_!%Km{$ zek{=tDw#hMS9I;2051^3tTnzJVvG$S63Qr+IY1ybYQBkeb_!~+I=vag<;b`wkQNqO z*T2z~>RUNpuGu7d5Fp1-5;ugsLf8_@E!&4H6fGl3xk6zvOcz0RI|tTktkNSso{CX| zayzd()^e!`5YMbZH!g`c@A@~7=_I!Xi=t_fXABveP!OxZWSJjJpg25)2k1h2;a?)) zGx^CQWlXM_Qt_i)HJ^(gM;<~c;WrjZpk>hKB33`?!a%|j=A?BOzqq$TTwhuiUU<{khC$(?S z&K`Co<4cV6e%8Fwlav+5YEDB3h!fr(PVfSQVMQ&8DvsmR$UF_haWZFjr-|fIzRQGL z?>W{?Z1%TN2z9h|^m9wb$~L96D7J<>8bW%&Ag|TGeOkY%!npT(Fz#y-k1&eq-rOskT{ zjRRQ%*N@0a=k-!m3Ass-4^+_CIdsu($aswE#KIyzc)egqFp%NE9l}k5Q7CY5;5-c| zB*NqR3f~D*&pjbvO+P`#2tMk~=E^FZ$=0vBj@|{U?4yizhHk2chv}N_atdeq8ge{I z@6>OoC0mv3&&9-ayd4*BI##&j0Duragg8J{Y4_7GFUuk-a1VvScPWEP{>XuXXWS z!PCeh@V1hyE?O~afl~tvpb<7hAxu#+p6E_UP}H4Z1VS6O&MCsgwjd3jpolysRY7SX zYe|vCxcvw)NH}FmbA$th1NNl8MgfmuiH|CT^9QT;U)bI6;FQ$``3$^>OEY@!lI0AX zkV7vR_B1jZ+hT^ELYUNr0FgxlZK~H2aZ4q~-3ggNpz;#EY(i$?G`+=8(a@O@u&vNx z7x6X69^tJL5sLRiUt*z?Ft)lJ0vW(T*4jLUzsW`t@d=uDJfLm%VN4|Xjt8aQX6Yw- z6l$?xVow^>363u&PcrJL68sz!Qse(jV9TtntbDC-Dxbi*>iTV8f`ZD!4F#mJ^|8nf z{Ti2p&2IIMtkMpw!78o+_Xu>nwijZUr1e;gZ>0P6dz_mOy4;A6^`Cw7zLMP{HM9PW zI)&nsy(k)dTt+Qw>C~_|fYh<3Wgrj~5BXv_rY7fJBDn_e&XDZ97g8-~hp}YTY)V2< zz9D3No9Erhpxwe#08Kye-h-+VC6ziYmBO!nsV~u$>X&8UzfLQsQL)9ZPFKIeL{KJ! zT^;R5EnQCU)rKgBXbs`CJ5gG?sP7%Lj;Zw-7TL`nRJ1LvdTEd~*bWTaKxlVYI4ve&BY%TARpmT@;bF<5$S0OZ$uu{0(O3Pm7%%iHwjkM`ehWG)$iWnp7Gk zYD=%DUeUR!CL(?@Pm14A_>g_Iv|uxc$DjwekO@CYlpsY(@ct2SP1Z4;P}Z2rg-S?S zO|d1YEIA>OqH!6DTrQofbc&uE8c9glY}U`tmTRcwDt^?*O8ihYRKy63*HrDvB-h2P zSDL^s0}XPAzN29gXc0h+g(|)E2hcA#^5BM`nKk%asV6-{T}*Ggo1k)QlM+s1ECReGX?_a zW-$0bUaT2r4>k7DI9Z)eL97|Ps^WxAoFi=idQYS_S;tN|IW@%Pb=%6 z#PaFsYLwy^IJHXW_HIhj{HX14h~40l=vUcN1MwAM`58~pk=9D7i(zXC1b0O#2WI2R zE)N1}4DgQ%JJL#DUR?yD3BQlVl6=bXl<16L<1V+CIpF&5tLyx*UY|X%kdT&ittLOH zGQwEVt7DGb*qdpylmKMEOWUR`0>fA*+fGA7MntnuLL7;RkIJ(Un=IcgZ8Y1p-x{#w z)|X3$LFQSEty+|U2KoU88c~8&7h~ig8&5M2D*<~`pS@pmZ54wqn-(%L48ez~W5!Hq zF}Ab=U5~1NGZG>pLk1TGFB)CB!!YP@?4nHRp2F+1 zL>XL2x`^U_;y4n7eJ)0$YKr2br#VGziPCIoS=Oqv2XFi56p5N4!6}{74y_mAx<7#_ z*c5dM+D0o1wFG$grtdJC{>6Ff&F}8FJ}ph7OWzb}T**!^EGracfY7;|-25q~2YW`Bo4-4(Z}u7(W(U z8tPo_35aSYijRi;tm$f~qJCkxli=dt%)%IakA5a2eOc*{HPDPmsyIe=v)NpGOiF#D zJnW8PBOblbKxdi?66;|tK3Q(9sIzG~sF^O-j2aZJIms`+xTa~)(pI~E8s8WO+oL-2 zaJ@)tWAr|?wNYeT%cyY1s!v%TvNvnW+9S{DPgTl{kEOMU5tt8VSU=5QXr_%*vc5Gk z#7b1CAD>3a$(W_~lx$m~)G1G&)K}}Pu|)7>cKhY>nALpPUW-t8&=*hY&jdO}BG;hl z%!3V+p;J_mQ~&#p49P->DT>iAb#TmF3YimxQ*!0{@Bf@h$z&y^K@fo_dt~MR-!y;u zCr>h&)A+QDAQ&%S1$}RswY|)#(Nn%f8xNqMvDa5D-1J2;oZNhibPK<%uIO*8k{NkP zv8I$cnH5w*S*X~CuSy=)LA`Ac7Yjv&CWEp?8)KZ@p;SiVO00z$P6k1kf03ox@}M!Q zJ_Zc_960dOEQ*$W|Iy|Rvv=&wX{W%_=z}dD4FYfQ0g54n2AFie>wBHQjLpy84YRZz z;Jf0h*Kgjn&;q!%f4IGa27vD#ui5Us*@g*9pM~oauFUq$CH-l_ZzyN+&z__e|Llq3 z6*P6bX5P=Dv+`;}MK4AYd;awcL%FsP8S5KZ zjIb9;o@uhlO6v09L|0hd0oi-+Rm3+q9$ z3V0S(azNT4Sr7csl{|ZbMZvMHs(AL~!sr11N)`?oqQc>aF8kRNvk#T&9UgeFf@*yi z1~zUKlt-$DOGFm>IX97+&B@Rjr9wsgr^OFPFJ_wi&MMiNMg0&N-8gKuj}ltU>=B&_ zFeXry1mpx*)(*PedVy%r61~HH!ap%h^a~TFDZ6O2xNZ&|fTHsYPh3L%?PVbPs&pvn z{SwOYYe4nz2ZnYCgB~yhAwB!AK7F&u)t5JQr!dj^t=*?@i~@s}_c4`TBlT`pwnh1R6<=VY?Fffh~9ATH{~cW0U@}0 z`C^$M4X%5er*Wj^ct{~ayE}C@DC~P`WTD&;o2L%nHntf3skQrJXYZInpZ2y6Ubfhp zV;{k+nr9Uw=-M$PEjLBED509rl0ip})IlRFmi62xaXIpUKFcYoFUhemG1WNo%Iq;G zFfeH$tH<1&0d=&}m>Uy7&soblrTF5^7Vsh@VuLz8pA>(>MC+?c)L4uIJ8;`=Z^$m4 z(dr#}6vBbd@C#3(ffEKOL-*1xBPx(G%8(Ug<|e&4`D#Zu_YAsBIk(vH-Ehx9Ukr*p zuTYKHMuEC#XdJs@*&DZ)ql|_C2*#;LRAJ<9o)c`!@-Hg1^RoCTSh86T$r7_$CNC-| zY=Z(Wd}SdEJ5_PoES{}ZDjOnv4+r@sdO>}LLJ$+=ANZ&uEjlsXicSUJK9|J5;;po; zKNjmt%gYtgrxi(5)1jtS%wc8 z+u)NJk3{KoP!jOJ^H~Ce7_>&w7&ND#f?AOuCZ+b?-Ov-5kcCWoNLU8qW=SG2Zq zQRdNyz1mSQtc3`Ci_$^ImU%p4=x=0ogX3RMxl=~DXeyMQ#lRaQE0JIs<`jg(@+Q-g zRtp%FRtwiHVyKxO?dnx()QX2>AEqdk=Q!;9=3$>4&I51!{CHcG-8wLLm1s=0-1jda zj<}CtDx<$>Glp@-0%o1=$pR@fP4RPGO+jt=yhO34Z?|+uBntW&jr=Vnj*viVrbC*wzbsj?8ayNN`03-A|PJhtTE46MKT@OA9kr_kxZe zKPxdV`6#s!P`;2u9ak`bE`o4PdG)8chh@7Q$2UOgN=l<1F^Grwwmm#vHZ7gAkUF^S z-N#5z;q!_7e45ide5Gv@QgeS3fbDuM>ks8NfV97 z@{{c2`p-VPa0|fY|BlcaGY34Av4ybyqc;bU#e}x(4t=!a*8$3B8G`o%m=>Uy zGt;NrndjQPA24hc00F3<0KiC|PQif9Fh+a_#u5`yB! zN23Hs0W_f=k{zQdq;^W7lDNnctz!L#Vu> zd2FgUZTFPdP>zh#;sBMeJ{c=jA}MC^vMx4 z<%T+1*$c)vVNhi%gB*k85=bc`M%=9x3-b|j*dk~JIvPpO ztRh#~@w>p3phq@2TJ+(iEH5#^~D7= z_-sv8B_q)h7!qP(cMIOT|*I91`@plJ?v0LTkkRuFN8)!<%|qdte#z>;u#P8e&P zqKIAv*MsB|N%CXXwtp*QR7TJsDnnY7FkS4%4a7!>{8kyv;HY!<=_)08JNkl|R)SVosS;(aqYa~D% zKL>&QoDBw|v*D)-FdhP}|2mU?{}$&S@uR|F&mU9d;{ajRaT5>5)WRAX0`+{4!|1`W zfcak^9`C-ZV}OoP$H)ukLx*hK(TpkJ*muEXJe<&ZM2R)-Us$D*aF3$V_AR|uAu`&% z0R3BmyaaAH&P?II`0J(}kfGKUGR<;vH6FYzZB6LJ2EJMpr4{!`i;UV^ z_>jP^lv;Ix7i7mn5ZbWS#_;m3K2WTHLW(RnQD)(wW>g5HxRH11-E5x2M2zqblv0Qz z)`eNdX}P|1T5-;?AhQQ)9dj@d8cU(stl101WIRpnmRK|5fQU~NLqrsJIH+$i-f|}` zY6#|7#}9UYVUf&O{Oeyx40aA*h}G}@xdu1Kr6uv!9U+UluHpdDxv5Su=~XQ{-Wadk z@sqzwCB%AFMN-z8;4YGDop>WvqznSCiCdk@IAMMZp}2{uGBWhtTk>1uknyP`5t>4! zApYB=eWe4-ke>-~N^K@E6gWp7{q{M{0V>=vl@i6TN%WV{8Wkcpvw9sSP*|@jluC&T zre=`QEKC?2o21_&rVhh9b9_r^@&RspXePd{VvsE=277<)@`*n3IBd$5r?TNw3Y#lW zF_=8}5~wK5;WEX@p)xKemo?e6A1()zdN8`=+aIh1-V8`p7qn}L0mF9zL-xL)A4yEl zRN@fZ2{v(dB5?$q3$r(kwfCdvnvU2ajVMJ$g^aTk41!8BP_oXXSe*sYd?Wce@5b$8 z5F}$35ymsNe=odCR9VsjAOhj=@v0bx_|c5q!eNiu`t`!ro7UFe?$$9`t|w1%k$$>Y z=$LTZB-O30)}Iiz=ryb>wq=DCe&NFbbh}OoBVHk+5{z+gGBGqN3C3j(W+fh`Jr=w< zsstI8RNkrh5zYc!t@6_U8SAWS2&vcsPCt#{=)Z}KMWq*ywYco6OiP{Aw&iJxAw7>) z`Z~*~;s4g^;Niv@P*3)@t+SBzt8x=a zTCLYnjQ!Se>($QQYl>8koNcX!+q0$V`J|=A({Au_J!?*ZL1KGQ{Q}_+kCK zAG9Ay(@@C3kuHU#pFRmgLqm=pGP(H}qqkG@Va?$V+U#|v3qlt~1KAKP0!)UXHx3zSo3g7Oo|lc#+GfMi%jTa?*(aga5v9|W)u$?esBA*cGVG|M z+%K6m3MjYL=KJzR81yD%Px0=2y~gVb!D_+PMgC9?GgNK7kbORr~Tk5Fr3>0;?Cgt!|T@o_! z?r`YJIENt`UXx^eAcIWuDL}V&_JI?%4|SdWIr7B()~7XzEn|65d?NSe7Vc2E=DpaZU@v|f*vq~K?9Jf+6J$)L+BrHpJSsO~;3AhtoWX7| z84w|1n>{IOlq?lS0L4vw{O0-b3GiCm$Vp2l*65P4x2?4rCy{nQiH%9CnvgXboS<=G z2(25#K66K0yus&HV%Lg{M0dSISk=mM>??-#+PYcDAzQ4)?-nT+1WqftRwk1~P0LMR zX+vlrY0jhV57j1+MWBquOrjv*iC0af2wY;AAOpOC5!WJP&!+EIk!)FH@{sY~)Z)Wv znuk~tLB+mT$iY?<05=fW3wwuK+nHB8I93C9(sv5ajkiwZ9OjS?KZc`;kfUGH^ToPgZJ@p&`t z#b&8CD#75HkBVstWn6LN2~MVioR))PL!KvLmg88-9c^$SAF|ai^vNo;7KkDX#?)gB z#aT**HPqJ3_;sAi_pDni?Z49jq}KOq){>-M5w--Pf|pi`0Ua z)W_Isdi&uLm!gRMos(CG$!%zC$1B-1Vt68D)NK^m8wH+==DzHrjL{!xhiJo7n6tL8 z+>zTxl&Ns+x5N0(Otf#77AgHQFM$j+A=s; zC|br+DkM^9q59^OqBl$ON>D-=7%zh2U>4JBd!%mBv6=$(>+XpmTtg5RT*|AZgLnah zLc=(x%~>5@mIfFi6{pU8!@61J=#J^mRhuwrh!;r;+dYt{RVQdq`iz4h*-XZdLp}{I zR+yD)8@geLVP~lrY_(M@zEu+Jfn0IiN*XvR9HG3t8ZT~v>a*Xw7iv*BQ%M&F2s|I<9D^4Wah{BHn2cAZ2391y^0$0V`V8Vd* z=UwUnREet<72*T5?X<+^sPcf{B^h}-oQynb3M;+OqcJ2={t`R&FOf{2B=u389v0Q3 zU_Zc6%1NT`B4*wbjhQ!PQL0)C@%XvaZ@^xE2q1C(K$@eC`>sEzhgbPW;+LCmo@uKgzmI$K6FuABOK(5*G~O^} zZ)_jo+==J7JTUUvGRH&g1hfEQIek#qq!O=RrJ0j>D;KxvgJAcc03OKz1_*?U{4(uY zj21-ttrAROXVM>*82duHUR`_45OU2`+ODV%K}-t;&>`crvq`iLJ6=z36boEKfo{x$ zJ~ayAFbFROMLJz62iiXt*cw!u}6J!k(-VWN)nT@6b@GxFbeV*3SILH`b<)P;<)%?fb zJS*3is7I*91>&|Y@L}cqPeZTfj{3E01WCak(9PPjCzWa4jKGt+8WMswr)EeOIily4 zH)GM&#j)o}&bFR^SDHPP?XNGP#YN9cbQ4}yzR%vOvA#@+QR&f^ZBI6-l`Eym2X1cixKtmM7aF z_63@w_IMeSS&By|!DOiN=A6Uw3m7G6#V6UCPdZFQW!aaQve2zE2_t|RuYBL}i2M!R z%Qz0uZON)THpkYvla(+!cNhjhyDrP~r@j=66c~4y&$m4EUQux?@~^5Wtil|52yDN; z7RTGqHBK{t?(@!bXmb+s;}b0Nn*FFEEUtogc}*aUdj>T!m<1cO-QXHhVbGiT8;?zk z{=sH9Ma_6pDI;rC`MxZgd;7o}Rlc{oQKo)WzHe3`+md*_RXf@}ZV1YITBncFS?=yh ztZ&)BUP4E5&q_;gx#iCy~C8v1Sgfi!K#K|)xlEp-HA6Ir46sC)`b28*l|)me}a5t#sP3pQA7 zB^7hlMw~U$D7;t`E!KE#K)x;+kK^F33X&x^fp`$y(frjJ$Yb|D3-3O~dR;$?zNrPo zQ=f;b&ss-Tftv0Qyz3x*_OO?+2pS>ZO)O66b8h58FN`i?2_UNci@-!t`cv?C9(d&> zXZrz`&+Ij7;O}H$*yNuQ4VjWZiwUAKN3MtPF`uuxI8sFh4ucJJ@COJ=#C|NN_(>|H zMfAI!zxgQ89vNXvB>B zHqM!+aYk#LnGBFEx>D^nu{Y+Ll41J}nG9Y_dAjG`I+PdHw?_9ad%?wK0p**mL4ezc z9t;A*f{nD{O?ZP19Y&nN|g^ z1gj3I79;`aFhHbf-|b0l#hojRtxl`L7il%IJk(hIb5yO>kV&1RX=Z$|pUceHMX7BK z)hGMMHDw#pV<%de*l?U`aD1?z!{9if{hwKrC=dFT$i@TBgAVphYdN$JI@os%1KR2K zN0Hc37Pd+G4U?upzcmhc#Nl1sFn!Q>3e)Y$al6eTk0}+|4+PgkM1=IgA}XF_{jJz;(paeZ2L#2f!{hsZWc4e_7e1jz+i%0Z=68p`? zH;Y_`wddsLCM^i*oLk@wiAD`)HA)DhSrv9(%c^$h@Oxb`SIyRr$&3nXBVLg687Rej zR?sL5V!EM`u3h@i1wfz&6Ax0V=%d$+@jf2i>LWu#0Z3gwE4^?ng=X`J1(4&Ebi2}q z*QuLHzFimb-VB1zY(kj`v&9L>GRPSO5#gaBu+u2gwS?e`{JRb)LX6Q7x4k!aLt z;?~UrgJw>>E-25Uh{ob<1AWC+(Kn1#;araMCU{g!lc=rPCvfC{W1ZeaNX>H^8c-2h zSxYD#2^H>{VY6pG-&A^CoPOld9Som=HkmDLf`b7x(A`0WZ>clEN1TH)x!Q6@3^3z{ zz$&d5_jV6<4i4AJ`$5{ZoH|g%Kevv7Jvu(#db!iu0|w>Ac10KB7>ONND7rRSs4Ptw z3-ei8X*pVSurE$ePaUf-NP2I^_&7%^v4GUPxXwrih2_MHN{WXkKd6N1j2Iw-htK1`c_a`897IgX>K*zfMVX zPxEUoG1L57zqYIok6&#a?QCNt)fY#H`vhPCKc+%d#4Qrh4SYm?v3kQxaGIFQCxtHw z+P*vXw6T_q*2}?5RLc4nFk?*b=zR?uQ(tfI?cs5hZSSauK_fY_d%Ye3)9jH45y49k z)rVl%@CW+T7n-w@7)FdqtFv5&#EW8l9T=9}wk=VZWlXgQFWPu)Gsi10=i1z(?G9a9 z%@pqkcDEd}LUcCs16T%7;gHVbbEQ(N`6xl~ySKG)Jo4LPOVc@JFvx}mdX3#}b$UI5 zGozSS7m*<50Saru1)zt!H%;)SEY)O^brsV`mMwOVg|4-bqa6jzwG~vTN!JgRFmTKRZQV)43ASLN^{v$v85%C54s>>(P@Hx1FlwKRL zERw8%X2WlaSp^Vdeq%aE*z>ra20CG_9Lag_Tho}tkgylA6yxE#H-&icHF6o~Bal@u z0T`vSrHJR!eEuQr{$|1U6-Q5TGDb#`0et5JME%eQ4gO-QCHX@gIQZT0HbEl<3jfQd z*lfN|mfL9PK#^AY8F?D{V@Xt8#` z^i`PpP^Bs2hk%rnP!aMe8H}U~a8-E)!uyD=@x@!*5@l$yK7lBm7Y5D~TRAgIYSC5wf)OS#FyXzdh)Jw1o7Pj(Lv_yEu? z(b6Rqmd%-ZL?zLdS8{a>> z0lE<|wn;<1AyCvozn;W7G>RO$BP16G`wFIvaz%TLh2L>VM0F3l4M}(C_F7zLYv>~c zaG_aH2O8-*-2r;K5t5AZ)IuOI^dOU=+z?X9yT-t8@(3jVD|8mW#R2fRS#Nr9{kf?N z@%D=NB?-37;o_j&flTrJKmH*$DrY>7@~SM_Jz%b(83+=3fw~OnGdErh7#dwdz3>aa zZI+tN=Z$TcI9O+AB`oX+U8{yTY$O*KN{mWfk|BLjjY95ZjBwh!<)$~NTsWjQOQ+># zv$a+GKezT9+F8i2Y;JK{p^CQYk|~Fxrey{iow}atQblCgZv6?{&;Vi0b@??iZ$a*t zyT>PQbqQC>;xjsaOp7zLi?+fsSVie!jI6fMo-}Drnlbv6BM7^xY5vztWLjmJ3Ac}o zG-e0}Baty)%vG%^gRAUBdF;0mV;iq1Ud4-pv72^X@Q^b_mgh!=v{n3It^2+;!tRdEy%xlPfDx!Rsj zZakzrhl2>A&l@Nrfw>{{LEPTtMlZL!D0|_sjwAusQHAfk9e3=~4VcWK)o#|E|(={r`$=_--;>VZo z0Na}8>chNa0YzsI2P}tIFt-OOpcIkFv0zkCxGD|`!4QUQq%NEsa)N1m1WhK> zNGz+;&FROL>gwrd8Q%OxBZ)04C3~A}8ptj%Ec>g6s6tSb2EtEyEka}sedSQ(d~6&3$dXF7D# z9rZVz)6-SbS;@?&r)vWKb7b`OkuOD7SQwVl5K?05Loe#qk(J>@Y3N0aLu^sJaNm1` z;1#KLxfkxOIAM#C!7ZU$0pT5^W1eJ|WqwS%t>vLGNvblRw5}MtBZ(pO0}2YhH(e#uSv0tj023^lCFiu@kY4s9;`z5i zkJ`Q|KR1MWa9R|PKX2&N%fFynSTLI|PPU%!?JR$UPL_RK5LYnx6(IIK52giwH2pI( z^D!3+oZsLQ8eLynL@0@NSYIj+ec*awq$5-X3yn}hA07ec**XZ!&6?Ju9sPAg00N+RD!zgwp2Rm~L7TXWY>HlAYBm>uYMz!ARn^oLDLlU7f0vBv zicCg|O#F(=MM)lruu8si#;Tw8TA4pA!|o$6p>eR>DM=b*8BOUh7nBX}GNB5{)Vsyq zhtFH|oT3CJ1glcwo7CJ#;M9dhzYBLJXiIz8n}qmZLGl+)!x0|~i{1b@p#m`*X!(ZX zSRgDL1v+)q6C_7;4plN=eEghN*Jo7$E)taYmMb5PYBo!5X~Qb3vcX`O<(10DXAP{( zv==UqCr3ZGcJS^P852}2N_&91LN+4O_gqQ)n4k^NtYTA-*q~pKws2 z_!Z_~JvmY4dHoM;z$YK;Z?YstGUwH#6Ge7Yx_$e2Y>@}Fve60$?j?E++qAuP zvLzuA#=-T5^wME5+W)5C0th(AwUEL%G#Bg!?0G;GWrEU?RKFGwcF+JZfEo z1m0-}NX$^%O}vEJMqh@1pc`4PibHQ&3NB4in7pLUL~Cby!S_AM{3)@QkBk+X7qVH< ztQ(+H68|!HCNJgM2O@gnyX3ko6;f7j%JSubMm_3qh;%_MTH~4*8uvUop(%p}C-bB| zhH(&b7Kr9AVF4&GC$i3eOY$zY0puI{P2$d@t^F1>^Bvx;5U|VZ$Poye&9gJHS-^5X z3g-uz_y_AUB|cZpVV79B(PhZI6xI1YRG)RFa^@WHXt+MTt)+gSp-mCZ`Y&sxgd(eH(JP*mKK%Ivv>iq>BZ-UFqE)63|&L~W? z1iCy~v{@*eNMZ(8lvOsBtjm=)6F85g&?UfY3=X6sB)H*vc3GD3gJOig`{z^BDq&=B z&uR%TF>Aifa8U|wCxx+>kWN199by83Xh|e79#!Cve0LmfFIlFarG{e27-SRHdb+UE zjF~yJ+}S5z27)k8UIvJ8@SgOKqzyrMy3k`s38{>&C+zNXiCQ2L`ETKZmhoYKC@~s2 z$*h%8oDmU-eIrZF<_~9QFLw8KN=YU&t6V$oXPO2}%+PQd)>|jYYTGfb1`MVrBLGo6 zypY3abq#q}C`DDo2v`>B>C-i>Rc4x~Wm*uIXdcDjOOwmbXon@SRrTZ+@y^w{h7^Qz zRxxz_(L9Z_!llmH&RD3``!tz-7SYa8N>+gtVf4CWJl6PHwdy`5CEzV>HmU_(ae!f> z2x|k<+>+BI0SF(kxsAwF$tUbzUhg(?+rDJky}agVHna8H(@y{Ep0skAmT2g=bEINs zO&QIoNN{9o)_6x@e^|8h=uu>rjY4-GM5;p-fvxh!ZTsYS`R-lv$jH;TQtfT8TAG>M zY=240mrDhCWTu3cS1Mp7RPKqb-FF&F2xiB)Py1-=`*BnNLmwm|`rKbZi&y6ryFx2*lFFLCC3JY~h4q5f z6m9(w8AJr(S{A4{TV_J}S1v{%3bofG2^@mSs4dwaa)Bh-iFEwuC@mKrRHsX#YmJO1 z+=i=N6b%+5igBk^KN0q5rEY9+RN7s#iwO6I!WFSEEn3CF*dPf*cM=&N z+~>lAUI*yOt;Pae6y;hC(MaJ=TyrPmpvLm8iV<2+u6&bqxjJX;5P4Bb`u)B{^GRR~%s?PTdc$Fj?JL z)1GkTk>W5_@os?ckii`_@?1Sf!>nW0YFi4t9anFF*>Oy-F7$4h7OYfQhmmYgV&EYK zts5nTW6$kW8S`6uEu;;ul)A>K0HZ1Gzt(Nix2g_1^$)zZItz16O6^Cyl)@s!M=8e~ zO_j27nmSXAb0=PJDIa>A5E22vOUBWQijaxwLL3hGe3qF~3cr{rrB$0|T$e&o%gmG~ zd&d+3U8>|Mb|`WgJz_Vl7(OY7bc8c$$K9Fh$V~~r6YVtwTtllR1YnEC^M4QCMe*xU zOU@%Fk?f@`x~70vRD6w~Dgq?f*M1mLLzEOC)kFgbysPHf2C*)vn&Nb#GJjFABI2;C zsk|U@gAvC1LIyv$Fq;*mqh>ZUI1ekU*+DHi%b)jR07r1`Vt1YJrC=YUkwjRB6SG7T zv}ob9uY%D8dCG-UllX=9P5bKEH;j?6C|-_GHvbA{J)|3fGK=Q7dE4jIYJ;GKCuqy( zaM?a`j)Ll{B|7m|mKW;Seqmg({ z=B@q>A#UB&!@BEO&&$K~ic5~yC5kw(-05hrT-hxyU}$#Pj$pa$Fhb32(leHYBb z_mhOFUQkEcqyICHc=epS60MxM$0RC3p}FK(jFK-jNDM0Yzxh_-1;MZVWAT$8PTU^t zj`AQdn7feAv%xLm%v@8vLOkHf)EMZ;_hwB~!HfUQ^$X|3pru#@Nfhu>FPSqz1SH17 z)pL$-Zs6j~0r)W*fkpA-*6y4%DjJy@I_Y7!)0|_JWCWugd+lL+N$6&wvj|=!c!}U) zar4cy7H}oXED||59ZiS_wEpn3nojfQm+KiF_3e)8PFACki8xUPI1O2BPy|_(2iDT+ z3f(`^8bw9!qeX?5sD0pUzwBUiA80U!m#`L*JGpGr1zUFTHOy)cd54#yU^1j7(7wa^ zoWEPqp?epGH|kgW#$X36kdNgzQqu)6s^&7N74ZaExWdQ z!z))6v4>=Ul}ubbL92;31Gsrh;7PJR%C|2f`NMq)9rypHNB+_`J(}H%%bQ-a*=}$M zYA8qljJCn^eerHjd{bYkif`*HDE@i1wX6AcwoSvBdG zgE-$mnIK$Ge?8Y{`qJ@aa4H(+X%0_l$v>@sJKw==(x|(y;Jjn}zw(+5lzIlg5I@0g z2REb-FzzkieDmIZ@L|g3&e~r&hvuzlSNRHpVa{@%wHnXg5O$==CmvKnF-=BsFDZo~ zvCojZ=V2M{&KmG=ADP_85nZ4qBe+(7QeVB-9myiQ+y12wlf4`#zw=U%{}0IZlr1m} zV_P+H!JNinBc+=R%&AsX?MZ#D3ZzXAhR1;mzL;=``ulu<8Mojzb!eYT5@EWawrvs)M)%|%JC(e>i5L4n~b1c%CS!Z{Gt_hQ6PZ4v_fXEwnLdfuu{LUB+N6 zL>C!wP#G>^;M+VaHT5X~5wXqhq_15mK2R7XAx}SSf9#xncMKH6e6^&Exj{ONxaJbM zJ3?(!>>Y*_Q=Wws00Y`R(nq~?!BrL4v+o4vjbP5J$)A5qU@M=8vGK{+1^+F);1^}e zrrC1bacN~TAQ2lu$G_x9B4$MAS4@fKLUJ+&+QQ*M*aI?XNaGFQ=%&t%(2t96V~gx!BJLA0liXf(c`lkdy0{;;QXR&?fjOlq0>K$4qE!VqE3u2@oKy9aYbS&o)P z$_Ztg1mrabkn_#L$9V*J^U1yD7Y_+x9XZ6h0OvW|06;I>TowTGfMD!uA4YBbg$APg zfCI7TA};6)XzU2+^EdTX)sJ5H+oxZs{hH^SqYIHaL!>TrFJX|GY#nU9)SZZI7jm~9 z|C^%&^N#=XWaEbt<9vA8{rYS9<=YkY<*EF_J+c&^F=Gu?V<^f?K>n9lXNG`nlRn+A zRDvoF6YpOPt`*9a4<{?!rI0m2t=Jb@udGqHGtXlz*tWrU+<_Wv5ilwX(}ckHqr*l+ zZ+glUgFn047K0b8w7_Vf4aTxsxvMMn)v8!st*@qAWPE|S`E}m8v8^yH_F$F)hBUr_ z^FKUQyOnOJ@O(-AJ{8U8YVGT@vwF&_Zzy{CV`a+1s@ErmRm{;R+H>FXoX`_^=!QoMQk?4KpFV^6MrZ#GP!hl=-ian@!aV-Qn_rhvnh%i{;g{!}1}nETfL0;e3b!P0aE?dI?Rr zP)RON@_3TN3nv5l9KZ1^`ZfpWZBpUfmvwu#r)@}W`7+NEvQCD%rr{wsGRcr}L?ifl z{p<1FH^rYplk$ke#l{@s@RB7DzYlYs5Fg&nCg?wCGN51WoJ4ExHqTJ`=q8MF?#Z}W z*8>efuDWOU#h^K8OjJpR;vgFmM39lX>`-1|JAnlSKq~#(wv?ZuuFfA^B2XE|O1AI> z^4WRn_RW(kpSlGhDGkYV6aLRFhcD)Hg4Ky$omI}H4n^b5$0Pa?T#?qwXck0cXECNw z!o@QY&Pla&uEd+UIxm5mW)5XBXRU?8V!;5E?x$N0yY2A=ZiKfAvTm_(4<#93`WfxB4SuBj-+(q_&_|nxnp;D$E?86T5FMukASoZ+do9_+U81|u< z8VrK4u1lw-Qn*}S63ff@6>kE_yJ-ObqFrMt-kf%C((zi52olJqG)rnY4_~}E-oeDr z_jX#J)YI0B=I-`ctG-k^E2LV3SjaAT5=@T_cI`=1E_9Wrp?7KxNAg-K1Wm0$94H3J z>$}K?;;uxS5G)3TM)EBcq|>n0kt&nrU?`ia%qYeq&mCik0r$O*o34x>$b^~1Oe!jl zOd$)B=@1gYgJMEi4G?!!ucI}ZfQQaohkKxaVzmrkMkIh-rHp{cb1aT$2% z(=z#pjVPBfqRX1t+!W42ix%n&*Kl?Iu*jRE;l(M%Nf3UTwSfg5%dpuU&r?! zW#|@sB|eMK=EAH^(if!#0zF5+8(*yBU#g$-Zcoe=nE)kjLz#U>$YP9ak58Pal$6kk zrZG{b0Il6iyK<(|gi`C^&E8&XcOMORfF2(=j&@(493Fj2K0?A^-$v7Gd0;|_fqP*5 zmw%y{i!YCkF+z_xJ6lHTNZ*V|Xv?Ro6eeSNL&o}n$1OyHZp8z+$zM^15_y;*9u&K{+bW8+1u`GP4jJ-qVVPOGV-cEXbuESgV=CoLZr0}=70 z=pgf|{#Q7`gb|5Zp0T6JfFi$R=pXxxBWwH?28<)}Z3e22r9U12?HdmsSdl3e`$=I8b8u|@ap(;Zt2`J@O$?NJ61Mhc)E{0! zp=w=o+Q~rMh}oI^0Wc!|xHZD`>E+U02=)V95{8IVq)L202(AZq(tgmH^s-mDd_7}< z2XMbvdjSIx!9u^zpI8#Y%nWeVMoJgDU2pmfU0(&zR$X=?=_1?3MzmMi!(J$Cd<0Ps zhi==e$=Nj+MK<|aV)C(M7DpaHM&utXDL!W@G@puyod!C3GX-e%23R-;%cQ17O_BKu zrb-m@U60VWpW<(yi*kufV9qPWQWY(W5vHn-t{N!)<;c+&-labv?Dk;9?STwX6S}$A zh1g-M;B|5Ce!6IXsxNim(C5lz1FRTc=dP^rqFt&|ac;!AGQS+;!A7C8tdO)_pi-z>P>|RtjyfIEVN-8<3sB}g0 z)eSNv{}xmck(H$1rE-h~f@lmkuru2}#^oM)6h^r1bzsDgeI&Pp{ek9`q&Vg%DOAYF zgAB??%?RLBg+`S^iY5g45S@QOH>ZJzZV__%al^S&D)x__5*g1MU+&1MwQjz*kkudi zFkrtC5XLf8p?^dH^5D8H4uUbPV2mZ|cK(g)ExyQ6Oh*w$FMrys!#3mcu`4_ayU15kc2+RZu$( z^;IzRmUXij(GD#caa&SwwQs%^FAfSk&HULhHz^8;4S z&>yk+i|V@H^T)SjXqwt{AP%pBYuwLOB&YcP+8xQb8}yTFA*9n@(0-4xfnkgxLr9K+ z7ak0QC)Vn#-`1aE@FF<+a3{d&ilXQ?3Q0JMsKiT6`jo>_1S|^$F$!2{8I3X0y1KSw z+}p-TYC6C>0xg`1(=s&iR6GZsXzcgG)5@u8O+}$GWF%@f*I3RpHJx^tjA1)uO}Pxc zm1q;2G=?S_53tvh@mOv{ zC5mI86}+8Ec^Pw3K>9}`A00xm?16{gUCO?YNF5AQvYm)gde7hPIg}>_G zKCZ9S*G|RkHXv%)tFP;iMZI2+7qSM0tmZ9cACB)4Y7@VyucZ{GTF+u^e5AXesadY^ ziX3pYW=gK=Om)a~U(uusJMaK-GA_S<-Ka)~7AszW4S;6dO2>7XBL|3bHs^u3J9dE7 z)$jhfRwyhjEs3{$c&^7w*3VEK-4RLc zqpW-p%*AB~e!3g^mlF>4rd)gLQD9x3`o9*aPf{3IB5w^j+>zW&3SA<_VvCIv_z(#L z63qjZEy}O8fHIe6Rh$sQlycz+&FI3>z9@18ITTF7*|_Yk`8Sd^sAHVv--|nqSBJt` zly=&v+NKs`>m8Ku&6j^~_xaJ*(a){jZL#WL1l>9F|Fm;-ynA>cihcLr!RRg}9PRwH z%SDX54?fbte5Gt13HYx?(N<{$^sN70JlZ-y{1<%id%4|-6^1${qdZZ2yjIDa@L60< zZO>w3rj=lcA8$3tMh+My!&o+xM_D)gSmm8=9gbD6*G=PAOgfz{tT*MJa0mIHAoPY; z;<<+qofj?~&j0%N=;HAY7Z{@zHrRJ`%VB<3Qfj)Jz@3+_Fq#X~bpi1tm-`Mdx1$f9 z%In_G1Y1mPJ zt5B08@@J_~a}Y%X>n!`u_OP4<5)k|BQlv#~g@Fmf=3aU=v=I;*|E5-h?AT~L)AUm& zN(&^RK(0-0C=DBez$9)Dl{2?2POoFgczRr31^yY82$&t-F%rmeg(3%_9NI<6a2t*s^6*U zXG^-O_dGavA`iw_Zu|W@f$>GabF2aYjX-k0A(fP}d?sC(!hZwi%T?HOz;mQP&!x%{ zr8)|4mjgkIQP5&6uiUJz@SnK2)rCpfW`z_R3dpV_O=)lGg4y$N0(2xFSA=lXvxK4V z^@CAV7^Ds-ea1WOi0;U}#5*GXR##Kt83W;d2z*Aoq%j!!?e|dX2=WB|h#gvc`b_-j zKL@_UzeGbrqc0cU_!`wtD>qM7m$1T>n`bXxH25b`&G))6g5VQkKlp&HnG6ML%!M%| ztY%~3Dk7$PuI&ZlhD?85*Rtxj0|rP``GNwS+k zM!A^ZAGrS`5B1vWn5^M>Se@E{FEwzAY+Vi}cm>b^N8@2PKh6UVr^98sm1L@o&N zl%>LJm=FX1sk1f<(i_u}=u?-DN|B9)#aKB~UBT`M(iUHo|ADVj3SW_0o7fSP&YkVd zb!Qc)&`!9t%bu!sVpsJ*a3ArN+v$)OMk!i9C4R%pieE<1J&AFtrbw|Q&P`4OiTJLvFd@))D>BXlM8!wA7zIZ7mfWYQiH>xg+R47_ORhc2FrUa-GHZqceK`M7V zx5t$9rq=}~1ek?NYNfyS--lNtIHM8^f||kDs|!=GSO5RnE&0rQrGY_YUXT;zNv_Q- z1fV+%Ymn91qDjHV<_-a~4p0?TibBTF`s0fE2$PMI_ z9^&Gv8G}glQOr{7lISCDRF<2aCQ*m;QMyE}r)YVU0;mpE{;p!kB_$rbylWmX=gX(% zItvsxmecetDJ60<@N(B%7fT!B^G42$UwTUTxg70U*dF=Av9vJBZd+2*hgL%wOfrya z1N;uDeuRS8RS;p4+?x=1it4KydRz@13V$2|w>uX}nPxFEd)waKN@ro_)fM^tY{?Ky ztduxR&0Tz3E!<^8#e)t#@Lu{7yXhYLNr-!mbbO=a*&_=o(6uJRvJX8Y{NPy>xIAf-<17#cb$+%KTAhEGcnN;=x5XHMsu2h;*+QNq;l`=eq@-U z#5VbG7T_1Y3A;8K~A$o}^^h!Y1`7WJ(!XZkypB z$AxU4pcy-Lehhn)6gl1vw2WP^C{turE5!2&hCZSS0xm(KoP<#$mHrLALS&%6@wE?k za8vCyggsoBOzuMw!x-;%FAo0?*8b*a+#jamyOGibMMr0Hxsp%58xCm}(~3yoqp=uH zMqX{~-Ha_ZRyJ}LJFCtEiYp%PfYqaF%2% zh6^zteVW%$;?C|b$w*yYw3Fu`O&;Hl@eB;Qd{pugU(%7g%6L6sj|>y@CFysO3eo%U zwvMU0b;?S`?U-$pH0ySJv9q37ekV^?*F^0V{d=*$etfi(YNnl9V`S%o9?R?OFDpk{ ztr!_@h$vJ*d=pI8-tKcc$JyFs6oHeoL!6Zymx15)*(blYH_Z|@!&o~lK(tm(*M4JX z!!(>bCyJ_e;Q7Ruam!TikY5-Cqqu_I4-M)_dLx&dN>x0`UJuGxv(5BUiFtBaC0#n= z7-IRN#L4)eRTDT5BMc!OAfp-G85nhGD?}Iw3WN*`xpF^{&rT66k4{`zgt!7*QdRJr7bVc^LD2FB(-U}UV;US>W7Vd+KhPh*j@_?c( z%!!D$kVc39OX1M8W$Aw{5ZVH=rrA4*eC2Vk`(1^f0K12-F#+AW65AQCUBRf&%Mq6` z#hg~J>$t^g7o%~HgDLjCYxYb4n!Qcu0b1^1RvmjHP?2tR8A>A)ovKKso}dr<k^vRYJz$}3ozh+9!5g0ZCrlXf-v3gc_h>xy~x${11Y z&wc@$@_i&hM@6h9Nl%cliwqKmF)#!AZAe%3aYy(VJ!GG)n{4ERD4}<0VktT$lb&7& z1s=K>qQeMX(!-d)B=t~84vc~V>=2^GU}$=FeN?N#RX*&xEQC9Uqj2Q*Q7}N>?=TIH zHyXj4lfwqNop*r`a)jIIh*}>GT_2WHZ5*^=J?L^8@7~eGEjO5rzLH zxX>mM4=*vglamKb6jD+mS->*u`ZpY{ntNI0%4u>h{7bG|Ezx=*o2N=~{=46eDitSd zdX`=){#9xH4u;i6QoLZa5IHF+H|SPNg(}ellmG9Wzd_HIgK_#I}#00%y@d5ik2DTcXNq zq%%1F#%nHsBuc#N2zD#N;*x>_gjDhvk|NG$a|w9RM9sn}Z6h10Xlhos61@6+DsRKP zZFr{1T4bh%fm-x0zZCAIYpXn|o(8q%Al$ zC>GRDtQ{6l>rZJ*Q3&Wg8NIiLT>f)!>;lUnrRrEj`wF%lZB?S8FA2N^vfve$!QTfS z;|h&%{jJA4Sfb9TB|Z08#R`jt#}wP8B;hNnR&MLTj84^gy*2RUh7A$jWnoW+9v-B0 zBB}R$JHok&1%HkZ;P9rPOCib?VvsFSZdK^&q(V*;;1X<`OK;#IM4pMAX9CobcHxfV zggGZxCeR1a&L7^ z5bfroyu@?5IG4C0Gp^>g2ZP!t&^9A}wWMLJE5H{Y+};EMvXDYBY}vplgm8fjPRx$W zdHnNnYyWWj&E5{`K9AaD^4II933o$-G}uCd z+2r#M^K>NC1W~*z_)Zb+6ZTb^E7qy~2DAg7hfan~R$@9~AYeYNj+Va6^iG?eoD<^c zqu^d!aUpdRF3i||3twR4F`Jf$CW<6ctaA1TAcxjcfq6`&hC&@=BRHOrEaqL6MoyV6 z2Ylaxyt+!>AB7CW^b^u%1e7L^&kPi=dO|NZze%~KOX zGh8Kt_}!aUtSm2_x7|h?4U4>tiz%69w|Z@hDPCl>4HU=teZS`t>u?2^C*<Taf{!eSNq%ipL-f1@J( zjf(Wgp(2GHzuA29G~Mxk`dzIyk}qOq&H>nSKP=+uXv8dp%^2QH03Z|iM;9{#0BA~( zUy4$Ks!F!`LWJUU4P(aqi_%>Xrt)7*7iI}7e<-m!1KFi9`U&b7aCO`im?vaVSD^Fs z3r;n76r95(5G{3YSm$58WmBud-aj*1$JW0@|{267htH-JwhrE~Ktd zy?}O*c07MLiqd#A@$5x74?dTb?;&C+EhLYTKM(7xO3+m*F$Fc)c>j4ZveT#iU8H=Q32-<-UD zbMk{+h2xg7U}XvnZ`iVu@nL0^B=IYRSc0wKeOjvTyxUP|;}PCC)nFEG7lK(GBW0p3 z#pFXP57&o0%J25A*NWB1LalWtvK8uzcuV?loOj`!V^UAM7*SJ+L~6ry5u(OVQROrl zwY~MUaLhK*tLdmbBE0Wlg$8@*elH&hk` z*%g_D2BFb_Y^+PtgdaGH_^H(1_c&~(-AFp_NZuYsSMD$jI=9x%WP9uA?e2k!4*Ozf z>*USR&T$!vj+b*extYf}{H3T}#l2|r8iPL&0_a>8;V}0j&wGBnjTjYmG67JKS(A|Q zu-R9m{pitXyiyNXyEUd5HHZxcYY5FbWnq!y%!|nwqdRN3cx6CfEol~%Qa~pT`J=0m z?Rb^5~{lb`^>?Yu!-)HXiqsWibWQVf?QO-@CfdeYn0t z@8_B3`7Qp1QZFp4F5YF@k8(`=!@3MCiZ=sv%Sy@GI(akAKW z6lc5Zxws5sL;Yn(`eDW* z-QEQzGQuy)9#Q+8`_EXbSHsE8w<)&LNqeZdMVykPXW`+Yp!U&)RJSQEox4AugxwzY z-`VIfJ@+Qh9q^3(57TPM^go%i=eQd$1orYi9W;09gLY5L{^!*g>Uo>JT+J)YHq>Rm8pBs zfDVjlBDLSr-JHs3GL;jh>993zXU;|ba%~~GPa-xjW6R8Ol$r32a}3?xmjAR85-WeE zpG#aUG~2p1MdmYe5iZdS?z;m}<|IKUi$K<2hd z+bnbJ2We%=NQ84%ooC0AMGZ~}J4VmnvM*}67_Xn>>v#3XPglQwTEl;z)nC4*lzNz?DBDzfZt&F8 zn=usf-^a3uZ#HW%r|V6sL*PvIfH(a79KyW(_8bloSxZUBQyBR-gz6{gBMf z*p}7034UGx2pPTOshdF{xT=CfOkR%5I2YNrMNHGV8Nudh663Kpr|y`)CLZMVJQI82O$ zB(Z!F;c9E8CkS0wL(&g#(^1}=tawX2wi(UD;M3D?5KNnD?Tp1$Kv(gMZSB6;**o4T zOMPDxA8#GJY#krIIcn&~=9|VAByTp5cW9!AE>>H{a24pZJMzYp(Lk(hh|g!(&jp#k z*?9D5&KwG9^y{xFquit614zQFhP|O=i>d(WV&3i2& zIGZ}GfO*A&atY_J2mclY^zI%)?ms~hGw`m%Abj>G>do`_=g-(Oa}DOwU>pz-=dXi^ z^;a)3G*N7~D0?QQa7KTt-UmK&fW zM`Er1O-*`pIH_)dUqU&W(*ftc6=lQERg)%#_YaYGx4X7>98ch{Ekx_p0G!qHh7hw~ zpPi*Vs%zuHFJv%~D0~i@x}f$We#zU=2Uu`-CTG>urZZkbHqV(Gs5l5yEomOaqG`6) z@~$|3DRaagK+^X}yDy2|gWZ$egX5E}gT~IZcm>b`|a zYkdqLip~4a+N*O5z4}q0)W7})o?8<(Whwo~kO7*ZzYa0TCv`)0gpZ1`^OSf?=M)Ez z5Zb!J`6?7&g{P+jC#h#~PK!SCAy73r<;mc8QC`aE)UNza#~V0CQaj>%=J?Yp@dwcF zXqD87SBY8jEla+A$<|eXc(0CiXANYdZyPa!8 zsl8-xqc3qP%pm3QxI;!snOG>b-%taq#Xi%hIpgXx{g`Kq$IXDCO8O+6e|~Zg^O{_{ zE-fUQ+79V)&y*`-THrI4Gb_4Tw9%x8Z0>Q`kMFg6jZSPInB+YX7gUA=bySqqP&}=# zIDGY%6Q4Ic-peeSau;c2UMbL@IK$KX9L>NT`X8G?%Mv8E9dn6C?m0Dg71904+wTD< zXX*xVFOwT3JiI_XIv%Mb zFBqZepfrkL6Od3_1DghW=Roz06<(?f0VfT{jcP;R5R6H~ew`PudnH{6LS_LK?M`|M z<`_*yC`1%hPDUWd8do*+(N$eVtXr!;6Xm{pdx4Rpp4L~tx0LS5qi$}fElJ7|DHgrq z+T#?oEty6dJjrzFpzJfEqy8o`D&o`JE0nJ z2IB}X^9`;^m}ry7Vrr2UrOCDYNMi`!f3j ze@rW|4%^ztxLeE!q6JYtU*wn389P7y%epYl5#)$rChqFG@X)g0Kh2d7Bk?^+0TkmU zMZ8Hk@blPD-(B&U&$?19QkXfkHj`G4=<)si_uq3ExX}0d-hfS*7Z(Mz24lQ*aAD(; zMQ8cfdt3W^yU%3`ScLzcgwflVqaY0TgU*DZ9CLQ}Zhahih{KrJ6Q=iBQKrFCa}AN6 zT0RW>0bEyr3jgU-HweVyzHAH(_5cB?LiaXAvM;eEZ;70R_!#NdEl?^iopzehpGte% z7-)}BHt*{>PTQcK9!%*EQu0r0W`50O6r(1kgG>9ble+Z|>(&Qedk#C3JFb>F)bQp^ z8xvhv&>77XaV39D!8gU3i3etKO;~IcmsCd_RS(__{F}GH0)1VVn%-t}b>-~Lj8yuy z8O*f4f(h52qyxxhNdzRXQpE!*Wu0V;Fw#~@u2q%2nI6_8o6q^`7ZWlhE0dcb5k>4C zO__t`u-Ka~-0hcNy2o?H?u}3kIndf$k8o=b4o}E*UCO*r({b&IzJGaz@vA}~jOPpY`=5sBl-9Q_OVM>TZFSFvB@YxpD6{4{64wmrY9(;+}>&ImC1#S18XqjCjM)`U=QMb`OTUuvkE_OFZILoIwTt)w^XL0eO(` zAswwT=cbtFlyqQ7E2K&O)o($ zFgM&5aTY?&KT7#@z(P)4631VLKGb@MUv=fux@Z$8=5;YR66B?zlla>0jXbw=D~2do z4DnUO)dANCn}%bvQtUsdQx}0j1!dAKXGeREW2=cGKcE+!^nW|cGxwMr^(F0K(8bwZ zDlD)D2c6zR94Sw^>$mWI3#l`zid2Sr(QUVobtTz7H2mb~=hn_oTYF`AE^}7I+IKp= zHyRny#sV4cj$bl3@J0MLoZV;g{qFRi ztKwAoDV#dA4B_K6@LcLnxiU*v^JHL>%wZ@_8*%98MqORGU1&V2a2 zm4t=@?2;l+ktvFDiRDs!Z1ec_y%73tHGs!dH30W#D#EF%bv732j7E0+kg7BqCgVj$ zVSO(+04*0BZ!mKP>HL{wI=F6Si9yDeG(J@C$m{mJ8)R!bJ@n~Fj0hHzp+B5nzK*XK z3+SVaqU^{%Y1L}Ng%cjOxB#otw`r$j8~P!SMm)+mN_?XFvTN_kBTGm8RDFH7Ige>*TVoJJn(9pQ$g|e)~7TgPkW8aLh2fn zK}$5L(UI#B#ez0`>WHNfajWhzB)C!?aK6pVLAq4L4t? z3o~%d9<0Ja`&NbRaa3EKs_^R`UXlW!`ba47vUBAQE@2zMRa*kiVEs4 zYM90ppV}x*JYAd2-Ns<{r?g6EfF(qrK9dV+7G#i2d>O^Kl<+&OcyKRWJVb?`x`8bq zg|x1qya76*@O(OOjwwzKvk(lPTEj+*s0_3|Gt!cfCan>1nSCmcDS22Xl*AjjDlmZV zBaRP-D>OD$CTGltRZ57dsS_HLJ259ag82Y4le)7~BFIb?a*-e_UQ2qxR;(L~)E}!O zlVWDFn1T@Py;xNCA)BvEuSvr3&#sB4Ceq%iUZj;dXT;_WzO_CU#)7MO&@`fy=ImwGIc z-AKrK4@&I}dP)+9SaG+o0!jLVXE5w(e4VIxe1)PexJGwVt}~cp`i+LO3(T(W70{5g z%AyG~Nu>3-P$P`mbW}@dXzD;;7NdPCnd1>vSjE3djO2E-*Y&yk8!zn13u-9*n zUzHmupccmzqlZJR0Ji}bS8N6jMT3RC9K@2X`3`|V| zKa=thDba({8_35p+f4(BHm9@{Rq1RHR+u87+;kAk428HYHBDkutZX>b%P0CCFPt`R zRB{PR#@IdO%0~uBE3Z^GK9{rz24-mg_3qxz5e_ehhlubL)x1}wsM#N5h!Hr>K6oQs zA260Ix6sj&@QDCaeV< z23#BBnu9}!%NGHrArgjXs~ixTL+o~emoj&(_52V&Uhi$4>=cZxYCbM#6Ebu#Q*Cgx zzQ8K);IMUca5pNH(G~jk6*yQt-Zs>kH^Mai;x)4F&6js&%ki+He{M) zrdL}>+l|9*D3tj-nL_2>JAA!!&^l(+B5KM0cI)`$Xcq(G6-YaCzf9Hlt6RxyXMbu8_$Df$62YySNGR0Y00#Y?p#bHtvpNIkFBhr0|+ z)Iu$gj;}qdyxa>fwi?b@$GMM=1$2%}1X8PT6bxCdMDlmbD#B@z1AV?8lH1y$m__{zRZgl)Q5l>^D;W3`(-Mide&0Y8!3S#wF=4^ET(|8*s>~BtX z_m0&mcFa7^EFLKSp6=*YU_(x4?Q>`f5wo&fJn#4k#!-C7bdJ`3S(L5!`1X>1y=Ul&Lx1#1sgNABeEYD|OXjYa|6 zIKwK8@pz9ORZNC!s`4$L^3Y0^87VndT$W)}A%%Uhv=nKjO*f-4Q)YQWWG9J%xMieG zw`-b~G-g7Wn$+^$$*4KSD#`?VO3R`pK4}G~09x7!4DCX)=}D=7GEKT+XU*4PbYaW0If1iaL8gA z6%VM75YYX;dG5fnf%D!PK|BxfIEsh5C*77i9QJOdHda>>q9G5tgyFRY2BcrbGJxeI z#{0q}6Ya@x%tx9MY(rc70t3@`Fu#jn^flQ~U39$=@nC7>m!ms#rs=7C#zQA+yiZz@_1+e}u0!rwwe^XMCb&@7+5!e`>$Wc}|tK5V_Q^8;#cU zt>Yb3s5Po~Zma^zc zG4w}Kg_UF~lHzqQ<~vZD*3xt@i9e~qnP|h5C=1m-t$X*yd7Ix=NWzfSWGbUsi)fN; zt_^?KuWw+2T9 zyKL_&dv~KCTH1pTu(JJ2JirklLI$iB7wCo`jJ&!i@9#&^Icz8$qbzsO_EGICw^7IM zAjQ<6VKrjWYs#hz7z|(w>pDNGQ$M&p;V{q=VYAhcB-O|&x7Rs`A~4`K-PqyWAjBFn zeJufrvkEVX??fDlU+BNQw+7hi*j1+#Yq|v@QZiB{nxQK-Xzn~M&{=F$WIYoGKVl#W z@C2DNv&G6ipE2D&c<7qJY?`9XF?)nITIC^aj>=Gm{>VovYD_#O3YSp83&-Gy77)>B zd<^RlI%Slh=(AzR$BTu1F_mRYm9Gbi^XF|~6oXos5kd7KYdA*U)$M$Mli9uWR75PU zTUjc|DByVYFv=mFx4eU3!!5!ON$Ycv^e;jelh~=z$!J&!5cjU{aIj}OlQspuzX)Jn z*wmd*IMhamx{Pal79QVRE& z*I`2jZTet%Fz{uU_Pd7ThXl?q4aq-XQ(zCQJNmVATHA9ZRWkMpFeuRuN!>Pb)0o4& zC=itzHSb-#nEH6@?08{&n&W|r5{Quq%FZd#?UFZ4YzF=Zoka~o-Jd?NLhOJ zQ*XX}CvhD8Dt0Pl*Jiby9H^vZ2New? zVtr+xxx{FYZ7zD>S!HbPz7uR>t!z(`{?;x=;~w4qgT5!p`9Ou@0;a^X%23X8oxrf> zHw;<%FTMb=mrv@==Gx=4vroqN`qC#_Bv0icAzu@+^ulx5WiIg731=wMC$nx zbw)=+$R1wlqQZX{aPGa2e#)2%LIo$lZwMXB-}LI%39^^P#jIrkNd^J^j?zT*p6;M{ z%_KKe%eW7QDCUBo?6hJ1<2)1If_d!G;)g8`+54e9>ZJ)Mm5GE6?U6{XLI-n1;w3pS z595)R%dp8L&9X!CHgR&;pwqewS1pHqR{Fr7`mi2rmeBzZ znlaF{D+9 zGcdvC3^6(_(=70Vx!@11#J0Jbb(iT@4Mu{!-f_2+ZFG?Tu;z?(%TvK@^3)=;D(Dm8zqU*y1Oa{_g!uHlsMpDLW zRRmqGdAr68Po?$@6%LZ;kE`EQ8Fcv~ zZf^@tDPSL~;wOnz{v=9OUbt*t1@Gy$#^m~C zouE~_0cr%KpwAsx2&KNHI0!QxvG!}XT-J!F1cm! zEw@aZW2I^p2Ezy^32P`dwiT91e2#=fbZ_@u7fgiO39uCZjbVq0l&?O@D^{}<_=YSWgfyR zl9aWo3b;Qpjdw6JVuv~Z+i;ssg2T%GOlK1W6@Df{|GiJ8{Q0sa_gRh~Fo7#F*50UsMVDI+I*zUyfYK)h2~N87k6? zoj5*S2HpC-xCMlJ>!`(|l#JMdXm5v1cS`g@Zf7ZzV^v=j=$nA$5nwbOgc~B*x=2~4 zFT1665#8O!D9Rd#>-8mAeBCsaU0%$X*mZSL{7(Q^uq(J(w1H||xa}+PuYZp&9{+HG zY6TeB?-hnr zdkI%Q1n+}$^zs_N46h#(uwUDQ3By)#!(YC8SBb-hO5Cdx56@_}CsdloI%+pbH^>GHKt1S}LeWACR`{4w0ES{U3kU>;KMQ)Z7t@m6a?1{5d~lXU94no?+O+)!Obp`VFo- zX*qf-N^h@+`@)e;jI9a|4J6f;#P{O5w^1K74v}`Xl3G6X0@_mN!ZPgh(;^RJyp2R4 z^_(W~l2#yECd$l7zvvF+){eCy?mj20Z(sF;j(GOui9nYDb#FBCT0ZzPQ*SH>8HvKC z^TXkrlhAu zaj3~IxR+iHSxHfQCkb~A7k`alYA>Rv#Yh@PmYoqGv6@eI0#a@`#HnCZcYa)6Wds{7 zGlKW>+^NM!MHzmE+;qnZ;xL4(IaJ!Gv6I@c28rrIG0!Lo2aUnBhMR% zSHN_!g`NVw`9qrWhx9n(=G=vjUxb~tx@GByRVDx*MxGMNkgHYK^+(8&vecE4uu+{C z!r9O!(;9}>h*nGb}--|8e9K%<0`T;_6g-PB=5ZM_^!jHX4;uU!BAWcFyJh3mM# z@F=Y_GYyA~wht#a-=?=cm)_yg#cYp@85S1nX?b#SUpo(H&K0*X;eblY#6>cisHg!> z6#j(y$5C6QLz7e!rKM8Q+m)5OR*2-K!i|PyZgnTq-{}kAGLDT=LpM?VjD?O7gHsRF z-)RrXm7`aXx`6U3nRXQ4`<(xs7^#fnH#tTN+=BWariqwJv8lMfQNJqbAx!)AqMKph zFVn?xozN{y+1t6pp~t!y^5ngC$t@ga0ZFRTk10U9QP7VS77M9B=GtU+Z}%s(qI#g| z-H`moW2I@ms~p8J&~Poc($Dh}arPML(6mysY+t!BjV|d&u`l>9)A4~o31QMU&&z5V z&v1XJ;00?Z@^CocpjqE^;8u^<*5AlHT9u3T(UK6*i+GV0nYl7~rDso;KB1LOY>~&d zKy($j7n71wvNhnwyi9BQw1($E>Y0^%T9mMq9?aPQlM$Pqeu`~nEGxQIc^WZ}#t znfzPE*w|hrd3d`&;!^8IH6<6B?5o@3&jV8HhM518oaF?ri>=YkM zO7AIrC6u$vm>X$m&m%U}#^^p{^c5kk6k+X&@(SGA_)lEiVmWeqRpGu_Bghlr`IiW7Xf*!98(*XDXXWOp>I2rba`WuPiw6JX;2~HJ z>barH{eV!SCPO|>jqba>Fi=sd5Ee&-7o+#(wTd7d?D|{*y`!z3Q+yxApO#w0NOM>{ zht)KK=SN!y+lTwLV)3*1N<3Nl_L*1~YvOcCtUX&>eey&+6047&tgU|i_1ZTp=Z5WQ zF4Zw|NKRP&rP``GNu_MI?G_~Y{eiolf(KQd+JG-GW||)PuqB_O?g_s<%dZYKFKfpy zcaciYZ5)A2OO3+tUIHO_2;H?BX!&^_;o|A=sbp*vW1MQCN9-YadKyV##3sWI(1+H@ zy9C|}?b<(DGxd2n3|i_|Y+`uHq1loS1!jO0JWwpgm?F&}ZYaeP?65nED#5`Kb4N~9 zf(AGkB-!U{`tH&0I}3ta8F~BqIuQkc8JjSfbp8UlqWW}@86u^Mzt;8~%x2q;9WxPj zd8XkuQG0t-txZ@c*^~AQy$(+7!!W7|UzQ}RdKbd>1@Ylbt|;#cl_i+Vl!`IeDyK;< zSn>|bwQ7~6i@_BAe=~aVK~S7qiW^V1c6lnV_od+c?xI{yLFi7`jzeE3H+Vk0UqT~= z8tgOtLBVK)9xz}bJKW^<-Y;zZ#3054L zAd`DqTg6|EA;2*|r$h-zXSK8fr{ak)ir&32oKO&E_xV z%1Z6qt=j*&wckE|K07 z7%ubvM{)cthW&LaB_kIbs36k6%zc-Om;3)|sIoCct1&J%dr<$DOa8~oC25IGkxAAt z#^Qx~Y;Fb1tl0t92o~(9j~4dn8UB)z%mh)mo8%%^$Q|)-AC{$m&L--qd_5d~Hd{Xz z(=AJ$&T^v}e0$i&lij0FeJG=xrWf7kOteYEOIa~e-_%(s;a&tENN|ItGX4$1-_Y$2 zgDAv8Q|rqG;{bL#2||j6#z|)tJ)vROkHpvYRSMjtcDg(2`Gly*j!7L3P^`+r-5h$o z4|?a(Qf8pupJW6b!?DIupg&*NojJ8rniKx=AlM7}1RsA;v+f3U9eEYu)sNtpjCF8+#5uwDsUiv1P@FE+1L$&y zmIt;3(e}_V4k&>v&H&wiM7+`oYE1qfRg24kB*jnZd)N z0`l5(-`lL}-Q=KORQh?Rh4&}4^MNLeZ3*wjLZpgP|0;~cIS17ne4s10u{TehQ-^Ne zB<4mr_o+kgPf5s4NC{EuO?Vl5RF$dIZ`sN8r_OmcCu8y{JSXiN!%Y$8wC=BW(F6V= zm!&&ykT2G<$mC@XE?fyAMw5ZE@7UbiZXLZjAOyX+H;395Svz93rTO3T#s7Ty;@mMz zq%<)qB`&>FZyY5@M;i`h}WE9%C-3niAdqIow2 z#|4Xlzg%42^dcI#`+Q%#+hf_qK)im9k+4uL#NN60x&HnkM^_e|{V>mRg9RHI{-#jiWMa=@=ZePpNoW(8pru4E_=a++go>1&>DIY_6X{uTW1PV1MsY9 zq{12?1ct(;y0Pq}K{&*U;|8FDy|*rwHpJ(RJh>ihtogYd${Gj!kqaoh1+f`23>Oz7 zvy6n?RF2ZqUky>j@nmo+8j-kRQNRKbkd8_I*m&d4)p6TLYc5 z$RbOH(?VEI4(OzUMMsJ6rwxqCxmIx*846#6^=2{**65Us=HFKtrqy9L876LubYxk$ zJ%o*0rj=W6mD`Ownxbw?^A)mSZIrFe?cgRb0Zr$zNS|(t9#zu+=9~9lFm#$((}y|0 zS*^R|7x4aD_`+B=iOC#zV>Fnu9EFK5Xtj3sUbI@sUE zDVFa`hf!Wo_o*xrWbs#bLqiY3?qeh=@cBf3KFxpp{%w}~rsXtn+K_%3 zvyI%c<@?*)O);s9tcMH(FxpC$hcLIZU=H#YIISG(0ugQBBXj#6xf~*d`ny(tQeXXo zd~YfTKV?+YO|E7}u>s1CC;nt0<4tz>`RP(Ay}+p_f0hvD!PPzYcT;%?U$nFVx`*i5 zGTEDZI#XuyFE@#`K000gb({&O4Nj6l!{gFNdB%B)RQsG{W)u~+E1a)F@l|+wI&g&4 z4ZtXJLgAbieHL0n6DWuQ3Cezt8Y2;roto6y8ELIl=A5NX*_WF!Uc~+YSq;62v3(+Y zGK)KnSBDQjiS~#f@SAMP-L_{!al0^|mBinQ+`kpMQjx2FKx+8C{t%kozp7$44v@1j z-Qie=rI_hs{J^|SD*u$^pzes%@<(w$e_=o81sfUWu7jHD@cgBRw;v%w{HKkyaX3As zA;evdx(7Mz9_YBsao|lk1MWomk=XyzfF%Cq1T!LiTaV5H0yk4P|Gy4K(lETMdMssc z=fV09C$O)d+z}N;YA&DDZ~l<`caLKUa!q@aw%_?fs{Jz~L?{G;dFBT#Rwje=iCU|Q zr}Z1!tPKz0sxYn%nY0SyZy0Y#*M60&Mb4P z_-%9g;P4@`AG-;Di4ptVz5s1NlE2{1EkBK0)y$UZV*ON3q~C&TZfNeNQ^+03P50CoQ)AhCJDuP?KffQ zm`nPM6>2-0arsPwT7SS8UhG>DES2BdiKI21jmtY-w)b zjf8}gZ>K`M=0bs)acN66rg<>G^1B++{Mk@Z(@kjX_(=J~BmD_p2v@0QuZFC`$FaD#Em=UBU|!^{MIBd2H<5H`Y9I2(ec(%T=F!MQ`Wt^*)}R=~k9_0Q z^~GRqOTVn0*1yh--#72VNV(*xQU1cKWCgOMpHPC}TAX zz{8>&jQaJtcHYasx7v)Y_VVw&^#%6U%P+L8y8hjzUPo$PO?g+6#b20%yQk>Hws}z= zTYY&7XYkSSliKE}lVZTRL_gte_~FUYD85e|Xx$RS1ty7olhzq}g5gAmw& zs>W=;_9XfimV$JZuMIWa07$!u_Os&&XK)9%3SxoDIjK*fUu`%~un-ObPIn`%DpRoR z7#KYi|HiwMdjUipW1%ZCBUOS05Kf7a1cJ=I&> z-UOs3@AZmxsT`#)A|`NveIJ5ArV8m;}~m#w3n z<2QRJjY}V!QHVA4Wuu{-HBb^6f4#S@-tKKX zoOuzhuUkLuY@LXm{nsalN9*b-Ta@`B)(#gNcNk839P<$Q87blJ26zr5>(F=GqX3#L zkw@Eb=wEuOEKCZg42kktJrcnG(arbThi%hGxG6Ls6ViiiGJut4R80vN1*W;g$Td#Jvw|5R&d%MrKcU~Wtq0jnt<8c4=?%vK(>-BCU z{Y9g7nEv7g{M*_)Z2V}KxVL-oBfLF+1=ZPauqoR=A8hUKHe{-_jIXwiwi}1rJJ?)2 zcPWig`@xIdmoi`1M>BqH*rI3_&1IvpS?mGnbAe_y8u);&@Ww;>4KMb#8}Ht2!Wy9O zQ387K(k$mC6=Xu+>Q}}?NCHpWA6mpl$kMGR@f1-pi3FqIQWo33xzWW$Pt#JSw<;Pe z*k72(1s-;vXcbFBD+Y?rj~sY`s2wT{x>O^5ozHOv@8cC=~eli#G?2 z*73>F?rWIWomS)E1-z)G{=o~X0m%fYc@&KZ>+vB#FD=jV4Ckr3W*u>Y$PT*_`!#38@$QPk_mWCX}1$ zvwl`>b_P9MI!8PI`)2oOhZAn^H1=A@JKI3sagaDrJR~ zD}|2*#Zr7+`^>BaO08mv;Wjwwq0uWFYZpI0{%jbee)UW7LXfJ4DQLY&mq25}S z#C*G!a!=e6N>nRFvnWfQB0z;L=#D~GOUAR}u9T8Kdaw1!kSkEY-Mz>oc@Vh+63-c5 zbID;js}`D&Myej<%7jDd&B^W_oHRQxwt(q4KC7fH%#;;O=@!MdIXq}5-gDasiP6R2 zXoLqz-hvU3IK0ErAq{9}y3&od30$yvBD+Kiu>;5v!BX+Nz=N)yRYep3LygRLhCttKlLzO&{)NN2bNHeF{Sxj* zfnxP_gFuw=TSa_?25pL!4e`04QetsjFr1OO%5L{u;OSlj0T8$0$A%POxeIQLQr0MqopUpl~3Hw z6(xrD#*>k{*})n}YgOY5HtKFodfE7&Ty5fc5j<760Pq}=lc8n;9&jpJB^T~U&mT2` z=McVrPM@=vhxuCKw%=m_NE{SARPaj~>oAreaLLHmq38@KgURG>O8r%V&QQn13v$pp zXR%yZIu*5UZydlUoP;u)qxD|hK~RIY4&Lx6>Gf4G98F0~@1x|f5o>HBQXBRrm;PW% z)&em2t(~8?_R265vX+Xp6(KnGJ2V0Fhx-Fc<<*SB#c1Qm0fwc{i&CWvWc;w1g#r=jSb2FX$R0FVRTG zhvX~heQ?n!AVWXukl!G!bIF~dQ`KkqASR7o)b>!9P&=Z3dyxzRdWgbuHGZKyXDRBa z4sq(#KJHbIfa_vafhX`Jt4Bo~dFryP!j;NbI$re<0WNBL2!dgVe$01A5!eN`ezQ1) zZ+O1>gNdRxq^i}m?%WJjd&1jr6u|hy{CGG5a_W&Ez}JjO63|4WecUL~Kt%FDZTtsE zFE9DWBRaGMXE2xvt`}M4Qf;p!N+m1`%As!5_TbBAF_opY-o&rhwPph3A>bEqYPh6f+@C~u$FLM4%9-HNrlEs{qur^e*!gwJtiIKk_zSGK%1*i zb~c~O#bg-e4$xLbN^xUHdV*vl3Bi*i zZV6w10w1j$6q1~E&!+2ep_#Bu!~5IFziBof*S?juR`MkD zZ^YyJQ}!=F>wWBD&l`KNZ}Hgch*31A3gei?0tJf8`rh({TF?TiBKv;^)T2;S{%|~j2&8D7jWVn_aoGa~_xlhf1IZICpx-+S$~*LxLlyFEWXJjO=MhGLeU%mt*GCG0Ce zie%2M6z+_g?1xMiB<06TE*Pu_eG%;d`_Qz<-K2)S9*(a#TEV0b9o`ccXDiWqy#bcB zJrMy6EOG#@n>1V}rrBVQmc`}gH@LgB>IA2jWh{g+X@41H>IUqo`sSDh+BRL)w83>d z8WBK3L_^Kg9s5uuuJrY5{^OWaIaW{Q@XP>aSEQ8O*`+DlxV(Mmcbn^)5)LIQ$( z)~=TAxOnm0FIoe!1XM)f1j7OczLVk%ZF%UH_@52`^bKE(Ho9F)S*gI7$OYD?4r&*} zA|WmkDeJJ`efTE^N=?jrDs z%Qk{=OHV)_e1Br!GT-;^Ndxso59tKDqYp=0&u=+8VDbeqf?q^mT$J_aFVPoYluvPO zYm-o(Es3Oh##r!ViDixuy+R+O_Dr3T7-+beS zPa}n*e%gbc$0qU>;X@L8O+YS5_$wi#8xJN%DMPE_%sC1ir1N^*o1}!Q;jpO8sglCw zw01DH44^r!8N;iiAC}w{DusaQpgLZJ+}HA(xVzVbp%cl0PVV*+ObDIuRRi++zP7aY zGSv-B!N|E4+VAByH_I&0FErl*)-RbGpE>Mtez@fsW%G@J=M_zv{^k}XnrE7{cINin zo=%2Wh{Ty!sy85>p*Lxbos1|fa5d~s`|*rr)t7UZKHo%nI$*-XFPLvPTS`CntEjQ6 zgP@Z4B&VR)toOt(IK%SXFEZC9C;++v9~TXc%a%wI617Ey#iVx?J9sWY8898wwZSqP z;!xuOo4o-2oDWIn6WlU*bfunH)&s7#NF@)W8u0Bp@5=2&}kD- z^kD5PrF}?cqU-h;fR{ARhFE_NwZNQ;%!aoDBQB&YG@tF`<6vjwc&iZDSo$xxn+@Db z#BkamiDt^ojWWO39$yf^4JOQiILk^XZ#RqHBes|nOUcmG(rTf_IP(L6ORY$Uvv^x@ z)|oF%5d&;gYqO9mF6% zYx8g0dqhxC4QmajS;;ayqM9$K&7IRm%5N%#{63627t4?GvpUdImu{CS79v<+7#-jZ zYZXnHau987zpm!wfPeai5%< zcJKXT&k9{96Aai37h#_B(0nWNU<)O$bw+y{`IjcasQ>f-HBC0`CI?#gYJnwC$)nUP z+r-)I4sOah>95lhwjs`ZqTjYw zKR0K-c?V-odmXann;}=ec?VOz`5&JAKRo$=c=F$iC-3C5 zEPA@V{|OF#^IxAq-~11M{vZDQ-u(F{vFCsODrC<$XYl9TDvYJy;rv_0$;Dt=_?6uI ze|Yx)@a+HL+5f|{8?HPT$^3hA@&B&A{rOD(z1;n0GWeVK;qNzd+54B9fBo&W?|6?u zRDW&1YuhNs_V!h(^Ph{^ck7|tzV*D_QMYe6;2F1Eu5v^Nb3V(#^Uq~E{+r(1lh4R$ z`e3{g6=AbwA1L9aBhKP-a`NU4D8_dc z8phM;wv3T{E?PNDDL<4>o=GLoqLCj;A$#;ONYELCaE4^Y7oZ5Hj|qrt#f#2=6M<~% z(Ia)V^r_>y)bGqYYd%rDNJ#LnQI~cVcToHud9IAl0}&E( zy(MM;93qjz9b7;FGkg23!{g&^y-Q|XhBL0h`4{1=Yw#YoT3BFzxSPFyvu?9 zB|Dzn6$nD`c`m7W9sK9+`GmV?e-n34=VIvJKKsAl)8* z-v87abm7v8c)*ON|Ecew!_7PHpu^3F-a&_(`FGH`bI&^{)4=b12bGgH*Vx@6BH{yo zY#(p!M#VqSq({YSwDRatHDcM;)^oixe%+-c%KsVTDgOK3Nun=!$gLz-(jnbQ*K`i) z47xk%fp^i&E63N~x^Rb90@!H{UF_$(ko8(VI?Q0dG=BU9Y zJ#)D{u|EuAia;BQa z5d6K^54Iw2C-xOh`^&YziRB{lt6C|fT0Gpmt3^WZnHCSJK|MX%IRs;PR*R;WhM-udHuq@cJ@bj#;Q4d zS?9r;&cruNI%GdEI!rtrr-ugJ!qGes_h%@+Zmezz+t>;l8AMx$TN*cXoGJVw)gx_W zJZ|?RNz3e2!`|)<2Q^yM7!IVhxJ#^8+w29>6=1tS>`Zui8i@pszN`r$%B5gWu}suL zxn1%7XMcVEYWFh(1+qp@uRbGO=qR)2O#Emej~u0xg?e0)0`9y8S+g)tn{J zBD@6peO*hZmcaI+OF+NX!;~mZJr}|JO@++-kG7tt<_=QtGVZ)pgU9n}zkgFR0d#Q! zh!)c>s>(Br=`He67C6hsIYFNb_KPPb_#`m`2jlphXm|*(n20>5Zl;57?ph*}t*j$s z4h+>T7X9LdqR(||sqmWqtQSp!ua%_n%j-s?m|8b((Vl5;ZqtzrnQv=6rzaUbW{ydHN z8xS&$>|o)ZjBEU)Q1fMq4y}VsLR%nCXjU zE;bk;cLxSImN=SJrd*Cn`bZ+vwk#u@*m{yaw4M0HMs^^LlIynQHJ`R)kx~idShSSF zXL=8!yP7Km<|h*7KNJ76^N557v>ag%@DiV2w84Vln+nOIWq=bbKdMP5TeM{;Oq`A zLKb49+I+2klvFlR3MZ@qlQ>{^YcDE3T3LPkkap#5Qb%HIxp|6f{S;Q*ImQ>_Kfb(w*`fU>q{1< zjHj^|cXQ&eNbucFb#f)K&aS-th4d`7mekrPzcC_>*&Ydt``vfx$KKX)B#TD7)M%7x z9lV0xU=ZYr_(wA{>Xk-PbINNj;8zU_FG3RZ=n>!NjGlS}#9d8dM5DTrz*`7G&BUfN zP%3$V64fpy)C%Ctwd(`YY5aaP4y*hzS~)E!hRAQQWY1xM58UbWYq*zl_MZ3L9elb2 zOd+q5M^f21`+;edJf%C^r&{Qzy|eGZYU*X~|NI=xrZ(%b7DApL{jjyO(|WPBar}y= zF-KO+k?w)FBvidd0K=^w)8V5t`)oKJ6VE`0`}NVb9ao=I9t_7!iEz#~3BX8qAQ6{D zF19B`WoIJL=M66RQqK;>&vVZm%5aFF7*7$x1OoA61Q0Rr%oqyqlU|G4fHq`FoL;6^ zS2yd$cH^wkDHf~+-Us_`adEkETlF4%*;o#KFaG5(w|<2$)ffuji?`Lt7*?-Goho%x zrH;%)m@XnHa9K{l(o(d7!x2>~bol=st-4}nSc|sl+aj0wsvK3K?;Mh3tchw=$xRoc zyfiG^w@Uwta1FW+@Di=&u@^&(Y+fDi9lNOwHw%08SAhwEqU z@l&u}Y|V4l{>Rfu!zB|r|Ht)a>16dy(OU>A1^F4(qO!CCvQRVDA>C=-YNX1{Ta$Ei z<#c6UAHr=*(bDe5_Rjj(kDk(6U~>3bVN1^Uy-8-@EUu&WxcoZ*HSr7WQ)VqqY$M0E znD_Yp2!HO_5iVR5VNF2|`L>>IK1aZyHyU`BAyK@@SEjJtR5Zco0YHdf{Wlklz_eOG6tq|NsTOQn(jXuXSU%n4IVG?pEk+{ z#BRm85nXosomo#fXh;a{M7Xa(e62DoEVXNb`_m@uch`ieCXGmg(u83eb1}R@|00ij zwYPb^y}w6*ez3E#xfLzp33LM0NFVKP?H$*i?LYtdUinaFT^-wl=(N;1zkpt>T#fp} zq0oUgH;?Hz>c;&ZajK#aJpIK!U#gVKY+k<@m4CT)<;#-Xlt@1ghSfvNt6}#>i0Skk z($`GxBH*6EJ^G2m(PY#K=lY!qO2uA8XV%VL zF}y1JwFLDMPFa%3r`{_N|D!oo>3ymW7g4FzBfelte?i;0cFb0`bSqlt?OuO<&6j41 z*jrXv;PS=ZJemWLbEq53whs`Nz{5mj55ZC;!brapK`k$*8BxN(fGkdbpZ4h5K+>sL zSKiPsskS86DhL0z^nti^7|};P7nahK11uRb_I=Uak*wYEox^5A(*@ykVNCn*KP0 z7yf{lb}HVlVKY8D>$#o$zKiks=4E5y`;%FWM%}l`W%N~jwZ8JiNvgWUZ-03GW$EWz z@17*^LQwNalC%BHKIz)XFzKn>7S6<1vE*M%hH#kdT?|;pPj|;~-0ck{2)>pQ$$#BV zGn1(cOEUL$?(;<~&u#G&Y7*Iu-MYQ!s*Z>qYC)*d8jdCzU<_Zk(9Jqv;>-2r+nJ@> z;|mm8TwZ_BAd*Y?p3feIeQ!G;hGBLgJJw=pRwMUar2cSqc-IlC_lJ5WP}=R$%9r%! zwqE)mrYX1HDXQ49r>fjO9G$#}uP(-D+vF#~IF@f|DEDiQh)IbkX`ACGwmIUkN+-*2 zh{3w&3dVz=HTvy_wzz_QfVqQr0i;-g2VVoqerTu41JTkF55!sa?um7znbzN@!-?oJ z0>I?QEn4W7>3|w$(Zbaex;RH|F=_%8nncL&CnRXIY4Xg+1COcTHl!?zG^K1IJAP`1 zCXq7&T~nRgVss>m&QotHWk*Ru$g20Z&3i_qq=ai=**g&mSRP6C0HW-3lVvKNxG!O*eB-^=ljy2} zgi*!H8OF^LL!YpebW=80{&f~Jby%3W3oZSL>=xOI4h!*8&_Tv}V{?dK+9gJxOftzkp9&TwFa?`{mL z)N{E|P3qanu*IIeTz`r1Le;ZSuHr-n#UNv?SX)t0+AvR!!S1o~WIX001=eaEt%Dpa! z*KB^li#Lf%;vQ^QmDPRh1C4oJwP&aw{ndn>bdcvkQyA2iYdr1csN&t{(x1E0y;AT} z?@Xqwl)6f8Oh|VlD^K^i&Ksr^k*BDIa@UVnZDmIZP*Sa5(y%);E6!sU_x)rvowS>LL@# zBw-AK7!Gtq2#4w^=T%QCg-@HV7g#@2t(4zfo?JMmSYR@ec_|XTylPduGAg2d0M=kJ z?I&R$m>6{~fnD#wKq%;AphX1<%Re%9=JtrqM7l(8o7nIDm0l1{ae97ik%QfDi z{c%P?^n=s1N73eRbTjTPL>qo8fvRTo z6C?h*g=4Z*V-j@7T86wIu8yu~m;Gn!+X zsBmWpj-i1y#5_eZR3|i7A()8zs|Uu^`v<)9ErkUDm8PCrc~kKOyt^BFFL$^n z6SmJPJg=L?1f?XVj?ItSoa?rpUPm`+b$-y7*=^MHVx`qL6-E%&{lP1$km5=@By@Kv z^sfFnV1YO`Aao(RhNq>~a_HBf`?me!j%}+(+b?P~QR3d zdF-F`s>Z?GuXg81sLU4F@dxfFb2k7VkNL-w0EA!d?Q9(#X@#S__1M`yI`+r)D^?*~ z05eYwuLEg;v19EG{NDKhxRDuuL1#;C7bcvIt`3siv^$qlVxN1Ug`gKK0$rjnLLK)0 z5ibd_RwZfa-An6QM4bh_JH0`b9<|sc?TzPPJq#tz?G&NpnU z>yU9$_(UjTXh>ZY8Nk7odg&Npdj)$C`UcA~7Oz5rdITW|hnN%tBpP}fDUjc_`%{Fw z?A0NkJg{3X;4Iw(|_J<=8R%`e#c_3lq-c;^x zfY`RjtF>;w@3q0tsHMKwjGHNe%U~F>#ea;Huh(rDrHdOWoGFG=7)@Vzrizq@1YhoK>jT)%ofZ4S92x!P@d#%2T!J&~0wx2pp<)mP@~$=~b65IMV~siEljTvW+8F3vC>&x093&mcj*IJUO8 z-~HrzOBNX72RHuG302&9wR1O{O0TWe8c(fOlVhm_MI@1U*u%!eW#$zyw2l~4W=J4i z2}6lNnx;bnH=#jmPwBvyA;mf!49mhB48^~&3W1W+LM(#fq8S!1By)nxDEq!;*2K!4 zN-I^OP~<;qzhaed8;38o?$U`Ntb~ByIBNZ{wR1qU&>@S)Q_J=Jw`szqs>X7 z;fP&S^WHgvNN>M5DvDELvGjpHZd1OARqJm@fHQi_4ux*&>}RzgwY_$WUaaWXC8{Oa zNlK%li~pQiC@;dZI`!dSPTLuozS*#_$=Unt#ncsCD{;p)C=osrkIr$V{v!slpVR~& zx)OMz&IxaBNa0`1kEcROfDb#8GAzOQr8I>7Y`23{iGqTJ4jslbn&M ze^^i`I}*NdQa28Bg`efd5gs&ibc0Hh_HIg=3=Vr!Slt`3U}%?;96r|FhjU(&X%Io^js{<<1H28Y>98 z$@{?|c&l^3Iv}kzeW) zZ>5arb>7|N7f#<$ToY?^)%!;*?tAS-Vzp3d5md~&tn%jZ8Luo1q@@Fyad8DjX7fv_ zV*mQLSbFI`+g%nkd>1TK3ZA^muj$=r>BoGpML8GSd>9SQoN~r=$4wWWr5ChEf8wnTcgpOw zZB?Km@Wu^`M@uK8c`ToqQkL7Bj5$vwJ0wBjN=-MAVe$Y07FakRvVJItk%gBgVdOjR zO^hJCH9z83q%pOiMPIiC(ifsFp^g5NU4@vr-iA7Zd)Tg z#A$BKTUOoJq5^X$ZP2k-IaKJFIyRoiPaH7pX2cF|27(Nm7hZY>mhZUf%y~;&0o?Oy z%Qqp&yTR7-l}uEcQOJCpZAbZgsE-^9`kl2$b}bawhS=%(PRo0nw=2(gynPvr zV}8+lOot8f2R)cY-PN*RR1XbZQ`3v~xPJA7u1uSI_38fF1^xFBIpz>knrM*~2!IY> zuGZ`IyQM1h{$M=pPHC2?%J(Z*m2b3TOdA0~p1g6n3k(KaIF`}YW?fgYLxU~B*?zT?Qy@y`9##+lnsfmp75eam+day zXctL9pXq8?J8HT-7pfB4yYQz<>t%NS;&m%Veg^pY>7 z?<*Cy2@ViV-f*Pl)zpAybi0DV-LGE-hE99DWNd};v+I7Qc7C@#=#8eF|AKG^=(0p3 z(^^PX|JzQSBsj|60pWb<$pnAlpDUiqOrawJszEHP^{@V{?!)ZKpU{~+XFJeI|0cb0 zG;*Evn{XLr8tFZKBv7|!W3G-wdAseftAcQba|xV3a2-g zL#T1NH=F~*EWS9q2ljiy0aOunT8Y;O`Wh=6XX^~yIvi($sNb>k@8}wpuwD{ft!OuZaxmYO&BN2&hFcMuullI#fJe*lOZ&q{oCve2!9x%i`f;62ms&FkQ=hx+&W$xZd-m2 zh{D-w6MoU!Xb8}U{-~A9cA}Z2$5-0q70=()zWbumg^b$WuEbdmAR~jsq_jg;^cUh; zAg$=T=rNnou7nt8G)*pfb6Y#aPsSs+!%7F5r*_*FTQXu|bKH}ZV+^sgW2*jMZFkiH zCd!mbrsrIWXwNqR?n`6A88=U*asm;C4pHIpjUA^q5C+rWh4x)B|1*%=J2zozri0$! z17!N+#-V)iuqpj`wYU9$@d*zk{{Cw{yF!@WJ`d24jly*kbIfFpM`1_CL2oqZ3DI~< z_6Sfzh-B%o+&SNvgipE^^mn!`2A9_{042X zNq1?rBw$%vQ6|LQWX}9st-ni8v`pzMzDyUQyNY`|+wFCzXt%rce0!4+(ciXy#+L59 zy4$8bwE(7}48B|{tyWCm*?tM+&fdm1e)mVOo;_d~_ZyXVlQ+1v(qkE4c3sZn37txB zXeTnZ`|3t>#==cn@DMEY7@OvUi#I9{KFrgK@y$$C$tll;!*e`;V!G<=jCg#AFYwNM zv9WVBTUh*{f7xS`vn)&D24p~3b_-aJKwc$!rLVKw*XvK>u}(8H!vJ5&BK-R6cILM8 zP<(p%E5}t7%zjqy(16Y zE$axP3mkQZlS%Yfj;3)KUk%!W$-j!k<9iceDQxO|%NzB%KD({Vg5ndYOAD z7vw3}3VAHem7S2i8U+=F^ZbdKTFrEW*{S#qPzOE*L9qVf2ktPfn2xBKiUryKXGGKr zv_^E4&_*TaH|%k!C4{xAn#sbH0A`*co=xs|M$bUg7R0XtteP=h$LJl{-Vd6 z0S)UMvR1QC%-x<1hZ7nekwQJrJ}24F$Q9DFx4#!yPje~6t&;x}C zH((JXdZzE3UDX6ZrsmFKEU4LXBt{udB^g@Pt_J&>pY@<9>2=;h$2uuPS`=$SxqjEq z5W3%i1a)Tt;8Vx_k(DuH*tCV;+UJF8*OmIiT3Qmt6`Zb314+_Uw2Du zWNQ;}!}SWU<pS4QT^-oO~Omr=}!Sm?Q;MJ zVqo7)*ef6G1P9gYS%^y<^y*SUa;N*k^66_j;FzP}Wh+y**(UV&J?69s}1(QFfG!*uaB zjz?lOAWJQ=yreiXt+9YslI=}~_1`Ea(6gicovq`o*+GHARCPv?sX3HQAw)b)d;=j!wh9rK@pM$>3?gc9>)rQEL1f};ir_79& z4i2}(#W}sN!Q0u(XtH~{FS5cY#nwm7dl+29L$H~zq|1g zmS`Ew=ibdgnKWWz$Y$V7eL1`8;nvRn#`6|(jc3N6S0>xi^Q{A#+>v_c?`|Fcu>U;M zRBoZWU|SD$Yj3}GcznD)f8#Qx=kMCfo&9GU_`3UyO>x9FW9Ihd6u_iom2Vc=3nPj#@pFDBZF(%m7GDZ2c_mM zLT*dBCGHy2>(}=il`A)YbM7A5%$Cx9(tg})Y+kwfdw=KHX1A2?leYU_WAn<*2dz8D zHoK*CpNIDYw8Q&A+KjgHi_9KZE(*!M&mYJOLf%Y)Qn}n=1O;;1(6~C!ThBKRf7;#? zY20GNIPm!bRKqzpwTo1K2ps8Ptq&v-sA#IP!b4-$+3H{gUaMvp)3FrsAeIQJY@mvTqXH5xz1?BC-GG%cem@WrE~$XE_l~V9xid|S5?UtG zDkXuSw_fo*%d?Y*{;GY|YPCl_r@>mOudI~WQ{V_8M5nZXi3sv?T41rXny5jp2MKCB zx^6?8!EKC@6%m1W(biRO(7T#m8Hr>)iVh%s#9CZQz}7etAm&-t{g9_n$*ru^zY0uT zaVTDF5M{J<@_fjv!LAmiM^zE??y^wKj#_L~>TfE>Uxl5@bXvf)4}}VVg^_jULWB{3 zIyt?WyC*emr#5#o9MaOfV$Floy(FCA=Df#xEw)A*Ui3OpBIpQ=SRbZli3Eb}T?{0V zI`!gIe4+DM&h(8N2%i`@tZcqIJlxtl&TRkPmIgpg*pgYWllMFsidqO0Ig4dsyLQ2B z>L~iYVMD`lLf7RfDcdxd9LtsoXsKx=H9kfVXltEb?Y3y9Vl zCbwe6?$XAq*TgX#wzgg$Z0tRs>7bG0uo0Rq8m7tar}#48wmNUZa;}C1UC$6 zXBK|xrDr&0FyxPz@dw_ zM!D)L*Xw20b$Ji)OxAt>oK|Q$Mphkrm0V4eNpv|Ja4chL9U+oA_%L*E&^n1yrr(zo z0qpZ*uPGXSuit~MzNEPuj&CHF76wg?T(Rm0S}Yw7=hG1^H5Q$dzX~w)kNf?KIp1nB z-iC@C`$%IP$9+!jf(`A)umWUjg+YXjGuCVb-HxXNqk@z@oJ;^4gCVX`wXlW~6IaSx zf+>F>bTdt$M4Kj(@ppi{Xl9CpXV>ru3osdu01~vQ1S)n7svNMKjeuE0cRd`x1;UR- zyP0W@SJuodLP|2$xQQ1fOo9KKHVNc`WJg^Lfv3R-fEA(i56RvVQK0JO&%4$3yX54p z{(P}q+CAE)S+x{=?&v4mj@hj0gN8#_RrDjI$Qm3-qqy6DZMQsLf7UEu9JdpK0b`8a zo^UQ%>RMqzK+sK#FPNYq_BY^swqigmdB7EFr12!R90d66+dOb*!3@n)=XaR$LqX6~ zqKT*LzSnOvg1KW`v0=UQbJ63Ddm~xOxXlO5%z`)1tIQ`18e`4Ix5k@Bl%u|1FE>j| zuHQ

    1znmPJD|TzU)m~fQKd>a{z^XJNTKAd_Gc~@WfuLD9$!Kk|cu^C0D1;{C zk3tx<9~*ckvGKHLZF&J`EZ;I5nPcW)h)}W1M7kW}H%r^uF7H8j|j=AX0v*Lt{_(X>SEW(r7{8;$k$>cS4X8mEJQf9>l@MTtZhZRv(}7u$4r2FycQqodVHuG@u6qPO+gZ3;AX*02+%6gEjfc1p9-m3+n&v2RhQP^oBrdh+O`Kg*>iX}l z?L&we$#%q+fu;76T9HjqcS%RboEPvIu1EXvpV@dwT>zUYvivCZ=q|f6AZt%Yj=RLb z5+ZbTn&UQZMDT7V7T!!`OU>9X;2tVmEgx~L9K_+*!A~LFuNi`&0G02cGAg$|fZpkb z7T|5oN-{LQCR@XwtWCJ;A}gY-d_ftjUk}I3+oM$>sQ9meO;vGM*%*@1R6bdWL}zX4 zzN)#FF25QMKTSvBqWI&`O9V4+x>g(Q%6gEInwtWwW(c4W_-v1Oy`Jo{fXCEZ-a}!A z4r@G8bF$y-@!rBF836~=6Ww0W{t4Mf&e&vjSQPcZ)X}I8Uvm#_(hw|Vc9$I_m!h%a zCREi-L4R(rIy&*ko zs4{S`(fy$J4~wGB7IXHw_N{lTz;pj9m5B=y%!Ft8%@tYis4E*Yrg)n%a-ZyX(O9b{ z%ie>?zh2s3{<8u1ub?0?OXrtMS{!pY^ ziC8uI(mvsOS;|Du~pe0f3T*>LW`8-t%UnN+BZ_IPN{EeGF6h860E*ITk|*Vj-ip z5f(TsK6WAoDl}LPOt>0xPdtf50j%3}AQxk3|)PdEtWz=EG}?_ zepG-cLv)a14Tof-EY})tFuD>EH+PwvA{deW#^*8E=)c+N(YoQiTCL2Uuhn13L*KUh z(Nh;WaIPPtfI~?_UQn*$kv+fxR-E69=&h$<2-bj@QZ?O-mfXX!`r?~ z*b!pqljply{y1t-d*&3N1w&n=C3(Kv+%e6)w8sP-s+Zbzc=-IepePHD1i1#>Q-;S@ z40-;+@*6QOC6pl8wP2SzoTo!;nBjI;bPJIT0r$@wIYPs&5DA%KN{=wQuJAHBD=+0gX)c4$cw>ndUJ~* z@64SHA^LLWR6`ix85Ltksq+uOB|nT#s3M9&P*~HoGZGkWg%~8-xFC@$nZ2y%9sNPX z*~4kg#o0V|*7l(IwGJ0!JZNB1Wo)IkgyyeSl0>O&D6l+*v*LGN|1cT6EJ%G{R zTOyy#6N<@3CRy7<<-?jZAg)%+MtK}{p9o;bZY2ixUFOU3RY$tS*kxpoOA_aRhVd#6 zrm%9RUR{$gUJ>GeG4F}bRFyVhL&kr8v43%L$RK_GylQ=!gNt!i_4rhP%)N^0EU}gX zvY!@{OFHHp`%p&FyRyvQL#RSul;=@sXIUS`L!lr~q{)%ZY5jO@4RYB4iBfMo93g!K zyj#Q772Zu*m(JVK+_OJoPlsYE#pAm`zv|)ga%mOe@vf%E%PZW{l8X{w7Din5Ae2O0 zyt(u|cq?nG)MHR9wwVG-=pwdR93MN56EMW*R7pEJKvk83iwfjy47EqaN z?`b=rIu;s`v+;}%0QDH>NJ(2xmEusqZ`mBq4$WWnR(tlcLrn7}>i-9zxzH*{?Svy` zlvgD$SV`UvM=k)Ilb(^)K##2kAS2|V8>Vvk- z$-}nGOpZcU`!Ax8B|w&iLq1DZoETs5|BxS@L2oCzp^#tH(gMD5EOHD;@7&VdBNokj zlKSUKZQiz`$`FWtmtm;lAdlFhKCwxnCwdS`#tzkdiQ}U0&v(~klUh-R+xa6VD`gY2 zq8{8uj)&tfscDKrdz0InH60hLSk${?CRKR+WjOw%qOrsRoG15(C{kvBi2Fkdk7s^T z)WxD?XbLj`)&Q`rZREWMo4K=LJ*ku^VjF%pFT5asOG^!YO;r}^JJu(L&dRLLa^Ip| z-z=jrG+$|J+ze!XA&%Eg4>L&qv=n#?lAERTCswU6|Z1PWOFCO-BzJ~ zn^n*<+H*^~NOg0I+OTsEYyM$HRY==YM@1^T=IwK<*_Ylq1C||&UA{4r zcM^-c(byEaCR6^!qq8?}IeEjgpZ@V|#r%Vj8K3PeRu@2CZDt9w(J@6RZi5skCf|6Z%!lCRw>nh<*BVk}@8rF0M8s0wTGFCHE z$=Q3G%G=!${(J6LdNVTUbjCh{_oYpA0ar#W1`ymy6ksGOsIfCgge2D)9TsDh_re#u z73J+LGZSvg8RY?hz$VW;Dw*Wzdep3rZ~{~#3~{Hl@?sK%DpBsB>2Gu<>ULQEnuu!% zEQt%@K@p);n4k9_%ndzGN&E)ZTtcdsuCHrb-_6J_SsC+<8U1Y4H`w+L@&O&^aFvwC_zwAd&V(oHVI!bVW0J3W3QbV(@ z+Ih3yF>JS;b1lFEKW`*6+0KQh8hJcWR=PYW6lMse?BuSiLV(ut6&stOfDlSxP-AGE zytvJJ^#&NFVk1LwiHNSe>Er{}{XvT;_P;c*7@bXd&|n}V(`fnyoYGXVQZpGC@Zs!& zXm*KjI`k!E6wgIMA4w$&TLcuk%4CD7(^Q}e3Zf+O$;?0^l>}8l)0B7fXGGy~K2@9JKlEv|&3I#jP*n|!Du7sBoFKrC#)If_k42-Yl z%*`)AQZqgp4?!gl;S^x}64&!48)ReHZC+A0o@J_v>%dlWVL=MTc{hblq{W0B8}Zo) z892-gbS)kNwhs&$6XTijd>RbDVDLyzwX%$Xzo-v&RS z9FK=trP=w0>e-IW~t%409CcMJqb%h`YYIG|EL+&K@iBP z1i1{nm{D0^;|yWuQL8&aQ97W;QIg(30*Z+Xl0h1OOSz6ztgJ*qv{~T-l*VJ&exMFP@&HD(>irel?`t zA!&UiogLf{HjPVZ@l16JQZ7nhRMhAwd8@=QdkE`hSJdzr6fzIPsd8KsDy>53vgU@EvcZf1hPGR$!xai*7%VZ% zupT=~+cj-zQv z{bNJ_*wQ~*O_ip7W|QC+O}l=1PqG6zHw9Wcs}XdD1NOW*3t)?Up6@1GmKP+kfh@jZ z02_YEHEyc%(oiQ`?2bQp!nK(*uEl;{!RZQyu&Pysu&U$O8w)cwSd#F3OV1j~(_C4S z<)}?ir+ha#eRIKq{>37nP=|HuRS#jZrcl2JzC(oj;F$u~K#F{!2T%=48nCmnt`i zl`pAf@F2{#iAwyd*%~IPJ34kX^QEls;T3C9niu*-*Kkfl^e!sQysCTXd7yR7T8VLm&=UO9KvxQOd%Qcr%dfS+W`8?A#4O` z-K>1{jW$0u+e_fYd|U33Mzyaxc(ZwrE=rGn=_GvIN^i=AJO4qKVPST7_qIkatw$}G zzDmMyRS!csT+I9d51v zUCDDTbX;pU+3Unpa84MJ{(@ERacwABp;k$DB6G z=IY9-*#>Y+Jg-j>*)@^CLfR|H{NkqFxv|SbEv-WRQ1_gfCH3xqW^8$_%vExij=w@=L7OXa zEM+*81%#64#EFUuad6UPl8fUF1gBXfGd*qgs5`HQot;x5yYcB68ku%zAsU;Ou?&tzctxU`07~ zcj$IX1@~eFpL+#q)(|33Uwio@~%<6flZT1%m)`I%RO^0t)BC(#*`P?-H6A;mEv&huaD&d zIBbNZubMi?ArjqI6ED8@jb9C`h(JGAP>zivFi5gjXP;&L19eP5iT$0vW z+65felVxw<-u6c6v!Tb~OUu_Rc$0-X2{k*)2y?1!vXp7Og>!cJWY>D)qK3fq%b(u& z%?~T)jVuA@%FKHr|2{ipPa_F2SUL!>(q>kAX#M##=v67;q5oPf?AvK^3l7rR7fH5h zm@^iL`Pnw-@6FBt3p)PPTR_E{+8lkcWX26DcTm@l#AYAxpuX;Jd8}sB#XeH zJu!O)5=rPvt(hk3cna*@%GS;1{IoQnl6|u_SNCsP{|A_ofVDU-Qg|`gCX3nG= z>ALg*m4Zb0uXS|GB@g`-maecdSoJj?!GuAH2ue)+#kJ8oc|D$nEo<)_1ON0!~lZ z+iEc>79qAc4$nUPsoh%yYUiHAj@!aN^;UjruJ`-!(e5Qb-IyohOC@IsSq7k#P`rws z=p#9S_?3l!3*sTwyH`w%>0f+DyFQHmK3McOm#M`>n6g;l@}{s|iPB^ul8Mp3+HLmR z+i`ZC-v=T)fxo-EoBXt0B&JJJ&?jSj{Gry++hh&H>C&JqHR(zCG>K3W^yP3-TN+v# zbW`U2E%HGu_e40*`~%1bz21Cxxs$Bn&b!X##o7L0r?%fXsO$NJ-(g1GiduNd42H{` zrPLZ6>TrEO#?eJt__xE5gZC)YM)JuJf;&u=A!ie1YlN$@Obx63EHkTuhdqwBj&RoB z9ejT)jodXk3UJ*A2}3keD6VNwh`<}nfTuVoA0$ZamzQmA*Keud$u9;U9KAOPj`p$& zdt?XR@W*nG3hYcGiw0`sPmMRPIDUEUeG z^ifBFQK3+Fy9~vIW(z81h=_cYv0EMwoFYh zDETVYe0BgrO_8pz93RnHgjs?(V%zUR$$91kkym zB{ijX+0{O~v+emEQ=*!j+|5&gX7{va45*BeD+tS*cW+t@{U+qj*&L+_Kd1& zSHRrfuehnT)43~iEN`l3>)rXU-gK!g_}${|%5|8%3YmgCXA#7Bf{_|{M#KIvQv~mS zG>{AC2$|v25AWly-RP^YLTx<2#amUWA_f*H|2zth^Nq_|KXud$Z}@JY?IZ^yy=$6C#+jDlo^IU z`msfb5PdU<9v*p|j0@?%x#Ulw$e(hw86d3W9Pt>#*nVYFv_Kgmo5ET{LMZU7B)N5T*9u@}6+!&=6ow}W!zGCp?n}c?T)sJd^*47( z%;7)II{U9y+YvII21|CZG}`XUwT@pdQZRTRwVks20bGxh?w4m+TFir+Xx5$cuE;#) zcpcFBkdpXW8}(R#QVvOhB0G#zg6CdrFd-+8O58w(=p#VO0N?W!LEs!@qLknvNbLYX zZ(Y<7vIhf9fK31d)k;(A^L&sX2f(yMn3AaQI>?b?F`9~22qFxKiApuQ!*U|SYs2{i z2-tt~g2tjp1iW@;OD>Zk*_9^YA8Q6_s;Ls%o_T6QI`=%7hOX;Ey5gKW#}3~HWNAbJ z=PT+h=RH3NEa4#7ax(c$M$b!z$D@R7crGv?oWJU9cvLQy1kYxGOiJnRs+;x_;BjsO zJAN;hn~jhz2gS>HNEw@P@Il13NMbcN)~c{@vnxd|NV3H=N5saF^>V9P@=L`LbG-KO z>LUa&904BcQT|qC>gjU9qj4m;`70_;Cz>Y^Tpxqnpjy~MkmM%1mxxQiMQ!;OPTO#l zjnRm5=m!hm-+?<1h zS8on@>d8$~e0kk~9^&ZEp5C5U`DChP_7yRBpvI>!OmOBCoFBG)S{m86wR^c5F zxlXwNM!yrVIAH5iD2_{pwx^i|)7CCfWBspYV?c{5E~A>a2$vIco7HF`>QChKBKVM; z=$xIsIol~W3H`xAnO4zNtpC;R9qctXJ_vGPQU^GBCG|k?3>JNf8hIV`Pc}l`ni|xw z>-}F&4l$wulzOu3Iu?fK9S1S}Dp%8b zvIAn7aB6hwL-%S$9`3kuGz?dYeyaj$P$1<3{s0Yd3^ib7+JM(=00OTQ_$0V`xcG2n z#X=akVJCoPUFv;+_OYDSjUElH4LCxQ8R)Y z$j(G-Zkbj5r6ligr9x;ovjNd}ZaL{=Zfm&cIZ+II0_&9llFweMXj7L$ep!_q5>j-d zZwER=8PYEAiPvXbm1i$_Z5koQM3yIG0FGTKU3oaG-$JU_7aeb!>*zvJ&m~xqD)YScVfk6}nJ#JLUd+%J6MkXF z*7BJoX|asyGN5gnikr9{WK29jU~7^NFbZv2OgOIXAYdM{^mQZ3#}2W6S!j_+VamKXE6=cxJpN&^T~Z-|?!@S$z^u97lhFJrDeS z_kN9-9+V($%Ep5-1MgH6=L3+~u-^2$s`%Z#)e)Bth_1uu_D}isY+Rm2TAhW(UVSSf4(GCLDK#Vf|13uw?3J=^pL;v|^J!C@R+zj;RlwxI(sP%WeHQB8 z0AxU$zv=Oud)ZmQ7uGJ;+H4|}5;XufkbSFZYMiXuxAL9V0MAr6s!Zs%qoSG92Y!f)wnN1cWB^h5zR=_0- zUUSiPG@P0fL>ns0%FJlQ4a%oz%GL4Y$|n1B=L}*fUY@>teb71E+g)uox0=m%AcpGa zS3I;!O4L}Z+oCQQVSH|Pu~p)4`EWicB>aH^Lq7e?yoTYpQPqG|Fr<4yyh@&7DD&>^ z5aRe_Bg#5<=QvGLk%}VM6K2}3vi|T39X_H{$wU%DLQVVqWj8e|KipLgFi;2^ z*n<5C{S}{nni-CrbeE-|;4-bR=vn}z?JBxDB)FYeDLbmo+8o0jST>BQ9t6b&AVgk} zcpRcQ*r@LeyE`-ov=|LZ5-$1Qbf~34Qa&u2lz&&GH`)6SNW(*YykT%R8YEdyvPoA5 zaiE@<_OZhl_R9RAUgd6TygQb6Gxy(xQ>IkRa5%3v&Jt;`SS9IX3ObLj@%E(773-pTEc;=gYv#7IQL^KP-H0yAe^RiqTc(9Dn_n1FDGXk0>kg5o&i=uHEPDgzGis#8Nw&qu;FutacZdc|=rQ1qj9CxDsz z_z`CA5Pt%km1LVA66_D)TH0sTEn~CqZO?|t6pEYY&C6L4bsfG*O7=1MPOq4eUP14aj-IOis`JR|e(SFu+4?Vj>%Wv+moRvW6SsK%0ZWy5 zaun4RzTHXG%c!xuTu5*UJbw=St6T2!JGYs@0zG-2C_&gGFi{O4zG&AUSk)mU={f7P zOK7pZ<2{FjO&3E*ZAT*!AgGx!kM{7kY3}aU!Yec>XO&$1sQ?FExq;(acbAJ18FO=p zwGhhuH0L{cK@))TRKLR^a;TBqroOS#OqT2~;S*<|3uIs;+5Sqgj!u_*`5m$B2I+mK zwbilpFzFPU!7YtS;U_p)1QgsiyDJ(Gk5hn`VtyL_G_^DuE7e;*LFUmfHD8uTl*w*e zV)-yM{4`T_MA0`#5^&yZBtu=*&9;ra`B1NiMo$1IK4W)gC!5*mXM>vw-dQ+JBO;Cc zmlE`CdZ+R)kzlqU6Btt#DRsLDv!?hp0)NybbAN(qZvOBzGrZ@!kDuXSf(eqAJ=r8< z(*etdD01hhMR{P_Fk7QmNxlQ6-a(aFGt=^aw!`R|kG98s#H5)M-qLfi0=A211*o zWXx~|IG{WHjMO27Yi^Txu$W$f5yG%s3RBO0h0O(V$IX3SncxsM8>iDLe$Re`Zw2|G z)*fV%U1sQJFPO67UrJlZmw79-Q!drUQtfgnI32Yo)L)<}(>6HuU%yOS_z7gCc?A1x z&pg8YR%glsw0=ogGv}JQtC@4nTx!~V=f}4Rtj$|-9G%`_3UR|9%*4f+iXB6)wP~}>81-|I) zl`H+gdRW5YL+>5?TWZ;Vtpdt2G*ZW@t(c29=GgSp(TqsOc1rvQDfvn)C^zpglCf@U zNbQtd3Fn0_R?NHyE=q6&?0)%N8RlOhLJjcVob!9DSG;dALMz>XhOe$Sr*0ToT1}h*}A>a!UI*5YzDXj--gcOec5g;QiLxhZRb500qydS12o_d9PbgFuv#nQ0 zS14m_f5r|WlacP4LU^jzXmSV3LM#@hKSD!o*DFW^+cyMq))P}au=BX44S--s z&`z5y4^(iCD8(f^&8@UnTPaN$G@KUsSI&AKmgTEVDa&jqF(#-QkC|0vp;i*-obk65_>){ z0Rb5chG^P5RcI!gs_CirJ_5*gC7#k&=SorI19fb~HB`P2o>jz}$fzxs|ytjEH&{@f}k`B5V zNJAvZLn|gv|=Fw{^+WLh}1^Pv1&`zEg zmyuGymbCT&;B~{UAW2qd-xAHC>jbL-v2sv<)h`N~K zzeF-+?~-&TxF<_GT6l%PLN+M4s@YUIc#6%zG|lqaMDS6k&4<=%v%jQQ$@lVf#Wg=v z;Th=_uAEcOyJ6O(G^3PqBtE6|?jdtZ=pc9q%{^#FWlyzYlQXv#Oer)qXGS^R@&l*T zmUeumH3T?8JcP%BXT?je;&Iv-Kmlk_xir`lv`Equh-I1{;KY_V=5ype4KlIc062`Y#^X^J6D4FD{+>Xdf~R@n@1YG^vL zunI4sVmM~jhq8)rz8Y$~+eI^r8`)NLcR~Q> zgVA)N3}z5M{_Q5e0X?6<{zzcClVsIk6)I)t4@#}Cm~w6SXA}Mb)x>uO=$qu338EpX z8FU6rkLrZjx5(NdEVh(FN8s#kG#o=lm@mWeCm3xpN=<*!ECbgQCKzMy2|HO5BcGcR z2VZ5VHRg<#XbXwFLVjohcFE3 zRGGQL11XFf4NJL~ODWfa-s{Iw=_$N;kF~@sBN#tIXi)R&2sL;O_&N$Joe^U@;Llh! ztjEGGdT3r!D=hIshXrg{0^7-GusDN|0Q2zfCCw59RK=EG^6WVN| zUp}YWpy{NMyypjs$i@dQw3v&tMsE!Kpy{dx;5R+h;IWhs-2w6#S(y`=;`bV&0_jzf z^;fmLf$FZ9F<~PwuS+9()R;=6iUf^&)Ebmmp=`6x5wqb(*~1%<0b&ZGbD@xCWJ_j1 zEtCtwK`R*o>Dldr6ho}=KM-EQo0B6y8Pe& z4z$YBBtOdUN@@OZnAmTCVD7&BZhFVT1WehWHfJ|wTOzbjZOEl@m)>Jtyk<^Odu&DZEuo?b%ZJ8MoDc|LaO-Mu=wr-lDa+y6Wqwc&z!?vvp4d{UlB1OCCey)$Xp0&w!#i!*o;9H@J`w%#wrBthK$}{1D0?3MqR&Ns;r8-Z7=SLv9-R zp{0I^2ZLvXO#{K?!PW5IE3BSl1*fZ8T1rzu*_llpx8xA1sIcTKh^ygl*Rd?%8P1D5 z_2^=F`&w+J0>uyoN&(~kpFfwHF!(5Uz0$zVA)!*yheyDptm$0we-#}`iV$XHRcOp;_DmCu5c}fN}zh8N- zdJ|~lS>fa%8{GgLOw)+8{eAZ3t|~To^J1QoGKKJc;lX2%8r;oPLc(@?Q(@W=DH>5& z%ADiAF4JaAVA<*9iNnX@qke)q&U5P%n&?6=cWXF3%kjcN>E{$k$tP9tF!wE?r=KF) zvp2Ts@25{*A>aC=T5HHJ#B`>Q1lUu?+Io{TKYXY%sL=q%MDxWU&}_73!-1*(^a*as zPoG}$1cDFEr%&Ehi5Wvay(~#0qPm0XL4Er4!O=YtraA&_#sEWT3;w6G{8Xl>UMJmb z&MZ16wLh1220q%XC>%U@+u5B|>T$6n$@9n?zg;8~={QuJ2agWqZobqfH&$SG*E`!* zCoHGfl8b6Hs1vOCBHT_so(PUZ;vomE3-;8#l--H*4bjrP)c2i}k-2NrrA6>>Mlsq| z735B}!*F=`yBEGq?)viP<927BQVr&;ViQ|9u4B~z=U9+w+T{W)G0;-e6m_uc|Av&# z&qUjVdQGBYVwGejes+T?S7xh`8Dq>vMg)pPr7p2rMC!J$b}XX=?1V0atLEDXaO+yH z<7*i;K}q`b*Q6JV8wl#?vjLq*N-iPV$VSLffwiUk^K8Pf>rOM|DaC@H*lSe{mZZjz zAyCb~Ii=>$N*QN~F)kY9G1W#tY&G#~THL-uPqQGll@9+(73`UdT2EjZt1$Nz#wxy= zvav|QI$BX*vYAzLQ3}GvDO^ND=qu(dTT#s-=v7=O@90L=!dj!~LG}d-o)o@tsoHh7 z%3v$xSRC7szbi5_)C!pvk2TPYi|vO`*j$;TiqcEA!s^ko>1rhRyt zb2>V(L?59c$H)q47s#)WZ6sK@N_H&JS(I=ND1tQlm6*13aN8+4 z;&aWlED`PUyj52`2|^NvBp$2kW(aYnVVgiFE{9WVoItZ~8K62NHg3jaL$IXwdPY&2 z-y_7{h`cTCwy1lS5t+R;RLX5A|DR?SBj!s&7pl&FU|d;suTVFiyXcwfM5#D{c3(m3 z7z`(7J0)bntTLWirHFr|)#4~0Prf?CGc-0i8BAImHJz;~jJy-Zjh2omq*6TqC>vt0 z0C!oj=y#c>CnJ%5J{fs(&qwYww~x3VJiewHB1${V;(1{qvC(Ok8!cXxR+QBX@m)jtFZZt}WH2t8xT?4qyOFq^U?Z6Hb6 zBdUn%)jWjbqDjSQMeocu^nT>4+Q#CV5vVObzLM8j+(6Llfs${?-L1@1qXvP@TWDLk z88OQqVtl9Oz%$&#ekfbd>YB=9?Z+pMm$f!~0eQ2yKG+?lm$3eTt*EY6rm4=vP~S=W zbUawTZ-Z1TqCV5M#Xf6LqCKUGcm_E36-$^?hys;8ZrLqnNHeznz5(K~N#qMfvNee_Ja0Jx<{c50ZK z9CvHyiDy?dU1`d7&z{p6$_W_!XA+F+=y0YkLW%*Agg<;?@kU%PPm&1?C{1 z6oPQbgd@XHVQ5t_0UwgncduSGlKwF5`Nr!+2LPi%ErH{Rp@D{DpED7=c`W7l%I+=1 z9>XivyfpVehWZ`4o)Yu1Aqzvr($QQ2ZBg$uy698Rn@?YLEdJcULc229Ak- za8xPlBSz*GDOck#U>sUd%>NCo!jT0>yl>3=k9|%P> zDpb@dG3<`S9K$f%mgvPJONVg46S82-9c0%KJi$yG+7kt9(4dZ>(*Fwuh6L<_lsTFo zF(8QZXu1b2*$%^&E}#}UQRml&?@hnT?3yc?=WGSSaP@|RXA=kPOG=hyJx<6&Oo2HE zJq$gW3f}31RTW|cv%$s23s0njMKSKVQxG3~ig*C0!UdUfftO@{+52dIt|pl(7a$(4 zcwF6Gj=zsTaF4?myX|@XxG22}Wp~8lUIcz#bQ+=_S0t}!T5qc|NbPz%FR#~zNrClMvH_cjRvesV*Bm2wfsG`@i~RU#*qWxg10)8dw$BY`&U=Yvm_4`wo4u(tv>zQS!op<)8@`U-Iq zEv!%VI9s;vjX>j?J9S`XL!!YUI1y2+o1MyH&N$)Ap%Dgu~+M6_WcCtO{q z(6RYM-vN879t`j2A-j?r=M3BsAr2E^gnc(pwz*2|kB4~9gJPsi=y)X0fp)kjhJO*~>>K_XmLitcA$YNs~RLnK>*_4Dfc`!QlI z5(xzohhRs=katOs=<%<#ja}HdbV6=woFr-}>@5stCE34*(}(vpyQX3EYO=v1=Vrz4 z8XhopL>|OJ5I(Y;r!k})=1>59p9RD~`LMXNVdbnPr0BC^J_30#s>jK*s1UhncGCu? z8)pW}797(#9mA?QWaw}wPIrEn-hj_2#D)O27RdhVH1B&@?^Uny$}#iE34{9S_!-n|HkfXMF4}=3PEX!Q6s`tK0&u5L{8yMK zpNt}2U`Tw90XBj4><1nzEM8c!str38v(Ta?@VE@bQ4QsSa#@CW(mc{A@nziFNV%~i zE#yeqa7{e1pJ($m^CT;LY;AKYDe$w5F3K74oxHQO5K;A48gVS8Z@~R$$Nsc-yfK}< zHu`g(mQr~TD`x6~JdA9$W0AH$SP~vgIT!3@Rw*69rgoHaQ8!V_yTp-|mSRoQX^P#I z&rxcPu^L6y{j~P~wCW{G0t{3!y}kzRout&5c%n9T+M)_1SfUL-&I}D@P-k%q)ktXI zJMD7nvy%NlO|4DIcp2hCk$5IliQ~R}uJ3ntLPJvs5$ZTKzoG^FTDWB%UroDa`PKAF zg*1qA72tuI)AC1FDcD#Xf^)0S=O7b%Sp9r^QS3U z){&>9fAdz#EtNMQ2tA7(SuRgqeX06YaP@_b>$o4S-A3Hq9kzPZP-tOp@H0AgwfNnS zMolH-Q@%@;5vV;ga|}P}^ozNw`=SIanR8f>{EW)P@cs`S<1f*_%RM{oaGu@P8 zJS$~}URP#z#+Mz2`(@#AI#>$Xh|5Z5n5Z4qjO(fWF2TKF0YN-xSl-LK>BB_(1~I2eFJ%k?34%VYW9)9RE8Z<^x5T|DCS4s{4uK-yw^q zJMk~St*RRSue`geGIV0>*i@~|Proq%sTNtvh{)ocu8JegtMBfa(Q&3a}pepp!Vsc3bo#GqX%Dt;fdZ47X zMOO{1zMHea+e$1Y2fB!iq3ox*N;l-B}l6NUf9t0&Qd0{{6QVBU+0w&C328K z5>LBDnpYvK2_;pvPlJp~NjSNF9$j}7EpHDP+S)ka~SC|1aRc1Az z2^vM<&L@jP1BORrO;ZsxGf^JFM>&vu9JJ!twB|H)8Qp=S<{$jlBwd$|zvRs~OYQ zYr=cJdft_m;ZjVP{5m*7qRPqc(=OaI!vV)Dr>wO@QQXi5&mr_t_cp_%#GE~p)bA3X z3%LQZh9gXzW2!)LbQ_zhY%0k#1CkO~*f6<#P(f6OK{h^fa6hO0jEu~{e@?<&#+&xd z2HZGn=sjo6RPh{Bnt^A9p+3zEFnL3hHS-;k@p6yzfh7IR2I)8-`i>@LYe^yT5e-r9 zF|n`*WTULhy#rTb#dv4KHKAFvhz-60>yAxzcyEMa%lq-Y=N_Plrpm(8172=D^!Uzc zey*{a?O@P>Wg)Y)7aWXvmKPks!9pc(I*l{V#JHri1JeP}Xg#xa3?0N`0GhR4sPM$i zgLa32!ghm`+uKRR5;6K(v9hyQtjzJmP$#WZ%ut1G!ol9f$4)3@aWLH6;0pUjoMp4| zhg^oy4P$fNEBix^Py_enivkWEPdx|v%`)bbCAsYOJjeL3k zj;u27vdQg`?{>Vq?}kVQd^YHEn)Zn{Dy2)nq6DF)xIjwyJ^C}I{1!n9p=Vu+rgAC$ z7QA8x3U~~27pfcvrM%$DQXN~Vmf-~Al^Ex9YB+7AuvN;RYwGV_%kfWFzowrvVM?1j zA(ZnBX_!`$qG1%W?^qa}W7rR*$2R{sZ%Q~yN+jqno2gLiyUuh#<@>%h1Q+=Bt|a?( z4JyiqGB-0LOJ@8VnanUgew86BdnV%J*mOz5-{iHV?^>egbpfTan zH4H|OQf;zVD5jWXzDM?6pYvhg=H*ztZ}08iw-!}iZ%q-N5J8T?ThSf3A=IoXe{C9{ zEX%lIYohG_tn>EO{$U4Wy$&2%C>4+yHUu#H0?B>NHWQ=qu$yH)oJVe)Qr#0E>Oy(0 z?kGozOB+8n=yBXbTPY${7bLlLtk-}v^XuFR(xwGFL(9D>`_8w~w6eap5_ZB$;aKPT zfeamJ9e5gt7;qPZR1^svv-hhXY{qmkiNYo!gRasdFSX6JwTe*<&4px0pX(%wP%OD3 zl^>RR^O1=w6K|-Je>1pXcz~wns*Zx?*Oa`Q9&&dz*K|!7R;k^+7(6cknD0^{J7-6g zKvzz84&19C1U8UDE{vp$>-jt9E-&3zrV|gJzIoN>&S4&z!~9=0hxX*0T$8t=pf3z< zAPB2r7)<7%bIcPjkqdxq0`}A}iU^2t42uewiDsYG+M1fYDhv3ch_Y14cbE68&D>LA;H-FjP4?wk}U6-px64&qvSK>;;*996aur z?W+0hhcM3m9Vz6}0Se$a_gKRwA)`ULlf1IRU(@kTcNt8v7?P-k>?EoTl}apDQe(^# zX$ADg3u{AxhT^U@!rKXUWC>!K+U4(|@cy`{^I(wfGFqMCWw>btk!all*=0r!V;U?~6N&mG#Ix z;#pXa9?z_a2kKd=MSN^4I+^IVqbv0TCaRIhlqLV7vZkoDy2c6BxL2k&yU)7nCT(Cz zJaSF9(>)0#6bL0D!Oqh*@e&h*ZY4`G8_du#n+M~r1FuYh{00fA+3q-Og`g|z@?vJU z5CxLAcaa_(4T~bbg0x)|R&rdKbAsvVha#uDg#Fz@CfWCpDKfV8J?b3qzk787G)d?D zB6=qNW15Y>o&z8`7s(P#owx0Avb_^>dF}$OSZiqp5e?;H9$VQeavUJ?N1!~W9?&hlkb(9y~NY4P2dj+uE z52VJ+13ZGbHN&s50rD#VGaim2b>ED#L1a0gF1#`oha(Im)SZqCLmH@Q?GKCclF+om zE0|RLjMP2O`x9^mh}5N5v?A9;pB5k@bVN>}0D*$6qWkD8zMQ1J&*W!R?nP&K9ovae z*}U?05Fm>9_QO}E9gs(mT-DWM20B)cNZ@!ilGsO^V|BnXOO{>5IcLi3PKYnQoLu3j znaDwr(%t)@>gQhvT~oV&k4INN9NyjKbja|_qXC>5R`V(~Jf@j1`TA%eV1{`t1jn+Y zJuv3`Fh!N5S~?_YqiewQGOQhbu>z+DPNm_YC?(v(#?G2uDqLOGo2U!aRes+oXMHv3 z`(%(;xSe{0N=TU;MV`GKXVp>gV|hM&T1 z^IjGFz&8l%ydm=1pvPyy3r?ceBeB#Jo))C048``h=PWb0pU0bwNZ1vxw-X*$a-U2gD ztXXuh>$vIazTX4FY6mvD?FcSs@aL+#sSg!c(lvlW+dQRysFF zG*&9K9&4>sYNOno3Q56*HY4qoOKrs(lwu27cBmu+J+b;%YXrFQ?gW*qhwTV=m&F?PC`kF|HKCVoD74I3Z6~)1n7P= z3Pi;RkQFG$r*NX_L;^4vj-W6!Uq6%Nx}+XqO9`n(*=z4cpf1GA3(nwlLK34X06_E! zLL}iKp+~(d(mqbR-K;3Cr~L*8k5MgIBL$AW3fJNULNpG+zv9m+<*0B6R*HKvDH7d`P2fT?Ra49{Ckf>a9{bxOMmSrP)* z822G^QWw4!MFAiWWl5)qGHP`&1Z1g*`N2~C$q<0KfVUE6Xc;08IDnqkF z$}a$Ld56=MoeWERymbFTk43oKtJ=>1ta?kA_Ok>(My*~jJKSTMqqM+`*o+L^43R~W z8!ZloV&Jh^0m^@h6+Z!jKWDz(*cJFJkjdrXMgkX)wX=;iLFV480i#FRz%3d{nm5)s z0+k==$zq#PdP7}VN$f_+FeybrcrHu3w>Fj(dL8!A08P-I2Wdr=q_|H?Z6JtY(uags z1l=i3Z4e#|xqu!Vc}8)UDWvT+Mig`n575DIilU(cBHUzSH?a}4Bb!OtFcR8{{DE(Y z^d4=yw7ZsLc4PIZh_0l0+6qb0#TZgZx+7;+GX?1|Jz}{X0we6WH2T&Vk1Klq=H125 zNe4Imomq5@ES8gby8#h+3;JUI7}tQ^e`}!NNwiqBf>>C5d$#|}>wVBPz_MS$Vk~+> zf9>TE+y)KY2~*t91~-%28XVI4L&OWM#YSoT zWfhL*ROYO3X%gr27{6iJFT#3-kRfjrOPa)gnqjS_6B(X@k-w<=YpZI`f*6c8V0(Zogj)HN(~H$Mctn)Ui^*Kx zlkl2ZeO=tVcY@tn^6=_E)AObk9{y!KG#yt#F!9V3LT4!ocd?-%v@C>+;V`)dzk`R= zR1n%8gge+EGeE>3tP+IpF4a2WO-OsueYsILa}9F~zxHae@P|w7=W9@El}r897V<#m z8X$fU)I0|9ciCZ>13PLXG(0ujhrm^P;@_E|@DP$P) zqZHZ^e%oawlbC8 zLudSA14>zpTX1=;{-W*oQPE7M)K>D`tGKkb_Q$j+Fn#qb|GC4lBLoLH`*=zlyZ&f^E4zBqJt1L!XTUa0-A6zHLk zw1&BH?2QlZ+jlAOS_^CsnxceB^UxTEST-JH|VE`Czo@|CmExr(1l+wM%O)Sg{ zd=O+j6TP4eyQk;g&aO;Gz5WM~cAA8qDaQ152=_I@OwcFg3c(OA?ripM7e5I8*ePRe zhv;mI0|Yxdh+1ywa0A2iLO3gaSkbkgibjI{fm+-v7m5@9e9G07DoKdSlGsOgqQ1jj zcyz;0!j>zfx7zHfGFySSU4>()2QsuD+b*uxaaKU_3YB}FX+*$fKJi$01eMyB;(*1~ z&?sxid*dN$8>70~2DdEblfZZ-_9O+f7c-fTlR;!*W|-XD>CBU_J4yF$r*}YLWND8O z0n%@U4Q}o-ZUHIM%dVz3H%Q=tXx(6`uSH(Cykc3o`ScSs^<`)U@x{+ctyK@qFMGLp z1?F1?$q1EDv38YBzGT?|yf96p>mViW_NPVuIjiH7THAbrJHZt~0=1-zoCDyT^CY>m zC&w6!$#iPjwrlWhXksq{!Nu{!Y%!6AnkD4mHK{}mXuz~vE~B4+%6_&S9&_I~6ewJ4 zljf9p@bLt>?;SOR(FKutL=TGb9WC`mw~uKx$ij6vK+casp}=CHBu~d<_a>nOZ#ixX zs!B!k}Ybu{e>2MNojt`!<-#fgEC;WZW>;un7>b{C!FJZ@uz;jw;1!QlFn(;{hNw%1Y`gB z5yt-U<4Ze}hRQU*ap?0sVjt1ZWHI^aX0bA}bd6#O)V0gx$B!RYz^~&^=pgz7?e(hL z3){)D9qWQRfA*9SGMzN%%;=6Eh)be3bn@Fz#djn%(C|_NE)g82gncE4TA)WrKq*pc zRhsk$Ve=d*XToWJatSD>h8Tyt2pU1%vAT!~@md@k)&LVg%Kcl2-q^o(MQ4nz@;wM$ zgJvfrslp7C;wWdn3`pff7nzXw(W@)FPoZIV$@td{HdHHLGMEN-P$fR-F;xOt6hoTCT!(%P6L;Ux{QUTZQ+;JrIV=i>w?b|(n?e(al7lWP z?_7I=Iam@f6wx-MGsV-a@>FV5SulRpFFh|bS6+%qd7SK@Kyh66>Xlj|+V1HHRA-V#!S zlM{J74-M;5`hska>Q5svbRs}RlEOY$c3ZQN+lN;lQL2OqWg!*wWRgPYKk`$v3KxA*$pHfz-kxpj?Tvw) z8TR0^%iwDmTgu>DzuZ5-FijOQ*!pC^SH>4Za1`t`r?5AlVU@k`+tXjvHp>#&@|sn;b4^?W_FLSX%FsXmgkiG`N;$d`r& zS&uxd@uSfp-9ujBT?*S)SDOL3Hk9>2Oz3&*m5^!I?Deu37ChOJQ!_U)nbKh8m^>lK z`Ynl$;ri}Dth|3t)Lu__%QMl=X zhyY@Xht~jM0LwqPwzaV1Z21E2vDf<-hre>XCbP_#))GB* zD6Ssc(?R8i79hy3jWtP>)s*dr;xhyp&{3odr*b;sB@F$wW}XbD+#F-J3RPvavwcEiUffeN|!(t0DV!nJiMKSr4i5>R+&jZfG=i(Mzi5k zscsl)q}B{Ev=qrVg&GGTh=S%y$+eKoaatX$HiJ?#B=}u+X9uImFgEOmuLxy%?=HQ` zyVhUxm(CkQXP*7-^7Z~NCx>3aF7#Ap)DUUj%K<9IA&P(*fMbH$R2Uz!N$}jO+`>!| z=6g(F6b+>T#3Bl^H5)s(GKbdFwe2?&TU?s@mtP;3bUGYijl7B)cW4vI=T6_vw-YSr?! zrF*Dcuf<2O)G&n_>WJWjrFsK(S@zH>yAQs`BIE1aPsS;UXVan>c5^iDv~%56(B|Qe z9Sc;NW1I*p2!jRWv8+eC;A@EixsJS`YaSfd@I4e&MRdQqq)Jd{A=axDzf!^w3GmG{ zji13QbOr#oM3Kg+cZ%RBy|l{%$=~U#GKi{R8mz4}Z8H#!$o4<|TSM}R36U&~HM}cC zd`?QV)&iQ3Rh`lHptpRJ4I~ia{3DA}gC9G!0bMlj$o{?)YZtIlIoBE-7+B45x2|gxbjQ&ghRA@G(CxYEbRYtw*9jmo?U&e-H%xZ zT>bhZkGk5Q|DyAb5s_`Uv$Kv6A(wwSIbCfpT%uMOY~yP^!{^`Zd{5+)g^3+=31` zFS`9Szbi1b{}{tv31d|Zr{ivhz854081>U`#*CQZ%CegjWXgui$QsFQHl`S+3519O zD}N=?hQ_}Rr-oxpZid4i=dhk6*=NX-?U#W>9Dp8f^3Ue3D9CEgycm;C)4e3AL=o06 zZXrZAkc|DWhLX%agP4+nXFGodCz*=NTb3G$57-7*NA{5+sf zki20${G9hPR&GmpK=XnCxJ_Y@{2*eIEh4RPc4P2Ft?q8l8g%0pgW8{Ue(C)6Eib&K z3hL~PCo?of7?*$jtAS#$OR=Kb_KhtH-7?EarXvHkMuP{%_*nI&kfveM&@t#P9gQGR zv2H@mk^v7rauW$Qp=2AD6q&j1&8WQoRnE<;lYj3x=>$qSa0z(&rDL)T(79!EqOuWa zSPXi-10I-qS`o<}@OK?_8Nu_;DcD|JnuhAAJUaoyjUG)krXCxkmG_@=e*Tg-(TgeQ zO^TJo7aac4znk8% zy9MY|$semOt1(I^aPG*piI!%Z{POC}0o3-W)u1n6unXlc-|k;rbk0sMUv*A@x%hSA zPdw{$$|dVf^B441VkUv%ww5{8odS|{d8v|_5rRz3zUYpJCBe}>-1eRXwOX19NC&eM zd>JP1E{>PC#QcctSN<_gP0g<$;vHuyk~o{hkd81-7GboDhRlSpzL@+$@@`GQbRLY2 zDC+pvBxN`S(At>d2GAIq)7P4QF*8dT$$b)fOBhW3D*u#m-)okRn3|VcmlKF@LQBl9 z3Ao0x>WUL^<HcF~pLvDnGb?>$=PYues ze0O@jf843LZI#<^Qo%Pcl&7Yvbr-hv0#6a_B1j;$#xV_ZbHefr(*tnaeh&VRNdg2C zn<7jHw4-`-CoF>=!VPlqCpJLg`t7;(DRY&rf9cm>ol!sB*_^h()?M@KQhqm5Eu)98 z)^%7Q1i%HZeWG^K)29~T?yfrk)(i$YZi7Zzc2N_1!n?c(lv3hTK0+TL2gKkycm8Z| z*dLcDA`G?6)jzt-I?Z~l6+yQ?~G zZv3u$0=?Iu8r*|Q)hldCHGWfuoq zdj0&lvjtvIt(QjUwcoOfCa56jZ8+B8UU*uD-$i*og9+U_5;F++21nhK@ zG~JqG&)MDHiplP7tKI$Z6?{OSAKEvZt*}?Cs#hNJZ)w0`tubQr2gMK%p zyq)x^y}72B=HT|Aq1seRzq>qs^XlmGaR1x};dC|Km8q**Oh2nG%osQFWY+@H#`(d5 ze2-05Gq8u}N|7bjsoA3(2be$`8d6I!MS<@W@|JB~U_I#76w-$qT;(w=SWzfHKbT7v z`s*&Bx|fD8wm@MR7&bX$r5#2Qwtlhd``2B_jyXmECa|e((#(vJr&6pAyFd+v9ZU)Q|T(uYaEJkvUxEsxv1gzFW}J zQo0h*8s7|B_;$d93)S9Lv4FsE3YHLrF)k)nDNc}J=dx@`LS+R8LN-vA-5u55L4u)J z=ad$T%hwni>O-_uQ5Xwsajd6s?4)}0goxyKRCYWu6DUz#(L+CqHbs*8*ZO!8W6;_|TIS!`R?_2Gy58ArS zIu)1~4J-nd#0CaV?a#?iMXmlbyD8F8rgS9WM~!`37&1n?d-nI{Gu?o9jA$~c6+8}h zgWB-AE`f}VoklWUR^1gVR^^JDg~UJFiclcoCb8qpCYR~-9&L%Dcjp;4Lb3Ne$<;ga zW@;9@0V zArm>+CrtCSL`Ea`6!bz;JP0*x*1Ac`9DpJihUd{xO`NBwq!19tLV01O;>EOkyCAOB zF&vVqwAPw96!8-;o-lp#np<+R8!lgG5bp}>)hF%23FK`LDhS;eZ!FNqkTI@$$n#Ws zPP?#Px$Ti?ETg^$xOcxvlp(gq0f-2h!yt?8#T6X1Ad{p^}@ZkpTLMOqVVBfG+EN7}~=;x#`|88;A!8=@fI)efudlOC_U;~0$bPz$Ov`fG{N(8ywsu?3Vk=1x)R%(DzCRJZ>Nh;@T z*0{KZZ~#LiPaYa_XuP9%?A-pj?OjX?A>!w9l2IMz5>A=yA0 zjuOqu`O51EM@jXq-s%1UtvBTV9*{F^EGGvbj7vIEuE z0clZ`bkoVQr_&}X9QE2Oj%t$=&q zYou4*x((cE?nTy7Q$PXK5o4q#)n&8)$Y8L)=nusV0H7@P)4|OYSO(78+g${z@){Ov zh;8(S-Kitb#E4DQfn6fLv}uLui{)|5fG2t1&?FVzAc9Ax%)pizi1?=!NOqXrHT)#I z4aE9FYC4(~l)4JGtxs2^Q&+7paJldLT@O zLucrMA0_pC;^PF)x0TwN2XCemeuBX4d;BFYA4oBJO!O<-3nCDdRO+T%5IN! zdK`YU??RUpdZD_*CF4}6mTEe0n~}ZTrDh~RgJ-9~UBo9e***!O zJ&pv80J^zy3mxa1Nak2^e4&&A_yy0P+rvUwjLf&}J(puOQqA5)y}m zkdTldJ*hco2x&N0@oB`0!O%DMpbc!Dm`{vJJZ!fNwJj14(>n2Vwxy*J8F<*= zbtr@q4gk;cjXA?5)0Mn{yY#<$xNNRtdj(%W(&t9p5ES*wFoez~mRj~38LXkYaZz?=%@hAJVN0Ba1gy7(ml?ylH|zl zH_C*N&ZHE7EMkfzZ&*oACSGI;vN<7vI@2U1_R>GCJpluAn*k8qIi@K9iK)WBL zL!5WYtI~8XC$;QmC0YD9y8OT28p<@T5YQHFK)6OwCeAIxN=NA+D>4D6af$uD!{D@y zw_6ZqT&;E8xEqB1mEJImiE0Hrr-74*1$lX2tFuJSBgY8)JeuHQ0!qS)K88%Qgbuf9 z$iXKBr$X@N=5JSB8c`bKN5~6-IE$FDlQybXh6Qm`Ee<)PfN{Y^S{n`Lf@4Qzm6YMF z*9dR@1(m@$8hu?~@fLnO2ux-tfD}_>R?-k2l6@!$*r`LS!o#2r>V85Y9ChC%Y_wq){6IqxP5327+!Oy&J|^`S{%^P<>pFj1356kN@l=ZE90+1&D5wRQ zA&gsXV`7_cL~xle8TfyWoG&T1&1uO|gg$RhxI-ktyVbdV+O_QL=1@BCN$cg9^c&76M92IiQPqdY99Z^fjj zd2t7OtmEDB#rbMIi07$_`qHLb&84@&pLj zxC4WXKb=h2&R}T-Umb4=OMe9=mUAf*a&ZF?07VEokFq2wk&OriCax?^e&Iy-X$%so z!$)5cd0`EfvrVp-TN?qHiAfvNH`muiRw6NhK*blRsH2F~+AReDZgCUNgKKaw1#O#} zb9o@wDlQo<0ZSe!iXDXwaZ8tDGNEoMKO9gYls9idn?%p}^CniZ)qxWy7^Z$GGyD9* zCMnW@+=jzT8SRmMCZN0tAytv9XD1hO3>|W+MOB!M|Gdq;G_ndAt4$)A1I5KM`S+H@w7dFj`g>;EI`31$%7;?;oK!I1Bflw zknCILN^mrcH_IyGznWVx@>>Y|4Py0aI&%It8_mXL7G`{oJtu?l&OTiJv1kS6&(?7?gK_0*L@C zrs9}^uxepFQMDFy9#(O=vsim5F5?xLKrWLdJARD|cyNSNq+}c$%-u)sR$Ce!7Gsr$ z%ZzTdeK|>nqY27QOTI}D6|uUjY+=EN` zbr%<{ev*(0zIa)#C=t=|w+$VO9k(i4!jdpiJh3u&A%JIlclXSG@l z8-Bi8fBOHd*3C`BkZ|@0imteV7rb0i2!QIhR9#>~t6E;+yInviTn>YMI660_1B}ii zuglCW@1;DaR>Soao=XNQDni}iX!TNrtG?Hh^8xpSSL;1&Ado`k&V)g{MEJPoo({T^ zbSZE)yMd~!k`nll%+qeJuJ6HThzfH^SZ?~RwPASLx1H0Yn(A@`H+6%y6GjAPpxRG` zn<*Jo5{@^(0`taFqBU#ZIde8#gLD)IoA5z)m&Akq?7K+0fz>0Zm^$dWnWVRKyVrtmG5+mwCjXPXWqz% zAa!@dgNMtN5*+4>96wSU5?HRjs2UuF`PE(H{>xRNQGbZhM#4q$l(3#4n3B@Gn*}98 zKK^*0mnePs_1M*CgBt`NHech9$Q0VP87p&qP=Vi2!Ay!c9mLPQo zy(%~=+bKofo(1Rau*h+VW{u4j!njd1N(<^y8&t>!9HU1_fNW0v#!0ty1S5N@w!4dk z8Jj2~g|MZ7rjtNHN=j!Tkp{8U0PTItMF8=dV!OMD29G=+eE(p;J3*=V;q~~X?l6z{ zFSj`kkV?pH0ap@YbRWZF;f6+o4!5(z`DI=dqqJ+TI4^vGoeqK_RlEx!A?b#Fr>-Z~ zjq)&X;vI9=8?y4~A*3bqhq$a^wi-WE4cdtt!puWa4XWym`3Y7mJJv_@-tngg6mr?v zJT~^0vG1@&Z&k%Y?c#XL3G9P@dQc$655i{8rR%quBn@sboGK@>z7nSFJU?K7f8tAn5rTOtxB<0kwWl^XcU40mmD3Y1(i zayH8=Y}A>Vk8HGtCrF%#fXQrE|rE`Gu|I4jdyC|N+ZEi#d6;h zmE=mFmIK?W(x)7h+LU%eL-0H?yNc%vLJPcy3 z;`9eEB&9aDy`tOBb#ga(T3%|>x1kOS23sA44@K;@+>dAzP)b{&=K2AZ6#Ttd_`m*@ ze>Bs}>2xv#=bh!%=2mmF*?M6;c~;Wy|I6OhHm8v!>G`_-D{8SK1bcvlWRGX;k+ler z#f<hpq*U=reS4-5^m|EhvNE%>vNC_` zH{e?D+owdI-Q*U0`jgz>7bB1w{jHuBRh)M(b@ob$lNO^JrADhEN&7^Xd(vGp&B>FU5oEx3v=9aa^r; zb!Bx}{jU1FS}VIZNF)!JN4R{W*F9~&zViExX1ia!)P$%y`cNVof(yww2u|j~$FS^A@T%5SWDzG*jG{#x=P`n%tzp zoW_G2-+O)4XxPVoy?fq1v9I(z==IL+d*?@LVIIPic9#`H%ZuGX48-r4arOu@3BXXlajh5ei5u@%Ogtp z@S&uu(!WaqdSxJRfs%&{{%}C|sj#zAprHPEq&~%oddZiq!6ykN{G%QGr8j;l6zB<~ z+N$>(XTTZ1xV#BznLq&rtAI?!>;Lb{(w+~c?W*~}I79SMdo_Z zw{^AM_#N($H;Hn*SSwxndU){W)pmeS7fJoTjsHPtJO6>tm zUC3v&ITr2Sz~EZMGrdC!Cgvp*mX0-0xj8Cx{StGv#m zG-Su%QmpG*C7Ub-m5qBB1bii4ITfr5F3mQ zcrUy*Nifz#nSsy^b;d!s4l4Is{_uQIe7sK%e|n^)UlaE>XeZxby_%TYTwj+d4lkOt z9eV*QFkDPt?q;~P&2}df4kD7N|AfyjY|DiyQ$EBSdoP%PxXXVRqc$$8it=SrRr52E$j!azbmqQlMho z2C>O25t(guFb1>{J=#||gu;-{V((UwBX}xb-^=@5`#ysWZCzimGxT7QacN&XPdLT>R%1Xs)vZyhd{0r}#LllXxk}0qB!I3Hyp;X_ zL*o#RUl7xRQ;xX!yj14@wUSpIoN3kbp{l7uhuGA=(_Z+nrfRhpwWlxk_tgO*Wr3kz z%tDalV9YF#4Xwt|)WRtw(_$Pm+t4WVg+*{f8)>R4-Am?(`A);bK_H07$d+HbNO{49 zs`1ne?KsLcxc%j4l1C z9rGv-W)(4IpQK5=Bq3&OJn!kYncW>LZlJLVab1iM&_f(Mv8;vVGcAYP5CRrKpvhXy zf_ujS8=ra4=^?_Q33YuQEVHWHCV*xaZM4ML*id|$YBfeSN~6V6LI%rn3l@u6G}0cD z^3X)yHT%w@w~<_AP!rm`kyJ=u;~{Cb{6@chfd%djAP(UOG*}y*ygxL->{6<%z2)#7 zYPZpPYPngtCd&$;_eideuM1^e+6zQzv?WMxq`elpua{6j z=)S@n9hOFE^{|-f+vgrZ`2&io4@*7J=$& zM?dfp!njEd*e$Et{@(&?wu%W?`L1kZn$pY>gRWdeK4pu&MmKUSb$y_`?z!HKni*aA z$+bSI%`F3JeaCd$shW!>8EnD>iS15Zo=25YLXFGTm;6JEuEHG2ETQlXYYWFJ!7%EzuO$i9u_x@V7xU)1=M?qmk@33h#hoOO9xR(-K(7 zMOn6jz=RRlWwN?!)-*L}3x6DX#DzVQ(7ftsq(0Ns2BVLwg*tAY94nl%i0E}9sm&8r z)G7_)8bK5nN|+lyi=vv*O!c~-d#9(4jPEa#h4#%jjh0K}RgV3XE7jD%sE$|7N7((H zV_-nRL~P(m>Gv*5-dFrtrkyD0gob-W$ zCNbd{e^2XQOwhi^!K}q4V}K+&g`;V*J!%8-3nEmRi@+X&*9}$q6m5n3R;u+W()$X1 z{)d7jzfoV01^%%ETQ8wG8+5HAVXh#kt)DK=>+Np-z3Sr~dJ8m;#o;?kE8>Sf2SNRl zsDs6uuwP3?mB%3&9C{d4pnsQc9OD$^oirI&o7Uhz%q$LnYzkngaY7l)l=js?3Og}}@jzaIS;ze>b)IQiEqWwPSm z@W{YvKVr0qd303|Tw*SaJr0NZD8zLTT>lN@y&P$Uz@Tw1Z80}oiF2%GGwFsX(xo7b z8uWXV-&uEjhEh#zY1A>04jXQ>{=~@4%A1yCvuYvaI;IMN5acrn8ibGSug=okX|1>* zwe8(Tagh#Fk|Mn-hilLsvFt=$aO#Y23eR*d$|i99+yUil^tyv~cSsHDhthfRudfYO zq$mx+f35yXN{$1|&2FM#I9e@3jf_r5X`jsJ1M6J8uT$B3Ow7{8Lk!(gOOh2tN?xas zh6abK!G7zU1@QOM$lu07bNqKvumN%3%GH#~k|eDcmtp~{Gy@?xXv)^l_Ew9Q8h?4M z-v%iMwInHa$&O&F7>jI+pEJpoEQiDCUT=)9Bk#Zf@(Uc}(Q)Nv`rF18(j^v3$9Ibk zQn?6&)j3N>@I9Ko8RajA zN{Y9QnKz$d)jEweEeP+G1ub>Z`)UWGz`jz{u0rSVy7?Jt+y$D zP%|3-8@RJ02x^nPm7I})MC}O{*$tNdUdS{xV%gO;6fSV6rL3Ui__HjQYwBwufN-J* zT&xW9dN^MQV&fVT5uBq>4=4}-ZEd&bH1#r0K8SSeF%oV`%1&9{%Q3xT;W>$|rdiq> zE#1N-{yc&UdQb^FwRt>CNV3Wu2(FSwu+H7?uj3xeH($a$>v4TuE-I@uxyw9PL&7d@ zg7_on^FC6?G?QELv@|0qaDz0{3Kgw*#*oP|kG7F?TbM2Xx)zF~bHi4OpUY^F=AtDp z_qJh_QB38CG|x0D>I?n4hKpx3`wPOeE~B>L%ShxKyztda=+*V!yLGGp_FftJ54H8x zc%wc^L&Q}8t#V{AX9G?IcX!t-y58PP?pJJo@fGvzu0ZLZ&DsF{dDp=OW`uhAX_E@! zjb;hTc*R6Ieh!^_#!Eb7__}i0Z7T5$Y9u?jCovQw#?PA8no%WgQT6030S32P;K^w- zTc$~{iD((2DcY%GBo`Ml9Ye#|tGHJd*3KTn_%=$DSStYs(==J#OcVAx-~ukQLMOj$ z>REHDL|Q2gxEDQ*Lf(lT_2e6 z6kx9YXHT12rz4Md45Eb)!5IffI1s}ra@EsgH%V4}$RR-?X#2LCsVRL-@Uh z!1K>!(}Kc@&C+OWb*u?o3Wl_0DEtN$&)du_#27Pi19>%yCO)5Paa!fHpJCLA3<=p< zJA|~voi)381wJxtwN(Aw?|BcJrSGu{mvKkXy)sTlL@q}k<rV4zHsi#%EuZZFG+& zC#u)o;odnRz$ca6XT%Ow5dmZ7!M#0(fWXc^#!Bq(8K38Kd!RhjynJjfJmCc7`eZe~ z2~wII^~3e`YX0YWFsjn1z2a~rlU2&YxLS-2BRLPUpJ$0WNwS|w&I#lDNd0g#%1o=L zt5<}B|JN23|6ISv?0?ub)NEGCroa6gu=08S?AassKZl10&$jOWJlp@5{m<|6d-BJ< z>nPsKrrr~!=Ui3nQ($DTvNi|c6B+1vSZ>y$n&#_A2m7^JWxrObeP2DOy;M)saL~Zz z6tN8zI)q!OthD&4R_i}g#d);cLr|bSE%h11qYZw^h~-2_2+Ay2vgHli<}hCXh;LQ# z(@5V|6F?3CD*{sWeBYKkZWQV~3S(S@fdy*AW)&MHRr~(?r|Ks}KFgAH8Lj4A<^o0> z67`C@1uZI3CK@9|yDqaIMUJ{elI4w@`m?M+L&V<3t=oBS27zNKgq=rDmUnE$gpF91 zC8LPR-bTPBK2a%xDi?fRqfo+U2-G+XW`{)gPT#fk-xGK6jdPV9gZGbHkuLQER(k?8pZN9j1ZUPM|` z;+v!knM%`z&IA$+`#Eo%Diq#co2dA0%LR}F}DYTXM?kr z@_VO)xAlHYwS9Hb@4aa^TTNA{`}AHYtG8`p>BE7d61YO~PW4Vzz57o6*zPvVIJN1w zd|wgMf1=u*i}QAiQrq3e`LGG4+6mR{_68*Cb=m_0JLvHzHL!Ne2e?kF-#DY!`bqn| zJ$P3pP^axd7jRE|eN|T%_5PsU7@pVr>SEZx==mh3bejaY+wPu1dDrT+x&w$>T}o7~ zH}t0bvpVfr=xYS-Cn#6_9zhv))Jcn)!|E@FPJL;d*V~=4YSugT*Jx5-^{8H-i%FBz z+p`uYwYxAE?y5SQ38M8-+xF?TOr7fwY~{CYzg1TCe%r@5oc4S40gNNn=m8Asbz2RX zz%wL_^ZIm9F}x4`R^Fm!tA0-Kd;o9@%WSqjjluS$i)zT^~i!`am0vG3QZqL{qgK* z*W2~lr~Xkv6$*dYiDw0m$>dTsd+h49c1UXc<^=w1=u&R+K~xapkw3uO{-vYDM;Q)f~tGLyU5X7=88bta`!=G+49XpnON zw5d9g(&is&>#39Z@-63ZDrMf9oHvqu`-_*(by~l}Y3ckIIK_<&Y@C4zcuxJr^W@Uc z%`CY-+CAR&tcoDKa&tT-vsKv1Q|12EaRDw0v9FikOBuk4yua>tJt7sHHiGqbXRH5T(0oYxj=Tg#UE004cqEhYM)8(TFc53~X8 zVLH}@LB7nlxrS+xt@Cs_H8!bh4KRjynYJFNRID{fZj{WDGNtCaZC%zFoZ7M`A&Mu7 zQ=H0IMy?*K7~RAP;T((xDh)TsP-9m1&>AqoNlB<@O-?GLhc*F0Gcv3sZv3UZw_yR98dlQ!#cSr1Yp5^HPZ#y*z{*1b#60W<+bEBj-$jmZbg*JO!Qid?CrQc9BLk^ygy{qXtK0Lc~O-_ASmoGp&|~=)@3`#w$%K8*?aT;G>&Cq`2K4?MTh7_AOqUv zMNxdQgl!(nl3sxl=i0t_fI;Gz?J!_jcKm$yx3=D9LCA5=U7o`)v0$dVdaJIks;;F- zB=}%uD|e6kOB5Npd{3#hRkgaN{(!&t8V;rfF_Pm3lDI<-F%8+)8nCA5i=2B=ojuKdoDe%D^ zeGLy~0eOZL6bkj1?{O(t9VZ6LKs@UsYReP}IGLp~PQaUkw}rRGAKuxvD(kvj))1RT zm3FFl3$DqXS;!68d#(;8WlhUPZYXz;!@}w3YsGuXwP7_gtj?w^jae3|v{ux?4sU)mFfunE!2lKhH&zwTRZq2iRI=nfp4`}hR6!$~Au0l3hKN63`F8|_SOe9F z#no&SPr(SMAU<^b{0LQbT6MaWdyFte7>v*W7?oBqt58#$Xd+|QgA=R^K>t1OK-TYZ zRRA)TvFw+9!F^PAH|Pg{W=qgf7vB}!p=CA(5dy|4!Y338T$Bp`f#g(X&KEftwcL5N z*gYCc5(JJPW0sw9+)|&MOwy04jt=doFA2L46W==`X1Tj+Bw%CmPqj$g!`r8;V1mYL zBpn)A(rA)`fs4Udm73r1hMPXB?zn|z4^|7j&8Ok4sJA?PC&qpnOjI6z9Bghq+J}YU zDtQ{7^KyH`eYxeo+}ZSMZpYqkdvAAhGEv$YNZk3~qR#jwe6H zu0`u{M%1;vogFw=CN1hU%*eK&;2KC8&Wo)rL;v1vlpnm)cBbA^=`%;K)xCLZGMGoL z>GgpWC(+1xy!toH6|^dEWp^su?ECQ3WU5vRtLnjn2dXRs`x|;?Y^c@Zs#-Cy-s_Hk zr>>Re_ovsH9ixue#_d^v_=^+*;hB6Af?^wx5BOudkc-pXBwav3 z4=d>(D1;&n67LwS*=2ePZ}Lv576;`#Sb36@DH9y~E$Gt@=L^q%B$g@NaK=e`+w4~f zjEnGRI3{dhHk{;*5fsB3l18}`pb{f?&RK^-bF-m6ib5i4bW7U~G$@z|YN^1AY1nMi zX3?H4z`0etQ|bp0juB_3oxC}`f8ZIxXWqGGDJ-?)J3>0t)uFG1PyVs^IqO*T2)KKO zr%~{D8)l^iv|g)vFToDD1_4C4yBwj?92q0ZS9wjEr|a?bgPq^*c#hh<2$+SdkeCxJ zBci20u^OrTF?z_F!vC2)>&&%`=&`DMo%cAl_~wn{xt$z%y#5}|u1USjtNh-prSX0v zuHnJ$jk;Fs!-(?Rq2{tjR~RV!`Zb4) zuXs>UNx9+dAU-1;eWGPJS67QD-$|5QGSeD{-M*+{B1yVMhbo-+$g!{<#}aHh?kWgG zd!v#D{Mj@NQBS@qOyMfl9ry6Q_d$7cqrCMH>c|;Rf8J|RQJ=(>6=sxJWXxnzQ0RWM zwY~S?9sdi`IZqTH!}JHmNu?@l8*etY-r@gnL{{S8{ff-b+_UTq;iy}JSr6&teYLe^ zb^-Ds{FoRK_;+UmN|Q8L%o(6eW9`-@pE(+Wi@NrCtWpE+&9P1msy` z-ayw!ydA|ao{|_$qDp}~^^@A(*eKFYt1uY7Nc;;p2s%r?G+&(^)z8c8@Zc-jO{|<( zPmWGsl~-1zAc_pDC^D=(*;mscjv>Fo)z`au^F8lhFIaH~WFm%yR}tJfcd>v$0m_7z zNb;DuE4vCfW972jW>Gohdh3^;Hl?SsxJkxD)}L=hh$OnvQh9ak1Pk}dvs@llbd48h z<%`#9bF;FwP26t%9IEYAcJ;yz&DvgqR5U58@l;nO#<)x}583Ir`{d1oS;a;(7xQri z``Ty`*bvjWUhTcgX0knfPJ$*1SbRY)zi-ziU zzO|V-Qgd_Wmd~Rx>xvH{&*i_$0V*dYE|N~Lw+phMx4VHarh96r_)v&5feV~)WQNN3M_r`OM5x~7N@(Y@S zVaNcGxoCrz3=q7Cm=W`ev6pqUiSC?iDgs6RPe#vEQJVQclPC?s?pU(D7>utm9z{t- zvv5KgaNsW-a7bdbOo?D4WHPQpbvdr+F&Rah-fru#GdS+R!Rq=duF0FSNXyQf3co^K zu70$-uajojl~WWp2xd9;4mqz2jnN2U1^$uW_;cM~b1bj;A~~VFlM%Io{cd0}+zWt?RK#%F3$p>3lR2<)aCgA-g^? zMm*z0dc5aS8R4<1kZ>&cS$n$*IP?#hzxN`b8dxOsBx40TK3~Y5ps;v@5L~4Zp`=Hhh0*nk5@K`$y&aCY>&t?{DB0K1x;?-@6urCguqi@%!Me46I&y3#UD~>8zlW!pXn*1!YW_~4Q zG^RlZ<^dn|I6pj0w_&#b@Ehi5qAaz|+j;a=cWAHWMZlsktFGCRSfWiaV2sNg5pIz> z&8SgYh%J?sl@`664!w8NA-$1yn|N}fc6<;9BQ?jECFl!pTBlndYv~Z@q*+O)HHc`} zLSKM7_{=jmM#-j)Hx21m#Lku4!w1}qMr5t(MSw1m68)v92Tcc%Ea|q8yG3%1{D?TM z;03s%mElV@w!&jW3Me}7cS)GxF8pZqbOeIT9V1p4mGA%z+GrO*VVthU1IlAdd2^w{ zHM*>zxA0hN=tvRA76fA2=K?KpjAFC{ROsKUuPnHlz;G+ijPY+?BisUwt~;Q+?KOn* z&D(83WpfkYRMyXyXnDE)=76wkSw1X@>0W!RLu`}b5D+O0eJ3)DScDp6H7e8<-#$Y3 z4;hd__u&2UVXJz4d~m3cYwr$@W#`{>IM?@1ol$t5RR?>YsHW>JN-Y+lFH$8Rw*08BQyuYdV3e?n&D%VBE!8neWRYmG_4+IKMjpq8LvlxR$m1Z z^fKj}l;KCbm!+8ER4y71Ln0i0k8$tMqHxgDk;CFZ$kD>cRGedMW&{TVM+c8Dn}|wZ zki9qoUVqBs8VVgGwnhCe3vY-IZ2vs-ZYU^vJ53WRz+e`qVi1Sy356PC<6T$|9^!m7 z=#M_gKv2JhgT>11b{C1Cf^QZ#Z+Nw9e?+(M;iO0w|N2*%;lJR6ky+vA(^-!`^} z_)oV2|GbEmq_3Z$t5Eo&c^G>ej=Jz%oXGH94Iccn@{pF7)7>|g$$|AY@ajf*$AF)MfsbY(3qBy}(h2A9E*&zyq9O-1Tagi~rhCGA-^ zwElqTZKy$!D@vuqgiy!2;Os^->)mdXXpv)}sVw;ju2?|fU*V@2Jm4rRB6XR>Y5<$a zw+S8sbkbIJ)8Yh|IAqCcY0RHt!~uzkYf5j9b)EW67ZVeNQEv)j(Y%8(uPZrn)hF{P z%B$@aw1Jb^%rF5Ml@t{BASZHb{iM-EhdO4a3AXiZl*KVI(%a)PiKA|?0bymr?qjl{ zk7qJd_Ol?HneuZ7xqxh5CaN zM1qA>Okr&C3C#1fsNFmtR_n?A7YI7z?ZM<*F&)w8K zuRniYJ8#6g{9jG?{`KKc*7+}V=exAA`264A+uKN-|GQgz|2qHw8K1gKCF*Wu|ICcU zxm+?#LK*(qE8*8ipH2@jw9jHwEos zjb~TKw%6f*C_FmFU@G^cQckx7gTG50ix;GlMAJ$I1!(40JlBczA1 z?G5i_qu0H6Xz4!bKlxu}>_J#e&zVvsePBuA2ol?84(})NsSIZ zalAuZkx=lNdAjE(7j`UeBrD|T)<)>FZ!+N?jz{RrPR^6SO-snxsF+rOHwq5oy;;;% zFI5XhSx4^^vNgV(qfJp~JjMGCCk$%Ngh3@`5-c#<%leLY#G7~LQ@$xP`~k<*nq%;G zzU&aFZeo-7y6dYrpA;O<-j~ZFnb1{rjvhsPhCrY=)Tmm6*?nKRS{1Hd1<8$pPErHX*X1m`>8x^**S_otC(5iH`WbT&7o~06OprQ$Q2kWH(UiaJ9(F(kS>y%Wsnm zq4z7ITo^Ip!9EA*^9gMZ9s%F)90nXN9d@;3mg+jO7@g1#+RH$!u!2sfj|&Z>q!1T9 z3_v&tbJR`krAqU|0R~2)2@EqI%_9tkMw((qR9*rX4@+vo>Aq&u8|0*g6-OG5u?yYZ z)*;m=nRd9TM!O_H3>gQ87y}l~mMA2QM*>CA2)f-VZce5(f^3F*MpOt_aD*9Ipmo$R z;{l`PnGvQzkT^&cGi;>EbCZ*dCP$ERmWznMjxmO#j}g|7Krg2a(I7W*>O+Y3Ebu&s zo7Jkn;b5I9an0tV!@+%&goDm1$XZkPQGW!8B(8myZsgoKrg)(uv>PzN40M2~s$@4|&m|!J!$V$L4r$IA34zC*F#N7C(LUkww4fYTT26x!o;5GoH-642$Tt=P<75!H2qh)vM z&yL%3%UjLH4hIz)4HNG+G~=T@7Hk9{enEa1FPiRf0;NX^wICcri@kB2iUX5X{9J^LVp~A$nKb0#hM_Xqu*$4EDR%yZZl8H@y#z)^UIB)hl)KRZ^Mt4i7M#O@HBz=_a-QWAyF zg9?Cm)1rq=C>q*sNz^6*f;|kR95PfChih8q;5i3`!1JOPRaC zlwjiWX=D#uWJLNiIu(h9<#0y8b%!(E9bh-dQ|6ESDAtI?<7t;!2j^gNrn7@FkO_`) zhj680LWKvg<$5zrr>-ZNrofpkL)K*98GJF@#$89!g7fw8gu)?X)H2*QI20q$@IYb9 z3i%OgGV)LuUF;%@xg~{c9U4f@FRygM0IjBHPaOt>qSN7+!V)&LEJR~{Sn*}V*k%;d zE1Wr8n5rn#OGcEW`4BpcC`81_4f@``F&QW9ayx;y0+BN5Hl4{7A(S{2#Rvdyzr+&Y zq`12|L8suGJ*RNu@uY(ep*tffpDL($VF`k_xWwH_Q6Oj?0?nE>8<06ST(MSzBg(sK z;4wvV|G;z+mUtGIIa!P{boIjs*yNxM3^P+yk7JR@C9C9D%-V!V+cX$~5To3UaQla8 zfnb=G(R2^FX0JP9%;To|@MC3LwKfJQ)&aV$xZBrScsE@0R6q7Zg1-QoL%Cc>%2j~F z#~t(G;X&uoBdruKV~VJ!@OMCFK2(0~1Qh{CB)URpel>UWk2&lz3BWR4X5FzQ=7%%M z39Hi%=6IlsrwlYm!;0S*Q)O=%A~`l%L*b(*l<%LZD0lx3OT%W&U2sv$W{i3_r&Ib;B`lO%^{{Rn?*X7 zQ)Bia-_y;skd1UC(nm(lJyr#ITwj6MF-ZrIXyahVR8~c=h}eZYYQ$Vy{@1f=^F^Mu zcf1pR-TyXg-W@pyPPxpgJYc9S_?&6{)B{a#rSeKj=@! zt9<<}p(_cxR!&jaJ%{NzL2L6&UB1zCmEz2Te2HRQr&0CKN0?6L{rWtbuA`JQzy6XOUZjE8O}PaHlf4{f~TAX z)Vs7cR%CPdF3XkYkZT~}M^7{{h6%Qi>Agv)>zp zn2nBi6(wt@=US(T>Bv|ntaX5ws(GG^JS48_L4SG96D?w;* zNIC_nbNU*{7Vr^yA2r<^x@kz!>f?8Dd@YlsFi!fa%~&BtSI{>&RwH(6jv|-6#!&YC z%Mr(Zlk+b|0X@ds(cGpFP3~87K#Yl0kDZH#kafLszPg&}DY}V-P!res<9P7V3{LX1 znP8KqOgrlMd==W0CWJ!#6A5%P{0404{* z*b!%};9_wo6_axgCL{aC4#qYhk*RH?EXbvwOXG6Lq_FxdV~-GJCl=pJc!Z~|o)S89 zwQ2<~G^erk<>*M$kY+*d*h38FGaVyf7|c-LiJAq{OXkQJcFs&GU)exxewv;^F2*r# zI$fV3HOH_;8k1wzp`%)( zNr!-*S>6P>^i80o_@Z5aTrCV5c$?HRl3*;bZU#INOJvGU`u~waC53 z@HM=dt(K9maVhKd)LwC5zKkAy(@K4I*fgA`igB7bm(!%C;_Mmf;_XWYf6%yihA%5t zA!d&^v_8NH{h9{7H`b`nYSre&dCisGavtl)%&intlsKG?4V+tf+?xrjhbG?c8oP(I zF5rBX&#H$ntIur*3_H!wbL7dSouHUmyBy8SLB!Jlj7dQg+}G+i=pW|cBjL8lntx`PT=e@R=hS&h`4@ z>Gax&JCfJ+!7caza#38g+Thah6y#go7e?c&G~*idHhW z7|vzv*x*+pMKA_kFjqbzjX5o1N3v8os57a8xOCKdeR@_qX*EtS&JSw`yBiz%9NF{G zO=MuOoeq(bIfj8i$|bkC90a_24r4;%KvTm=%K?rA;W*`9WG*>)WpvICWi-Eve6=vL zNse~{G)HG`gqer+iXu!h4sfpFK@??ahK{(a{$v8@guV*X@#>>Fs*NLG152DEu_(wT zUU;hEoP^{z%EHsev-M3CR6bOKifT^hdpp9piLHl8&y<20>;;&kytHKE^#12-%<5IS z`eoJiIT2RG98RNgclKdboBq+Y63kCP3lmJy642n5T7X-~Oz5o22FuVs3C)zUaAhG* zEUKuu+j%{4jWKL4)WNeY5Nh059W?K>S1Gy7jmg~d9yQcPeVwp%!Hnx4aott-ChE;c z9ep?oyRdImd&F6eNRG@2l{2ambP%e_HW7#WZnT?bnRnXcyiPL^mSFu^TK z(A{#u7%uADfdAfh9A(jZ>FnzB_uq-X4!<>m2zHXNn660@x)GJ9FMh$%cUH*IOoLmVZhw!5XE?5 zwCOe)w%Cwt|GdkH9Gz--$4T}u7kuQGP+u?~#_XeT_Lz!^oJh6kylf#cYI%CTD9KP5 zd#QkOAiG?GSUCmSx(TQo&1Zk62hXOo*c~$r7*>gIBKyn)p`r|R&Iirk&kWCoTLOMk z55hi42W|4uL4^s2@z5+9A7eQNZ0KGzAMLD?D|>)I#v`0{uBb_}PD(!=YP2~#yC@%? zzB;R({9bPS-e}fdVO9%VZT=+z&OeG)$HeDAAxFbFm1s~eYv(7mGN!>8m(C>ACbF0F>h*~{IXU$_YdSi#{YRRl<+PP2T|URx#2OV_Rmq^IzBbw**B?jH8 zX}dVxL2a>!F?3qE(%2o-&k|#;J{uzgLj^f4oI2WA6Xt}kKy(RrOfL7D%U_Mrsog*- z^ebUS+9a(5qS;J)G}7U0h%yb0Om^oSxtexn(U=w^Xr3n+Zv&1_+*gumJjt=8O-baW zR(JHw$$MHhJx0BXW%rFydPGi=t_gU|JQ@qE$~^bcz&WK&t9D~y>+o?WCx=wvv_u6NAq;q2<>gROnaMsB#iyDZj6~-mmdG7t;>B+PD z^H!tY1Vl}^4ftxp$N;1a62iv!iT(x+$?9fkjKe(}bgL~di9+!GuhsJd>c^_D zn$D0aEO)X+*?%uPom@_Io`e8Kr}Q3Pt;(q@tSpsq_~gQTMDc6cNY#y7boO+!_L*H|Brd7d@USp8;#5_YUm8a0UL8DMv0-exaC}oX8nOI7`hrL zyejM}UjqP-Ei-P8O{akanw54CT`Bv`o5R$?Id9L`K}zXld3YJ5cWYP;N`@H8nuFPN zJRrS6f0jc-H9QqyO5bZstM}zAiST`fybXnL2b^IC9QTIGLiIFTPSQ1jc|aV?s`&{W zorC=JG0bkqZD7u;8gu+w70b=^w#C(n8`hEm-4jL@Zlp~ZIn^8E+iW~h12p0*iH3r9 zknM6hFvp6NJpD#9?LjzVYe!8icveJy#3}jJn*?l3r?7)*FzBg09*ntXY+s9It|Sok zm%wq+!Tf1bwl-oKuDv}Ti)NuqPCBktgI*7|mWN>>6p4vCn+7_m4SM=`-XTa!FkhRT zhKwmDhR&)E)22k%L)}2TYVI^aDvRe4x)5>U>YyLUQJC#~#324L?}vsG01RB1fZ&RG4>rs&h5=}e$4xQ^9>(kOV`iNPOSy38lS{W&^ZHTm4*^5PgQ`ZyN zxIZFG+Ww##1%7Gjo?>qS&9n1j(&**!V{1C?+AX?i#`$i<#HBEjJl4T;zC1%y*-PuY zk$(Hj-5-t1%-bPCj8=`K3-1LROo7&)WxWWgg4`(CTmNlX|J}Xa2mf0Cf5vB-^`CVHI{Z@S zTiRF{|6_Z1b7N=EU;nL*P5AS#_#gj-&yW2cuy>djxW($h76SnVe#!kv z;WmHNukr>j^6+ZZ?e}u)Yq_;GjQ+8y8gOWa!!{iJo4fE3pOewXe0GJ-ApNK_2>Qdw z#@{d^g2M=jOVR)%^N)K7BLMdP67`^Cc2W{QFbvIrf+(sgq&4`w0vVirn$_ia%ubPH zard!5sKm<9bu*mN7rXNp_#0#U)raKmqr-5*BD}pvJB^#a!~>;zH^I`NDS{Y!dG8 zGZ9zwQFj`$!L2tR1es(Qieq}Y0ER(BGV>QzI=a*2eROOUVNmN1fq@mTT;=V9pF#2( zjgb@yr6FqzZSqV$!LD6A2VV>6a={5Dq$9f^HKCnh!@#)_4y7->5t2yhW%X6{_&NO3 zte>7ZMAA?~?5smNXWc=+O_bApNFg!&hp4ff&hVk4djxE9K0@2s5JOI&8}h?_O=RtK zbm+c=rvt?}Q8LU#OUa>1#Cb&3j}#9`{UGYqLhHBs$@W&!?FmR?&~5G>7gNt`%`>PB za3}pP9s)@at=|r71ZL4}X?R@YxK=%BRZosuuiy*5HC?zS`=E&XAVZGzr2w0-_&l5) z@)*x}i1n_XB18|hCYDB#y`!WHBUTXTh<@-i{Df9*q(JO{GWth~{`mBwetguDu#uvm zMQ!LvYp8J#U^OgFvy0<*Yvq2V!bmz=jppfj^?9vzcwB8XazDzL5^vPe@p0|-+39&x z#-r9_J%Of7^^=QNt+VsmS@pbj1aMw88)|dIynR)DoqW4N2=i<_y$+^bm|8fB#l9E- zYy9KbC8|L!9<|MveZBckfFQt1D}AkRA|7ccaG=^qFy)p2=C_8|fpo#C>mZyyx>;kP zb|^`YOyZ6ddvod)`GlqR^%(%xfA@2-=U-rZH9LbA9g`Ea#-w~7h}1fBCmwxg)SwUu z+zIJ3P7=d8ZU0@ZO&T=5eIj-mj=V(IEz&3YS1f#sL14`Eu1#QSHO&MtN5L$>#GXjJ zMk#U~fGpQO1_NmNL&{SF%Kz!i-EE< ziXk*p>${@ZA@whGzPgB}-+oVAlT~pM&B76Evc?g5QFKq7b@{eMIh&#{R)}%m0UmpE z;Mq#*S|)+LAVPk~7%=LUm`GIwV`_ij<> zGR9!W8eg1>*bt6MrWfgUT3ctqbQo_8sx~maDPAB=uzRw=h00@&nTS+-k(rbY%QF+l|kek_GkNPl{@rGQM!eN zFq)Vqa6h#JGfqsns5UUbDB0|%)SmFGTkBuqZPt07i0 z2J2W3OrQUaF@_gpN&N!W-ZEqSj1fXk?n0k}#1`Y#&&NDf1^`so&z1u4TQG1MX8^xd zkC&=@F&d0JA5O-ze(y#%&d*5oh7Q_k06exsb4RJOX1ToB{2?w(JBbrdPe2GnVZ^tj zXj_WzvD2`Fr<4 zsX6>moL``O?ckH;6B4_M;y^-?{%}52qd6&BDLN+i(PbY}fH05a)G~Y>hW__p#E;^& ziGH$A(_r}{40bgk(;t3MzPwN+@;Za@Bu5R9x8YA6B;!xaJ2g;5ipWWlFG}sYvYCq~ z=Zt_{j-r6jW@w2G;Qdkl3t=e;lL846iHEPRikL!>61v*O%WW;#Pu6t_#us(6io^SbjBdb zJ+!SeJ4kn47SwiDzn~bcXf!s>LK-cCByom}k`~}i5|(h>cZOvpnnMm}gjP$Wj#Gnh zbV=U29376_c$v+*=9p}3a5x)JNu!D|KsaZ zhggW9Dn;L6_9sxx)Me^2o`sLqp~Ui-kEY>ep9Ei$LvZB0UuZr>3XD%_Nf9)dF;+x& zLyY*ywm0#xLR8t2f(cNeCk0=PhPz&vsZ$0>a) z;skz0wDAyw_Y z>r&Php-}-B5h*MU&5=W7eQ_STZCYXCE=-(68KAYPH)4@N9U?mwA+EiG!55|RNPfc~ zBw5lTQLh~5bJMlxwNnd!YhW%O`n5bfJ~)`T5WIH@7(80a&9E5l%n?B7RbbLooD}zS z(vNB9hXYMnUg{2Dg+@3#Ckw=aMl)U8@M+WOFuE*s+aT$p4*b{C<7%^hTq|-qb0Kf| zrgnaQdag(BJU@N8Z*lcJ47w67hf~Gg8ENYyI1~!dL?+%E8KXV#(J$f`<~`Jpl;r0c znFk&MgL*cb=KeHZk7!&6x)qO^x6DraX2wD7FzJ%RCpo-Df{PsEyhNheA**TPM{eQ4 z9VUehA(ZXe2Tx_`h;>{}F;-v)z! zn`+$@xe44IfltYv@iq)TJUwYNQ}B2;rVjj7c+8_a(9O7fbqXF+YRdm{h)g4kVR9T- zYW0&}tH-JMB8W{;?uOYkU74uO>-vqjU8|oih1|TV4tC1}gWgo~8?YMd-GEXV-Xaha^upg^< zcyXSncz>yywUeWiCKq9_x}Of0eu?4#W5vb^g&*=ygRU8IzG$(L*W1!)lsa5~UN7Wt z0Zv-xGLq5*K!cFO{K?5_`Sc7nqymU3c=3XSZd2IEgv+%)5ce~ z!}Iv@^e*C6623(vilyNZtCR_^k8ke;?^Ikb(&4e4{w)AKc!-D@D}q!X-rm+dhPRQq ztUkOMM^st_^bYVYmxkwUt<3ef#qLkO40lVS!u-dkDg0sZ3w3^N!|CUf3V z5g(?-yNs9cZ)=(LT@GFw_0&kEzSDa22J`4@DSTcI9;@}Hiy__t9=f75Zo_F`0jAxf z(W)=5p@<*Ed}$dYf`we#H5?tro~DL{CRecq&*G1oc)yb@c{m=-ha-B<$5;zm+1pY5 z^YOJl*8351(dYx1b*85X{#xo!*Tq`CQNHyC!DR&XkUC@Btm@O_+8+hmvU;L6)MI-6 z+j+f-uZvoxKx#2JAfa{!G`Zoms_n5oOXBZ&EDn3hQL`6d=C8~j*#Z+vkdpm z-p;%IbQTd6c_3_;6fS_$Q*P#%=2ZP)2USu(`F!r57xiV{?;`IbmzmC#VawG4?DPV% z{^MS}NRi+=oY02+o(OL*i|rsmG$NP6o`$GrwOBF}TyhraZ(TU`@874@(2Z%e(E&3N zv~%>1`6-2ua3RCQ5vCC=tbQKT+NCP&az+tO*hFT!S}i{kyVk|JtBIp(@^zy*tB%qW zxTK;>3p7bZlm>bvJCR1P7>)2PT6^-akdrDnQ;>p92^|r+F3?2Lm(GBK7UE4)evy7$ zww^YoOjk^!I@&cn1@cNRo|524?i3~RAx7pr9AY?>-$EVRO`A>WTtr-h?2{?#K1Z-+ zTV?X6bn+wy)5|$qZ-{}lzE=-M!Qkd|7_o_qYbJ&{J8v}yMC*}}QxU;TgPDmBPEl9J zIu&RzFqLbc3KV0|hlO@B+9;1q#k3VoLr3tSG%Fa7*69$L(!?N9PP|BNT*PsKVj@UL z9W)zb1D?;}bexdDDd|SJot)V_QjYkLW7`SbVC7jDD7u7vjz-0 z_=R+cfb=*(w2A0Xw%1)$q*CuBfCMI{B_nMco|ZC<#4n0qCYs|5YtmUrJ8zvE?qQeq zBi{0dlCE$zy^$n^HeRHe)iaE4MyvG{bJhwzN*J{qT`$mZx|m!k3MtG#8T*Z=ZI1GQ z`!ndwOnM}8s?`R3QiuWBl7z^?RPTh6X?Pk^zIVbozLg6wd;m@Z-e@H4+l*=nzkC*w z3v{AEwVzGLLztKXH}cb{=-j1^%4PM7G71(tQ=$G^;q(3bavUL@>l_@cuB@s*{-AGf z%(wkjRg7t649(eeG#=0TloZa`l32aEi4DwoASnz!Msl%nYk-auN{wi!zIvsDD3@=>^O2IH=--3=$@}m&r+`QRFvRf3pNwJJ6(dF8;SqGAF z59|#m*CB$BhP`l%OI`Q$R&v-9C{#%>nEPr|nX2VqJ_~F*64r`8;nO#p@36oy9Cju* z1*aSws{DsQ-QOfQ?&Tkw^zg->oL#JS;B~j=n$vz~IKjh406L8n53GhRen+xaq`_#l ziq??u@2~o3Bv`zU_0cQFZ04CVtki>i1RWaw7h zdWEev6Bo7JHdezDg`{09{(`q9cNyXH&0v;OH zpp*|(vs6iFMSsImUH13mDH&v2`o!mh2AZ68|zf-VK!9Gv`01<*HTokvNcCC zK+L!F>uh=H+yp9j3HAG;$GeTB%?*Q4+L9^xu&*DQ2}R4&`l6e3ItP;V@ zu?yhiyic49UygSZn0M4ZqBlU>Mb+IkGi>KvC=NYXE3&{BTO(WKuBbYo7n&MRZ0!Aoz191?^5cB z#cW0`d7DxX%~LZf;j5GyXpNdt179U;ICi6MJ%6=h1yi87=A*a3af_xv52; z@XgqSZ?LL^H4$m^-aM}!))sFX-}8li4@6&08;SxO81aNO?b@W9vMO=PXbItFee+1% zbEvgjHhH*HndDxJdp9k&f<$R}PEj;5`X+f+AN6O2pWsC?R+z&k(5sT$_mV1arkAY^ zh%b~XhDl9F3#az4=yt$;hyy07=k*To!YImIa#K`u>3FSZ(!Zgd1{G; z*GDccJvv$h>1!{=ZeM-vh}4?%t-x&fjrgERadY@)bK^Er+#D9mo2Wk@A}JmWkQhVD z``?aKGT?7Qt3~CS!~Y`eTjo%9tn%q4`AHf4(V{~fh1k<7Mri7!%hb1zm>E?xf8<== z<0#!zi~~Sg6pZFZ3G!y_Tjh3RI_7Ui_~>6XnDSSQF7st@0D2rnDL2mE-&f!G4(oBTi}gqBh1r4Lm-?8QJyw; zZh8;0x_AFBGoI8OCpAvqs#tD5$2V|973P?!5a>4PRTEr4H{!DN<}s=Upps9g%t|sj zIti~CXAwG03lPM+LV!VHb)L!ME%@YA2h2gdfj#6Fg>3`?wI`Vuq$(plI zrJK^{qRV(Wd{^31#0aYkP^ju!FiB20t%Fu$_YXGqRsUyv34ib3*VczbR$POH0^O$n zTGhk*!~8y~pVtnXq9)2DBWkTkoq5xL$0f6-!K2K5XHjBOljm3JD5)0Gc(;ywMV_q} zNj8#vq1BgP9nK}THmqKW6ZeUs*W*dTk|oXHrP&@NZCHRI>34IB&rMWO`$Ye6*iDL} zp2EnXkK^In}hF%vrnZM7b6=W9CZ>q0Pn_@z-s{Nqqe!$ z%0RZHW-y6wj`DlqR5v8ldUCn=n$KOYtO?gJHZo?}^yM}+CF&hT9@fDKlFsoIF^>ko z!F1Rk)5=J3z7&?zs_>I*$!CjQJAV7QYTi9fynAXE)m{w9qM8RO%c?1sLrJ_D$GcTM zm5u;>M>;Y|?1aS1R`FE2Wg9L5<|%-Anu;BNW-}UwuaGUmSpn|bkm_4dNs|U`AYd-S z#!&my3?v=?!rTfnRyI5g1=9d-W_tNCW;fuNCSqjW7V2&b0;!mSJ`Vfih|0*JM(TrB#5YMv;jN>g1L( zi5@f{^t&*rn`T$`mQ!r3*utxCl7@(-&^)62iKaXAHb+Eri?U&rwyM%zzp~pV=0ec& zOX)i+rg_Lf>5WXjOT+n!Y;*czELaK3?}@q5Xih06u-Fl$E=5TV0v*%Vfhz%%4BqoZ zPj18?dQHQ6dIN$1HyeF?%ms^HTbfIVwBp?q4G##tzcQQdh&2U>w(`lu3MO zLR`sc$J72Lninw8a3DdKlm&$0ZiAZ=tH_cDbQs%>GJIV1heHBvFh`(iP-22b4PonW zv=6&@va!V}+uE7r^RXa>l-Nt-ZO92xrXNF&o;(f7d|A+T#8J{TDkl8SB`_F@DLHLt zHL|}@F1M5z=$(+^$U{7X!f3=rg3(V1v1n~?G%ewbCoS?nC>X-Dn3nRPqjIjH4tMV> zJ#lxF90tH;vrolEhzwfqtlLA32IjI8*pu zCkqNBvP^$KhH z9>jo&^I3gVbh}U8HFNtE%23!ioZwjX!MIJeOAOzG;yA?7+NE~3e$uQxubun-^@OsI ziB8k=M5hsTKmKx1-rC%Gu=8+xZ|4CjVm|(S;5;aP@fOJ+r||X^uH&Nz+99CnRUOeF zR`ag&@$C4t+Vp3mJD#JP!Za}t{Nk3?JEB4)wA_7lFaVd|86UXEGFtly!!_R8m~m+Q ze&}lZ6!&1(3%TJz%k zM9=y6S#*bDxrfx$8f05d`NX?`am=@snm<%)UAeA^E6~{Cwt!H}zu=*SuIW#d_q+TH z+1Ni;`Mdz9+Bmla;LXN6%Xgp^cY76Q29^#@e5pt&kGqtjo94+372b0jw0k{+U%=K= zWEQ8|?i!CmP6FF!_6r8@IerDoK&PY&4vyiqWfp=OETX^=W=_pXY3$sgqsGoXWp(NN zG>hA%yD4D3^=-mA=A^HkXw0HTT|8Ce@c>xne9{iuzctw)+O)81fCaW^qtqUBQ+mK> zQmg~|1l#vJ#79%IPt&YE$$@9OHBEG@fc?5o>DM)%(A2S_`r{9W=2M-1N}awb?@gr~ z_UdD7IPyF>o{tOW7#JBdoR98szW5kc@KX;M|Eri^#Vw0UXP;?LpO3fVT~6+0(@a>Z z7tI%^=k@>Ki~^4SqaT^zpcsg*vA}=sL^m>^i1A_zbl5%{vLo zONMEYlW38hH6-Gfi9IXkFtDdFM`c8*St%H>moS|P2047iMu3UpD2(sC)4?PLaWx;7 zZ|TcvN6m+#iD*kY5(C4dsPKL>?crA1!|k+(JF&a2i$?9776{g|e#k4NR4HCy1PU|iA;1iKIjXA0lXV!Z0ICtzhD-3lKp*^_R;py4$%KJQ4 z)cu3JQzE~gjME`+&udkZM~-T*GwM4fZiPb*#|z<5iQD1SUY$v&vf!8!%K_t_Edq9j zo;AXQ|hYTLJO)V)#Km)qqYEql(?N-+u>x9>t%?^uZw2IDUl84*~N*AW+`BFi3Rvx z{k3*>T0d!K!Z0NkEzjY_d87VoEfa_-;R6xXoJ#)~AWz`qRx}25cQ?95_HSv6Yixa~ zg2+~@C-T>5B9^GNCAGHhRBKymZQrTZj?~)GwU%Mzmw>w~aCZ${PF{vOBBSDZJ{Y%y z!S}I8Xa1kUZysnP=qKrFE64H|duOQD32^Bm9B6r*fR=QT)0dupfyUt(w|1haneoXk(uOD8iqqmNk4AmwG?J#!8*f$f&didc9CuPO%MZd%hOOm znx-@zeI0BJZza(Rsf!(9CyFs82GL+S;0R?~w>fD0CQB-XdjG)LXSz6`JSB`Djr9e6 znMN66f=PA~#7p4u$Rq*kj3<3Pl;|oP3@RP|v0CX5F`UJ!hU5tDEWKi0`$6k6oM96M zn}}tIH=Q(oX#e8GvZBxsmTXs zOoF^bg@U>^qw-3(?YYdnDR(io*EH<@QAVSLE~cRPqa1$f4CYb)WB5)r4$tdnO`S4p z<~eneKbcr-aPT7&riiQYH8#2Yz_y->tB0X0PDfBh7JLkeY{YVS`3XQ|NJ%#i$|!O+ zj%FBAAm>G!MV;lFcWIIMfPT`;jdxlF$%?1#qxKrv`rw3RWUNYo$2VYJ?kXF_m`<{E z21!@u(+*e9nN^ue07O`)X^^8w#4JC+{*%j#{Nd>fKP+Up@gwy~osQ|26j*%M+;V)^;6{uy z(Q>d}j0mONl#i6)l)SP^v5dL2dm=h+)%6tbq^2-s7r#E0q_a*U4DZW|4ETMSNDHixUtrm16{GOH}vD}}X4 zOaFs(vfGv@NQF3gO+PVBqGU1CP0fQEugZdt5EeAsP0Q1|HlYAfC9m4)Me}h=M%-kx zYm?8X^I4)8gZ+ulPZKtU~|8+ey>ZD-338j?|2C--f zNKU+eiWo?%jj@(E+oFl1Rkj0`mE-JNniGxmohX~Q`cou!jqQ04*iVrb3Dbb-1L(n! zn5WP65$+xYg7y`2Cn2%Zx+M3aKzb#z>h7@BeAgsOb;I!`4}*4Ju8cd9M2(EUBF#ll zLpY;?5g8IA3~dt!T#B#0-B=~-7abH;M0O}9 zm*1RUb~L87Lg045Hs3DYf=5wrJ}8NsuB!@w;~fEA_i;_^3FDN=$V zgi|f(a>ll?$9+3`qf9bY9d(}q0{kgzMTSa5JJx9CmZMf~HD0bnrhw(BO-k%J2bWw> zr`&5z*Lh#ZDOZyGq77DkuE*>U&M`XhPGm(9g(dvVNJ z1QD@u&@cuzEw%N34W<>*PY*Xvl{G5J}zbAdVJH`dZ1l zI6wdta*%?Q6gkO?*&nKC0_;R&v!y|wS-U_pft#)q3_A0H_RE-t!=OL1sTal0O;joc zvf6{1AU_ok4px;3z4~@$zfSE}(y34lt$-OZ+Syp795yBQEx{E1z==-K*pU}jk+8$+ ze&E+H2P111`_oSpsubginksyZ^1r0Ra!XU6-;Ca�dlCU#vvhUoBEe!#+>+Xl!3~ zTuJ;0H9t^45fs1A?;+tu+^x4JL_Mvh(34 z*`q1*UpYZk(*k8CEc4@GFSBZ;cg78$9_vgjlDgl^TRRiPJLA>LImIcmr`11>*ksq_ z41hDOW!QmMN1R%9d{F$PXeV>p?Q1knLm`ywC1CNPoMaMkO7#0x6nZramSb6(+^gag z+{q8`Bw*A#_P`76JVIMp!Er2R?r(lLu)+qN*t`*c@;F*wL~SJFex!JbX3DJEu^2yT z2@hO__aruyMCYAW&{EAbvka|#0nfo zEQZe%_ZlFs$!lXsuftc^^D17|jipVENEJA1fO9uz4e2-Zdk>}@6-YJgk>Q^Z*etp# z733T#+bCpiQDOBGk)0C-g&DyBCB{v#_>+E5alKQ;-#8h?2E83(Oi3pWTic*>Q;R)@ac%#cCW`io}y=_EnM6)<{`N2C3=i);ICLuN$uhz!F z!9pe@HZlqG0UHlx7%jM>w5L&7l!J6kbJ+S76zm>jUN)7}j*Xk>*m%I~Z9E{2tjWUt zGNPOwjHi9=8-n+OQ0oVF#K0)1Q{V?pOn&?OaqRcMug0i$icbps*m6QZ{Y14l-#KbP zgKk*QA*qhf3VwXQmBg^W(RallbJBmsof|z~-^+mA48Fy`rRcjYqD%v#@wa=oXnH(b z=;WfrEBifFx*zGm%5EQZU!PPQxv7}dqorMNXf0xHI8G;hSDaWs zr`i3~E~uuf)6}khi(8J_GfTSW=+PwHbDUwuTy$dN{J3yE(B;?+^J9FNUy?ZgjV?Qh zw%K9TG@a$O^H=YLboS8e>1aL}#7_*@*_1AE>|rPT1~s`KS7q2N47o-5#bNJ7p&I}f z%J#x(IO>Gfs;SK`sz~G#D#Bt#Opq|o(Urb03qJ)IRz&i;3wiP5Y|+9;Oeg%3wLoWyig z^9+Ihw?j|m3R4oe!AtZYQ-=`GFe1}V87gvjQ?c?Leh+#w-v7<|I_KeK8|PewcpkLYmlo}X{y$GsljFlq_E8^b_3 z&NGvec)?|=-L7}H;lPROmXazZ8!0EIlZh(?=!0$1!TgTWozi zxHCcWOadgrLg@%?tVsSca+zO!Ex;g(STufpMsRIUNZ5+}jKPNe8QsXnj2D;NZ{TFE z!U5&%5DQanu<7H5O@=o?(qoc*NVZGyyw2tb7+Y~PQNf42HsK?cGnJY_yDH&6Z$$Ux zgw0Fq#^)vxWD_7kSuHV9IlVigW0?p zS;|`jArqF26sHohvjKxD0mli2Ma z`xaG*%_VCg!y{Ub7|d0|BAP-XtCcT2_g@QZMfD{BsGYA##5E)v7CerzDF#Z; zjkMh>WT0TMLKCTPVu?Khn_f={tX*JMsk4oC8f{9YbAoLK*Ek97OyOinSz)cX zCRLp1!@cP;nVlzIc0{9bjfLCM8eEDbM+GKwQJWG#R>~6X;1LNiz}o!aK;G<|UGKx7 zm%>S#t$a%IA*>ycoT0>cY-3;|LQb-w6w??VGd$X8t)Vn|bcin5=b-L3g=D%%{&L7y z69aPSr-}8c&$YD)(yDY@Zfz(MKiuq*;vPtA6H5(~FfvaiS`s{a$HNJp)yXDs{WcB` z(#U^`HHk#ZOuIVg!yUYI8>Wh(7+_?6MbJ&3or*2yOwb+Q9 z`-FZm79uXOV^dCa=c?R4u`LTFC%+>Dv2i~iEu1fg9O1fTelv>kW^y!hzF$`WqGCiE z$#jP!#*%q99@A9N8dF=UNl&8az2{{WHv&SQ4EWbGuIIX*qFRbS#2in(4VlX2Gq(i)2z zqw$0dB(ik|U1MR40G$&yr<(DsYKj?F{IcgV&_84n79`fnhdDp^1-0 zdl-G3p4f{j4CZ=_tsv_$u-MeWC7^lO(I?x^U1&c6DGpoJiM= zJ9ly0&f9e5fX`0o;u(BLoar!wcO#M#Zcb9h6`A}Oh|dmzU0~aid2+;+LzCEL_}A3F z;XSTp9%9O{aN><(IBOvu&m%dT&2`eNCSECBG+NI#+WN+vQojgEdJ<(6&nqooxnoqZr2~G z4~M3ty>vCkN&HDz0lEP@98j^(Uu+|| z5P9RY%5Z6Tsiu!;nkA<-I_Vv)8{NL4`Uxo8cs}hURhy!~TCC3`XOmQw=G||AN$`(d z0(*A=88W|7{x4FH#?SN^VNVFgGRLunu*Y(8ITCcxVS(evP@2lsQK|Tf7y~M`mS!e0 zsdSvVHgQLoXVhYkU0J%CnTEYGNzA~tkYuKHt6KZXJe5xM(T7&!;rChP6Vu&j2e$8} zE;mwJl2uMBfJn~)ML0&l9aJRo!~r6JbLIds&p^0oaWwtx0coMw1)9WScfjd=?(w=$ z@pe2}*|q9&>rymwu2eKFoBKRXAyN_(6y^`tid4~$>;5${!bHk}C@bB7bk;ZiiTCyn zIS2gir{^1pkygJ-YMz0w8RLwl67V6}v;eWe#w@yUw3##Mrw8yGxIHz1IS8^UiZgi} zi(PXl?4E$MH#9w+J_*es!)b&H(}$Hk6vr<~wF3vZW<*ZT?Nu&O7^KuJQzL8F{}^)I z4jqDp<;%zfGU>MI{X61^-sn&)@7TGTJ^3rD_A%5xm2g-EU9=M6Yh@Ja#1%kCTY=#L zdm;x6vT@S&QFt8+=Rq-WqZx7@fatTx8h^@YG1vn0a1|3~Mp7e1vw1rzha(hn;h>xM z2VEL?+r8-?5AZ?*vE zHi7mDU{@y?;muz=u!zQXWJN-{!F6z>RT>Iy!75})^CQnuWX`Rz4kkc*<^0p9 zPp&Bf*@&C83E_}+DH!WR@?^sh`1*iY*QkV$u(-l}443Q{PCT-k%8C!iA)z87N1tvV zF#6UQGbgn%d#87;hqo#AG7d?kGuop1qAHb&qN}(pB-pTToT|=K9zIObp$@Yhl-i|E zsapz5y`o}#NtBmV4qP?`-XRf(L*BL-5R>WDzeD&Yq#z`{JgJ_aSARdLzN$SjQJP{g zk#G=b=JMx4BKh3LTJfJB5D7LxFPM6^c5XDD?Ao+Phyt=&OdOQFq+5Enc}naZd5oF# zCLzZ;%?wLt?cvO6BG)EGzKj=P(P@&K%h_}%sjRDWbL&Lc!aMW1V^#{xCkD$f)oA` z2&?{eczV*TpIp?6`d~PHd2mn=rJ_-wPKw18yAX4CXGD^?0gZ@2F?HEbd@=e{-0WlF zZHSlI%k<7=*C(!tv%Q**8Qo`GcDVN^bV6Y>o~Z0|fmwGZa$(|wOTZFtE2noanO^*3 z-sgJ-yN#`bJLhS<2K=1}f)QJwx0EpsG_K`3$_6DcGYlAzTsZB}aeqEwDH>^Y`-g_?UV- z@QSYhMjDO@A_W`1N`diYEPCsj5ta1WjeC1K9%voW2Hm{bao{oKMNWlwDB^5-GQXHu-Q&`!X?cY<>H%qOqw?Ct-ZE=Ky;^ zguf_8&QT@f`Q%EsOz0~KN}Ed$RYi7PEaT)&w5E1QIX8(RiNxKyX>Fa%F(E;mBy1BJ zOpQsoNl|Q&r2wc#MXQsfI+1_F0pWIK8wt>#)H(BLMGjP^)Z%|nBENf{$2zHW%3=tVRR3h*^= z>zQSFN+vfM*Anm<**DG$(~*?MamK69@lrY^a~6?aWeuL0+`U<04m&16Z|7><@0h5x zF_cV+J9+f91uRhH#+<}_HsdMmnW+;iGLPh8KJlYR=G*h=M#pp{gVcC*$vm_&x(p-l zd7jqO)Z@g}F~}zSc56h*#_@HY0}!^Z#^VpRHey|@dL9$XCc45ha0}xMwT#fM;gE!c zxawBRBYjT7`P2s)TvybGl;45=s53>Kmj{hjdODxXblpJ^VNxix`EOB*c^V~pRgwDA zoqpJ)tPjz3C(|(oTaHZ|JiP>t+MDnEH2e^nWrDY8VGygQBP7b)@0O%g8 zI2+G`LCas|{A?O@%=)HAEzQqIC`Y#7JnZ-MQsw6p*rTDhzM|oXwR#P0Iz6QihHas6 zpy6mfRDjp?mvI_?>A2dpb5jSNV&uV#GZ#2MylDJh()A9jhc9YA3gFWh)syG7M#+D8 zeA=klil@iN)n+XQo1fNCPg*Cn+EMMO#1Ao4Wb4K0=}V{jt20a#6Kmr1?Ds@xYA2YR zpmls&J!;inH)|)TbuobGBIoe*$bp1Uf2|%T0lls_nhjG^XDsl$P(L|5N2PJef7pa} zF3y^!@^Q7%lpG^?FJ9-7q6QIKzNop2aC%aMX}Nf1`+RnOiqW@Ya|chKpVt}CHIT9|d>k7r8c8 z=J`{sd$FgRdU9B0ym*omHl6JKMF0uaWgm5An&~GVOIK!@9aT8MeFz&4>p+f~3`eHB z3#`Phlf#Zo-pSg|zdEKC*uu+&A}qyYr-MorHjBib=-zPi6d0foetMjinXF_lLvTly zaQTV`-d0gPBbKTgvTTHEaB@&6a3oT~uw-)8nbf&)liDQWB7aSa zygDHxR4{s_5mI;)*ko}hNRG9y6DDF@DdviyX)w{=Eug(WL3@502&(qePuP)PJmr?t z6*sOA7Q|>i){fi+^l_&|{y^dTn^}4F`Y=bOUdRerc3$_w9&Uy6VrR8VD?`) zakr;HNKR=cIi5#1ca>B6J<$cb-o2c~gA~QMEpigp6O}MPt3CRiq@x#&-!&EeMxIQM z;Ja{SPjOO~=g6@5oj5YAa4Sca)(M9r!`DfUj4IuoBcp2B9GL@kNsf%CME)$nkx2^+ zII{S3EXNihdbiki+~Hl0+6e6hKc-c@jSEVLlga~S?KawOk|SX-kFIheg1RrzeNv5_ zP52B;W(B~JfGe05D`a1RVeqLxoDbDVd!1@w&X08-C3YYwAq^u#SQ^dShr_OORUYF& zes=fH5~>}ECqeob^#l&h+odO_Y1EG_q*ey2O&lBSp!ELWV72E4d*i32JS{*znNAMJ z^@Gb|+8rL^)DWVpH0lu>QIs|!#GK3l?c8xdjE3JZB2vidG6x6Q z0SkpKq&RiSh z^lK91G8q}=a57!Jnd1ww@br;2c&vu=Xhtbnh{PcgLlkxyq9o(9fJ|hQT)sMTh^m-; zk(GyW&nHt2QvF?{VaIR`f@~j+EBX2izd;`*bRHV;8`mq!gEkF2NRqYoQxbYZjiVY~ zvRK+%BAr%$)EUevo{=z07;uL>3Pijcl5LjgBk9U57^VWJ1-TW7k_&(o220}q+3uEkDszH(NiJ`lT0+ucL0)u5R7z($+9Xls!~20mRS`i9$TzF)_0p*zdD5WPv%p>GiS_}*`cNF$r zT61`2Vr`{}mlQWPI9(=#+qJK~(1!lP*+O>MLS28-@5CNc`SlT=2THT~afl^lzQ|w= z&+n$8WQ|_SV7!xT442PbBV9C~J#-Eg-CPL+G}(Di=52@xXxa)Z(>)O<``1&vF+Z+- z(>as2@vT+K|CG&d?FHg;xW^7Jv2E|NV~upDm-mDxZ9!;YahyppWL) z4mEHNCqKSOW-E^Ckhjhjjmbe0kTk7!=6Pn#j_#_9`8#t_bgj!^C@ux!%MC|6^s|w! zIZ<0p&QdW`wf3o$iCOZrC!+}qB0AYv@j|jaMlK2S0riv~gTAR8PG&c9lUVW^&uP_1=%Cw=1$5q&GU69MT8&#K1_tRZ4Z*SKK~$WLsHSDu(Nk_`BXmT9A3Ka!0h3wSp_EB8le zjo2HT_N^r{2MJ8u=VXp1CIq9n4S{~YNYtV5=7-W^ocp}vG4}r*FL{QU20cGtepI-X z8P(h1j)K%vP7>h>Q?@4<-Q)I~ShQg!OD;GUXXRjUIiB`sS3@-;TMJawlZDQc2C5gT z&C~NI>Is_H)lZJp3lrfK_^0_`V9u1WbM`J~V~)lsD|nCq*4=Sp!q z5gQ0tL<|HK8Q~Dx**KbAPD7-J1db|jz)rJ#W_zsg#LZebZ)$~LQQSebVm8RznR@&7 zBuUTCe)kpXpPN`aB|LSV(9zvJI59If&ZIyfivpE|z&;Cl$MJ+vm}@kY7RWxNLqUjm zkZ7`OOCYw6v?DN5LPzX7FsjL5|BK>erbfw>@N~08uuV$ycMA{>^S}WaZF)EtOuwZ5 zp3#@%@pz&r^oPm4ptTy|;5jgyIVaj|jSme3~aQ&(whutsklZoJ#itUsAj za1+jr9gpd%85O^IVLrvnSx0j9t%XA2Nxi3pN*;sr^Da7-ky!NLE}V{GQ&s-(^yJxb z{jgcC9zQ=luQy-3Qe@j}Euj|h0?SMM)W?H8*T{$>$YrxiyYDib`lM$5?JS?(iZc~7 zXA7Iz%WOuf=Dk)74P9R6NGHIpDo0a1&7#UHz2lS~@mx5$kVDNhj->zg9X@cQ07KcO zOn>q%M?aN4a+W7nEAQPW2=D_l1Hvbl0rf_)rhK*U*#|}@L z_v@#!sI;Wq;WQhhMT&SoL+FqQW3P~J)Q)S1O|_<;ou9r^tAG2)Dh`VFgoBHTbf33Q z4rUyjBgcb~(5Om)-m%*zd21}2IMs7a%_cURu(qcA2gM<>S%o)Z`a(?8?!sf^vOA11 zUrL&XX&rWAls3x*jm{-y%f<%x?a6w^$vGu_IA30TSspQl0c(PI!tbly4ZI-%NNZav z4H1^#CY=CXm;`?Du6S$M+L2%^b@2Y~hF;-3U+=2ZbM?1>sQO9sl(1Nl!&#&7#HD!7 zX7y0~?->~8q*zTxkD&Oxf9EWEt0j|$)_eS9H9pnmRdIFSdHBwv#AGSe?P%=DyUz@h_Y=gkN?Y6~plfrv=}Lw)uF*^~X% z=Ys>1=>Piz*WTi$eESfd}`ut(auzxl&Kyg8XVzzPe9BvyFhkt@V=yw2X*aK`kRO9>ib9Y?iK zgd7Waqf1g+C{m(=F{V+Y>fa)kQUBI`tin$d(pc@ z%;>T+)ZT{!$o3JBqpSqAafDwGS=~GN{OIQHnj%H;?z}QwMQ)dv?sVdP1JZo82Qy8U zKB;2_eBrUQh<=;vI7`1Rr^fGyx&pg#xN0Y6ea-5&(MnlV9fX}3>TQd%%U+6P+L!TG zPdZMddTl^gQ39Hy@WUR|T61(wv7Xpz!}cyg#N?dT+9Ft3{k4=wY82~DCdQO>Qyk4x zCI&T_2mw*az+GO#&h#0{G-#nff@vX5)YH?`<64ze-ddHfFD+~#tb={-g#m@XW2=I3 zuZLGUGo)4U-564eFJ9tWFg5f<)*Yc=N*F+3)<)3MpSuo}5ihUg5`>j|x>WOLx>KjV zIc7}D$S0|bVs|Qo+;k`v)r62J9f<4vfgGf zO5>)GKWYVlc+X8#9{Vb1A`sY@*5f~s+0b4|BK5$G7;j93P=xu8;@bE#Kv7yAE9a4k zprR)w7PlOK{J9;r)P+0!aYEw%L=B74RYKhw4+F`i9hr$EcpMzK1N2ROoRDp?vpy9g zl2ILX4>xQU1Z!QC8Uju?kQoLp=^Nt1abnBGy;&Ebv13wTtNWq4V-fGneCFcQ6&q0U z+>P%DMR}&Xoh3_ELZ=a$V=6fm-=8Kb?PNjU|a zhV`+G#D>qre2at1Fs&QKM&t~}gyYOvOH$6~trMQmeYVLt5Mm^6xkL8D#oi>T=C9S` zxP9Kw+vZAY_pY=+A{UoAbnz3mDqZ4|$?JgUB%evK{9C$3>G6CcQ7CKPE=`k+W+O9L zt?Vk#Ey{^ntAE0n(zqmjm%c3AjiknIkQ|Xtt z5GlmQww^R6wpBe*zzKrg>B9Q$r{d6BN{&S@X^H^V3nE!U?;c(!(&**SY-`(YB_3MSEul!X~4wVZ^nESgz` z7n|M-*R4br+K*q}Av<_E*7yKhO4Om_#u(MpRri~6FumjqFemSpFyp_)ct2scZ+X%` zVZ5&c=sB)C&!8+I8~)ih?5mG}G`DeA9-=8gk6})=KG9;Rb6M}1A>0z~L!f#pL~pZ? ze%XpCQ}brp^QBQ-pX$YXOZO?=A(tH(M={f(#xxG4;(nXi;*nKX*jQ`&f|YK=!^;3; zl4aj|?mLHe{W(XgG<09eO#VxH*ECi77S}97Uc9#fc||aqbAWwzqOFr* zH@;frJ7o%CE+g*W0^bs^pzl`V!#GghUb=;%O67SJO6Y0I2o&_f=J>)si$|kQyLcAo zDNPO%zEg@L1G_QoJR7!(q34J96mz#ZsjDzE;-L1Fj4 zEk_9*kT1Nx(Zsx0=Vj<>`=UC|8-KEavwOioF=NNDLm-}2X+a1s8(~{13 zoMBJ?xSe%DzJV8HXY_W%m?ovV=}G%BC%v!cpjxD!bkhI%x&M~hFNr|-%GodHWpb5Od`J{VwPuO}jtFOJaR9?{gdxFY?p2;9MwU|Gw=1jWeF9sSdsyprZJ zmcTAtEmYxpx_Bp&vGzZrsMePu1x2Q?#^%C8)*dA@n9jlc-EwVhTS^avV zKK7@xc`#7JpmRlD5);(lN-`XMzEDDL04KS$5-6b~%g0GqhHvqi?)LKD#k$I3|Kjv0 zpF*-U2v>M_J&jQ|bcq$S3qRZz=7|X1iKoHJ3@4SOg;`VK&_i7$>Dg>5-x}p3;oEGg zW|Pwx^d(8ET`1@45& zk9Ii2yT+2W1YkJ|ndLSsc~Q~>HM|Nw@Ffv2V5}o@Q;vl;FoI6(6Hpp36YSscnK}20 zCcCyFE;r_T&!1A*5+eX@Z>~Jy5KqoWe^xFgU7B zkbDc%&hi18mk7xqxwDpuj(?|^_$C}a1As%qxOD26_sfULPeCxsiIf@#zcKA(gu%z) z)X6ybjcLbwlnjG!u(iqg!kFH~xN0{zJ~xz%jxSyN6T$Hfjpx%&xOCY3M*2>R1w6-6%gn%SLG$&s z3NJ9;$>59#{@V$-ThM&Hxt9$7eycmw9mi}FDc><_zS~Qsw0W7l#?b9aleyHFa_cJF z_WphK%YlM@>Kn5=X4QibI)$A{Qy2Y35&Tm};Ex#7uGNmdWx-=8ubkwTDWBy|mF3b7 zd@s~nI`e=<%EgQiXMj`%M8H3y@pSe_FrSUdPPOQqct`zcG6-(0 z99B=@S?vrB%(+6cVB_?>nX1G?ON+#j#+8h`1I0e39AT#ui)i1%7o`q+$zZ3aiI54g zbBCgCiWB-NA^|oQyO;Z@!-bB}^eny){MzV3pIIATF05^amkELr_}vAmy?sOBsI_6n zW1W(%O)2cSVPM^6=%_4ct7lxy0qbp9vPufTI4W6Z)A6S>Z+A3w+C(vP^D%(EkOI zzP)K)Hr_X-`~6M|H=XD_Q{Cp;Z>Ou=(DFK4oyMU0vxFhIx2&lB`0u4oYtkeyuS}!z zcT%NMjawCIsr_)&X!Jg*MB{3ASD|seYz3MNcS-e`%#8lKgz8K;@=s8lC8l>dwHa+e zS7}CY?xHe_LAa~J%%KG)?C_g1%m8q$VfT-6e>e=geb~-_l*3P*!941J3{&iO8?#_K z6SG|xQ~{>@I^-~?XyP?M!=W1;hHlvJMnnRFTs-!1ku>nK(Wx+OKCMpY<}r~gsrjAW zn82t}Nrip7&6KET6!y;P8OGrm4+cn4boMP5PD=DtMM?1Rxy_0-~)m> zpTnzQW@B}3ZEWnS)7A5^k8vhRvDIKH=@7HLjCgHM8^BW}^-fM=?BvPl89Td7`_u4} zqJrcb)n9A0NmOeF)!a1lNj}Kfm)y;^_D%Emv)a=3v{sA7JaN-@3AtwJgQtVS6Rh9y zM%ctQDc|)Qw92qMF|T(EWwp_L0{k-g zLz<6J-(%bZ_bSqj|`*cDBEQ(v&8ZBbc<=*A`l*_SC)rRNy#|cI*Xuh~qT;NH` zdg2z3+hO{!VkVYO!-?B5r9PQTuwfi1P7Cfpj5D6TyUXl@oYec?xKi@0q>d}rZ%unW z6tl!%#!zy)T3kw$y-P@*bWfNiQlERf^Ewzvq8Ddl+PypJqK8j*0ZkB-McmE(TlH8n zrnozva?&NA>-a(@$BI6UFka7O@&X$Is!S9XnfJ*Bb&{R~^_`qcm+%1y6(LSDo(m3< zzP@6E%{Q?zzC!?S661O&;)L;hSBZGaYuvGYW$1wu%)uF{#R3`00jB>Zv@@fKD@hzk zdLpyI{1yyiFtSRz^ORut7g4isBWJfNUS$fGh!7zqJ;g~1B}ve&cs*s>%rF8^1q?!I zIGq*L4+fs{dLq)oA#B*=aCAAlG8ZAfKF79wJ7tRZ{HwcOh8S5ywxp;K$F3(pR`~}j zOCDneOsg+37Ao!rFyIPF)B$+rr-hgVs0mFRmLM#E!EbR0sRT?DpO4`b0|ez#wd3+q zJB09c1!i{2vP=54cHW4I?zg)X4*G3rs387?UKBXD=lCynzQ##sNG|!U-aLE}50ft& z1uajY+K+w110i_e^m0JLVXW0|Fqw_TlY259f9#_fcrZeA!VJaK_9+3B_R!Ue&s^Xaa~fAkUAHE)l#@7Duyb??B9f#PSVL^j z(LT@=ff!iifT7gcblh>6U~Zb(UxG)QrHC`bCmhbGKRsl0&r@VAd5)fvb&-u6U;fyO z)UVGP640Y825(OspH3ZD>`6}UWzs)S%6wU3io=u9csQShpIitzt)db)4m94tp_@!3 z?3_>U^4#sb`yPGtY1QZyDlszaTZHL+L^ll*n~ib8q&U%yqiNPOnwg8ql1xiUg0}?I zb{}M#DMyr{Ekl|~tZgodU=c@QNA!B0&W)!b5^bh_N`_zvL6$&YYLJH(r-GRQvC&=j zfIHb!IT4P$qzr9xn{}-xP2k(<(nZ_}5E)d@fL;t5uWU-sj*aWa_QNY!x`NpQX*unM%)07}Qr0JuqQcywcj9&3pK3&lu)ot==HGq}xZB~*)d09lE2;H@)mG~w?=&y#|yk*JhkjIYs=ro`t#7*Te@ z$$UB)qkCmvV`gtoq1h-J5j7C%*mDeq@UwxjO`VSEg7QFO3qGAwa6ySx*Ci*RoNE+< zWb3H*ta@?WB=eD17tPvhc127;)TZ$MGNnSuDPDD0ow(`TZ|Cq+{oy@7gcpg22ACCg z|1`{#Qv;C@CYS1c^qHl*?Ax==cfRqTHt)cY1NpL?$uaAWEU_#7Fkhrb^8<$^+rJ8; zGP-4TOb-^B6EBFpxtT9H{jeH`1ywd;Rg4^%IRgBj12Ju50H)2KaWU}Q!PbK1;C1My z+4t}yz>&J-@RzZthJHB~)p5t0MDr?-CwvS6ge;~F1E41?Y-8}Uf(c-jofH9JQLIfF zOnXsO7zEXJ1qR-FKOLz5TS(n~e9eXh@rJS87{aRA~Wh>Q~B5eA@If z`|wYlT##-HGRD+ti3j{i9VgH9on|mrW%0ZSFZo}Kb+IuUBEEQ>&iQeN*@*$aWqRPK z9{l&4pv1_R9qcj_l$_SZQ#7CU|65JY#d-Zs<8{j?^;(NA06vVy*CPob!>KW7O73t& z_SNA}IDjM`7@eOsi$5G}>XBwD#5QAT&GIj*Cr8JNC+hv^y0#Ci9)&5R|)b0y-6mJujwpO$spczrsH$l65IXLJwYAn9WLOPXBhj+W@!)~mZYpjK+;`bwBHMB z@Muqzh<7Q*L^v`-%Ysc4iXili;sbNR{KG*aKr~%7ILwk+$wcO?zeOqO16<3=gaN)2 zxBN28H-cV){{& zv;zR#g2K?5VeknPCBP(|T)b+Xons!v+7UY#>~oP68@fA4Rp~d@qN*c$bjXSpJ9r|k zF>Rrv!!txa{?QYHWsgW@1I2j}ELLF4+%AG!*mP+T#9TrO`l_{sXRJd-SH}5pcq4k9 zKFrg+9Vu&&r*rqB(hRj-tQ$fIAV8w}j5MhF{`#W90(zr)@wAcqQO)V84;&t|?WF&> z5R}@bPLZ*RwbMpw<}Q=DafIm%u0z&V1nR7M__F%ErfXoJkm*?9n{4UV{lP%BNv$St z$TeYzBcUA25?#4js{()zA?dDogpX&C5+ksnIK;UeZ;mO5kkKwjwZ9coB+S{50ffQ&cLN1f7s| zlIA(zK=wz15P>a7irQW*0R?p>nolN!e#rT|u{&7jhaxLGjoQ~&`D#t6SSv|{S69)6 z%BYZST|_%sv=JT9LHbJBC@Hz%29jlWTlV!DcRK^hL&Z4zk$O0ecmji+67 z7YH~v4WVrmcsHpgC8EOWLZM0)^$ipEu(E?DfW*H(v9wS< zcGMW@0pk{u44La~jFKoiTA&el`>frW+upHe)vv8<5`#feKLS1Au z`A51`mZ44pPq8RpMv}2=L>D*hP;H`}%@&fkk)lhSO?4TL2pxr?f*wxk z)^G-ka7AhKoYrY1c=S3Twj2*o^!iU24u`A3NFKPw|^PpeXCA^T;ZCbeL~libGo8GM~8&|N2p*g zR=eblhqbP!n3`jR6MZ;_SypF*`4A(Hs?A4_wo8<(V?4Q;_AjsKl<5qD{*bJdyuL=- zg=8{s5BeS8-0&WHA2~RhU!VflhyXX^IXsB2us(vQ*&IF^kTs^Hz@6ufs-g@9jj%I^ z&Vn#iA9Z5wW9+DQh!?gnOe9*D$feB)=}JnjZEe1w64qwt55`OER(Fh9LPsIvbbr(t z%n|3WfgyuAr_?BTi~?&K(!}AgICvgTkRDKz?0P5KNk&#o$%>(Cjp|&@M<4KO`-c2t zx*<#|pm8ul0I<#`dB1j1!w9EYWQy&ravLv4IUXe~3ogaqG2lF!<>lw_YI`fMO-ana8e>xo?C)~=xs;LiD>~d8NyStSRm$qUDmj!70nn3dkx@)Rg(|&}Dh>VNWhvj;+^Ui(HpG9K5Wnhz*sy}+Ohb6!6=WzVksbo9$ z>%Lx@lkqHk%uJOT%t#?KB^Ur{p>W@qn z0I30d5StE&jd#vPmj0|s+iDHVLtkdeGWg>Df!eWezDl6XLb=StMix{U_}+MqZf{eY z;UZFH^=uPY0CmVikUru391laHk-V4GkAh#%HVdCh3dr8)qAGk+KdBq&{r|-;@Bk4r zt=wnzpIo?b1K&Oui$z;*%a(&WpGyjVI`6l=_Wn~b1p9u+d4I$0K!>1>91qyqB4OZ( zDaeEvl0Y92c#heF%N+o`!RQtRK%r~y6tq#2oUc()y)~0vP}ey9J=>A{QVd=ksOz79 zj-X4|zx+}FLJ$?{F_izLiaB%4hP)!e-*~+eBdB12ybHS=_SvEXi@{j~#BYpHreSXo zc9_A{A~3NXdxZNS#dhi3KuHVx2ZYGd>o%Hr6V2AvK}4H7=ny!CL!an1$E~u!jJctR z;mPd@4RA;-kirWdZ7GQQ_Ls4`l0D+;7XX zP3Kuhp1J0yU3s?s&H<=b{TZgeH7z0o{6=lOyT9?N`(Q5!b{;&0Rea!VSGQi*sfzVB zv0nJF^Pv4;cdw*2w=(K=oT^xF3+rv|Y;8Q)K-KMLR(oxyD%RV^dY#R7w-bhNSZ`&u z7a!ja*6Zy)=xp?Y-W|rbi}hei9(4A$f;)_F59Nh7Hn;CEz6aFL?#|w$-HpvV zjPD`V+k5nIM z1f_)!AGP;74+40!wUJRTK0cb5?%q~!b7Qx={P-BrHnw(lHg|Tn?=U`Y?_sbR?mfKA z_-Nt72i@&nyYui4Cc5;9;p${KC*z7T)ZD!O<-GF=DN8LT5Xq$T( z_2L8MldK!=Za>_B7hBsI^->8;umiGtu(NZA@lks_Z4jM%!K3BJCnwonyS>xi+qlE{ zXv4R|HtfF#8_SQ65p?U}qxOTavv-H_F+mH0&8-K$;11)X_PRS^Z+qk6?(*Yfg1xcx z@Zn|`H`3DUM+64YWv9Eb{b>2|@rDTZy6s1g!reRIC+&yLUa<9`gBy40@lku7ouIS3 zx2MOKthkfGg7$W{9&K$Af~GdOlUzVTw4Lp(px1kZlrWW|?PMMCZP@MG0oF^UXgkRP zGNI@^+74(Two)fFIX+=wc6Zymk2>3T7#|_p!`?=x(|NRYhw%xE7WR5O54v|4AG2t? z4|jIE-Oc64CoE_$c=#aP=`BA#MzmhI)d}~)jpfHDEcW)s=Fax!&hq19La`HWJlxz2 z?lL|mybpG_AA}FL?l3-@&vth^=xuH9-eG(!A_d(C-K}=}4(msRB5Xh0>ux{NI78){;xv#TUT=`# z&H7UOJ;V#MX@5K?>AbHk1UR%1$x5@pWJXMvrpw;SoLQ!#F-Z| z4F?K&jGf&rz@n5An_MF7b-F?O;iHriTU_GN!*#qRG|=?wwbz*YDZRKVi>ibe^%SYqWW3Q zil$=P#NNNZPdN*N>GX!LKL+D#@)+u0Ug>N1#A*QIVi`4`edxg&?t>^%$Xb_4AM?DXF4mLpPI(rrfMRlzBN){7~+ z-Pl5r8E5QSkv9p(o^uz-9o61WIYlXp&C+DUET=TBKRSk8NfDa(*}mc*zIsi*|C)Fb z13OCr>S)djGRPPUqd%S!Pw(22vYKhBp4JGfrc>qz=ceqv`RXn6nK*e83c&osEYqD& z$_k6Fo3IX-BW=EALd-yE1baLG#q+YalQ}W&tFKubU>f4ZCT;=N&jQtA&8|B=sY7Q( zGencF-PH9on9L`ttR?|nJL)-a0|n}$$E>+(!xL)~%-~?ccoS=CQ*ErN0+u&N8B$On z3EEp1CFxg4VP5*L1yb<%lj$Md4Ky9_E2s{ZG>5##NoIL zBlqYV4G4&XM_C)2SP^79zjSrM z=$h=Pvk9z0Jhl4I+WKk3I)QVPF15)m8!?&(LHi3P>$YK-&cR@I-Tr-5UJTS1C*iMAIbCJS`)ucy%Mg-@<9=IhQHvi^GOmDIzS zxO`V4>~=f-yeAOu;UJx2a#T{b5MhTgu0G`JG8L%Jt%pPlk>eM03%WcbD+72yfkmUR zytyaz#|=oKDdG`TY>uBo$<4iZS50Rm#OAz5BvA*a#HY-Uey)x1ik$*e<~KICws&^- z9z1*$v^(9fM`1U~2B4(=PV5QAb4(QzpR8D4YanXVqoS7psy9Aqxv=Zk;dZX_kY|Y>DLqy1U?P zqX(b4!kgWVcgAR#S4H{q1BL8oU*^BN%Va#6Ke=nPwgsF0zWIG$UyPzXaUY}gn1*F_ zR?Cu6HWHVVpG*PhYW{BI$C_={j>&; zIEaPAcfh_+TEN(K#CN=sh{wAum`MOTxk(SFMIQ~;c=6Ymrs0}kUz~9AnJ)0x=!>U* z#PX4wec^2$RtI|zOp23mA+MUX*G+mE5BZnjful7DKOwiZpL5Iw=us&qEUgu(QS`2{ zMlR883WUEPZ;BcW^Lm6mwgwZwFBQ^ii#t6*Re9mH3e9+OxiHV0YGGCtCx z*;gPzKmoHD`^bn+97j@c8KJmwS0vm@982+W7N#zZsOWErXuY3`w9Dh+vIxGpv9+`D z?ytvN?MHeS+@&zPJ#;3~xL3+g+j-;l)gQ(D+)}$b7wcbfOQGx@wws%7H&y;^p2*si zl@fnqn;~W2-*=8&5&3aQ*tKF0+bA#|ZyNtj!hFOMCsxJiXB?#)Tlls;EW5*O;F0lX z=&_fh!2h4KiO;nq(M(&vk%yGs*lfrohSl1zs&f@~K1B0jWDLD^n0d#RoOUv<&?`7- z7Ww~J=ahtJ3haLEmSTKTEEH96c{vR)$@4`A za&`^WD;zitJ!P!>0vmjyj|9ROGd(A$VG~>6lx)b**rbZC(}+p63^i3Sv@6=<}EY|DUtRx?n!(`bekpzCbIt?g&a3tP3GkEE1p(; zZR<%NQ*$iy=v!`vSsIFzHYx^{fx$CR|I-*a-OvA?p;w=BH( z09s*&3N z*Dy1YDvw}6t_k$p{4emoQ(tTPZmIRRSS{y!Z!ib>1^Nc-=sXTYU5EAGT!!e5OWlw4 z{SCTSn}j-whVm{x3M$wMW}PebWex>Dh6DBE1{eOScyGrm>0v;t;dBb!uT7`p>0`CR z#oghUX`spE_o>sVVQLs21n*bMT4qhQJ5g`nj?!jXe{&cLgFkk^y6CyJGeT%e*eb%tuv;hc#(!~folv%%gn^=qopDc$4kQ*vehGxO z%YQ3Y6L#vr>%7?5yIT+&C37A|@iu*j%8xKu15oR3n*xbtL0nR^F`+!|PGl_UNCks; zn?=(bZ;9w^lub}idhymhO0n15$AmOe37vl2MZ-p65@JD)7D<54r37yb+6yi}g6^^C z_8U2ull5nuF=!L*OEo$xbs9Xp>qHiUxtA+y1qI4u2H6b^t% zc8b>BP`aq%0LIHXGdPwsag8j10t;mbkLM8yvrcdY_RrS=cRGWd zgd3+~(HzCqxb&HNa5+kq)W`_m{9yk$Wk?GjvSuYu{+sv{tu`-EDmY0{qU^ z67$+JUU*UGa~xN>r#|+lvpER&Gtw_I99589<-`c%ytMFfrBkfOz@pD`FTh8Mta8nOnH>9{-Z*j^#WZt$m~12AXKq~TYT+%{uf*e*6K z1@@?c^Al5ytqIjgE9GpzL|_S*zsYQrkE^UEQ~S7ir_x(@DxC=Nvas~dok}M(jtfig z-Kq40JC%NTr_zt^R62-mMx8s=Xkm;mcyqT(-EcVm*o%@{+=aD}+qqjiSK+7r_-<8* z4&JE-$Bn#W9gL=Vrz)5#Zy4OIN|cCrv#>l!K5(AgsY-GU7Zz_)6#hF^IUP|@IIgp> zV1#i$?gSe%%*-cussg_#5XPM<-5J%VvuU{e+Wlibo-L0VL*Tsna853devSDAHD{d< zcN%o#Cc-!)X?4=hI?2ZOtl8L3V;=15o#Fy?oJHAjzOrO^0sSBKvtOSz;;{dtKS^0V zJ#hDJ3NNFNUH6=H4qf+D-dy;0YvJ2CQ|7zqRw zCH!+ItB`ljWEHZ&Ny7|AMPkBzJn?lF;B#vTh9MciW`qlin!Gm6|YB`%rHDB_Xj ztTGNo&M4wi;EWF#Dg=qvZl^msp zZKOB&F^UPgC2?e&mJwAjTC%IZ5Y=+gq*Q4r@ix&s@SNMjs3Lr{}fm%e>LP^u$Pz_4W3iJs-?wXm8mK+w;py z_GQzVyZ+WC85IpNBXVTGNbHg(t3R5DmA4}&UG4K)^Q?YU(3hY+=t!qPml82SkiR)9NvW^ITZ%<3_%u&AjeZ51Py8v)Ymj zMBMK*bAvRnO2ZZF0@s)&){G*}OzXJbXtrv{wO6&1raY>ioz+f`TEAA0FLbnao7hQT zj$*PHY#*~?W1M}{18u>SWlZx6D zDwO|Q^jQ5ZLNcO=>XjInDKE<1P1ml%n~E(w<;Xb2&w%lKFm49}oF6l^`1PC))o)ta z@bBjNx*fLuzy0g;zx2bjtc(%?lG5__#>0&V8=LF1Fjyb-JHWYw6+oV0^e5WbfY08} z4*uPIu)9IOH~BYxb~ZNuZF6g9YiIMp_Quxczin*pJ=os*H?{HIM!DcK2Z?E_)W3Cu z(Jke|>7SW||E3?Z1fS2Y#%Na+QJC7u30OjSGX*%WBvi~t0A%}w32Jm8v zH$^J2FWJc@@@q#|czcE(hXc$Yg6>mj+=J}Xa7>qAz!70Vgi!f^owP05|K>)$(qFtc zZuu^o8c(vE(8%(~2L^v#N zIak;cnO_Y3)L;x!jRJ|UKOK+o2D6g;G54c7KWsc!|6cg9s8;IT$I34mBu_veywB0}i@olmuc6 zP3a_v$VNid(E9|S=t$c`5TklGV)BTSi&SqIOh4G=kzDJo*5Qll$@5yP_5DWkJ?F*k zA9!^NS z0O5pvY-DiukQ>7+B4 za2yoq9M6l(0D0FR)hn^C6un;116fTa7lOaeFglBSQOcpecukIBPm5T!_EnBtW`B_WOhJ_=9-Sbvi6QT=%2U zfFUA}lNl-4!Dr{E&s&FwCG)+0(r8wXk7+ss)eEmh0wI+!X)FN{g`Ekaeg``RU9xC9 z8|(g~lZ5C>zbm0nF797=RHNTlk6DdF@91&|3a2A>s(N(PYMfr2AJ!Trs4MwSuEL;8 z(}#GiIh%H(dn?s4QSJ0wOKpz3cJYRjlo$Wdj8$cxh7G3 z~EBHs1HT8hq4xR7yzuzwKj+4Wy z@fc+-QVZyV0i`HB7cjw@F&SrlrOCcH1B}OnQUK!$Sp*D%fYS36FFeIN4@tat=7@}i zx=gfJ0x3kA1SpcO)NBQc>}Rq{F=msu$h`e`3fDQtTP4^ZBxsK3GZfQF9coUDR~L=u zGJM*)N-~_^las%AdR#vwvS!XB=Gf}LR@uzlypT6i<7GyL_;ci*zZdIAND*SRv8#}% zSh*ZhoQv}8id`wk_^jKHyoc8y`jP6`a&`0BSgKOyV8jM2WioDYRiaMcrQ#&GPtb9%Ef?=9S*@@Ua_ITat6x>a!X-vBNsvl-Tzu%8f_@OrJlJKlfmP$U?U11Op^d52zj1{XhPQE)H zV&d!|8jngCigx@_Vg=B4?n{7ku81c))*}^yh?-G}-=K0Jp??om;|1yykD11y&`;_b zCKyBru;*U4k$NHEwxPJX_th>u!N8YePviC7*34)ANWKB#r@`mSMPz3*0&4nWtn|x7 z;SZ+l_gnh&P}ILYWW3Ot83|~Qz5r%3yDU0`K>+N5Dfhj)Km%vC`q{C8HF5jF>RfH$CYu2zMCMJ0t;wz@6q(Y-IvG~vw%p6Gbt7gDejE3W&F4* zsU(Tf%9|ACnR*5tYL7`d`dtQ1MDA7fWeqp?_nXNh^uHZ)P?FG#yT=)pVT9{|LYVW{ zRTV1E28l}{VM|~Kavo{EOd3!7A+g2!Vw64HufiL3O@t7{TK*ZOkn0;7Y2=hs*k? z8-A+5z**Bzd1)PkSBxiZ{e^k7i16QaiAlZ78Nq)vzkjR4&+oS86kiB!Qb2BuX8jq4 z^bTyUaP5vP`@-A_>KR69=65)SkOQY2o0uBnBg(jv66 zyev88+TO6r9O#?l%}qJI>pH13Eu-AKewRr>a&>yqJiBNX-WW`B`wt}TzuH3LfA?pR z{g1h^T>o=zpq0;q-Q7(4KlsG$|F$+a|4r?FpCK;({6B90v)ua2u~Ck$zNL-D_FvoE z8@oIH`ftI%5B_EU_0RZ-{a18F3<1ZED4TDAw&{XHt26CSI0zbYrDS7}Y<;ZsK}6&a8Nz$hP}x(zOAty?*O2^%?+CDEaIRX8lF z%}0-R)N72N5&uWG$;Xe1HjSgPZqYl*>xZ>F@h)>!+r0%#gH(@#Cda{6gLB1h1^2HL1ncXlL z2#2WjORbW|7-q9+p9B$fL&Fmt`=MVC`mhp)TLfS<4O)v+qTZH7=!L%_4URPG(Nzge zhXHsSI2z(^WKK)M#*$?fU=zUThbDx*?qNwuFp>#Q>`bOAVsi&k<(Sd*5fggz>8Ov< z*0D?%Sk-aK)y2=eP@)(>iX{B#u^5YmEFm~}z{+~=2d>4$F0s6du5dfh%{1{sh=0hw zI-{C0Ck1#wOc-Je4kI>Nu~>UiQ;pMS&EG)EQT2ubZu8grQSC_Os}1;_FDbml0?tT5 ziSz17^LKUnOjS>QS1;=)AQshLpPknl4Rv}B!0NBgj_W8a@$GH>bU-@ z-UP7CQ)*Ix)oTp|_o{Y|*DuZL)B16}`8#s-&+5$+g!}CDTvgRs^}Ja>yg06&tFw#q zv(rWmx^M)5PwFSn@D7cV_uH3p~^f?j|3qxf|1Bo6HeP!7TB&lcz6;4rCj!{RIrROCH)%Fp{ zAwYVMQKnWYa8bY0M@e;{4;QkS$vUKGvvAf2LK?I+YQufGceo(<134-xmQ~ zyy-S-?Wc_+16QAssAk6dC7D?yS=b`H#+&a-E;kw+tmam8^=FNPyvpbAt&9fwoEV@U zoz|Nued1ul&J`I0~R_jK>Z?jP6_5?S$j$ym>#c3>aR!zqo)HQ#0X&|K&0aymhN1bTk>;`#X*b)BAm zg_m$PnU}9lkK`ph#h2sjk$HLg+ljn{r|@!UfW8utLj-7^%0qZI{Lt-Bx5NB!nke*E!kZaS1_=dbA5bci95VFl$enj$cGdiph&n~bCWr`F|Q+&)-+vYNBk z_bvBLPU*Wu`!tWH1NkR;bO#hS)}AULMwNR-we`z-H~hFhnhyrfO`}o{R1V*vFXX&e zkJ%-(Pu_y7x|cNY1H#2HqWE4zG<60FXYIFmFX8h8lmTTGJHze)FByJYF^k75MQ?{6 z=@ri^OeFrwukeJzi1Iv-R5TY&I|sRLG=qQo(-tsZ^ozgb@R)CnM=hpR2NcLLHyXEQ z$e_(yT5om(MdwifCGu}`7x?9|TG>!(@LpY><&nR1-*&=Smtm0i$yw2rvb*8qP5nXo-nOieG1^OYKt>}_lBlf@A zo_3`$k}ush)zCdMb#`VzfZ52=>p(7dIuZVg(574lk~5*Nz!pvhfjBA9QzA{DkOWCt zZ3}P8>IW3H*A|EJ<&JVbh5qGe3^<2(-Q`2~ji$zA1cCt~`j{{k2}ywxDovU6fItEB zMYbKp*7misv_A|9Xx9ZQ19!Eo&JC_Ki6@TO?nC`c_5A$w;*9IB80r<<9CUb6L8>%V zK)Y(nRFaL6RtXDIoiQ>i=eCXzyR!(U@UtQnmr15Q1cH4(NiL)Fzt(yYhF(DB#&4HoJ>7dL}poH=( zruE9ucEz+D>N5dXhG6I5yyno^M2J^@ROL~qHum9sgVLxcS1X$+BoLZ+ifUg{!IeR< zjFBV^X=`40i%JtQ@A)NE)1))+VAIN0K6fv=>i1@*C~d$ZGY|O{B5H7&<33U=PfV#{ zk;wJI%2w_k_m`+QboriAYpZH?P5l9X@5$fX>KZ)9Z)@`8iTr)Dx>m$GO1HT27@&NF zQ;QFT#|$~Ie)(xj%3)VFp(ppkDCoqyKgN;DF_3rAIc20#QJG`FBBpuWa9-yf#7%)T zgK3u|11H3P*(|EG1H)S%P07r>Z@^Y@)gviOP%d&qxqF=VMn7LG-b+p;Ulzh-ZpuuW zS)@v9MWr+pm|>h(r5HM}Tw%^|cp6nPf`Y^HG0v^XBv|h6NA(->$YnC-oKtpG+|o9o zs}2~;*GDdaG)D0i2hPmG;k}AciUN})L~<+BT}H1TcDd@Q7JW*Va>sMAIgmgkJ?C5g zK1cIcEB}sw@KzS85%;P&B%Xp1PCxg`|yOiNSkm^W}eJ-At)E$q-DiC!X zr%pTFj9Ye-=A?5!s`_j-Ql~FzRS^T;J5pP@yK00=y)L|R91j*K`xQl@XMxLzXGS>_ z3|!2?s?_|3H{A45b;m6%d$3yI?KKT&MZMMFJMqfXV50Ky<6v{^(Y{)dDtQ{7^KyH` zeYxeo+}ZSMZpYqkdvAAhGSexJ=igcms&kGUDlb zF}_9z_L5p9>b0tG?IP6%L7x&z5R-(GW@y6sju~{toJ5+kGe)0^RTUkOutS^?ECQ3WU5vRtLnjn2dXRs`GN4?MtIbR6^& zXSe0kfk)t+BOGyFpEKBreON`*09}u#AMC<)$8*%GMFY&D8fhCm5%K&L)7a`yp0^89 zm^HJ}okf(HdaUYR=RNi+zT@K?$WA&uUVo4Fm!#%p^m*^q(i>_cu4%z#LY*h}0c*1c zu}4=9XyArE53bb+3AI!b3iSt3#qZqv+`WQ+&r{{;f7Bm;;OKymzUH^;v08oowoqAn z^PlVQ-WJ!_=?nh9w!XHqs^0#g-ZJAJtFgZRwur@UDY6j6+akTKBzuSpr3?STl~FOi zy8fR|XWy>Bb-D}RSJuDe?qT5wn%-RJ@BhF*U-2KRjFq_Om9?ddFA2DK8^~xKN>tYO z)j#w(_g*InPp8JI^jJ`mcm5dFtw4QQBZomCyQ1fE&W9Bb3MvaXoE^j@z|rejQn0!T z;@yvmBl2;SzG2wyi#j9{XInanfk{9%hxIA;B%m|0fy_Qt<@m*PA?uv!hOwI-c+BaLT z;p*$%y!oE@)%;cl0zrx);gtY)&Rs0ve1J0HWsW>%w#}{r&RDtZwpmmTx!(Har%map zEN+tHk@e@>2_lKEtu(KWo#6feSjA5T2lQ%)EabKvgYpxktz?mcIDo4A;xL9D4{mbX!i+x%1@@mn`xys?~(@_8;Dz8 zxpG>$-CbJ_Uei|6Pmnw?D!>m15ny}zU}ES%obwkA)$M$1GjpWo2Foo^&TuO}gglr3 zDhH^Xl$83>p$U)m8=w~QZNWYfHKb4*-r%A!LTep5)&^k@O_{GS7#+sT9d$4dlq|fT zEhnn@Z35Hm?48OwOc(r9c6TRN(4FNC4%<{y=>)?~(U$+jU-(}02vigKu;H1mO`Ng9ORv19{*&NkNpT364)2`(5XG^H>hT3DS@ zI4z10q%Ox5Jtiam=9 zka61UI{G!9%RB=s{CB169Q(NE`LT2A+qTSMk8-<%)cejMQqbC!7;5tX?~30=>^tem z^`Xu-6o`g&T3wI%%8KI`Ohe=R00ZvKr%3+>H?r3gW5kn9WX5|gZ4u6z3JITrpS8EE zfI;*+~1X)+RC;P?W*BUIg{ zSNq~{H~PMcTBQCe^UP=~zT&8oHTh1@ugT9cYvxx{Mq?UuU>@)RkMqOBbQ@;t3%_B0 zCVExdyq!m16NuJQWXg&;bIG(V98Nr=pOH@CHevOKW{C*5NIPegCoRO5%F0TMUQUPJ zyXlbLNV`ouFHw<>2^cZ#)9eakN0`>f%=n^SWhl;k*bO6bcZi^D)VH85(LioZj!YgG(E5r9*Yy-z; z3>aXl-z5=-yYQpc&JhUhdxe{_gvVac#+!ER{PoqCLXW|YWan3SdmT{XN3EA5^&8*G zi(#D$w50xy(Z?v)V}!9e<#vOs2@JRL%$VNhHNq`W5W54q+g?K`-@M%xR5q6ePG$XU ziI$h!Zw?5%mgU2e7|ylXzLSDnO>QI%!?j2%It+S#_}YiE6suLVn1BpJaQSm-yhdT7iD!_QLKzUfFuQ zvh#Rl_wmYJvLLE8pdj`+qhOLzayzXF?x4%U2>|l?D&~VSWe!=1%f|%FDy(BvD5(-Y zXGO9hJVJ9Y*oJr4t=TLl_Ouy>!^V85Mlkv6%X!TVviA;cy;YV?%mvZP& zZ~Ze3B;5Ow%@r8P6d>g0U?eH>hK4?CalydRuBYXm9^4mXFHV5N7w3HxHAq;C(B_AT z(x5BW$20F;Vop#LXjDSdzuX+iyC_;2>il#6xkg3R27=4A;vRS{|54 z$(RTk?|soZ9Qmm)h8Oz5AVOYPB*79gr*vM%b?->JQW45IE!{erC;yVtK(hG0dc4n~ z{8!VOy_SJxz=K5A0i`xZI&R+B5b8w>qEcQ$tSb{@q1e;;h^?*7aF^PlngQSsU; zj(g%n{+B4|6uK%TRk=nI9cTkH#G_GnvsRTzLjWL%<>!w3Rd&d)@=`|j}#cm%`)KSt;y3#?8J-0Go5T=IR1*El=jEufKifc1m@tV-XMRq+Bv!69UnX1bQKC@aCTlhul;|8t;+6$Vh%GG;KbOO zh}0yA@V1nrJ&2h*G>4@qLI<)`ALuL9MwLnY!l^KnfX}!j5~Y@+ty8q2qHa~kv_Hsi zS00gP(HZMlLmgfM2Zg!ptO>Q`(-SXAfbm=Xx&YDxzdrU+*=QB`gI3iEbvghxN+o}koU>~VUp+U-U$ zr&Mb*>n68A5cec1DfAH|ffIlu2|DM)K(8pOfkB*})=x0V{Jm$$jiD=*=5?%=Tx_5y zs?|OC{DooTX)z?!)Wu2RO>$K*JSyveWShthbLTPZlt`a&t$hi#yvRCffD8NVqJCau z$cXami4q#mP1W3%+ ze35$es_~pdT2bRV+ldGJ9hW?;LOD$OR|q<-&c{~A!Y#eYX@xy4m+VYRBtgbdc2MMY z=@^gSi_g2?f@;hH=y<@1EJX<{ON=bG(eDvYg1h@IPH3fq)5PEDzPvkC{Orw}hvi4_ z-c{bb*>L}^DNo0Cd&Rq!Pip`QW_0w=^z|FMd&eGUcluBE``fy{Oz+8!?4E~K`B*9( z(njjMH{1@fR{`(C{yMzN+I;u2b{Z%_k8^jo&C3g`{_pxRM>$+K z{fIKrK;5nINjSqIcdNvymY1uOf@-p?K;|kvUG-bm*8_0(h4$G(SkB)V+nse6GtZ?K z{nq{St;>J-7)QE3=(n?%1j?LIB&Gkmxu9_NTHJm1?>^sVRynhcKet)a`b{&o@&(3^ zK@+kkY~>5ynYQ?j|Lfw(UHP(9vGsX0U8lIIOO!)KVcKsm196!Wdpoz6!9{*p*;}^Y z?tga#;+sm%G<_HRp+VY2G-)S${OvcK?ze#W_L~1X^EWgFGhR zaKud1bQX-grkxmA(uMA!J~@8XxEOkhO(!mzY1=b&``p#24Nz#r}R8^ zuwK8AR&aBF&DgW_y{fWs7C-`)k!@AC}gZz5Hfn zSzJr zT&MNnE-I}L%WAYf+)<$=<(JfIeOOAVWlOm_EeE$VRa&Oz5*n=!cU5TF4p@Db)2VcI zmRY5kHp`CDQD%MkMqQQ$=1x+UChLQD`lZd>@_H;?X^|T1gGcc1rp5Z8gYz%o$m~Sk zqQ3f&R4RS=M&(t!-W`iCP+cWE`6v2$_paWpx0xOObAA4%ZZFaE@5aogZnAqBJM7P} zvUhFhzq`8Xw!QklTwC?QRaV_~ZQa`c6`GSJ*Y016liSoBcU<`Yd0NROG3B44l>Eyl z`%i0>mf~N0t<8r;DxGgRcNatW=8FG1f4^0cl#Udnjd>YYBYn7|7AY=cW-5_BETcp6 z*?V7w^x+`c=d?jC)*roe)JJ}6f35Z?mb%NRj{;+^bBp!}N}uakXh~I%#E*)?S=>Y_ zsc>qTz&gvASm~dQ^F#M1W&oskz<-%i$e%Hz6-w1eP!Ix4!;SWZi?xKg#Qw}K?q#V> z!Kwi)AIuwKPh~NnxVuXNRL5i!qkXk_4EogILxbFm&^MjYLuZMYaZ2^p(bMOzoupTy zEo0v#cO?(r$_Vs>uW$4DSXoLOpQzwHrCQdLOZP&CqJvlZIoxhkfm9$@CSjX>RV-Px z-H6OUXICcPjkf0WycEge(`G8ihK$vx)&V{vqzN#pK}jkJBs~L-v)ZA$?sFClYSw`+ zP|%na$97TYWSCT`qN*b&f17B7$ZJs2!?{gp*FzgyISEl*cF^$+`$K{hS;taL#9-vW zkaXLCL5||nGrsK%Dz|L`of9B|{%*$)bS>TXF9zjMPDUBtsh3@m82azO&#>W!UvRs+vXsQ#_aH= zv$&FkhY)mLRL@$#Sv=(a;J<0RKcjS-jz<@}*3)bNp=^9L?)7W<=-GMoRqeOa^OqQJ z=iY+#jcxP1r`j{DV*WjA^xUef&wKAMQ|ZN6ha!cAQ@dvu$%z`*&+|&f`ebJ&rhN5L zu>9=34gA*E+Rt*RR-<*bjzI*}`sM0-m;^J?@xg1rn!CDZm^fyy`1h@|>C-@eN>g@1 z`PgW1y@^wqLx?wXTz&pEpVol4XBKu+56*!tV8GlrbOfzTK3pn}0xOA|nIoAZ$3iFn6v#jDF6eX9 z83a)zAgep#z@fumWgOuG0z{3MRymI!(3Cm%a4 zu=FjF_85=Nl*iEF^Qxq;PXl(;%6jGHLNES>qGQ7FKueCdnH}6saD2HyZp1tIGziG% z*tGTjHC+PgcblA4aWQT~u#~izsS`+Jl+z2}SyIdZ^9^!hX786j&0j7)%wNVtKKna< z(7sHQ5MSOdAin$`Bp<%KlX&>@?$V)cAVoNg!~18*hA)>94PQFkE!W8u3}2?mg)eUt z3ty&ixQR;NE);(F?;#U@_*RkdWkMo+xmX~4=?MqUmcC6Ke7Te~`0`H*gHDICWkDC` zzD*Q#$Nf!`V0;=E%7F>Q2Qg3?Iq>C@V&KaxDKKM;Eb8B%5CNAvG>nX9ez!Y!`<>{A;#p#!+()2B%m_%YV?C~rE`Y1@y&@&@!r)pM55%T2Cq67l-tEaS7=jg?FsLQ= z8PhmY^j--cYPm()bsXbg)s4(G!i-4(0P9W_WmS^EA3dEvozf3XK3vvE-SATd8ZIJ- z!sEg)NR_3G)t9_EY`h@s`3ud(4Q?)$^Js!a5c-zujvr$l<`mvD1%*w8r3hoJ5jwfe zq$L!$GzNb5s``IU&oycMD$nXCiD!5$!&lbBI4ra$RxZ=5ttxlp9)#4{iQ9mE*Qxnu z%|&KAm0KE0Oc;I!{b+WOHx_8#Gy`W0Bra|eqr6X6O?tU}&9if0CtiQ0_Tn|2ertAr z1-q^Gb>hJIGKygfftGpun%F=3b6%?+w>-xmmJ<3RK&MuNPf2)7XVSC-rI%_{<9ko>DuQ_RBy)g$ZJ^!Y2mTE3_ z%zj8cWvTxEvO^Xz<)3lJVmphESe)JT6LuM;(T~2%3!kqEwEfd(h?%aqM2x+sCyC?a zWs=ChT>daw*x;?FYGO*h`=RRe@1HOQ8BJ6cwz1Sv`tn;((wE{51z??WFqjxYlaCsGir3^c`6h38!Pc=#SBO8IRpYv)Zg5vTFO@1*!oNo6HFMLkt$Z9)6;j(atE) zZ`a!AR~FsbaXU0w($25?Qe+dkgpI%MVDVNe`*67$U(?kj9R+5P7OT)jmO&MGf=lFs z8gr8MmcZPWGf=z;p^(eOKg5wj6}n+BfW=3j2X>Zy14nvm{NZ4Qp?(Yo*nN3;L!FCj z1G!|2f!~k98IflAYqE1{P_Xa3!uj02M057ExMy4SbZE9|E(2}VQA z({UQFDA%+O&2AY;UX3oNkl?xPJI>0)n(}SUr7Cbri(pVJ2|!K^BQVgrT(GR9@}qHH z4Z~m*QT$C?xZ96(i>5hp-shUU&r#&jgTZL)=tlw#=nE$p(9L*mBCPhw3MFtZBC*?| zM-HT`P#t*wu!J?I4u7m8vPx{wt|`t#zYYfj?$gPbA|r6nd(43uUIr9Ng6vLoGiEYu z3&4|;P+}$m-U3kqs$4d|Ief)bQpX1VOQ*BJjpp_>)O0w@G3VcY3doAyN|a?0N$Gp9 z$ulHw%Y~@8Y@PIk_ji{|dz5ofwClJmeSvwG?$GTs7x4jWz*cB*cU*Tt&2~R>Hi_^`UTsjOc1#FS$tNfFFi-T zXe^Fr*H?6JjRt9A&_@|^0IxKhi-ulS%!YD$2wfQrILPx@a!rIvl9kIEmGOeNs{w!< zgHjA>BG7E8e>uWij{tLHVQ}g>CeMN*4H=6b45n^?iP2-??aq@t0|q9TcAu!Iy70UDCmXp z!C`0**@Yi~MllnTgT4Q3D`$v)KS`6Q|v9 zN}O-2m26C_j3U%NVRfOAB{bf^7%L`y$rWZy>C+&m7!GFEA1HxWK>?d;%VjPcvA^NL zhDW^#I_&+WRX_lEYa2aYqe9^s*qXd z1$wd4Fa)t!ZXE3uk4CX<0Zg zsS{&Y(#(r-G|*?!hJNV9!vV5_D&7wxAX6g4k)fhSel+@pvxj&}F{UWTnQhJSa`YQx zg+pJQh%fhC{nM)Eb7Xnd(8Fv<+VNyLx^*#uJJMCIFPL1cY$$XZr z0yToU&zB?&L$c0yOQfA5>82iT3z~0!@~)VW(QX|1wJ2Rl73M}`UjqBlU12XT0B6l> zaJVL1JTwWyp(Uokm}7D`MOr~ZjkK9A34$Bn3yXy*Sc(!nn=)m`{3C3QnCkVkW>})N z#2J&A>-8j7_P~HZ>e| z*_vujF48`~TZy0JoPPKAVQwxOX1o=>f|%qA?rMe5|VDZ`5mi*8x^B=Z7a>3f6Q zlQ0+nm&qa+feB)OSO`lQIN`3gJ@QQNW$1scLh<)kPfw526a?L{J-@uf`HF6a?J+RH z{v{I#l=ogS$4R|?ReJ^K`}E>@(W%-&MFGx?qgcomMA4Lr43R@gFo|;}(b;*b5C1qm zB2NX}DOK3wh;AXUFp(tnFt*ROdWs8*A6cLs`m&KyzjK!iVJ1 zL$5>lB-Y38r)lMdSVlwv=thg^u?m_wGFdDGg4o8$vpyu!LQjAGWHHeFiQPV0#dZKA?k7<*(QD z@)r7@8Bo~CL;Q8DPB`Oi76mUON4f@?-z`)jOZ600M3NFXy5nAN3FWalhH*&`#D4WQ z2GU1iytj#AR@7Or``UgET}&A^_GDy+Wz^$UovV+V}7l_Hi(N*wBzc@ z^ZLoN)7U+u`0rq9W8h&&gBH-(OH9P(grjVSGmtUVU~>aAx!u#e6Dz1gqzfZvsV_$T zPk*&eTK7-xCJoub9>Jrfw9PN7zuF18*PQk*FT<&s3wIKTXJR$WUw-E34rQpGb)Oay zd|k#+d>m42JQJN{j$DDYRa7|YjG2+1Dav9xpOiS1*L6PE#)hIj$obnVfD2aviSd(vIywF07SPDV+*45SA(j}TZlHwDG0H#X&?j+ll`)-6% zh@>!Q?CBvSL~jkbV9?rGBs2xm)>269NasREX()*LgByL3Nq2Y@6fc+o87p_EQ)^l?;qNkg*Vb+>E1h5C;~>p^OiiMO%-RQ z7F<1L-8>~BA4oa(gik4DFH*|->-2qG1M&p;5?J32m9F;a*f@0zLYAHMiYaZ*N2sxlj(SZ zmobbsUwaCp~}Ev4aXnFo(hIvV!n%2;b@E@h5(8`!ni{{`aD}SdJgHK{d&jkzlWWf z0TlnRy>Ndt8?z0Dv6c=dlYyoZ?fwYmcbuzCK!G?BxqWUmYSr_@7aXvnoapqRTjKeL zy7}_C8|!w)AyMfX3Hg}t<&L6W(}D1 z1_W{elq0i0n9188+>I&>gBx>&0c<=)EG@%HLBj)Znb7d`29{$u#(mD*E%7eJ_)w0I zH05}T7Z`H(XkHj693Hhf@F^1vCJdP^Gr@?BB-yGac1L_J6oQ4j zkxWq3PUTZclLAb=-U)0ZixGw9#dI_!MXBSn7m(au1~^f8>kx1NU>FwiSpaMpg@cdO zRUB$27&9g^iws9>awJQ3#paV3a05=i*_2WeWdMSreOO#t`S?a?Ts(VLe~nwPG4J*I zpWKb7{gxtJYoV7UF<_V;_M*yY(Pp=Y1+4nrWa~{f#lZ>Dci`ECl6#b(yW^2>gykIX z-oRjJf&~#eT1{^_u@LPb*iX3Gdb4mUo2=jNjmP-~)WsU-#t(xVnynJ_R+HToeN!r) z8;0O78ti1wd*8@Kd=^ammsc|!Y$tTC6WLKK0~qjXdUAwfAQMNHokmIQc0HYHl}%iclW_L5aa6MLcCf{4Vr|V_^=R!{0Mrs~o|FcI>|<<%ra`&` zi4%>wqnpj%F{%K^d&{88 zbdkmE0dZhNXtf`o$CUR+avO#^Sqn#Bc-#>b8gmc(pFrt z!VVgoAjhG#5_>!4c7Im=f+3bP|gJS7(hA(cLHYj7l zQ9c__JGuu*i0~p6-gEUvtNyI;MwC3ZvQZ4XYvt&`&2j*OvpFfuEsVS026+LGX*;dK zM__kw6cs-(W;8bDOTo-qLF_`rzr7*+(+umS6rQ50X6DsLI25= z(Nq7WmLelZ8PSR}T#acCs;n%4!zy+nh;C@5)1wQtP&hn2tC_uV#|bf;>M*vbbc(`J zF^8QNb;gs>F+sQ&Q}Dm2A05?Bpm&?t#k)YlrW5$zeXNeyhElO&VF?=KmAjqtu)ZRV z>WK9wH*97{p2nIZx=;;f%S#-SB#!OSU(d7?{% z0yfnrOyh4@Ju$ibl<0Tj(n#JWaZN&P8dXo871w!ULh*)Ei&@0$YBqQ@AGX7(z|g`N z*A#-8yhM`HVuPlp!3fQW!vM{mBDxJjQapwxref_6?3(sMp->J?pDjf;ybXM(PzUGL z6JR?1(fPKF8e_Y#j?Lg1bs9_HP1GA1n@lux(JL%d)Ex^$2) z|AvM>Od2w3B`f9K>n>w|&^$doE>zD!G@kOCMw5{Z@vM6ORduGTvS>KS^D3}1lsWp> z>iI!F_As9u;HMSFUYQ)qhV`!W#(Q{>->huprDtq-uCJ;`DHo!$JBub+p0UXYmu+T_-dbsyTFzoK_{Lv5gcBH$~%t0R7$j2{qg>o4SGke2o%6wY+@~Q#D z`TB{(flr@e*Rb^RAn)e-d)4p2=|Aqxy!kM(Pq~K9$3efG@UfUn`R&`cKdk?7xr+C; zh+KO+h{Gn)wCS};FwLX>1pkvA)jeoL54-y6Xm1Dm?9pU;sEThu7|&FqO41G(jQ7v$i*uyX zROC`}PrGPLEYl)1UV!ROCne#Y!$$^oCYe`-u_IRtJPJ&sNs1j`!gv^n+Z%yui(4Re z7|HKp4G1Xt2_n;Eu3Y4X3&XI7A3HniXJ>~*dVt}WPuS&iKAnc-_=~p*hHPyA|LpyH ze;P-!I1ZnG#pihu9jpx?1G?DpCQ`_*EMc3qZY!|ktmWVlj3icwAq?me+rQWT)U9tb z146c(-E+RtX3b1bU#q*TtE%g=vhuL3b?a`_oXYlGTPCIiTLEgDr)l&f|WEG5E=A`NWcNmQ99XW8*}9bHf@B)<(*? z2||jHt^iDl!w|_kBB$`~kc@|^5Z?Tq_l7zkBl(pX>t%t%m1lCIEJTNN4^U%pb*?JU z%0Nk?>u*{6#eO(A9iIWm@NTtKQXepG>0o@K@^-e4@_&hs@<)R_PzsQ1!!3;o>PMWi z5~SGD2BJp^*il95llrug-HA1?6L#{QPK+bqnZgn0o?6i(uOfm@b{&tV*YVh^!x@tc zkjGM-%73EM#=|SuNCs`aV0A0^+~XCxXvU~d17k6{u;0{k@bgxE(aeYlaJ7MFk25Fs>eV}B?h6-58KLT*58Vvew#w)`s*at=3K@q?B76z&XxPwrj-xCf7@ZR1Ednr0 z9{@17_)LbKV%BfjuKDsJZi4cn9?3iB>}K&sniP0o&Hd>l+uLsfV^zoQ$Dy_5FR

  • wP$p_PhM=&l`fA8@Vf8BevPsSn>7mK=jG>k?tFpH{aGVk`{-x)lQXkzx^Uae0gzN{l4X7mT18ynd!NNho_BV78TW%1q?f_Mv8pVVp-ZiKOE|Z`qgO7?v!}^1y zl`swOc|R&{g8DU%22J0MVnL>5HoWqqdDiwJ4>aA=(d=64*zN_4TdqMU`s2-1Q-;k% zcuQ2ZpwAS5f%<)dUw_VDhm1PH0oHsvOs7d6{(>~e^RhMt9BA~3#KrSz$3G~qBz zxOfzP67LK?uH|ep9?rteDPLwZY1Bwzj>M~CWAtyYF2zI!`7~5JQ z4XcqWRh2N)r}N@BSIbc@#Lpy%z1WqlA>SnXX33u?pOx?Szk(w8n+Rc#+T{U2cReBFmThwAl_2vH`t8yNC)C6& zL~4|3mI?HdmWEG^wsjeI{UB7sybdPt^Oe5 z+?6|t#Y#UtpC71#0UN~%?2@@%$#VoAGXlU_ccvi(mG4~Iur~I{5oaT$*mZ|*1|o&W zx$6cafs5_PzFSe3dk>af-!D&jeMy2$gocr!k$@ujLz;ez24W7^T&Gy)cyqxJsGv5v(B5|aUi|$lm8|2=WQ^NZ2sxJ zoac%Pz?3HcX;YRS*pi<-hK^0U7P)bYf-{<&ipe1?{YliwbljHa&6PEhYtc=t30+K# zLBC-oPd;}{*yfxyq$LaEBIhiiopAI<$b&_adHD1rky_rJ23jdxGF+KFerr~3_0_=< zWRqTgz07xevH<3_j#FQTS5I)H{G_Z@{pPEfDCl7`E|{w(TDaO?WpPTJe;6>J5e`LN zpJcgU^l1$`ZGrAF25gush1xHC&&gf=mb09NHWD z7=WhUoI4|ys3UG4@Zbj~os^NlT`vcD>2~7`Gmw(Ij$}%XGl)Wjf%RDK^}6C38$V}< zo$D-hN9cyU+QIQuy)tXG0Zy_2B@+Sp6J(SlkfW?W^>d^yy{<1(zNtM1f6y=}_KKAh zfWcfT{~V=w&K1nJF3pG=JRs4cgnW}ybfBa_o+jysG#^D#6yvjO2s(mv@?j>9A0A9j zXN)EM(8V5Ddy`~b*mml-mz7bWk)i`wXyV`4*hqHHlC%B8{oQl;Yqf&k)i-Gr86gP0 z8a0;)ihxc+?|@S@6s21~hG0bz)u>inRVO*$^+y$3xVL=Gpd$wO|xqzTEvPmp{w zl^6~4FM>j7RVtM>94*VQ$HN>QaZS!>?fr^G{JHf5jt$Z?(`327Fn>(NONMX4Fwya1 zaI_$#uOWXW237D{wS!cFSx6fZ&v7nk1oz3}>dI?zRs+(r3ZzdS0fpA*O40G7j;d2) zaPVjs8ioF`LP}i;rcnuP)BaRdqc-&qwG!Sbsx{TYxvg~$f(&AvxE5Qme=4n%A5mlF zFGTjsc5@Kui6JY_?xj$_jke{sqRgSp8>k!=_sFt%XW*6VZdi`vK(9GBuF!~pJD~L6 z8r1hL02pc4B!I;ZI?SZ7|F4kG|A8&^P1>|7d=s7XVs;nx8`)=HEHp5heF3!mY2tZ5~ivieCJ zJlX`yV)!NFD=;UubOi;#Ao+#rL5))nfn~T=M$m41xa1g1TuslpTb6G z4JngNWf?WVAf4Uj!`z)ACXsn)eAIGb23IIHFA-){W5UJ)`onqy@@2XDCC_f?V!$r1 ziXOt0-C}szRmiVKWs!r4%c5hHunfjmIpBI+ZT=ftGd5(}g9Oi8pUBhefCzE)3trd3 z9a{}1>e{?vr14zgKH|TygtBF_DDwks5SSlLbRL9|%c)h?AyED7K;ART{OY+T_z@R8 zp6_k@7(Ie%ZtGFVVa}@b5kH3=t$qd9xB3xW$`B9mn7Rq{4bXbr%j1 zj&;X?eik`T@i8@8iAjVusW1!Zg+Z2OY66}A2?ddbRGbKj8wiBYjpPghKeer(q3l*7 z+Z@p+jfD~?H(H4HnTEYbJEKkl@T-H_XaKOam9r#FuxxAkdk^CE-6yBAiA7X#uidYF zoRz)S1hVG<{nl0PrYXn}*hS3e+ex~ecuR#TtrwHbZr`HqXQxw?Gvgz?v zeNT)oP?qzY;P*lurCBVA>QHx4{x)kvd(w#4)oFn=Dv*W+Y`qXFKBy7C62l-O>JaBh zfT>tRJ1E*op_jYG^;l@2L_r6^I!r@@yRLE9OJqkJd4oNv4-CO}hbnMH)Z$sT_pV2g}0L1MY5mRUJMOb;AtB-5?F zJ=w#_`Rj(8pH)9?t7rS?c-QnEKP(@2@B->R{Hr6sm%|JFLtK@5|MGBv&=&5gfuj5E z=l#=tGU`DI4Lb?Kw;3UV!>*AJXaQA}!sL7JB{eGF^mjyG?M|sJJJVz%3_$n4qZHNGTj1-?JJsHMPOkKM=_Dj@HxxIsGXSrQUO?8t!NK+ zzp{>}oTCo#gu;ogYh#pOAK3+y(|6yXe*OI3rAocX-Tp3A++Pk0_pLqH#5%ei9L-h> zwrR)x)eb?-_XGk}A66(Yv#qjLry1guk)5A1a{H57%qHGG5_^$`=a4T=90^ST`QE@h znI6^=v{gNKk01X2IN3Sc!_(>L<8+dL_>fH=TOEf8t}ALi^kTJ|behff6+VB6ydd?%^OyptdKnbmVEw>fAl5WI`0&atP0R>ljb6Yv z2q5i9I*B|))KzZIaTHduN6Z^y0Ui^)fm@AdCR^L|>IEdgIm|{a-X$Ze7c@YrV76@( zl0DEwbG~KA02JtxWsPDWPGJiRfLpLUAn|Nu~Q|JDS!YaApsEc$@uuS0c&m*L3o7GtvoH_3H{NQmWsz=>6R$hj~&(ex5rfTys+*$pJWZEk<0?6 zo@h4xp(hNURCnqCToBxwToLfb-I&tNLvc@{?Hb%U;z0iQ)P$F`CMl|l5cOVD#SoVR zRy>B8S!a{4cVt)*iRzBJ0^W1r8|*FgjH9fRkywjDPs?}Zn2OF=+-vunHn%gBmVevBR1f62x?w57YIfm*w zS0zDFR5b`P%$>vEcK&wOf^r+A3D`uW8S?;D13V~viovSzn?I@emk>y=j^Og^30;wn zjUbc==#o5v2OI#$of*C4J_v?QIZmCN@%7yZ5;!3^)%yCj|1dQ7h~947&ZvhjqiLR&Ci+K)=~AyHRsk0&mJ-MJ)LZnR1o|*EygfaC z>)27?Mcal)I*&Zk#^<7NXY{ZXx02gHuL*-unE~tU6FC6m=>!keMPqFS9f{1yRpuXDEEY-=6E%S@eIREd8~LACg%!{ zl<{pKB6b6gRnyqjslqL73$Lbkh=`m;-23}D)aSvw@%(&ql@ z>G7$h;|Jxh`D8jvhb^sVqHIN1F~^*T+h|;rIf5Fa%3AI~f2ioNsm~#91jp;iRZE=g z=TUJp3jGR9nDoodpl9;sQT8GAUnWO&_I9~WC!ezk_J*8{fPE*&Bh6sI7s%v}^)CHD z9q!FzbfRyN9myu4BnC=U9!c08>)CiyXs7{lw3J#bg$P2&aSrp(l#la=6>pt~AA1!- zxPrG}t|hNekKaJU+x5lala=DGjcxOZo&FSE^2qWldNEoH)Nu2gc zM}-iou%nshdc{bSR|W9ySR|tiY2`F0FN=e%%WLvCCn_OGz;#bsS{18BPSbDpl&1nxLBgW{rwP)(EWVU2TQsm zPJE}WcCqU z>8_D=4=V^mB_=l6Z-}f7B@c_@bBans^7|Xg-y4_vSb&vXBXhNl(B5o?vq>K#6LA%G zX%PamDD-F2H+hZ}u|neGl7_DnPuyUx`1$zs;NN%74~~zp1-ct)9CUkX!}5wXnD?~m zwyO0 zc}Xkt5<2)zyX{FeQ5|3ezpP%Ad#^6uj=-=m1zxzUF)T+@qyqr1GYo#4CmWNnnqb~7 zYT4IcB<6SkVOPbmgewaj8t)_+3XI9%24=)FsHqu?kg z+Wk4CG-AZ*{JhZcw!Ht@F)RPl{nOTq9~eaB?)tKj*hm5^Cw7)$xvjSZW8sl&I&wbZ#G_gxjl++lh20}p9}bK)ig zDR7go$FDoPZ{NO|XWRqdloQv3H!%JhQoSd?z-ai_^CBYOWB6yAAGtr_A2Jo8-$oD< zw5*}M!QTVhh8Lmp22*LF?%1IUg^r|u?kA*AT|a4D)zC1c7C@insc?f(qOGl$-| z=?e*T!;l<}{x2Aki6>iPNEn__KO}us9g_E2p^E^WPC2;^#OJ1^l`qk&%#-N+-0K%D zUBZ!h)cTjSKb!e6wc+3<0q+Fft&`$Tj%00;6n2@l2~#{uQgblD zy^^X_JcswFV;%kcr0e~K#YHH++qo>%ExFw&(FsvPwS;dR(c37SRqm5oOu8H1NuQpv z`Uf;lqxG-Zq~O>Wp8_wA&9m1&t*Y39&}xU=$+`E^_c|%uW4OUM3r6i0lg1|5)lhQs z*|-^KbM;@2j*eDM;7zD}M3Z|eDg#!^xL+{=5@lMFQQNQp*Cr;rch|xsy}ow*`(%a} zQ&|@MoZ+Y#`Rn|bi_`s|4!~j~8V|7BqocuKki#sbL(8Ce16iXB96Ps$uAAVlskh+6 zK|-#V|KffFS263SDb8?SpT3MUX0Qn{+l@-u_sNVyM9Cv5ddh^0iZma!R-}89`BXM) z#L=T5I&uA(hoY(3CuJQiB1Ri$zvSB=psoYrbeRo{(FayJFF~e=D;DqspqPZ9aDVbt zN1e_W1Hrk2Klj{6FmX)FnmiJMbgwKudFORTXr8r#?V&$s`F>WWNU zvs_`20`xKq=DMGb>E6iaOqS3((IgJq0lo8za!}sFW;G<0!kkwOSR1pfZu)h9mCAB< zKzB)Kg-SL!(G7CSOfw<(5~N6rf|)pX(1%$%aox#8iWwP(-G9?6U3rSL0U2S%lfrFj zFn*?!Vea<3AJs;ZZ#YVwo8WIxv2U^ou?7Qc8!=PzJlUjY8yg#ym*4SAw$He^@>j`s zd}=t;5gqfUxe#bgY)4bo(Yo0t37YWIUrY4jxtwR#mxujdRSZIuIcJyTW;_kbeFx>J z`Hwk!m!y~yWqp{JEFi1Vf;o!_U`vjsu1}9`Y3z&8ZOqAw^$vM*q!#g%zBzV_ zKH_nEd;__vqe%<*Ehm|KMU1aMzOfRLD-wz6^#Y0$dXcs&Luo-qb@ zlH{{cFq%Jj=3r8c1MvTO&eyKao-4nI?TXbkB`9sJcsSn| zH%ZPZcmrCa-;4sMs)$)x6uquUuL@tuWznY%neXE*H zS`F|x5)18JJ7uAC_W1#rX9M=PZQKU6Rs_T=&l_(%cdO|Es3|PFqN^5@IDQTGE>%03 zPE7yknc9nWQ060Wd9(lLGQn(5^|pYV1SSK4y)VM}wP=x7)Iqd%rOz2E0DS-$_R1HA z7gUnDt*I5soFtF=3`o3d?h*K5l&Vso(Ub`2fu41u`G)P7i9?etU)1qYRDruQOPNb@Od900GCv&R zLjk(Q+kAQfBf6MMJW$}b7sFFn9t!*K-njwwdR_1QKw)5Q{BX$uVCrxZ7_FXB=md`Q zz^#K{dY+F*{0%^GU)28kx{uvD4+5rbCBwh|noZmZf)5OcM+jq-1hZb;sF^32H*Jdo zm@0y8y-;g}SykHMyrFXb3ms-n0RXpAjWaz)Nn|5{UuQOup>+gmX)u>a_#lpXaWIyi zG*8SjK6L-73K|ecXsSa=6ZcJpJlB-OMW~kxqmnz54_n?d#Yl7DVu$zxI#ljET{R+W zZK7<~Rtr~~g!IA@Ff5L~Evlfg`j*-%LFr|L z8E$mmHB$c}Y(PFG^K8U2<8^nA`9a2SiUHpZAt+X$MEZy3D(KVV$qI`{tJt_tprPod z!{O6TN$#~(mfeiuy?VbdnQ(6N$+PL?=wSDH+zOf&HOOiw`4hrUVk@3f%&!Gkt*hDX zwjcBsd!J7km=X;Xl)7GS-qk8gHjnx&i2K+_5@~q?wrik^7rIn`!Mg~UE-Xb3hrSSz zS1dUdU@@huo=*&1?0QQ~0WjL8TfoU=gluF$JMS?O70$KR>2Gm&C@@2N!*K%l>`Wk4 zRa8-vm@77!zPv!B6R&`|PZuhHU<$rOV_i!3W6H;>*D&T7bf0x|A&SD!o-+*ijliR_ zR?TLwUH%#?)Oe>yGyTI#>?dzMgSl%k(A6v;44O` zt24@M?|47()d6SFK}L}M;Gl-FdK_Z4;sacohH!yFiz6!85+I?N zSPMVOnt+5rP1qk3!To41Jc?C%S#WTYD|I!@`}Wdnb|x( zO60O|zp`Hh5H$DK!O_|N={X0clqMg+YsezxBT`{Yuz-&a2sZrz&5{pD0}t8C4$$FO z@LdRZ+T>@jn=Gg38!)0Aym_;~cL06&Akc2|cC59r&vWMkfc9YVUQ>&1NRBfm&rR~C zB_|$NdT;;r{^{xd-a^$kPJ(G~rNQ#TAovxVi%Ge~8@Iy&s1#?2)1*laP;a99-+EaD z=ppAt2)}=1q}NI%(*xYE9j+Agpr#&lf_7>Wd~A2_j@(e2PP5orcSpZIKHWd~>FDB@ z{lB@oxEtM!QEDq>+4&LZW69G`1m;Gliy+6g7?>olD;k>wUc}0|=Y?7eELg_Dk>kL2 z4|h)Yk>7Q~C0=(|pD!|kB*DUlHW_f>oC8|OJ6-~jJhE<%F?#K4n?!oTqlxaz1{v zM%<8ir*I&`qDi`THbT;dhXm~{+9>TceuFP~&Ntsf2{%)&G05evn~!FZ=g6jjwv!sB zC87>I=^3Ven2nxowxmw_E|)BO@-5>u%;!^K0_(EJo1+B9&C!TwOp~EWghR z$4&_}24)|Jf={~UE4M_74QfO#X%5e0tdv1llU*VTGWX zwpV8(48Rv!^&hJb%l}xd9CdYWTn%d1j?wqDLcpwAz$ck+ICAyNG)k5_X!5;ie!tSz zQUJPO7e{Tlv!~5`edqTw{ta7~cWrc*Aq(W5aKBtdda;9So!hQ(-exb_tt&R-ZQfp8 zwPT12*n^1|JMwoPhFm{@IVW$B2`I9QW82>3Fw6zw_`MH2&Y z<#rJvDTeFv6}Ye#GK*_%e72GpVn?6p^@vD{nWzyPv4$9$W-2CgdhB|6GReNcXEfH< zl1m(>VVROjMZBAsk}AYeKKdNXULo(#hDDUGoP<6OFrWBR&}I!6w?YFnqN;(GrOR)7 zQOK!b6x$)-5A(TJ?Bz3Vtxt8u@cb+x9%JMmCh0vmKiD}u{F@O{Kw{CyB3__yin5kM z>bSWZa~|)sflx_eXFZE(t`f{SN=$TB`#luaHlvr?#|@FVF0+s67r@70nc=zs|4~i9 z#)4lYmr;x)btdft+OrdOhIb21W062s7f_-DCCBXr!a-yyGqQplz7`vvDsn+voFsLZ zl2+`s=GHMzjcTva?uoakc>ty`)GYq`Lvp(QZ1dUHv-Pd+pSynwC|*ETf#UfG+ZA`i zNI|9;juaYz9>H#_ATE@;yyBKY&kzk*g-B7KY6JB-W^uhEUV+%%inzi0lqrbU7?R{e zRGq*#b|QX8CVjUg=*Z|@7uPtd$=yuiiYcm7L7Azh&dYqpR_x)5_buRaprIzJ>;Ttf z`w>;8OntCz9DJi+A~jOnN9~{Jlzh)3+)A{^LvSWUMuKt>`a_O5N~D z8O%9=__zki)Mkh)gq2XUTU}mtftr`80>3gJj-1dm1UL_%UbuFw_ z9-c8kiFoovp|M_}%Ml@^(0&A>gkSV6upjijTHxVn8<5jGo7CjDLtO>cF34xz?Hb5G zK{YVq!EI{Sa@#it`QE#AjR|!0grlG#p4j~ZPCQ}lt%bGS>G?Ff9>c#dq7mqd+?tXu z+Bb%d;k9j{D~Ziyokw#5IGk>757SG5JTo=_mA{Q@ry&$U_1Wiqj1fPKcP9P^^&P0{ z@i~POLS>Q3`WkVUSeb;`qpu3L=YUMtH76ymG_qUA1JLxCUZA$(sgMVNQp4bGN4Kvp zhf3r)HNhefHEu3&g>J~EIM?nkr)hpBv)ClQj0un_uK$Kw0hu$c+QE|uRjtMzb4uQw zZt+bX8LRBakdSPG@L#yX#W>ik;sQz#GN#*Tw6H-?-PlyJvXliUzL?>mA!#qYV9K$; z=4B*GOA2>GVpaDLC^L9F9$(pz1(|vE)c|rr4p~G~m|9T+1H?`!fWTmkJntZ;J{7XJ z((GVGRp474sZX*Ek3tiFvmRuna!isW8kf62S}@>tCpmczeAU6x>*MOM*kW-AR8Bk< z5$mCRZ9D(|)mZ z#`60=^qeAg;+JTql{_<6eAJaxVo1I4i zA$AV}H@HftX=ON*B;#ZDOSem-rn$^qG)d5zXL`21ir4JHaQJ2|3h z=IYay+5er|^~Rrw64uYK_JHPUSF?ob$vNJ?K>Pqh=Y!j006aj$zo~)Nxyn8Z#tBY_ zbqAcb_*@hO_g)DE9tTsoyTlfMd$xbJzyHhW{@L5Z^N^s_$E(*7pN4(T)I^4bll4vH zq~=ReUbS4DCl-}!n$Nf#b=s3+{Z zvmq0IUQC_HP;0mIVzL2ZhF(WDaIK4zhoH=6w4ky;BxDLy#5+QU?;AO>^OYs5*up9| zA%<-cuw$L~j!AW9*2MQ3jnQG9SJGGd1S;-q%7HaczXQyXzzstFA}W+ z(w#(IqPDzShtJXjKVd7xJFda%*rueFjT8(JLwq);mBZr0emQNgp#{^i6Wo$-B|j~0 zs8HMx|8PTYr%-3YVVQ==fnk0tvll#~iWtnTz`;L8tSi#jEi`97;oavo{c^d|rs6Ht zOIkdmUO<+TV{G)gY=tk(YMvGT&5wOUdR#9 z{l2+V@pAbV{M4e(Q=5XSv8N;W7_NnKP3)m&jrhVl935S?n8<40I;MsXypJp(A!4Ix zQID@sHrqG|#&^Ez&6Ru5LxaTUeFI4)s-9ttsSyHW2XQ%gZOPPoPX7ibw}qSn9XAq0R+>_E?F<8$C-ryCOUfTMFXI-1&Z!NJrWcOi zM)HQ>ZEzFJ$+mUo7+N?I%e3I*x7>jzZ5wbaayZza@V4$S!9LuqxZuG*ny_o`=Jt$3 zF+w*8<7(&y75Cf0hfy&h>E$#V4;>%Tfqm}&JSs-fRANr4WmBLb5`K^a4ZX13VjleV zF`H!KNk{>hZ0AHJJs|iXk{1D0=}1bs68vHmunKrfxQVcP5{<1mU%j4R5Y)h49Tn4k zu*T?oT<23sT_P*mkZw%4x6^DIB@xWH86i=S8NBUK2@FH(i)nyEQ~YBD)6 z{HP=$Gzms37m(*BF?uHCX*>@M4W@m}Q07=@YS_h@IoUtkB|JT{zHQ>k!A-ldKr6rE@jGMw4RMFaAlMhW zOlCkz_TZOA2VhnB_55I*?o)4Gy2e03KFvl|;-ZTNS&T-%&z!J^cFHOP;XUkWi{w zf5kfQ-p8#(AFth-B$a8Nl`I=Xr=Yn%U}rZnU4sxD9K(~(rX@J$bd@FUE;G#FZwKc; zAHO|!9QJPqdvZZWS#K)Qv3_g_ktjYQpbMbvBR1(yZE$X#U$OCx#0U@CEf?5V>lq}* zq+cHNRE3jbZ-GR1ypX3&`34@0s{eAjmFJN#49PQ7^O;kmR+=sz{NNGS>kIiZgQKSiqU5 zPaSvUAn$f=1Q(eqV(bCcfv4EDRu&x$&j?9mk#skbJxXmdpeffzuG9wwLnBgOjUWty zS#QqL7l)EFTLuX$W@8g7MO!XFNTU^S=e9>N*VvGWhnoW;W4vZ@y)}(-U1Ds7hMJS1 z5?3NfQCUe+NdwdBG9up@P#PJG@-e5|6%nM=I^;~^XeGF5L81i6OX*g9B6@Vi`!OFz zh>sD{GsyM4;dLv#88;2S)UpBoka3$e6cVgUX@fVNpX>)%WWl1`7cT*g@(sXWHsQ>J z3RXoOki|C!JST~4Atg%g9VUci!u$4Y{}kOh_K(gFc72+l#70ZIYi|O69c=g?W7vNR31TLzC40#kyC|N@!m5GNgYNK-`hjd3G z5_Q7~2t#*gl?Dcw=Zn}9NT7MA$w17EFvRUmMp{8lp+V+0><>e^!<3r|0*$GV#L!EX z=88%UGRMpaI&nq0Sf`2oE#vGapfCD@ezi01FhsB5N(G!VId0MJ6rF$|W4XV;sU3yS zAhcUZ@mHnl%k!4*=syVW*{XDb9%*Fx3pm}c5r4AeHP*o9)q-pyxTXL}JqW{)nhBnq zA3ZxpG#C(uL2b}aL*E-=L7<=h8j}brMHve_OrQ*2f3?g==u|u`BaK$2{}IZGtZ+Ql z+wm7YJW_;=WI=QPSaNwyCn)zV{wmTqIFiv5L{El41Nh`lG6Eo1Dwptk_%8>vxc3lK z^+(;&cymICuCNMnm#2s>=o-FwSYAAgZaN<%6`q@Ace2FG;K?8hj=SNDN&c0T+6GKv zWT;JJrkomxq$<>r-&hs#q0w)Yg8pma?&biWQj1 zjwbh~%P!*m`X4#J0?j8C^JWm5V3Xyh79QgoE@&nDM8%Qz&lDKb!cNoxC)C)CsF^bZ zzJXb;(L4YukNkQzq^u5{)kCie?z;w-q70`;Lez>ofX_Lw^4O-8skD)~vxmh5CoMdB zdzX$=-BU>%;gGGkGxx`5lY8e=$gOw7Xh{33rla$MF2;G$qzJ{C7_*+zHX zF@)8J$o>$tElx8ee}P1?!@Qqsrez;=0vrju?+DJQ&r1s{Vq>nUzm`FjErmSj6K2B$(_|B^%o=be+2z5Um2e?-rTy$-s|3Y=c8n#Y#(ekH--6iUiA z%}6R_KWit;UY!c~Lj=uqw0pr0*PX;$Muos?Ke-Hjq^Bjhlzg3ouI-+h6W?r-)mc^q zwd5H`Auz;;F~tGR%fKXBh<}M7GTECY$OCufj=}|*>tFVs>l|6TUxF!?6YR#%{$tpn zVG83qYBnP)wynftIs=ttAf6H~64{SxFk8j$rxNC{NC&2p3bh)Qa1c|tH_WD`jN)kW^d8d&f@1-Wd!~Ql%^W+Q{`B_K0G7*cOT=D~!5LWk+t6`Xt=5 z`3~!ezTg<}S};}{y&`f<;nhb>D+LSYZ%_;=Xm;HkiTem5|BR>kb^aB?GE8#yS;=Yv zz6MQiqrR~=^fJ@wGFdc1dd3Y%%^)5`a+&r&-=q*20)eOQPQA?C9=}W0fdv!vact0W zUlTCs#&;}V2B2o{$t_xY@0x->FNEc)9Z6tXss%#^8w1er#AJgr%W5R1i6*n>ZavSy zwnYW(AX)+-A)XsT5D#UD5XVD{Szw7Opofe}iyK{|WAY3phZkl6g+o8K1g?1-XU6uY zi20>Ok6122iqhQU%7aB!n%OaN?5x%h7EBp8E?Hrv= zWBm>_U+LCYSx*SUIWGa(eff}$Xe0HF#W9__izop0P-mEeFb&(F+tfr!yxv^qZ$z9F z9oc#oOIZbCU_M(Q8bJXv>~;tR1lyaUuRohJ^69-@GIzG=c`H6lHNl6sZL7`F*HnIe zeOv4)k(#Rhn5xpPezB<2^uTwydFrXWe`xFE6nyD-M@U!lUN0I;5*yU&hafm_b^W(n z-^2^;WmoBJICWyeKIBpHF-Ww)k@=0bhTBc~wFpbU<%8)*Uvb56EH{dZgCZ~2(+KYb zC^}_}u7HA4hL3B6BVaGPGD)!&jP{iLAZg%dWAx(WBZ%<1d}DanlMdvSUIi}5)7Gv1Vkfy{YFSgzz3gy*@Q=0@l^Xjwnm=yRJMpma zEV)6^VRbIdcRA~S^lHN7;7XbTmy1C$dhGZsvZ>%w(8wVadn7)=h}@Ts$3sj-Qs_j= zdSUiNgZ=>=FnX>|C?DsbVE^Dd$0?Q{B^M2)9$}q`){Dk_epAQ-xuvoz=M5p0W(5Au z-3fGk0L{yn)LnB^X{LpFJ3h`}Itb}sR=6aWT{qe`u&^VZ$U8Eu4Du@!&8B|R#HqB> zRq~0MkoHF_if+e!PWUv;QlH1dhBU*_tm;AD@6RydqHmEt&&H^*c*)iz%A?|EWZ-U? ze8gc~u-tN@@{#6ciI#x8Gt}o)68L?4ZbAiX6Z#j2mJV*)p4$i$7P46XAa);TX}(gc zK5Dhii5e4={+lnE2fbLBZ>xPz8i%2OhRg5sk3n7cAOOM(gn;gL{qrqzO=xG7%zu9G zJ7gY)EH?an?Ix1$k#B*|<^uYvtUkwAGHkX#w^=_jk{7emw7^@QD|_uKn2m49W=H3xDMTb_ z>gVDHMOwx^-aS5geR!~|0LS4eM;|skS4cY>JC(A5UV3jxl`V#}M@VDXSY2199JwJv z@Ch3adSzL-cWd`&(D|ryK|yn-jIOf!4gcG+*53+Fp2q5!NJ}vG zPX*Q)H&o$amRX%NT6fY~F}X8Nky5|(T6WP&SFGhi^|u3lbpae=s5VtnZsHyT9K^6V zlK21%vF<0*H5)cI3YawahcMabR_*4NLN5tt3(wgVY2$ToHzO%7BLG5ef}H%jnj{Y} z?-s?(msTnZ{FuWbGMtPqkJ}07n$Oqnm4hoi|8!>2DOPA40jc>|o0i+Y0r|6urir`~ zA<3_S-;;o23L;#@h_wmgj3^Am%}5@Gv}*JL*fIi{qPzprS(Ko9^y{!D0e5G zK(aKI00C+Vg_@c$f!KkFcT40$WIy85bEd%>nh*0QRqD}cZ48`DlCvBWI2t!@*93?b zp9rfCL0(a^1sd7}c!k6wE6Ek+JRC&EI5j+MYbokGKcSEzXCL3V@`V$b-fxaKy0S_Td2tZd=QH ze`8vaDk_eTo0N1PZgj#71KwIn2>mEZxIKf(VE{XhO&|@l1dJS3YQZ^8zNC}fd;5F$ zd-DB_l%S|Kb%aCB`{kiKW2nE}_?oP%4;kW;SBt2UQ=Qvf*>|J$?)zTv@%Cf4BA_1P zG8nH!T4YZe2p@xG(1vm9%|HXJcMGDr4@<87aAVDCsx6Cwp_6|}R#%fBl2ty3j#C+R z{Ag=bp-(ZFMyw+dsT(7o8}u5Ut<-_I#u~=5y6UdU%78cJ+L0ZDCMcoPAVUTOnRc{L zrkX81CkvLjl!O{6K=i&Ty=kV?RS?e*j_qg-$ukgQrc{p(Yw71PPS5fNfT$8kT z$WHjj#;oAQ8Fyq%vTT?b{3|?r26PyUm_zm&jAY@xu_?BUD1sjO7fQDs90ev=w}E>r^F&CKR3~4l@?(EV)Ty3K$U`62_62K@P-M%m(uepfbu0s8Iu_aE;~m%hkyI`{TSI=zqL2yDhxpt!^C=vZ+_r0i& z*xbWhA2jAah_IYNls7tHP?8&PT|r=mzLUNtjsqOdY%AnI()Ve9OjL??W2>PX+y_Q1 z!)`Qx*-h(ZKBD#E>h$p~n;I_a!p;a(gg{}Z9|7HFO1gn`cmwEImvkxjC1igE7tH_Y z0FK`O*z+r zthhpUAnJV373q~DU$CBKTP(m}l~;nscr;lH&=^1sjNb)u@uFY|N1a)NKkvN(pdfgRkq9lB=*~ z22HeXnBm+wVh+WAeD=&ybFT30nK~bdKJD4FUQc}{pmM8g-30gL^x`2+nYzGuQa<8; zhF_oIuP@-&=lJWN;MecqR~py%$bw|4JL4uPA5oSTdCRq--gh!Y_D*>OpX}gn>CjrQ zg?MDRs^seR|6}jp+uAs?y#e%pK1G{3<49P-2s@d?HqIl1aM;1XfShFBY`;8>)Zn&- zTBDW>c#`wkPpw{Q6M`oV#`cgN}2nPRXpk{UnN4 zE~~O#S(UF@0s6a+Dc!29U9%o(70qF$e{X1Njol9n^U}<-W?X;dWuA9TTfnA2keykb?TLH0x$zRU|c|gfnnzOEigF)G0 z5EE8EX3NPg^5|Q%es0psP09aSTR3$wL6*fJN3x7ZighiL-*3HEMXp?0T^edxvxQT* zZ*G9qL&0!Z)x_m0c*=*W3bJ~TR<#mNR@KEsN>YOr6^&D@E(<`DbhMudj(the@`|;l zCa4UJ|MBeatA>70-$*;ax`(+sQ*|fM5nD;=TCK)U0_4Wc# zZ{Jl3$MEc|pEbSpl6G4Gy5uV*flcnhFc9yZph*~WR8{0sE*ACK{uvZ16 zn%MKq3D!T8iOHf1;>X}b*GG!#&)0pky@aBUix2fuAv zZ#1OcX0jp6(R9Guux5Zs-Q4uyJg2e@qyi8qPtzrM8X_82a%^r4_^Xi&h`wQEvn6{_ zM)1_ci$FH4Og?AR!khhkGGy#m%y5-mjwItbRODq)Yk+CHW2mBT9jGDDw}9}8VxJ`7 z=JG_QM8=28*tWGO;HH7pEvuwlTJmtgz=U76D*d!OYLhTM^ z2oCTOeV^#ixiOsaCT5kp%j<5d%6i$(9lRd*u0U!j$(61Q8z4WRU55w5-*39H<;XBW zc%213)27UJra>8tyh)95^3eRJ-D&ESu{2?@BmxjuGxH=@9_4~YNV^zkkNM!uMP%Ch%CV|TQ z!{jQFvNhHPS!TN!j9}?`EYSfJt+NHoW5vwp1BHCq?r@?@75`aXO{92wF-Z;#u8AjT z;WU@8C{wkiiyF)I9j>a_UcB~mS!&gvUA*4yM0|znSQ#Q&qFCaW?82q?M1>c{mB}+x z66`dB_X6xF`k`zl{EKizr2a+|%8{)IYH?zhg!BPoZg!i3(yS$R8bdKRJjENQ~+UqLWG%F%0l9XGsrQ{VC`UcG;plD?iVg2p)wQSB*8U!hUZ^X>8WplY=Km#Fk z!IzW-;aS)f%v5pSX~LeeiiyV;3%j)YS~{kY`h)5fl_5BO+Kd6h>`v!d>=Ik$Xnaqj z++9FMOA89^&Iofg*o<^iM(rOWR#O}q{AyEJ^PFvn9d`dRgmIJz*G_=$Xhu|l ze558`?9gyQ#p|pc7R&@3NMI+@k)%Mn^zf&Vd!0YoZn{<;@gVpUY)W2rr8pK5!3Dcm* zF~jmYemTME0K*(GZ)mh5O-6Rp1W8T~yeTm9f=wrUz(Mz* z9C(;Iq5K2$1fMG?xJJIU4zB4&1S@(^-L3(gMgDS!j+Xhg-4YCZup0bpy@2;B=xa}iq^N*lIi90!XVm6h92S&3*OcHA%MH#vlgL2!fK%sExE zh)lB7r#1OWEFH49;PF~;U`!J+@g@Z54%mfI#IeNPlW`IjZ&(vis>nv~NswT{iOp66 zl8+OS)YB1_kE}8aT>OM&+qaA=phE|@b1f3TjfP77H;NE3QqZ|g;0#XDO`L0?ijEXP z5Z8$>pX%4J8o+&^K1n^|WGS=$9LVC)Yb=?&p(g=D7wsO*$%_pI-=Lv-b0_u<6LgX} zKnYayx6_8cCvWy*LKGHXUY$7t*oMm-jGKq~M}jglOvbvD*~C`Xd1-CmHi=#7gQ#JP zHcpE+*DvRFPVAi9hE4OJu~cQ4e8ZxE?lE`9$DpH|_xa#G?Go~^g`jJ5&tU8JmJ5zg z6E>Gh$ybyd$RC8R77oE*K-D91Tc&v|DQA^E`K2)%VC9k#GA!#2%lvyS!yaQM+YPpDn`8J&=YjI}#-9RmXl`J5!b#5yO?}BgcKw0uN*G5llvnb( ze=KkSSOK)UYuhn9kH?4+O|H=8c|T zlaHApD*v1pGhuD-D7G=9&xnmihd@eI;sFoJfm@xy<-x}J+k5Lv9j7GekBBj&XF({F zeE{%4OIWG@3V4}U=qlJD^(EMcg*LCOUDbd;_wb{Hq2;VB+^HmG!GtWD5tT+1T>XgR z#3+bum#oNmPImFG0^9LwW%$NAB^Zxu6)l+6BUxUm<0+UbDHS|vm3FJ+koSOZ6SYL0 zD@MINYmv4K78j7-t%5>z+3vivx)8f@;La<5v|oPKt7yxF5GnQxE@=-Eq`BB}-#@Rk zqpj!)A(ScMsuH%Agnba|)P% zpodwBE_xQ?ZnX`M>3_d`pBJi!{mnDniLcqL+rfyoH@H=`u|N98E-lm@7{oV{KBE5J{LV6`^Bmj2QK&)!cUfI)SGoKjMh3Y5Q3bA zhLub#=VjAtWvM$|M!3LCoep z-z*uMa8<5z3La|9(#}ip_#Tje!Mb3a6U$^NoLv?eCwP#3SqW!^A7d8Cpb_Nk4ej{n zJOhI>wQ|OP^FpFj(>v_#sz@X!AWCI(2EY}n6d}(puD=pWO(^+l(XznJMW= zW^BZ-O0ifNP%gW4e1uiro*f*$7Ay)8kgTplbDSjm@yO-e;9k1K6xj_PPgpJFyYJ0t z<6Cd4*JMl;4i`S+bh;S%8!*>iQgu-ukFrabEj2uca&gKm%xb84Yi{kRa@d_xIczw} zd$;0k*`u!VH|i9V(oC0*aX7&#h~@3~u&WS$A+2`L;J{?Jgd-*S=lNOQum{+Q4_$Xo zF+2#A-xv}`DMy?;mr%@qcxEg0^ttq_t{|8!bjHRk zO&E?3*9N#OdIOgF(x%CO93R-}prVX1(^=reR2s~qVB_B>>&HhJIE~X;Z{nBQeU>D& zbI@p57anGIrVU)m^>R<6K^BVLTHKBTYW`PY~S6 z?%~hff1Jswed!Ku{e`bNtGYitALBv>F9{GeuNtP;vtz`BiI_g`f&TEbmx!>NtgD?` zm#w-5^hR9TwYXwV~H)_9$IcA=zM{X9+k~4O*umglRw>pI`nr~7=3xIE(7G+6QUO82+o1bZC zy;@c*1zlF}@|211!%QAScH^Cpg^V~w_#Hye3{wE>nSaVgcfw7Q4CD3+Te0k|9S^d7 z-C%8#k`@+uURxBiHJjypwIY?l-T4nQJBWR0IMPBwwua8K61TeV;OGYLx_$cOX0u^a zTQ#?|Ju{(o$=_|l%FZ}51AYW~SmZ;`1k52ossgLp?A5_o1mK*^zLe>J9F7;R0@moe z;vubtNkeDE3OQy6I#w}h&K<#zI~_hHn} z!j%UO2{dGgIg!uk&k~~= z5M#oDY_}*XW0awFYHA)B*{d*}1i?wP5VU?NY51lQWRz_2)^drLnVRvmRCz%7#2l=Nt# zu~m2|=`q&HxOmU(Uh>)dasu7+3ot}A= ze7GE7&jGxPV!p&94qrLb)hqVr^A0Q&B$&}14VWrN{-k$gPF#2I=Tq}%@>@*_#=EQg z+CIg#B`A>d_-Oa=_^iGZ#?9`%Vkk6p@DsKSrU+}?fK{6ObXnpNf;0Kh%p3o}St>yi zTr_Q5{R*+_^RXxt>13%CzxLRz+mWwBJ}S})8#Wv9KmClr<+{BnvWGY$*)^+)=;#~d z9|AZhva8xvQc6hXcsFUD@X_&`-W!V{fvb0xVUQ_0MBqwaV1mXWVNl++|+nc|4!P1fijYYT_ zBQ0T_yK3X;Tn_CMM!t*ww5sG{(jH|-5KDgAdqtpT;+$72^DyH=NEHlQ?>r@;;(uI~Yl zO9`I@DrZ&HUq7f`>s z>WoH4E`-<$tdCt5fpR02pm~du#&Axw-$NA-4E5kvKYMQ$>FPbvbhM*-FU@>BEHLjw zasv^_rFD^m3eQLK-lX00@ws^-S+*_QW6QcsVd_NDlQ4S8Yk|oSD4X}K;Log zuhU@``VgbnGa`L{B9J==`6<&#X%5!!wX(bk1In27U3RBqC?1j5N^kO?^?ohQ1s|pM zICY=ct8er2&3rV=Da!n}9dF!%uUc&@TeTxKV0cO$1&Q``2)3IPzbHLzcQ=XPF z#P&@&Ur@=BDtH5k87l2nK&Mf``5yA6hmb&Xf%v9Y4KaFFUY z9@$si>_k-jzLf)C*C6-0A!p#5otFbpr86bMyGVfnWtoc~0c zWoCjeu#IdA_@LA+H6m09P<-c;nWPtR!~i|OT{?IK_3%@>I`s7t;C^S>z~X-^{}@HZ z}LCNg;MCPE8>NSn;Q+t@0+5_rVK6as63`+^7BArd3AGx{X!c-lKT?Cv7u zIVOk!TTC&U6JF-%%E)uG_t((O6;M^i*t|q=B(adCAIZi2Q#zhub_(|Dip&QGg+VI? zrvd^LQZ#azjrpWD4NoJcHX`t50FhyzB1SI7X8_g{XEkS=8LR=b64~V?8I{&FW}ihm z6%7$`O$AqU0JzhFRy#{SN;J`Bh8Ke#8OXqZpL6=&l+V%P%PyV%*;n13 zNq5ajZEw-he@I6xe-0!ck`XjPO^C=?FW zg#TU}YEd$eVUZ`r7eG!TGF{{0W1uw*ALQ|CCGr|@Q4PDXY$;(r4y!xvxK-z}1#h*P z(=MWqC0vpKl^`)5P7sfyEzQ&R@M;9C4()GPk~sXyQ|FTeV4qsW#w~uEOrAnD9no>} z^!%*f?H}x7>X@gbXFup2^{LL>)cM-9bzNSmI$xigkKUM%WDwd2uu$nPvT1`C;^Efq z<)x7;D+j=drW#_LPMfc@x2Icm6Eir8W)!xtMQ#VK`V<%rj zlTxC&;07@3yevsiVrcegr7KNvq<`cju6DK*Hn7|OzD3X=GCIw#uIQci(jx}wL8d#A zGBFdgkp#Qub-9MEFlPxq3b71_3dzvzs8l={=d;E`sx2Ds?JY8U(WjdcDOab-^?_ww zo?MsV+fQ&DWCHx~&O=Ycgxc<$$S~QJ%?@-O|F<2ufqR9!qme7GfC(4XQ5|fqi=}Fn z_CE`rG9nWifX9B$82$*Qgl2iN0H+9#tI&1!E-+5l{KE#L=h_U4 ze_)6w{3EFyY_z>|6O%08G%#4EeF)@hJS3Bom=0$bBlr%6XBJQw2O`k;*mVA{Bxf{m zxi*@vAe=B$&>7wpy|XtEDI6WMMOV)f(He z8sEQ=1MqV5`xkgJz!>=wYdl$A1J}mYc)DiM_^y+VsD1S9XM$5Pm6q&>FwMaAezs{_ z+2)Ui(RNgI{WzjQm2g{xVu_y~S&y#E)szwanLR0y^#GlyU}=p&_0`dml(B!*9d<1E|& zRrYPp&uc1&Wap2NtUu0B{C84&+0WyP52#64uwcP@2fN7B8^OEM0EI`=R+2G_G>rl% zHDa$k-zjem!*$?xkb-Mbqwi-`Bd7Mr%~ko%C-C)9noA?q`eX@W0#OFUY6c zp(LB<-v@*EyfA7qtp7R0l30}2gr9k};trSLGv)fwnvUT7#a{g_U%94Ns(LopmgNXi zW2kFTr*rg_-z!TK_mL(1!LQ)G$-v3v2gty`0eM<)#zb9?yhjD$W#L?Z6G5>{CzEM0 znF7%caE1>gt)keKtBr6Z8-qQAZ$9!H{D#nS(r76?Bbw5|8ARaxoC831X}%Z_G7B^( zFo1%P=#XbI0${5BKW1dCzb=NdMlx2{yS0vcwb@~ew}5NC9h>1anl|`PMna9D=Ow!h z020I{>Tb=~b5u9xQ9l$J&xYUA@ntl3SeP&{%mDA9QN_5Svmd&ry}k2Ya9gye8#q)u zx~KnGM<3Sjlda_00!1{>>JZ^s<#~=jueRT_Vmdnp9~0`Fr=UNTDw0FEdTrc#M31%G z*kEfTr`sJcA41Bi9{nCpW7o#;X0hA5+wVDl9v>fw=oMrt1-+1=W2S5+77D!hCv5#l zv6-I_`af9sod|jQ8Mt+!P4Gu|IQ$aO6l!Mz|9Ai%U@sS3VKtUOFw&w|%df53bP(x_ zaeL;VOeA?SCXcxqX)wfN22Pa}ya+Xd_yzLXsdg-k$=?yLL=WKa4#5Od&`WyR7|h`U z7hql>hIm$iVFF>yW(V<}f$en=pJ-QN?^X27@%HtA)0mqVu|-kVPU_$%ISc@zY5$?f zGG+8&j?h-5BbuU zS6-=bLgQC==xb+@wxIyRgbQS}47T$Q5?`t5%ImlYkeu!dcG3*YYhk@ObR`eSN)VQe z!%W2vBS7Wa4itvN>{QBH>CuBZSHLDAcnROYWhiWax9BB{Gnd;Xz$r#n2f;e=u?EIKY=8=T02}SJcA)>M# zl3x^d56kH@RVRqkLeOpr>k4G~0RtH~f_J)!TA{}q-cQn_Ff7!0ZVr--`~5twv`3f^ z7@Y^=3;NNm-t1#OWZPR?Ung(UyJY)Gq6DIJK6?*=8+mCSlKi^FjBtchA`rp^`-7S) z^7R!2uQiOf7-d)Hfd#PQfg!)n4;IWOz#}M_66pS}m_v4#tD>MBbRfZHpE&1=Dq|KL z%^oO@g24k`Z1aU7@}o;KrPG%LBwdE}%l8m?0Ql?R_DkT>?BnX3*`Xk`!6M?H^s}Y{ zT4>uOBaW!ZOUp~JHD`uCUq;XcX2r;r@7eAI?U=JPFVQCx520#=6o_n)unK7MPInOi zDC0s0U%9fBq2nuipvYg;)Q2GONSkXLHsLy=_Q5imUoagC5J!HsN7?ww5RdT@!NWiH z?2FJBF!yBA@(B?-Z;l6bshez|IlNf6t`T^x!p}P2IOoQ&xUZh<-SUE~7uK*Ld-F-< z6(WVBt>7yigI*}2*ZpnY7Ygjf3ED>LUq7$J?@=M)ZGXS>O?;9te>F`p*h-^bujiED zU}Mt1Rv>X0Kxm#QP?dVc@ryHvG?_M_3I*6oGFlp*8QHfkJRf~uMb%qfZ)~s+c0+2; zwbA+J$W;BQr`BIBzq~hFM!lh+V9q zSpfaZtaUE16{xI`_>}5}ke3I~+mvv$^Vyt3zN#+}8AT!1B*P#BdpB-4Wy=~uyx0|nKhxqwD7GH7WxL}DP)gZ| zZc4f+W?+G@>P(?BPe3$GM`iIWt{yZ*J95XG5xK`w3l}CK#cOq1bs8;0Ht^B*f5hk< zoExiCia2p$Yd#%Qz`YSC0zMnwISM@qLRM)(bAquO&{Jg;izuwt2s(BmW?Y8571~!% z_K4B(v$Wglz_Lw<^hr~o;wx(IJjI~FIi=-=<1Y)2ROc#(C^o={hNi%G7rpPIM8`Sw z<}*CFh^PsgJz8+c5Jk-pi40g)e{Q0n_>y&)5EKqCgZbTi5K$Iw>V>u`H!LSSVOT<1 zM{C85XlW`MGIKvMBC)#Q6&0C!2PVsb>x*%mbaPZV5mT0YkS02HCw<2v&L%jOKu|IX zJdqZW5kX%{j{4U)N~0phJUx`Wjzuru#u$;B);2i17lsQ`V7VdoG6)Bea!#0H=eCVT zGs$KHmE}vooLhe2t;FIklf=|Z1~Y>JiT%1TcvbUFfNlqW!1BS7zy%r!;H<{DmW9GoU#H0Q}Bw2IH`E1`|OhwHWXYm&nCEUiYtRC8oqgl zoORRr2@#kqh#0a#!;8&SCggMpo05P4OXCwRIm6&^)5@Vn=7>!WHWM?!yxQQ{jRqX1ew$0oikJwSGmEQo|KD{L9>LToDTR;P6RG1)xc4p5~^1#9Uj zDa@4;Q{-h0U(lc8B>9p?;KRt?Q?cgo`+v^0R1{5?Vp{oJcc16dcP-_9k4q$E*iCS(mr0 zHZ^aYNs$08-=-I5m@wdlj+D=S?N-hiil`88Q)P05eF=QS$io>T`-U7A1?AnHW>T{y z_tQMmJQi&l@{MO_v#Fu7PqrE!gW&gDvEn@0uy!0Ia>*lZ_EFLaWkyF{-26oP(?TIY z>k2Jw!0K-_AJP|3-c<^MB5y|vy?%+#s!esOO@Tb^7usI6we47IuWV~tQns_T+}7AL z^7(~+#V_A^YqpmKC*uI|N5Zoa_BLT>g*AIJDX%tJ_nMNikGw&dwpBZ6wgiMkVYxH0 zMAJU*yt?cc89}a?1{)XIfKbyh11dcIh~MuTV&T+L&*r9lDS7}G4v>>^aXsF`Ii^E^EGe%RfJI#lpAwk+t0eU9ijx#T;dm!kACL!pXvr!MXQ2xe5U zn1AY4nKyaEE_5Kyg#>s=9j`H*pQjrC%KY|~dXR-Wel@)KO7V&IHC9h?<=s`UZS1LC zL*yj;+Ae->yJiaTj)S|OsBYroHa$f*Q%H3&H4iKdhh8Md&~Dba@-*2|C46XE3PW4M zr9#?)Sqds)Sy2!KI#u;ZtP%bcV?dDt;=bAh#pJD`OwbZu@E$sKLG;=4p0m0qssi~d zccbzcTLVRlo2b;l?LcYDkR7?~$=-Y_YQ!>2r-ql2`-Vz#dyt)=#B$eUS`4zGp}%W{ z<;GGf5Jaf>zPL$lGS(H?R(v}?Jx2+qm-{0eOYq%5?RQ?pt# zAZu7u5g{C?X`V$e?OT147(C8_uPPQPGeBb$Z3i3-`^m63_0786nrYW8WU`H|nYQ3vWDqaLXuMaG)Y_A0 z?l{XmS$#mz!qdgGYdav(fg$%Z+e>z9-j)$QEnml`^o4DG^DH^Zrhq?1-#$y+1XJaI zqg#;r!9m^GX|%VS^mcm(5vfIr*b$HnKDj-cWfRc!-tL567>EjWO%VCqDv8E1D+3LK*$*NK~~dXF9JBx$re&7B=s z9;L+h#Z|8FtGh&Ww6hVnOe8d>6GLbyaU*bRoE_3dXsKPc9{P}d3b#S>M43Nfe=v9o z{iGv{FWvq;Er4&0kR+mXpvc8>uB+_VM3Nuu;FzgL`1NIw#hQ9}ony9jei>+|k%JCT zC-bL+=)EN|1N>=BU5}`vd&^{2PlGB0-=Tps`$MN;CwUq$H}ZMMde%LLr0?UoO~RQ= zvQ53ga>H$>8Eg#f5sZ2tLFFyCgZt7u+I`bK`?2W{$Z#y%&)KgT5WxKosCgGO*MQT9 z8=-sIZYn9tHrsj5Q-M`Cn}L+9h4z2k31|Ow)Q#t(9Sr&OT4Cvo_@-1YB?zBUuEhla zk&a2BnWVnDDWgs>=`7!Lv*v8-Gc9lN7ED={m^iY-M8gsY83K(`(GDEu#svOp;kx|b zRDfv8!C6@%@jhax!y59q+eDKddk&qo5>F{*7sU}Eq@{k_NA^IIRB3oTY|Ii8M*_u( zV6ua=0e8sv@17?U^FPQTg&!&a4W~{zLZ|47!22XTS{zQ(5fxT!z^Cs#M`>rgiOAGj z9#SkY^Q=;{J32;cptnOQl$SW2axGSJEZEh)r=Flr33U*i?QvYV5pF%O>^Xn6~=bH6w&ZnEjGgU&lq z>@}0WCS6cjQ|baf5QP4S!vcZNzZ1M#?@@VjX-|Vwb0G<($|1%Be)?bs*9=Yz{>`8* z{IO^%v2FYUQ(~%uTtI&WMNEZI?)2K&@*2jSH?`Cips(Ery3sW_s_?(S_CfBDcEgEY zrFgwt@NeY7M1BeJTh|0`fOw9Z_nGyja55lT0ZQ>|LL3m(DOrL@dY6D8%Hay)EQ!ft z!9@B%8acJZRcEPoCzn&Yc{LnoMk*sRTZ#)VdjxzIvsW4p3f~PxU;zwXI$rE1 zr`gWfMAa^#ztBaNY^jA&UxS|vV1wDst3J$DbQ!a$4tFEQ9+H!wl{^7lS56nYTb`O_ zLNH@FVor?3Q)>OFVl>{;P^A;w=fTz(i3lbFv(Wh15)t!IU>j1XA|MKbh}0%*T0FMy zf%fCZyyqF(H+&jgX*Mo8Rv?rv!n%5g+a2b-6+2t!Cj>4<)|gn4Gw3OCyDwGPuvIl{ z!S%HCps+e#ylXLjLyzNN#$e!9uM)hbuRx204ursa!XI=N=r)#ysZXbFwLt53hN1%b z9GW`xCon>;vSZ7tm?8KOu9rBcN=EXYP^g(Xp6!ZvK3G|B4JOs+{Gsg<-}K6Bj!~RJX3~^77Y)yyP94=)m#Ii5lM!9%r-s*|iTJ&aOE$yQ)p_HYT0T4-xeEeuVoPQrL7Aj@| zVW^#tgVop|QITITAuD)GUO^40z_hT;W=shq%~CTi4npW#%J}qVUn={7xb5Pk*aeFN zXz#EgtOV)?Fs&^ddG8j)S#)yoNw++^Q7xpo$DDZs8v&Jn+*ic_O%h0H}NJsLpNjREM{Om2MW!EG2=LlVhzjodt)ltarvQacTpD{f zS-*)c1pGI0=iaLw098@R!2NA243Gtq2@uT?j94b`4aF1a0|rJ^f$eBUEArunlZ{9( zh>9%Ga-8Wpn?W>#Wwdl|GUdQv!C|xzn9m?G5nVYx0QDP;@FAE_&_6OC=3we}6KLd{ zW}rIi*G1mQj8q_CQ^y0);5QL)=N!(S*>^9SEjF|Zg&X)er$r|{TXsD` z1*`pQTmB*d%?bPiAMs*tNcu)|a^<7u1UV{f3y4erBl(=a+xEVj=2!Bi=Pd((^p#T0 zpcu`@mCJ{>wiv45VANHVOB_Y>c|wy)!cqusi61t7_i74A?h{CVW2==k`1cCpCD)d7 zUL7(IVeza5eslS3I`^54pBo@L^5>ChBNojT0e3B#S!dZsU4G2&?A+|9le6rfG^j1B z=kn7Sibj3!)j54}NdDhKc9vAZg_$h)quvzZ?<=hEfkl%*1J07Ro_I+(y+P7OjU zP=b(2mESXlSZ+ngMaA7D)~@$XZiUT;fgwD?I&U&Ds3hc*Y0iuJ_MDj8Aml;a8~?_{ zOK1vF(}t!s@gm;oO@NzZI3D!d;-5BP#efB0F59zZ^W_i9n02XvA%Bl~2?rggqv z`+pDu|7Hk*7=FMm;f1pQ9ZQ)oNOo=Vu%Ol`X5VIJyQ)AXQxfZB|Md8cN-ak40krQw zBb=0Bm!<=RSQ;SUA2$X3*u-!&z+PD_KgP?(Y+Cb+f6g;V)(1^BQmcK#4hgu3!aC2) zKz93X49!F^j!0SS;&|5BD}HQoav5KoQwN$(fUt66%^b4^f=l7S(OK`b-{L7_CPHxV zKiLB^Yx{*X>P7Jpm^K1o(s82Y-StH=auUXx^U_TfPT^TLtNJhoxUSYbjcq|g0`ug2 zKOuw`b8fLOmBy9T%pkc8p)#J-0B{~0MAguf`T=Ry?4`O;@F$pFw%%>3{3a*9WrMf_ zhkzK=BgDc;Jw#>h?Io}NK`@am&nQgM=8*^yBLCDxG0O4CRs!A^!n$L7B_L$nWdO6DkR2I^>FP;A75998U+hp7bx zDGL+z;Qr>^NcIg^*r}8OVSJih3bv4EHa;Ls&{uc7WDbcGMx`6kk%jUqVV~7RD3J3{ zGBS#fz)VCA&^l3!kry-#4aiq5M}HRGj*ett?sN7b>gl(^c`^RlpA+T6dAd5@jm5%kt9cRab0%8gS4Hu=** z?`Pq_=|152IKv7-sVyGYI(y(V{O(`jyxNEqz6aUOdTZJ6EKsbc|A9fr;kRJqO^l+B zecL}hc>TI}+GHx$BPYX*M?>7njAD`zxdO765~Gk!%yuDjBNVMq-qw?!DF?PPwqv4m zMwtBhhu&#Vm>M>sLgdL{R*JtiW(t{O3j~@6iU`-PFG}WPhF<2{}fES^ttJ+Y`c=aj>JU0@I zjyS{P@s5KLj+S@}htL*6IQKIhj7J*^XjGcNf)>=`2LIEXmpdaQs>4AsY~yMFya%U> zxB+wIs&yRSWd3d?STokL10+1dxVELpfvb@&w2TA!3kvm)x~~p<=OntElRR^Ncwnm5 zw|VyV)!*OtPXEyiv*rN7y9F5zedAG&G*e6pk|4art>pN0uXk!Vd6b=ifMTDIkN5Y_ zdVM4ROogFgsS=8W@|6`_;73cJ#ADpt-hF1Gk-qra_GqX!_61Lca2xTT|2(h#dAy`5 zT!X{>I-k*HhWux{NVsBQVMO^v4zRTrfhG%e>pQGwkMeqgOr%~YH@Dm3BS```I5L5B zUQd~WL1^NyYEMIP%&kM$a3R#HQ=K(>F*?a}&D9?;EA zZz6KEbd5@#gCoO-mdt{A)rs(geS#YfsZpfQ&B{jh@L%04`mkF9fY8{eY8hh!G>8E6 zx(kmgeszXfJh{zq7kRn5qf!9_ zpvUfDf)c)%&nyYy^P$BFIo`z0<3UY!j9?6597|a8N;lMrSxLgtk;BFh;8kI6=?FSF z$Mk&XXd|3Y&bPI9&CeMvJRrk(db?DPgCg0YPa#PQ`EBgraeAUe8w6r*m#*XVK?Nf3e(Hzl0h`5jXoYTje{>C)&qzg{#)d6sw% zND944(&TZf;#Ck{V^7D27y34ZqxDQA*y?MP3W+R69m8fhT33v=T8G*AlMBy(oyK7-}ZLee!3tfZe9B%|KT8F}#M%6+ zDOJ-EHn{;YN7w+2Y@q-GDXi<_<71v>h@V*#fL`0A(w3;aNF+_hA6N6M#Rw2{Ewh7~_C-l(HF%v4 z=|K>H?0R<$uW7rZI(?H}BY-s^v0w}tVk#482A)qF;{$C>2jCwQCZ7Gt$9OTEY3k2k z&_HcF#mD1uc4CApFSMr*zSjuvKF-k6l|SC_K5jU$@_> zM7m(^%lO=t7_dd7!>eGlhp&+5viCK4oB@5A*8@5n%*Vqw1sLDj)cb;0xh~0>`JA*nHSh&3xq5A{Ib* z{U6ZZFgK6fY-FPg>bo_Ir!N6MKScI81|8!bp^b2vp_!;zmTdsC$|aa=BH6Qr0KnCn zfsgHs;*4al_+qoklb(5UO@@b_ehUsa@-nbs1hGJ6O7z;X!KZ*5!+B;g?7-}9%+UDTZ&mM4wtb-#MAJHlX$f;LMkA|rVm{0>kF7BSVYLJ_Kg*Nd zqy*y64w4DE-tkpPOS+JxADGO=P%NyUd*Q_JjbXy#$v?la-g-COhHy)4>cKQ4^l>?T) z#tm7f?>o=7nk%-QEH%gT<~VD-Py$GT4%B398o)0WB{3&1&2@x)Dp(inBzWiKm?(D^ zJTsDFTzaPlcLW0Q_(vda!H0Xjqklv`K6rg}e5%kAW3}!_6(8_vf}kwk1WOgWB@iBA z*N6kQX}F#18v2bPjv)#G_B1V|yNR%We2b_6+Wm8uOWd0gfwz zoGdUEy5O@SlU#0w&Jy#5LNb){-ld2S zC7#w(Xil)wL@0ms$R6}J6o;7TV{Qb9g8Q!6<>IX^JNG*l0lmKu;78fPQk9_@l! z_4uTJ@aEwEbo&R#M@&5w^xw0jD|%07X7-d!v;qiFFeUXjN6C}lZkCq0SubSLz`i+6 zOIp_(BYn`$Y_ezy0$n~H6jKtBHq{PR-#ttb4F`?U${tvD3I2$A@|w@Lc6KBf z`Qs@|9>HBjMr|z#o#W)K^Fy_e0X71Fd(RCq6N)`E=N1WE)khVk^g~*rp{C*SMAftQ zl+PN*$N6nzXLRoBZDt-zaq`qpo=B1U81cF4i)aVxLL2Zq;+1xGJl4s9yw_bJnHDx; zr=^DXJ8{L0zK$gP=MylaMKJw$Y{p9rc=Yu_&hTynY-a?xwiCO`yk76_o zRWhYjviNGF&2Z*ojijnSW_QFx+sG5|pqzYs;M_K4vCOAtQA|xEFW7bCZ`_JKvTLe8 z1#C;ximhg~P*pw+2jZz!>J}fqwknmDG}?lWVyD?`&&gAq_+{Z}i7m@ubL@7+8XU80 z5WI5!Dk6F4 z0$WR4_{US@8cE{p;Iy~*8-2R>_T=yY?&z7J+Dk0^ma%{2WhlXc6Ti8LnMj;6JDBCM zeBPk8TAr#JyOJ&XG0P@~_XHhzocoAqQCDX&>TkUHL|$V?f0X{IJ|^kM{AGJ}FRSm%gr>MDXH6vSFD9R&_~Lnd3K~z4ZEO`d#mk zLf+pnsOb)5`0DUwX+iLoc;r#&h~3@CytQq!wG=NR@r|Q9N4<-2h7j_|?R|vPo1-d` zB2Y+U-hh<65SL6T45!8X>OITit|1n)M2N&sh1QR0LGhq~CFbOOAA?Cz<%m8}kXUbG zZjG6VH4MOyGvx%q`={v*YFbdd-uBj;>+JaHVDyFVfx{PGWtH${F>P=si)AA21vxYv zM8`c?Y*3<)y_7yUK5ggPdPf-8QYZMb%_nPdBb`N!bQUzC9yDJVN6xxm92La`E~_fo z)UTnnQiODAi|Nv9v#8DI)_h@Bm_-w1vCyd09*qf}yg_k|`3*9USXE6^6sUJim;kwA zw)kGhc_}`lVk`l0h-8LFD|=i`H+Wcsk=XX@SnoIK$Lth+6OdXVE5M|pmhS1G+3qDq zINd>l^H0Pa)Up%4d^x-&xFp4fK({sg;OoqL94=Q}UsfP6uNq!@#tt{5Im@z-;-<@q z9XU#V>b$rYO^13gA6drMpN@X(#&!b4(Krj+5>il4ci9?PF}q!4BeO<%r8f$ghd5Ds z`W;czrbRVbI46gxX^!<@i`D`z7BW|^u~;3rbw5B12w!5lu#p9OJH~_~D7agbMvIJu zVtDsmMObYjOeHP}#`~k9Eux&Y*+5nMg1alNpo@8SiRm0Tc_6!Wq4^*$iRI;Y?%?RG z-|Oxr$NP2|V!-iuR}3We6>kY<+W~z^HEuUtNFaO2w{*wD1DZ_012EfRvu*9(cy&w7 zYgm-YX(qtQ-WH=5WSdn{*jRc|e99^t7Qcl50elKzX_$@;SMvksiUm*nNxQggV}p3W z#zos*d4<_(2*%D1$c{}*nO5dTM4MB4Vif=JtE{Jceib_s2(@Sf@eO*3;!P?q%fWai zvVJk!C!|w%gd9x}j&$tEB>a%V-Rxm{l__HL`=Zxa`7(sV=?H<&ZgLz6JvL^6YdTs$ z;c>XJ*DBn?tpytxf1$niZozb(c<&7u4%LIR6%49ohW=RHjUwoHKFoXKZkdU!6_18L z?Z53F_QA8(-j2!%lzC}C$H`A*NN?y51qREZ5m*$0aC;1)hd1eGMqBXBuyuPWT+dI0 zV1O&uk#mS6LOtS7WYph{Cvc8W@VwbBg>|JfqC~yh(vdeTnGQV4j zxR~K_1RB99s|0#;37J*9!8RJ^N+R4w4Y8=zOrlBBUT?XCAUv%=D?)Ats>XQPm6#?~ zdF4*9tk%el3bu`C=S1HV5IsqV4a#mafANJWiP;<+4le@H!Rpo$UL1!zaduj)rCDIG z&L2H$)$8c1OBwdamd8g)sDeS=yPQk_Ofh2I7+swv>Fm9WmSl_>^hzRZ7?%Q`9B=MW zvmwbA8JCm~`x>$o*XeD3J-=o-Ld<{c7D!&7ETV^DOZy-D{{Vw49VxpbHbt{#(H7&?Ev&zV-V;1RX@! z0UZ&I>Imn7BY~`=!@@!DP?A*k>}Gdg9|fD&!~tDD4E2>{4EGn!`$#QWuwGS`0AWx} zt5xNuuSGwaU+)&95~{@um~X*~1qIBF*gZZx>b~in!+%=Ix;723TfZ7*>@u4bQ4XmX z9_@-zOq}zf2hPA@c?z9DyRlV+apF-x3iOwmO%H5)o?Kbvl?9 zr3CK~1CG)hx_#xC;l!rwWpKMYMEF4$r4%^P+!S97<)4=P#dlZpoZIBA*;4ic@sD`yfDPqV zxx~K|@&FeKFC*S5Uv+^u43Tsc=3i*{qU32X8$-&j^0Bq25m-0__o2wl0SyFWe{FWg zCapOET4uh+#dT~bU^{jFp0d3L~ghsCQ>AO(mv!b#03&BQHIWP z&m03yyH;2&gy338gFHJaH(vFkSJhlwSU+N@+-%xK*v2eK>F}{1EP#PxYE=vNRg}Cp zxKL^7y7FAk2=F3{`=XY`2~Q>ywi=^B@rkRa9C%j3tf0iOGO2~J|@ zn~QM;oZaW-BRo4U%Y$o-Ae;pKo*qIN*tIyXddf-6yF`GNnHAdI!02%EcraKJBmK=V zmPE5vIp(!!P}?%}CuFY^DN3L6c!fEriBqUJn72H)a`E{!H5-!xxQiUTSevA1s)R(f z>=@WvP=%neXB9?5fh!G}+&pY4mId5Q_Ep#upFSNuqLD>xX>}~ZHK;~>P}E4!j*HOH z6};nSGXjw)qHANW6#~Hnp9jl2McjK-Hlku|#(L?6FtTuy93Pn%`Dp*}U>8t(M)`nm zknD{#adA|j9$7Wvk-iaR{ytbP*b6^_pP#unwO%Hwo&3GZ5Qv%{1SD#dK7RfgE6( zDq)`+j6^v$ivW-il(~n`9{^omP19>sLdzKw5|hu6g{EczbdaN7)Pc)q@ZcdifhYsE zfmvO(aMiT)3vB|l*``e3mh?UA0(&&4XIeEVewPpA^3<^0qE)0mJOu_0!C9}Ezt$4_ z!KJIZv!e&IVqqMrz^$#R6faX^O}+38wgR;5IR*X#X%2`^Hl9udJdMRrjE0*4k&GE@ z2hIVuvK!7*b+Nafc3_vKoj=(&>~dLiE0H}f(M5y^gbLcTQNRL4SkzOB14*HVPFW=1 zPKwEVL}DPdtr`P$20EHoTC^VMW=OAk`{3yx9Q~4M2R**Wd&kd`U5pt=6h(91iz%fN zv9XL92LC9cfa2|m93?>3Y+2sjD7yL;|_&+46wh5T9hA(m$ALfS!-xtg;Q)Z&}5Jp|r8jlD>^qOnLI}Gw5&RN|n z;20^fr(Nq>*Gsc+OcG$aJabeznR%dZkoot8n;Lzf9EF?-4%YF(&erWE|A4jtTiJQi zafXnU%5VGD7$~`;O9GNE4h)(Ga4p=|hY4iVes$1)vW?$1y)<2F8CLLVa%9t#pv8HF zGw)P%WU|!3s{k%O{AB7R2o!yz~$IR+z+k{v%3kt>YPwikk%@F zq3kRTsV)l2=oLKUmTi#cxb#h0N*ju+te7k9p1i2tkp)iL_kDTq`S#xD_0`96uSoWP zg!4C`loyQ%rRapW97@$JVCZm?=1LUBkQ&kU9z(QPK~Q zCbnr01F!+WV13Gqk?^M0??4#53gO!S=*P_IGpwPNL>;TFawL=?`j%DJ4(;_vq}PchuL8{<3`q9!C%;yJx%IJwvqsfesT~nClF`@AdY(Zx8#R{GoWV(gl*s zlA93>NxxTuR=^zpi_slsF7b{gV`{_s{*Ej%CR>*>R-+pVLTPe<`Y_FjP* zUrkzwYF5<7pusfniBl4ij@kDUgK?~?K6Wi}{D>%w%fzt;TFXjH1cg2Auu_4NG4H=s zPmGh#5^a9fYI4+i(;?V$m6{dpvf38zTn6VZR)StHW}96^2Lyij8sR*Q%2{23s~?S} zT3mQH@vM8M$v;)IyHGD{AwvW>2Gp{fU#g1TNKdmXQ^S=8I038SF&B`&e?Zn@{_EHL z-ODYjaE#!HAvK5oMinG61ZwJpKu;FO#=_x@dBi@Xj@gBo835}VEr5&>p&&^;P#QR@ zrD0?cP7Dlg5JKt`ojN=+T4an8QFvVzF$rTsC3QRfrHVxm;RMWXnoS@>sN#Ys)6Jkz z;5BvVOwdoF#h_yfFa$#X2gq}RGZkecN0$UH% zN)#JackU?U3GPuoo@Xi`3cB7QhZ6tWnwO3qIaAAAd|XC^k*2{@SgHUicQk4M5e=NW zStfw@Lyp?9Fc3m%SD%k){pnu-@6jhnbrSyiZ3*C)+uKF_t)lw6Z<1E=QDTrWV2PqUXHKI&SfGX$??1OkZa*o;6C^-1eRjhP%vi0 zJ3^icc*Ll_``((f=Exc>xGb1c+VG`*ca@%CY~WVsAsb|zQK{sqT&Ccih-?~Q!Q;8& z`Jkc3@1zwj-u5edI{zKFL#T~kZESak;8B+oZueqW>EH)PT zgK+S*N`(ThT?2G~U$YAJ`PioKb;o;Dq{EVzfL~;NHc%I5^V`|Xkr=t24D(C0mdq5t zO>5v0AUMY#=ql3X1n;0Zn#jfogULgY+0kfp#3^l#aKw&n#G7t5n^=C914@9|)cz9g zMlpJqT2X8nQ>W7W*ifGXsOR-{F?OLSZkz}uQBFW|5=%13Y*dpk>>5YFvqueqPcWE; zpti%(BVy~Ns0+kETn6_hM9s)CrTpY_K7z0bNCA%wpUNYENksd-*QW>lf1L0B(A)hH z6L$i_tipVDMo56KXdvZ8#9A8o272<@!OaTR6ozJ{f`+SKvZOb)e z7~RYK76b?-wa{%L-C&vk2QtsNq%6BPuYg*iQ;T^hpV?ST90il60*_iiRjXXP-jZqd zDKF-w8IAKih)5ciSgA#+2q_b8Of|)gEcC?SE%zEK?JM@2z~w0^0|$R(^OvM#>M?Lh1J+ z?OF7J5ASwZgi{|?gsLyF8&(=!4IhD5;n4@)P3u8n-z*L!hIi$(*F8)wgm$qOi`jlg zrDC2ytS^+k+H+h~Q4YFl(jYF6;;_8!E@Yt<6oQ!$J;mt8j+9wAmKFsfN^7}hX5EM`usM8Td#7T0 zOwNj=fJ{Vam-k00?XkaAE_sI~BYD-PPQodktz)cY9p7E6;ub?-R`>|jIq`_ttAoz@ zV9@<(aRatZ%b$)iQ>c3ByxKYygeA9DUbb@@B&Ts5~L`8v@vFBB#gI8 z*m{#zH*{8{P;+*2RI+z%Ti}s@ZLAi&JcMO ziisaDf(z~aNZ=QHx($+zd;L7Fv`4Uz=!*}2{P%3}F&~8Ot*z~3Kf9RDK?vD?qQo46 zls7U(X@s`?xdO6E1dEaDIh56q?cVhWZC0zjcJ$pl!2^-;Po ztYnq}S2xZuL^}Nlgz1{dk)b_M5ZYkD?@#(!6X^l>jaBC)lI*re<~GkUm$jGWo91^7 zhBsy|&5eMDT=+(Tfv7oxPdCm0KU%&c`2mt+!=)U|M=8Ug6KWU+Gl0s%HP%8(ZHE9l zUeNWL@}s*=%w}nxtH0#q!Dw#i=8JMR9OW0A?_Vb2H>4uvZ}_;W2rBc`vHP1v4Xj$u zTtJg)19Z*#z_8z=(OLFSn?Tb%)cd9wf821;gDjx%FP42ho_=2)a{?`B zvJ65WIg+t&OF9_Lufe&jAk9ETzfur&UBkzb?c_Eh=jzH3|CEvI^(tyI3QiJT*U_Qr zXYn%HHG(lfigN-5(AW)EOENK??1fGuvgN3b%k7RwUp z^lH#jMKqeZI2^wraB5RmY3`n z=Q~24n+J1x4l-*)))lM(WVvWlE-+}$W3%-sAE=l$d-AY`_YpbOwL8FOvx6NYE5q=G zvsNCov|i_MdK<80ziz#2S~yNL&q$s%XG7@#xERb;ql+zSGhfsu2Q5kjd3FurwjoJe z6~_GzXcV^7qDeRZFHElaQX@(EK8QOSr$Hv4`(ly|mlC?usAZw0N9M%a|m4`u6DUS#R(Bq2O7S7ZtUU9CFDwpf=Ad}w1i+Bp0r*TVPGQ8UISC7?-Y6Si&E6{l z7oG?z@aNJu(`JPdS#*oa(SUFN$hp9+s68!p8y&cl$)cO#yEXR*a&c!awH=AQ&T7Yh zuQ`O$7hRS4n6qWLI}^+pHeUMCPRgIjR;#I10*kEy+t9tg0nI9>WK+iBlUlvb*^dV& z=WqM_-!?v1fDsoh%SgeyRc3Ebea!;H+4tU$NGrcDd&|>{QXOe)*m`sFEIDm&Kl$!& z-?g{D`S$CtNs=&ye{rS793~AFBhaSOK_=0GRUO&X+!3Lq$uFBpcy&x=yf?L%#$B1{ zg~1K_uel?ZcFL~g-#kt7pVCp~@R=ch^E7(;p!f?9EKxo+&*_`);bHHr4;`77RTSeDk+&+E2g!dh0vT0sP`@#H0^uf49B;lv<$ z0wsp;F0v{Dk>Vt4Zr*_Sr_Ywu-Jdoj&+xdUgatVWrD^Kr*P?a|+! zK6%>ieD~e!hyiMLG7hcBJTIt!7IS{5*3F@REG}w>4HPF zlr%&BrfGyY)93HgJ3~PSA6wwdG0K{#P0>yi#ej^w9NLbhsCpuG+4Sv*xI;s+<|BAo zA)uA$S2D`dl|GTeKrZX~%?%Ro2D&4kJ8r zU5Bn{wZo3cUd%T0TE5tE8(@~@I=dcRPa2=y5#+vFQla_43I9jJY7Yx}*KBL;w$N4E zn3VpVhrnY4d!;R7Ci!sdcCZC%n%i$#mmr279>PmEk&&|)0M z&XnHK+s&~Vkf{t!wmCr8dKrn{EzO_BdJ6^Wnug1sw(a6_@*k7LfaJ)~lob{<-;U|1Bg>;^k;14{y0P zVyBxf$Gc`>yawayh+ta#`8Y4%W2XQ*U2lk%JaGRw>b|j%SxXLKIlqYW6#T_)Ytm^= zwwsCN3MSi{12E0p{`$_aURU`TBLz^sKk1-lX3~MDy3;1yy&;)xZNr^br|Iz;^eWrN z@g+9RlaCq&XyE!FI{mHyqlL_H6&Eq5OE zP3$qX1#cMsW#rHa1O?h+X1*uebYCli_Y-)T>DO(Sy>P)(@4ek{+#z6G+A<`kuIhGB zRb_#4&p(iMn#pqBWYUSr@RfI;nu|W`Bb_;+mdzmD<fC1t2_Ri<$c$i2_rc@VIHJQsGq0lSUa|3%XIUKj^w`E%od$O&E zgw@(~W|1!Qne8YM%&m>rN&N%SewiNT*ZJ&Mp3&g}00z@@^G>r8dU?#bdbA@~E4F&3 zb5mgA@}bzt(73Eh5>Mz>Fad7xrRtBEBlYdJ`gWVY6{ZK*#SOK+lgOeiA8BPkiX50B zF>dGfOKYyO_vbo#^f~qUiVyU%}|3lp3mm- z-)?`loPiCIUgSH*Wue#bcG6-$GK&Rw%|FKGllIc%5gk0xmB`>9e*SgRd1wBdfAh3C z*{)7vHGX0WAO?X+B!;MsmV$$$*XJk4hJEs$K5XKTD}V7-lC=;`4?cMG!o8YbKCe7g zo#<0#KXCh^UYU^QdQVwEG^>w6_@3|;eE9@66N*1kBzF8lKHbt6_KPgM)5=gHDlhV1 z{0C5fP|f^8u^5**N93?dH>d1{E@a=H1PuAiDH|jgDFoCMVT(w_@lb8Y4DLH+VljPj z*gbu172s`41YiaY8g#S4hlP~3&BpZ6*5=nuccc84U*JED_O!XE?RH(`P%&tq-&1p_ z)UsZ)h`0XN&5g_T*0?p*PpT>FB}j^Cz0b#m5s)j|UVWszOWvIo`weK>h#yleNf>(Z zWDCD(wkkBo^$o65R7%d*GJPh>xju|*R{+7ruMGRax;R50$_coTdC^Db*BEBiXfi+? zg@%kQw&i7-kIEK#GA>vj%s&d=XqR`Q3j_}gNUP_LB!F{rZx|;7ZQEQr$fKj)o!NLA zJ38-AuP{zNB_>{wt^)D=MOTrB039=%n%k_PpxBw2OE;Z`As?G&atmQk zJvMFloQIZa*ub6T!*u8HvwieG17GW3NykDp%pGiwn_kk(&mCVFl2nahqQ=jiU-Nge zdNQhhLC4|qHn>#zg3&T(7RZLz@+i7@B!Bl^RN$ojzccjzCuhi>9wH$Bmea#T%=1My zuVnr)OLmXDhrP4i9#b)jYvMoN9vvS1*gO0O{ONlkulB8HT^}arFm>mRblO z{yF0~pcEjPINuVKU*|mVjpn-cyawwzXcP09StEQz{z4fB+~Bw({!U1wwt{P^&BN!h zJJ;{(dp0#YUR(oLr=tAvGw~-e--OQ@75EeUC;6*w(tK*xodm#;1Z|54WlLHm>EB)y z92mqSG|K#QR$Mkf5&v*%Z}`+HM9kX#oY{P^U^Ax>ah|=iP=l?>|FIZ*kfI^xuG3_% z8;nEdkP7nF;;?3E!1aQ$4xCdGgSAyGmV{FE3up+BJ=aIs?k2r+SVe}FBhUwQcE;8K zVGV@8;_{Nr=cMqKHt4dp*kn)1UNESgy@A*z18&in!hJR7>=!Ud z$I<|LCLyfZMTU6Olv>g7VM> zVQA%#SbPG!>y|w)fgO@B`ShVSp zLg{7-Xz>8SOeunwEavXx-A9iSN}`hvIDM7dFO5oAbH(dhA6_&UUw`C6DXm?2QhZ0- zZ??DoX4bq%PH<5q zuMdx3waeMvh(wWenwL&rgQ?T$;|!8qqeJfeTj2Hw@4F*(9F;$h$C>`~ESvG4<6@V> zyr0XE_RY-%i3+bV41lVjN^+d^UhVE3?1EJC9%PsnyxvBLBDMm!c+`_xX9P-=lY*8W zJu5Fz_c>00-35fwQCVP~2kpKfI6jUwc-xQ5?m;%#aZ55XCAQ zCA5M-0BK3UE2A@uAshU5cKI!UjyAeY zk(wJDjmAc|X(VY?{Iy{Z-ooJf#UTpOwtUxJ16|`bWEhtXIeu#oycLnGL7ReJITM2uQtAFC0~6H|M}JYXDczs zm9c^ZmdWgrVZaSjZp3#+z!JDtJk5j$O`f`h;e`j)oE#*i^D;@kO24AAUv7h9mcY5Xa|66l=R#HUqGP0N!%pl@@;gQ z97=FU>`A7cJqYK=IXAX!DJ){a&V(s~BYc7IBEXd>aDfEQ9N&&NK>q-xd3@(#k|ACk zg!zIr=(~rxR=y8g(d5up(sh2_+}wQU*YV0~H?aYvYBj7nr8~2|x}W&4e*M3;k9ZfP zx~z60jr=T-Vl-G-ac)x{3q#hEuiky7+T>6U4)z~%fB*_RF#HQhLWzh9jJ^_h?Ir0Y z{MQfwSo5#`?^p1CkU@-d11a*(eIW+gWp1GfziLCR-farp7VLJi{%hL){BE6wEqhE@ z+v;r@Wiv`q(=VtbOs@SEXe~Zcq{GZgZTj(Z)02fe1a+o;Q0=Kp+=2P)7alw6fLbwk zHqwZ<#rlx;269{oA*&~HN7zJ-I2Y0(UEKMUgOGJQbOQ#gBCBOT!(>% zOB@hHZHeJx^Q-qh7R*@i6&H?}fBQzo5gvLTRf(16+D z!FEmNI!sasLWHafA&yMu?u9UImTok{#3DGHnM(VmWoxmq_3!D`IA0IybP*6i*8$F$ z>TFP*zlL=%J8op;Q0LcmNpBjPyke?X`i zhzRA7Zo5>3C*z{DkfdRQ*4FHXAvUi-)-ly|dl!i2$wwc{RI&yo8ioV_%$4 z8G9^{EMc1@N9-G$13*kEqoVkTi~*1!!@=0BJxD_YPzNHmObb6`904kX_>+-)P#SQ% zLsuFz01+Cjpn_%C1xE$yuB|7KYGemb`S;RLW z?CjXXXV_`V2?xXuj+_k=1ZxPuHX<~Z1@VL;>LFvo#P`Iasxr8l&76}$DmJ(Tu4;=w zA!qL)jXhg*nDCj?1%xwoZSYFF!)yZs)tyAnE`@2Bjs!}^PRB0Q&Vq$Xc6RK&Tuc0) z-+nW1i+m5KI|y2qRfVsdueR!ih-uUFeS#l}`+ROc6N{z%%guZBxE8|mGqqsz8GGle zeX;C=T@B|OW`~VOE|?RXJa4Rv58888(v3MbK@Ik3X%{eP>q&0j)?tp|OrCLH5x^74VxyYhSW z+{v&Ek%*l@M-93&T1Rvaa8z&LgMNif z_7q^4%ozDB`zD}>;u>NbTMlxUeCWOfg;RjbEtNZYdNrm9J@Uq%*dDlfPPb8HO zzaY3B_~PKvvAzojOQRf;h27Z!c1PvR zb9PAc@`CcB(Ny*{h1v^dNtJ297WdpgL2+xX86LC8DP*7Qi5q2bqfh9^>d0(#=9$~n8l7Lrc%uE>{(Q$rZqob%=6LE zuyg)uu*sVEO6z?o&?(A3%kdgoJA@1$raJVngJxDwhPnr|nc!e;mN8$epLA(RuLR+y z^l)oaayV_gYIU2QDiL{2JH!TK&AQ|%TJ2^{x=nE)wd>+3V5%NBrt76{isEQPj?-(4 z+^*sg*xeQcsXcdkz7!*tx5S}(d_uqs_qWrpL7>v|$luT11!XW=jWkvmprHT}Pj$SzzZ2clZ@>BOJNR$sZxJUt z3_)G$NoQv57H+q_#Dy*jSmd=)3#q)q4pQ=o^L*&-p}&O!3F(~Whv1}gnR7C4l@)=< zWIJ)GEo?SFWP~xSiIOc;;CQf3KKviB+1pQ_{%x!Mq|WgxW-Z&$RUKp1yc7ypY}FHzx;&z2lSq!ST`g-a+^EneT(HM-46i+0a?c zHy%%BkZ$=40%8;l@ONK-^R)fsn}ubYHyt3*!%KkMmVF^9WAlI9q?7$fFXRF^a_gE&~ z=`_9L@EO!uqY)E4Lf@yO%Qgk|HO6-rkTI)CaM|eBp1jX);ZzOtEAvKGJ(`gYnKJbK zuMqVOyZhA^IPP`eKilx1C-9%A@Sm^YKi|NA{`M7|kgvXl-@k+Zbm2d*;6J&EhHb<#+MNeGQ_sS+a`)R?ncw|tND5eAkrN+D4Sp6T5vZhx*VKGcQ?pXd**dv84$F4_)qj5V)$`gSPpHUNrN|b3@k{0NPPNU& z7om^;EW8OJ0$E?9o&CPbk@m9z5#r1TX<-f!S@vAV%`J#7y~HGF7i>GSyOhewZ~wv$84@~sJ`9Two0(7)zGlHOs-#L0 zlCmYq;gUn*2wuwhs(isiQ@9{nZiw$JoAIP`V{MO%A7>XJ7YGe5$ z<4(Td=RenKlUUZkP@9ne5Vd{>L(#}1dWOsN-<1O}3QVR99c6{#R5B^prw0ih)K7=m zAUAj0T*&b-Ln4<_#)b+RGNu3Iq`wR<7=2JC$fK`W&g}r)xINs<@y7OI>?Szj@PISyRyAE^ieI-cb40d7JYT>o&Oc`Yz*RZJ z(%zqVkVQ!O66BRX1Dz|#O{sjH?vMC;KeXRJ8|hcQ4nY-r4BYK7GdGvxxmI*Sb)NzNcCYN#cEorVuy zU0~g)0?*L`{JSNAvzd$UW$!UBD5&d&;Rcl@+Co(hVy<2-s(zYH!oGRd_z-dvyBtm& zR0b~Cf5N$mVm^cM+g$TwJw;Xa3`h@v2$=6xX+5V{=@T8ljy3c&Vl~Y7TpFlPb=({k z%aG?%>sZfWR1_1uy3hSuhY->R6ZrKV8Pf>0lp@b;l*BvNka@*F#JWE;9S{mxM#1J4 zdiP`*y~A}}Dp%sGXiA2voN=sn{hLlrtl&af`=rZ0E={+GBj(adcv_~wh~-$aKSroo z{^mdcHgFmH1fn06#q{9JwC^{*2QdZ9eN^E7SjKfrTFvBWx6!Waf=yVum2kn9I-252 znUa-*7ptvCyd8`fn^@2nt>c(vay-?KD7MGK{+q8}RMO^AH5TRTm`vm`O%XRC^M~4V ze?KhIkb$%{b+dx}2jWS06pe8Ly9Czm-m7d;AXJkXb#-) z)@=usprh<^mKa{_x@A7v#*e1RX2@qx@H50LsbFWCBL8j{_CPUfi0`A=*9F`sgcAU` z30Fh#77sZKqOr{I6{mMFu0!#mHjb*vv5A?sOtXvTV`jHd6drw}=}u%s=Hr1i$d$T>Q3hg)x2W zN-JF7)Y^SBcEuh~bE;NkW)H>{mLgJj0V{j3fc^2ZTv){ei{091$=``lHa;F_ zi>gAfY1}~i+10=x(Dh_pDvo(qnO^d#!BW%{e=fV<2+u_mTc=WXt8|_q_K=ZJ)PMsr1?Uf@kE>09=%R+PiVi!si?CQz2!)y(;txY4{!ypt zy{Xhx6pSZ)4DFWaNpCbCQWL*ocUD1ouQiYvaT}4{ZGLu7^@5aNuqu*_HhI_N3U-p*XmrN zTA^K^s^FxnMt$?8VF(PNQ2E&p4Cl;?0bGSCLPuR2t@Wl;OZm$kx}TMDK*MwnRQQ1| z+umot2PawXHs8H#xfS}u3$%POEJdmW7$T!eV^Kt*#)MSm=3uYK z@Sljk&hHqAZi7+2e)3JH-T9{T^;R_)r7#i%L~EnEl7p)*?!?_NIpkO`AJ?H0-}rU5q}uj>V?V#w+KY&7O|(An+7i>K%= zgkSnEK#mv@3;ScA4fAF2-teancI=?Nheb^V{?Sj1Oo25}Sn3hD^jBYv0KP{xx)pmS z_;G|8J7t&Oo9*UzZ#lKs-C`RoRnTs2LC$D5WcP4<^Yq*Ap0>ZC z{2U&4_s)C2^Z`Kr_{e6Ia1LhhG>nRLh|h%?ZZ>R746+##AnjqP%sng7gt5>>&rIbH z1s8b1Zu{o&_yJ+bQp(^pa560hN{4hWO{oAiOs8+kD>{pwsOhpQLN6;1la>5B0W8<| zQfkxO9e~q0tnRtpj>hn!MP*u4A2e<>)aD{%wYoM`T46W%T1IZnKXn!as0+#)v-xc3 zMVC&*2t^~V%~kTg7!4(IjSd4aHOPR>A!{-~I(~u>-1O>d3JKgKmtty@&46wKPBcS7 zoXxLyXSe*%^ELldn70Iqn2%UjVs6U5Sv|BblRK*E+!-BnSCT0Ndofa}1g!y3a4??v zsvxIt$r#rN>Rb!jt$98Gv-i@hiW`Z5I*Y5Mlpv%tsh3VB)8f{%|8l)?F>Xs;x;zld zN{Tc_NaESK_^DILBq@=C1I>2MuZ>`3Mv-1+qyWWCG#Y08?5);^dSI}Pi)r!ENE(8r zG#;kYA^QwmXX&_f;qfz%df*!1PLzafJT7P!kYTca-0vPracE&{bBpjg)0yPrFmHZ3 z9Of{h7FS3|H|brec;8Fdc5-#a*!s6`*aqzIT4XJ0I0P^aOfegKxea@CYzj3yN~*$n z!U0#*^&+VB01IQ&Zs(Vr2tamTM=)38{^!?cvuyImXe!?hN}~tm;ZD^uVGG>P6z#MZ zR)(Z}oJno7F(HitbXL(>ajc!Mc@)NO0(1|)c@R@YPTDUA1l%HA4-~apOAcF7$eQNr zepWq_)*l21*|gQ=<-(~$Wk z%~+{%tQ5&+hv(XjC0jP9X+IyQBeOxZC#rg4R^0Y2fB$Hk9E*xys0COJlxRJqlj|+} zUOC;Un|@uZylxK1hZZ>I%v*Ke*FLViwaxlPHV@i=+aj+v>&FfHqDj^58(+!m_V1pD zdDmnpTR_k;o~rP%0CFLJ^F!Y;+aI!#kj@ZZ^Obqj5sGtGP$D0KvVpS#91N!TCalJ+lssdjyB5Iy z*zE5B_d<}Gsp*#kx07N%P1ZQ$G1%O}2#AGHnMk>aXm}fx#Qa7wec|=w!jzzf+F`&p zf~ZWBC);gEk!+)Zygc&q>YELi@J7Irz64zZ{U{Xyf9Z^I;Q|Up049Qk1&B4Mp25|K z%9ow9tr+@3NWqCTj167z=t2CJUFTy?Ab*|SMsHfxHQUrNh4HQ}(v+@}3fHMi-(-fX zpFor-h?@9UlkdfI`}M1=oJDy!2bBhk3B_D1_qo4N)7{|*)RHsru6>zx8Q(K#s{N7- zEH;P^GM{t@gZcG*1W>4lMhLDtT1V=0yRd;NM_Qq3?V6okz5srXNeFj_NA}lNinhA<799~$s3+iYifle;ql}Bkxfob+_ zzH~%QhKpjMc_Ft$>5@BqWu}BV3p+Lp5hp24skxf3x3CZn+JogZRThFs+B6*I%(#LI zTM!SNAt&Za3ap?LNgB{RKw@7{UTifHLHvRH=;cwqYGI_v(|6Y+ttW?K<_4}S&8J{{0jss_<9vmr8s10L{k{^cR(PPdGtaR z&#S>-j?-+Efw!YArs6cNjO;&w;Tblf(fj4(w3U2+)&q*%KR*4w8NL}2bEeK^*> z2s!Mh6jS}4&8B#0;4y)JD>~D&%<2iorVcpp(I*kU!D>Qf%~z-V%2$I10{bn4yWgXP zRhmuv{BV1|Omt5#S@cJPAoYHRXiV|JUo3HLbp+&r z>)gu`66l`c2X;&#N0#cH>1TYl*sog^4h%lr*?Mce(psR zpB6Ss=ghloaAcQH%&I}gRD79h8SB@f@X~S7`8WTK5;}EfSCo_^ch4UF`_VSfrTajZ55VTCrF4%^w}V>AhLfdd#z#P8R$YuNmBS zf2YiX=jD6eDTYl`;!5~aiO!55T&PT-n8*+lh!^8=#%gcJ7+vK?ZcjPx?oC1H%xnfh z#}7zpVC4fyqzQ==rvwTs1tEKcIfJ%Y!{lsM20{#CmX26rq%?iV5K4d?wWBj*oSYu~ zWTal!`O(ZzanRZH6$~#&&|n-~Ly<=t&OFuF( zI5LmN!aNe{v*RD#Q&B0(CkRNS7u&;>MeWsD=5lBppY+iyDgCHw>F)7lwr^U~%Mv6G0ldf-7-^taAPq2VSkJxe(p+rwU%b}vmt912 zT8I03`M4E#s7KlO$yNhDZnhR2Wb?D_Mbc}k&^`RQ`;W5*^lceT_``5Lrt^K|e16-J zfd`8!C&WL+2j_<+YJ z?b7PhbmiYv-H%`gzCGH-92UuM-bcILvtDfzJZm1BzscVl)^vrYlV_C?Xbsb(cRQJq zSQQ={T*%0mn*g7VV6bSQgnmqFp{r#PB+IlCKW z+Seo-t0wllhiARmO;-7c4oZE6{Tqx6x`FFT*V)|E@~EH;qa4NY^B_*4k*k54?U%*m z!A}22+%!N^#WP?Yt_S?}?dIeVl7jHZ{-^DiWBB{Q&bIm5bG&yB9r8LpfRaC?<;fIC z-^_^8H1gib`Rze@W~9l%j6)ihydOM<`R3<7*xwiOK92pd?@Unr%U_(M-cP+#d~l3B zM0$?!!FgD{6O|YRS*kUwr{{pOrqTjY9(R>OD|$qytO<80V>1LsaEYEI^Jg>{6FqFy z1Z`Vs20?cSjYXbXABQv%kYP+4P2)DFuEkI9P#+3RFd|iykgM68jOmQrx*LSeIC%}m22+HFJ>mOB^XYZqVuiD8@k^DimNj#oaF$A(kzAa}l>A^@F}a8OtSnz4nqP z)BDjR@Xf)|o9-{wiKMr&W$3K94At5^ixrolQa|YXzi1h@8=x{SF1^8Yg#D-QNFeYU z>;L1Vcf4O|i_!tc+oJCxZILE6Twri^omTG`wS`~mLmt*H=NFagwl;maU~^-&pR8P) zu*JRFZMzEe<$~Ib{25^QBiAYR7y)eD|S% zXhKL+^!l6s;g^dxHCB6jQEioH&aE$miPQ}Nzg#o~OyFBr8^2ssdr+jKtQ>foYirjL zjfJ(hR;|4qsqRk3xF{x(o4I@3J?x$B_QH|8&#J`Fw#8773r1oN&3rWSTG;-wk!+jm z0(>$!|5Qg()7IM~5Qz@|QKeqcQvSXu+#y>wuElNL#c%OyZT;lVeL5Z%{)2D#oxZEm zldv`*;I%3vq3;mmGP+j{%0n2Vqoxg)q_CzoG2D`#ujP+iCDU72+opzV>DoFy+oIZ| z;;I#l-2Bg_`f?*Tw9LxfXT8(&?%Vzky`%oYZWr2%Ha?i%O=hjIajTd!Ut$-I60Mpa zDB4*inNrJ9_E;{g+BK=9!D%J&mN*-cqNOY5!|{5>Bq((>(`HCX+)nuCca)akQ3jIp z`P7JFLlxav`L0r%rKTv&6p1RS?Hir`&b>BlZST9-31sj*(=V`<(YHcF zk-FOPxM%+aP)u>0E~$WHH75Irt`OZwLx00o#Y|dE4zmc^`(7&1MOZ@HIi(kNaJ=AskzY%nreBPD{^#FNFtc) z4G>iuez9uq0dDUA->AlfhWHTsmpFB0VieWnUOLPA`L!~mHlIhChwfp&ciQj1I_$Yd z%r27{;%Zv%Lllu>TQ?plaFsNqXZUC>uc~x;aQT z?)me$(%vhxN@G-^CYK+xyL-0zm{i|uqII3m-WStkn3sc5nqPx-lTWQT`^CFMRH}t3^enDwm18f zWBjKsWA*`EoY8~Aw1gUF^To8xMweKVzoZo6Wmq5M$`f$E0Xc+%CTHnKP-S0}*Kaz; zf>&hQhcW(1KWpMtgL`Cy^CyKRtN;x_2se5OYP1Opwuz96&@d+IshYMC(Mm_J_B2 z-whnCCX7mBMxCL`|E2&JkWa9A&)|x=zH;dcx9{K*LsM=4YC$-sOqx@I!cTcIf@qo6 z+J@!GcaM+2MeN|nPT$PlLsm#R1t&pxeSgO8gyD$ILoN4~S3>(1af71-Y%weo+68}9& z&0RyM2DMwklBiMT0oo9esLLewT5ou;4m{K`UiWk$uTB__ht}ax1>Oj z{3;nv(;K(~r6b`RG{DsFeK;q-kYzWdl`xTpanU*Jz@`tU_|JbF|M&B26xj|6mFjIpUpOoMFinuN7lImzxfAKFbd*zJ`EtB2yw9B`#L z@Nhx|qDu%9KsaoQF){9svm4b29<*_#qfN7)YFhT%UCNkEJ=F@WL?g9mCEiKDaR=C% z`}cZ>y?!sclY3vflkv5QY$Z%OSe;UqM>R6cz%oA6Yoz+aqfpLGFVrC4)k`vLc+Ess za#KzBOV0vNGB~>TISYD*s+s74utSU-`*2ooPxiVsyW1Vhw?K7)iJ4~qoaa+N1$kO(%Ce;p<|UBWZ2m zJ5$>9D(v7i1jmc1nVoq(?dd%#X6#39$PRL1d+@Jm9rL&ta+Z(MshWQaBZ|%U=H_$x zZRf9!`)&waRUBYosE=~)63C-do~0G7bKi@D-)^=i=5dVHFk_D&AFyRhQpOT&~Q zuV@zBEQ)gj8JGDmn-ane9Sb@+7do!+Mov2EX)(79ak^3m9}E-@rz77jOnE~U&APIg4L1YVC`asOyazxb3vTmP<9b` z+kPb4)Q&dwNhHo6<6Mg=J#!MbfVU@ikkytGgQkj$59X{|r(TGWYXXUBsi`^E4LBQf zC|ejBZ}*=VtMJ)@!BiL}WH}V7&?2z|ii)%m7ctOjOGz1B53>jNou2MMO2OcM+#r`~ z9ybmbyD>(X^s6f)5yM)rzZLqY;_%H(vlR6a!qoGWTLEg294alb@X=Cig*&D-EFW{1 zKHGJYZA z$MAby&YZ*an#v*P6qcp-;j6#Tfh=`T4v=!iXk8>+)EHtvqlHDTU| zS^LUxju?*s%}``92HP0++mS)DZW%qbAAv21gf`f+M5Fj+NXK_T0t^#5AUzD6#}@2h zS+tno3yo(%p)dyr6u?3X$Q=&bvpNgE$)EOK^+>PL$T!V{XIkI?(eTWSe^r$sNCX zPt-K@jEdd7EiCPn&4*8$nj`+ zot7U>8>W%Jt0814UYljLOXIEWraR!hTS5Q*`Su`(_;pB-%E_(*og{Koez9YkB&!)F%9(N5?OdR0yT&J7z? zX`~IqQ@zU`xVy#JJgRcN7SFwRo5G2An=Y(}bEDTVVS7_5fP6e zceFl5Qayse2O}k$vtQ1Mi$MLw+oOZOzeUommRrAO(9mm)>BCMZC&ceZWR1#ES0kUm z*&~5RNnNOcNm<^SkMn;503(8C7oKpTW(la-8_Z9dClzk-<$Od2a;^E?6t#zHLU;`S zctK+{XXv0su{)f^&jMm>OeP1zTcyiGc-G_?UZ$HIR9sww89pvWSePtF=?UUA5}rq8 zriRTf$zR*@J2X0TVBXg$iMeMA3<9~ND05$<+-ybWmFBy}D4ZCyrRGLTrf^PXEir~P zMMVwzvfGTREe8pCBxhypa;L;jER2w!CX6Xzw{^i{L1%U7gInWsa#;~)d8Gu6{W_gY z^kW{dzq~izIp!9aH|Ie@Mx6F_0YR$xHL~NEJPg`=8hx1!KzR0tUq5ynPtEWnng?z@ z91Yv1XdHwwS{k0pvX6Yq>=Q{NaG?jRkjQdmwJtK0&>W@iG;wMW)jNz_N-%GsRSWdN z010C&ZZEIMl|X8jcxz3etj1v(rSkfH(gfZq(jhQvz;PJq%8V$x1^Yuj8{KIUOsnYh zT|-kT!=Z|(;~gB!(Z5eYC1D%!UNSYxr~g%>)GJn8RtIhy@@bCpb@Iyepv~I$53~ocT3_X_dgyY`8&Ym5Nl?mp-FQK@!yKaEJof@5y7qiMi|Hp z3NJMNoH2^~OrYt(tu{t&xjif{0|f}axzrZ@#*c91=dowegi)a}ny3Uk&)CWV(K;bA zu~v@X_MathgO}VpYBtx_hP*xT@nB1D(upIo>eaAQL*EM?7rwuKGBK~kpU^~P=Eh-h zpYl{*Z8suxZR7^H4h2vHBXGZm20w}QMO=z zyv^=>lQ0dTtB-qU8pd=`vfd(w^M!K!*X&}X2VnWIz01)IU`Qj(;bZhH+fX`_t}Wr{0s`UgvO6>WqSMn9tgqFEIEfA&wOmt6x5)AzPEV%jjo;FIJTJ)~ z;FS@nfG;5y$)X`}f)Q_7?Bc?ndCwVa9kIKk=fQ=3;A#c8S~s`;>fp!_oAtUIs$ezk zgG#3cJEi3E(q7Z$anz%y?W`L+Y^Uy>5|wR1qB1(bAA$oMAC#gxA818d(sMH)>aG!a zWNXORhY0zCpMY$IYZk8G2YywTCBqDg(KqU)rIX{1hR(yfCYabzR=w^IEWeRs?Y`Je zLc~PGReV!kF@xg8!9;ZrNjv$^^}pWy=el80$fge*EPb@@Rp%w0z*4qfGRMUqe(o1B zh}*r3eaHi)nI+=asjOy-aPBOY5J^+`E?dt7j71F;g_0h_+NYtv18Gvg8=if9FpsBr zIBB&cxbrVi?TZ=)ytUaH9J;6$73V0Ag9(P6k3SV3;cdIgnf7RpGV8O`Hq8!D8egX= ztc!IOidqGjnfg_lBUaZs&3#?eK*@I2nB(zD(HC}VI zs$D2gXypF(;NnHLD0DMZ9YIr+vp_VvV``_IWP>~%g^t>uB_oeEwPEDL4M>83mV0vU zs?5!4jE}|IocsoI6xz8G^Lv*;%Ai*&xtgtYMSE;w&4Wa7tRD|(iL@`;dLD7{5zmly z<#=i{oa>9JYQ;p*6iRTuRoL(`1~LtCY>KKkP-7Yy`=cigvw^CFlqYI;^o zET#|!en3+ViqL6-K)imi*;&UsxV~q8s{n#tempFSk8^%8>lLUKwW-y!<$D)_B2x2p z&M&_pXN*Zdz3{cG=HHfAIigclid3a)^sCkAJOlfz>p!lM4fL>T#{vzdp0ue1dQzkd zk!~TJqGDevU4zr?ilEbUgWcf}KoijnKqyt@G>+*~RBJ#ToYE7Hv9}$#8FCsUPG>09 zRd_zeO(~E4>_|(+d3_r}TCmfr0sgDKGZmSFiPj%QLcnTnVO*#M3!%5Pe zb8qG6VM>k#>6n4U43Cew2`QhB^O;0Fd0C7;**A)7n&+g&e^O8cczsb@cw$)|#aE9a zeb9gKMw%mkFWs&7tZ|xHE7>YtWW;MCJk&5mvhkZyiz4_AKDHux=)m48GRIUMXH-pI(HC$lwf^+j>0NZhUGb$0z6e9}h175AGjxpLr=EPc1k; z%w0mg-GY)*!qHhH=2S`6p7Fv7*f`tM>`K&gAW=LLDq?=?RI*xl!#gOC5DNyH;PJ%A z!m}2Npu`(d=y?(kon?_CJl#p?1X5!ah$+}A%v*yMC+7M#wFHZ+@@8JnUS$Vf64MAp zwZ#b5YECSX*OXb#ex|dc7`g)=m_@UsXDv~R$^+z=Rnr(nmrVy*V5a>f<|~z%lUy0y z{2kn_VYI=Rd>5<*IFoEzdktsil+~VQt|hwK_LOT+5B4IZhuMz1h55fwi7|m*T~p9K z=LJ>Fs{J%zn*B+$%Z6?11`>*)kzUS$ohXJR(tXWm;6rnWb>E0xA}5mM&lYiQ2G_4m<%Q0M#bPn!|2 z#>m8qE(1A?7IDPH)|#O~snaYS+J@@pa8%5C;D}R7J6kKvqVAx+E@lP6_SxsgEBqgZ zH~GQP2`H}Dfnqs6SX`>)E?!rWBdPz zkWYkcSy$=6V^V3E+V;&ZEl;W#8`jRi+eG?GH3S~vS%Gc~|MB+C$-zF#Nt|Sp@@w9J z+Zwh7ydx=gE}5_AmX;1EX`n{HEHOEUlIjeiH^`CEHHA^Jp3|n^94Cy)+k1y2aOv|Zc_st> z$*#nQMieMGD5s%NjhvERigj_0l!X0sgpV2(!nIQd8=E8wje6!>V(JwR`DN&pOR#F9 zXV7(aU6^w*mDnO@P=aH@S~T`+fXB|c;h0xK^!}#yE6|TK7e;{>1zPfKK*!W2twOsM zYhBS>z|eh(ElQV5VjfAA=?o4Ln*qP8w6Zts9b>AHMi92_SDwnd&CN|u z>HaEp77kGRQnk|GD6S#iEbiwq;L^B=Ry3tTc|_MKF~±3|U;oX1^$&nGP3c$wG4 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