Merge pull request #42 from cyplo/vscode
Add full VsCode support for Rust
This commit is contained in:
commit
02ecae8376
4511 changed files with 459731 additions and 3 deletions
7
.vscode/extensions/saviorisdead.RustyCode-0.18.0/.codeclimate.yml
vendored
Normal file
7
.vscode/extensions/saviorisdead.RustyCode-0.18.0/.codeclimate.yml
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
languages:
|
||||||
|
TypeScript: true
|
||||||
|
exclude_paths:
|
||||||
|
- out/**/*
|
||||||
|
- .vscode/*
|
||||||
|
- images/*
|
||||||
|
- typings/**/*
|
9
.vscode/extensions/saviorisdead.RustyCode-0.18.0/.travis.yml
vendored
Normal file
9
.vscode/extensions/saviorisdead.RustyCode-0.18.0/.travis.yml
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
language: node_js
|
||||||
|
node_js:
|
||||||
|
- "5.0"
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- npm install -g gulp
|
||||||
|
|
||||||
|
script:
|
||||||
|
- gulp
|
32
.vscode/extensions/saviorisdead.RustyCode-0.18.0/.vsixmanifest
vendored
Normal file
32
.vscode/extensions/saviorisdead.RustyCode-0.18.0/.vsixmanifest
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
|
||||||
|
<Metadata>
|
||||||
|
<Identity Language="en-US" Id="RustyCode" Version="0.18.0" Publisher="saviorisdead"/>
|
||||||
|
<DisplayName>Rusty Code</DisplayName>
|
||||||
|
<Description xml:space="preserve">Rust language integration for VSCode</Description>
|
||||||
|
<Tags>vscode</Tags>
|
||||||
|
<Categories>Languages,Linters,Snippets</Categories>
|
||||||
|
<GalleryFlags>Public</GalleryFlags>
|
||||||
|
<Properties>
|
||||||
|
|
||||||
|
<Property Id="Microsoft.VisualStudio.Services.Links.Source" Value="https://github.com/saviorisdead/RustyCode" />
|
||||||
|
<Property Id="Microsoft.VisualStudio.Services.Links.Getstarted" Value="https://github.com/saviorisdead/RustyCode" />
|
||||||
|
<Property Id="Microsoft.VisualStudio.Services.Links.Repository" Value="https://github.com/saviorisdead/RustyCode" />
|
||||||
|
|
||||||
|
<Property Id="Microsoft.VisualStudio.Services.Links.Support" Value="https://github.com/saviorisdead/RustyCode/issues" />
|
||||||
|
<Property Id="Microsoft.VisualStudio.Services.Links.Learn" Value="https://github.com/saviorisdead/RustyCode" />
|
||||||
|
|
||||||
|
|
||||||
|
</Properties>
|
||||||
|
|
||||||
|
<Icon>extension/images/icon.png</Icon>
|
||||||
|
</Metadata>
|
||||||
|
<Installation>
|
||||||
|
<InstallationTarget Id="Microsoft.VisualStudio.Code"/>
|
||||||
|
</Installation>
|
||||||
|
<Dependencies/>
|
||||||
|
<Assets>
|
||||||
|
<Asset Type="Microsoft.VisualStudio.Code.Manifest" Path="extension/package.json" Addressable="true" />
|
||||||
|
<Asset Type="Microsoft.VisualStudio.Services.Content.Details" Path="extension/README.md" Addressable="true" /><Asset Type="Microsoft.VisualStudio.Services.Icons.Default" Path="extension/images/icon.png" Addressable="true" />
|
||||||
|
</Assets>
|
||||||
|
</PackageManifest>
|
119
.vscode/extensions/saviorisdead.RustyCode-0.18.0/CHANGELOG.md
vendored
Normal file
119
.vscode/extensions/saviorisdead.RustyCode-0.18.0/CHANGELOG.md
vendored
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
# 0.18.0
|
||||||
|
- Added support for separate check command for libraries (@vhbit)
|
||||||
|
- Added support for exit code 4 when using diff mode in recent(master) versions of rustfmt (@trixnz)
|
||||||
|
|
||||||
|
# 0.17.0
|
||||||
|
- Added support for `rustsym` version 0.3.0 which enables searching for macros (@trixnz)
|
||||||
|
- Added support for JSON error format and new (RUST_NEW_ERROR_FORMAT=true) error style (@trixnz)
|
||||||
|
|
||||||
|
# 0.16.1
|
||||||
|
- Fixed bug with filter for formatting (@trixnz)
|
||||||
|
|
||||||
|
# 0.16.0
|
||||||
|
- Snippets! (@trixnz)
|
||||||
|
- Fix for `rustsym` intergration
|
||||||
|
|
||||||
|
# 0.15.1
|
||||||
|
- Fixed a bug with check on save not working if formatting failed (@trixnz)
|
||||||
|
|
||||||
|
# 0.15.0
|
||||||
|
- Prevent the formatter from running on non-rust code files (@mooman219)
|
||||||
|
- Support for `rustsym` (@trixnz)
|
||||||
|
|
||||||
|
# 0.14.7
|
||||||
|
- Fix for issue when returned by `rustfmt` error code `3` brokes formatting functionality integration (@trixnz)
|
||||||
|
|
||||||
|
# 0.14.6
|
||||||
|
- Fix for `rustfmt` integration (@nlordell)
|
||||||
|
|
||||||
|
# 0.14.5
|
||||||
|
- Small typo fix for settings description (@juanfra684)
|
||||||
|
|
||||||
|
# 0.14.4
|
||||||
|
- Fixes for `rustfmt` integration (@junjieliang)
|
||||||
|
|
||||||
|
# 0.14.3
|
||||||
|
- Small fixes for `cargoHomePath` setting (@saviorisdead)
|
||||||
|
|
||||||
|
# 0.14.2
|
||||||
|
- Fixed some issues with `rustfmt` (@Draivin)
|
||||||
|
- Change extension options format (@fulmicoton)
|
||||||
|
|
||||||
|
# 0.14.1
|
||||||
|
- Preserve focus when opening `racer error` channel (@KalitaAlexey)
|
||||||
|
|
||||||
|
# 0.14.0
|
||||||
|
- Stabilized `rustfmt` functionality (@Draivin)
|
||||||
|
- Bumped version of `vscode` engine (@Draivin)
|
||||||
|
- Added option to specify `CARGO_HOME` via settings (@saviorisdead)
|
||||||
|
|
||||||
|
## 0.13.1
|
||||||
|
- Improved visual style of hover tooltips (@Draivin)
|
||||||
|
|
||||||
|
## 0.13.0
|
||||||
|
- Now it's possible to check Rust code with `cargo build` (@JohanSJA)
|
||||||
|
- Moved indication for racer to status bar (@KalitaAlexey)
|
||||||
|
|
||||||
|
## 0.12.0
|
||||||
|
- Added ability to load and work on multiple crates in one workspace (@KalitaAlexey)
|
||||||
|
- Added ability to display doc-comments in hover popup (@Soaa)
|
||||||
|
- Added `help` and `note` modes to diagnostic detection (@swgillespie)
|
||||||
|
- Various bug fixes and small improvements (@KalitaAlexey, @Soaa, )
|
||||||
|
|
||||||
|
## 0.11.0
|
||||||
|
- Added support for linting via `clippy` (@White-Oak)
|
||||||
|
|
||||||
|
## 0.10.0
|
||||||
|
- Added support for racer `tabbed text` mode.
|
||||||
|
|
||||||
|
## 0.9.1
|
||||||
|
- Fixed bug with missing commands (@KalitaAlexey)
|
||||||
|
|
||||||
|
## 0.9.0
|
||||||
|
- Removed unnecessary warnings (@KalitaAlexey)
|
||||||
|
- Added some default key-bindings (@KalitaAlaexey)
|
||||||
|
|
||||||
|
## 0.8.0
|
||||||
|
- Added linting on save support (@White-Oak)
|
||||||
|
|
||||||
|
## 0.7.1
|
||||||
|
- Fixed bug with incorrect signature help (@henriiik)
|
||||||
|
|
||||||
|
## 0.7.0
|
||||||
|
- Added support for multiline function call signature help (@henriiik)
|
||||||
|
|
||||||
|
## 0.6.0
|
||||||
|
- Added cargo commands for examples (@KalitaAlexey)
|
||||||
|
|
||||||
|
## 0.5.5
|
||||||
|
- Fixed issue with racer crashing on parentheses (@saviorisdead)
|
||||||
|
|
||||||
|
## 0.5.4
|
||||||
|
- Show errors after failed `cargo build` (@henriiik)
|
||||||
|
|
||||||
|
## 0.5.0
|
||||||
|
- Added `cargo terminate` command (@Draivin)
|
||||||
|
|
||||||
|
## 0.4.4
|
||||||
|
- Added standard messaged for missing executables (@Draivin)
|
||||||
|
|
||||||
|
## 0.4.3
|
||||||
|
- Added `cargoPath` option to extenstion options (@saviorisdead)
|
||||||
|
|
||||||
|
## 0.4.2
|
||||||
|
- Clear diagnostic collection on cargo run (@saviorisdead)
|
||||||
|
|
||||||
|
## 0.4.1
|
||||||
|
- Spelling corrected (@skade, @CryZe, @crumblingstatue)
|
||||||
|
- Added `cargo check` command and diagnostic handling to editor (@Draivin)
|
||||||
|
- Added option to view full racer error and restart error automatically (@Draivin)
|
||||||
|
|
||||||
|
## 0.4.0
|
||||||
|
- Various fixes of rustfmt integration (@saviorisdead, @KalitaAlexey, @Draivin)
|
||||||
|
- Cargo commands integration (@saviorisdead)
|
||||||
|
- Tests for formatting (@Draivin)
|
||||||
|
|
||||||
|
## 0.3.3
|
||||||
|
- Fixed bug with formatting using 'rustfmt' (@Draivin)
|
22
.vscode/extensions/saviorisdead.RustyCode-0.18.0/LICENSE
vendored
Normal file
22
.vscode/extensions/saviorisdead.RustyCode-0.18.0/LICENSE
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 Constantine Akhantyev
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
80
.vscode/extensions/saviorisdead.RustyCode-0.18.0/README.md
vendored
Normal file
80
.vscode/extensions/saviorisdead.RustyCode-0.18.0/README.md
vendored
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
[![Build Status](https://travis-ci.org/saviorisdead/RustyCode.svg)](https://travis-ci.org/saviorisdead/RustyCode)
|
||||||
|
|
||||||
|
# Rust for Visual Studio Code (Latest: 0.18.0)
|
||||||
|
|
||||||
|
[Changelog](https://github.com/saviorisdead/RustyCode/blob/master/CHANGELOG.md)
|
||||||
|
|
||||||
|
[Roadmap](https://github.com/saviorisdead/RustyCode/blob/master/ROADMAP.md)
|
||||||
|
|
||||||
|
This extension adds advanced language support for the Rust language to VS Code, including:
|
||||||
|
|
||||||
|
- Autocompletion (using `racer`)
|
||||||
|
- Go To Definition (using `racer`)
|
||||||
|
- Go To Symbol (using `rustsym`)
|
||||||
|
- Format (using `rustfmt`)
|
||||||
|
- Linter *checkOnSave is experimental*
|
||||||
|
- Linting can be done via *checkWith is experimental*
|
||||||
|
- `check`. This is the default. Runs rust compiler but skips codegen pass.
|
||||||
|
- `check-lib`. As above, but is limited only to library if project has library + multiple binaries
|
||||||
|
- `clippy` if `cargo-clippy` is installed
|
||||||
|
- `build`
|
||||||
|
- Cargo tasks (Open Command Pallete and they will be there)
|
||||||
|
- Snippets
|
||||||
|
|
||||||
|
|
||||||
|
### IDE Features
|
||||||
|
![IDE](https://github.com/saviorisdead/RustyCode/raw/master/images/ide_features.png)
|
||||||
|
|
||||||
|
## Using
|
||||||
|
|
||||||
|
First, you will need to install Visual Studio Code `1.0` or newer. In the command pallete (`cmd-shift-p`) select `Install Extension` and choose `RustyCode`.
|
||||||
|
|
||||||
|
Then, you need to install Racer (instructions and source code [here](https://github.com/phildawes/racer)). Please, note that we only support latest versions of `Racer`.
|
||||||
|
|
||||||
|
Also, you need to install Rustfmt (instructions and source code [here](https://github.com/rust-lang-nursery/rustfmt))
|
||||||
|
|
||||||
|
And last step is downloading Rust language source files from [here](https://github.com/rust-lang/rust).
|
||||||
|
|
||||||
|
### Options
|
||||||
|
|
||||||
|
The following Visual Studio Code settings are available for the RustyCode extension. These can be set in user preferences or workspace settings (`.vscode/settings.json`)
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"rust.racerPath": null, // Specifies path to Racer binary if it's not in PATH
|
||||||
|
"rust.rustLangSrcPath": null, // Specifies path to /src directory of local copy of Rust sources
|
||||||
|
"rust.rustfmtPath": null, // Specifies path to Rustfmt binary if it's not in PATH
|
||||||
|
"rust.rustsymPath": null, // Specifies path to Rustsym binary if it's not in PATH
|
||||||
|
"rust.cargoPath": null, // Specifies path to Cargo binary if it's not in PATH
|
||||||
|
"rust.cargoHomePath": null, // Path to Cargo home directory, mostly needed for racer. Needed only if using custom rust installation.
|
||||||
|
"rust.formatOnSave": false, // Turn on/off autoformatting file on save (EXPERIMENTAL)
|
||||||
|
"rust.checkOnSave": false, // Turn on/off `cargo check` project on save (EXPERIMENTAL)
|
||||||
|
"rust.checkWith": "build", // Specifies the linter to use. (EXPERIMENTAL)
|
||||||
|
"rust.useJsonErrors": false, // Enable the use of JSON errors (requires Rust 1.7+). Note: This is an unstable feature of Rust and is still in the process of being stablised
|
||||||
|
"rust.useNewErrorFormat": false, // "Use the new Rust error format (RUST_NEW_ERROR_FORMAT=true). Note: This flag is mutually exclusive with `useJsonErrors`.
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building and Debugging the Extension
|
||||||
|
|
||||||
|
[Repository](https://github.com/saviorisdead/RustyCode)
|
||||||
|
|
||||||
|
You can set up a development enviroment for debugging the extension during extension development.
|
||||||
|
|
||||||
|
First make sure you do not have the extension installed in `~/.vscode/extensions`. Then clone the repo somewhere else on your machine, run `npm install` and open a development instance of Code.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm -rf ~/.vscode/extensions/RustyCode
|
||||||
|
cd ~
|
||||||
|
git clone https://github.com/saviorisdead/RustyCode
|
||||||
|
cd RustyCode
|
||||||
|
npm install
|
||||||
|
npm run-script compile
|
||||||
|
code .
|
||||||
|
```
|
||||||
|
|
||||||
|
You can now go to the Debug viewlet and select `Launch Extension` then hit run (`F5`).
|
||||||
|
If you make edits in the extension `.ts` files, just reload (`cmd-r`) the `[Extension Development Host]` instance of Code to load in the new extension code. The debugging instance will automatically reattach.
|
||||||
|
|
||||||
|
## License
|
||||||
|
[MIT](https://github.com/saviorisdead/RustyCode/blob/master/LICENSE)
|
4
.vscode/extensions/saviorisdead.RustyCode-0.18.0/ROADMAP.md
vendored
Normal file
4
.vscode/extensions/saviorisdead.RustyCode-0.18.0/ROADMAP.md
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
## Roadmap:
|
||||||
|
- Debugging
|
||||||
|
|
||||||
|
Pull requests with suggestions and implementations are welcome.
|
20
.vscode/extensions/saviorisdead.RustyCode-0.18.0/gulpfile.js
vendored
Normal file
20
.vscode/extensions/saviorisdead.RustyCode-0.18.0/gulpfile.js
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
var gulp = require('gulp');
|
||||||
|
var tslint = require('gulp-tslint');
|
||||||
|
var shell = require('gulp-shell');
|
||||||
|
|
||||||
|
var files = {
|
||||||
|
src: 'src/**/*.ts',
|
||||||
|
test: 'test/**/*.ts'
|
||||||
|
};
|
||||||
|
|
||||||
|
gulp.task('compile', shell.task([
|
||||||
|
'node ./node_modules/vscode/bin/compile -p ./'
|
||||||
|
]));
|
||||||
|
|
||||||
|
gulp.task('tslint', function() {
|
||||||
|
return gulp.src([files.src, files.test, '!test/index.ts'])
|
||||||
|
.pipe(tslint())
|
||||||
|
.pipe(tslint.report('verbose'));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('default', ['compile', 'tslint']);
|
BIN
.vscode/extensions/saviorisdead.RustyCode-0.18.0/images/icon.png
vendored
Normal file
BIN
.vscode/extensions/saviorisdead.RustyCode-0.18.0/images/icon.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.6 KiB |
BIN
.vscode/extensions/saviorisdead.RustyCode-0.18.0/images/ide_features.png
vendored
Normal file
BIN
.vscode/extensions/saviorisdead.RustyCode-0.18.0/images/ide_features.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 49 KiB |
499
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/_mocha
generated
vendored
Executable file
499
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/_mocha
generated
vendored
Executable file
|
@ -0,0 +1,499 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module dependencies.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var program = require('commander'),
|
||||||
|
path = require('path'),
|
||||||
|
fs = require('fs'),
|
||||||
|
resolve = path.resolve,
|
||||||
|
exists = fs.existsSync || path.existsSync,
|
||||||
|
Mocha = require('../'),
|
||||||
|
utils = Mocha.utils,
|
||||||
|
join = path.join,
|
||||||
|
cwd = process.cwd(),
|
||||||
|
getOptions = require('./options'),
|
||||||
|
mocha = new Mocha;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save timer references to avoid Sinon interfering (see GH-237).
|
||||||
|
*/
|
||||||
|
|
||||||
|
var Date = global.Date
|
||||||
|
, setTimeout = global.setTimeout
|
||||||
|
, setInterval = global.setInterval
|
||||||
|
, clearTimeout = global.clearTimeout
|
||||||
|
, clearInterval = global.clearInterval;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Files.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var files = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Globals.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var globals = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Requires.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var requires = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Images.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var images = {
|
||||||
|
fail: __dirname + '/../images/error.png'
|
||||||
|
, pass: __dirname + '/../images/ok.png'
|
||||||
|
};
|
||||||
|
|
||||||
|
// options
|
||||||
|
|
||||||
|
program
|
||||||
|
.version(JSON.parse(fs.readFileSync(__dirname + '/../package.json', 'utf8')).version)
|
||||||
|
.usage('[debug] [options] [files]')
|
||||||
|
.option('-A, --async-only', "force all tests to take a callback (async) or return a promise")
|
||||||
|
.option('-c, --colors', 'force enabling of colors')
|
||||||
|
.option('-C, --no-colors', 'force disabling of colors')
|
||||||
|
.option('-G, --growl', 'enable growl notification support')
|
||||||
|
.option('-O, --reporter-options <k=v,k2=v2,...>', 'reporter-specific options')
|
||||||
|
.option('-R, --reporter <name>', 'specify the reporter to use', 'spec')
|
||||||
|
.option('-S, --sort', "sort test files")
|
||||||
|
.option('-b, --bail', "bail after first test failure")
|
||||||
|
.option('-d, --debug', "enable node's debugger, synonym for node --debug")
|
||||||
|
.option('-g, --grep <pattern>', 'only run tests matching <pattern>')
|
||||||
|
.option('-f, --fgrep <string>', 'only run tests containing <string>')
|
||||||
|
.option('-gc, --expose-gc', 'expose gc extension')
|
||||||
|
.option('-i, --invert', 'inverts --grep and --fgrep matches')
|
||||||
|
.option('-r, --require <name>', 'require the given module')
|
||||||
|
.option('-s, --slow <ms>', '"slow" test threshold in milliseconds [75]')
|
||||||
|
.option('-t, --timeout <ms>', 'set test-case timeout in milliseconds [2000]')
|
||||||
|
.option('-u, --ui <name>', 'specify user-interface (bdd|tdd|exports)', 'bdd')
|
||||||
|
.option('-w, --watch', 'watch files for changes')
|
||||||
|
.option('--check-leaks', 'check for global variable leaks')
|
||||||
|
.option('--full-trace', 'display the full stack trace')
|
||||||
|
.option('--compilers <ext>:<module>,...', 'use the given module(s) to compile files', list, [])
|
||||||
|
.option('--debug-brk', "enable node's debugger breaking on the first line")
|
||||||
|
.option('--globals <names>', 'allow the given comma-delimited global [names]', list, [])
|
||||||
|
.option('--es_staging', 'enable all staged features')
|
||||||
|
.option('--harmony<_classes,_generators,...>', 'all node --harmony* flags are available')
|
||||||
|
.option('--inline-diffs', 'display actual/expected differences inline within each string')
|
||||||
|
.option('--interfaces', 'display available interfaces')
|
||||||
|
.option('--no-deprecation', 'silence deprecation warnings')
|
||||||
|
.option('--no-exit', 'require a clean shutdown of the event loop: mocha will not call process.exit')
|
||||||
|
.option('--no-timeouts', 'disables timeouts, given implicitly with --debug')
|
||||||
|
.option('--opts <path>', 'specify opts path', 'test/mocha.opts')
|
||||||
|
.option('--perf-basic-prof', 'enable perf linux profiler (basic support)')
|
||||||
|
.option('--prof', 'log statistical profiling information')
|
||||||
|
.option('--log-timer-events', 'Time events including external callbacks')
|
||||||
|
.option('--recursive', 'include sub directories')
|
||||||
|
.option('--reporters', 'display available reporters')
|
||||||
|
.option('--retries <times>', 'set numbers of time to retry a failed test case')
|
||||||
|
.option('--throw-deprecation', 'throw an exception anytime a deprecated function is used')
|
||||||
|
.option('--trace', 'trace function calls')
|
||||||
|
.option('--trace-deprecation', 'show stack traces on deprecations')
|
||||||
|
.option('--use_strict', 'enforce strict mode')
|
||||||
|
.option('--watch-extensions <ext>,...', 'additional extensions to monitor with --watch', list, [])
|
||||||
|
.option('--delay', 'wait for async suite definition')
|
||||||
|
|
||||||
|
program.name = 'mocha';
|
||||||
|
|
||||||
|
// init command
|
||||||
|
|
||||||
|
program
|
||||||
|
.command('init <path>')
|
||||||
|
.description('initialize a client-side mocha setup at <path>')
|
||||||
|
.action(function(path){
|
||||||
|
var mkdir = require('mkdirp');
|
||||||
|
mkdir.sync(path);
|
||||||
|
var css = fs.readFileSync(join(__dirname, '..', 'mocha.css'));
|
||||||
|
var js = fs.readFileSync(join(__dirname, '..', 'mocha.js'));
|
||||||
|
var tmpl = fs.readFileSync(join(__dirname, '..', 'lib/template.html'));
|
||||||
|
fs.writeFileSync(join(path, 'mocha.css'), css);
|
||||||
|
fs.writeFileSync(join(path, 'mocha.js'), js);
|
||||||
|
fs.writeFileSync(join(path, 'tests.js'), '');
|
||||||
|
fs.writeFileSync(join(path, 'index.html'), tmpl);
|
||||||
|
process.exit(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
// --globals
|
||||||
|
|
||||||
|
program.on('globals', function(val){
|
||||||
|
globals = globals.concat(list(val));
|
||||||
|
});
|
||||||
|
|
||||||
|
// --reporters
|
||||||
|
|
||||||
|
program.on('reporters', function(){
|
||||||
|
console.log();
|
||||||
|
console.log(' dot - dot matrix');
|
||||||
|
console.log(' doc - html documentation');
|
||||||
|
console.log(' spec - hierarchical spec list');
|
||||||
|
console.log(' json - single json object');
|
||||||
|
console.log(' progress - progress bar');
|
||||||
|
console.log(' list - spec-style listing');
|
||||||
|
console.log(' tap - test-anything-protocol');
|
||||||
|
console.log(' landing - unicode landing strip');
|
||||||
|
console.log(' xunit - xunit reporter');
|
||||||
|
console.log(' html-cov - HTML test coverage');
|
||||||
|
console.log(' json-cov - JSON test coverage');
|
||||||
|
console.log(' min - minimal reporter (great with --watch)');
|
||||||
|
console.log(' json-stream - newline delimited json events');
|
||||||
|
console.log(' markdown - markdown documentation (github flavour)');
|
||||||
|
console.log(' nyan - nyan cat!');
|
||||||
|
console.log();
|
||||||
|
process.exit();
|
||||||
|
});
|
||||||
|
|
||||||
|
// --interfaces
|
||||||
|
|
||||||
|
program.on('interfaces', function(){
|
||||||
|
console.log('');
|
||||||
|
console.log(' bdd');
|
||||||
|
console.log(' tdd');
|
||||||
|
console.log(' qunit');
|
||||||
|
console.log(' exports');
|
||||||
|
console.log('');
|
||||||
|
process.exit();
|
||||||
|
});
|
||||||
|
|
||||||
|
// -r, --require
|
||||||
|
|
||||||
|
module.paths.push(cwd, join(cwd, 'node_modules'));
|
||||||
|
|
||||||
|
program.on('require', function(mod){
|
||||||
|
var abs = exists(mod) || exists(mod + '.js');
|
||||||
|
if (abs) mod = resolve(mod);
|
||||||
|
requires.push(mod);
|
||||||
|
});
|
||||||
|
|
||||||
|
// If not already done, load mocha.opts
|
||||||
|
if (!process.env.LOADED_MOCHA_OPTS) {
|
||||||
|
getOptions();
|
||||||
|
}
|
||||||
|
|
||||||
|
// parse args
|
||||||
|
|
||||||
|
program.parse(process.argv);
|
||||||
|
|
||||||
|
// infinite stack traces
|
||||||
|
|
||||||
|
Error.stackTraceLimit = Infinity; // TODO: config
|
||||||
|
|
||||||
|
// reporter options
|
||||||
|
|
||||||
|
var reporterOptions = {};
|
||||||
|
if (program.reporterOptions !== undefined) {
|
||||||
|
program.reporterOptions.split(",").forEach(function(opt) {
|
||||||
|
var L = opt.split("=");
|
||||||
|
if (L.length > 2 || L.length === 0) {
|
||||||
|
throw new Error("invalid reporter option '" + opt + "'");
|
||||||
|
} else if (L.length === 2) {
|
||||||
|
reporterOptions[L[0]] = L[1];
|
||||||
|
} else {
|
||||||
|
reporterOptions[L[0]] = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// reporter
|
||||||
|
|
||||||
|
mocha.reporter(program.reporter, reporterOptions);
|
||||||
|
|
||||||
|
// load reporter
|
||||||
|
|
||||||
|
var Reporter = null;
|
||||||
|
try {
|
||||||
|
Reporter = require('../lib/reporters/' + program.reporter);
|
||||||
|
} catch (err) {
|
||||||
|
try {
|
||||||
|
Reporter = require(program.reporter);
|
||||||
|
} catch (err) {
|
||||||
|
throw new Error('reporter "' + program.reporter + '" does not exist');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --no-colors
|
||||||
|
|
||||||
|
if (!program.colors) mocha.useColors(false);
|
||||||
|
|
||||||
|
// --colors
|
||||||
|
|
||||||
|
if (~process.argv.indexOf('--colors') ||
|
||||||
|
~process.argv.indexOf('-c')) {
|
||||||
|
mocha.useColors(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// --inline-diffs
|
||||||
|
|
||||||
|
if (program.inlineDiffs) mocha.useInlineDiffs(true);
|
||||||
|
|
||||||
|
// --slow <ms>
|
||||||
|
|
||||||
|
if (program.slow) mocha.suite.slow(program.slow);
|
||||||
|
|
||||||
|
// --no-timeouts
|
||||||
|
|
||||||
|
if (!program.timeouts) mocha.enableTimeouts(false);
|
||||||
|
|
||||||
|
// --timeout
|
||||||
|
|
||||||
|
if (program.timeout) mocha.suite.timeout(program.timeout);
|
||||||
|
|
||||||
|
// --bail
|
||||||
|
|
||||||
|
mocha.suite.bail(program.bail);
|
||||||
|
|
||||||
|
// --grep
|
||||||
|
|
||||||
|
if (program.grep) mocha.grep(new RegExp(program.grep));
|
||||||
|
|
||||||
|
// --fgrep
|
||||||
|
|
||||||
|
if (program.fgrep) mocha.grep(program.fgrep);
|
||||||
|
|
||||||
|
// --invert
|
||||||
|
|
||||||
|
if (program.invert) mocha.invert();
|
||||||
|
|
||||||
|
// --check-leaks
|
||||||
|
|
||||||
|
if (program.checkLeaks) mocha.checkLeaks();
|
||||||
|
|
||||||
|
// --stack-trace
|
||||||
|
|
||||||
|
if(program.fullTrace) mocha.fullTrace();
|
||||||
|
|
||||||
|
// --growl
|
||||||
|
|
||||||
|
if (program.growl) mocha.growl();
|
||||||
|
|
||||||
|
// --async-only
|
||||||
|
|
||||||
|
if (program.asyncOnly) mocha.asyncOnly();
|
||||||
|
|
||||||
|
// --delay
|
||||||
|
|
||||||
|
if (program.delay) mocha.delay();
|
||||||
|
|
||||||
|
// --globals
|
||||||
|
|
||||||
|
mocha.globals(globals);
|
||||||
|
|
||||||
|
// --retries
|
||||||
|
|
||||||
|
if (program.retries) mocha.suite.retries(program.retries);
|
||||||
|
|
||||||
|
// custom compiler support
|
||||||
|
|
||||||
|
var extensions = ['js'];
|
||||||
|
program.compilers.forEach(function(c) {
|
||||||
|
var compiler = c.split(':')
|
||||||
|
, ext = compiler[0]
|
||||||
|
, mod = compiler[1];
|
||||||
|
|
||||||
|
if (mod[0] == '.') mod = join(process.cwd(), mod);
|
||||||
|
require(mod);
|
||||||
|
extensions.push(ext);
|
||||||
|
program.watchExtensions.push(ext);
|
||||||
|
});
|
||||||
|
|
||||||
|
// requires
|
||||||
|
|
||||||
|
requires.forEach(function(mod) {
|
||||||
|
require(mod);
|
||||||
|
});
|
||||||
|
|
||||||
|
// interface
|
||||||
|
|
||||||
|
mocha.ui(program.ui);
|
||||||
|
|
||||||
|
//args
|
||||||
|
|
||||||
|
var args = program.args;
|
||||||
|
|
||||||
|
// default files to test/*.{js,coffee}
|
||||||
|
|
||||||
|
if (!args.length) args.push('test');
|
||||||
|
|
||||||
|
args.forEach(function(arg){
|
||||||
|
files = files.concat(utils.lookupFiles(arg, extensions, program.recursive));
|
||||||
|
});
|
||||||
|
|
||||||
|
// resolve
|
||||||
|
|
||||||
|
files = files.map(function(path){
|
||||||
|
return resolve(path);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (program.sort) {
|
||||||
|
files.sort();
|
||||||
|
}
|
||||||
|
|
||||||
|
// --watch
|
||||||
|
|
||||||
|
var runner;
|
||||||
|
if (program.watch) {
|
||||||
|
console.log();
|
||||||
|
hideCursor();
|
||||||
|
process.on('SIGINT', function(){
|
||||||
|
showCursor();
|
||||||
|
console.log('\n');
|
||||||
|
process.exit();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
var watchFiles = utils.files(cwd, [ 'js' ].concat(program.watchExtensions));
|
||||||
|
var runAgain = false;
|
||||||
|
|
||||||
|
function loadAndRun() {
|
||||||
|
try {
|
||||||
|
mocha.files = files;
|
||||||
|
runAgain = false;
|
||||||
|
runner = mocha.run(function(){
|
||||||
|
runner = null;
|
||||||
|
if (runAgain) {
|
||||||
|
rerun();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch(e) {
|
||||||
|
console.log(e.stack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function purge() {
|
||||||
|
watchFiles.forEach(function(file){
|
||||||
|
delete require.cache[file];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
loadAndRun();
|
||||||
|
|
||||||
|
function rerun() {
|
||||||
|
purge();
|
||||||
|
stop()
|
||||||
|
if (!program.grep)
|
||||||
|
mocha.grep(null);
|
||||||
|
mocha.suite = mocha.suite.clone();
|
||||||
|
mocha.suite.ctx = new Mocha.Context;
|
||||||
|
mocha.ui(program.ui);
|
||||||
|
loadAndRun();
|
||||||
|
}
|
||||||
|
|
||||||
|
utils.watch(watchFiles, function(){
|
||||||
|
runAgain = true;
|
||||||
|
if (runner) {
|
||||||
|
runner.abort();
|
||||||
|
} else {
|
||||||
|
rerun();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// load
|
||||||
|
|
||||||
|
mocha.files = files;
|
||||||
|
runner = mocha.run(program.exit ? exit : exitLater);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function exitLater(code) {
|
||||||
|
process.on('exit', function() { process.exit(code) })
|
||||||
|
}
|
||||||
|
|
||||||
|
function exit(code) {
|
||||||
|
// flush output for Node.js Windows pipe bug
|
||||||
|
// https://github.com/joyent/node/issues/6247 is just one bug example
|
||||||
|
// https://github.com/visionmedia/mocha/issues/333 has a good discussion
|
||||||
|
function done() {
|
||||||
|
if (!(draining--)) process.exit(code);
|
||||||
|
}
|
||||||
|
|
||||||
|
var draining = 0;
|
||||||
|
var streams = [process.stdout, process.stderr];
|
||||||
|
|
||||||
|
streams.forEach(function(stream){
|
||||||
|
// submit empty write request and wait for completion
|
||||||
|
draining += 1;
|
||||||
|
stream.write('', done);
|
||||||
|
});
|
||||||
|
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
|
process.on('SIGINT', function() { runner.abort(); })
|
||||||
|
|
||||||
|
// enable growl notifications
|
||||||
|
|
||||||
|
function growl(runner, reporter) {
|
||||||
|
var notify = require('growl');
|
||||||
|
|
||||||
|
runner.on('end', function(){
|
||||||
|
var stats = reporter.stats;
|
||||||
|
if (stats.failures) {
|
||||||
|
var msg = stats.failures + ' of ' + runner.total + ' tests failed';
|
||||||
|
notify(msg, { name: 'mocha', title: 'Failed', image: images.fail });
|
||||||
|
} else {
|
||||||
|
notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', {
|
||||||
|
name: 'mocha'
|
||||||
|
, title: 'Passed'
|
||||||
|
, image: images.pass
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse list.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function list(str) {
|
||||||
|
return str.split(/ *, */);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hide the cursor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function hideCursor(){
|
||||||
|
process.stdout.write('\u001b[?25l');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the cursor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function showCursor(){
|
||||||
|
process.stdout.write('\u001b[?25h');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop play()ing.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function stop() {
|
||||||
|
process.stdout.write('\u001b[2K');
|
||||||
|
clearInterval(play.timer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Play the given array of strings.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function play(arr, interval) {
|
||||||
|
var len = arr.length
|
||||||
|
, interval = interval || 100
|
||||||
|
, i = 0;
|
||||||
|
|
||||||
|
play.timer = setInterval(function(){
|
||||||
|
var str = arr[i++ % len];
|
||||||
|
process.stdout.write('\u001b[0G' + str);
|
||||||
|
}, interval);
|
||||||
|
}
|
75
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/dateformat
generated
vendored
Executable file
75
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/dateformat
generated
vendored
Executable file
|
@ -0,0 +1,75 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
/**
|
||||||
|
* dateformat <https://github.com/felixge/node-dateformat>
|
||||||
|
*
|
||||||
|
* Copyright (c) 2014 Charlike Mike Reagent (cli), contributors.
|
||||||
|
* Released under the MIT license.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module dependencies.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var dateFormat = require('../lib/dateformat');
|
||||||
|
var meow = require('meow');
|
||||||
|
var stdin = require('get-stdin');
|
||||||
|
|
||||||
|
var cli = meow({
|
||||||
|
pkg: '../package.json',
|
||||||
|
help: [
|
||||||
|
'Options',
|
||||||
|
' --help Show this help',
|
||||||
|
' --version Current version of package',
|
||||||
|
' -d | --date Date that want to format (Date object as Number or String)',
|
||||||
|
' -m | --mask Mask that will use to format the date',
|
||||||
|
' -u | --utc Convert local time to UTC time or use `UTC:` prefix in mask',
|
||||||
|
' -g | --gmt You can use `GMT:` prefix in mask',
|
||||||
|
'',
|
||||||
|
'Usage',
|
||||||
|
' dateformat [date] [mask]',
|
||||||
|
' dateformat "Nov 26 2014" "fullDate"',
|
||||||
|
' dateformat 1416985417095 "dddd, mmmm dS, yyyy, h:MM:ss TT"',
|
||||||
|
' dateformat 1315361943159 "W"',
|
||||||
|
' dateformat "UTC:h:MM:ss TT Z"',
|
||||||
|
' dateformat "longTime" true',
|
||||||
|
' dateformat "longTime" false true',
|
||||||
|
' dateformat "Jun 9 2007" "fullDate" true',
|
||||||
|
' date +%s | dateformat',
|
||||||
|
''
|
||||||
|
].join('\n')
|
||||||
|
})
|
||||||
|
|
||||||
|
var date = cli.input[0] || cli.flags.d || cli.flags.date || Date.now();
|
||||||
|
var mask = cli.input[1] || cli.flags.m || cli.flags.mask || dateFormat.masks.default;
|
||||||
|
var utc = cli.input[2] || cli.flags.u || cli.flags.utc || false;
|
||||||
|
var gmt = cli.input[3] || cli.flags.g || cli.flags.gmt || false;
|
||||||
|
|
||||||
|
utc = utc === 'true' ? true : false;
|
||||||
|
gmt = gmt === 'true' ? true : false;
|
||||||
|
|
||||||
|
if (!cli.input.length) {
|
||||||
|
stdin(function(date) {
|
||||||
|
console.log(dateFormat(date, dateFormat.masks.default, utc, gmt));
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cli.input.length === 1 && date) {
|
||||||
|
mask = date;
|
||||||
|
date = Date.now();
|
||||||
|
console.log(dateFormat(date, mask, utc, gmt));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cli.input.length >= 2 && date && mask) {
|
||||||
|
if (mask === 'true' || mask === 'false') {
|
||||||
|
utc = mask === 'true' ? true : false;
|
||||||
|
gmt = !utc;
|
||||||
|
mask = date
|
||||||
|
date = Date.now();
|
||||||
|
}
|
||||||
|
console.log(dateFormat(date, mask, utc, gmt));
|
||||||
|
return;
|
||||||
|
}
|
212
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/gulp
generated
vendored
Executable file
212
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/gulp
generated
vendored
Executable file
|
@ -0,0 +1,212 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
var gutil = require('gulp-util');
|
||||||
|
var prettyTime = require('pretty-hrtime');
|
||||||
|
var chalk = require('chalk');
|
||||||
|
var semver = require('semver');
|
||||||
|
var archy = require('archy');
|
||||||
|
var Liftoff = require('liftoff');
|
||||||
|
var tildify = require('tildify');
|
||||||
|
var interpret = require('interpret');
|
||||||
|
var v8flags = require('v8flags');
|
||||||
|
var completion = require('../lib/completion');
|
||||||
|
var argv = require('minimist')(process.argv.slice(2));
|
||||||
|
var taskTree = require('../lib/taskTree');
|
||||||
|
|
||||||
|
// Set env var for ORIGINAL cwd
|
||||||
|
// before anything touches it
|
||||||
|
process.env.INIT_CWD = process.cwd();
|
||||||
|
|
||||||
|
var cli = new Liftoff({
|
||||||
|
name: 'gulp',
|
||||||
|
completions: completion,
|
||||||
|
extensions: interpret.jsVariants,
|
||||||
|
v8flags: v8flags,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Exit with 0 or 1
|
||||||
|
var failed = false;
|
||||||
|
process.once('exit', function(code) {
|
||||||
|
if (code === 0 && failed) {
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Parse those args m8
|
||||||
|
var cliPackage = require('../package');
|
||||||
|
var versionFlag = argv.v || argv.version;
|
||||||
|
var tasksFlag = argv.T || argv.tasks;
|
||||||
|
var tasks = argv._;
|
||||||
|
var toRun = tasks.length ? tasks : ['default'];
|
||||||
|
|
||||||
|
// This is a hold-over until we have a better logging system
|
||||||
|
// with log levels
|
||||||
|
var simpleTasksFlag = argv['tasks-simple'];
|
||||||
|
var shouldLog = !argv.silent && !simpleTasksFlag;
|
||||||
|
|
||||||
|
if (!shouldLog) {
|
||||||
|
gutil.log = function() {};
|
||||||
|
}
|
||||||
|
|
||||||
|
cli.on('require', function(name) {
|
||||||
|
gutil.log('Requiring external module', chalk.magenta(name));
|
||||||
|
});
|
||||||
|
|
||||||
|
cli.on('requireFail', function(name) {
|
||||||
|
gutil.log(chalk.red('Failed to load external module'), chalk.magenta(name));
|
||||||
|
});
|
||||||
|
|
||||||
|
cli.on('respawn', function(flags, child) {
|
||||||
|
var nodeFlags = chalk.magenta(flags.join(', '));
|
||||||
|
var pid = chalk.magenta(child.pid);
|
||||||
|
gutil.log('Node flags detected:', nodeFlags);
|
||||||
|
gutil.log('Respawned to PID:', pid);
|
||||||
|
});
|
||||||
|
|
||||||
|
cli.launch({
|
||||||
|
cwd: argv.cwd,
|
||||||
|
configPath: argv.gulpfile,
|
||||||
|
require: argv.require,
|
||||||
|
completion: argv.completion,
|
||||||
|
}, handleArguments);
|
||||||
|
|
||||||
|
// The actual logic
|
||||||
|
function handleArguments(env) {
|
||||||
|
if (versionFlag && tasks.length === 0) {
|
||||||
|
gutil.log('CLI version', cliPackage.version);
|
||||||
|
if (env.modulePackage && typeof env.modulePackage.version !== 'undefined') {
|
||||||
|
gutil.log('Local version', env.modulePackage.version);
|
||||||
|
}
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!env.modulePath) {
|
||||||
|
gutil.log(
|
||||||
|
chalk.red('Local gulp not found in'),
|
||||||
|
chalk.magenta(tildify(env.cwd))
|
||||||
|
);
|
||||||
|
gutil.log(chalk.red('Try running: npm install gulp'));
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!env.configPath) {
|
||||||
|
gutil.log(chalk.red('No gulpfile found'));
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for semver difference between cli and local installation
|
||||||
|
if (semver.gt(cliPackage.version, env.modulePackage.version)) {
|
||||||
|
gutil.log(chalk.red('Warning: gulp version mismatch:'));
|
||||||
|
gutil.log(chalk.red('Global gulp is', cliPackage.version));
|
||||||
|
gutil.log(chalk.red('Local gulp is', env.modulePackage.version));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Chdir before requiring gulpfile to make sure
|
||||||
|
// we let them chdir as needed
|
||||||
|
if (process.cwd() !== env.cwd) {
|
||||||
|
process.chdir(env.cwd);
|
||||||
|
gutil.log(
|
||||||
|
'Working directory changed to',
|
||||||
|
chalk.magenta(tildify(env.cwd))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is what actually loads up the gulpfile
|
||||||
|
require(env.configPath);
|
||||||
|
gutil.log('Using gulpfile', chalk.magenta(tildify(env.configPath)));
|
||||||
|
|
||||||
|
var gulpInst = require(env.modulePath);
|
||||||
|
logEvents(gulpInst);
|
||||||
|
|
||||||
|
process.nextTick(function() {
|
||||||
|
if (simpleTasksFlag) {
|
||||||
|
return logTasksSimple(env, gulpInst);
|
||||||
|
}
|
||||||
|
if (tasksFlag) {
|
||||||
|
return logTasks(env, gulpInst);
|
||||||
|
}
|
||||||
|
gulpInst.start.apply(gulpInst, toRun);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function logTasks(env, localGulp) {
|
||||||
|
var tree = taskTree(localGulp.tasks);
|
||||||
|
tree.label = 'Tasks for ' + chalk.magenta(tildify(env.configPath));
|
||||||
|
archy(tree)
|
||||||
|
.split('\n')
|
||||||
|
.forEach(function(v) {
|
||||||
|
if (v.trim().length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
gutil.log(v);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function logTasksSimple(env, localGulp) {
|
||||||
|
console.log(Object.keys(localGulp.tasks)
|
||||||
|
.join('\n')
|
||||||
|
.trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Format orchestrator errors
|
||||||
|
function formatError(e) {
|
||||||
|
if (!e.err) {
|
||||||
|
return e.message;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PluginError
|
||||||
|
if (typeof e.err.showStack === 'boolean') {
|
||||||
|
return e.err.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Normal error
|
||||||
|
if (e.err.stack) {
|
||||||
|
return e.err.stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unknown (string, number, etc.)
|
||||||
|
return new Error(String(e.err)).stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wire up logging events
|
||||||
|
function logEvents(gulpInst) {
|
||||||
|
|
||||||
|
// Total hack due to poor error management in orchestrator
|
||||||
|
gulpInst.on('err', function() {
|
||||||
|
failed = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
gulpInst.on('task_start', function(e) {
|
||||||
|
// TODO: batch these
|
||||||
|
// so when 5 tasks start at once it only logs one time with all 5
|
||||||
|
gutil.log('Starting', '\'' + chalk.cyan(e.task) + '\'...');
|
||||||
|
});
|
||||||
|
|
||||||
|
gulpInst.on('task_stop', function(e) {
|
||||||
|
var time = prettyTime(e.hrDuration);
|
||||||
|
gutil.log(
|
||||||
|
'Finished', '\'' + chalk.cyan(e.task) + '\'',
|
||||||
|
'after', chalk.magenta(time)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulpInst.on('task_err', function(e) {
|
||||||
|
var msg = formatError(e);
|
||||||
|
var time = prettyTime(e.hrDuration);
|
||||||
|
gutil.log(
|
||||||
|
'\'' + chalk.cyan(e.task) + '\'',
|
||||||
|
chalk.red('errored after'),
|
||||||
|
chalk.magenta(time)
|
||||||
|
);
|
||||||
|
gutil.log(msg);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulpInst.on('task_not_found', function(err) {
|
||||||
|
gutil.log(
|
||||||
|
chalk.red('Task \'' + err.task + '\' is not in your gulpfile')
|
||||||
|
);
|
||||||
|
gutil.log('Please check the documentation for proper gulpfile formatting');
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
}
|
45
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/har-validator
generated
vendored
Executable file
45
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/har-validator
generated
vendored
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
var Promise = require('bluebird')
|
||||||
|
|
||||||
|
var chalk = require('chalk')
|
||||||
|
var cmd = require('commander')
|
||||||
|
var fs = Promise.promisifyAll(require('fs'))
|
||||||
|
var path = require('path')
|
||||||
|
var pkg = require('../package.json')
|
||||||
|
var validate = Promise.promisifyAll(require('..'))
|
||||||
|
|
||||||
|
cmd
|
||||||
|
.version(pkg.version)
|
||||||
|
.usage('[options] <files ...>')
|
||||||
|
.option('-s, --schema [name]', 'validate schema name (log, request, response, etc ...)')
|
||||||
|
.parse(process.argv)
|
||||||
|
|
||||||
|
if (!cmd.args.length) {
|
||||||
|
cmd.help()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!cmd.schema) {
|
||||||
|
cmd.schema = 'har'
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd.args.map(function (fileName) {
|
||||||
|
var file = chalk.yellow.italic(path.basename(fileName))
|
||||||
|
|
||||||
|
fs.readFileAsync(fileName)
|
||||||
|
.then(JSON.parse)
|
||||||
|
.then(validate[cmd.schema + 'Async'])
|
||||||
|
.then(function () {
|
||||||
|
console.log('%s [%s] is valid', chalk.green('✓'), file)
|
||||||
|
})
|
||||||
|
.catch(SyntaxError, function (e) {
|
||||||
|
console.error('%s [%s] failed to read JSON: %s', chalk.red('✖'), file, chalk.red(e.message))
|
||||||
|
})
|
||||||
|
.catch(function (e) {
|
||||||
|
e.errors.map(function (err) {
|
||||||
|
console.error('%s [%s] failed validation: (%s: %s) %s', chalk.red('✖'), file, chalk.cyan.italic(err.field), chalk.magenta.italic(err.value), chalk.red(err.message))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
147
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/jade
generated
vendored
Executable file
147
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/jade
generated
vendored
Executable file
|
@ -0,0 +1,147 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module dependencies.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var fs = require('fs')
|
||||||
|
, program = require('commander')
|
||||||
|
, path = require('path')
|
||||||
|
, basename = path.basename
|
||||||
|
, dirname = path.dirname
|
||||||
|
, resolve = path.resolve
|
||||||
|
, join = path.join
|
||||||
|
, mkdirp = require('mkdirp')
|
||||||
|
, jade = require('../');
|
||||||
|
|
||||||
|
// jade options
|
||||||
|
|
||||||
|
var options = {};
|
||||||
|
|
||||||
|
// options
|
||||||
|
|
||||||
|
program
|
||||||
|
.version(jade.version)
|
||||||
|
.usage('[options] [dir|file ...]')
|
||||||
|
.option('-o, --obj <str>', 'javascript options object')
|
||||||
|
.option('-O, --out <dir>', 'output the compiled html to <dir>')
|
||||||
|
.option('-p, --path <path>', 'filename used to resolve includes')
|
||||||
|
.option('-P, --pretty', 'compile pretty html output')
|
||||||
|
.option('-c, --client', 'compile for client-side runtime.js')
|
||||||
|
.option('-D, --no-debug', 'compile without debugging (smaller functions)')
|
||||||
|
|
||||||
|
program.on('--help', function(){
|
||||||
|
console.log(' Examples:');
|
||||||
|
console.log('');
|
||||||
|
console.log(' # translate jade the templates dir');
|
||||||
|
console.log(' $ jade templates');
|
||||||
|
console.log('');
|
||||||
|
console.log(' # create {foo,bar}.html');
|
||||||
|
console.log(' $ jade {foo,bar}.jade');
|
||||||
|
console.log('');
|
||||||
|
console.log(' # jade over stdio');
|
||||||
|
console.log(' $ jade < my.jade > my.html');
|
||||||
|
console.log('');
|
||||||
|
console.log(' # jade over stdio');
|
||||||
|
console.log(' $ echo "h1 Jade!" | jade');
|
||||||
|
console.log('');
|
||||||
|
console.log(' # foo, bar dirs rendering to /tmp');
|
||||||
|
console.log(' $ jade foo bar --out /tmp ');
|
||||||
|
console.log('');
|
||||||
|
});
|
||||||
|
|
||||||
|
program.parse(process.argv);
|
||||||
|
|
||||||
|
// options given, parse them
|
||||||
|
|
||||||
|
if (program.obj) options = eval('(' + program.obj + ')');
|
||||||
|
|
||||||
|
// --filename
|
||||||
|
|
||||||
|
if (program.path) options.filename = program.path;
|
||||||
|
|
||||||
|
// --no-debug
|
||||||
|
|
||||||
|
options.compileDebug = program.debug;
|
||||||
|
|
||||||
|
// --client
|
||||||
|
|
||||||
|
options.client = program.client;
|
||||||
|
|
||||||
|
// --pretty
|
||||||
|
|
||||||
|
options.pretty = program.pretty;
|
||||||
|
|
||||||
|
// left-over args are file paths
|
||||||
|
|
||||||
|
var files = program.args;
|
||||||
|
|
||||||
|
// compile files
|
||||||
|
|
||||||
|
if (files.length) {
|
||||||
|
console.log();
|
||||||
|
files.forEach(renderFile);
|
||||||
|
process.on('exit', console.log);
|
||||||
|
// stdio
|
||||||
|
} else {
|
||||||
|
stdin();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compile from stdin.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function stdin() {
|
||||||
|
var buf = '';
|
||||||
|
process.stdin.setEncoding('utf8');
|
||||||
|
process.stdin.on('data', function(chunk){ buf += chunk; });
|
||||||
|
process.stdin.on('end', function(){
|
||||||
|
var fn = jade.compile(buf, options);
|
||||||
|
var output = options.client
|
||||||
|
? fn.toString()
|
||||||
|
: fn(options);
|
||||||
|
process.stdout.write(output);
|
||||||
|
}).resume();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process the given path, compiling the jade files found.
|
||||||
|
* Always walk the subdirectories.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function renderFile(path) {
|
||||||
|
var re = /\.jade$/;
|
||||||
|
fs.lstat(path, function(err, stat) {
|
||||||
|
if (err) throw err;
|
||||||
|
// Found jade file
|
||||||
|
if (stat.isFile() && re.test(path)) {
|
||||||
|
fs.readFile(path, 'utf8', function(err, str){
|
||||||
|
if (err) throw err;
|
||||||
|
options.filename = path;
|
||||||
|
var fn = jade.compile(str, options);
|
||||||
|
var extname = options.client ? '.js' : '.html';
|
||||||
|
path = path.replace(re, extname);
|
||||||
|
if (program.out) path = join(program.out, basename(path));
|
||||||
|
var dir = resolve(dirname(path));
|
||||||
|
mkdirp(dir, 0755, function(err){
|
||||||
|
if (err) throw err;
|
||||||
|
var output = options.client
|
||||||
|
? fn.toString()
|
||||||
|
: fn(options);
|
||||||
|
fs.writeFile(path, output, function(err){
|
||||||
|
if (err) throw err;
|
||||||
|
console.log(' \033[90mrendered \033[36m%s\033[0m', path);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// Found directory
|
||||||
|
} else if (stat.isDirectory()) {
|
||||||
|
fs.readdir(path, function(err, files) {
|
||||||
|
if (err) throw err;
|
||||||
|
files.map(function(filename) {
|
||||||
|
return path + '/' + filename;
|
||||||
|
}).forEach(renderFile);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
33
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mkdirp
generated
vendored
Executable file
33
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mkdirp
generated
vendored
Executable file
|
@ -0,0 +1,33 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
var mkdirp = require('../');
|
||||||
|
var minimist = require('minimist');
|
||||||
|
var fs = require('fs');
|
||||||
|
|
||||||
|
var argv = minimist(process.argv.slice(2), {
|
||||||
|
alias: { m: 'mode', h: 'help' },
|
||||||
|
string: [ 'mode' ]
|
||||||
|
});
|
||||||
|
if (argv.help) {
|
||||||
|
fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var paths = argv._.slice();
|
||||||
|
var mode = argv.mode ? parseInt(argv.mode, 8) : undefined;
|
||||||
|
|
||||||
|
(function next () {
|
||||||
|
if (paths.length === 0) return;
|
||||||
|
var p = paths.shift();
|
||||||
|
|
||||||
|
if (mode === undefined) mkdirp(p, cb)
|
||||||
|
else mkdirp(p, mode, cb)
|
||||||
|
|
||||||
|
function cb (err) {
|
||||||
|
if (err) {
|
||||||
|
console.error(err.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
else next();
|
||||||
|
}
|
||||||
|
})();
|
72
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mocha
generated
vendored
Executable file
72
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mocha
generated
vendored
Executable file
|
@ -0,0 +1,72 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This tiny wrapper file checks for known node flags and appends them
|
||||||
|
* when found, before invoking the "real" _mocha(1) executable.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var spawn = require('child_process').spawn,
|
||||||
|
path = require('path'),
|
||||||
|
fs = require('fs'),
|
||||||
|
getOptions = require('./options'),
|
||||||
|
args = [path.join(__dirname, '_mocha')];
|
||||||
|
|
||||||
|
// Load mocha.opts into process.argv
|
||||||
|
// Must be loaded here to handle node-specific options
|
||||||
|
getOptions();
|
||||||
|
|
||||||
|
process.argv.slice(2).forEach(function(arg){
|
||||||
|
var flag = arg.split('=')[0];
|
||||||
|
|
||||||
|
switch (flag) {
|
||||||
|
case '-d':
|
||||||
|
args.unshift('--debug');
|
||||||
|
args.push('--no-timeouts');
|
||||||
|
break;
|
||||||
|
case 'debug':
|
||||||
|
case '--debug':
|
||||||
|
case '--debug-brk':
|
||||||
|
args.unshift(arg);
|
||||||
|
args.push('--no-timeouts');
|
||||||
|
break;
|
||||||
|
case '-gc':
|
||||||
|
case '--expose-gc':
|
||||||
|
args.unshift('--expose-gc');
|
||||||
|
break;
|
||||||
|
case '--gc-global':
|
||||||
|
case '--es_staging':
|
||||||
|
case '--no-deprecation':
|
||||||
|
case '--prof':
|
||||||
|
case '--log-timer-events':
|
||||||
|
case '--throw-deprecation':
|
||||||
|
case '--trace-deprecation':
|
||||||
|
case '--use_strict':
|
||||||
|
case '--allow-natives-syntax':
|
||||||
|
case '--perf-basic-prof':
|
||||||
|
args.unshift(arg);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (0 == arg.indexOf('--harmony')) args.unshift(arg);
|
||||||
|
else if (0 == arg.indexOf('--trace')) args.unshift(arg);
|
||||||
|
else if (0 == arg.indexOf('--max-old-space-size')) args.unshift(arg);
|
||||||
|
else args.push(arg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var proc = spawn(process.execPath, args, { stdio: 'inherit' });
|
||||||
|
proc.on('exit', function (code, signal) {
|
||||||
|
process.on('exit', function(){
|
||||||
|
if (signal) {
|
||||||
|
process.kill(process.pid, signal);
|
||||||
|
} else {
|
||||||
|
process.exit(code);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// terminate children.
|
||||||
|
process.on('SIGINT', function () {
|
||||||
|
proc.kill('SIGINT'); // calls runner.abort()
|
||||||
|
proc.kill('SIGTERM'); // if that didn't work, we're probably in an infinite loop, so make it die.
|
||||||
|
});
|
133
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/semver
generated
vendored
Executable file
133
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/semver
generated
vendored
Executable file
|
@ -0,0 +1,133 @@
|
||||||
|
#!/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] <version> [<version> [...]]"
|
||||||
|
,"Prints valid versions sorted by SemVer precedence"
|
||||||
|
,""
|
||||||
|
,"Options:"
|
||||||
|
,"-r --range <range>"
|
||||||
|
," Print versions that match the specified range."
|
||||||
|
,""
|
||||||
|
,"-i --increment [<level>]"
|
||||||
|
," 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>"
|
||||||
|
," 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"))
|
||||||
|
}
|
195
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-conv
generated
vendored
Executable file
195
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-conv
generated
vendored
Executable file
|
@ -0,0 +1,195 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
// -*- mode: js -*-
|
||||||
|
// vim: set filetype=javascript :
|
||||||
|
// Copyright 2015 Joyent, Inc. All rights reserved.
|
||||||
|
|
||||||
|
var dashdash = require('dashdash');
|
||||||
|
var sshpk = require('../lib/index');
|
||||||
|
var fs = require('fs');
|
||||||
|
var path = require('path');
|
||||||
|
var tty = require('tty');
|
||||||
|
var readline = require('readline');
|
||||||
|
var getPassword = require('getpass').getPass;
|
||||||
|
|
||||||
|
var options = [
|
||||||
|
{
|
||||||
|
names: ['outformat', 't'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Output format'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['informat', 'T'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Input format'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['file', 'f'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Input file name (default stdin)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['out', 'o'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Output file name (default stdout)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['private', 'p'],
|
||||||
|
type: 'bool',
|
||||||
|
help: 'Produce a private key as output'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['derive', 'd'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Output a new key derived from this one, with given algo'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['identify', 'i'],
|
||||||
|
type: 'bool',
|
||||||
|
help: 'Print key metadata instead of converting'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['comment', 'c'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Set key comment, if output format supports'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['help', 'h'],
|
||||||
|
type: 'bool',
|
||||||
|
help: 'Shows this help text'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
var parser = dashdash.createParser({
|
||||||
|
options: options
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
var opts = parser.parse(process.argv);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-conv: error: %s', e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.help || opts._args.length > 1) {
|
||||||
|
var help = parser.help({}).trimRight();
|
||||||
|
console.error('sshpk-conv: converts between SSH key formats\n');
|
||||||
|
console.error(help);
|
||||||
|
console.error('\navailable formats:');
|
||||||
|
console.error(' - pem, pkcs1 eg id_rsa');
|
||||||
|
console.error(' - ssh eg id_rsa.pub');
|
||||||
|
console.error(' - pkcs8 format you want for openssl');
|
||||||
|
console.error(' - openssh like output of ssh-keygen -o');
|
||||||
|
console.error(' - rfc4253 raw OpenSSH wire format');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Key derivation can only be done on private keys, so use of the -d
|
||||||
|
* option necessarily implies -p.
|
||||||
|
*/
|
||||||
|
if (opts.derive)
|
||||||
|
opts.private = true;
|
||||||
|
|
||||||
|
var inFile = process.stdin;
|
||||||
|
var inFileName = 'stdin';
|
||||||
|
|
||||||
|
var inFilePath;
|
||||||
|
if (opts.file) {
|
||||||
|
inFilePath = opts.file;
|
||||||
|
} else if (opts._args.length === 1) {
|
||||||
|
inFilePath = opts._args[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inFilePath)
|
||||||
|
inFileName = path.basename(inFilePath);
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (inFilePath) {
|
||||||
|
fs.accessSync(inFilePath, fs.R_OK);
|
||||||
|
inFile = fs.createReadStream(inFilePath);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-conv: error opening input file' +
|
||||||
|
': ' + e.name + ': ' + e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var outFile = process.stdout;
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (opts.out && !opts.identify) {
|
||||||
|
fs.accessSync(path.dirname(opts.out), fs.W_OK);
|
||||||
|
outFile = fs.createWriteStream(opts.out);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-conv: error opening output file' +
|
||||||
|
': ' + e.name + ': ' + e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var bufs = [];
|
||||||
|
inFile.on('readable', function () {
|
||||||
|
var data;
|
||||||
|
while ((data = inFile.read()))
|
||||||
|
bufs.push(data);
|
||||||
|
});
|
||||||
|
var parseOpts = {};
|
||||||
|
parseOpts.filename = inFileName;
|
||||||
|
inFile.on('end', function processKey() {
|
||||||
|
var buf = Buffer.concat(bufs);
|
||||||
|
var fmt = 'auto';
|
||||||
|
if (opts.informat)
|
||||||
|
fmt = opts.informat;
|
||||||
|
var f = sshpk.parseKey;
|
||||||
|
if (opts.private)
|
||||||
|
f = sshpk.parsePrivateKey;
|
||||||
|
try {
|
||||||
|
var key = f(buf, fmt, parseOpts);
|
||||||
|
} catch (e) {
|
||||||
|
if (e.name === 'KeyEncryptedError') {
|
||||||
|
getPassword(function (err, pw) {
|
||||||
|
parseOpts.passphrase = pw;
|
||||||
|
processKey();
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.error('sshpk-conv: ' +
|
||||||
|
e.name + ': ' + e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.derive)
|
||||||
|
key = key.derive(opts.derive);
|
||||||
|
|
||||||
|
if (opts.comment)
|
||||||
|
key.comment = opts.comment;
|
||||||
|
|
||||||
|
if (!opts.identify) {
|
||||||
|
fmt = undefined;
|
||||||
|
if (opts.outformat)
|
||||||
|
fmt = opts.outformat;
|
||||||
|
outFile.write(key.toBuffer(fmt));
|
||||||
|
if (fmt === 'ssh' ||
|
||||||
|
(!opts.private && fmt === undefined))
|
||||||
|
outFile.write('\n');
|
||||||
|
outFile.once('drain', function () {
|
||||||
|
process.exit(0);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
var kind = 'public';
|
||||||
|
if (sshpk.PrivateKey.isPrivateKey(key))
|
||||||
|
kind = 'private';
|
||||||
|
console.log('%s: a %d bit %s %s key', inFileName,
|
||||||
|
key.size, key.type.toUpperCase(), kind);
|
||||||
|
if (key.type === 'ecdsa')
|
||||||
|
console.log('ECDSA curve: %s', key.curve);
|
||||||
|
if (key.comment)
|
||||||
|
console.log('Comment: %s', key.comment);
|
||||||
|
console.log('Fingerprint:');
|
||||||
|
console.log(' ' + key.fingerprint().toString());
|
||||||
|
console.log(' ' + key.fingerprint('md5').toString());
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
191
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-sign
generated
vendored
Executable file
191
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-sign
generated
vendored
Executable file
|
@ -0,0 +1,191 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
// -*- mode: js -*-
|
||||||
|
// vim: set filetype=javascript :
|
||||||
|
// Copyright 2015 Joyent, Inc. All rights reserved.
|
||||||
|
|
||||||
|
var dashdash = require('dashdash');
|
||||||
|
var sshpk = require('../lib/index');
|
||||||
|
var fs = require('fs');
|
||||||
|
var path = require('path');
|
||||||
|
var getPassword = require('getpass').getPass;
|
||||||
|
|
||||||
|
var options = [
|
||||||
|
{
|
||||||
|
names: ['hash', 'H'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Hash algorithm (sha1, sha256, sha384, sha512)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['verbose', 'v'],
|
||||||
|
type: 'bool',
|
||||||
|
help: 'Display verbose info about key and hash used'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['identity', 'i'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Path to key to use'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['file', 'f'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Input filename'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['out', 'o'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Output filename'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['format', 't'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Signature format (asn1, ssh, raw)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['binary', 'b'],
|
||||||
|
type: 'bool',
|
||||||
|
help: 'Output raw binary instead of base64'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['help', 'h'],
|
||||||
|
type: 'bool',
|
||||||
|
help: 'Shows this help text'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
var parseOpts = {};
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
var parser = dashdash.createParser({
|
||||||
|
options: options
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
var opts = parser.parse(process.argv);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-sign: error: %s', e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.help || opts._args.length > 1) {
|
||||||
|
var help = parser.help({}).trimRight();
|
||||||
|
console.error('sshpk-sign: sign data using an SSH key\n');
|
||||||
|
console.error(help);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!opts.identity) {
|
||||||
|
var help = parser.help({}).trimRight();
|
||||||
|
console.error('sshpk-sign: the -i or --identity option ' +
|
||||||
|
'is required\n');
|
||||||
|
console.error(help);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var keyData = fs.readFileSync(opts.identity);
|
||||||
|
parseOpts.filename = opts.identity;
|
||||||
|
|
||||||
|
run();
|
||||||
|
}
|
||||||
|
|
||||||
|
function run() {
|
||||||
|
var key;
|
||||||
|
try {
|
||||||
|
key = sshpk.parsePrivateKey(keyData, 'auto', parseOpts);
|
||||||
|
} catch (e) {
|
||||||
|
if (e.name === 'KeyEncryptedError') {
|
||||||
|
getPassword(function (err, pw) {
|
||||||
|
parseOpts.passphrase = pw;
|
||||||
|
run();
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.error('sshpk-sign: error loading private key "' +
|
||||||
|
opts.identity + '": ' + e.name + ': ' + e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var hash = opts.hash || key.defaultHashAlgorithm();
|
||||||
|
|
||||||
|
var signer;
|
||||||
|
try {
|
||||||
|
signer = key.createSign(hash);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-sign: error creating signer: ' +
|
||||||
|
e.name + ': ' + e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.verbose) {
|
||||||
|
console.error('sshpk-sign: using %s-%s with a %d bit key',
|
||||||
|
key.type, hash, key.size);
|
||||||
|
}
|
||||||
|
|
||||||
|
var inFile = process.stdin;
|
||||||
|
var inFileName = 'stdin';
|
||||||
|
|
||||||
|
var inFilePath;
|
||||||
|
if (opts.file) {
|
||||||
|
inFilePath = opts.file;
|
||||||
|
} else if (opts._args.length === 1) {
|
||||||
|
inFilePath = opts._args[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inFilePath)
|
||||||
|
inFileName = path.basename(inFilePath);
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (inFilePath) {
|
||||||
|
fs.accessSync(inFilePath, fs.R_OK);
|
||||||
|
inFile = fs.createReadStream(inFilePath);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-sign: error opening input file' +
|
||||||
|
': ' + e.name + ': ' + e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var outFile = process.stdout;
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (opts.out && !opts.identify) {
|
||||||
|
fs.accessSync(path.dirname(opts.out), fs.W_OK);
|
||||||
|
outFile = fs.createWriteStream(opts.out);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-sign: error opening output file' +
|
||||||
|
': ' + e.name + ': ' + e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
inFile.pipe(signer);
|
||||||
|
inFile.on('end', function () {
|
||||||
|
var sig;
|
||||||
|
try {
|
||||||
|
sig = signer.sign();
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-sign: error signing data: ' +
|
||||||
|
e.name + ': ' + e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var fmt = opts.format || 'asn1';
|
||||||
|
var output;
|
||||||
|
try {
|
||||||
|
output = sig.toBuffer(fmt);
|
||||||
|
if (!opts.binary)
|
||||||
|
output = output.toString('base64');
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-sign: error converting signature' +
|
||||||
|
' to ' + fmt + ' format: ' + e.name + ': ' +
|
||||||
|
e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
outFile.write(output);
|
||||||
|
if (!opts.binary)
|
||||||
|
outFile.write('\n');
|
||||||
|
outFile.once('drain', function () {
|
||||||
|
process.exit(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
166
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-verify
generated
vendored
Executable file
166
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-verify
generated
vendored
Executable file
|
@ -0,0 +1,166 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
// -*- mode: js -*-
|
||||||
|
// vim: set filetype=javascript :
|
||||||
|
// Copyright 2015 Joyent, Inc. All rights reserved.
|
||||||
|
|
||||||
|
var dashdash = require('dashdash');
|
||||||
|
var sshpk = require('../lib/index');
|
||||||
|
var fs = require('fs');
|
||||||
|
var path = require('path');
|
||||||
|
|
||||||
|
var options = [
|
||||||
|
{
|
||||||
|
names: ['hash', 'H'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Hash algorithm (sha1, sha256, sha384, sha512)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['verbose', 'v'],
|
||||||
|
type: 'bool',
|
||||||
|
help: 'Display verbose info about key and hash used'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['identity', 'i'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Path to (public) key to use'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['file', 'f'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Input filename'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['format', 't'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'Signature format (asn1, ssh, raw)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['signature', 's'],
|
||||||
|
type: 'string',
|
||||||
|
help: 'base64-encoded signature data'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
names: ['help', 'h'],
|
||||||
|
type: 'bool',
|
||||||
|
help: 'Shows this help text'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
var parser = dashdash.createParser({
|
||||||
|
options: options
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
var opts = parser.parse(process.argv);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-verify: error: %s', e.message);
|
||||||
|
process.exit(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.help || opts._args.length > 1) {
|
||||||
|
var help = parser.help({}).trimRight();
|
||||||
|
console.error('sshpk-verify: sign data using an SSH key\n');
|
||||||
|
console.error(help);
|
||||||
|
process.exit(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!opts.identity) {
|
||||||
|
var help = parser.help({}).trimRight();
|
||||||
|
console.error('sshpk-verify: the -i or --identity option ' +
|
||||||
|
'is required\n');
|
||||||
|
console.error(help);
|
||||||
|
process.exit(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!opts.signature) {
|
||||||
|
var help = parser.help({}).trimRight();
|
||||||
|
console.error('sshpk-verify: the -s or --signature option ' +
|
||||||
|
'is required\n');
|
||||||
|
console.error(help);
|
||||||
|
process.exit(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
var keyData = fs.readFileSync(opts.identity);
|
||||||
|
|
||||||
|
var key;
|
||||||
|
try {
|
||||||
|
key = sshpk.parseKey(keyData);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-verify: error loading key "' +
|
||||||
|
opts.identity + '": ' + e.name + ': ' + e.message);
|
||||||
|
process.exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
var fmt = opts.format || 'asn1';
|
||||||
|
var sigData = new Buffer(opts.signature, 'base64');
|
||||||
|
|
||||||
|
var sig;
|
||||||
|
try {
|
||||||
|
sig = sshpk.parseSignature(sigData, key.type, fmt);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-verify: error parsing signature: ' +
|
||||||
|
e.name + ': ' + e.message);
|
||||||
|
process.exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
var hash = opts.hash || key.defaultHashAlgorithm();
|
||||||
|
|
||||||
|
var verifier;
|
||||||
|
try {
|
||||||
|
verifier = key.createVerify(hash);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-verify: error creating verifier: ' +
|
||||||
|
e.name + ': ' + e.message);
|
||||||
|
process.exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.verbose) {
|
||||||
|
console.error('sshpk-verify: using %s-%s with a %d bit key',
|
||||||
|
key.type, hash, key.size);
|
||||||
|
}
|
||||||
|
|
||||||
|
var inFile = process.stdin;
|
||||||
|
var inFileName = 'stdin';
|
||||||
|
|
||||||
|
var inFilePath;
|
||||||
|
if (opts.file) {
|
||||||
|
inFilePath = opts.file;
|
||||||
|
} else if (opts._args.length === 1) {
|
||||||
|
inFilePath = opts._args[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inFilePath)
|
||||||
|
inFileName = path.basename(inFilePath);
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (inFilePath) {
|
||||||
|
fs.accessSync(inFilePath, fs.R_OK);
|
||||||
|
inFile = fs.createReadStream(inFilePath);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-verify: error opening input file' +
|
||||||
|
': ' + e.name + ': ' + e.message);
|
||||||
|
process.exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
inFile.pipe(verifier);
|
||||||
|
inFile.on('end', function () {
|
||||||
|
var ret;
|
||||||
|
try {
|
||||||
|
ret = verifier.verify(sig);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('sshpk-verify: error verifying data: ' +
|
||||||
|
e.name + ': ' + e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
console.error('OK');
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.error('NOT OK');
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
}
|
49
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/strip-indent
generated
vendored
Executable file
49
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/strip-indent
generated
vendored
Executable file
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
'use strict';
|
||||||
|
var fs = require('fs');
|
||||||
|
var stdin = require('get-stdin');
|
||||||
|
var pkg = require('./package.json');
|
||||||
|
var stripIndent = require('./');
|
||||||
|
var argv = process.argv.slice(2);
|
||||||
|
var input = argv[0];
|
||||||
|
|
||||||
|
function help() {
|
||||||
|
console.log([
|
||||||
|
'',
|
||||||
|
' ' + pkg.description,
|
||||||
|
'',
|
||||||
|
' Usage',
|
||||||
|
' strip-indent <file>',
|
||||||
|
' echo <string> | strip-indent',
|
||||||
|
'',
|
||||||
|
' Example',
|
||||||
|
' echo \'\\tunicorn\\n\\t\\tcake\' | strip-indent',
|
||||||
|
' unicorn',
|
||||||
|
' \tcake'
|
||||||
|
].join('\n'));
|
||||||
|
}
|
||||||
|
|
||||||
|
function init(data) {
|
||||||
|
console.log(stripIndent(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argv.indexOf('--help') !== -1) {
|
||||||
|
help();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argv.indexOf('--version') !== -1) {
|
||||||
|
console.log(pkg.version);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.stdin.isTTY) {
|
||||||
|
if (!input) {
|
||||||
|
help();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
init(fs.readFileSync(input, 'utf8'));
|
||||||
|
} else {
|
||||||
|
stdin(init);
|
||||||
|
}
|
2
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsc
generated
vendored
Executable file
2
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsc
generated
vendored
Executable file
|
@ -0,0 +1,2 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
require('../lib/tsc.js')
|
3
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tslint
generated
vendored
Executable file
3
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tslint
generated
vendored
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
require("../lib/tslint-cli");
|
2
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsserver
generated
vendored
Executable file
2
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsserver
generated
vendored
Executable file
|
@ -0,0 +1,2 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
require('../lib/tsserver.js')
|
26
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/user-home
generated
vendored
Executable file
26
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/user-home
generated
vendored
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
'use strict';
|
||||||
|
var pkg = require('./package.json');
|
||||||
|
var userHome = require('./');
|
||||||
|
|
||||||
|
function help() {
|
||||||
|
console.log([
|
||||||
|
pkg.description,
|
||||||
|
'',
|
||||||
|
'Example',
|
||||||
|
' $ user-home',
|
||||||
|
' /Users/sindresorhus'
|
||||||
|
].join('\n'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.argv.indexOf('--help') !== -1) {
|
||||||
|
help();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.argv.indexOf('--version') !== -1) {
|
||||||
|
console.log(pkg.version);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
process.stdout.write(userHome);
|
26
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/uuid
generated
vendored
Executable file
26
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/uuid
generated
vendored
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
var path = require('path');
|
||||||
|
var uuid = require(path.join(__dirname, '..'));
|
||||||
|
|
||||||
|
var arg = process.argv[2];
|
||||||
|
|
||||||
|
if ('--help' === arg) {
|
||||||
|
console.log('\n USAGE: uuid [version] [options]\n\n');
|
||||||
|
console.log(' options:\n');
|
||||||
|
console.log(' --help Display this message and exit\n');
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null == arg) {
|
||||||
|
console.log(uuid());
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('v1' !== arg && 'v4' !== arg) {
|
||||||
|
console.error('Version must be RFC4122 version 1 or version 4, denoted as "v1" or "v4"');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(uuid[arg]());
|
||||||
|
process.exit(0);
|
58
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/LICENSE
generated
vendored
Normal file
58
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
amdefine is released under two licenses: new BSD, and MIT. You may pick the
|
||||||
|
license that best suits your development needs. The text of both licenses are
|
||||||
|
provided below.
|
||||||
|
|
||||||
|
|
||||||
|
The "New" BSD License:
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Copyright (c) 2011-2015, The Dojo Foundation
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the Dojo Foundation 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Copyright (c) 2011-2015, The Dojo Foundation
|
||||||
|
|
||||||
|
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.
|
171
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/README.md
generated
vendored
Normal file
171
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/README.md
generated
vendored
Normal file
|
@ -0,0 +1,171 @@
|
||||||
|
# amdefine
|
||||||
|
|
||||||
|
A module that can be used to implement AMD's define() in Node. This allows you
|
||||||
|
to code to the AMD API and have the module work in node programs without
|
||||||
|
requiring those other programs to use AMD.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
**1)** Update your package.json to indicate amdefine as a dependency:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
"dependencies": {
|
||||||
|
"amdefine": ">=0.1.0"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Then run `npm install` to get amdefine into your project.
|
||||||
|
|
||||||
|
**2)** At the top of each module that uses define(), place this code:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
if (typeof define !== 'function') { var define = require('amdefine')(module) }
|
||||||
|
```
|
||||||
|
|
||||||
|
**Only use these snippets** when loading amdefine. If you preserve the basic structure,
|
||||||
|
with the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer).
|
||||||
|
|
||||||
|
You can add spaces, line breaks and even require amdefine with a local path, but
|
||||||
|
keep the rest of the structure to get the stripping behavior.
|
||||||
|
|
||||||
|
As you may know, because `if` statements in JavaScript don't have their own scope, the var
|
||||||
|
declaration in the above snippet is made whether the `if` expression is truthy or not. If
|
||||||
|
RequireJS is loaded then the declaration is superfluous because `define` is already already
|
||||||
|
declared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var`
|
||||||
|
declarations of the same variable in the same scope gracefully.
|
||||||
|
|
||||||
|
If you want to deliver amdefine.js with your code rather than specifying it as a dependency
|
||||||
|
with npm, then just download the latest release and refer to it using a relative path:
|
||||||
|
|
||||||
|
[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js)
|
||||||
|
|
||||||
|
### amdefine/intercept
|
||||||
|
|
||||||
|
Consider this very experimental.
|
||||||
|
|
||||||
|
Instead of pasting the piece of text for the amdefine setup of a `define`
|
||||||
|
variable in each module you create or consume, you can use `amdefine/intercept`
|
||||||
|
instead. It will automatically insert the above snippet in each .js file loaded
|
||||||
|
by Node.
|
||||||
|
|
||||||
|
**Warning**: you should only use this if you are creating an application that
|
||||||
|
is consuming AMD style defined()'d modules that are distributed via npm and want
|
||||||
|
to run that code in Node.
|
||||||
|
|
||||||
|
For library code where you are not sure if it will be used by others in Node or
|
||||||
|
in the browser, then explicitly depending on amdefine and placing the code
|
||||||
|
snippet above is suggested path, instead of using `amdefine/intercept`. The
|
||||||
|
intercept module affects all .js files loaded in the Node app, and it is
|
||||||
|
inconsiderate to modify global state like that unless you are also controlling
|
||||||
|
the top level app.
|
||||||
|
|
||||||
|
#### Why distribute AMD-style modules via npm?
|
||||||
|
|
||||||
|
npm has a lot of weaknesses for front-end use (installed layout is not great,
|
||||||
|
should have better support for the `baseUrl + moduleID + '.js' style of loading,
|
||||||
|
single file JS installs), but some people want a JS package manager and are
|
||||||
|
willing to live with those constraints. If that is you, but still want to author
|
||||||
|
in AMD style modules to get dynamic require([]), better direct source usage and
|
||||||
|
powerful loader plugin support in the browser, then this tool can help.
|
||||||
|
|
||||||
|
#### amdefine/intercept usage
|
||||||
|
|
||||||
|
Just require it in your top level app module (for example index.js, server.js):
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
require('amdefine/intercept');
|
||||||
|
```
|
||||||
|
|
||||||
|
The module does not return a value, so no need to assign the result to a local
|
||||||
|
variable.
|
||||||
|
|
||||||
|
Then just require() code as you normally would with Node's require(). Any .js
|
||||||
|
loaded after the intercept require will have the amdefine check injected in
|
||||||
|
the .js source as it is loaded. It does not modify the source on disk, just
|
||||||
|
prepends some content to the text of the module as it is loaded by Node.
|
||||||
|
|
||||||
|
#### How amdefine/intercept works
|
||||||
|
|
||||||
|
It overrides the `Module._extensions['.js']` in Node to automatically prepend
|
||||||
|
the amdefine snippet above. So, it will affect any .js file loaded by your
|
||||||
|
app.
|
||||||
|
|
||||||
|
## define() usage
|
||||||
|
|
||||||
|
It is best if you use the anonymous forms of define() in your module:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
define(function (require) {
|
||||||
|
var dependency = require('dependency');
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
define(['dependency'], function (dependency) {
|
||||||
|
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## RequireJS optimizer integration. <a name="optimizer"></name>
|
||||||
|
|
||||||
|
Version 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html)
|
||||||
|
will have support for stripping the `if (typeof define !== 'function')` check
|
||||||
|
mentioned above, so you can include this snippet for code that runs in the
|
||||||
|
browser, but avoid taking the cost of the if() statement once the code is
|
||||||
|
optimized for deployment.
|
||||||
|
|
||||||
|
## Node 0.4 Support
|
||||||
|
|
||||||
|
If you want to support Node 0.4, then add `require` as the second parameter to amdefine:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
//Only if you want Node 0.4. If using 0.5 or later, use the above snippet.
|
||||||
|
if (typeof define !== 'function') { var define = require('amdefine')(module, require) }
|
||||||
|
```
|
||||||
|
|
||||||
|
## Limitations
|
||||||
|
|
||||||
|
### Synchronous vs Asynchronous
|
||||||
|
|
||||||
|
amdefine creates a define() function that is callable by your code. It will
|
||||||
|
execute and trace dependencies and call the factory function *synchronously*,
|
||||||
|
to keep the behavior in line with Node's synchronous dependency tracing.
|
||||||
|
|
||||||
|
The exception: calling AMD's callback-style require() from inside a factory
|
||||||
|
function. The require callback is called on process.nextTick():
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
define(function (require) {
|
||||||
|
require(['a'], function(a) {
|
||||||
|
//'a' is loaded synchronously, but
|
||||||
|
//this callback is called on process.nextTick().
|
||||||
|
});
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### Loader Plugins
|
||||||
|
|
||||||
|
Loader plugins are supported as long as they call their load() callbacks
|
||||||
|
synchronously. So ones that do network requests will not work. However plugins
|
||||||
|
like [text](http://requirejs.org/docs/api.html#text) can load text files locally.
|
||||||
|
|
||||||
|
The plugin API's `load.fromText()` is **not supported** in amdefine, so this means
|
||||||
|
transpiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs)
|
||||||
|
will not work. This may be fixable, but it is a bit complex, and I do not have
|
||||||
|
enough node-fu to figure it out yet. See the source for amdefine.js if you want
|
||||||
|
to get an idea of the issues involved.
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
|
||||||
|
To run the tests, cd to **tests** and run:
|
||||||
|
|
||||||
|
```
|
||||||
|
node all.js
|
||||||
|
node all-intercept.js
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
New BSD and MIT. Check the LICENSE file for all the details.
|
301
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/amdefine.js
generated
vendored
Normal file
301
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/amdefine.js
generated
vendored
Normal file
|
@ -0,0 +1,301 @@
|
||||||
|
/** vim: et:ts=4:sw=4:sts=4
|
||||||
|
* @license amdefine 1.0.0 Copyright (c) 2011-2015, The Dojo Foundation All Rights Reserved.
|
||||||
|
* Available via the MIT or new BSD license.
|
||||||
|
* see: http://github.com/jrburke/amdefine for details
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*jslint node: true */
|
||||||
|
/*global module, process */
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a define for node.
|
||||||
|
* @param {Object} module the "module" object that is defined by Node for the
|
||||||
|
* current module.
|
||||||
|
* @param {Function} [requireFn]. Node's require function for the current module.
|
||||||
|
* It only needs to be passed in Node versions before 0.5, when module.require
|
||||||
|
* did not exist.
|
||||||
|
* @returns {Function} a define function that is usable for the current node
|
||||||
|
* module.
|
||||||
|
*/
|
||||||
|
function amdefine(module, requireFn) {
|
||||||
|
'use strict';
|
||||||
|
var defineCache = {},
|
||||||
|
loaderCache = {},
|
||||||
|
alreadyCalled = false,
|
||||||
|
path = require('path'),
|
||||||
|
makeRequire, stringRequire;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trims the . and .. from an array of path segments.
|
||||||
|
* It will keep a leading path segment if a .. will become
|
||||||
|
* the first path segment, to help with module name lookups,
|
||||||
|
* which act like paths, but can be remapped. But the end result,
|
||||||
|
* all paths that use this function should look normalized.
|
||||||
|
* NOTE: this method MODIFIES the input array.
|
||||||
|
* @param {Array} ary the array of path segments.
|
||||||
|
*/
|
||||||
|
function trimDots(ary) {
|
||||||
|
var i, part;
|
||||||
|
for (i = 0; ary[i]; i+= 1) {
|
||||||
|
part = ary[i];
|
||||||
|
if (part === '.') {
|
||||||
|
ary.splice(i, 1);
|
||||||
|
i -= 1;
|
||||||
|
} else if (part === '..') {
|
||||||
|
if (i === 1 && (ary[2] === '..' || ary[0] === '..')) {
|
||||||
|
//End of the line. Keep at least one non-dot
|
||||||
|
//path segment at the front so it can be mapped
|
||||||
|
//correctly to disk. Otherwise, there is likely
|
||||||
|
//no path mapping for a path starting with '..'.
|
||||||
|
//This can still fail, but catches the most reasonable
|
||||||
|
//uses of ..
|
||||||
|
break;
|
||||||
|
} else if (i > 0) {
|
||||||
|
ary.splice(i - 1, 2);
|
||||||
|
i -= 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function normalize(name, baseName) {
|
||||||
|
var baseParts;
|
||||||
|
|
||||||
|
//Adjust any relative paths.
|
||||||
|
if (name && name.charAt(0) === '.') {
|
||||||
|
//If have a base name, try to normalize against it,
|
||||||
|
//otherwise, assume it is a top-level require that will
|
||||||
|
//be relative to baseUrl in the end.
|
||||||
|
if (baseName) {
|
||||||
|
baseParts = baseName.split('/');
|
||||||
|
baseParts = baseParts.slice(0, baseParts.length - 1);
|
||||||
|
baseParts = baseParts.concat(name.split('/'));
|
||||||
|
trimDots(baseParts);
|
||||||
|
name = baseParts.join('/');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the normalize() function passed to a loader plugin's
|
||||||
|
* normalize method.
|
||||||
|
*/
|
||||||
|
function makeNormalize(relName) {
|
||||||
|
return function (name) {
|
||||||
|
return normalize(name, relName);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeLoad(id) {
|
||||||
|
function load(value) {
|
||||||
|
loaderCache[id] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
load.fromText = function (id, text) {
|
||||||
|
//This one is difficult because the text can/probably uses
|
||||||
|
//define, and any relative paths and requires should be relative
|
||||||
|
//to that id was it would be found on disk. But this would require
|
||||||
|
//bootstrapping a module/require fairly deeply from node core.
|
||||||
|
//Not sure how best to go about that yet.
|
||||||
|
throw new Error('amdefine does not implement load.fromText');
|
||||||
|
};
|
||||||
|
|
||||||
|
return load;
|
||||||
|
}
|
||||||
|
|
||||||
|
makeRequire = function (systemRequire, exports, module, relId) {
|
||||||
|
function amdRequire(deps, callback) {
|
||||||
|
if (typeof deps === 'string') {
|
||||||
|
//Synchronous, single module require('')
|
||||||
|
return stringRequire(systemRequire, exports, module, deps, relId);
|
||||||
|
} else {
|
||||||
|
//Array of dependencies with a callback.
|
||||||
|
|
||||||
|
//Convert the dependencies to modules.
|
||||||
|
deps = deps.map(function (depName) {
|
||||||
|
return stringRequire(systemRequire, exports, module, depName, relId);
|
||||||
|
});
|
||||||
|
|
||||||
|
//Wait for next tick to call back the require call.
|
||||||
|
if (callback) {
|
||||||
|
process.nextTick(function () {
|
||||||
|
callback.apply(null, deps);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
amdRequire.toUrl = function (filePath) {
|
||||||
|
if (filePath.indexOf('.') === 0) {
|
||||||
|
return normalize(filePath, path.dirname(module.filename));
|
||||||
|
} else {
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return amdRequire;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Favor explicit value, passed in if the module wants to support Node 0.4.
|
||||||
|
requireFn = requireFn || function req() {
|
||||||
|
return module.require.apply(module, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
function runFactory(id, deps, factory) {
|
||||||
|
var r, e, m, result;
|
||||||
|
|
||||||
|
if (id) {
|
||||||
|
e = loaderCache[id] = {};
|
||||||
|
m = {
|
||||||
|
id: id,
|
||||||
|
uri: __filename,
|
||||||
|
exports: e
|
||||||
|
};
|
||||||
|
r = makeRequire(requireFn, e, m, id);
|
||||||
|
} else {
|
||||||
|
//Only support one define call per file
|
||||||
|
if (alreadyCalled) {
|
||||||
|
throw new Error('amdefine with no module ID cannot be called more than once per file.');
|
||||||
|
}
|
||||||
|
alreadyCalled = true;
|
||||||
|
|
||||||
|
//Use the real variables from node
|
||||||
|
//Use module.exports for exports, since
|
||||||
|
//the exports in here is amdefine exports.
|
||||||
|
e = module.exports;
|
||||||
|
m = module;
|
||||||
|
r = makeRequire(requireFn, e, m, module.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
//If there are dependencies, they are strings, so need
|
||||||
|
//to convert them to dependency values.
|
||||||
|
if (deps) {
|
||||||
|
deps = deps.map(function (depName) {
|
||||||
|
return r(depName);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//Call the factory with the right dependencies.
|
||||||
|
if (typeof factory === 'function') {
|
||||||
|
result = factory.apply(m.exports, deps);
|
||||||
|
} else {
|
||||||
|
result = factory;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result !== undefined) {
|
||||||
|
m.exports = result;
|
||||||
|
if (id) {
|
||||||
|
loaderCache[id] = m.exports;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stringRequire = function (systemRequire, exports, module, id, relId) {
|
||||||
|
//Split the ID by a ! so that
|
||||||
|
var index = id.indexOf('!'),
|
||||||
|
originalId = id,
|
||||||
|
prefix, plugin;
|
||||||
|
|
||||||
|
if (index === -1) {
|
||||||
|
id = normalize(id, relId);
|
||||||
|
|
||||||
|
//Straight module lookup. If it is one of the special dependencies,
|
||||||
|
//deal with it, otherwise, delegate to node.
|
||||||
|
if (id === 'require') {
|
||||||
|
return makeRequire(systemRequire, exports, module, relId);
|
||||||
|
} else if (id === 'exports') {
|
||||||
|
return exports;
|
||||||
|
} else if (id === 'module') {
|
||||||
|
return module;
|
||||||
|
} else if (loaderCache.hasOwnProperty(id)) {
|
||||||
|
return loaderCache[id];
|
||||||
|
} else if (defineCache[id]) {
|
||||||
|
runFactory.apply(null, defineCache[id]);
|
||||||
|
return loaderCache[id];
|
||||||
|
} else {
|
||||||
|
if(systemRequire) {
|
||||||
|
return systemRequire(originalId);
|
||||||
|
} else {
|
||||||
|
throw new Error('No module with ID: ' + id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//There is a plugin in play.
|
||||||
|
prefix = id.substring(0, index);
|
||||||
|
id = id.substring(index + 1, id.length);
|
||||||
|
|
||||||
|
plugin = stringRequire(systemRequire, exports, module, prefix, relId);
|
||||||
|
|
||||||
|
if (plugin.normalize) {
|
||||||
|
id = plugin.normalize(id, makeNormalize(relId));
|
||||||
|
} else {
|
||||||
|
//Normalize the ID normally.
|
||||||
|
id = normalize(id, relId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loaderCache[id]) {
|
||||||
|
return loaderCache[id];
|
||||||
|
} else {
|
||||||
|
plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {});
|
||||||
|
|
||||||
|
return loaderCache[id];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//Create a define function specific to the module asking for amdefine.
|
||||||
|
function define(id, deps, factory) {
|
||||||
|
if (Array.isArray(id)) {
|
||||||
|
factory = deps;
|
||||||
|
deps = id;
|
||||||
|
id = undefined;
|
||||||
|
} else if (typeof id !== 'string') {
|
||||||
|
factory = id;
|
||||||
|
id = deps = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (deps && !Array.isArray(deps)) {
|
||||||
|
factory = deps;
|
||||||
|
deps = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!deps) {
|
||||||
|
deps = ['require', 'exports', 'module'];
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set up properties for this module. If an ID, then use
|
||||||
|
//internal cache. If no ID, then use the external variables
|
||||||
|
//for this node module.
|
||||||
|
if (id) {
|
||||||
|
//Put the module in deep freeze until there is a
|
||||||
|
//require call for it.
|
||||||
|
defineCache[id] = [id, deps, factory];
|
||||||
|
} else {
|
||||||
|
runFactory(id, deps, factory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//define.require, which has access to all the values in the
|
||||||
|
//cache. Useful for AMD modules that all have IDs in the file,
|
||||||
|
//but need to finally export a value to node based on one of those
|
||||||
|
//IDs.
|
||||||
|
define.require = function (id) {
|
||||||
|
if (loaderCache[id]) {
|
||||||
|
return loaderCache[id];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defineCache[id]) {
|
||||||
|
runFactory.apply(null, defineCache[id]);
|
||||||
|
return loaderCache[id];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
define.amd = {};
|
||||||
|
|
||||||
|
return define;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = amdefine;
|
36
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/intercept.js
generated
vendored
Normal file
36
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/intercept.js
generated
vendored
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/*jshint node: true */
|
||||||
|
var inserted,
|
||||||
|
Module = require('module'),
|
||||||
|
fs = require('fs'),
|
||||||
|
existingExtFn = Module._extensions['.js'],
|
||||||
|
amdefineRegExp = /amdefine\.js/;
|
||||||
|
|
||||||
|
inserted = "if (typeof define !== 'function') {var define = require('amdefine')(module)}";
|
||||||
|
|
||||||
|
//From the node/lib/module.js source:
|
||||||
|
function stripBOM(content) {
|
||||||
|
// Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
|
||||||
|
// because the buffer-to-string conversion in `fs.readFileSync()`
|
||||||
|
// translates it to FEFF, the UTF-16 BOM.
|
||||||
|
if (content.charCodeAt(0) === 0xFEFF) {
|
||||||
|
content = content.slice(1);
|
||||||
|
}
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Also adapted from the node/lib/module.js source:
|
||||||
|
function intercept(module, filename) {
|
||||||
|
var content = stripBOM(fs.readFileSync(filename, 'utf8'));
|
||||||
|
|
||||||
|
if (!amdefineRegExp.test(module.id)) {
|
||||||
|
content = inserted + content;
|
||||||
|
}
|
||||||
|
|
||||||
|
module._compile(content, filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
intercept._id = 'amdefine/intercept';
|
||||||
|
|
||||||
|
if (!existingExtFn._id || existingExtFn._id !== intercept._id) {
|
||||||
|
Module._extensions['.js'] = intercept;
|
||||||
|
}
|
74
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/package.json
generated
vendored
Normal file
74
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/package.json
generated
vendored
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"amdefine@>=0.0.4",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/source-map-support/node_modules/source-map"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "amdefine@>=0.0.4",
|
||||||
|
"_id": "amdefine@1.0.0",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/amdefine",
|
||||||
|
"_nodeVersion": "0.10.36",
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "jrburke@gmail.com",
|
||||||
|
"name": "jrburke"
|
||||||
|
},
|
||||||
|
"_npmVersion": "2.12.1",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "amdefine",
|
||||||
|
"raw": "amdefine@>=0.0.4",
|
||||||
|
"rawSpec": ">=0.0.4",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=0.0.4",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/source-map-support/source-map"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz",
|
||||||
|
"_shasum": "fd17474700cb5cc9c2b709f0be9d23ce3c198c33",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "amdefine@>=0.0.4",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/source-map-support/node_modules/source-map",
|
||||||
|
"author": {
|
||||||
|
"email": "jrburke@gmail.com",
|
||||||
|
"name": "James Burke",
|
||||||
|
"url": "http://github.com/jrburke"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/jrburke/amdefine/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"description": "Provide AMD's define() API for declaring modules in the AMD format",
|
||||||
|
"devDependencies": {},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "fd17474700cb5cc9c2b709f0be9d23ce3c198c33",
|
||||||
|
"tarball": "http://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.2"
|
||||||
|
},
|
||||||
|
"gitHead": "578bc4a3f7dede33f3f3e10edde0c1607005d761",
|
||||||
|
"homepage": "http://github.com/jrburke/amdefine",
|
||||||
|
"license": "BSD-3-Clause AND MIT",
|
||||||
|
"main": "./amdefine.js",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "jrburke@gmail.com",
|
||||||
|
"name": "jrburke"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "amdefine",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/jrburke/amdefine.git"
|
||||||
|
},
|
||||||
|
"scripts": {},
|
||||||
|
"version": "1.0.0"
|
||||||
|
}
|
4
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/index.js
generated
vendored
Normal file
4
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/index.js
generated
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
'use strict';
|
||||||
|
module.exports = function () {
|
||||||
|
return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
|
||||||
|
};
|
21
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/license
generated
vendored
Normal file
21
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/license
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.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.
|
113
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/package.json
generated
vendored
Normal file
113
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/package.json
generated
vendored
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"ansi-regex@^2.0.0",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/has-ansi"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "ansi-regex@>=2.0.0 <3.0.0",
|
||||||
|
"_id": "ansi-regex@2.0.0",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/ansi-regex",
|
||||||
|
"_nodeVersion": "0.12.5",
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "sindresorhus"
|
||||||
|
},
|
||||||
|
"_npmVersion": "2.11.2",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "ansi-regex",
|
||||||
|
"raw": "ansi-regex@^2.0.0",
|
||||||
|
"rawSpec": "^2.0.0",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=2.0.0 <3.0.0",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/has-ansi",
|
||||||
|
"/strip-ansi"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
|
||||||
|
"_shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "ansi-regex@^2.0.0",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/has-ansi",
|
||||||
|
"author": {
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "Sindre Sorhus",
|
||||||
|
"url": "sindresorhus.com"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/sindresorhus/ansi-regex/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"description": "Regular expression for matching ANSI escape codes",
|
||||||
|
"devDependencies": {
|
||||||
|
"mocha": "*"
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107",
|
||||||
|
"tarball": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js"
|
||||||
|
],
|
||||||
|
"gitHead": "57c3f2941a73079fa8b081e02a522e3d29913e2f",
|
||||||
|
"homepage": "https://github.com/sindresorhus/ansi-regex",
|
||||||
|
"keywords": [
|
||||||
|
"ansi",
|
||||||
|
"styles",
|
||||||
|
"color",
|
||||||
|
"colour",
|
||||||
|
"colors",
|
||||||
|
"terminal",
|
||||||
|
"console",
|
||||||
|
"cli",
|
||||||
|
"string",
|
||||||
|
"tty",
|
||||||
|
"escape",
|
||||||
|
"formatting",
|
||||||
|
"rgb",
|
||||||
|
"256",
|
||||||
|
"shell",
|
||||||
|
"xterm",
|
||||||
|
"command-line",
|
||||||
|
"text",
|
||||||
|
"regex",
|
||||||
|
"regexp",
|
||||||
|
"re",
|
||||||
|
"match",
|
||||||
|
"test",
|
||||||
|
"find",
|
||||||
|
"pattern"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "sindresorhus"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"email": "jappelman@xebia.com",
|
||||||
|
"name": "jbnicolai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "ansi-regex",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/sindresorhus/ansi-regex.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "mocha test/test.js",
|
||||||
|
"view-supported": "node test/viewCodes.js"
|
||||||
|
},
|
||||||
|
"version": "2.0.0"
|
||||||
|
}
|
31
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/readme.md
generated
vendored
Normal file
31
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/readme.md
generated
vendored
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex)
|
||||||
|
|
||||||
|
> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
|
||||||
|
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```
|
||||||
|
$ npm install --save ansi-regex
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
var ansiRegex = require('ansi-regex');
|
||||||
|
|
||||||
|
ansiRegex().test('\u001b[4mcake\u001b[0m');
|
||||||
|
//=> true
|
||||||
|
|
||||||
|
ansiRegex().test('cake');
|
||||||
|
//=> false
|
||||||
|
|
||||||
|
'\u001b[4mcake\u001b[0m'.match(ansiRegex());
|
||||||
|
//=> ['\u001b[4m', '\u001b[0m']
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
65
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/index.js
generated
vendored
Normal file
65
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/index.js
generated
vendored
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
function assembleStyles () {
|
||||||
|
var styles = {
|
||||||
|
modifiers: {
|
||||||
|
reset: [0, 0],
|
||||||
|
bold: [1, 22], // 21 isn't widely supported and 22 does the same thing
|
||||||
|
dim: [2, 22],
|
||||||
|
italic: [3, 23],
|
||||||
|
underline: [4, 24],
|
||||||
|
inverse: [7, 27],
|
||||||
|
hidden: [8, 28],
|
||||||
|
strikethrough: [9, 29]
|
||||||
|
},
|
||||||
|
colors: {
|
||||||
|
black: [30, 39],
|
||||||
|
red: [31, 39],
|
||||||
|
green: [32, 39],
|
||||||
|
yellow: [33, 39],
|
||||||
|
blue: [34, 39],
|
||||||
|
magenta: [35, 39],
|
||||||
|
cyan: [36, 39],
|
||||||
|
white: [37, 39],
|
||||||
|
gray: [90, 39]
|
||||||
|
},
|
||||||
|
bgColors: {
|
||||||
|
bgBlack: [40, 49],
|
||||||
|
bgRed: [41, 49],
|
||||||
|
bgGreen: [42, 49],
|
||||||
|
bgYellow: [43, 49],
|
||||||
|
bgBlue: [44, 49],
|
||||||
|
bgMagenta: [45, 49],
|
||||||
|
bgCyan: [46, 49],
|
||||||
|
bgWhite: [47, 49]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// fix humans
|
||||||
|
styles.colors.grey = styles.colors.gray;
|
||||||
|
|
||||||
|
Object.keys(styles).forEach(function (groupName) {
|
||||||
|
var group = styles[groupName];
|
||||||
|
|
||||||
|
Object.keys(group).forEach(function (styleName) {
|
||||||
|
var style = group[styleName];
|
||||||
|
|
||||||
|
styles[styleName] = group[styleName] = {
|
||||||
|
open: '\u001b[' + style[0] + 'm',
|
||||||
|
close: '\u001b[' + style[1] + 'm'
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(styles, groupName, {
|
||||||
|
value: group,
|
||||||
|
enumerable: false
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return styles;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(module, 'exports', {
|
||||||
|
enumerable: true,
|
||||||
|
get: assembleStyles
|
||||||
|
});
|
21
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/license
generated
vendored
Normal file
21
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/license
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.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.
|
106
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/package.json
generated
vendored
Normal file
106
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/package.json
generated
vendored
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"ansi-styles@^2.2.1",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/chalk"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "ansi-styles@>=2.2.1 <3.0.0",
|
||||||
|
"_id": "ansi-styles@2.2.1",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/ansi-styles",
|
||||||
|
"_nodeVersion": "4.3.0",
|
||||||
|
"_npmOperationalInternal": {
|
||||||
|
"host": "packages-12-west.internal.npmjs.com",
|
||||||
|
"tmp": "tmp/ansi-styles-2.2.1.tgz_1459197317833_0.9694824463222176"
|
||||||
|
},
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "sindresorhus"
|
||||||
|
},
|
||||||
|
"_npmVersion": "3.8.3",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "ansi-styles",
|
||||||
|
"raw": "ansi-styles@^2.2.1",
|
||||||
|
"rawSpec": "^2.2.1",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=2.2.1 <3.0.0",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/chalk"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
|
||||||
|
"_shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "ansi-styles@^2.2.1",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/chalk",
|
||||||
|
"author": {
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "Sindre Sorhus",
|
||||||
|
"url": "sindresorhus.com"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/chalk/ansi-styles/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"description": "ANSI escape codes for styling strings in the terminal",
|
||||||
|
"devDependencies": {
|
||||||
|
"mocha": "*"
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe",
|
||||||
|
"tarball": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js"
|
||||||
|
],
|
||||||
|
"gitHead": "95c59b23be760108b6530ca1c89477c21b258032",
|
||||||
|
"homepage": "https://github.com/chalk/ansi-styles#readme",
|
||||||
|
"keywords": [
|
||||||
|
"ansi",
|
||||||
|
"styles",
|
||||||
|
"color",
|
||||||
|
"colour",
|
||||||
|
"colors",
|
||||||
|
"terminal",
|
||||||
|
"console",
|
||||||
|
"cli",
|
||||||
|
"string",
|
||||||
|
"tty",
|
||||||
|
"escape",
|
||||||
|
"formatting",
|
||||||
|
"rgb",
|
||||||
|
"256",
|
||||||
|
"shell",
|
||||||
|
"xterm",
|
||||||
|
"log",
|
||||||
|
"logging",
|
||||||
|
"command-line",
|
||||||
|
"text"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "sindresorhus"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "ansi-styles",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/chalk/ansi-styles.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "mocha"
|
||||||
|
},
|
||||||
|
"version": "2.2.1"
|
||||||
|
}
|
86
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/readme.md
generated
vendored
Normal file
86
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/readme.md
generated
vendored
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
|
||||||
|
|
||||||
|
> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
|
||||||
|
|
||||||
|
You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
|
||||||
|
|
||||||
|
![](screenshot.png)
|
||||||
|
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```
|
||||||
|
$ npm install --save ansi-styles
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
var ansi = require('ansi-styles');
|
||||||
|
|
||||||
|
console.log(ansi.green.open + 'Hello world!' + ansi.green.close);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
Each style has an `open` and `close` property.
|
||||||
|
|
||||||
|
|
||||||
|
## Styles
|
||||||
|
|
||||||
|
### Modifiers
|
||||||
|
|
||||||
|
- `reset`
|
||||||
|
- `bold`
|
||||||
|
- `dim`
|
||||||
|
- `italic` *(not widely supported)*
|
||||||
|
- `underline`
|
||||||
|
- `inverse`
|
||||||
|
- `hidden`
|
||||||
|
- `strikethrough` *(not widely supported)*
|
||||||
|
|
||||||
|
### Colors
|
||||||
|
|
||||||
|
- `black`
|
||||||
|
- `red`
|
||||||
|
- `green`
|
||||||
|
- `yellow`
|
||||||
|
- `blue`
|
||||||
|
- `magenta`
|
||||||
|
- `cyan`
|
||||||
|
- `white`
|
||||||
|
- `gray`
|
||||||
|
|
||||||
|
### Background colors
|
||||||
|
|
||||||
|
- `bgBlack`
|
||||||
|
- `bgRed`
|
||||||
|
- `bgGreen`
|
||||||
|
- `bgYellow`
|
||||||
|
- `bgBlue`
|
||||||
|
- `bgMagenta`
|
||||||
|
- `bgCyan`
|
||||||
|
- `bgWhite`
|
||||||
|
|
||||||
|
|
||||||
|
## Advanced usage
|
||||||
|
|
||||||
|
By default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
|
||||||
|
|
||||||
|
- `ansi.modifiers`
|
||||||
|
- `ansi.colors`
|
||||||
|
- `ansi.bgColors`
|
||||||
|
|
||||||
|
|
||||||
|
###### Example
|
||||||
|
|
||||||
|
```js
|
||||||
|
console.log(ansi.colors.green.open);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
4
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/.travis.yml
generated
vendored
Normal file
4
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/.travis.yml
generated
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
language: node_js
|
||||||
|
node_js:
|
||||||
|
- 0.6
|
||||||
|
- 0.8
|
18
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/LICENSE
generated
vendored
Normal file
18
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
This software is released under the MIT license:
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
24
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/beep.js
generated
vendored
Normal file
24
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/beep.js
generated
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
var archy = require('../');
|
||||||
|
var s = archy({
|
||||||
|
label : 'beep',
|
||||||
|
nodes : [
|
||||||
|
'ity',
|
||||||
|
{
|
||||||
|
label : 'boop',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'o_O',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'oh',
|
||||||
|
nodes : [ 'hello', 'puny' ]
|
||||||
|
},
|
||||||
|
'human'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'party\ntime!'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
console.log(s);
|
25
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/multi_line.js
generated
vendored
Normal file
25
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/multi_line.js
generated
vendored
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
var archy = require('../');
|
||||||
|
|
||||||
|
var s = archy({
|
||||||
|
label : 'beep\none\ntwo',
|
||||||
|
nodes : [
|
||||||
|
'ity',
|
||||||
|
{
|
||||||
|
label : 'boop',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'o_O\nwheee',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'oh',
|
||||||
|
nodes : [ 'hello', 'puny\nmeat' ]
|
||||||
|
},
|
||||||
|
'creature'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'party\ntime!'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
console.log(s);
|
35
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/index.js
generated
vendored
Normal file
35
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/index.js
generated
vendored
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
module.exports = function archy (obj, prefix, opts) {
|
||||||
|
if (prefix === undefined) prefix = '';
|
||||||
|
if (!opts) opts = {};
|
||||||
|
var chr = function (s) {
|
||||||
|
var chars = {
|
||||||
|
'│' : '|',
|
||||||
|
'└' : '`',
|
||||||
|
'├' : '+',
|
||||||
|
'─' : '-',
|
||||||
|
'┬' : '-'
|
||||||
|
};
|
||||||
|
return opts.unicode === false ? chars[s] : s;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (typeof obj === 'string') obj = { label : obj };
|
||||||
|
|
||||||
|
var nodes = obj.nodes || [];
|
||||||
|
var lines = (obj.label || '').split('\n');
|
||||||
|
var splitter = '\n' + prefix + (nodes.length ? chr('│') : ' ') + ' ';
|
||||||
|
|
||||||
|
return prefix
|
||||||
|
+ lines.join(splitter) + '\n'
|
||||||
|
+ nodes.map(function (node, ix) {
|
||||||
|
var last = ix === nodes.length - 1;
|
||||||
|
var more = node.nodes && node.nodes.length;
|
||||||
|
var prefix_ = prefix + (last ? ' ' : chr('│')) + ' ';
|
||||||
|
|
||||||
|
return prefix
|
||||||
|
+ (last ? chr('└') : chr('├')) + chr('─')
|
||||||
|
+ (more ? chr('┬') : chr('─')) + ' '
|
||||||
|
+ archy(node, prefix_, opts).slice(prefix.length + 2)
|
||||||
|
;
|
||||||
|
}).join('')
|
||||||
|
;
|
||||||
|
};
|
106
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/package.json
generated
vendored
Normal file
106
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/package.json
generated
vendored
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"archy@^1.0.0",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/gulp"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "archy@>=1.0.0 <2.0.0",
|
||||||
|
"_id": "archy@1.0.0",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/archy",
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "mail@substack.net",
|
||||||
|
"name": "substack"
|
||||||
|
},
|
||||||
|
"_npmVersion": "1.4.25",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "archy",
|
||||||
|
"raw": "archy@^1.0.0",
|
||||||
|
"rawSpec": "^1.0.0",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=1.0.0 <2.0.0",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/gulp"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
|
||||||
|
"_shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "archy@^1.0.0",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp",
|
||||||
|
"author": {
|
||||||
|
"email": "mail@substack.net",
|
||||||
|
"name": "James Halliday",
|
||||||
|
"url": "http://substack.net"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/substack/node-archy/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"description": "render nested hierarchies `npm ls` style with unicode pipes",
|
||||||
|
"devDependencies": {
|
||||||
|
"tap": "~0.3.3",
|
||||||
|
"tape": "~0.1.1"
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40",
|
||||||
|
"tarball": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz"
|
||||||
|
},
|
||||||
|
"gitHead": "30223c16191e877bf027b15b12daf077b9b55b84",
|
||||||
|
"homepage": "https://github.com/substack/node-archy",
|
||||||
|
"keywords": [
|
||||||
|
"hierarchy",
|
||||||
|
"npm ls",
|
||||||
|
"unicode",
|
||||||
|
"pretty",
|
||||||
|
"print"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "index.js",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "mail@substack.net",
|
||||||
|
"name": "substack"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "archy",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+ssh://git@github.com/substack/node-archy.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "tap test"
|
||||||
|
},
|
||||||
|
"testling": {
|
||||||
|
"browsers": {
|
||||||
|
"chrome": [
|
||||||
|
"20.0"
|
||||||
|
],
|
||||||
|
"firefox": [
|
||||||
|
"10.0",
|
||||||
|
"15.0"
|
||||||
|
],
|
||||||
|
"iexplore": [
|
||||||
|
"6.0",
|
||||||
|
"7.0",
|
||||||
|
"8.0",
|
||||||
|
"9.0"
|
||||||
|
],
|
||||||
|
"opera": [
|
||||||
|
"12.0"
|
||||||
|
],
|
||||||
|
"safari": [
|
||||||
|
"5.1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"files": "test/*.js"
|
||||||
|
},
|
||||||
|
"version": "1.0.0"
|
||||||
|
}
|
88
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/readme.markdown
generated
vendored
Normal file
88
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/readme.markdown
generated
vendored
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
# archy
|
||||||
|
|
||||||
|
Render nested hierarchies `npm ls` style with unicode pipes.
|
||||||
|
|
||||||
|
[![browser support](http://ci.testling.com/substack/node-archy.png)](http://ci.testling.com/substack/node-archy)
|
||||||
|
|
||||||
|
[![build status](https://secure.travis-ci.org/substack/node-archy.png)](http://travis-ci.org/substack/node-archy)
|
||||||
|
|
||||||
|
# example
|
||||||
|
|
||||||
|
``` js
|
||||||
|
var archy = require('archy');
|
||||||
|
var s = archy({
|
||||||
|
label : 'beep',
|
||||||
|
nodes : [
|
||||||
|
'ity',
|
||||||
|
{
|
||||||
|
label : 'boop',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'o_O',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'oh',
|
||||||
|
nodes : [ 'hello', 'puny' ]
|
||||||
|
},
|
||||||
|
'human'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'party\ntime!'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
console.log(s);
|
||||||
|
```
|
||||||
|
|
||||||
|
output
|
||||||
|
|
||||||
|
```
|
||||||
|
beep
|
||||||
|
├── ity
|
||||||
|
└─┬ boop
|
||||||
|
├─┬ o_O
|
||||||
|
│ ├─┬ oh
|
||||||
|
│ │ ├── hello
|
||||||
|
│ │ └── puny
|
||||||
|
│ └── human
|
||||||
|
└── party
|
||||||
|
time!
|
||||||
|
```
|
||||||
|
|
||||||
|
# methods
|
||||||
|
|
||||||
|
var archy = require('archy')
|
||||||
|
|
||||||
|
## archy(obj, prefix='', opts={})
|
||||||
|
|
||||||
|
Return a string representation of `obj` with unicode pipe characters like how
|
||||||
|
`npm ls` looks.
|
||||||
|
|
||||||
|
`obj` should be a tree of nested objects with `'label'` and `'nodes'` fields.
|
||||||
|
`'label'` is a string of text to display at a node level and `'nodes'` is an
|
||||||
|
array of the descendents of the current node.
|
||||||
|
|
||||||
|
If a node is a string, that string will be used as the `'label'` and an empty
|
||||||
|
array of `'nodes'` will be used.
|
||||||
|
|
||||||
|
`prefix` gets prepended to all the lines and is used by the algorithm to
|
||||||
|
recursively update.
|
||||||
|
|
||||||
|
If `'label'` has newlines they will be indented at the present indentation level
|
||||||
|
with the current prefix.
|
||||||
|
|
||||||
|
To disable unicode results in favor of all-ansi output set `opts.unicode` to
|
||||||
|
`false`.
|
||||||
|
|
||||||
|
# install
|
||||||
|
|
||||||
|
With [npm](http://npmjs.org) do:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install archy
|
||||||
|
```
|
||||||
|
|
||||||
|
# license
|
||||||
|
|
||||||
|
MIT
|
40
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/beep.js
generated
vendored
Normal file
40
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/beep.js
generated
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
var test = require('tape');
|
||||||
|
var archy = require('../');
|
||||||
|
|
||||||
|
test('beep', function (t) {
|
||||||
|
var s = archy({
|
||||||
|
label : 'beep',
|
||||||
|
nodes : [
|
||||||
|
'ity',
|
||||||
|
{
|
||||||
|
label : 'boop',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'o_O',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'oh',
|
||||||
|
nodes : [ 'hello', 'puny' ]
|
||||||
|
},
|
||||||
|
'human'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'party!'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
t.equal(s, [
|
||||||
|
'beep',
|
||||||
|
'├── ity',
|
||||||
|
'└─┬ boop',
|
||||||
|
' ├─┬ o_O',
|
||||||
|
' │ ├─┬ oh',
|
||||||
|
' │ │ ├── hello',
|
||||||
|
' │ │ └── puny',
|
||||||
|
' │ └── human',
|
||||||
|
' └── party!',
|
||||||
|
''
|
||||||
|
].join('\n'));
|
||||||
|
t.end();
|
||||||
|
});
|
45
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/multi_line.js
generated
vendored
Normal file
45
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/multi_line.js
generated
vendored
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
var test = require('tape');
|
||||||
|
var archy = require('../');
|
||||||
|
|
||||||
|
test('multi-line', function (t) {
|
||||||
|
var s = archy({
|
||||||
|
label : 'beep\none\ntwo',
|
||||||
|
nodes : [
|
||||||
|
'ity',
|
||||||
|
{
|
||||||
|
label : 'boop',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'o_O\nwheee',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'oh',
|
||||||
|
nodes : [ 'hello', 'puny\nmeat' ]
|
||||||
|
},
|
||||||
|
'creature'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'party\ntime!'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
t.equal(s, [
|
||||||
|
'beep',
|
||||||
|
'│ one',
|
||||||
|
'│ two',
|
||||||
|
'├── ity',
|
||||||
|
'└─┬ boop',
|
||||||
|
' ├─┬ o_O',
|
||||||
|
' │ │ wheee',
|
||||||
|
' │ ├─┬ oh',
|
||||||
|
' │ │ ├── hello',
|
||||||
|
' │ │ └── puny',
|
||||||
|
' │ │ meat',
|
||||||
|
' │ └── creature',
|
||||||
|
' └── party',
|
||||||
|
' time!',
|
||||||
|
''
|
||||||
|
].join('\n'));
|
||||||
|
t.end();
|
||||||
|
});
|
40
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/non_unicode.js
generated
vendored
Normal file
40
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/non_unicode.js
generated
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
var test = require('tape');
|
||||||
|
var archy = require('../');
|
||||||
|
|
||||||
|
test('beep', function (t) {
|
||||||
|
var s = archy({
|
||||||
|
label : 'beep',
|
||||||
|
nodes : [
|
||||||
|
'ity',
|
||||||
|
{
|
||||||
|
label : 'boop',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'o_O',
|
||||||
|
nodes : [
|
||||||
|
{
|
||||||
|
label : 'oh',
|
||||||
|
nodes : [ 'hello', 'puny' ]
|
||||||
|
},
|
||||||
|
'human'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'party!'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}, '', { unicode : false });
|
||||||
|
t.equal(s, [
|
||||||
|
'beep',
|
||||||
|
'+-- ity',
|
||||||
|
'`-- boop',
|
||||||
|
' +-- o_O',
|
||||||
|
' | +-- oh',
|
||||||
|
' | | +-- hello',
|
||||||
|
' | | `-- puny',
|
||||||
|
' | `-- human',
|
||||||
|
' `-- party!',
|
||||||
|
''
|
||||||
|
].join('\n'));
|
||||||
|
t.end();
|
||||||
|
});
|
7
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/index.js
generated
vendored
Normal file
7
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/index.js
generated
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
'use strict';
|
||||||
|
module.exports = function (arr) {
|
||||||
|
var rest = [].concat.apply([], [].slice.call(arguments, 1));
|
||||||
|
return arr.filter(function (el) {
|
||||||
|
return rest.indexOf(el) === -1;
|
||||||
|
});
|
||||||
|
};
|
87
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/package.json
generated
vendored
Normal file
87
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/package.json
generated
vendored
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"array-differ@^1.0.0",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "array-differ@>=1.0.0 <2.0.0",
|
||||||
|
"_id": "array-differ@1.0.0",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/array-differ",
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "sindresorhus"
|
||||||
|
},
|
||||||
|
"_npmVersion": "1.4.14",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "array-differ",
|
||||||
|
"raw": "array-differ@^1.0.0",
|
||||||
|
"rawSpec": "^1.0.0",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=1.0.0 <2.0.0",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/gulp-util"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
|
||||||
|
"_shasum": "eff52e3758249d33be402b8bb8e564bb2b5d4031",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "array-differ@^1.0.0",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util",
|
||||||
|
"author": {
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "Sindre Sorhus",
|
||||||
|
"url": "http://sindresorhus.com"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/sindresorhus/array-differ/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"description": "Create an array with values that are present in the first input array but not additional ones",
|
||||||
|
"devDependencies": {
|
||||||
|
"mocha": "*"
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "eff52e3758249d33be402b8bb8e564bb2b5d4031",
|
||||||
|
"tarball": "http://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js"
|
||||||
|
],
|
||||||
|
"gitHead": "e91802976c4710eef8dea2090d48e48525cf41b1",
|
||||||
|
"homepage": "https://github.com/sindresorhus/array-differ",
|
||||||
|
"keywords": [
|
||||||
|
"array",
|
||||||
|
"difference",
|
||||||
|
"diff",
|
||||||
|
"differ",
|
||||||
|
"filter",
|
||||||
|
"exclude"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "sindresorhus"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "array-differ",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/sindresorhus/array-differ.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "mocha"
|
||||||
|
},
|
||||||
|
"version": "1.0.0"
|
||||||
|
}
|
41
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/readme.md
generated
vendored
Normal file
41
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/readme.md
generated
vendored
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# array-differ [![Build Status](https://travis-ci.org/sindresorhus/array-differ.svg?branch=master)](https://travis-ci.org/sindresorhus/array-differ)
|
||||||
|
|
||||||
|
> Create an array with values that are present in the first input array but not additional ones
|
||||||
|
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ npm install --save array-differ
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
var arrayDiffer = require('array-differ');
|
||||||
|
|
||||||
|
arrayDiffer([2, 3, 4], [3, 50]);
|
||||||
|
//=> [2, 4]
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
### arrayDiffer(input, values, [values, ...])
|
||||||
|
|
||||||
|
Returns the new array.
|
||||||
|
|
||||||
|
#### input
|
||||||
|
|
||||||
|
Type: `array`
|
||||||
|
|
||||||
|
#### values
|
||||||
|
|
||||||
|
Type: `array`
|
||||||
|
|
||||||
|
Arrays of values to exclude.
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
25
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/index.js
generated
vendored
Normal file
25
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/index.js
generated
vendored
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
'use strict';
|
||||||
|
module.exports = function (arr, predicate, ctx) {
|
||||||
|
if (typeof Array.prototype.findIndex === 'function') {
|
||||||
|
return arr.findIndex(predicate, ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof predicate !== 'function') {
|
||||||
|
throw new TypeError('predicate must be a function');
|
||||||
|
}
|
||||||
|
|
||||||
|
var list = Object(arr);
|
||||||
|
var len = list.length;
|
||||||
|
|
||||||
|
if (len === 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < len; i++) {
|
||||||
|
if (predicate.call(ctx, list[i], i, list)) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
};
|
21
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/license
generated
vendored
Normal file
21
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/license
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.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.
|
92
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/package.json
generated
vendored
Normal file
92
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/package.json
generated
vendored
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"array-find-index@^1.0.0",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/loud-rejection"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "array-find-index@>=1.0.0 <2.0.0",
|
||||||
|
"_id": "array-find-index@1.0.1",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/array-find-index",
|
||||||
|
"_nodeVersion": "4.2.4",
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "sindresorhus"
|
||||||
|
},
|
||||||
|
"_npmVersion": "2.14.12",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "array-find-index",
|
||||||
|
"raw": "array-find-index@^1.0.0",
|
||||||
|
"rawSpec": "^1.0.0",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=1.0.0 <2.0.0",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/loud-rejection"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz",
|
||||||
|
"_shasum": "0bc25ddac941ec8a496ae258fd4ac188003ef3af",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "array-find-index@^1.0.0",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/loud-rejection",
|
||||||
|
"author": {
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "Sindre Sorhus",
|
||||||
|
"url": "sindresorhus.com"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/sindresorhus/array-find-index/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"description": "ES2015 `Array#findIndex()` ponyfill",
|
||||||
|
"devDependencies": {
|
||||||
|
"ava": "*",
|
||||||
|
"xo": "*"
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "0bc25ddac941ec8a496ae258fd4ac188003ef3af",
|
||||||
|
"tarball": "http://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js"
|
||||||
|
],
|
||||||
|
"gitHead": "0b2eea2c3e42aeb97be82b50f64a5672d2847036",
|
||||||
|
"homepage": "https://github.com/sindresorhus/array-find-index",
|
||||||
|
"keywords": [
|
||||||
|
"es6",
|
||||||
|
"es2015",
|
||||||
|
"ponyfill",
|
||||||
|
"polyfill",
|
||||||
|
"shim",
|
||||||
|
"find",
|
||||||
|
"index",
|
||||||
|
"findindex",
|
||||||
|
"array"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "sindresorhus"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "array-find-index",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/sindresorhus/array-find-index.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "xo && ava"
|
||||||
|
},
|
||||||
|
"version": "1.0.1"
|
||||||
|
}
|
32
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/readme.md
generated
vendored
Normal file
32
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/readme.md
generated
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
# array-find-index [![Build Status](https://travis-ci.org/sindresorhus/array-find-index.svg?branch=master)](https://travis-ci.org/sindresorhus/array-find-index)
|
||||||
|
|
||||||
|
> ES2015 [`Array#findIndex()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex) ponyfill
|
||||||
|
|
||||||
|
> Ponyfill: A polyfill that doesn't overwrite the native method
|
||||||
|
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```
|
||||||
|
$ npm install --save array-find-index
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
arrayFindIndex = require('array-find-index');
|
||||||
|
|
||||||
|
arrayFindIndex(['rainbow', 'unicorn', 'pony'], x => x === 'unicorn');
|
||||||
|
//=> 1
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
Same as `Array#findIndex()`, but with the input array as the first argument.
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
60
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/index.js
generated
vendored
Normal file
60
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/index.js
generated
vendored
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// there's 3 implementations written in increasing order of efficiency
|
||||||
|
|
||||||
|
// 1 - no Set type is defined
|
||||||
|
function uniqNoSet(arr) {
|
||||||
|
var ret = [];
|
||||||
|
|
||||||
|
for (var i = 0; i < arr.length; i++) {
|
||||||
|
if (ret.indexOf(arr[i]) === -1) {
|
||||||
|
ret.push(arr[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2 - a simple Set type is defined
|
||||||
|
function uniqSet(arr) {
|
||||||
|
var seen = new Set();
|
||||||
|
return arr.filter(function (el) {
|
||||||
|
if (!seen.has(el)) {
|
||||||
|
seen.add(el);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3 - a standard Set type is defined and it has a forEach method
|
||||||
|
function uniqSetWithForEach(arr) {
|
||||||
|
var ret = [];
|
||||||
|
|
||||||
|
(new Set(arr)).forEach(function (el) {
|
||||||
|
ret.push(el);
|
||||||
|
});
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// V8 currently has a broken implementation
|
||||||
|
// https://github.com/joyent/node/issues/8449
|
||||||
|
function doesForEachActuallyWork() {
|
||||||
|
var ret = false;
|
||||||
|
|
||||||
|
(new Set([true])).forEach(function (el) {
|
||||||
|
ret = el;
|
||||||
|
});
|
||||||
|
|
||||||
|
return ret === true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('Set' in global) {
|
||||||
|
if (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) {
|
||||||
|
module.exports = uniqSetWithForEach;
|
||||||
|
} else {
|
||||||
|
module.exports = uniqSet;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
module.exports = uniqNoSet;
|
||||||
|
}
|
92
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/package.json
generated
vendored
Normal file
92
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/package.json
generated
vendored
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"array-uniq@^1.0.2",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "array-uniq@>=1.0.2 <2.0.0",
|
||||||
|
"_id": "array-uniq@1.0.2",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/array-uniq",
|
||||||
|
"_nodeVersion": "0.10.32",
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "sindresorhus"
|
||||||
|
},
|
||||||
|
"_npmVersion": "2.1.5",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "array-uniq",
|
||||||
|
"raw": "array-uniq@^1.0.2",
|
||||||
|
"rawSpec": "^1.0.2",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=1.0.2 <2.0.0",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/gulp-util"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz",
|
||||||
|
"_shasum": "5fcc373920775723cfd64d65c64bef53bf9eba6d",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "array-uniq@^1.0.2",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util",
|
||||||
|
"author": {
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "Sindre Sorhus",
|
||||||
|
"url": "http://sindresorhus.com"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/sindresorhus/array-uniq/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"description": "Create an array without duplicates",
|
||||||
|
"devDependencies": {
|
||||||
|
"es6-set": "^0.1.0",
|
||||||
|
"mocha": "*",
|
||||||
|
"require-uncached": "^1.0.2"
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "5fcc373920775723cfd64d65c64bef53bf9eba6d",
|
||||||
|
"tarball": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js"
|
||||||
|
],
|
||||||
|
"gitHead": "d5e311f37692dfd25ec216490df10632ce5f69f3",
|
||||||
|
"homepage": "https://github.com/sindresorhus/array-uniq",
|
||||||
|
"keywords": [
|
||||||
|
"array",
|
||||||
|
"arr",
|
||||||
|
"set",
|
||||||
|
"uniq",
|
||||||
|
"unique",
|
||||||
|
"es6",
|
||||||
|
"duplicate",
|
||||||
|
"remove"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"name": "sindresorhus"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "array-uniq",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/sindresorhus/array-uniq.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "mocha"
|
||||||
|
},
|
||||||
|
"version": "1.0.2"
|
||||||
|
}
|
30
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/readme.md
generated
vendored
Normal file
30
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/readme.md
generated
vendored
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# array-uniq [![Build Status](https://travis-ci.org/sindresorhus/array-uniq.svg?branch=master)](https://travis-ci.org/sindresorhus/array-uniq)
|
||||||
|
|
||||||
|
> Create an array without duplicates
|
||||||
|
|
||||||
|
It's already pretty fast, but will be much faster when [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) becomes available in V8 (especially with large arrays).
|
||||||
|
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ npm install --save array-uniq
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
var arrayUniq = require('array-uniq');
|
||||||
|
|
||||||
|
arrayUniq([1, 1, 2, 3, 3]);
|
||||||
|
//=> [1, 2, 3]
|
||||||
|
|
||||||
|
arrayUniq(['foo', 'foo', 'bar', 'foo']);
|
||||||
|
//=> ['foo', 'bar']
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
2
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/.npmignore
generated
vendored
Normal file
2
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/.npmignore
generated
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
node_modules
|
||||||
|
*.log
|
19
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/LICENSE
generated
vendored
Normal file
19
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright (c) 2011 Mark Cavage, 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
|
50
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/README.md
generated
vendored
Normal file
50
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/README.md
generated
vendored
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS.
|
||||||
|
Currently BER encoding is supported; at some point I'll likely have to do DER.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Mostly, if you're *actually* needing to read and write ASN.1, you probably don't
|
||||||
|
need this readme to explain what and why. If you have no idea what ASN.1 is,
|
||||||
|
see this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc
|
||||||
|
|
||||||
|
The source is pretty much self-explanatory, and has read/write methods for the
|
||||||
|
common types out there.
|
||||||
|
|
||||||
|
### Decoding
|
||||||
|
|
||||||
|
The following reads an ASN.1 sequence with a boolean.
|
||||||
|
|
||||||
|
var Ber = require('asn1').Ber;
|
||||||
|
|
||||||
|
var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff]));
|
||||||
|
|
||||||
|
reader.readSequence();
|
||||||
|
console.log('Sequence len: ' + reader.length);
|
||||||
|
if (reader.peek() === Ber.Boolean)
|
||||||
|
console.log(reader.readBoolean());
|
||||||
|
|
||||||
|
### Encoding
|
||||||
|
|
||||||
|
The following generates the same payload as above.
|
||||||
|
|
||||||
|
var Ber = require('asn1').Ber;
|
||||||
|
|
||||||
|
var writer = new Ber.Writer();
|
||||||
|
|
||||||
|
writer.startSequence();
|
||||||
|
writer.writeBoolean(true);
|
||||||
|
writer.endSequence();
|
||||||
|
|
||||||
|
console.log(writer.buffer);
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
npm install asn1
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT.
|
||||||
|
|
||||||
|
## Bugs
|
||||||
|
|
||||||
|
See <https://github.com/mcavage/node-asn1/issues>.
|
13
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/errors.js
generated
vendored
Normal file
13
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/errors.js
generated
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
|
||||||
|
newInvalidAsn1Error: function(msg) {
|
||||||
|
var e = new Error();
|
||||||
|
e.name = 'InvalidAsn1Error';
|
||||||
|
e.message = msg || '';
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
27
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/index.js
generated
vendored
Normal file
27
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/index.js
generated
vendored
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
|
||||||
|
|
||||||
|
var errors = require('./errors');
|
||||||
|
var types = require('./types');
|
||||||
|
|
||||||
|
var Reader = require('./reader');
|
||||||
|
var Writer = require('./writer');
|
||||||
|
|
||||||
|
|
||||||
|
///--- Exports
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
|
||||||
|
Reader: Reader,
|
||||||
|
|
||||||
|
Writer: Writer
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var t in types) {
|
||||||
|
if (types.hasOwnProperty(t))
|
||||||
|
module.exports[t] = types[t];
|
||||||
|
}
|
||||||
|
for (var e in errors) {
|
||||||
|
if (errors.hasOwnProperty(e))
|
||||||
|
module.exports[e] = errors[e];
|
||||||
|
}
|
267
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/reader.js
generated
vendored
Normal file
267
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/reader.js
generated
vendored
Normal file
|
@ -0,0 +1,267 @@
|
||||||
|
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
|
||||||
|
|
||||||
|
var assert = require('assert');
|
||||||
|
|
||||||
|
var ASN1 = require('./types');
|
||||||
|
var errors = require('./errors');
|
||||||
|
|
||||||
|
|
||||||
|
///--- Globals
|
||||||
|
|
||||||
|
var newInvalidAsn1Error = errors.newInvalidAsn1Error;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///--- API
|
||||||
|
|
||||||
|
function Reader(data) {
|
||||||
|
if (!data || !Buffer.isBuffer(data))
|
||||||
|
throw new TypeError('data must be a node Buffer');
|
||||||
|
|
||||||
|
this._buf = data;
|
||||||
|
this._size = data.length;
|
||||||
|
|
||||||
|
// These hold the "current" state
|
||||||
|
this._len = 0;
|
||||||
|
this._offset = 0;
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
this.__defineGetter__('length', function() { return self._len; });
|
||||||
|
this.__defineGetter__('offset', function() { return self._offset; });
|
||||||
|
this.__defineGetter__('remain', function() {
|
||||||
|
return self._size - self._offset;
|
||||||
|
});
|
||||||
|
this.__defineGetter__('buffer', function() {
|
||||||
|
return self._buf.slice(self._offset);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a single byte and advances offset; you can pass in `true` to make this
|
||||||
|
* a "peek" operation (i.e., get the byte, but don't advance the offset).
|
||||||
|
*
|
||||||
|
* @param {Boolean} peek true means don't move offset.
|
||||||
|
* @return {Number} the next byte, null if not enough data.
|
||||||
|
*/
|
||||||
|
Reader.prototype.readByte = function(peek) {
|
||||||
|
if (this._size - this._offset < 1)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var b = this._buf[this._offset] & 0xff;
|
||||||
|
|
||||||
|
if (!peek)
|
||||||
|
this._offset += 1;
|
||||||
|
|
||||||
|
return b;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reader.prototype.peek = function() {
|
||||||
|
return this.readByte(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a (potentially) variable length off the BER buffer. This call is
|
||||||
|
* not really meant to be called directly, as callers have to manipulate
|
||||||
|
* the internal buffer afterwards.
|
||||||
|
*
|
||||||
|
* As a result of this call, you can call `Reader.length`, until the
|
||||||
|
* next thing called that does a readLength.
|
||||||
|
*
|
||||||
|
* @return {Number} the amount of offset to advance the buffer.
|
||||||
|
* @throws {InvalidAsn1Error} on bad ASN.1
|
||||||
|
*/
|
||||||
|
Reader.prototype.readLength = function(offset) {
|
||||||
|
if (offset === undefined)
|
||||||
|
offset = this._offset;
|
||||||
|
|
||||||
|
if (offset >= this._size)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var lenB = this._buf[offset++] & 0xff;
|
||||||
|
if (lenB === null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if ((lenB & 0x80) == 0x80) {
|
||||||
|
lenB &= 0x7f;
|
||||||
|
|
||||||
|
if (lenB == 0)
|
||||||
|
throw newInvalidAsn1Error('Indefinite length not supported');
|
||||||
|
|
||||||
|
if (lenB > 4)
|
||||||
|
throw newInvalidAsn1Error('encoding too long');
|
||||||
|
|
||||||
|
if (this._size - offset < lenB)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
this._len = 0;
|
||||||
|
for (var i = 0; i < lenB; i++)
|
||||||
|
this._len = (this._len << 8) + (this._buf[offset++] & 0xff);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Wasn't a variable length
|
||||||
|
this._len = lenB;
|
||||||
|
}
|
||||||
|
|
||||||
|
return offset;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses the next sequence in this BER buffer.
|
||||||
|
*
|
||||||
|
* To get the length of the sequence, call `Reader.length`.
|
||||||
|
*
|
||||||
|
* @return {Number} the sequence's tag.
|
||||||
|
*/
|
||||||
|
Reader.prototype.readSequence = function(tag) {
|
||||||
|
var seq = this.peek();
|
||||||
|
if (seq === null)
|
||||||
|
return null;
|
||||||
|
if (tag !== undefined && tag !== seq)
|
||||||
|
throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +
|
||||||
|
': got 0x' + seq.toString(16));
|
||||||
|
|
||||||
|
var o = this.readLength(this._offset + 1); // stored in `length`
|
||||||
|
if (o === null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
this._offset = o;
|
||||||
|
return seq;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reader.prototype.readInt = function() {
|
||||||
|
return this._readTag(ASN1.Integer);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reader.prototype.readBoolean = function() {
|
||||||
|
return (this._readTag(ASN1.Boolean) === 0 ? false : true);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reader.prototype.readEnumeration = function() {
|
||||||
|
return this._readTag(ASN1.Enumeration);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reader.prototype.readString = function(tag, retbuf) {
|
||||||
|
if (!tag)
|
||||||
|
tag = ASN1.OctetString;
|
||||||
|
|
||||||
|
var b = this.peek();
|
||||||
|
if (b === null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (b !== tag)
|
||||||
|
throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +
|
||||||
|
': got 0x' + b.toString(16));
|
||||||
|
|
||||||
|
var o = this.readLength(this._offset + 1); // stored in `length`
|
||||||
|
|
||||||
|
if (o === null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (this.length > this._size - o)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
this._offset = o;
|
||||||
|
|
||||||
|
if (this.length === 0)
|
||||||
|
return '';
|
||||||
|
|
||||||
|
var str = this._buf.slice(this._offset, this._offset + this.length);
|
||||||
|
this._offset += this.length;
|
||||||
|
|
||||||
|
return retbuf ? str : str.toString('utf8');
|
||||||
|
};
|
||||||
|
|
||||||
|
Reader.prototype.readOID = function(tag) {
|
||||||
|
if (!tag)
|
||||||
|
tag = ASN1.OID;
|
||||||
|
|
||||||
|
var b = this.peek();
|
||||||
|
if (b === null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (b !== tag)
|
||||||
|
throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +
|
||||||
|
': got 0x' + b.toString(16));
|
||||||
|
|
||||||
|
var o = this.readLength(this._offset + 1); // stored in `length`
|
||||||
|
if (o === null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (this.length > this._size - o)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
this._offset = o;
|
||||||
|
|
||||||
|
var values = [];
|
||||||
|
var value = 0;
|
||||||
|
|
||||||
|
for (var i = 0; i < this.length; i++) {
|
||||||
|
var byte = this._buf[this._offset++] & 0xff;
|
||||||
|
|
||||||
|
value <<= 7;
|
||||||
|
value += byte & 0x7f;
|
||||||
|
if ((byte & 0x80) == 0) {
|
||||||
|
values.push(value);
|
||||||
|
value = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
value = values.shift();
|
||||||
|
values.unshift(value % 40);
|
||||||
|
values.unshift((value / 40) >> 0);
|
||||||
|
|
||||||
|
return values.join('.');
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reader.prototype._readTag = function(tag) {
|
||||||
|
assert.ok(tag !== undefined);
|
||||||
|
|
||||||
|
var b = this.peek();
|
||||||
|
|
||||||
|
if (b === null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (b !== tag)
|
||||||
|
throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +
|
||||||
|
': got 0x' + b.toString(16));
|
||||||
|
|
||||||
|
var o = this.readLength(this._offset + 1); // stored in `length`
|
||||||
|
if (o === null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (this.length > 4)
|
||||||
|
throw newInvalidAsn1Error('Integer too long: ' + this.length);
|
||||||
|
|
||||||
|
if (this.length > this._size - o)
|
||||||
|
return null;
|
||||||
|
this._offset = o;
|
||||||
|
|
||||||
|
var fb = this._buf[this._offset++];
|
||||||
|
var value = 0;
|
||||||
|
|
||||||
|
value = fb & 0x7F;
|
||||||
|
for (var i = 1; i < this.length; i++) {
|
||||||
|
value <<= 8;
|
||||||
|
value |= (this._buf[this._offset++] & 0xff);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((fb & 0x80) == 0x80)
|
||||||
|
value = -value;
|
||||||
|
|
||||||
|
return value;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///--- Exported API
|
||||||
|
|
||||||
|
module.exports = Reader;
|
36
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/types.js
generated
vendored
Normal file
36
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/types.js
generated
vendored
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
EOC: 0,
|
||||||
|
Boolean: 1,
|
||||||
|
Integer: 2,
|
||||||
|
BitString: 3,
|
||||||
|
OctetString: 4,
|
||||||
|
Null: 5,
|
||||||
|
OID: 6,
|
||||||
|
ObjectDescriptor: 7,
|
||||||
|
External: 8,
|
||||||
|
Real: 9, // float
|
||||||
|
Enumeration: 10,
|
||||||
|
PDV: 11,
|
||||||
|
Utf8String: 12,
|
||||||
|
RelativeOID: 13,
|
||||||
|
Sequence: 16,
|
||||||
|
Set: 17,
|
||||||
|
NumericString: 18,
|
||||||
|
PrintableString: 19,
|
||||||
|
T61String: 20,
|
||||||
|
VideotexString: 21,
|
||||||
|
IA5String: 22,
|
||||||
|
UTCTime: 23,
|
||||||
|
GeneralizedTime: 24,
|
||||||
|
GraphicString: 25,
|
||||||
|
VisibleString: 26,
|
||||||
|
GeneralString: 28,
|
||||||
|
UniversalString: 29,
|
||||||
|
CharacterString: 30,
|
||||||
|
BMPString: 31,
|
||||||
|
Constructor: 32,
|
||||||
|
Context: 128
|
||||||
|
};
|
317
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/writer.js
generated
vendored
Normal file
317
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/writer.js
generated
vendored
Normal file
|
@ -0,0 +1,317 @@
|
||||||
|
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
|
||||||
|
|
||||||
|
var assert = require('assert');
|
||||||
|
var ASN1 = require('./types');
|
||||||
|
var errors = require('./errors');
|
||||||
|
|
||||||
|
|
||||||
|
///--- Globals
|
||||||
|
|
||||||
|
var newInvalidAsn1Error = errors.newInvalidAsn1Error;
|
||||||
|
|
||||||
|
var DEFAULT_OPTS = {
|
||||||
|
size: 1024,
|
||||||
|
growthFactor: 8
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
///--- Helpers
|
||||||
|
|
||||||
|
function merge(from, to) {
|
||||||
|
assert.ok(from);
|
||||||
|
assert.equal(typeof(from), 'object');
|
||||||
|
assert.ok(to);
|
||||||
|
assert.equal(typeof(to), 'object');
|
||||||
|
|
||||||
|
var keys = Object.getOwnPropertyNames(from);
|
||||||
|
keys.forEach(function(key) {
|
||||||
|
if (to[key])
|
||||||
|
return;
|
||||||
|
|
||||||
|
var value = Object.getOwnPropertyDescriptor(from, key);
|
||||||
|
Object.defineProperty(to, key, value);
|
||||||
|
});
|
||||||
|
|
||||||
|
return to;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///--- API
|
||||||
|
|
||||||
|
function Writer(options) {
|
||||||
|
options = merge(DEFAULT_OPTS, options || {});
|
||||||
|
|
||||||
|
this._buf = new Buffer(options.size || 1024);
|
||||||
|
this._size = this._buf.length;
|
||||||
|
this._offset = 0;
|
||||||
|
this._options = options;
|
||||||
|
|
||||||
|
// A list of offsets in the buffer where we need to insert
|
||||||
|
// sequence tag/len pairs.
|
||||||
|
this._seq = [];
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
this.__defineGetter__('buffer', function() {
|
||||||
|
if (self._seq.length)
|
||||||
|
throw new InvalidAsn1Error(self._seq.length + ' unended sequence(s)');
|
||||||
|
|
||||||
|
return self._buf.slice(0, self._offset);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Writer.prototype.writeByte = function(b) {
|
||||||
|
if (typeof(b) !== 'number')
|
||||||
|
throw new TypeError('argument must be a Number');
|
||||||
|
|
||||||
|
this._ensure(1);
|
||||||
|
this._buf[this._offset++] = b;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Writer.prototype.writeInt = function(i, tag) {
|
||||||
|
if (typeof(i) !== 'number')
|
||||||
|
throw new TypeError('argument must be a Number');
|
||||||
|
if (typeof(tag) !== 'number')
|
||||||
|
tag = ASN1.Integer;
|
||||||
|
|
||||||
|
var sz = 4;
|
||||||
|
|
||||||
|
while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000)) &&
|
||||||
|
(sz > 1)) {
|
||||||
|
sz--;
|
||||||
|
i <<= 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sz > 4)
|
||||||
|
throw new InvalidAsn1Error('BER ints cannot be > 0xffffffff');
|
||||||
|
|
||||||
|
this._ensure(2 + sz);
|
||||||
|
this._buf[this._offset++] = tag;
|
||||||
|
this._buf[this._offset++] = sz;
|
||||||
|
|
||||||
|
while (sz-- > 0) {
|
||||||
|
this._buf[this._offset++] = ((i & 0xff000000) >> 24);
|
||||||
|
i <<= 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Writer.prototype.writeNull = function() {
|
||||||
|
this.writeByte(ASN1.Null);
|
||||||
|
this.writeByte(0x00);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Writer.prototype.writeEnumeration = function(i, tag) {
|
||||||
|
if (typeof(i) !== 'number')
|
||||||
|
throw new TypeError('argument must be a Number');
|
||||||
|
if (typeof(tag) !== 'number')
|
||||||
|
tag = ASN1.Enumeration;
|
||||||
|
|
||||||
|
return this.writeInt(i, tag);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Writer.prototype.writeBoolean = function(b, tag) {
|
||||||
|
if (typeof(b) !== 'boolean')
|
||||||
|
throw new TypeError('argument must be a Boolean');
|
||||||
|
if (typeof(tag) !== 'number')
|
||||||
|
tag = ASN1.Boolean;
|
||||||
|
|
||||||
|
this._ensure(3);
|
||||||
|
this._buf[this._offset++] = tag;
|
||||||
|
this._buf[this._offset++] = 0x01;
|
||||||
|
this._buf[this._offset++] = b ? 0xff : 0x00;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Writer.prototype.writeString = function(s, tag) {
|
||||||
|
if (typeof(s) !== 'string')
|
||||||
|
throw new TypeError('argument must be a string (was: ' + typeof(s) + ')');
|
||||||
|
if (typeof(tag) !== 'number')
|
||||||
|
tag = ASN1.OctetString;
|
||||||
|
|
||||||
|
var len = Buffer.byteLength(s);
|
||||||
|
this.writeByte(tag);
|
||||||
|
this.writeLength(len);
|
||||||
|
if (len) {
|
||||||
|
this._ensure(len);
|
||||||
|
this._buf.write(s, this._offset);
|
||||||
|
this._offset += len;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Writer.prototype.writeBuffer = function(buf, tag) {
|
||||||
|
if (typeof(tag) !== 'number')
|
||||||
|
throw new TypeError('tag must be a number');
|
||||||
|
if (!Buffer.isBuffer(buf))
|
||||||
|
throw new TypeError('argument must be a buffer');
|
||||||
|
|
||||||
|
this.writeByte(tag);
|
||||||
|
this.writeLength(buf.length);
|
||||||
|
this._ensure(buf.length);
|
||||||
|
buf.copy(this._buf, this._offset, 0, buf.length);
|
||||||
|
this._offset += buf.length;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Writer.prototype.writeStringArray = function(strings) {
|
||||||
|
if ((!strings instanceof Array))
|
||||||
|
throw new TypeError('argument must be an Array[String]');
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
strings.forEach(function(s) {
|
||||||
|
self.writeString(s);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// This is really to solve DER cases, but whatever for now
|
||||||
|
Writer.prototype.writeOID = function(s, tag) {
|
||||||
|
if (typeof(s) !== 'string')
|
||||||
|
throw new TypeError('argument must be a string');
|
||||||
|
if (typeof(tag) !== 'number')
|
||||||
|
tag = ASN1.OID;
|
||||||
|
|
||||||
|
if (!/^([0-9]+\.){3,}[0-9]+$/.test(s))
|
||||||
|
throw new Error('argument is not a valid OID string');
|
||||||
|
|
||||||
|
function encodeOctet(bytes, octet) {
|
||||||
|
if (octet < 128) {
|
||||||
|
bytes.push(octet);
|
||||||
|
} else if (octet < 16384) {
|
||||||
|
bytes.push((octet >>> 7) | 0x80);
|
||||||
|
bytes.push(octet & 0x7F);
|
||||||
|
} else if (octet < 2097152) {
|
||||||
|
bytes.push((octet >>> 14) | 0x80);
|
||||||
|
bytes.push(((octet >>> 7) | 0x80) & 0xFF);
|
||||||
|
bytes.push(octet & 0x7F);
|
||||||
|
} else if (octet < 268435456) {
|
||||||
|
bytes.push((octet >>> 21) | 0x80);
|
||||||
|
bytes.push(((octet >>> 14) | 0x80) & 0xFF);
|
||||||
|
bytes.push(((octet >>> 7) | 0x80) & 0xFF);
|
||||||
|
bytes.push(octet & 0x7F);
|
||||||
|
} else {
|
||||||
|
bytes.push(((octet >>> 28) | 0x80) & 0xFF);
|
||||||
|
bytes.push(((octet >>> 21) | 0x80) & 0xFF);
|
||||||
|
bytes.push(((octet >>> 14) | 0x80) & 0xFF);
|
||||||
|
bytes.push(((octet >>> 7) | 0x80) & 0xFF);
|
||||||
|
bytes.push(octet & 0x7F);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var tmp = s.split('.');
|
||||||
|
var bytes = [];
|
||||||
|
bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10));
|
||||||
|
tmp.slice(2).forEach(function(b) {
|
||||||
|
encodeOctet(bytes, parseInt(b, 10));
|
||||||
|
});
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
this._ensure(2 + bytes.length);
|
||||||
|
this.writeByte(tag);
|
||||||
|
this.writeLength(bytes.length);
|
||||||
|
bytes.forEach(function(b) {
|
||||||
|
self.writeByte(b);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Writer.prototype.writeLength = function(len) {
|
||||||
|
if (typeof(len) !== 'number')
|
||||||
|
throw new TypeError('argument must be a Number');
|
||||||
|
|
||||||
|
this._ensure(4);
|
||||||
|
|
||||||
|
if (len <= 0x7f) {
|
||||||
|
this._buf[this._offset++] = len;
|
||||||
|
} else if (len <= 0xff) {
|
||||||
|
this._buf[this._offset++] = 0x81;
|
||||||
|
this._buf[this._offset++] = len;
|
||||||
|
} else if (len <= 0xffff) {
|
||||||
|
this._buf[this._offset++] = 0x82;
|
||||||
|
this._buf[this._offset++] = len >> 8;
|
||||||
|
this._buf[this._offset++] = len;
|
||||||
|
} else if (len <= 0xffffff) {
|
||||||
|
this._shift(start, len, 1);
|
||||||
|
this._buf[this._offset++] = 0x83;
|
||||||
|
this._buf[this._offset++] = len >> 16;
|
||||||
|
this._buf[this._offset++] = len >> 8;
|
||||||
|
this._buf[this._offset++] = len;
|
||||||
|
} else {
|
||||||
|
throw new InvalidAsn1ERror('Length too long (> 4 bytes)');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Writer.prototype.startSequence = function(tag) {
|
||||||
|
if (typeof(tag) !== 'number')
|
||||||
|
tag = ASN1.Sequence | ASN1.Constructor;
|
||||||
|
|
||||||
|
this.writeByte(tag);
|
||||||
|
this._seq.push(this._offset);
|
||||||
|
this._ensure(3);
|
||||||
|
this._offset += 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Writer.prototype.endSequence = function() {
|
||||||
|
var seq = this._seq.pop();
|
||||||
|
var start = seq + 3;
|
||||||
|
var len = this._offset - start;
|
||||||
|
|
||||||
|
if (len <= 0x7f) {
|
||||||
|
this._shift(start, len, -2);
|
||||||
|
this._buf[seq] = len;
|
||||||
|
} else if (len <= 0xff) {
|
||||||
|
this._shift(start, len, -1);
|
||||||
|
this._buf[seq] = 0x81;
|
||||||
|
this._buf[seq + 1] = len;
|
||||||
|
} else if (len <= 0xffff) {
|
||||||
|
this._buf[seq] = 0x82;
|
||||||
|
this._buf[seq + 1] = len >> 8;
|
||||||
|
this._buf[seq + 2] = len;
|
||||||
|
} else if (len <= 0xffffff) {
|
||||||
|
this._shift(start, len, 1);
|
||||||
|
this._buf[seq] = 0x83;
|
||||||
|
this._buf[seq + 1] = len >> 16;
|
||||||
|
this._buf[seq + 2] = len >> 8;
|
||||||
|
this._buf[seq + 3] = len;
|
||||||
|
} else {
|
||||||
|
throw new InvalidAsn1Error('Sequence too long');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Writer.prototype._shift = function(start, len, shift) {
|
||||||
|
assert.ok(start !== undefined);
|
||||||
|
assert.ok(len !== undefined);
|
||||||
|
assert.ok(shift);
|
||||||
|
|
||||||
|
this._buf.copy(this._buf, start + shift, start, start + len);
|
||||||
|
this._offset += shift;
|
||||||
|
};
|
||||||
|
|
||||||
|
Writer.prototype._ensure = function(len) {
|
||||||
|
assert.ok(len);
|
||||||
|
|
||||||
|
if (this._size - this._offset < len) {
|
||||||
|
var sz = this._size * this._options.growthFactor;
|
||||||
|
if (sz - this._offset < len)
|
||||||
|
sz += len;
|
||||||
|
|
||||||
|
var buf = new Buffer(sz);
|
||||||
|
|
||||||
|
this._buf.copy(buf, 0, 0, this._offset);
|
||||||
|
this._buf = buf;
|
||||||
|
this._size = sz;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///--- Exported API
|
||||||
|
|
||||||
|
module.exports = Writer;
|
20
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/index.js
generated
vendored
Normal file
20
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/index.js
generated
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
|
||||||
|
|
||||||
|
// If you have no idea what ASN.1 or BER is, see this:
|
||||||
|
// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc
|
||||||
|
|
||||||
|
var Ber = require('./ber/index');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///--- Exported API
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
|
||||||
|
Ber: Ber,
|
||||||
|
|
||||||
|
BerReader: Ber.Reader,
|
||||||
|
|
||||||
|
BerWriter: Ber.Writer
|
||||||
|
|
||||||
|
};
|
88
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/package.json
generated
vendored
Normal file
88
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/package.json
generated
vendored
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"asn1@0.1.11",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/http-signature"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_defaultsLoaded": true,
|
||||||
|
"_engineSupported": true,
|
||||||
|
"_from": "asn1@0.1.11",
|
||||||
|
"_id": "asn1@0.1.11",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/asn1",
|
||||||
|
"_nodeVersion": "v0.6.6",
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "mcavage@gmail.com",
|
||||||
|
"name": "mcavage"
|
||||||
|
},
|
||||||
|
"_npmVersion": "1.1.0-beta-4",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "asn1",
|
||||||
|
"raw": "asn1@0.1.11",
|
||||||
|
"rawSpec": "0.1.11",
|
||||||
|
"scope": null,
|
||||||
|
"spec": "0.1.11",
|
||||||
|
"type": "version"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/http-signature"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz",
|
||||||
|
"_shasum": "559be18376d08a4ec4dbe80877d27818639b2df7",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "asn1@0.1.11",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/http-signature",
|
||||||
|
"author": {
|
||||||
|
"email": "mcavage@gmail.com",
|
||||||
|
"name": "Mark Cavage"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/mcavage/node-asn1/issues"
|
||||||
|
},
|
||||||
|
"contributors": [
|
||||||
|
{
|
||||||
|
"email": "loki@animata.net",
|
||||||
|
"name": "David Gwynne"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"email": "yunong@joyent.com",
|
||||||
|
"name": "Yunong Xiao"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": {},
|
||||||
|
"description": "Contains parsers and serializers for ASN.1 (currently BER only)",
|
||||||
|
"devDependencies": {
|
||||||
|
"tap": "0.1.4"
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "559be18376d08a4ec4dbe80877d27818639b2df7",
|
||||||
|
"tarball": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.9"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/mcavage/node-asn1#readme",
|
||||||
|
"main": "lib/index.js",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "mcavage@gmail.com",
|
||||||
|
"name": "mcavage"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "asn1",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/mcavage/node-asn1.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"pretest": "which gjslint; if [[ \"$?\" = 0 ]] ; then gjslint --nojsdoc -r lib -r tst; else echo \"Missing gjslint. Skipping lint\"; fi",
|
||||||
|
"test": "./node_modules/.bin/tap ./tst"
|
||||||
|
},
|
||||||
|
"version": "0.1.11"
|
||||||
|
}
|
172
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/reader.test.js
generated
vendored
Normal file
172
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/reader.test.js
generated
vendored
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
|
||||||
|
|
||||||
|
var test = require('tap').test;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///--- Globals
|
||||||
|
|
||||||
|
var BerReader;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///--- Tests
|
||||||
|
|
||||||
|
test('load library', function(t) {
|
||||||
|
BerReader = require('../../lib/index').BerReader;
|
||||||
|
t.ok(BerReader);
|
||||||
|
try {
|
||||||
|
new BerReader();
|
||||||
|
t.fail('Should have thrown');
|
||||||
|
} catch (e) {
|
||||||
|
t.ok(e instanceof TypeError, 'Should have been a type error');
|
||||||
|
}
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('read byte', function(t) {
|
||||||
|
var reader = new BerReader(new Buffer([0xde]));
|
||||||
|
t.ok(reader);
|
||||||
|
t.equal(reader.readByte(), 0xde, 'wrong value');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('read 1 byte int', function(t) {
|
||||||
|
var reader = new BerReader(new Buffer([0x02, 0x01, 0x03]));
|
||||||
|
t.ok(reader);
|
||||||
|
t.equal(reader.readInt(), 0x03, 'wrong value');
|
||||||
|
t.equal(reader.length, 0x01, 'wrong length');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('read 2 byte int', function(t) {
|
||||||
|
var reader = new BerReader(new Buffer([0x02, 0x02, 0x7e, 0xde]));
|
||||||
|
t.ok(reader);
|
||||||
|
t.equal(reader.readInt(), 0x7ede, 'wrong value');
|
||||||
|
t.equal(reader.length, 0x02, 'wrong length');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('read 3 byte int', function(t) {
|
||||||
|
var reader = new BerReader(new Buffer([0x02, 0x03, 0x7e, 0xde, 0x03]));
|
||||||
|
t.ok(reader);
|
||||||
|
t.equal(reader.readInt(), 0x7ede03, 'wrong value');
|
||||||
|
t.equal(reader.length, 0x03, 'wrong length');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('read 4 byte int', function(t) {
|
||||||
|
var reader = new BerReader(new Buffer([0x02, 0x04, 0x7e, 0xde, 0x03, 0x01]));
|
||||||
|
t.ok(reader);
|
||||||
|
t.equal(reader.readInt(), 0x7ede0301, 'wrong value');
|
||||||
|
t.equal(reader.length, 0x04, 'wrong length');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('read boolean true', function(t) {
|
||||||
|
var reader = new BerReader(new Buffer([0x01, 0x01, 0xff]));
|
||||||
|
t.ok(reader);
|
||||||
|
t.equal(reader.readBoolean(), true, 'wrong value');
|
||||||
|
t.equal(reader.length, 0x01, 'wrong length');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('read boolean false', function(t) {
|
||||||
|
var reader = new BerReader(new Buffer([0x01, 0x01, 0x00]));
|
||||||
|
t.ok(reader);
|
||||||
|
t.equal(reader.readBoolean(), false, 'wrong value');
|
||||||
|
t.equal(reader.length, 0x01, 'wrong length');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('read enumeration', function(t) {
|
||||||
|
var reader = new BerReader(new Buffer([0x0a, 0x01, 0x20]));
|
||||||
|
t.ok(reader);
|
||||||
|
t.equal(reader.readEnumeration(), 0x20, 'wrong value');
|
||||||
|
t.equal(reader.length, 0x01, 'wrong length');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('read string', function(t) {
|
||||||
|
var dn = 'cn=foo,ou=unit,o=test';
|
||||||
|
var buf = new Buffer(dn.length + 2);
|
||||||
|
buf[0] = 0x04;
|
||||||
|
buf[1] = Buffer.byteLength(dn);
|
||||||
|
buf.write(dn, 2);
|
||||||
|
var reader = new BerReader(buf);
|
||||||
|
t.ok(reader);
|
||||||
|
t.equal(reader.readString(), dn, 'wrong value');
|
||||||
|
t.equal(reader.length, dn.length, 'wrong length');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('read sequence', function(t) {
|
||||||
|
var reader = new BerReader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff]));
|
||||||
|
t.ok(reader);
|
||||||
|
t.equal(reader.readSequence(), 0x30, 'wrong value');
|
||||||
|
t.equal(reader.length, 0x03, 'wrong length');
|
||||||
|
t.equal(reader.readBoolean(), true, 'wrong value');
|
||||||
|
t.equal(reader.length, 0x01, 'wrong length');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('anonymous LDAPv3 bind', function(t) {
|
||||||
|
var BIND = new Buffer(14);
|
||||||
|
BIND[0] = 0x30; // Sequence
|
||||||
|
BIND[1] = 12; // len
|
||||||
|
BIND[2] = 0x02; // ASN.1 Integer
|
||||||
|
BIND[3] = 1; // len
|
||||||
|
BIND[4] = 0x04; // msgid (make up 4)
|
||||||
|
BIND[5] = 0x60; // Bind Request
|
||||||
|
BIND[6] = 7; // len
|
||||||
|
BIND[7] = 0x02; // ASN.1 Integer
|
||||||
|
BIND[8] = 1; // len
|
||||||
|
BIND[9] = 0x03; // v3
|
||||||
|
BIND[10] = 0x04; // String (bind dn)
|
||||||
|
BIND[11] = 0; // len
|
||||||
|
BIND[12] = 0x80; // ContextSpecific (choice)
|
||||||
|
BIND[13] = 0; // simple bind
|
||||||
|
|
||||||
|
// Start testing ^^
|
||||||
|
var ber = new BerReader(BIND);
|
||||||
|
t.equal(ber.readSequence(), 48, 'Not an ASN.1 Sequence');
|
||||||
|
t.equal(ber.length, 12, 'Message length should be 12');
|
||||||
|
t.equal(ber.readInt(), 4, 'Message id should have been 4');
|
||||||
|
t.equal(ber.readSequence(), 96, 'Bind Request should have been 96');
|
||||||
|
t.equal(ber.length, 7, 'Bind length should have been 7');
|
||||||
|
t.equal(ber.readInt(), 3, 'LDAP version should have been 3');
|
||||||
|
t.equal(ber.readString(), '', 'Bind DN should have been empty');
|
||||||
|
t.equal(ber.length, 0, 'string length should have been 0');
|
||||||
|
t.equal(ber.readByte(), 0x80, 'Should have been ContextSpecific (choice)');
|
||||||
|
t.equal(ber.readByte(), 0, 'Should have been simple bind');
|
||||||
|
t.equal(null, ber.readByte(), 'Should be out of data');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('long string', function(t) {
|
||||||
|
var buf = new Buffer(256);
|
||||||
|
var o;
|
||||||
|
var s =
|
||||||
|
'2;649;CN=Red Hat CS 71GA Demo,O=Red Hat CS 71GA Demo,C=US;' +
|
||||||
|
'CN=RHCS Agent - admin01,UID=admin01,O=redhat,C=US [1] This is ' +
|
||||||
|
'Teena Vradmin\'s description.';
|
||||||
|
buf[0] = 0x04;
|
||||||
|
buf[1] = 0x81;
|
||||||
|
buf[2] = 0x94;
|
||||||
|
buf.write(s, 3);
|
||||||
|
var ber = new BerReader(buf.slice(0, 3 + s.length));
|
||||||
|
t.equal(ber.readString(), s);
|
||||||
|
t.end();
|
||||||
|
});
|
296
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/writer.test.js
generated
vendored
Normal file
296
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/writer.test.js
generated
vendored
Normal file
|
@ -0,0 +1,296 @@
|
||||||
|
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
|
||||||
|
|
||||||
|
var test = require('tap').test;
|
||||||
|
var sys = require('sys');
|
||||||
|
|
||||||
|
///--- Globals
|
||||||
|
|
||||||
|
var BerWriter;
|
||||||
|
|
||||||
|
var BerReader;
|
||||||
|
|
||||||
|
|
||||||
|
///--- Tests
|
||||||
|
|
||||||
|
test('load library', function(t) {
|
||||||
|
BerWriter = require('../../lib/index').BerWriter;
|
||||||
|
t.ok(BerWriter);
|
||||||
|
t.ok(new BerWriter());
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('write byte', function(t) {
|
||||||
|
var writer = new BerWriter();
|
||||||
|
|
||||||
|
writer.writeByte(0xC2);
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
t.equal(ber.length, 1, 'Wrong length');
|
||||||
|
t.equal(ber[0], 0xC2, 'value wrong');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('write 1 byte int', function(t) {
|
||||||
|
var writer = new BerWriter();
|
||||||
|
|
||||||
|
writer.writeInt(0x7f);
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
t.equal(ber.length, 3, 'Wrong length for an int: ' + ber.length);
|
||||||
|
t.equal(ber[0], 0x02, 'ASN.1 tag wrong (2) -> ' + ber[0]);
|
||||||
|
t.equal(ber[1], 0x01, 'length wrong(1) -> ' + ber[1]);
|
||||||
|
t.equal(ber[2], 0x7f, 'value wrong(3) -> ' + ber[2]);
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('write 2 byte int', function(t) {
|
||||||
|
var writer = new BerWriter();
|
||||||
|
|
||||||
|
writer.writeInt(0x7ffe);
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
t.equal(ber.length, 4, 'Wrong length for an int');
|
||||||
|
t.equal(ber[0], 0x02, 'ASN.1 tag wrong');
|
||||||
|
t.equal(ber[1], 0x02, 'length wrong');
|
||||||
|
t.equal(ber[2], 0x7f, 'value wrong (byte 1)');
|
||||||
|
t.equal(ber[3], 0xfe, 'value wrong (byte 2)');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('write 3 byte int', function(t) {
|
||||||
|
var writer = new BerWriter();
|
||||||
|
|
||||||
|
writer.writeInt(0x7ffffe);
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
t.equal(ber.length, 5, 'Wrong length for an int');
|
||||||
|
t.equal(ber[0], 0x02, 'ASN.1 tag wrong');
|
||||||
|
t.equal(ber[1], 0x03, 'length wrong');
|
||||||
|
t.equal(ber[2], 0x7f, 'value wrong (byte 1)');
|
||||||
|
t.equal(ber[3], 0xff, 'value wrong (byte 2)');
|
||||||
|
t.equal(ber[4], 0xfe, 'value wrong (byte 3)');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('write 4 byte int', function(t) {
|
||||||
|
var writer = new BerWriter();
|
||||||
|
|
||||||
|
writer.writeInt(0x7ffffffe);
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
|
||||||
|
t.equal(ber.length, 6, 'Wrong length for an int');
|
||||||
|
t.equal(ber[0], 0x02, 'ASN.1 tag wrong');
|
||||||
|
t.equal(ber[1], 0x04, 'length wrong');
|
||||||
|
t.equal(ber[2], 0x7f, 'value wrong (byte 1)');
|
||||||
|
t.equal(ber[3], 0xff, 'value wrong (byte 2)');
|
||||||
|
t.equal(ber[4], 0xff, 'value wrong (byte 3)');
|
||||||
|
t.equal(ber[5], 0xfe, 'value wrong (byte 4)');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('write boolean', function(t) {
|
||||||
|
var writer = new BerWriter();
|
||||||
|
|
||||||
|
writer.writeBoolean(true);
|
||||||
|
writer.writeBoolean(false);
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
t.equal(ber.length, 6, 'Wrong length');
|
||||||
|
t.equal(ber[0], 0x01, 'tag wrong');
|
||||||
|
t.equal(ber[1], 0x01, 'length wrong');
|
||||||
|
t.equal(ber[2], 0xff, 'value wrong');
|
||||||
|
t.equal(ber[3], 0x01, 'tag wrong');
|
||||||
|
t.equal(ber[4], 0x01, 'length wrong');
|
||||||
|
t.equal(ber[5], 0x00, 'value wrong');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('write string', function(t) {
|
||||||
|
var writer = new BerWriter();
|
||||||
|
writer.writeString('hello world');
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
t.equal(ber.length, 13, 'wrong length');
|
||||||
|
t.equal(ber[0], 0x04, 'wrong tag');
|
||||||
|
t.equal(ber[1], 11, 'wrong length');
|
||||||
|
t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('write buffer', function(t) {
|
||||||
|
var writer = new BerWriter();
|
||||||
|
// write some stuff to start with
|
||||||
|
writer.writeString('hello world');
|
||||||
|
var ber = writer.buffer;
|
||||||
|
var buf = new Buffer([0x04, 0x0b, 0x30, 0x09, 0x02, 0x01, 0x0f, 0x01, 0x01,
|
||||||
|
0xff, 0x01, 0x01, 0xff]);
|
||||||
|
writer.writeBuffer(buf.slice(2, buf.length), 0x04);
|
||||||
|
ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
t.equal(ber.length, 26, 'wrong length');
|
||||||
|
t.equal(ber[0], 0x04, 'wrong tag');
|
||||||
|
t.equal(ber[1], 11, 'wrong length');
|
||||||
|
t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value');
|
||||||
|
t.equal(ber[13], buf[0], 'wrong tag');
|
||||||
|
t.equal(ber[14], buf[1], 'wrong length');
|
||||||
|
for (var i = 13, j = 0; i < ber.length && j < buf.length; i++, j++) {
|
||||||
|
t.equal(ber[i], buf[j], 'buffer contents not identical');
|
||||||
|
}
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('write string array', function(t) {
|
||||||
|
var writer = new BerWriter();
|
||||||
|
writer.writeStringArray(['hello world', 'fubar!']);
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
|
||||||
|
t.equal(ber.length, 21, 'wrong length');
|
||||||
|
t.equal(ber[0], 0x04, 'wrong tag');
|
||||||
|
t.equal(ber[1], 11, 'wrong length');
|
||||||
|
t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value');
|
||||||
|
|
||||||
|
t.equal(ber[13], 0x04, 'wrong tag');
|
||||||
|
t.equal(ber[14], 6, 'wrong length');
|
||||||
|
t.equal(ber.slice(15).toString('utf8'), 'fubar!', 'wrong value');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('resize internal buffer', function(t) {
|
||||||
|
var writer = new BerWriter({size: 2});
|
||||||
|
writer.writeString('hello world');
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
t.equal(ber.length, 13, 'wrong length');
|
||||||
|
t.equal(ber[0], 0x04, 'wrong tag');
|
||||||
|
t.equal(ber[1], 11, 'wrong length');
|
||||||
|
t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('sequence', function(t) {
|
||||||
|
var writer = new BerWriter({size: 25});
|
||||||
|
writer.startSequence();
|
||||||
|
writer.writeString('hello world');
|
||||||
|
writer.endSequence();
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
console.log(ber);
|
||||||
|
t.equal(ber.length, 15, 'wrong length');
|
||||||
|
t.equal(ber[0], 0x30, 'wrong tag');
|
||||||
|
t.equal(ber[1], 13, 'wrong length');
|
||||||
|
t.equal(ber[2], 0x04, 'wrong tag');
|
||||||
|
t.equal(ber[3], 11, 'wrong length');
|
||||||
|
t.equal(ber.slice(4).toString('utf8'), 'hello world', 'wrong value');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('nested sequence', function(t) {
|
||||||
|
var writer = new BerWriter({size: 25});
|
||||||
|
writer.startSequence();
|
||||||
|
writer.writeString('hello world');
|
||||||
|
writer.startSequence();
|
||||||
|
writer.writeString('hello world');
|
||||||
|
writer.endSequence();
|
||||||
|
writer.endSequence();
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
t.equal(ber.length, 30, 'wrong length');
|
||||||
|
t.equal(ber[0], 0x30, 'wrong tag');
|
||||||
|
t.equal(ber[1], 28, 'wrong length');
|
||||||
|
t.equal(ber[2], 0x04, 'wrong tag');
|
||||||
|
t.equal(ber[3], 11, 'wrong length');
|
||||||
|
t.equal(ber.slice(4, 15).toString('utf8'), 'hello world', 'wrong value');
|
||||||
|
t.equal(ber[15], 0x30, 'wrong tag');
|
||||||
|
t.equal(ber[16], 13, 'wrong length');
|
||||||
|
t.equal(ber[17], 0x04, 'wrong tag');
|
||||||
|
t.equal(ber[18], 11, 'wrong length');
|
||||||
|
t.equal(ber.slice(19, 30).toString('utf8'), 'hello world', 'wrong value');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('LDAP bind message', function(t) {
|
||||||
|
var dn = 'cn=foo,ou=unit,o=test';
|
||||||
|
var writer = new BerWriter();
|
||||||
|
writer.startSequence();
|
||||||
|
writer.writeInt(3); // msgid = 3
|
||||||
|
writer.startSequence(0x60); // ldap bind
|
||||||
|
writer.writeInt(3); // ldap v3
|
||||||
|
writer.writeString(dn);
|
||||||
|
writer.writeByte(0x80);
|
||||||
|
writer.writeByte(0x00);
|
||||||
|
writer.endSequence();
|
||||||
|
writer.endSequence();
|
||||||
|
var ber = writer.buffer;
|
||||||
|
|
||||||
|
t.ok(ber);
|
||||||
|
t.equal(ber.length, 35, 'wrong length (buffer)');
|
||||||
|
t.equal(ber[0], 0x30, 'wrong tag');
|
||||||
|
t.equal(ber[1], 33, 'wrong length');
|
||||||
|
t.equal(ber[2], 0x02, 'wrong tag');
|
||||||
|
t.equal(ber[3], 1, 'wrong length');
|
||||||
|
t.equal(ber[4], 0x03, 'wrong value');
|
||||||
|
t.equal(ber[5], 0x60, 'wrong tag');
|
||||||
|
t.equal(ber[6], 28, 'wrong length');
|
||||||
|
t.equal(ber[7], 0x02, 'wrong tag');
|
||||||
|
t.equal(ber[8], 1, 'wrong length');
|
||||||
|
t.equal(ber[9], 0x03, 'wrong value');
|
||||||
|
t.equal(ber[10], 0x04, 'wrong tag');
|
||||||
|
t.equal(ber[11], dn.length, 'wrong length');
|
||||||
|
t.equal(ber.slice(12, 33).toString('utf8'), dn, 'wrong value');
|
||||||
|
t.equal(ber[33], 0x80, 'wrong tag');
|
||||||
|
t.equal(ber[34], 0x00, 'wrong len');
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('Write OID', function(t) {
|
||||||
|
var oid = '1.2.840.113549.1.1.1';
|
||||||
|
var writer = new BerWriter();
|
||||||
|
writer.writeOID(oid);
|
||||||
|
|
||||||
|
var ber = writer.buffer;
|
||||||
|
t.ok(ber);
|
||||||
|
console.log(require('util').inspect(ber));
|
||||||
|
console.log(require('util').inspect(new Buffer([0x06, 0x09, 0x2a, 0x86,
|
||||||
|
0x48, 0x86, 0xf7, 0x0d,
|
||||||
|
0x01, 0x01, 0x01])));
|
||||||
|
|
||||||
|
t.end();
|
||||||
|
});
|
126
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/README.md
generated
vendored
Normal file
126
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/README.md
generated
vendored
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
# node-assert-plus
|
||||||
|
|
||||||
|
This library is a super small wrapper over node's assert module that has two
|
||||||
|
things: (1) the ability to disable assertions with the environment variable
|
||||||
|
NODE_NDEBUG, and (2) some API wrappers for argument testing. Like
|
||||||
|
`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks
|
||||||
|
like this:
|
||||||
|
|
||||||
|
var assert = require('assert-plus');
|
||||||
|
|
||||||
|
function fooAccount(options, callback) {
|
||||||
|
assert.object(options, 'options');
|
||||||
|
assert.number(options.id, 'options.id);
|
||||||
|
assert.bool(options.isManager, 'options.isManager');
|
||||||
|
assert.string(options.name, 'options.name');
|
||||||
|
assert.arrayOfString(options.email, 'options.email');
|
||||||
|
assert.func(callback, 'callback');
|
||||||
|
|
||||||
|
// Do stuff
|
||||||
|
callback(null, {});
|
||||||
|
}
|
||||||
|
|
||||||
|
# API
|
||||||
|
|
||||||
|
All methods that *aren't* part of node's core assert API are simply assumed to
|
||||||
|
take an argument, and then a string 'name' that's not a message; `AssertionError`
|
||||||
|
will be thrown if the assertion fails with a message like:
|
||||||
|
|
||||||
|
AssertionError: foo (string) is required
|
||||||
|
at test (/home/mark/work/foo/foo.js:3:9)
|
||||||
|
at Object.<anonymous> (/home/mark/work/foo/foo.js:15:1)
|
||||||
|
at Module._compile (module.js:446:26)
|
||||||
|
at Object..js (module.js:464:10)
|
||||||
|
at Module.load (module.js:353:31)
|
||||||
|
at Function._load (module.js:311:12)
|
||||||
|
at Array.0 (module.js:484:10)
|
||||||
|
at EventEmitter._tickCallback (node.js:190:38)
|
||||||
|
|
||||||
|
from:
|
||||||
|
|
||||||
|
function test(foo) {
|
||||||
|
assert.string(foo, 'foo');
|
||||||
|
}
|
||||||
|
|
||||||
|
There you go. You can check that arrays are of a homogenous type with `Arrayof$Type`:
|
||||||
|
|
||||||
|
function test(foo) {
|
||||||
|
assert.arrayOfString(foo, 'foo');
|
||||||
|
}
|
||||||
|
|
||||||
|
You can assert IFF an argument is not `undefined` (i.e., an optional arg):
|
||||||
|
|
||||||
|
assert.optionalString(foo, 'foo');
|
||||||
|
|
||||||
|
Lastly, you can opt-out of assertion checking altogether by setting the
|
||||||
|
environment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have
|
||||||
|
lots of assertions, and don't want to pay `typeof ()` taxes to v8 in
|
||||||
|
production.
|
||||||
|
|
||||||
|
The complete list of APIs is:
|
||||||
|
|
||||||
|
* assert.bool
|
||||||
|
* assert.buffer
|
||||||
|
* assert.func
|
||||||
|
* assert.number
|
||||||
|
* assert.object
|
||||||
|
* assert.string
|
||||||
|
* assert.arrayOfBool
|
||||||
|
* assert.arrayOfFunc
|
||||||
|
* assert.arrayOfNumber
|
||||||
|
* assert.arrayOfObject
|
||||||
|
* assert.arrayOfString
|
||||||
|
* assert.optionalBool
|
||||||
|
* assert.optionalBuffer
|
||||||
|
* assert.optionalFunc
|
||||||
|
* assert.optionalNumber
|
||||||
|
* assert.optionalObject
|
||||||
|
* assert.optionalString
|
||||||
|
* assert.optionalArrayOfBool
|
||||||
|
* assert.optionalArrayOfFunc
|
||||||
|
* assert.optionalArrayOfNumber
|
||||||
|
* assert.optionalArrayOfObject
|
||||||
|
* assert.optionalArrayOfString
|
||||||
|
* assert.AssertionError
|
||||||
|
* assert.fail
|
||||||
|
* assert.ok
|
||||||
|
* assert.equal
|
||||||
|
* assert.notEqual
|
||||||
|
* assert.deepEqual
|
||||||
|
* assert.notDeepEqual
|
||||||
|
* assert.strictEqual
|
||||||
|
* assert.notStrictEqual
|
||||||
|
* assert.throws
|
||||||
|
* assert.doesNotThrow
|
||||||
|
* assert.ifError
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
npm install assert-plus
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
Copyright (c) 2012 Mark Cavage
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Bugs
|
||||||
|
|
||||||
|
See <https://github.com/mcavage/node-assert-plus/issues>.
|
245
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/assert.js
generated
vendored
Normal file
245
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/assert.js
generated
vendored
Normal file
|
@ -0,0 +1,245 @@
|
||||||
|
// Copyright (c) 2012, Mark Cavage. All rights reserved.
|
||||||
|
|
||||||
|
var assert = require('assert');
|
||||||
|
var Stream = require('stream').Stream;
|
||||||
|
var util = require('util');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///--- Globals
|
||||||
|
|
||||||
|
var NDEBUG = process.env.NODE_NDEBUG || false;
|
||||||
|
var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///--- Messages
|
||||||
|
|
||||||
|
var ARRAY_TYPE_REQUIRED = '%s ([%s]) required';
|
||||||
|
var TYPE_REQUIRED = '%s (%s) is required';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///--- Internal
|
||||||
|
|
||||||
|
function capitalize(str) {
|
||||||
|
return (str.charAt(0).toUpperCase() + str.slice(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
function uncapitalize(str) {
|
||||||
|
return (str.charAt(0).toLowerCase() + str.slice(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
function _() {
|
||||||
|
return (util.format.apply(util, arguments));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function _assert(arg, type, name, stackFunc) {
|
||||||
|
if (!NDEBUG) {
|
||||||
|
name = name || type;
|
||||||
|
stackFunc = stackFunc || _assert.caller;
|
||||||
|
var t = typeof (arg);
|
||||||
|
|
||||||
|
if (t !== type) {
|
||||||
|
throw new assert.AssertionError({
|
||||||
|
message: _(TYPE_REQUIRED, name, type),
|
||||||
|
actual: t,
|
||||||
|
expected: type,
|
||||||
|
operator: '===',
|
||||||
|
stackStartFunction: stackFunc
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function _instanceof(arg, type, name, stackFunc) {
|
||||||
|
if (!NDEBUG) {
|
||||||
|
name = name || type;
|
||||||
|
stackFunc = stackFunc || _instanceof.caller;
|
||||||
|
|
||||||
|
if (!(arg instanceof type)) {
|
||||||
|
throw new assert.AssertionError({
|
||||||
|
message: _(TYPE_REQUIRED, name, type.name),
|
||||||
|
actual: _getClass(arg),
|
||||||
|
expected: type.name,
|
||||||
|
operator: 'instanceof',
|
||||||
|
stackStartFunction: stackFunc
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _getClass(object) {
|
||||||
|
return (Object.prototype.toString.call(object).slice(8, -1));
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///--- API
|
||||||
|
|
||||||
|
function array(arr, type, name) {
|
||||||
|
if (!NDEBUG) {
|
||||||
|
name = name || type;
|
||||||
|
|
||||||
|
if (!Array.isArray(arr)) {
|
||||||
|
throw new assert.AssertionError({
|
||||||
|
message: _(ARRAY_TYPE_REQUIRED, name, type),
|
||||||
|
actual: typeof (arr),
|
||||||
|
expected: 'array',
|
||||||
|
operator: 'Array.isArray',
|
||||||
|
stackStartFunction: array.caller
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < arr.length; i++) {
|
||||||
|
_assert(arr[i], type, name, array);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function bool(arg, name) {
|
||||||
|
_assert(arg, 'boolean', name, bool);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function buffer(arg, name) {
|
||||||
|
if (!Buffer.isBuffer(arg)) {
|
||||||
|
throw new assert.AssertionError({
|
||||||
|
message: _(TYPE_REQUIRED, name || '', 'Buffer'),
|
||||||
|
actual: typeof (arg),
|
||||||
|
expected: 'buffer',
|
||||||
|
operator: 'Buffer.isBuffer',
|
||||||
|
stackStartFunction: buffer
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function func(arg, name) {
|
||||||
|
_assert(arg, 'function', name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function number(arg, name) {
|
||||||
|
_assert(arg, 'number', name);
|
||||||
|
if (!NDEBUG && (isNaN(arg) || !isFinite(arg))) {
|
||||||
|
throw new assert.AssertionError({
|
||||||
|
message: _(TYPE_REQUIRED, name, 'number'),
|
||||||
|
actual: arg,
|
||||||
|
expected: 'number',
|
||||||
|
operator: 'isNaN',
|
||||||
|
stackStartFunction: number
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function object(arg, name) {
|
||||||
|
_assert(arg, 'object', name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function stream(arg, name) {
|
||||||
|
_instanceof(arg, Stream, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function date(arg, name) {
|
||||||
|
_instanceof(arg, Date, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function regexp(arg, name) {
|
||||||
|
_instanceof(arg, RegExp, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function string(arg, name) {
|
||||||
|
_assert(arg, 'string', name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function uuid(arg, name) {
|
||||||
|
string(arg, name);
|
||||||
|
if (!NDEBUG && !UUID_REGEXP.test(arg)) {
|
||||||
|
throw new assert.AssertionError({
|
||||||
|
message: _(TYPE_REQUIRED, name, 'uuid'),
|
||||||
|
actual: 'string',
|
||||||
|
expected: 'uuid',
|
||||||
|
operator: 'test',
|
||||||
|
stackStartFunction: uuid
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///--- Exports
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
bool: bool,
|
||||||
|
buffer: buffer,
|
||||||
|
date: date,
|
||||||
|
func: func,
|
||||||
|
number: number,
|
||||||
|
object: object,
|
||||||
|
regexp: regexp,
|
||||||
|
stream: stream,
|
||||||
|
string: string,
|
||||||
|
uuid: uuid
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Object.keys(module.exports).forEach(function (k) {
|
||||||
|
if (k === 'buffer')
|
||||||
|
return;
|
||||||
|
|
||||||
|
var name = 'arrayOf' + capitalize(k);
|
||||||
|
|
||||||
|
if (k === 'bool')
|
||||||
|
k = 'boolean';
|
||||||
|
if (k === 'func')
|
||||||
|
k = 'function';
|
||||||
|
module.exports[name] = function (arg, name) {
|
||||||
|
array(arg, k, name);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.keys(module.exports).forEach(function (k) {
|
||||||
|
var _name = 'optional' + capitalize(k);
|
||||||
|
var s = uncapitalize(k.replace('arrayOf', ''));
|
||||||
|
if (s === 'bool')
|
||||||
|
s = 'boolean';
|
||||||
|
if (s === 'func')
|
||||||
|
s = 'function';
|
||||||
|
|
||||||
|
if (k.indexOf('arrayOf') !== -1) {
|
||||||
|
module.exports[_name] = function (arg, name) {
|
||||||
|
if (!NDEBUG && arg !== undefined) {
|
||||||
|
array(arg, s, name);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
module.exports[_name] = function (arg, name) {
|
||||||
|
if (!NDEBUG && arg !== undefined) {
|
||||||
|
_assert(arg, s, name);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Reexport built-in assertions
|
||||||
|
Object.keys(assert).forEach(function (k) {
|
||||||
|
if (k === 'AssertionError') {
|
||||||
|
module.exports[k] = assert[k];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports[k] = function () {
|
||||||
|
if (!NDEBUG) {
|
||||||
|
assert[k].apply(assert[k], arguments);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
69
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/package.json
generated
vendored
Normal file
69
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/package.json
generated
vendored
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"assert-plus@^0.1.5",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/http-signature"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "assert-plus@>=0.1.5 <0.2.0",
|
||||||
|
"_id": "assert-plus@0.1.5",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/assert-plus",
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "mcavage@gmail.com",
|
||||||
|
"name": "mcavage"
|
||||||
|
},
|
||||||
|
"_npmVersion": "1.3.11",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "assert-plus",
|
||||||
|
"raw": "assert-plus@^0.1.5",
|
||||||
|
"rawSpec": "^0.1.5",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=0.1.5 <0.2.0",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/http-signature"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz",
|
||||||
|
"_shasum": "ee74009413002d84cec7219c6ac811812e723160",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "assert-plus@^0.1.5",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/http-signature",
|
||||||
|
"author": {
|
||||||
|
"email": "mcavage@gmail.com",
|
||||||
|
"name": "Mark Cavage"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/mcavage/node-assert-plus/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"description": "Extra assertions on top of node's assert module",
|
||||||
|
"devDependencies": {},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "ee74009413002d84cec7219c6ac811812e723160",
|
||||||
|
"tarball": "http://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.8"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/mcavage/node-assert-plus#readme",
|
||||||
|
"main": "./assert.js",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "mcavage@gmail.com",
|
||||||
|
"name": "mcavage"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "assert-plus",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/mcavage/node-assert-plus.git"
|
||||||
|
},
|
||||||
|
"version": "0.1.5"
|
||||||
|
}
|
125
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/CHANGELOG.md
generated
vendored
Normal file
125
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/CHANGELOG.md
generated
vendored
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
# v1.5.2
|
||||||
|
- Allow using `"consructor"` as an argument in `memoize` (#998)
|
||||||
|
- Give a better error messsage when `auto` dependency checking fails (#994)
|
||||||
|
- Various doc updates (#936, #956, #979, #1002)
|
||||||
|
|
||||||
|
# v1.5.1
|
||||||
|
- Fix issue with `pause` in `queue` with concurrency enabled (#946)
|
||||||
|
- `while` and `until` now pass the final result to callback (#963)
|
||||||
|
- `auto` will properly handle concurrency when there is no callback (#966)
|
||||||
|
- `auto` will now properly stop execution when an error occurs (#988, #993)
|
||||||
|
- Various doc fixes (#971, #980)
|
||||||
|
|
||||||
|
# v1.5.0
|
||||||
|
|
||||||
|
- Added `transform`, analogous to [`_.transform`](http://lodash.com/docs#transform) (#892)
|
||||||
|
- `map` now returns an object when an object is passed in, rather than array with non-numeric keys. `map` will begin always returning an array with numeric indexes in the next major release. (#873)
|
||||||
|
- `auto` now accepts an optional `concurrency` argument to limit the number of running tasks (#637)
|
||||||
|
- Added `queue#workersList()`, to retrieve the list of currently running tasks. (#891)
|
||||||
|
- Various code simplifications (#896, #904)
|
||||||
|
- Various doc fixes :scroll: (#890, #894, #903, #905, #912)
|
||||||
|
|
||||||
|
# v1.4.2
|
||||||
|
|
||||||
|
- Ensure coverage files don't get published on npm (#879)
|
||||||
|
|
||||||
|
# v1.4.1
|
||||||
|
|
||||||
|
- Add in overlooked `detectLimit` method (#866)
|
||||||
|
- Removed unnecessary files from npm releases (#861)
|
||||||
|
- Removed usage of a reserved word to prevent :boom: in older environments (#870)
|
||||||
|
|
||||||
|
# v1.4.0
|
||||||
|
|
||||||
|
- `asyncify` now supports promises (#840)
|
||||||
|
- Added `Limit` versions of `filter` and `reject` (#836)
|
||||||
|
- Add `Limit` versions of `detect`, `some` and `every` (#828, #829)
|
||||||
|
- `some`, `every` and `detect` now short circuit early (#828, #829)
|
||||||
|
- Improve detection of the global object (#804), enabling use in WebWorkers
|
||||||
|
- `whilst` now called with arguments from iterator (#823)
|
||||||
|
- `during` now gets called with arguments from iterator (#824)
|
||||||
|
- Code simplifications and optimizations aplenty ([diff](https://github.com/caolan/async/compare/v1.3.0...v1.4.0))
|
||||||
|
|
||||||
|
|
||||||
|
# v1.3.0
|
||||||
|
|
||||||
|
New Features:
|
||||||
|
- Added `constant`
|
||||||
|
- Added `asyncify`/`wrapSync` for making sync functions work with callbacks. (#671, #806)
|
||||||
|
- Added `during` and `doDuring`, which are like `whilst` with an async truth test. (#800)
|
||||||
|
- `retry` now accepts an `interval` parameter to specify a delay between retries. (#793)
|
||||||
|
- `async` should work better in Web Workers due to better `root` detection (#804)
|
||||||
|
- Callbacks are now optional in `whilst`, `doWhilst`, `until`, and `doUntil` (#642)
|
||||||
|
- Various internal updates (#786, #801, #802, #803)
|
||||||
|
- Various doc fixes (#790, #794)
|
||||||
|
|
||||||
|
Bug Fixes:
|
||||||
|
- `cargo` now exposes the `payload` size, and `cargo.payload` can be changed on the fly after the `cargo` is created. (#740, #744, #783)
|
||||||
|
|
||||||
|
|
||||||
|
# v1.2.1
|
||||||
|
|
||||||
|
Bug Fix:
|
||||||
|
|
||||||
|
- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782)
|
||||||
|
|
||||||
|
|
||||||
|
# v1.2.0
|
||||||
|
|
||||||
|
New Features:
|
||||||
|
|
||||||
|
- Added `timesLimit` (#743)
|
||||||
|
- `concurrency` can be changed after initialization in `queue` by setting `q.concurrency`. The new concurrency will be reflected the next time a task is processed. (#747, #772)
|
||||||
|
|
||||||
|
Bug Fixes:
|
||||||
|
|
||||||
|
- Fixed a regression in `each` and family with empty arrays that have additional properties. (#775, #777)
|
||||||
|
|
||||||
|
|
||||||
|
# v1.1.1
|
||||||
|
|
||||||
|
Bug Fix:
|
||||||
|
|
||||||
|
- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782)
|
||||||
|
|
||||||
|
|
||||||
|
# v1.1.0
|
||||||
|
|
||||||
|
New Features:
|
||||||
|
|
||||||
|
- `cargo` now supports all of the same methods and event callbacks as `queue`.
|
||||||
|
- Added `ensureAsync` - A wrapper that ensures an async function calls its callback on a later tick. (#769)
|
||||||
|
- Optimized `map`, `eachOf`, and `waterfall` families of functions
|
||||||
|
- Passing a `null` or `undefined` array to `map`, `each`, `parallel` and families will be treated as an empty array (#667).
|
||||||
|
- The callback is now optional for the composed results of `compose` and `seq`. (#618)
|
||||||
|
- Reduced file size by 4kb, (minified version by 1kb)
|
||||||
|
- Added code coverage through `nyc` and `coveralls` (#768)
|
||||||
|
|
||||||
|
Bug Fixes:
|
||||||
|
|
||||||
|
- `forever` will no longer stack overflow with a synchronous iterator (#622)
|
||||||
|
- `eachLimit` and other limit functions will stop iterating once an error occurs (#754)
|
||||||
|
- Always pass `null` in callbacks when there is no error (#439)
|
||||||
|
- Ensure proper conditions when calling `drain()` after pushing an empty data set to a queue (#668)
|
||||||
|
- `each` and family will properly handle an empty array (#578)
|
||||||
|
- `eachSeries` and family will finish if the underlying array is modified during execution (#557)
|
||||||
|
- `queue` will throw if a non-function is passed to `q.push()` (#593)
|
||||||
|
- Doc fixes (#629, #766)
|
||||||
|
|
||||||
|
|
||||||
|
# v1.0.0
|
||||||
|
|
||||||
|
No known breaking changes, we are simply complying with semver from here on out.
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- Start using a changelog!
|
||||||
|
- Add `forEachOf` for iterating over Objects (or to iterate Arrays with indexes available) (#168 #704 #321)
|
||||||
|
- Detect deadlocks in `auto` (#663)
|
||||||
|
- Better support for require.js (#527)
|
||||||
|
- Throw if queue created with concurrency `0` (#714)
|
||||||
|
- Fix unneeded iteration in `queue.resume()` (#758)
|
||||||
|
- Guard against timer mocking overriding `setImmediate` (#609 #611)
|
||||||
|
- Miscellaneous doc fixes (#542 #596 #615 #628 #631 #690 #729)
|
||||||
|
- Use single noop function internally (#546)
|
||||||
|
- Optimize internal `_each`, `_map` and `_keys` functions.
|
19
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/LICENSE
generated
vendored
Normal file
19
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
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.
|
1877
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/README.md
generated
vendored
Normal file
1877
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/README.md
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
1265
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/dist/async.js
generated
vendored
Normal file
1265
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/dist/async.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
2
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/dist/async.min.js
generated
vendored
Normal file
2
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/dist/async.min.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1265
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/lib/async.js
generated
vendored
Normal file
1265
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/lib/async.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
150
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/package.json
generated
vendored
Normal file
150
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/package.json
generated
vendored
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"async@^1.5.0",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/gulp-shell"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "async@>=1.5.0 <2.0.0",
|
||||||
|
"_id": "async@1.5.2",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/async",
|
||||||
|
"_nodeVersion": "4.2.3",
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "alexander.early@gmail.com",
|
||||||
|
"name": "aearly"
|
||||||
|
},
|
||||||
|
"_npmVersion": "3.5.2",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "async",
|
||||||
|
"raw": "async@^1.5.0",
|
||||||
|
"rawSpec": "^1.5.0",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=1.5.0 <2.0.0",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/form-data",
|
||||||
|
"/gulp-shell"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
|
||||||
|
"_shasum": "ec6a61ae56480c0c3cb241c95618e20892f9672a",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "async@^1.5.0",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-shell",
|
||||||
|
"author": {
|
||||||
|
"name": "Caolan McMahon"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/caolan/async/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"description": "Higher-order functions and common patterns for asynchronous code",
|
||||||
|
"devDependencies": {
|
||||||
|
"benchmark": "github:bestiejs/benchmark.js",
|
||||||
|
"bluebird": "^2.9.32",
|
||||||
|
"chai": "^3.1.0",
|
||||||
|
"coveralls": "^2.11.2",
|
||||||
|
"es6-promise": "^2.3.0",
|
||||||
|
"jscs": "^1.13.1",
|
||||||
|
"jshint": "~2.8.0",
|
||||||
|
"karma": "^0.13.2",
|
||||||
|
"karma-browserify": "^4.2.1",
|
||||||
|
"karma-firefox-launcher": "^0.1.6",
|
||||||
|
"karma-mocha": "^0.2.0",
|
||||||
|
"karma-mocha-reporter": "^1.0.2",
|
||||||
|
"lodash": "^3.9.0",
|
||||||
|
"mkdirp": "~0.5.1",
|
||||||
|
"mocha": "^2.2.5",
|
||||||
|
"native-promise-only": "^0.8.0-a",
|
||||||
|
"nodeunit": ">0.0.0",
|
||||||
|
"nyc": "^2.1.0",
|
||||||
|
"rsvp": "^3.0.18",
|
||||||
|
"semver": "^4.3.6",
|
||||||
|
"uglify-js": "~2.4.0",
|
||||||
|
"xyz": "^0.5.0",
|
||||||
|
"yargs": "~3.9.1"
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "ec6a61ae56480c0c3cb241c95618e20892f9672a",
|
||||||
|
"tarball": "https://registry.npmjs.org/async/-/async-1.5.2.tgz"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"lib",
|
||||||
|
"dist/async.js",
|
||||||
|
"dist/async.min.js"
|
||||||
|
],
|
||||||
|
"gitHead": "9ab5c67b7cb3a4c3dad4a2d4552a2f6775545d6c",
|
||||||
|
"homepage": "https://github.com/caolan/async#readme",
|
||||||
|
"jam": {
|
||||||
|
"categories": [
|
||||||
|
"Utilities"
|
||||||
|
],
|
||||||
|
"include": [
|
||||||
|
"lib/async.js",
|
||||||
|
"README.md",
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"main": "lib/async.js"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"async",
|
||||||
|
"callback",
|
||||||
|
"utility",
|
||||||
|
"module"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "lib/async.js",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "caolan.mcmahon@gmail.com",
|
||||||
|
"name": "caolan"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"email": "beau@beaugunderson.com",
|
||||||
|
"name": "beaugunderson"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"email": "alexander.early@gmail.com",
|
||||||
|
"name": "aearly"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"email": "megawac@gmail.com",
|
||||||
|
"name": "megawac"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "async",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/caolan/async.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"coverage": "nyc npm test && nyc report",
|
||||||
|
"coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls",
|
||||||
|
"lint": "jshint lib/*.js test/*.js perf/*.js && jscs lib/*.js test/*.js perf/*.js",
|
||||||
|
"mocha-browser-test": "karma start",
|
||||||
|
"mocha-node-test": "mocha mocha_test/",
|
||||||
|
"mocha-test": "npm run mocha-node-test && npm run mocha-browser-test",
|
||||||
|
"nodeunit-test": "nodeunit test/test-async.js",
|
||||||
|
"test": "npm run-script lint && npm run nodeunit-test && npm run mocha-test"
|
||||||
|
},
|
||||||
|
"spm": {
|
||||||
|
"main": "lib/async.js"
|
||||||
|
},
|
||||||
|
"version": "1.5.2",
|
||||||
|
"volo": {
|
||||||
|
"ignore": [
|
||||||
|
"**/.*",
|
||||||
|
"node_modules",
|
||||||
|
"bower_components",
|
||||||
|
"test",
|
||||||
|
"tests"
|
||||||
|
],
|
||||||
|
"main": "lib/async.js"
|
||||||
|
}
|
||||||
|
}
|
55
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/LICENSE
generated
vendored
Normal file
55
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
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
|
4
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/README.md
generated
vendored
Normal file
4
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/README.md
generated
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
aws-sign
|
||||||
|
========
|
||||||
|
|
||||||
|
AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.
|
202
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/index.js
generated
vendored
Normal file
202
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/index.js
generated
vendored
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* knox - auth
|
||||||
|
* Copyright(c) 2010 LearnBoost <dev@learnboost.com>
|
||||||
|
* 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 <key>:<signature>"
|
||||||
|
*
|
||||||
|
* @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:
|
||||||
|
*
|
||||||
|
* <verb>\n
|
||||||
|
* <md5>\n
|
||||||
|
* <content-type>\n
|
||||||
|
* <date>\n
|
||||||
|
* [headers\n]
|
||||||
|
* <resource>
|
||||||
|
*
|
||||||
|
* @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:
|
||||||
|
*
|
||||||
|
* <date>\n
|
||||||
|
* <resource>
|
||||||
|
*
|
||||||
|
* @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
|
69
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/package.json
generated
vendored
Normal file
69
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/package.json
generated
vendored
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"aws-sign2@~0.5.0",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/request"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "aws-sign2@>=0.5.0 <0.6.0",
|
||||||
|
"_id": "aws-sign2@0.5.0",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/aws-sign2",
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "mikeal.rogers@gmail.com",
|
||||||
|
"name": "mikeal"
|
||||||
|
},
|
||||||
|
"_npmVersion": "1.3.2",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "aws-sign2",
|
||||||
|
"raw": "aws-sign2@~0.5.0",
|
||||||
|
"rawSpec": "~0.5.0",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=0.5.0 <0.6.0",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/request"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz",
|
||||||
|
"_shasum": "c57103f7a17fc037f02d7c2e64b602ea223f7d63",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "aws-sign2@~0.5.0",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request",
|
||||||
|
"author": {
|
||||||
|
"email": "mikeal.rogers@gmail.com",
|
||||||
|
"name": "Mikeal Rogers",
|
||||||
|
"url": "http://www.futurealoof.com"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/mikeal/aws-sign/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"description": "AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.",
|
||||||
|
"devDependencies": {},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "c57103f7a17fc037f02d7c2e64b602ea223f7d63",
|
||||||
|
"tarball": "http://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/mikeal/aws-sign#readme",
|
||||||
|
"main": "index.js",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "mikeal.rogers@gmail.com",
|
||||||
|
"name": "mikeal"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "aws-sign2",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"url": "git+https://github.com/mikeal/aws-sign.git"
|
||||||
|
},
|
||||||
|
"version": "0.5.0"
|
||||||
|
}
|
4
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/.npmignore
generated
vendored
Normal file
4
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/.npmignore
generated
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
test
|
||||||
|
examples
|
||||||
|
example.js
|
||||||
|
browser
|
1
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/.tern-port
generated
vendored
Normal file
1
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/.tern-port
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
62638
|
5
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/.travis.yml
generated
vendored
Normal file
5
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/.travis.yml
generated
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
language: node_js
|
||||||
|
node_js:
|
||||||
|
- "0.10"
|
||||||
|
- "0.12"
|
||||||
|
- "4.2"
|
19
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/LICENSE
generated
vendored
Normal file
19
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright 2013 Michael Hart (michael.hart.au@gmail.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.
|
514
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/README.md
generated
vendored
Normal file
514
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/README.md
generated
vendored
Normal file
|
@ -0,0 +1,514 @@
|
||||||
|
aws4
|
||||||
|
----
|
||||||
|
|
||||||
|
[![Build Status](https://secure.travis-ci.org/mhart/aws4.png?branch=master)](http://travis-ci.org/mhart/aws4)
|
||||||
|
|
||||||
|
A small utility to sign vanilla node.js http(s) request options using Amazon's
|
||||||
|
[AWS Signature Version 4](http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html).
|
||||||
|
|
||||||
|
Can also be used [in the browser](./browser).
|
||||||
|
|
||||||
|
This signature is supported by nearly all Amazon services, including
|
||||||
|
[S3](http://docs.aws.amazon.com/AmazonS3/latest/API/),
|
||||||
|
[EC2](http://docs.aws.amazon.com/AWSEC2/latest/APIReference/),
|
||||||
|
[DynamoDB](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/API.html),
|
||||||
|
[Kinesis](http://docs.aws.amazon.com/kinesis/latest/APIReference/),
|
||||||
|
[Lambda](http://docs.aws.amazon.com/lambda/latest/dg/API_Reference.html),
|
||||||
|
[SQS](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/),
|
||||||
|
[SNS](http://docs.aws.amazon.com/sns/latest/api/),
|
||||||
|
[IAM](http://docs.aws.amazon.com/IAM/latest/APIReference/),
|
||||||
|
[STS](http://docs.aws.amazon.com/STS/latest/APIReference/),
|
||||||
|
[RDS](http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/),
|
||||||
|
[CloudWatch](http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/),
|
||||||
|
[CloudWatch Logs](http://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/),
|
||||||
|
[CodeDeploy](http://docs.aws.amazon.com/codedeploy/latest/APIReference/),
|
||||||
|
[CloudFront](http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/),
|
||||||
|
[CloudTrail](http://docs.aws.amazon.com/awscloudtrail/latest/APIReference/),
|
||||||
|
[ElastiCache](http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/),
|
||||||
|
[EMR](http://docs.aws.amazon.com/ElasticMapReduce/latest/API/),
|
||||||
|
[Glacier](http://docs.aws.amazon.com/amazonglacier/latest/dev/amazon-glacier-api.html),
|
||||||
|
[CloudSearch](http://docs.aws.amazon.com/cloudsearch/latest/developerguide/APIReq.html),
|
||||||
|
[Elastic Load Balancing](http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/),
|
||||||
|
[Elastic Transcoder](http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/api-reference.html),
|
||||||
|
[CloudFormation](http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/),
|
||||||
|
[Elastic Beanstalk](http://docs.aws.amazon.com/elasticbeanstalk/latest/api/),
|
||||||
|
[Storage Gateway](http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewayAPI.html),
|
||||||
|
[Data Pipeline](http://docs.aws.amazon.com/datapipeline/latest/APIReference/),
|
||||||
|
[Direct Connect](http://docs.aws.amazon.com/directconnect/latest/APIReference/),
|
||||||
|
[Redshift](http://docs.aws.amazon.com/redshift/latest/APIReference/),
|
||||||
|
[OpsWorks](http://docs.aws.amazon.com/opsworks/latest/APIReference/),
|
||||||
|
[SES](http://docs.aws.amazon.com/ses/latest/APIReference/),
|
||||||
|
[SWF](http://docs.aws.amazon.com/amazonswf/latest/apireference/),
|
||||||
|
[AutoScaling](http://docs.aws.amazon.com/AutoScaling/latest/APIReference/),
|
||||||
|
[Mobile Analytics](http://docs.aws.amazon.com/mobileanalytics/latest/ug/server-reference.html),
|
||||||
|
[Cognito Identity](http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/),
|
||||||
|
[Cognito Sync](http://docs.aws.amazon.com/cognitosync/latest/APIReference/),
|
||||||
|
[Container Service](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/),
|
||||||
|
[AppStream](http://docs.aws.amazon.com/appstream/latest/developerguide/appstream-api-rest.html),
|
||||||
|
[Key Management Service](http://docs.aws.amazon.com/kms/latest/APIReference/),
|
||||||
|
[Config](http://docs.aws.amazon.com/config/latest/APIReference/),
|
||||||
|
[CloudHSM](http://docs.aws.amazon.com/cloudhsm/latest/dg/api-ref.html),
|
||||||
|
[Route53](http://docs.aws.amazon.com/Route53/latest/APIReference/requests-rest.html) and
|
||||||
|
[Route53 Domains](http://docs.aws.amazon.com/Route53/latest/APIReference/requests-rpc.html).
|
||||||
|
|
||||||
|
Indeed, the only AWS services that *don't* support v4 as of 2014-12-30 are
|
||||||
|
[Import/Export](http://docs.aws.amazon.com/AWSImportExport/latest/DG/api-reference.html) and
|
||||||
|
[SimpleDB](http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/SDB_API.html)
|
||||||
|
(they only support [AWS Signature Version 2](https://github.com/mhart/aws2)).
|
||||||
|
|
||||||
|
It also provides defaults for a number of core AWS headers and
|
||||||
|
request parameters, making it very easy to query AWS services, or
|
||||||
|
build out a fully-featured AWS library.
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var http = require('http'),
|
||||||
|
https = require('https'),
|
||||||
|
aws4 = require('aws4')
|
||||||
|
|
||||||
|
// given an options object you could pass to http.request
|
||||||
|
var opts = {host: 'sqs.us-east-1.amazonaws.com', path: '/?Action=ListQueues'}
|
||||||
|
|
||||||
|
// alternatively (as aws4 can infer the host):
|
||||||
|
opts = {service: 'sqs', region: 'us-east-1', path: '/?Action=ListQueues'}
|
||||||
|
|
||||||
|
// alternatively (as us-east-1 is default):
|
||||||
|
opts = {service: 'sqs', path: '/?Action=ListQueues'}
|
||||||
|
|
||||||
|
aws4.sign(opts) // assumes AWS credentials are available in process.env
|
||||||
|
|
||||||
|
console.log(opts)
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
host: 'sqs.us-east-1.amazonaws.com',
|
||||||
|
path: '/?Action=ListQueues',
|
||||||
|
headers: {
|
||||||
|
Host: 'sqs.us-east-1.amazonaws.com',
|
||||||
|
'X-Amz-Date': '20121226T061030Z',
|
||||||
|
Authorization: 'AWS4-HMAC-SHA256 Credential=ABCDEF/20121226/us-east-1/sqs/aws4_request, ...'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// we can now use this to query AWS using the standard node.js http API
|
||||||
|
http.request(opts, function(res) { res.pipe(process.stdout) }).end()
|
||||||
|
/*
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<ListQueuesResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
More options
|
||||||
|
------------
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// you can also pass AWS credentials in explicitly (otherwise taken from process.env)
|
||||||
|
aws4.sign(opts, {accessKeyId: '', secretAccessKey: ''})
|
||||||
|
|
||||||
|
// can also add the signature to query strings
|
||||||
|
aws4.sign({service: 's3', path: '/my-bucket?X-Amz-Expires=12345', signQuery: true})
|
||||||
|
|
||||||
|
// create a utility function to pipe to stdout (with https this time)
|
||||||
|
function request(o) { https.request(o, function(res) { res.pipe(process.stdout) }).end(o.body || '') }
|
||||||
|
|
||||||
|
// aws4 can infer the HTTP method if a body is passed in
|
||||||
|
// method will be POST and Content-Type: 'application/x-www-form-urlencoded; charset=utf-8'
|
||||||
|
request(aws4.sign({service: 'iam', body: 'Action=ListGroups&Version=2010-05-08'}))
|
||||||
|
/*
|
||||||
|
<ListGroupsResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
// can specify any custom option or header as per usual
|
||||||
|
request(aws4.sign({
|
||||||
|
service: 'dynamodb',
|
||||||
|
region: 'ap-southeast-2',
|
||||||
|
method: 'POST',
|
||||||
|
path: '/',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.0',
|
||||||
|
'X-Amz-Target': 'DynamoDB_20120810.ListTables'
|
||||||
|
},
|
||||||
|
body: '{}'
|
||||||
|
}))
|
||||||
|
/*
|
||||||
|
{"TableNames":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
// works with all other services that support Signature Version 4
|
||||||
|
|
||||||
|
request(aws4.sign({service: 's3', path: '/', signQuery: true}))
|
||||||
|
/*
|
||||||
|
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'ec2', path: '/?Action=DescribeRegions&Version=2014-06-15'}))
|
||||||
|
/*
|
||||||
|
<DescribeRegionsResponse xmlns="http://ec2.amazonaws.com/doc/2014-06-15/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'sns', path: '/?Action=ListTopics&Version=2010-03-31'}))
|
||||||
|
/*
|
||||||
|
<ListTopicsResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'sts', path: '/?Action=GetSessionToken&Version=2011-06-15'}))
|
||||||
|
/*
|
||||||
|
<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'cloudsearch', path: '/?Action=ListDomainNames&Version=2013-01-01'}))
|
||||||
|
/*
|
||||||
|
<ListDomainNamesResponse xmlns="http://cloudsearch.amazonaws.com/doc/2013-01-01/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'ses', path: '/?Action=ListIdentities&Version=2010-12-01'}))
|
||||||
|
/*
|
||||||
|
<ListIdentitiesResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'autoscaling', path: '/?Action=DescribeAutoScalingInstances&Version=2011-01-01'}))
|
||||||
|
/*
|
||||||
|
<DescribeAutoScalingInstancesResponse xmlns="http://autoscaling.amazonaws.com/doc/2011-01-01/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'elasticloadbalancing', path: '/?Action=DescribeLoadBalancers&Version=2012-06-01'}))
|
||||||
|
/*
|
||||||
|
<DescribeLoadBalancersResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'cloudformation', path: '/?Action=ListStacks&Version=2010-05-15'}))
|
||||||
|
/*
|
||||||
|
<ListStacksResponse xmlns="http://cloudformation.amazonaws.com/doc/2010-05-15/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'elasticbeanstalk', path: '/?Action=ListAvailableSolutionStacks&Version=2010-12-01'}))
|
||||||
|
/*
|
||||||
|
<ListAvailableSolutionStacksResponse xmlns="http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'rds', path: '/?Action=DescribeDBInstances&Version=2012-09-17'}))
|
||||||
|
/*
|
||||||
|
<DescribeDBInstancesResponse xmlns="http://rds.amazonaws.com/doc/2012-09-17/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'monitoring', path: '/?Action=ListMetrics&Version=2010-08-01'}))
|
||||||
|
/*
|
||||||
|
<ListMetricsResponse xmlns="http://monitoring.amazonaws.com/doc/2010-08-01/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'redshift', path: '/?Action=DescribeClusters&Version=2012-12-01'}))
|
||||||
|
/*
|
||||||
|
<DescribeClustersResponse xmlns="http://redshift.amazonaws.com/doc/2012-12-01/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'cloudfront', path: '/2014-05-31/distribution'}))
|
||||||
|
/*
|
||||||
|
<DistributionList xmlns="http://cloudfront.amazonaws.com/doc/2014-05-31/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'elasticache', path: '/?Action=DescribeCacheClusters&Version=2014-07-15'}))
|
||||||
|
/*
|
||||||
|
<DescribeCacheClustersResponse xmlns="http://elasticache.amazonaws.com/doc/2014-07-15/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'elasticmapreduce', path: '/?Action=DescribeJobFlows&Version=2009-03-31'}))
|
||||||
|
/*
|
||||||
|
<DescribeJobFlowsResponse xmlns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'route53', path: '/2013-04-01/hostedzone'}))
|
||||||
|
/*
|
||||||
|
<ListHostedZonesResponse xmlns="https://route53.amazonaws.com/doc/2013-04-01/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'appstream', path: '/applications'}))
|
||||||
|
/*
|
||||||
|
{"_links":{"curie":[{"href":"http://docs.aws.amazon.com/appstream/latest/...
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'cognito-sync', path: '/identitypools'}))
|
||||||
|
/*
|
||||||
|
{"Count":0,"IdentityPoolUsages":[],"MaxResults":16,"NextToken":null}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'elastictranscoder', path: '/2012-09-25/pipelines'}))
|
||||||
|
/*
|
||||||
|
{"NextPageToken":null,"Pipelines":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'lambda', path: '/2014-11-13/functions/'}))
|
||||||
|
/*
|
||||||
|
{"Functions":[],"NextMarker":null}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'ecs', path: '/?Action=ListClusters&Version=2014-11-13'}))
|
||||||
|
/*
|
||||||
|
<ListClustersResponse xmlns="http://ecs.amazonaws.com/doc/2014-11-13/">
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'glacier', path: '/-/vaults', headers: {'X-Amz-Glacier-Version': '2012-06-01'}}))
|
||||||
|
/*
|
||||||
|
{"Marker":null,"VaultList":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'storagegateway', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'StorageGateway_20120630.ListGateways'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"Gateways":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'datapipeline', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'DataPipeline.ListPipelines'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"hasMoreResults":false,"pipelineIdList":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'opsworks', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'OpsWorks_20130218.DescribeStacks'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"Stacks":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'route53domains', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'Route53Domains_v20140515.ListDomains'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"Domains":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'kinesis', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'Kinesis_20131202.ListStreams'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"HasMoreStreams":false,"StreamNames":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'cloudtrail', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'CloudTrail_20131101.DescribeTrails'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"trailList":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'logs', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'Logs_20140328.DescribeLogGroups'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"logGroups":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'codedeploy', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'CodeDeploy_20141006.ListApplications'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"applications":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'directconnect', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'OvertureService.DescribeConnections'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"connections":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'kms', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'TrentService.ListKeys'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"Keys":[],"Truncated":false}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'config', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'StarlingDoveService.DescribeDeliveryChannels'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"DeliveryChannels":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({service: 'cloudhsm', body: '{}', headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'CloudHsmFrontendService.ListAvailableZones'
|
||||||
|
}}))
|
||||||
|
/*
|
||||||
|
{"AZList":["us-east-1a","us-east-1b","us-east-1c"]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({
|
||||||
|
service: 'swf',
|
||||||
|
body: '{"registrationStatus":"REGISTERED"}',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.0',
|
||||||
|
'X-Amz-Target': 'SimpleWorkflowService.ListDomains'
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
/*
|
||||||
|
{"domainInfos":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({
|
||||||
|
service: 'cognito-identity',
|
||||||
|
body: '{"MaxResults": 1}',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-amz-json-1.1',
|
||||||
|
'X-Amz-Target': 'AWSCognitoIdentityService.ListIdentityPools'
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
/*
|
||||||
|
{"IdentityPools":[]}
|
||||||
|
...
|
||||||
|
*/
|
||||||
|
|
||||||
|
request(aws4.sign({
|
||||||
|
service: 'mobileanalytics',
|
||||||
|
path: '/2014-06-05/events',
|
||||||
|
body: JSON.stringify({events:[{
|
||||||
|
eventType: 'a',
|
||||||
|
timestamp: new Date().toISOString(),
|
||||||
|
session: {},
|
||||||
|
}]}),
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'X-Amz-Client-Context': JSON.stringify({
|
||||||
|
client: {client_id: 'a', app_title: 'a'},
|
||||||
|
custom: {},
|
||||||
|
env: {platform: 'a'},
|
||||||
|
services: {},
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
/*
|
||||||
|
(HTTP 202, empty response)
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
API
|
||||||
|
---
|
||||||
|
|
||||||
|
### aws4.sign(requestOptions, [credentials])
|
||||||
|
|
||||||
|
This calculates and populates the `Authorization` header of
|
||||||
|
`requestOptions`, and any other necessary AWS headers and/or request
|
||||||
|
options. Returns `requestOptions` as a convenience for chaining.
|
||||||
|
|
||||||
|
`requestOptions` is an object holding the same options that the node.js
|
||||||
|
[http.request](http://nodejs.org/docs/latest/api/http.html#http_http_request_options_callback)
|
||||||
|
function takes.
|
||||||
|
|
||||||
|
The following properties of `requestOptions` are used in the signing or
|
||||||
|
populated if they don't already exist:
|
||||||
|
|
||||||
|
- `hostname` or `host` (will be determined from `service` and `region` if not given)
|
||||||
|
- `method` (will use `'GET'` if not given or `'POST'` if there is a `body`)
|
||||||
|
- `path` (will use `'/'` if not given)
|
||||||
|
- `body` (will use `''` if not given)
|
||||||
|
- `service` (will be calculated from `hostname` or `host` if not given)
|
||||||
|
- `region` (will be calculated from `hostname` or `host` or use `'us-east-1'` if not given)
|
||||||
|
- `headers['Host']` (will use `hostname` or `host` or be calculated if not given)
|
||||||
|
- `headers['Content-Type']` (will use `'application/x-www-form-urlencoded; charset=utf-8'`
|
||||||
|
if not given and there is a `body`)
|
||||||
|
- `headers['Date']` (used to calculate the signature date if given, otherwise `new Date` is used)
|
||||||
|
|
||||||
|
Your AWS credentials (which can be found in your
|
||||||
|
[AWS console](https://portal.aws.amazon.com/gp/aws/securityCredentials))
|
||||||
|
can be specified in one of two ways:
|
||||||
|
|
||||||
|
- As the second argument, like this:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
aws4.sign(requestOptions, {
|
||||||
|
secretAccessKey: "<your-secret-access-key>",
|
||||||
|
accessKeyId: "<your-access-key-id>",
|
||||||
|
sessionToken: "<your-session-token>"
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
- From `process.env`, such as this:
|
||||||
|
|
||||||
|
```
|
||||||
|
export AWS_SECRET_ACCESS_KEY="<your-secret-access-key>"
|
||||||
|
export AWS_ACCESS_KEY_ID="<your-access-key-id>"
|
||||||
|
export AWS_SESSION_TOKEN="<your-session-token>"
|
||||||
|
```
|
||||||
|
|
||||||
|
(will also use `AWS_ACCESS_KEY` and `AWS_SECRET_KEY` if available)
|
||||||
|
|
||||||
|
The `sessionToken` property and `AWS_SESSION_TOKEN` environment variable are optional for signing
|
||||||
|
with [IAM STS temporary credentials](http://docs.aws.amazon.com/STS/latest/UsingSTS/using-temp-creds.html).
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
With [npm](http://npmjs.org/) do:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install aws4
|
||||||
|
```
|
||||||
|
|
||||||
|
Can also be used [in the browser](./browser).
|
||||||
|
|
||||||
|
Thanks
|
||||||
|
------
|
||||||
|
|
||||||
|
Thanks to [@jed](https://github.com/jed) for his
|
||||||
|
[dynamo-client](https://github.com/jed/dynamo-client) lib where I first
|
||||||
|
committed and subsequently extracted this code.
|
||||||
|
|
||||||
|
Also thanks to the
|
||||||
|
[official node.js AWS SDK](https://github.com/aws/aws-sdk-js) for giving
|
||||||
|
me a start on implementing the v4 signature.
|
||||||
|
|
318
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/aws4.js
generated
vendored
Normal file
318
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/aws4.js
generated
vendored
Normal file
|
@ -0,0 +1,318 @@
|
||||||
|
var aws4 = exports,
|
||||||
|
url = require('url'),
|
||||||
|
querystring = require('querystring'),
|
||||||
|
crypto = require('crypto'),
|
||||||
|
lru = require('lru-cache'),
|
||||||
|
credentialsCache = lru(1000)
|
||||||
|
|
||||||
|
// http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html
|
||||||
|
|
||||||
|
function hmac(key, string, encoding) {
|
||||||
|
return crypto.createHmac('sha256', key).update(string, 'utf8').digest(encoding)
|
||||||
|
}
|
||||||
|
|
||||||
|
function hash(string, encoding) {
|
||||||
|
return crypto.createHash('sha256').update(string, 'utf8').digest(encoding)
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function assumes the string has already been percent encoded
|
||||||
|
function encodeRfc3986(urlEncodedString) {
|
||||||
|
return urlEncodedString.replace(/[!'()*]/g, function(c) {
|
||||||
|
return '%' + c.charCodeAt(0).toString(16).toUpperCase()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// request: { path | body, [host], [method], [headers], [service], [region] }
|
||||||
|
// credentials: { accessKeyId, secretAccessKey, [sessionToken] }
|
||||||
|
function RequestSigner(request, credentials) {
|
||||||
|
|
||||||
|
if (typeof request === 'string') request = url.parse(request)
|
||||||
|
|
||||||
|
var headers = request.headers = (request.headers || {}),
|
||||||
|
hostParts = this.matchHost(request.hostname || request.host || headers.Host || headers.host)
|
||||||
|
|
||||||
|
this.request = request
|
||||||
|
this.credentials = credentials || this.defaultCredentials()
|
||||||
|
|
||||||
|
this.service = request.service || hostParts[0] || ''
|
||||||
|
this.region = request.region || hostParts[1] || 'us-east-1'
|
||||||
|
|
||||||
|
// SES uses a different domain from the service name
|
||||||
|
if (this.service === 'email') this.service = 'ses'
|
||||||
|
|
||||||
|
if (!request.method && request.body)
|
||||||
|
request.method = 'POST'
|
||||||
|
|
||||||
|
if (!headers.Host && !headers.host) {
|
||||||
|
headers.Host = request.hostname || request.host || this.createHost()
|
||||||
|
|
||||||
|
// If a port is specified explicitly, use it as is
|
||||||
|
if (request.port)
|
||||||
|
headers.Host += ':' + request.port
|
||||||
|
}
|
||||||
|
if (!request.hostname && !request.host)
|
||||||
|
request.hostname = headers.Host || headers.host
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.matchHost = function(host) {
|
||||||
|
var match = (host || '').match(/([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com$/)
|
||||||
|
var hostParts = (match || []).slice(1, 3)
|
||||||
|
|
||||||
|
// ES's hostParts are sometimes the other way round, if the value that is expected
|
||||||
|
// to be region equals ‘es’ switch them back
|
||||||
|
// e.g. search-cluster-name-aaaa00aaaa0aaa0aaaaaaa0aaa.us-east-1.es.amazonaws.com
|
||||||
|
if (hostParts[1] === 'es')
|
||||||
|
hostParts = hostParts.reverse()
|
||||||
|
|
||||||
|
return hostParts
|
||||||
|
}
|
||||||
|
|
||||||
|
// http://docs.aws.amazon.com/general/latest/gr/rande.html
|
||||||
|
RequestSigner.prototype.isSingleRegion = function() {
|
||||||
|
// Special case for S3 and SimpleDB in us-east-1
|
||||||
|
if (['s3', 'sdb'].indexOf(this.service) >= 0 && this.region === 'us-east-1') return true
|
||||||
|
|
||||||
|
return ['cloudfront', 'ls', 'route53', 'iam', 'importexport', 'sts']
|
||||||
|
.indexOf(this.service) >= 0
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.createHost = function() {
|
||||||
|
var region = this.isSingleRegion() ? '' :
|
||||||
|
(this.service === 's3' && this.region !== 'us-east-1' ? '-' : '.') + this.region,
|
||||||
|
service = this.service === 'ses' ? 'email' : this.service
|
||||||
|
return service + region + '.amazonaws.com'
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.prepareRequest = function() {
|
||||||
|
this.parsePath()
|
||||||
|
|
||||||
|
var request = this.request, headers = request.headers, query
|
||||||
|
|
||||||
|
if (request.signQuery) {
|
||||||
|
|
||||||
|
this.parsedPath.query = query = this.parsedPath.query || {}
|
||||||
|
|
||||||
|
if (this.credentials.sessionToken)
|
||||||
|
query['X-Amz-Security-Token'] = this.credentials.sessionToken
|
||||||
|
|
||||||
|
if (this.service === 's3' && !query['X-Amz-Expires'])
|
||||||
|
query['X-Amz-Expires'] = 86400
|
||||||
|
|
||||||
|
if (query['X-Amz-Date'])
|
||||||
|
this.datetime = query['X-Amz-Date']
|
||||||
|
else
|
||||||
|
query['X-Amz-Date'] = this.getDateTime()
|
||||||
|
|
||||||
|
query['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256'
|
||||||
|
query['X-Amz-Credential'] = this.credentials.accessKeyId + '/' + this.credentialString()
|
||||||
|
query['X-Amz-SignedHeaders'] = this.signedHeaders()
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (!request.doNotModifyHeaders) {
|
||||||
|
if (request.body && !headers['Content-Type'] && !headers['content-type'])
|
||||||
|
headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'
|
||||||
|
|
||||||
|
if (request.body && !headers['Content-Length'] && !headers['content-length'])
|
||||||
|
headers['Content-Length'] = Buffer.byteLength(request.body)
|
||||||
|
|
||||||
|
if (this.credentials.sessionToken)
|
||||||
|
headers['X-Amz-Security-Token'] = this.credentials.sessionToken
|
||||||
|
|
||||||
|
if (this.service === 's3')
|
||||||
|
headers['X-Amz-Content-Sha256'] = hash(this.request.body || '', 'hex')
|
||||||
|
|
||||||
|
if (headers['X-Amz-Date'])
|
||||||
|
this.datetime = headers['X-Amz-Date']
|
||||||
|
else
|
||||||
|
headers['X-Amz-Date'] = this.getDateTime()
|
||||||
|
}
|
||||||
|
|
||||||
|
delete headers.Authorization
|
||||||
|
delete headers.authorization
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.sign = function() {
|
||||||
|
if (!this.parsedPath) this.prepareRequest()
|
||||||
|
|
||||||
|
if (this.request.signQuery) {
|
||||||
|
this.parsedPath.query['X-Amz-Signature'] = this.signature()
|
||||||
|
} else {
|
||||||
|
this.request.headers.Authorization = this.authHeader()
|
||||||
|
}
|
||||||
|
|
||||||
|
this.request.path = this.formatPath()
|
||||||
|
|
||||||
|
return this.request
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.getDateTime = function() {
|
||||||
|
if (!this.datetime) {
|
||||||
|
var headers = this.request.headers,
|
||||||
|
date = new Date(headers.Date || headers.date || new Date)
|
||||||
|
|
||||||
|
this.datetime = date.toISOString().replace(/[:\-]|\.\d{3}/g, '')
|
||||||
|
}
|
||||||
|
return this.datetime
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.getDate = function() {
|
||||||
|
return this.getDateTime().substr(0, 8)
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.authHeader = function() {
|
||||||
|
return [
|
||||||
|
'AWS4-HMAC-SHA256 Credential=' + this.credentials.accessKeyId + '/' + this.credentialString(),
|
||||||
|
'SignedHeaders=' + this.signedHeaders(),
|
||||||
|
'Signature=' + this.signature(),
|
||||||
|
].join(', ')
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.signature = function() {
|
||||||
|
var date = this.getDate(),
|
||||||
|
cacheKey = [this.credentials.secretAccessKey, date, this.region, this.service].join(),
|
||||||
|
kDate, kRegion, kService, kCredentials = credentialsCache.get(cacheKey)
|
||||||
|
if (!kCredentials) {
|
||||||
|
kDate = hmac('AWS4' + this.credentials.secretAccessKey, date)
|
||||||
|
kRegion = hmac(kDate, this.region)
|
||||||
|
kService = hmac(kRegion, this.service)
|
||||||
|
kCredentials = hmac(kService, 'aws4_request')
|
||||||
|
credentialsCache.set(cacheKey, kCredentials)
|
||||||
|
}
|
||||||
|
return hmac(kCredentials, this.stringToSign(), 'hex')
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.stringToSign = function() {
|
||||||
|
return [
|
||||||
|
'AWS4-HMAC-SHA256',
|
||||||
|
this.getDateTime(),
|
||||||
|
this.credentialString(),
|
||||||
|
hash(this.canonicalString(), 'hex'),
|
||||||
|
].join('\n')
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.canonicalString = function() {
|
||||||
|
if (!this.parsedPath) this.prepareRequest()
|
||||||
|
|
||||||
|
var pathStr = this.parsedPath.path,
|
||||||
|
query = this.parsedPath.query,
|
||||||
|
queryStr = '',
|
||||||
|
normalizePath = this.service !== 's3',
|
||||||
|
decodePath = this.service === 's3' || this.request.doNotEncodePath,
|
||||||
|
decodeSlashesInPath = this.service === 's3',
|
||||||
|
firstValOnly = this.service === 's3',
|
||||||
|
bodyHash = this.service === 's3' && this.request.signQuery ?
|
||||||
|
'UNSIGNED-PAYLOAD' : hash(this.request.body || '', 'hex')
|
||||||
|
|
||||||
|
if (query) {
|
||||||
|
queryStr = encodeRfc3986(querystring.stringify(Object.keys(query).sort().reduce(function(obj, key) {
|
||||||
|
if (!key) return obj
|
||||||
|
obj[key] = !Array.isArray(query[key]) ? query[key] :
|
||||||
|
(firstValOnly ? query[key][0] : query[key].slice().sort())
|
||||||
|
return obj
|
||||||
|
}, {})))
|
||||||
|
}
|
||||||
|
if (pathStr !== '/') {
|
||||||
|
if (normalizePath) pathStr = pathStr.replace(/\/{2,}/g, '/')
|
||||||
|
pathStr = pathStr.split('/').reduce(function(path, piece) {
|
||||||
|
if (normalizePath && piece === '..') {
|
||||||
|
path.pop()
|
||||||
|
} else if (!normalizePath || piece !== '.') {
|
||||||
|
if (decodePath) piece = querystring.unescape(piece)
|
||||||
|
path.push(encodeRfc3986(querystring.escape(piece)))
|
||||||
|
}
|
||||||
|
return path
|
||||||
|
}, []).join('/')
|
||||||
|
if (pathStr[0] !== '/') pathStr = '/' + pathStr
|
||||||
|
if (decodeSlashesInPath) pathStr = pathStr.replace(/%2F/g, '/')
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
this.request.method || 'GET',
|
||||||
|
pathStr,
|
||||||
|
queryStr,
|
||||||
|
this.canonicalHeaders() + '\n',
|
||||||
|
this.signedHeaders(),
|
||||||
|
bodyHash,
|
||||||
|
].join('\n')
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.canonicalHeaders = function() {
|
||||||
|
var headers = this.request.headers
|
||||||
|
function trimAll(header) {
|
||||||
|
return header.toString().trim().replace(/\s+/g, ' ')
|
||||||
|
}
|
||||||
|
return Object.keys(headers)
|
||||||
|
.sort(function(a, b) { return a.toLowerCase() < b.toLowerCase() ? -1 : 1 })
|
||||||
|
.map(function(key) { return key.toLowerCase() + ':' + trimAll(headers[key]) })
|
||||||
|
.join('\n')
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.signedHeaders = function() {
|
||||||
|
return Object.keys(this.request.headers)
|
||||||
|
.map(function(key) { return key.toLowerCase() })
|
||||||
|
.sort()
|
||||||
|
.join(';')
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.credentialString = function() {
|
||||||
|
return [
|
||||||
|
this.getDate(),
|
||||||
|
this.region,
|
||||||
|
this.service,
|
||||||
|
'aws4_request',
|
||||||
|
].join('/')
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.defaultCredentials = function() {
|
||||||
|
var env = process.env
|
||||||
|
return {
|
||||||
|
accessKeyId: env.AWS_ACCESS_KEY_ID || env.AWS_ACCESS_KEY,
|
||||||
|
secretAccessKey: env.AWS_SECRET_ACCESS_KEY || env.AWS_SECRET_KEY,
|
||||||
|
sessionToken: env.AWS_SESSION_TOKEN,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.parsePath = function() {
|
||||||
|
var path = this.request.path || '/',
|
||||||
|
queryIx = path.indexOf('?'),
|
||||||
|
query = null
|
||||||
|
|
||||||
|
if (queryIx >= 0) {
|
||||||
|
query = querystring.parse(path.slice(queryIx + 1))
|
||||||
|
path = path.slice(0, queryIx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// S3 doesn't always encode characters > 127 correctly and
|
||||||
|
// all services don't encode characters > 255 correctly
|
||||||
|
// So if there are non-reserved chars (and it's not already all % encoded), just encode them all
|
||||||
|
if (/[^0-9A-Za-z!'()*\-._~%/]/.test(path)) {
|
||||||
|
path = path.split('/').map(function(piece) {
|
||||||
|
return querystring.escape(querystring.unescape(piece))
|
||||||
|
}).join('/')
|
||||||
|
}
|
||||||
|
|
||||||
|
this.parsedPath = {
|
||||||
|
path: path,
|
||||||
|
query: query,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestSigner.prototype.formatPath = function() {
|
||||||
|
var path = this.parsedPath.path,
|
||||||
|
query = this.parsedPath.query
|
||||||
|
|
||||||
|
if (!query) return path
|
||||||
|
|
||||||
|
// Services don't support empty query string keys
|
||||||
|
if (query[''] != null) delete query['']
|
||||||
|
|
||||||
|
return path + '?' + encodeRfc3986(querystring.stringify(query))
|
||||||
|
}
|
||||||
|
|
||||||
|
aws4.RequestSigner = RequestSigner
|
||||||
|
|
||||||
|
aws4.sign = function(request, credentials) {
|
||||||
|
return new RequestSigner(request, credentials).sign()
|
||||||
|
}
|
15
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/LICENSE
generated
vendored
Normal file
15
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
The ISC License
|
||||||
|
|
||||||
|
Copyright (c) Isaac Z. Schlueter and Contributors
|
||||||
|
|
||||||
|
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.
|
142
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/README.md
generated
vendored
Normal file
142
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/README.md
generated
vendored
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
# lru cache
|
||||||
|
|
||||||
|
A cache object that deletes the least-recently-used items.
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/isaacs/node-lru-cache.svg?branch=master)](https://travis-ci.org/isaacs/node-lru-cache) [![Coverage Status](https://coveralls.io/repos/isaacs/node-lru-cache/badge.svg?service=github)](https://coveralls.io/github/isaacs/node-lru-cache)
|
||||||
|
|
||||||
|
## Usage:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var LRU = require("lru-cache")
|
||||||
|
, options = { max: 500
|
||||||
|
, length: function (n, key) { return n * 2 + key.length }
|
||||||
|
, 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"
|
||||||
|
|
||||||
|
// non-string keys ARE fully supported
|
||||||
|
var someObject = {}
|
||||||
|
cache.set(someObject, 'a value')
|
||||||
|
cache.set('[object Object]', 'a different value')
|
||||||
|
assert.equal(cache.get(someObject), 'a 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, key){return n.length}`. The default is
|
||||||
|
`function(){return 1}`, which is fine if you want to store `max`
|
||||||
|
like-sized things. They item is passed as the first argument, and
|
||||||
|
the key is passed as the second argumnet.
|
||||||
|
* `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, maxAge)`
|
||||||
|
* `get(key) => value`
|
||||||
|
|
||||||
|
Both of these will update the "recently used"-ness of the key.
|
||||||
|
They do what you think. `maxAge` is optional and overrides the
|
||||||
|
cache `maxAge` option if provided.
|
||||||
|
|
||||||
|
If the key is not found, `get()` will return `undefined`.
|
||||||
|
|
||||||
|
The key and val can be any value.
|
||||||
|
|
||||||
|
* `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.)
|
||||||
|
|
||||||
|
* `rforEach(function(value,key,cache), [thisp])`
|
||||||
|
|
||||||
|
The same as `cache.forEach(...)` but items are iterated over in
|
||||||
|
reverse order. (ie, less 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.
|
||||||
|
|
||||||
|
* `length`
|
||||||
|
|
||||||
|
Return total length of objects in cache taking into account
|
||||||
|
`length` options function.
|
||||||
|
|
||||||
|
* `itemCount`
|
||||||
|
|
||||||
|
Return total quantity of objects currently in cache. Note, that
|
||||||
|
`stale` (see options) items are returned as part of this item
|
||||||
|
count.
|
||||||
|
|
||||||
|
* `dump()`
|
||||||
|
|
||||||
|
Return an array of the cache entries ready for serialization and usage
|
||||||
|
with 'destinationCache.load(arr)`.
|
||||||
|
|
||||||
|
* `load(cacheEntriesArray)`
|
||||||
|
|
||||||
|
Loads another cache entries array, obtained with `sourceCache.dump()`,
|
||||||
|
into the cache. The destination cache is reset before loading new entries
|
||||||
|
|
||||||
|
* `prune()`
|
||||||
|
|
||||||
|
Manually iterates over the entire cache proactively pruning old entries
|
469
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/lib/lru-cache.js
generated
vendored
Normal file
469
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/lib/lru-cache.js
generated
vendored
Normal file
|
@ -0,0 +1,469 @@
|
||||||
|
module.exports = LRUCache
|
||||||
|
|
||||||
|
// This will be a proper iterable 'Map' in engines that support it,
|
||||||
|
// or a fakey-fake PseudoMap in older versions.
|
||||||
|
var Map = require('pseudomap')
|
||||||
|
var util = require('util')
|
||||||
|
|
||||||
|
// A linked list to keep track of recently-used-ness
|
||||||
|
var Yallist = require('yallist')
|
||||||
|
|
||||||
|
// use symbols if possible, otherwise just _props
|
||||||
|
var symbols = {}
|
||||||
|
var hasSymbol = typeof Symbol === 'function'
|
||||||
|
var makeSymbol
|
||||||
|
/* istanbul ignore if */
|
||||||
|
if (hasSymbol) {
|
||||||
|
makeSymbol = function (key) {
|
||||||
|
return Symbol.for(key)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
makeSymbol = function (key) {
|
||||||
|
return '_' + key
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function priv (obj, key, val) {
|
||||||
|
var sym
|
||||||
|
if (symbols[key]) {
|
||||||
|
sym = symbols[key]
|
||||||
|
} else {
|
||||||
|
sym = makeSymbol(key)
|
||||||
|
symbols[key] = sym
|
||||||
|
}
|
||||||
|
if (arguments.length === 2) {
|
||||||
|
return obj[sym]
|
||||||
|
} else {
|
||||||
|
obj[sym] = val
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function naiveLength () { return 1 }
|
||||||
|
|
||||||
|
// lruList is a yallist where the head is the youngest
|
||||||
|
// item, and the tail is the oldest. the list contains the Hit
|
||||||
|
// objects as the entries.
|
||||||
|
// Each Hit object has a reference to its Yallist.Node. This
|
||||||
|
// never changes.
|
||||||
|
//
|
||||||
|
// cache is a Map (or PseudoMap) that matches the keys to
|
||||||
|
// the Yallist.Node object.
|
||||||
|
function LRUCache (options) {
|
||||||
|
if (!(this instanceof LRUCache)) {
|
||||||
|
return new LRUCache(options)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof options === 'number') {
|
||||||
|
options = { max: options }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!options) {
|
||||||
|
options = {}
|
||||||
|
}
|
||||||
|
|
||||||
|
var max = priv(this, 'max', options.max)
|
||||||
|
// Kind of weird to have a default max of Infinity, but oh well.
|
||||||
|
if (!max ||
|
||||||
|
!(typeof max === 'number') ||
|
||||||
|
max <= 0) {
|
||||||
|
priv(this, 'max', Infinity)
|
||||||
|
}
|
||||||
|
|
||||||
|
var lc = options.length || naiveLength
|
||||||
|
if (typeof lc !== 'function') {
|
||||||
|
lc = naiveLength
|
||||||
|
}
|
||||||
|
priv(this, 'lengthCalculator', lc)
|
||||||
|
|
||||||
|
priv(this, 'allowStale', options.stale || false)
|
||||||
|
priv(this, 'maxAge', options.maxAge || 0)
|
||||||
|
priv(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
|
||||||
|
}
|
||||||
|
priv(this, 'max', mL)
|
||||||
|
trim(this)
|
||||||
|
},
|
||||||
|
get: function () {
|
||||||
|
return priv(this, 'max')
|
||||||
|
},
|
||||||
|
enumerable: true
|
||||||
|
})
|
||||||
|
|
||||||
|
Object.defineProperty(LRUCache.prototype, 'allowStale', {
|
||||||
|
set: function (allowStale) {
|
||||||
|
priv(this, 'allowStale', !!allowStale)
|
||||||
|
},
|
||||||
|
get: function () {
|
||||||
|
return priv(this, 'allowStale')
|
||||||
|
},
|
||||||
|
enumerable: true
|
||||||
|
})
|
||||||
|
|
||||||
|
Object.defineProperty(LRUCache.prototype, 'maxAge', {
|
||||||
|
set: function (mA) {
|
||||||
|
if (!mA || !(typeof mA === 'number') || mA < 0) {
|
||||||
|
mA = 0
|
||||||
|
}
|
||||||
|
priv(this, 'maxAge', mA)
|
||||||
|
trim(this)
|
||||||
|
},
|
||||||
|
get: function () {
|
||||||
|
return priv(this, 'maxAge')
|
||||||
|
},
|
||||||
|
enumerable: true
|
||||||
|
})
|
||||||
|
|
||||||
|
// resize the cache when the lengthCalculator changes.
|
||||||
|
Object.defineProperty(LRUCache.prototype, 'lengthCalculator', {
|
||||||
|
set: function (lC) {
|
||||||
|
if (typeof lC !== 'function') {
|
||||||
|
lC = naiveLength
|
||||||
|
}
|
||||||
|
if (lC !== priv(this, 'lengthCalculator')) {
|
||||||
|
priv(this, 'lengthCalculator', lC)
|
||||||
|
priv(this, 'length', 0)
|
||||||
|
priv(this, 'lruList').forEach(function (hit) {
|
||||||
|
hit.length = priv(this, 'lengthCalculator').call(this, hit.value, hit.key)
|
||||||
|
priv(this, 'length', priv(this, 'length') + hit.length)
|
||||||
|
}, this)
|
||||||
|
}
|
||||||
|
trim(this)
|
||||||
|
},
|
||||||
|
get: function () { return priv(this, 'lengthCalculator') },
|
||||||
|
enumerable: true
|
||||||
|
})
|
||||||
|
|
||||||
|
Object.defineProperty(LRUCache.prototype, 'length', {
|
||||||
|
get: function () { return priv(this, 'length') },
|
||||||
|
enumerable: true
|
||||||
|
})
|
||||||
|
|
||||||
|
Object.defineProperty(LRUCache.prototype, 'itemCount', {
|
||||||
|
get: function () { return priv(this, 'lruList').length },
|
||||||
|
enumerable: true
|
||||||
|
})
|
||||||
|
|
||||||
|
LRUCache.prototype.rforEach = function (fn, thisp) {
|
||||||
|
thisp = thisp || this
|
||||||
|
for (var walker = priv(this, 'lruList').tail; walker !== null;) {
|
||||||
|
var prev = walker.prev
|
||||||
|
forEachStep(this, fn, walker, thisp)
|
||||||
|
walker = prev
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function forEachStep (self, fn, node, thisp) {
|
||||||
|
var hit = node.value
|
||||||
|
if (isStale(self, hit)) {
|
||||||
|
del(self, node)
|
||||||
|
if (!priv(self, 'allowStale')) {
|
||||||
|
hit = undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hit) {
|
||||||
|
fn.call(thisp, hit.value, hit.key, self)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.forEach = function (fn, thisp) {
|
||||||
|
thisp = thisp || this
|
||||||
|
for (var walker = priv(this, 'lruList').head; walker !== null;) {
|
||||||
|
var next = walker.next
|
||||||
|
forEachStep(this, fn, walker, thisp)
|
||||||
|
walker = next
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.keys = function () {
|
||||||
|
return priv(this, 'lruList').toArray().map(function (k) {
|
||||||
|
return k.key
|
||||||
|
}, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.values = function () {
|
||||||
|
return priv(this, 'lruList').toArray().map(function (k) {
|
||||||
|
return k.value
|
||||||
|
}, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.reset = function () {
|
||||||
|
if (priv(this, 'dispose') &&
|
||||||
|
priv(this, 'lruList') &&
|
||||||
|
priv(this, 'lruList').length) {
|
||||||
|
priv(this, 'lruList').forEach(function (hit) {
|
||||||
|
priv(this, 'dispose').call(this, hit.key, hit.value)
|
||||||
|
}, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
priv(this, 'cache', new Map()) // hash of items by key
|
||||||
|
priv(this, 'lruList', new Yallist()) // list of items in order of use recency
|
||||||
|
priv(this, 'length', 0) // length of items in the list
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.dump = function () {
|
||||||
|
return priv(this, 'lruList').map(function (hit) {
|
||||||
|
if (!isStale(this, hit)) {
|
||||||
|
return {
|
||||||
|
k: hit.key,
|
||||||
|
v: hit.value,
|
||||||
|
e: hit.now + (hit.maxAge || 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, this).toArray().filter(function (h) {
|
||||||
|
return h
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.dumpLru = function () {
|
||||||
|
return priv(this, 'lruList')
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.inspect = function (n, opts) {
|
||||||
|
var str = 'LRUCache {'
|
||||||
|
var extras = false
|
||||||
|
|
||||||
|
var as = priv(this, 'allowStale')
|
||||||
|
if (as) {
|
||||||
|
str += '\n allowStale: true'
|
||||||
|
extras = true
|
||||||
|
}
|
||||||
|
|
||||||
|
var max = priv(this, 'max')
|
||||||
|
if (max && max !== Infinity) {
|
||||||
|
if (extras) {
|
||||||
|
str += ','
|
||||||
|
}
|
||||||
|
str += '\n max: ' + util.inspect(max, opts)
|
||||||
|
extras = true
|
||||||
|
}
|
||||||
|
|
||||||
|
var maxAge = priv(this, 'maxAge')
|
||||||
|
if (maxAge) {
|
||||||
|
if (extras) {
|
||||||
|
str += ','
|
||||||
|
}
|
||||||
|
str += '\n maxAge: ' + util.inspect(maxAge, opts)
|
||||||
|
extras = true
|
||||||
|
}
|
||||||
|
|
||||||
|
var lc = priv(this, 'lengthCalculator')
|
||||||
|
if (lc && lc !== naiveLength) {
|
||||||
|
if (extras) {
|
||||||
|
str += ','
|
||||||
|
}
|
||||||
|
str += '\n length: ' + util.inspect(priv(this, 'length'), opts)
|
||||||
|
extras = true
|
||||||
|
}
|
||||||
|
|
||||||
|
var didFirst = false
|
||||||
|
priv(this, 'lruList').forEach(function (item) {
|
||||||
|
if (didFirst) {
|
||||||
|
str += ',\n '
|
||||||
|
} else {
|
||||||
|
if (extras) {
|
||||||
|
str += ',\n'
|
||||||
|
}
|
||||||
|
didFirst = true
|
||||||
|
str += '\n '
|
||||||
|
}
|
||||||
|
var key = util.inspect(item.key).split('\n').join('\n ')
|
||||||
|
var val = { value: item.value }
|
||||||
|
if (item.maxAge !== maxAge) {
|
||||||
|
val.maxAge = item.maxAge
|
||||||
|
}
|
||||||
|
if (lc !== naiveLength) {
|
||||||
|
val.length = item.length
|
||||||
|
}
|
||||||
|
if (isStale(this, item)) {
|
||||||
|
val.stale = true
|
||||||
|
}
|
||||||
|
|
||||||
|
val = util.inspect(val, opts).split('\n').join('\n ')
|
||||||
|
str += key + ' => ' + val
|
||||||
|
})
|
||||||
|
|
||||||
|
if (didFirst || extras) {
|
||||||
|
str += '\n'
|
||||||
|
}
|
||||||
|
str += '}'
|
||||||
|
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.set = function (key, value, maxAge) {
|
||||||
|
maxAge = maxAge || priv(this, 'maxAge')
|
||||||
|
|
||||||
|
var now = maxAge ? Date.now() : 0
|
||||||
|
var len = priv(this, 'lengthCalculator').call(this, value, key)
|
||||||
|
|
||||||
|
if (priv(this, 'cache').has(key)) {
|
||||||
|
if (len > priv(this, 'max')) {
|
||||||
|
del(this, priv(this, 'cache').get(key))
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var node = priv(this, 'cache').get(key)
|
||||||
|
var item = node.value
|
||||||
|
|
||||||
|
// dispose of the old one before overwriting
|
||||||
|
if (priv(this, 'dispose')) {
|
||||||
|
priv(this, 'dispose').call(this, key, item.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
item.now = now
|
||||||
|
item.maxAge = maxAge
|
||||||
|
item.value = value
|
||||||
|
priv(this, 'length', priv(this, 'length') + (len - item.length))
|
||||||
|
item.length = len
|
||||||
|
this.get(key)
|
||||||
|
trim(this)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
var hit = new Entry(key, value, len, now, maxAge)
|
||||||
|
|
||||||
|
// oversized objects fall out of cache automatically.
|
||||||
|
if (hit.length > priv(this, 'max')) {
|
||||||
|
if (priv(this, 'dispose')) {
|
||||||
|
priv(this, 'dispose').call(this, key, value)
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
priv(this, 'length', priv(this, 'length') + hit.length)
|
||||||
|
priv(this, 'lruList').unshift(hit)
|
||||||
|
priv(this, 'cache').set(key, priv(this, 'lruList').head)
|
||||||
|
trim(this)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.has = function (key) {
|
||||||
|
if (!priv(this, 'cache').has(key)) return false
|
||||||
|
var hit = priv(this, 'cache').get(key).value
|
||||||
|
if (isStale(this, hit)) {
|
||||||
|
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 node = priv(this, 'lruList').tail
|
||||||
|
if (!node) return null
|
||||||
|
del(this, node)
|
||||||
|
return node.value
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.del = function (key) {
|
||||||
|
del(this, priv(this, 'cache').get(key))
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.load = function (arr) {
|
||||||
|
// reset the cache
|
||||||
|
this.reset()
|
||||||
|
|
||||||
|
var now = Date.now()
|
||||||
|
// A previous serialized cache has the most recent items first
|
||||||
|
for (var l = arr.length - 1; l >= 0; l--) {
|
||||||
|
var hit = arr[l]
|
||||||
|
var expiresAt = hit.e || 0
|
||||||
|
if (expiresAt === 0) {
|
||||||
|
// the item was created without expiration in a non aged cache
|
||||||
|
this.set(hit.k, hit.v)
|
||||||
|
} else {
|
||||||
|
var maxAge = expiresAt - now
|
||||||
|
// dont add already expired items
|
||||||
|
if (maxAge > 0) {
|
||||||
|
this.set(hit.k, hit.v, maxAge)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LRUCache.prototype.prune = function () {
|
||||||
|
var self = this
|
||||||
|
priv(this, 'cache').forEach(function (value, key) {
|
||||||
|
get(self, key, false)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function get (self, key, doUse) {
|
||||||
|
var node = priv(self, 'cache').get(key)
|
||||||
|
if (node) {
|
||||||
|
var hit = node.value
|
||||||
|
if (isStale(self, hit)) {
|
||||||
|
del(self, node)
|
||||||
|
if (!priv(self, 'allowStale')) hit = undefined
|
||||||
|
} else {
|
||||||
|
if (doUse) {
|
||||||
|
priv(self, 'lruList').unshiftNode(node)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hit) hit = hit.value
|
||||||
|
}
|
||||||
|
return hit
|
||||||
|
}
|
||||||
|
|
||||||
|
function isStale (self, hit) {
|
||||||
|
if (!hit || (!hit.maxAge && !priv(self, 'maxAge'))) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
var stale = false
|
||||||
|
var diff = Date.now() - hit.now
|
||||||
|
if (hit.maxAge) {
|
||||||
|
stale = diff > hit.maxAge
|
||||||
|
} else {
|
||||||
|
stale = priv(self, 'maxAge') && (diff > priv(self, 'maxAge'))
|
||||||
|
}
|
||||||
|
return stale
|
||||||
|
}
|
||||||
|
|
||||||
|
function trim (self) {
|
||||||
|
if (priv(self, 'length') > priv(self, 'max')) {
|
||||||
|
for (var walker = priv(self, 'lruList').tail;
|
||||||
|
priv(self, 'length') > priv(self, 'max') && walker !== null;) {
|
||||||
|
// We know that we're about to delete this one, and also
|
||||||
|
// what the next least recently used key will be, so just
|
||||||
|
// go ahead and set it now.
|
||||||
|
var prev = walker.prev
|
||||||
|
del(self, walker)
|
||||||
|
walker = prev
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function del (self, node) {
|
||||||
|
if (node) {
|
||||||
|
var hit = node.value
|
||||||
|
if (priv(self, 'dispose')) {
|
||||||
|
priv(self, 'dispose').call(this, hit.key, hit.value)
|
||||||
|
}
|
||||||
|
priv(self, 'length', priv(self, 'length') - hit.length)
|
||||||
|
priv(self, 'cache').delete(hit.key)
|
||||||
|
priv(self, 'lruList').removeNode(node)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// classy, since V8 prefers predictable objects.
|
||||||
|
function Entry (key, value, length, now, maxAge) {
|
||||||
|
this.key = key
|
||||||
|
this.value = value
|
||||||
|
this.length = length
|
||||||
|
this.now = now
|
||||||
|
this.maxAge = maxAge || 0
|
||||||
|
}
|
95
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/package.json
generated
vendored
Normal file
95
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/package.json
generated
vendored
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"lru-cache@^4.0.0",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/aws4"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "lru-cache@>=4.0.0 <5.0.0",
|
||||||
|
"_id": "lru-cache@4.0.1",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/aws4/lru-cache",
|
||||||
|
"_nodeVersion": "5.6.0",
|
||||||
|
"_npmOperationalInternal": {
|
||||||
|
"host": "packages-12-west.internal.npmjs.com",
|
||||||
|
"tmp": "tmp/lru-cache-4.0.1.tgz_1458667372415_0.8005518841091543"
|
||||||
|
},
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "i@izs.me",
|
||||||
|
"name": "isaacs"
|
||||||
|
},
|
||||||
|
"_npmVersion": "3.7.3",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"name": "lru-cache",
|
||||||
|
"raw": "lru-cache@^4.0.0",
|
||||||
|
"rawSpec": "^4.0.0",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=4.0.0 <5.0.0",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/aws4"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz",
|
||||||
|
"_shasum": "1343955edaf2e37d9b9e7ee7241e27c4b9fb72be",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "lru-cache@^4.0.0",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/aws4",
|
||||||
|
"author": {
|
||||||
|
"email": "i@izs.me",
|
||||||
|
"name": "Isaac Z. Schlueter"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/isaacs/node-lru-cache/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"pseudomap": "^1.0.1",
|
||||||
|
"yallist": "^2.0.0"
|
||||||
|
},
|
||||||
|
"description": "A cache object that deletes the least-recently-used items.",
|
||||||
|
"devDependencies": {
|
||||||
|
"standard": "^5.4.1",
|
||||||
|
"tap": "^5.1.1"
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "1343955edaf2e37d9b9e7ee7241e27c4b9fb72be",
|
||||||
|
"tarball": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"lib/lru-cache.js"
|
||||||
|
],
|
||||||
|
"gitHead": "6cd8c8a43cf56c585bdb696faae94f9836cb9e28",
|
||||||
|
"homepage": "https://github.com/isaacs/node-lru-cache#readme",
|
||||||
|
"keywords": [
|
||||||
|
"mru",
|
||||||
|
"lru",
|
||||||
|
"cache"
|
||||||
|
],
|
||||||
|
"license": "ISC",
|
||||||
|
"main": "lib/lru-cache.js",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "isaacs@npmjs.com",
|
||||||
|
"name": "isaacs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"email": "ogd@aoaioxxysz.net",
|
||||||
|
"name": "othiym23"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "lru-cache",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/isaacs/node-lru-cache.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"posttest": "standard test/*.js lib/*.js",
|
||||||
|
"test": "tap test --branches=100 --functions=100 --lines=100 --statements=100"
|
||||||
|
},
|
||||||
|
"version": "4.0.1"
|
||||||
|
}
|
137
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/package.json
generated
vendored
Normal file
137
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/package.json
generated
vendored
Normal file
|
@ -0,0 +1,137 @@
|
||||||
|
{
|
||||||
|
"_args": [
|
||||||
|
[
|
||||||
|
"aws4@^1.2.1",
|
||||||
|
"/Users/sid/Desktop/code/RustyCode/node_modules/request"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"_from": "aws4@>=1.2.1 <2.0.0",
|
||||||
|
"_id": "aws4@1.3.2",
|
||||||
|
"_inCache": true,
|
||||||
|
"_installable": true,
|
||||||
|
"_location": "/aws4",
|
||||||
|
"_nodeVersion": "4.3.1",
|
||||||
|
"_npmOperationalInternal": {
|
||||||
|
"host": "packages-12-west.internal.npmjs.com",
|
||||||
|
"tmp": "tmp/aws4-1.3.2.tgz_1456871543899_0.13955276948399842"
|
||||||
|
},
|
||||||
|
"_npmUser": {
|
||||||
|
"email": "michael.hart.au@gmail.com",
|
||||||
|
"name": "hichaelmart"
|
||||||
|
},
|
||||||
|
"_npmVersion": "2.14.21",
|
||||||
|
"_phantomChildren": {
|
||||||
|
"pseudomap": "1.0.2",
|
||||||
|
"yallist": "2.0.0"
|
||||||
|
},
|
||||||
|
"_requested": {
|
||||||
|
"name": "aws4",
|
||||||
|
"raw": "aws4@^1.2.1",
|
||||||
|
"rawSpec": "^1.2.1",
|
||||||
|
"scope": null,
|
||||||
|
"spec": ">=1.2.1 <2.0.0",
|
||||||
|
"type": "range"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/request"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/aws4/-/aws4-1.3.2.tgz",
|
||||||
|
"_shasum": "d39e0bee412ced0e8ed94a23e314f313a95b9fd1",
|
||||||
|
"_shrinkwrap": null,
|
||||||
|
"_spec": "aws4@^1.2.1",
|
||||||
|
"_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request",
|
||||||
|
"author": {
|
||||||
|
"email": "michael.hart.au@gmail.com",
|
||||||
|
"name": "Michael Hart",
|
||||||
|
"url": "http://github.com/mhart"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/mhart/aws4/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"lru-cache": "^4.0.0"
|
||||||
|
},
|
||||||
|
"description": "Signs and prepares requests using AWS Signature Version 4",
|
||||||
|
"devDependencies": {
|
||||||
|
"mocha": "^2.4.5",
|
||||||
|
"should": "^8.2.2"
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"dist": {
|
||||||
|
"shasum": "d39e0bee412ced0e8ed94a23e314f313a95b9fd1",
|
||||||
|
"tarball": "http://registry.npmjs.org/aws4/-/aws4-1.3.2.tgz"
|
||||||
|
},
|
||||||
|
"gitHead": "e899db3aacbf2a034398f7dd483345dc793e8d72",
|
||||||
|
"homepage": "https://github.com/mhart/aws4#readme",
|
||||||
|
"keywords": [
|
||||||
|
"amazon",
|
||||||
|
"aws",
|
||||||
|
"signature",
|
||||||
|
"s3",
|
||||||
|
"ec2",
|
||||||
|
"autoscaling",
|
||||||
|
"cloudformation",
|
||||||
|
"elasticloadbalancing",
|
||||||
|
"elb",
|
||||||
|
"elasticbeanstalk",
|
||||||
|
"cloudsearch",
|
||||||
|
"dynamodb",
|
||||||
|
"kinesis",
|
||||||
|
"lambda",
|
||||||
|
"glacier",
|
||||||
|
"sqs",
|
||||||
|
"sns",
|
||||||
|
"iam",
|
||||||
|
"sts",
|
||||||
|
"ses",
|
||||||
|
"swf",
|
||||||
|
"storagegateway",
|
||||||
|
"datapipeline",
|
||||||
|
"directconnect",
|
||||||
|
"redshift",
|
||||||
|
"opsworks",
|
||||||
|
"rds",
|
||||||
|
"monitoring",
|
||||||
|
"cloudtrail",
|
||||||
|
"cloudfront",
|
||||||
|
"codedeploy",
|
||||||
|
"elasticache",
|
||||||
|
"elasticmapreduce",
|
||||||
|
"elastictranscoder",
|
||||||
|
"emr",
|
||||||
|
"cloudwatch",
|
||||||
|
"mobileanalytics",
|
||||||
|
"cognitoidentity",
|
||||||
|
"cognitosync",
|
||||||
|
"cognito",
|
||||||
|
"containerservice",
|
||||||
|
"ecs",
|
||||||
|
"appstream",
|
||||||
|
"keymanagementservice",
|
||||||
|
"kms",
|
||||||
|
"config",
|
||||||
|
"cloudhsm",
|
||||||
|
"route53",
|
||||||
|
"route53domains",
|
||||||
|
"logs"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "aws4.js",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "michael.hart.au@gmail.com",
|
||||||
|
"name": "hichaelmart"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "aws4",
|
||||||
|
"optionalDependencies": {},
|
||||||
|
"readme": "ERROR: No README data found!",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/mhart/aws4.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "mocha ./test/fast.js ./test/slow.js -b -t 100s -R list"
|
||||||
|
},
|
||||||
|
"version": "1.3.2"
|
||||||
|
}
|
5
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/balanced-match/.npmignore
generated
vendored
Normal file
5
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/balanced-match/.npmignore
generated
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
test
|
||||||
|
.gitignore
|
||||||
|
.travis.yml
|
||||||
|
Makefile
|
||||||
|
example.js
|
21
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/balanced-match/LICENSE.md
generated
vendored
Normal file
21
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/balanced-match/LICENSE.md
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
(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.
|
91
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/balanced-match/README.md
generated
vendored
Normal file
91
.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/balanced-match/README.md
generated
vendored
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
# balanced-match
|
||||||
|
|
||||||
|
Match balanced string pairs, like `{` and `}` or `<b>` and `</b>`. Supports regular expressions as well!
|
||||||
|
|
||||||
|
[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match)
|
||||||
|
[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match)
|
||||||
|
|
||||||
|
[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match)
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
Get the first matching pair of braces:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var balanced = require('balanced-match');
|
||||||
|
|
||||||
|
console.log(balanced('{', '}', 'pre{in{nested}}post'));
|
||||||
|
console.log(balanced('{', '}', 'pre{first}between{second}post'));
|
||||||
|
console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre { in{nest} } post'));
|
||||||
|
```
|
||||||
|
|
||||||
|
The matches are:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ node example.js
|
||||||
|
{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' }
|
||||||
|
{ start: 3,
|
||||||
|
end: 9,
|
||||||
|
pre: 'pre',
|
||||||
|
body: 'first',
|
||||||
|
post: 'between{second}post' }
|
||||||
|
{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' }
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
### var m = balanced(a, b, str)
|
||||||
|
|
||||||
|
For the first non-nested matching pair of `a` and `b` in `str`, return an
|
||||||
|
object with those keys:
|
||||||
|
|
||||||
|
* **start** the index of the first match of `a`
|
||||||
|
* **end** the index of the matching `b`
|
||||||
|
* **pre** the preamble, `a` and `b` not included
|
||||||
|
* **body** the match, `a` and `b` not included
|
||||||
|
* **post** the postscript, `a` and `b` not included
|
||||||
|
|
||||||
|
If there's no match, `undefined` will be returned.
|
||||||
|
|
||||||
|
If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']`.
|
||||||
|
|
||||||
|
### var r = balanced.range(a, b, str)
|
||||||
|
|
||||||
|
For the first non-nested matching pair of `a` and `b` in `str`, return an
|
||||||
|
array with indexes: `[ <a index>, <b index> ]`.
|
||||||
|
|
||||||
|
If there's no match, `undefined` will be returned.
|
||||||
|
|
||||||
|
If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]`.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
With [npm](https://npmjs.org) do:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install balanced-match
|
||||||
|
```
|
||||||
|
|
||||||
|
## 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.
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue