├── .gitignore
├── .idea
├── .gitignore
├── artifacts
│ └── perf_boy_main_jar.xml
├── compiler.xml
├── jarRepositories.xml
├── kotlinc.xml
├── misc.xml
└── vcs.xml
├── META-INF
└── MANIFEST.MF
├── README.md
├── build.gradle.kts
├── cover.jpeg
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── icon.png
├── node_modules
├── .bin
│ ├── mkdirp
│ ├── resolve
│ └── shjs
├── .package-lock.json
├── balanced-match
│ ├── .github
│ │ └── FUNDING.yml
│ ├── LICENSE.md
│ ├── README.md
│ ├── index.js
│ └── package.json
├── brace-expansion
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── buffer-crc32
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── chownr
│ ├── LICENSE
│ ├── README.md
│ ├── chownr.js
│ └── package.json
├── command-exists-promise
│ ├── LICENSE
│ ├── README.md
│ ├── lib
│ │ └── index.js
│ └── package.json
├── concat-map
│ ├── .travis.yml
│ ├── LICENSE
│ ├── README.markdown
│ ├── example
│ │ └── map.js
│ ├── index.js
│ ├── package.json
│ └── test
│ │ └── map.js
├── fd-slicer
│ ├── .npmignore
│ ├── .travis.yml
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ ├── package.json
│ └── test
│ │ └── test.js
├── fs-minipass
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── fs.realpath
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ ├── old.js
│ └── package.json
├── function-bind
│ ├── .eslintrc
│ ├── .github
│ │ ├── FUNDING.yml
│ │ └── SECURITY.md
│ ├── .nycrc
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── implementation.js
│ ├── index.js
│ ├── package.json
│ └── test
│ │ ├── .eslintrc
│ │ └── index.js
├── glob
│ ├── LICENSE
│ ├── README.md
│ ├── common.js
│ ├── glob.js
│ ├── package.json
│ └── sync.js
├── hasown
│ ├── .eslintrc
│ ├── .github
│ │ └── FUNDING.yml
│ ├── .nycrc
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.d.ts
│ ├── index.js
│ ├── package.json
│ └── tsconfig.json
├── inflight
│ ├── LICENSE
│ ├── README.md
│ ├── inflight.js
│ └── package.json
├── inherits
│ ├── LICENSE
│ ├── README.md
│ ├── inherits.js
│ ├── inherits_browser.js
│ └── package.json
├── interpret
│ ├── CHANGELOG
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ ├── mjs-stub.js
│ └── package.json
├── is-core-module
│ ├── .eslintrc
│ ├── .nycrc
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── core.json
│ ├── index.js
│ ├── package.json
│ └── test
│ │ └── index.js
├── minimatch
│ ├── LICENSE
│ ├── README.md
│ ├── minimatch.js
│ └── package.json
├── minimist
│ ├── .eslintrc
│ ├── .github
│ │ └── FUNDING.yml
│ ├── .nycrc
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── example
│ │ └── parse.js
│ ├── index.js
│ ├── package.json
│ └── test
│ │ ├── all_bool.js
│ │ ├── bool.js
│ │ ├── dash.js
│ │ ├── default_bool.js
│ │ ├── dotted.js
│ │ ├── kv_short.js
│ │ ├── long.js
│ │ ├── num.js
│ │ ├── parse.js
│ │ ├── parse_modified.js
│ │ ├── proto.js
│ │ ├── short.js
│ │ ├── stop_early.js
│ │ ├── unknown.js
│ │ └── whitespace.js
├── minipass
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── minizlib
│ ├── LICENSE
│ ├── README.md
│ ├── constants.js
│ ├── index.js
│ └── package.json
├── mkdirp
│ ├── LICENSE
│ ├── bin
│ │ ├── cmd.js
│ │ └── usage.txt
│ ├── index.js
│ ├── package.json
│ └── readme.markdown
├── njre
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ ├── lib
│ │ └── install.js
│ └── package.json
├── node-fetch
│ ├── LICENSE.md
│ ├── README.md
│ ├── browser.js
│ ├── lib
│ │ ├── index.es.js
│ │ ├── index.js
│ │ └── index.mjs
│ └── package.json
├── once
│ ├── LICENSE
│ ├── README.md
│ ├── once.js
│ └── package.json
├── path-is-absolute
│ ├── index.js
│ ├── license
│ ├── package.json
│ └── readme.md
├── path-parse
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── pend
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ ├── package.json
│ └── test.js
├── rechoir
│ ├── .npmignore
│ ├── .travis.yml
│ ├── CHANGELOG
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ ├── lib
│ │ ├── extension.js
│ │ ├── normalize.js
│ │ └── register.js
│ └── package.json
├── resolve
│ ├── .editorconfig
│ ├── .eslintrc
│ ├── .github
│ │ └── FUNDING.yml
│ ├── LICENSE
│ ├── SECURITY.md
│ ├── async.js
│ ├── bin
│ │ └── resolve
│ ├── example
│ │ ├── async.js
│ │ └── sync.js
│ ├── index.js
│ ├── lib
│ │ ├── async.js
│ │ ├── caller.js
│ │ ├── core.js
│ │ ├── core.json
│ │ ├── homedir.js
│ │ ├── is-core.js
│ │ ├── node-modules-paths.js
│ │ ├── normalize-options.js
│ │ └── sync.js
│ ├── package.json
│ ├── readme.markdown
│ ├── sync.js
│ └── test
│ │ ├── core.js
│ │ ├── dotdot.js
│ │ ├── dotdot
│ │ ├── abc
│ │ │ └── index.js
│ │ └── index.js
│ │ ├── faulty_basedir.js
│ │ ├── filter.js
│ │ ├── filter_sync.js
│ │ ├── home_paths.js
│ │ ├── home_paths_sync.js
│ │ ├── mock.js
│ │ ├── mock_sync.js
│ │ ├── module_dir.js
│ │ ├── module_dir
│ │ ├── xmodules
│ │ │ └── aaa
│ │ │ │ └── index.js
│ │ ├── ymodules
│ │ │ └── aaa
│ │ │ │ └── index.js
│ │ └── zmodules
│ │ │ └── bbb
│ │ │ ├── main.js
│ │ │ └── package.json
│ │ ├── node-modules-paths.js
│ │ ├── node_path.js
│ │ ├── node_path
│ │ ├── x
│ │ │ ├── aaa
│ │ │ │ └── index.js
│ │ │ └── ccc
│ │ │ │ └── index.js
│ │ └── y
│ │ │ ├── bbb
│ │ │ └── index.js
│ │ │ └── ccc
│ │ │ └── index.js
│ │ ├── nonstring.js
│ │ ├── pathfilter.js
│ │ ├── pathfilter
│ │ └── deep_ref
│ │ │ └── main.js
│ │ ├── precedence.js
│ │ ├── precedence
│ │ ├── aaa.js
│ │ ├── aaa
│ │ │ ├── index.js
│ │ │ └── main.js
│ │ ├── bbb.js
│ │ └── bbb
│ │ │ └── main.js
│ │ ├── resolver.js
│ │ ├── resolver
│ │ ├── baz
│ │ │ ├── doom.js
│ │ │ ├── package.json
│ │ │ └── quux.js
│ │ ├── browser_field
│ │ │ ├── a.js
│ │ │ ├── b.js
│ │ │ └── package.json
│ │ ├── cup.coffee
│ │ ├── dot_main
│ │ │ ├── index.js
│ │ │ └── package.json
│ │ ├── dot_slash_main
│ │ │ ├── index.js
│ │ │ └── package.json
│ │ ├── false_main
│ │ │ ├── index.js
│ │ │ └── package.json
│ │ ├── foo.js
│ │ ├── incorrect_main
│ │ │ ├── index.js
│ │ │ └── package.json
│ │ ├── invalid_main
│ │ │ └── package.json
│ │ ├── mug.coffee
│ │ ├── mug.js
│ │ ├── multirepo
│ │ │ ├── lerna.json
│ │ │ ├── package.json
│ │ │ └── packages
│ │ │ │ ├── package-a
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ │ └── package-b
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ ├── nested_symlinks
│ │ │ └── mylib
│ │ │ │ ├── async.js
│ │ │ │ ├── package.json
│ │ │ │ └── sync.js
│ │ ├── other_path
│ │ │ ├── lib
│ │ │ │ └── other-lib.js
│ │ │ └── root.js
│ │ ├── quux
│ │ │ └── foo
│ │ │ │ └── index.js
│ │ ├── same_names
│ │ │ ├── foo.js
│ │ │ └── foo
│ │ │ │ └── index.js
│ │ ├── symlinked
│ │ │ ├── _
│ │ │ │ ├── node_modules
│ │ │ │ │ └── foo.js
│ │ │ │ └── symlink_target
│ │ │ │ │ └── .gitkeep
│ │ │ └── package
│ │ │ │ ├── bar.js
│ │ │ │ └── package.json
│ │ └── without_basedir
│ │ │ └── main.js
│ │ ├── resolver_sync.js
│ │ ├── shadowed_core.js
│ │ ├── shadowed_core
│ │ └── node_modules
│ │ │ └── util
│ │ │ └── index.js
│ │ ├── subdirs.js
│ │ └── symlinks.js
├── safe-buffer
│ ├── LICENSE
│ ├── README.md
│ ├── index.d.ts
│ ├── index.js
│ └── package.json
├── shelljs
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── bin
│ │ └── shjs
│ ├── commands.js
│ ├── global.js
│ ├── make.js
│ ├── package.json
│ ├── plugin.js
│ ├── shell.js
│ └── src
│ │ ├── cat.js
│ │ ├── cd.js
│ │ ├── chmod.js
│ │ ├── common.js
│ │ ├── cp.js
│ │ ├── dirs.js
│ │ ├── echo.js
│ │ ├── error.js
│ │ ├── exec-child.js
│ │ ├── exec.js
│ │ ├── find.js
│ │ ├── grep.js
│ │ ├── head.js
│ │ ├── ln.js
│ │ ├── ls.js
│ │ ├── mkdir.js
│ │ ├── mv.js
│ │ ├── popd.js
│ │ ├── pushd.js
│ │ ├── pwd.js
│ │ ├── rm.js
│ │ ├── sed.js
│ │ ├── set.js
│ │ ├── sort.js
│ │ ├── tail.js
│ │ ├── tempdir.js
│ │ ├── test.js
│ │ ├── to.js
│ │ ├── toEnd.js
│ │ ├── touch.js
│ │ ├── uniq.js
│ │ └── which.js
├── supports-preserve-symlinks-flag
│ ├── .eslintrc
│ ├── .github
│ │ └── FUNDING.yml
│ ├── .nycrc
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── browser.js
│ ├── index.js
│ ├── package.json
│ └── test
│ │ └── index.js
├── tar
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ ├── lib
│ │ ├── buffer.js
│ │ ├── create.js
│ │ ├── extract.js
│ │ ├── header.js
│ │ ├── high-level-opt.js
│ │ ├── large-numbers.js
│ │ ├── list.js
│ │ ├── mkdir.js
│ │ ├── mode-fix.js
│ │ ├── normalize-windows-path.js
│ │ ├── pack.js
│ │ ├── parse.js
│ │ ├── path-reservations.js
│ │ ├── pax.js
│ │ ├── read-entry.js
│ │ ├── replace.js
│ │ ├── strip-absolute-path.js
│ │ ├── strip-trailing-slashes.js
│ │ ├── types.js
│ │ ├── unpack.js
│ │ ├── update.js
│ │ ├── warn-mixin.js
│ │ ├── winchars.js
│ │ └── write-entry.js
│ └── package.json
├── tr46
│ ├── .npmignore
│ ├── index.js
│ ├── lib
│ │ ├── .gitkeep
│ │ └── mappingTable.json
│ └── package.json
├── webidl-conversions
│ ├── LICENSE.md
│ ├── README.md
│ ├── lib
│ │ └── index.js
│ └── package.json
├── whatwg-url
│ ├── LICENSE.txt
│ ├── README.md
│ ├── lib
│ │ ├── URL-impl.js
│ │ ├── URL.js
│ │ ├── public-api.js
│ │ ├── url-state-machine.js
│ │ └── utils.js
│ └── package.json
├── wrappy
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ └── wrappy.js
├── yallist
│ ├── LICENSE
│ ├── README.md
│ ├── iterator.js
│ ├── package.json
│ └── yallist.js
└── yauzl
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── package.json
├── settings.gradle.kts
├── src
├── main
│ ├── kotlin
│ │ └── io
│ │ │ └── github
│ │ │ └── theapache64
│ │ │ └── perfsheet
│ │ │ ├── app
│ │ │ ├── App.kt
│ │ │ └── AppController.kt
│ │ │ ├── core
│ │ │ ├── TraceLogger.kt
│ │ │ └── filter
│ │ │ │ ├── AnonFilter.kt
│ │ │ │ ├── Filter.kt
│ │ │ │ ├── FrameFilter.kt
│ │ │ │ ├── FrameworkCallsFilter.kt
│ │ │ │ ├── LastHyphenFilter.kt
│ │ │ │ └── LineNoFilter.kt
│ │ │ ├── data
│ │ │ └── repo
│ │ │ │ ├── AppRepo.kt
│ │ │ │ ├── ExcelRepo.kt
│ │ │ │ └── TraceRepo.kt
│ │ │ ├── di
│ │ │ ├── AppComponent.kt
│ │ │ └── module
│ │ │ │ ├── RepoModule.kt
│ │ │ │ └── TraceParserModule.kt
│ │ │ ├── model
│ │ │ ├── Method.kt
│ │ │ ├── Node.kt
│ │ │ ├── ResultRow.kt
│ │ │ └── SheetHeading.kt
│ │ │ └── ui
│ │ │ ├── analyze
│ │ │ ├── AnalyzeActivity.kt
│ │ │ └── AnalyzeViewModel.kt
│ │ │ └── splash
│ │ │ ├── SplashActivity.kt
│ │ │ └── SplashViewModel.kt
│ └── resources
│ │ └── .gitkeep
└── test
│ ├── kotlin
│ └── io
│ │ └── github
│ │ └── theapache64
│ │ └── perfsheet
│ │ ├── TestAppComponent.kt
│ │ ├── data
│ │ └── repo
│ │ │ └── TraceRepoImplTest.kt
│ │ └── ui
│ │ └── analyze
│ │ └── AnalyzeViewModelTest.kt
│ └── resources
│ └── .gitkeep
└── trace-parser
├── build.gradle.kts
└── src
├── main
├── kotlin
│ └── io
│ │ └── github
│ │ └── theapache64
│ │ └── perfsheet
│ │ └── traceparser
│ │ ├── analyzer
│ │ ├── AnalyzerResultImpl.kt
│ │ ├── MethodData.kt
│ │ ├── MethodsAndClasses.kt
│ │ ├── ProfileDataImpl.kt
│ │ ├── ThreadItemImpl.kt
│ │ ├── ThreadTimeBoundsImpl.kt
│ │ ├── TraceAnalyzer.kt
│ │ └── converter
│ │ │ ├── NameConverter.kt
│ │ │ └── NoOpNameConverter.kt
│ │ └── core
│ │ ├── AnalyzerResult.kt
│ │ ├── AppLogger.kt
│ │ ├── ProfileData.kt
│ │ ├── ThreadItem.kt
│ │ ├── ThreadTimeBounds.kt
│ │ └── TraceReader.kt
└── resources
│ └── .gitkeep
└── test
├── kotlin
└── .gitkeep
└── resources
└── .gitkeep
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/.idea/kotlinc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Main-Class: io.github.theapache64.perfsheet.app.AppKt
3 |
4 |
--------------------------------------------------------------------------------
/cover.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/cover.jpeg
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | kotlin.code.style=official
2 | # more heap
3 | org.gradle.jvmargs=-Xmx8192m
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
--------------------------------------------------------------------------------
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/icon.png
--------------------------------------------------------------------------------
/node_modules/.bin/mkdirp:
--------------------------------------------------------------------------------
1 | ../mkdirp/bin/cmd.js
--------------------------------------------------------------------------------
/node_modules/.bin/resolve:
--------------------------------------------------------------------------------
1 | ../resolve/bin/resolve
--------------------------------------------------------------------------------
/node_modules/.bin/shjs:
--------------------------------------------------------------------------------
1 | ../shelljs/bin/shjs
--------------------------------------------------------------------------------
/node_modules/balanced-match/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | tidelift: "npm/balanced-match"
2 | patreon: juliangruber
3 |
--------------------------------------------------------------------------------
/node_modules/balanced-match/LICENSE.md:
--------------------------------------------------------------------------------
1 | (MIT)
2 |
3 | Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9 | of the Software, and to permit persons to whom the Software is furnished to do
10 | so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/balanced-match/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = balanced;
3 | function balanced(a, b, str) {
4 | if (a instanceof RegExp) a = maybeMatch(a, str);
5 | if (b instanceof RegExp) b = maybeMatch(b, str);
6 |
7 | var r = range(a, b, str);
8 |
9 | return r && {
10 | start: r[0],
11 | end: r[1],
12 | pre: str.slice(0, r[0]),
13 | body: str.slice(r[0] + a.length, r[1]),
14 | post: str.slice(r[1] + b.length)
15 | };
16 | }
17 |
18 | function maybeMatch(reg, str) {
19 | var m = str.match(reg);
20 | return m ? m[0] : null;
21 | }
22 |
23 | balanced.range = range;
24 | function range(a, b, str) {
25 | var begs, beg, left, right, result;
26 | var ai = str.indexOf(a);
27 | var bi = str.indexOf(b, ai + 1);
28 | var i = ai;
29 |
30 | if (ai >= 0 && bi > 0) {
31 | if(a===b) {
32 | return [ai, bi];
33 | }
34 | begs = [];
35 | left = str.length;
36 |
37 | while (i >= 0 && !result) {
38 | if (i == ai) {
39 | begs.push(i);
40 | ai = str.indexOf(a, i + 1);
41 | } else if (begs.length == 1) {
42 | result = [ begs.pop(), bi ];
43 | } else {
44 | beg = begs.pop();
45 | if (beg < left) {
46 | left = beg;
47 | right = bi;
48 | }
49 |
50 | bi = str.indexOf(b, i + 1);
51 | }
52 |
53 | i = ai < bi && ai >= 0 ? ai : bi;
54 | }
55 |
56 | if (begs.length) {
57 | result = [ left, right ];
58 | }
59 | }
60 |
61 | return result;
62 | }
63 |
--------------------------------------------------------------------------------
/node_modules/balanced-match/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "balanced-match",
3 | "description": "Match balanced character pairs, like \"{\" and \"}\"",
4 | "version": "1.0.2",
5 | "repository": {
6 | "type": "git",
7 | "url": "git://github.com/juliangruber/balanced-match.git"
8 | },
9 | "homepage": "https://github.com/juliangruber/balanced-match",
10 | "main": "index.js",
11 | "scripts": {
12 | "test": "tape test/test.js",
13 | "bench": "matcha test/bench.js"
14 | },
15 | "devDependencies": {
16 | "matcha": "^0.7.0",
17 | "tape": "^4.6.0"
18 | },
19 | "keywords": [
20 | "match",
21 | "regexp",
22 | "test",
23 | "balanced",
24 | "parse"
25 | ],
26 | "author": {
27 | "name": "Julian Gruber",
28 | "email": "mail@juliangruber.com",
29 | "url": "http://juliangruber.com"
30 | },
31 | "license": "MIT",
32 | "testling": {
33 | "files": "test/*.js",
34 | "browsers": [
35 | "ie/8..latest",
36 | "firefox/20..latest",
37 | "firefox/nightly",
38 | "chrome/25..latest",
39 | "chrome/canary",
40 | "opera/12..latest",
41 | "opera/next",
42 | "safari/5.1..latest",
43 | "ipad/6.0..latest",
44 | "iphone/6.0..latest",
45 | "android-browser/4.2..latest"
46 | ]
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/node_modules/brace-expansion/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2013 Julian Gruber
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/brace-expansion/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "brace-expansion",
3 | "description": "Brace expansion as known from sh/bash",
4 | "version": "1.1.11",
5 | "repository": {
6 | "type": "git",
7 | "url": "git://github.com/juliangruber/brace-expansion.git"
8 | },
9 | "homepage": "https://github.com/juliangruber/brace-expansion",
10 | "main": "index.js",
11 | "scripts": {
12 | "test": "tape test/*.js",
13 | "gentest": "bash test/generate.sh",
14 | "bench": "matcha test/perf/bench.js"
15 | },
16 | "dependencies": {
17 | "balanced-match": "^1.0.0",
18 | "concat-map": "0.0.1"
19 | },
20 | "devDependencies": {
21 | "matcha": "^0.7.0",
22 | "tape": "^4.6.0"
23 | },
24 | "keywords": [],
25 | "author": {
26 | "name": "Julian Gruber",
27 | "email": "mail@juliangruber.com",
28 | "url": "http://juliangruber.com"
29 | },
30 | "license": "MIT",
31 | "testling": {
32 | "files": "test/*.js",
33 | "browsers": [
34 | "ie/8..latest",
35 | "firefox/20..latest",
36 | "firefox/nightly",
37 | "chrome/25..latest",
38 | "chrome/canary",
39 | "opera/12..latest",
40 | "opera/next",
41 | "safari/5.1..latest",
42 | "ipad/6.0..latest",
43 | "iphone/6.0..latest",
44 | "android-browser/4.2..latest"
45 | ]
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/node_modules/buffer-crc32/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License
2 |
3 | Copyright (c) 2013 Brian J. Brennan
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to use,
8 | copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
9 | Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
16 | INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
17 | PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
18 | FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/node_modules/buffer-crc32/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": "Brian J. Brennan ",
3 | "name": "buffer-crc32",
4 | "description": "A pure javascript CRC32 algorithm that plays nice with binary data",
5 | "version": "0.2.13",
6 | "licenses": [
7 | {
8 | "type": "MIT",
9 | "url": "https://github.com/brianloveswords/buffer-crc32/raw/master/LICENSE"
10 | }
11 | ],
12 | "contributors": [
13 | {
14 | "name": "Vladimir Kuznetsov",
15 | "github": "mistakster"
16 | }
17 | ],
18 | "homepage": "https://github.com/brianloveswords/buffer-crc32",
19 | "repository": {
20 | "type": "git",
21 | "url": "git://github.com/brianloveswords/buffer-crc32.git"
22 | },
23 | "main": "index.js",
24 | "scripts": {
25 | "test": "./node_modules/.bin/tap tests/*.test.js"
26 | },
27 | "dependencies": {},
28 | "devDependencies": {
29 | "tap": "~0.2.5"
30 | },
31 | "optionalDependencies": {},
32 | "engines": {
33 | "node": "*"
34 | },
35 | "license": "MIT",
36 | "files": [
37 | "index.js"
38 | ]
39 | }
40 |
--------------------------------------------------------------------------------
/node_modules/chownr/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/node_modules/chownr/README.md:
--------------------------------------------------------------------------------
1 | Like `chown -R`.
2 |
3 | Takes the same arguments as `fs.chown()`
4 |
--------------------------------------------------------------------------------
/node_modules/chownr/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
3 | "name": "chownr",
4 | "description": "like `chown -R`",
5 | "version": "1.1.4",
6 | "repository": {
7 | "type": "git",
8 | "url": "git://github.com/isaacs/chownr.git"
9 | },
10 | "main": "chownr.js",
11 | "files": [
12 | "chownr.js"
13 | ],
14 | "devDependencies": {
15 | "mkdirp": "0.3",
16 | "rimraf": "^2.7.1",
17 | "tap": "^14.10.6"
18 | },
19 | "tap": {
20 | "check-coverage": true
21 | },
22 | "scripts": {
23 | "test": "tap",
24 | "preversion": "npm test",
25 | "postversion": "npm publish",
26 | "prepublishOnly": "git push origin --follow-tags"
27 | },
28 | "license": "ISC"
29 | }
30 |
--------------------------------------------------------------------------------
/node_modules/command-exists-promise/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2019 Raphaël Thériault
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/node_modules/command-exists-promise/README.md:
--------------------------------------------------------------------------------
1 | # command-exists-promise
2 |   
3 | Node module to check if a command-line command exists.
4 | Forked from [command-exists](https://github.com/mathisonian/command-exists).
5 | ## Installation
6 | ```console
7 | # For npm users
8 | $ npm i command-exists-promise
9 |
10 | # For yarn users
11 | $ yarn add command-exists-promise
12 | ```
13 | ## Usage
14 | The function returns a promise that will resolve to `true` if the command exists and `false` if it doesn't.
15 | On UNIX, the promise will resolve to `true` if the command is a path to an executable file. On Windows, it will resolve to `true` for any existing file.
16 | ### Promise
17 | ```js
18 | const commandExists = require('command-exists-promise')
19 |
20 | commandExists('ls')
21 | .then(exists => {
22 | if (exists) {
23 | // The command exists
24 | } else {
25 | // The command doesn't exist
26 | }
27 | })
28 | .catch(err => {
29 | // Should never happen but better handle it just in case
30 | })
31 | ```
32 | ### Await
33 | ```js
34 | const commandExists = require('command-exists-promise')
35 |
36 | try {
37 | const exists = await commandExists('ls')
38 | if (exists) {
39 | // The command exists
40 | } else {
41 | // The command doesn't exist
42 | }
43 | } catch (err) {
44 | // Should never happen but better handle it just in case
45 | }
46 | ```
47 |
--------------------------------------------------------------------------------
/node_modules/command-exists-promise/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "command-exists-promise",
3 | "version": "2.0.2",
4 | "description": "Checks whether a command line command exists in the current environment.",
5 | "main": "lib/index.js",
6 | "scripts": {
7 | "test": "mocha test/test.js"
8 | },
9 | "repository": "github:raftario/command-exists",
10 | "keywords": [
11 | "cli",
12 | "command",
13 | "exists",
14 | "promise",
15 | "async"
16 | ],
17 | "files": [],
18 | "author": "Raphaël Thériault (https://raphaeltheriault.com)",
19 | "contributors": [
20 | "Matthew Conlen",
21 | "Arthur Silber (https://arthursilber.de)"
22 | ],
23 | "license": "MIT",
24 | "homepage": "https://github.com/raftario/command-exists",
25 | "engines": {
26 | "node": ">=6"
27 | },
28 | "devDependencies": {
29 | "expect.js": "^0.3.1",
30 | "mocha": "^6.1.4"
31 | },
32 | "dependencies": {}
33 | }
34 |
--------------------------------------------------------------------------------
/node_modules/concat-map/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - 0.4
4 | - 0.6
5 |
--------------------------------------------------------------------------------
/node_modules/concat-map/LICENSE:
--------------------------------------------------------------------------------
1 | This software is released under the MIT license:
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of
4 | this software and associated documentation files (the "Software"), to deal in
5 | the Software without restriction, including without limitation the rights to
6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
7 | the Software, and to permit persons to whom the Software is furnished to do so,
8 | subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
--------------------------------------------------------------------------------
/node_modules/concat-map/README.markdown:
--------------------------------------------------------------------------------
1 | concat-map
2 | ==========
3 |
4 | Concatenative mapdashery.
5 |
6 | [](http://ci.testling.com/substack/node-concat-map)
7 |
8 | [](http://travis-ci.org/substack/node-concat-map)
9 |
10 | example
11 | =======
12 |
13 | ``` js
14 | var concatMap = require('concat-map');
15 | var xs = [ 1, 2, 3, 4, 5, 6 ];
16 | var ys = concatMap(xs, function (x) {
17 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
18 | });
19 | console.dir(ys);
20 | ```
21 |
22 | ***
23 |
24 | ```
25 | [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]
26 | ```
27 |
28 | methods
29 | =======
30 |
31 | ``` js
32 | var concatMap = require('concat-map')
33 | ```
34 |
35 | concatMap(xs, fn)
36 | -----------------
37 |
38 | Return an array of concatenated elements by calling `fn(x, i)` for each element
39 | `x` and each index `i` in the array `xs`.
40 |
41 | When `fn(x, i)` returns an array, its result will be concatenated with the
42 | result array. If `fn(x, i)` returns anything else, that value will be pushed
43 | onto the end of the result array.
44 |
45 | install
46 | =======
47 |
48 | With [npm](http://npmjs.org) do:
49 |
50 | ```
51 | npm install concat-map
52 | ```
53 |
54 | license
55 | =======
56 |
57 | MIT
58 |
59 | notes
60 | =====
61 |
62 | This module was written while sitting high above the ground in a tree.
63 |
--------------------------------------------------------------------------------
/node_modules/concat-map/example/map.js:
--------------------------------------------------------------------------------
1 | var concatMap = require('../');
2 | var xs = [ 1, 2, 3, 4, 5, 6 ];
3 | var ys = concatMap(xs, function (x) {
4 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
5 | });
6 | console.dir(ys);
7 |
--------------------------------------------------------------------------------
/node_modules/concat-map/index.js:
--------------------------------------------------------------------------------
1 | module.exports = function (xs, fn) {
2 | var res = [];
3 | for (var i = 0; i < xs.length; i++) {
4 | var x = fn(xs[i], i);
5 | if (isArray(x)) res.push.apply(res, x);
6 | else res.push(x);
7 | }
8 | return res;
9 | };
10 |
11 | var isArray = Array.isArray || function (xs) {
12 | return Object.prototype.toString.call(xs) === '[object Array]';
13 | };
14 |
--------------------------------------------------------------------------------
/node_modules/concat-map/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name" : "concat-map",
3 | "description" : "concatenative mapdashery",
4 | "version" : "0.0.1",
5 | "repository" : {
6 | "type" : "git",
7 | "url" : "git://github.com/substack/node-concat-map.git"
8 | },
9 | "main" : "index.js",
10 | "keywords" : [
11 | "concat",
12 | "concatMap",
13 | "map",
14 | "functional",
15 | "higher-order"
16 | ],
17 | "directories" : {
18 | "example" : "example",
19 | "test" : "test"
20 | },
21 | "scripts" : {
22 | "test" : "tape test/*.js"
23 | },
24 | "devDependencies" : {
25 | "tape" : "~2.4.0"
26 | },
27 | "license" : "MIT",
28 | "author" : {
29 | "name" : "James Halliday",
30 | "email" : "mail@substack.net",
31 | "url" : "http://substack.net"
32 | },
33 | "testling" : {
34 | "files" : "test/*.js",
35 | "browsers" : {
36 | "ie" : [ 6, 7, 8, 9 ],
37 | "ff" : [ 3.5, 10, 15.0 ],
38 | "chrome" : [ 10, 22 ],
39 | "safari" : [ 5.1 ],
40 | "opera" : [ 12 ]
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/node_modules/concat-map/test/map.js:
--------------------------------------------------------------------------------
1 | var concatMap = require('../');
2 | var test = require('tape');
3 |
4 | test('empty or not', function (t) {
5 | var xs = [ 1, 2, 3, 4, 5, 6 ];
6 | var ixes = [];
7 | var ys = concatMap(xs, function (x, ix) {
8 | ixes.push(ix);
9 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
10 | });
11 | t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]);
12 | t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]);
13 | t.end();
14 | });
15 |
16 | test('always something', function (t) {
17 | var xs = [ 'a', 'b', 'c', 'd' ];
18 | var ys = concatMap(xs, function (x) {
19 | return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ];
20 | });
21 | t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]);
22 | t.end();
23 | });
24 |
25 | test('scalars', function (t) {
26 | var xs = [ 'a', 'b', 'c', 'd' ];
27 | var ys = concatMap(xs, function (x) {
28 | return x === 'b' ? [ 'B', 'B', 'B' ] : x;
29 | });
30 | t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]);
31 | t.end();
32 | });
33 |
34 | test('undefs', function (t) {
35 | var xs = [ 'a', 'b', 'c', 'd' ];
36 | var ys = concatMap(xs, function () {});
37 | t.same(ys, [ undefined, undefined, undefined, undefined ]);
38 | t.end();
39 | });
40 |
--------------------------------------------------------------------------------
/node_modules/fd-slicer/.npmignore:
--------------------------------------------------------------------------------
1 | /coverage
2 | /node_modules
3 |
--------------------------------------------------------------------------------
/node_modules/fd-slicer/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "0.10"
4 | script:
5 | - "npm run test-travis"
6 | after_script:
7 | - "npm install coveralls@2 && cat ./coverage/lcov.info | ./node_modules/.bin/coveralls"
8 |
--------------------------------------------------------------------------------
/node_modules/fd-slicer/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ### 1.0.1
2 |
3 | * use `setImmediate` instead of `nextTick`
4 |
5 | ### 1.0.0
6 |
7 | * `new FdSlicer(fd, options)` must now be `fdSlicer.createFromFd(fd, options)`
8 | * fix behavior when `end` is 0.
9 | * fix `createWriteStream` when using `createFromBuffer`
10 |
11 | ### 0.4.0
12 |
13 | * add ability to create an FdSlicer instance from a Buffer
14 |
15 | ### 0.3.2
16 |
17 | * fix write stream and read stream destroy behavior
18 |
19 | ### 0.3.1
20 |
21 | * write stream: fix end option behavior
22 |
23 | ### 0.3.0
24 |
25 | * write stream emits 'progress' events
26 | * write stream supports 'end' option which causes the stream to emit an error
27 | if a maximum size is exceeded
28 | * improve documentation
29 |
30 | ### 0.2.1
31 |
32 | * Update pend dependency to latest bugfix version.
33 |
34 | ### 0.2.0
35 |
36 | * Add read and write functions
37 |
38 | ### 0.1.0
39 |
40 | * Add `autoClose` option and `ref()` and `unref()`.
41 |
42 | ### 0.0.2
43 |
44 | * Add API documentation
45 | * read stream: create buffer at last possible moment
46 |
47 | ### 0.0.1
48 |
49 | * Initial release
50 |
--------------------------------------------------------------------------------
/node_modules/fd-slicer/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2014 Andrew Kelley
2 |
3 | Permission is hereby granted, free of charge, to any person
4 | obtaining a copy of this software and associated documentation files
5 | (the "Software"), to deal in the Software without restriction,
6 | including without limitation the rights to use, copy, modify, merge,
7 | publish, distribute, sublicense, and/or sell copies of the Software,
8 | and to permit persons to whom the Software is furnished to do so,
9 | subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
18 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/fd-slicer/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "fd-slicer",
3 | "version": "1.1.0",
4 | "description": "safely create multiple ReadStream or WriteStream objects from the same file descriptor",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "mocha --reporter spec --check-leaks",
8 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/test.js",
9 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --timeout 10000 --reporter spec --check-leaks test/test.js"
10 | },
11 | "author": "Andrew Kelley ",
12 | "license": "MIT",
13 | "devDependencies": {
14 | "istanbul": "~0.3.3",
15 | "mocha": "~2.0.1",
16 | "stream-equal": "~0.1.5",
17 | "streamsink": "~1.2.0"
18 | },
19 | "dependencies": {
20 | "pend": "~1.2.0"
21 | },
22 | "directories": {
23 | "test": "test"
24 | },
25 | "repository": {
26 | "type": "git",
27 | "url": "git://github.com/andrewrk/node-fd-slicer.git"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/andrewrk/node-fd-slicer/issues"
31 | },
32 | "keywords": [
33 | "createReadStream",
34 | "createWriteStream"
35 | ]
36 | }
37 |
--------------------------------------------------------------------------------
/node_modules/fs-minipass/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/node_modules/fs-minipass/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "fs-minipass",
3 | "version": "1.2.7",
4 | "main": "index.js",
5 | "scripts": {
6 | "test": "tap",
7 | "preversion": "npm test",
8 | "postversion": "npm publish",
9 | "postpublish": "git push origin --follow-tags"
10 | },
11 | "keywords": [],
12 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
13 | "license": "ISC",
14 | "repository": {
15 | "type": "git",
16 | "url": "git+https://github.com/npm/fs-minipass.git"
17 | },
18 | "bugs": {
19 | "url": "https://github.com/npm/fs-minipass/issues"
20 | },
21 | "homepage": "https://github.com/npm/fs-minipass#readme",
22 | "description": "fs read and write streams based on minipass",
23 | "dependencies": {
24 | "minipass": "^2.6.0"
25 | },
26 | "devDependencies": {
27 | "mutate-fs": "^2.0.1",
28 | "tap": "^14.6.4"
29 | },
30 | "files": [
31 | "index.js"
32 | ],
33 | "tap": {
34 | "check-coverage": true
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/node_modules/fs.realpath/README.md:
--------------------------------------------------------------------------------
1 | # fs.realpath
2 |
3 | A backwards-compatible fs.realpath for Node v6 and above
4 |
5 | In Node v6, the JavaScript implementation of fs.realpath was replaced
6 | with a faster (but less resilient) native implementation. That raises
7 | new and platform-specific errors and cannot handle long or excessively
8 | symlink-looping paths.
9 |
10 | This module handles those cases by detecting the new errors and
11 | falling back to the JavaScript implementation. On versions of Node
12 | prior to v6, it has no effect.
13 |
14 | ## USAGE
15 |
16 | ```js
17 | var rp = require('fs.realpath')
18 |
19 | // async version
20 | rp.realpath(someLongAndLoopingPath, function (er, real) {
21 | // the ELOOP was handled, but it was a bit slower
22 | })
23 |
24 | // sync version
25 | var real = rp.realpathSync(someLongAndLoopingPath)
26 |
27 | // monkeypatch at your own risk!
28 | // This replaces the fs.realpath/fs.realpathSync builtins
29 | rp.monkeypatch()
30 |
31 | // un-do the monkeypatching
32 | rp.unmonkeypatch()
33 | ```
34 |
--------------------------------------------------------------------------------
/node_modules/fs.realpath/index.js:
--------------------------------------------------------------------------------
1 | module.exports = realpath
2 | realpath.realpath = realpath
3 | realpath.sync = realpathSync
4 | realpath.realpathSync = realpathSync
5 | realpath.monkeypatch = monkeypatch
6 | realpath.unmonkeypatch = unmonkeypatch
7 |
8 | var fs = require('fs')
9 | var origRealpath = fs.realpath
10 | var origRealpathSync = fs.realpathSync
11 |
12 | var version = process.version
13 | var ok = /^v[0-5]\./.test(version)
14 | var old = require('./old.js')
15 |
16 | function newError (er) {
17 | return er && er.syscall === 'realpath' && (
18 | er.code === 'ELOOP' ||
19 | er.code === 'ENOMEM' ||
20 | er.code === 'ENAMETOOLONG'
21 | )
22 | }
23 |
24 | function realpath (p, cache, cb) {
25 | if (ok) {
26 | return origRealpath(p, cache, cb)
27 | }
28 |
29 | if (typeof cache === 'function') {
30 | cb = cache
31 | cache = null
32 | }
33 | origRealpath(p, cache, function (er, result) {
34 | if (newError(er)) {
35 | old.realpath(p, cache, cb)
36 | } else {
37 | cb(er, result)
38 | }
39 | })
40 | }
41 |
42 | function realpathSync (p, cache) {
43 | if (ok) {
44 | return origRealpathSync(p, cache)
45 | }
46 |
47 | try {
48 | return origRealpathSync(p, cache)
49 | } catch (er) {
50 | if (newError(er)) {
51 | return old.realpathSync(p, cache)
52 | } else {
53 | throw er
54 | }
55 | }
56 | }
57 |
58 | function monkeypatch () {
59 | fs.realpath = realpath
60 | fs.realpathSync = realpathSync
61 | }
62 |
63 | function unmonkeypatch () {
64 | fs.realpath = origRealpath
65 | fs.realpathSync = origRealpathSync
66 | }
67 |
--------------------------------------------------------------------------------
/node_modules/fs.realpath/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "fs.realpath",
3 | "version": "1.0.0",
4 | "description": "Use node's fs.realpath, but fall back to the JS implementation if the native one fails",
5 | "main": "index.js",
6 | "dependencies": {},
7 | "devDependencies": {},
8 | "scripts": {
9 | "test": "tap test/*.js --cov"
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "git+https://github.com/isaacs/fs.realpath.git"
14 | },
15 | "keywords": [
16 | "realpath",
17 | "fs",
18 | "polyfill"
19 | ],
20 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
21 | "license": "ISC",
22 | "files": [
23 | "old.js",
24 | "index.js"
25 | ]
26 | }
27 |
--------------------------------------------------------------------------------
/node_modules/function-bind/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 |
4 | "extends": "@ljharb",
5 |
6 | "rules": {
7 | "func-name-matching": 0,
8 | "indent": [2, 4],
9 | "no-new-func": [1],
10 | },
11 |
12 | "overrides": [
13 | {
14 | "files": "test/**",
15 | "rules": {
16 | "max-lines-per-function": 0,
17 | "strict": [0]
18 | },
19 | },
20 | ],
21 | }
22 |
--------------------------------------------------------------------------------
/node_modules/function-bind/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [ljharb]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: npm/function-bind
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
13 |
--------------------------------------------------------------------------------
/node_modules/function-bind/.github/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security
2 |
3 | Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report.
4 |
--------------------------------------------------------------------------------
/node_modules/function-bind/.nycrc:
--------------------------------------------------------------------------------
1 | {
2 | "all": true,
3 | "check-coverage": false,
4 | "reporter": ["text-summary", "text", "html", "json"],
5 | "lines": 86,
6 | "statements": 85.93,
7 | "functions": 82.43,
8 | "branches": 76.06,
9 | "exclude": [
10 | "coverage",
11 | "test"
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/node_modules/function-bind/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013 Raynos.
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
21 |
--------------------------------------------------------------------------------
/node_modules/function-bind/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var implementation = require('./implementation');
4 |
5 | module.exports = Function.prototype.bind || implementation;
6 |
--------------------------------------------------------------------------------
/node_modules/function-bind/test/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "array-bracket-newline": 0,
4 | "array-element-newline": 0,
5 | "max-statements-per-line": [2, { "max": 2 }],
6 | "no-invalid-this": 0,
7 | "no-magic-numbers": 0,
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/node_modules/glob/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
17 | ## Glob Logo
18 |
19 | Glob's logo created by Tanya Brassie , licensed
20 | under a Creative Commons Attribution-ShareAlike 4.0 International License
21 | https://creativecommons.org/licenses/by-sa/4.0/
22 |
--------------------------------------------------------------------------------
/node_modules/glob/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
3 | "name": "glob",
4 | "description": "a little globber",
5 | "version": "7.2.3",
6 | "publishConfig": {
7 | "tag": "v7-legacy"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git://github.com/isaacs/node-glob.git"
12 | },
13 | "main": "glob.js",
14 | "files": [
15 | "glob.js",
16 | "sync.js",
17 | "common.js"
18 | ],
19 | "engines": {
20 | "node": "*"
21 | },
22 | "dependencies": {
23 | "fs.realpath": "^1.0.0",
24 | "inflight": "^1.0.4",
25 | "inherits": "2",
26 | "minimatch": "^3.1.1",
27 | "once": "^1.3.0",
28 | "path-is-absolute": "^1.0.0"
29 | },
30 | "devDependencies": {
31 | "memfs": "^3.2.0",
32 | "mkdirp": "0",
33 | "rimraf": "^2.2.8",
34 | "tap": "^15.0.6",
35 | "tick": "0.0.6"
36 | },
37 | "tap": {
38 | "before": "test/00-setup.js",
39 | "after": "test/zz-cleanup.js",
40 | "jobs": 1
41 | },
42 | "scripts": {
43 | "prepublish": "npm run benchclean",
44 | "profclean": "rm -f v8.log profile.txt",
45 | "test": "tap",
46 | "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js",
47 | "bench": "bash benchmark.sh",
48 | "prof": "bash prof.sh && cat profile.txt",
49 | "benchclean": "node benchclean.js"
50 | },
51 | "license": "ISC",
52 | "funding": {
53 | "url": "https://github.com/sponsors/isaacs"
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/node_modules/hasown/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 |
4 | "extends": "@ljharb",
5 | }
6 |
--------------------------------------------------------------------------------
/node_modules/hasown/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [ljharb]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: npm/hasown
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with a single custom sponsorship URL
13 |
--------------------------------------------------------------------------------
/node_modules/hasown/.nycrc:
--------------------------------------------------------------------------------
1 | {
2 | "all": true,
3 | "check-coverage": false,
4 | "reporter": ["text-summary", "text", "html", "json"],
5 | "lines": 86,
6 | "statements": 85.93,
7 | "functions": 82.43,
8 | "branches": 76.06,
9 | "exclude": [
10 | "coverage",
11 | "test"
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/node_modules/hasown/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Jordan Harband and contributors
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/hasown/index.d.ts:
--------------------------------------------------------------------------------
1 | declare function hasOwn(o: O, p: K): o is O & Record;
2 |
3 | export = hasOwn;
4 |
--------------------------------------------------------------------------------
/node_modules/hasown/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var call = Function.prototype.call;
4 | var $hasOwn = Object.prototype.hasOwnProperty;
5 | var bind = require('function-bind');
6 |
7 | /** @type {import('.')} */
8 | module.exports = bind.call(call, $hasOwn);
9 |
--------------------------------------------------------------------------------
/node_modules/hasown/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@ljharb/tsconfig",
3 | "exclude": [
4 | "coverage",
5 | ],
6 | }
7 |
--------------------------------------------------------------------------------
/node_modules/inflight/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/node_modules/inflight/README.md:
--------------------------------------------------------------------------------
1 | # inflight
2 |
3 | Add callbacks to requests in flight to avoid async duplication
4 |
5 | ## USAGE
6 |
7 | ```javascript
8 | var inflight = require('inflight')
9 |
10 | // some request that does some stuff
11 | function req(key, callback) {
12 | // key is any random string. like a url or filename or whatever.
13 | //
14 | // will return either a falsey value, indicating that the
15 | // request for this key is already in flight, or a new callback
16 | // which when called will call all callbacks passed to inflightk
17 | // with the same key
18 | callback = inflight(key, callback)
19 |
20 | // If we got a falsey value back, then there's already a req going
21 | if (!callback) return
22 |
23 | // this is where you'd fetch the url or whatever
24 | // callback is also once()-ified, so it can safely be assigned
25 | // to multiple events etc. First call wins.
26 | setTimeout(function() {
27 | callback(null, key)
28 | }, 100)
29 | }
30 |
31 | // only assigns a single setTimeout
32 | // when it dings, all cbs get called
33 | req('foo', cb1)
34 | req('foo', cb2)
35 | req('foo', cb3)
36 | req('foo', cb4)
37 | ```
38 |
--------------------------------------------------------------------------------
/node_modules/inflight/inflight.js:
--------------------------------------------------------------------------------
1 | var wrappy = require('wrappy')
2 | var reqs = Object.create(null)
3 | var once = require('once')
4 |
5 | module.exports = wrappy(inflight)
6 |
7 | function inflight (key, cb) {
8 | if (reqs[key]) {
9 | reqs[key].push(cb)
10 | return null
11 | } else {
12 | reqs[key] = [cb]
13 | return makeres(key)
14 | }
15 | }
16 |
17 | function makeres (key) {
18 | return once(function RES () {
19 | var cbs = reqs[key]
20 | var len = cbs.length
21 | var args = slice(arguments)
22 |
23 | // XXX It's somewhat ambiguous whether a new callback added in this
24 | // pass should be queued for later execution if something in the
25 | // list of callbacks throws, or if it should just be discarded.
26 | // However, it's such an edge case that it hardly matters, and either
27 | // choice is likely as surprising as the other.
28 | // As it happens, we do go ahead and schedule it for later execution.
29 | try {
30 | for (var i = 0; i < len; i++) {
31 | cbs[i].apply(null, args)
32 | }
33 | } finally {
34 | if (cbs.length > len) {
35 | // added more in the interim.
36 | // de-zalgo, just in case, but don't call again.
37 | cbs.splice(0, len)
38 | process.nextTick(function () {
39 | RES.apply(null, args)
40 | })
41 | } else {
42 | delete reqs[key]
43 | }
44 | }
45 | })
46 | }
47 |
48 | function slice (args) {
49 | var length = args.length
50 | var array = []
51 |
52 | for (var i = 0; i < length; i++) array[i] = args[i]
53 | return array
54 | }
55 |
--------------------------------------------------------------------------------
/node_modules/inflight/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "inflight",
3 | "version": "1.0.6",
4 | "description": "Add callbacks to requests in flight to avoid async duplication",
5 | "main": "inflight.js",
6 | "files": [
7 | "inflight.js"
8 | ],
9 | "dependencies": {
10 | "once": "^1.3.0",
11 | "wrappy": "1"
12 | },
13 | "devDependencies": {
14 | "tap": "^7.1.2"
15 | },
16 | "scripts": {
17 | "test": "tap test.js --100"
18 | },
19 | "repository": {
20 | "type": "git",
21 | "url": "https://github.com/npm/inflight.git"
22 | },
23 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
24 | "bugs": {
25 | "url": "https://github.com/isaacs/inflight/issues"
26 | },
27 | "homepage": "https://github.com/isaacs/inflight",
28 | "license": "ISC"
29 | }
30 |
--------------------------------------------------------------------------------
/node_modules/inherits/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
11 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15 | PERFORMANCE OF THIS SOFTWARE.
16 |
17 |
--------------------------------------------------------------------------------
/node_modules/inherits/inherits.js:
--------------------------------------------------------------------------------
1 | try {
2 | var util = require('util');
3 | /* istanbul ignore next */
4 | if (typeof util.inherits !== 'function') throw '';
5 | module.exports = util.inherits;
6 | } catch (e) {
7 | /* istanbul ignore next */
8 | module.exports = require('./inherits_browser.js');
9 | }
10 |
--------------------------------------------------------------------------------
/node_modules/inherits/inherits_browser.js:
--------------------------------------------------------------------------------
1 | if (typeof Object.create === 'function') {
2 | // implementation from standard node.js 'util' module
3 | module.exports = function inherits(ctor, superCtor) {
4 | if (superCtor) {
5 | ctor.super_ = superCtor
6 | ctor.prototype = Object.create(superCtor.prototype, {
7 | constructor: {
8 | value: ctor,
9 | enumerable: false,
10 | writable: true,
11 | configurable: true
12 | }
13 | })
14 | }
15 | };
16 | } else {
17 | // old school shim for old browsers
18 | module.exports = function inherits(ctor, superCtor) {
19 | if (superCtor) {
20 | ctor.super_ = superCtor
21 | var TempCtor = function () {}
22 | TempCtor.prototype = superCtor.prototype
23 | ctor.prototype = new TempCtor()
24 | ctor.prototype.constructor = ctor
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/node_modules/inherits/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "inherits",
3 | "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
4 | "version": "2.0.4",
5 | "keywords": [
6 | "inheritance",
7 | "class",
8 | "klass",
9 | "oop",
10 | "object-oriented",
11 | "inherits",
12 | "browser",
13 | "browserify"
14 | ],
15 | "main": "./inherits.js",
16 | "browser": "./inherits_browser.js",
17 | "repository": "git://github.com/isaacs/inherits",
18 | "license": "ISC",
19 | "scripts": {
20 | "test": "tap"
21 | },
22 | "devDependencies": {
23 | "tap": "^14.2.4"
24 | },
25 | "files": [
26 | "inherits.js",
27 | "inherits_browser.js"
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/node_modules/interpret/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2014-2018 Tyler Kellen , Blaine Bublitz , and Eric Schoffstall
2 |
3 | Permission is hereby granted, free of charge, to any person
4 | obtaining a copy of this software and associated documentation
5 | files (the "Software"), to deal in the Software without
6 | restriction, including without limitation the rights to use,
7 | copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the
9 | Software is furnished to do so, subject to the following
10 | conditions:
11 |
12 | The above copyright notice and this permission notice shall be
13 | included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 | OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/node_modules/interpret/mjs-stub.js:
--------------------------------------------------------------------------------
1 | require.extensions['.mjs'] = null;
2 |
--------------------------------------------------------------------------------
/node_modules/is-core-module/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@ljharb",
3 | "root": true,
4 | "rules": {
5 | "func-style": 1,
6 | },
7 | "overrides": [
8 | {
9 | "files": "test/**",
10 | "rules": {
11 | "global-require": 0,
12 | "max-depth": 0,
13 | "max-lines-per-function": 0,
14 | "no-negated-condition": 0,
15 | },
16 | },
17 | ],
18 | }
19 |
--------------------------------------------------------------------------------
/node_modules/is-core-module/.nycrc:
--------------------------------------------------------------------------------
1 | {
2 | "all": true,
3 | "check-coverage": false,
4 | "reporter": ["text-summary", "text", "html", "json"],
5 | "exclude": [
6 | "coverage",
7 | "test"
8 | ]
9 | }
10 |
--------------------------------------------------------------------------------
/node_modules/is-core-module/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Dave Justice
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/node_modules/minimatch/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/node_modules/minimatch/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": "Isaac Z. Schlueter (http://blog.izs.me)",
3 | "name": "minimatch",
4 | "description": "a glob matcher in javascript",
5 | "version": "3.1.2",
6 | "publishConfig": {
7 | "tag": "v3-legacy"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git://github.com/isaacs/minimatch.git"
12 | },
13 | "main": "minimatch.js",
14 | "scripts": {
15 | "test": "tap",
16 | "preversion": "npm test",
17 | "postversion": "npm publish",
18 | "postpublish": "git push origin --all; git push origin --tags"
19 | },
20 | "engines": {
21 | "node": "*"
22 | },
23 | "dependencies": {
24 | "brace-expansion": "^1.1.7"
25 | },
26 | "devDependencies": {
27 | "tap": "^15.1.6"
28 | },
29 | "license": "ISC",
30 | "files": [
31 | "minimatch.js"
32 | ]
33 | }
34 |
--------------------------------------------------------------------------------
/node_modules/minimist/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 |
4 | "extends": "@ljharb/eslint-config/node/0.4",
5 |
6 | "rules": {
7 | "array-element-newline": 0,
8 | "complexity": 0,
9 | "func-style": [2, "declaration"],
10 | "max-lines-per-function": 0,
11 | "max-nested-callbacks": 1,
12 | "max-statements-per-line": 1,
13 | "max-statements": 0,
14 | "multiline-comment-style": 0,
15 | "no-continue": 1,
16 | "no-param-reassign": 1,
17 | "no-restricted-syntax": 1,
18 | "object-curly-newline": 0,
19 | },
20 |
21 | "overrides": [
22 | {
23 | "files": "test/**",
24 | "rules": {
25 | "camelcase": 0,
26 | },
27 | },
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/node_modules/minimist/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [ljharb]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: npm/minimist
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
13 |
--------------------------------------------------------------------------------
/node_modules/minimist/.nycrc:
--------------------------------------------------------------------------------
1 | {
2 | "all": true,
3 | "check-coverage": false,
4 | "reporter": ["text-summary", "text", "html", "json"],
5 | "lines": 86,
6 | "statements": 85.93,
7 | "functions": 82.43,
8 | "branches": 76.06,
9 | "exclude": [
10 | "coverage",
11 | "example",
12 | "test"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/node_modules/minimist/LICENSE:
--------------------------------------------------------------------------------
1 | This software is released under the MIT license:
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of
4 | this software and associated documentation files (the "Software"), to deal in
5 | the Software without restriction, including without limitation the rights to
6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
7 | the Software, and to permit persons to whom the Software is furnished to do so,
8 | subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
--------------------------------------------------------------------------------
/node_modules/minimist/example/parse.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var argv = require('../')(process.argv.slice(2));
4 | console.log(argv);
5 |
--------------------------------------------------------------------------------
/node_modules/minimist/test/all_bool.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var parse = require('../');
4 | var test = require('tape');
5 |
6 | test('flag boolean true (default all --args to boolean)', function (t) {
7 | var argv = parse(['moo', '--honk', 'cow'], {
8 | boolean: true,
9 | });
10 |
11 | t.deepEqual(argv, {
12 | honk: true,
13 | _: ['moo', 'cow'],
14 | });
15 |
16 | t.deepEqual(typeof argv.honk, 'boolean');
17 | t.end();
18 | });
19 |
20 | test('flag boolean true only affects double hyphen arguments without equals signs', function (t) {
21 | var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], {
22 | boolean: true,
23 | });
24 |
25 | t.deepEqual(argv, {
26 | honk: true,
27 | tacos: 'good',
28 | p: 55,
29 | _: ['moo', 'cow'],
30 | });
31 |
32 | t.deepEqual(typeof argv.honk, 'boolean');
33 | t.end();
34 | });
35 |
--------------------------------------------------------------------------------
/node_modules/minimist/test/dash.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var parse = require('../');
4 | var test = require('tape');
5 |
6 | test('-', function (t) {
7 | t.plan(6);
8 | t.deepEqual(parse(['-n', '-']), { n: '-', _: [] });
9 | t.deepEqual(parse(['--nnn', '-']), { nnn: '-', _: [] });
10 | t.deepEqual(parse(['-']), { _: ['-'] });
11 | t.deepEqual(parse(['-f-']), { f: '-', _: [] });
12 | t.deepEqual(
13 | parse(['-b', '-'], { boolean: 'b' }),
14 | { b: true, _: ['-'] }
15 | );
16 | t.deepEqual(
17 | parse(['-s', '-'], { string: 's' }),
18 | { s: '-', _: [] }
19 | );
20 | });
21 |
22 | test('-a -- b', function (t) {
23 | t.plan(2);
24 | t.deepEqual(parse(['-a', '--', 'b']), { a: true, _: ['b'] });
25 | t.deepEqual(parse(['--a', '--', 'b']), { a: true, _: ['b'] });
26 | });
27 |
28 | test('move arguments after the -- into their own `--` array', function (t) {
29 | t.plan(1);
30 | t.deepEqual(
31 | parse(['--name', 'John', 'before', '--', 'after'], { '--': true }),
32 | { name: 'John', _: ['before'], '--': ['after'] }
33 | );
34 | });
35 |
36 | test('--- option value', function (t) {
37 | // A multi-dash value is largely an edge case, but check the behaviour is as expected,
38 | // and in particular the same for short option and long option (as made consistent in Jan 2023).
39 | t.plan(2);
40 | t.deepEqual(parse(['-n', '---']), { n: '---', _: [] });
41 | t.deepEqual(parse(['--nnn', '---']), { nnn: '---', _: [] });
42 | });
43 |
44 |
--------------------------------------------------------------------------------
/node_modules/minimist/test/default_bool.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var test = require('tape');
4 | var parse = require('../');
5 |
6 | test('boolean default true', function (t) {
7 | var argv = parse([], {
8 | boolean: 'sometrue',
9 | default: { sometrue: true },
10 | });
11 | t.equal(argv.sometrue, true);
12 | t.end();
13 | });
14 |
15 | test('boolean default false', function (t) {
16 | var argv = parse([], {
17 | boolean: 'somefalse',
18 | default: { somefalse: false },
19 | });
20 | t.equal(argv.somefalse, false);
21 | t.end();
22 | });
23 |
24 | test('boolean default to null', function (t) {
25 | var argv = parse([], {
26 | boolean: 'maybe',
27 | default: { maybe: null },
28 | });
29 | t.equal(argv.maybe, null);
30 |
31 | var argvLong = parse(['--maybe'], {
32 | boolean: 'maybe',
33 | default: { maybe: null },
34 | });
35 | t.equal(argvLong.maybe, true);
36 | t.end();
37 | });
38 |
--------------------------------------------------------------------------------
/node_modules/minimist/test/dotted.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var parse = require('../');
4 | var test = require('tape');
5 |
6 | test('dotted alias', function (t) {
7 | var argv = parse(['--a.b', '22'], { default: { 'a.b': 11 }, alias: { 'a.b': 'aa.bb' } });
8 | t.equal(argv.a.b, 22);
9 | t.equal(argv.aa.bb, 22);
10 | t.end();
11 | });
12 |
13 | test('dotted default', function (t) {
14 | var argv = parse('', { default: { 'a.b': 11 }, alias: { 'a.b': 'aa.bb' } });
15 | t.equal(argv.a.b, 11);
16 | t.equal(argv.aa.bb, 11);
17 | t.end();
18 | });
19 |
20 | test('dotted default with no alias', function (t) {
21 | var argv = parse('', { default: { 'a.b': 11 } });
22 | t.equal(argv.a.b, 11);
23 | t.end();
24 | });
25 |
--------------------------------------------------------------------------------
/node_modules/minimist/test/kv_short.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var parse = require('../');
4 | var test = require('tape');
5 |
6 | test('short -k=v', function (t) {
7 | t.plan(1);
8 |
9 | var argv = parse(['-b=123']);
10 | t.deepEqual(argv, { b: 123, _: [] });
11 | });
12 |
13 | test('multi short -k=v', function (t) {
14 | t.plan(1);
15 |
16 | var argv = parse(['-a=whatever', '-b=robots']);
17 | t.deepEqual(argv, { a: 'whatever', b: 'robots', _: [] });
18 | });
19 |
20 | test('short with embedded equals -k=a=b', function (t) {
21 | t.plan(1);
22 |
23 | var argv = parse(['-k=a=b']);
24 | t.deepEqual(argv, { k: 'a=b', _: [] });
25 | });
26 |
27 | test('short with later equals like -ab=c', function (t) {
28 | t.plan(1);
29 |
30 | var argv = parse(['-ab=c']);
31 | t.deepEqual(argv, { a: true, b: 'c', _: [] });
32 | });
33 |
--------------------------------------------------------------------------------
/node_modules/minimist/test/long.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var test = require('tape');
4 | var parse = require('../');
5 |
6 | test('long opts', function (t) {
7 | t.deepEqual(
8 | parse(['--bool']),
9 | { bool: true, _: [] },
10 | 'long boolean'
11 | );
12 | t.deepEqual(
13 | parse(['--pow', 'xixxle']),
14 | { pow: 'xixxle', _: [] },
15 | 'long capture sp'
16 | );
17 | t.deepEqual(
18 | parse(['--pow=xixxle']),
19 | { pow: 'xixxle', _: [] },
20 | 'long capture eq'
21 | );
22 | t.deepEqual(
23 | parse(['--host', 'localhost', '--port', '555']),
24 | { host: 'localhost', port: 555, _: [] },
25 | 'long captures sp'
26 | );
27 | t.deepEqual(
28 | parse(['--host=localhost', '--port=555']),
29 | { host: 'localhost', port: 555, _: [] },
30 | 'long captures eq'
31 | );
32 | t.end();
33 | });
34 |
--------------------------------------------------------------------------------
/node_modules/minimist/test/num.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var parse = require('../');
4 | var test = require('tape');
5 |
6 | test('nums', function (t) {
7 | var argv = parse([
8 | '-x', '1234',
9 | '-y', '5.67',
10 | '-z', '1e7',
11 | '-w', '10f',
12 | '--hex', '0xdeadbeef',
13 | '789',
14 | ]);
15 | t.deepEqual(argv, {
16 | x: 1234,
17 | y: 5.67,
18 | z: 1e7,
19 | w: '10f',
20 | hex: 0xdeadbeef,
21 | _: [789],
22 | });
23 | t.deepEqual(typeof argv.x, 'number');
24 | t.deepEqual(typeof argv.y, 'number');
25 | t.deepEqual(typeof argv.z, 'number');
26 | t.deepEqual(typeof argv.w, 'string');
27 | t.deepEqual(typeof argv.hex, 'number');
28 | t.deepEqual(typeof argv._[0], 'number');
29 | t.end();
30 | });
31 |
32 | test('already a number', function (t) {
33 | var argv = parse(['-x', 1234, 789]);
34 | t.deepEqual(argv, { x: 1234, _: [789] });
35 | t.deepEqual(typeof argv.x, 'number');
36 | t.deepEqual(typeof argv._[0], 'number');
37 | t.end();
38 | });
39 |
--------------------------------------------------------------------------------
/node_modules/minimist/test/parse_modified.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var parse = require('../');
4 | var test = require('tape');
5 |
6 | test('parse with modifier functions', function (t) {
7 | t.plan(1);
8 |
9 | var argv = parse(['-b', '123'], { boolean: 'b' });
10 | t.deepEqual(argv, { b: true, _: [123] });
11 | });
12 |
--------------------------------------------------------------------------------
/node_modules/minimist/test/short.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var parse = require('../');
4 | var test = require('tape');
5 |
6 | test('numeric short args', function (t) {
7 | t.plan(2);
8 | t.deepEqual(parse(['-n123']), { n: 123, _: [] });
9 | t.deepEqual(
10 | parse(['-123', '456']),
11 | { 1: true, 2: true, 3: 456, _: [] }
12 | );
13 | });
14 |
15 | test('short', function (t) {
16 | t.deepEqual(
17 | parse(['-b']),
18 | { b: true, _: [] },
19 | 'short boolean'
20 | );
21 | t.deepEqual(
22 | parse(['foo', 'bar', 'baz']),
23 | { _: ['foo', 'bar', 'baz'] },
24 | 'bare'
25 | );
26 | t.deepEqual(
27 | parse(['-cats']),
28 | { c: true, a: true, t: true, s: true, _: [] },
29 | 'group'
30 | );
31 | t.deepEqual(
32 | parse(['-cats', 'meow']),
33 | { c: true, a: true, t: true, s: 'meow', _: [] },
34 | 'short group next'
35 | );
36 | t.deepEqual(
37 | parse(['-h', 'localhost']),
38 | { h: 'localhost', _: [] },
39 | 'short capture'
40 | );
41 | t.deepEqual(
42 | parse(['-h', 'localhost', '-p', '555']),
43 | { h: 'localhost', p: 555, _: [] },
44 | 'short captures'
45 | );
46 | t.end();
47 | });
48 |
49 | test('mixed short bool and capture', function (t) {
50 | t.same(
51 | parse(['-h', 'localhost', '-fp', '555', 'script.js']),
52 | {
53 | f: true, p: 555, h: 'localhost',
54 | _: ['script.js'],
55 | }
56 | );
57 | t.end();
58 | });
59 |
60 | test('short and long', function (t) {
61 | t.deepEqual(
62 | parse(['-h', 'localhost', '-fp', '555', 'script.js']),
63 | {
64 | f: true, p: 555, h: 'localhost',
65 | _: ['script.js'],
66 | }
67 | );
68 | t.end();
69 | });
70 |
--------------------------------------------------------------------------------
/node_modules/minimist/test/stop_early.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var parse = require('../');
4 | var test = require('tape');
5 |
6 | test('stops parsing on the first non-option when stopEarly is set', function (t) {
7 | var argv = parse(['--aaa', 'bbb', 'ccc', '--ddd'], {
8 | stopEarly: true,
9 | });
10 |
11 | t.deepEqual(argv, {
12 | aaa: 'bbb',
13 | _: ['ccc', '--ddd'],
14 | });
15 |
16 | t.end();
17 | });
18 |
--------------------------------------------------------------------------------
/node_modules/minimist/test/whitespace.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var parse = require('../');
4 | var test = require('tape');
5 |
6 | test('whitespace should be whitespace', function (t) {
7 | t.plan(1);
8 | var x = parse(['-x', '\t']).x;
9 | t.equal(x, '\t');
10 | });
11 |
--------------------------------------------------------------------------------
/node_modules/minipass/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) npm, Inc. and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/node_modules/minipass/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "minipass",
3 | "version": "2.9.0",
4 | "description": "minimal implementation of a PassThrough stream",
5 | "main": "index.js",
6 | "dependencies": {
7 | "safe-buffer": "^5.1.2",
8 | "yallist": "^3.0.0"
9 | },
10 | "devDependencies": {
11 | "end-of-stream": "^1.4.0",
12 | "tap": "^14.6.5",
13 | "through2": "^2.0.3"
14 | },
15 | "scripts": {
16 | "test": "tap",
17 | "preversion": "npm test",
18 | "postversion": "npm publish",
19 | "postpublish": "git push origin --follow-tags"
20 | },
21 | "repository": {
22 | "type": "git",
23 | "url": "git+https://github.com/isaacs/minipass.git"
24 | },
25 | "keywords": [
26 | "passthrough",
27 | "stream"
28 | ],
29 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
30 | "license": "ISC",
31 | "files": [
32 | "index.js"
33 | ],
34 | "tap": {
35 | "check-coverage": true
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/node_modules/minizlib/LICENSE:
--------------------------------------------------------------------------------
1 | Minizlib was created by Isaac Z. Schlueter.
2 | It is a derivative work of the Node.js project.
3 |
4 | """
5 | Copyright Isaac Z. Schlueter and Contributors
6 | Copyright Node.js contributors. All rights reserved.
7 | Copyright Joyent, Inc. and other Node contributors. All rights reserved.
8 |
9 | Permission is hereby granted, free of charge, to any person obtaining a
10 | copy of this software and associated documentation files (the "Software"),
11 | to deal in the Software without restriction, including without limitation
12 | the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 | and/or sell copies of the Software, and to permit persons to whom the
14 | Software is furnished to do so, subject to the following conditions:
15 |
16 | The above copyright notice and this permission notice shall be included in
17 | all copies or substantial portions of the Software.
18 |
19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
23 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 | """
27 |
--------------------------------------------------------------------------------
/node_modules/minizlib/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "minizlib",
3 | "version": "1.3.3",
4 | "description": "A small fast zlib stream built on [minipass](http://npm.im/minipass) and Node.js's zlib binding.",
5 | "main": "index.js",
6 | "dependencies": {
7 | "minipass": "^2.9.0"
8 | },
9 | "scripts": {
10 | "test": "tap test/*.js --100 -J",
11 | "preversion": "npm test",
12 | "postversion": "npm publish",
13 | "postpublish": "git push origin --all; git push origin --tags"
14 | },
15 | "repository": {
16 | "type": "git",
17 | "url": "git+https://github.com/isaacs/minizlib.git"
18 | },
19 | "keywords": [
20 | "zlib",
21 | "gzip",
22 | "gunzip",
23 | "deflate",
24 | "inflate",
25 | "compression",
26 | "zip",
27 | "unzip"
28 | ],
29 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
30 | "license": "MIT",
31 | "devDependencies": {
32 | "tap": "^12.0.1"
33 | },
34 | "files": [
35 | "index.js",
36 | "constants.js"
37 | ]
38 | }
39 |
--------------------------------------------------------------------------------
/node_modules/mkdirp/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2010 James Halliday (mail@substack.net)
2 |
3 | This project is free software released under the MIT/X11 license:
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/mkdirp/bin/cmd.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | var mkdirp = require('../');
4 | var minimist = require('minimist');
5 | var fs = require('fs');
6 |
7 | var argv = minimist(process.argv.slice(2), {
8 | alias: { m: 'mode', h: 'help' },
9 | string: [ 'mode' ]
10 | });
11 | if (argv.help) {
12 | fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout);
13 | return;
14 | }
15 |
16 | var paths = argv._.slice();
17 | var mode = argv.mode ? parseInt(argv.mode, 8) : undefined;
18 |
19 | (function next () {
20 | if (paths.length === 0) return;
21 | var p = paths.shift();
22 |
23 | if (mode === undefined) mkdirp(p, cb)
24 | else mkdirp(p, mode, cb)
25 |
26 | function cb (err) {
27 | if (err) {
28 | console.error(err.message);
29 | process.exit(1);
30 | }
31 | else next();
32 | }
33 | })();
34 |
--------------------------------------------------------------------------------
/node_modules/mkdirp/bin/usage.txt:
--------------------------------------------------------------------------------
1 | usage: mkdirp [DIR1,DIR2..] {OPTIONS}
2 |
3 | Create each supplied directory including any necessary parent directories that
4 | don't yet exist.
5 |
6 | If the directory already exists, do nothing.
7 |
8 | OPTIONS are:
9 |
10 | -m, --mode If a directory needs to be created, set the mode as an octal
11 | permission string.
12 |
13 |
--------------------------------------------------------------------------------
/node_modules/mkdirp/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "mkdirp",
3 | "description": "Recursively mkdir, like `mkdir -p`",
4 | "version": "0.5.6",
5 | "publishConfig": {
6 | "tag": "legacy"
7 | },
8 | "author": "James Halliday (http://substack.net)",
9 | "main": "index.js",
10 | "keywords": [
11 | "mkdir",
12 | "directory"
13 | ],
14 | "repository": {
15 | "type": "git",
16 | "url": "https://github.com/substack/node-mkdirp.git"
17 | },
18 | "scripts": {
19 | "test": "tap test/*.js"
20 | },
21 | "dependencies": {
22 | "minimist": "^1.2.6"
23 | },
24 | "devDependencies": {
25 | "tap": "^16.0.1"
26 | },
27 | "bin": "bin/cmd.js",
28 | "license": "MIT",
29 | "files": [
30 | "bin",
31 | "index.js"
32 | ]
33 | }
34 |
--------------------------------------------------------------------------------
/node_modules/njre/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Raphaël Thériault
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/njre/README.md:
--------------------------------------------------------------------------------
1 | # njre
2 |     
3 |
4 | Easily install and use JRE from a Node application.
5 |
6 | ## [Docs](DOCS.md)
7 |
--------------------------------------------------------------------------------
/node_modules/njre/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | module.exports = {
4 | install: require('./lib/install')
5 | }
6 |
--------------------------------------------------------------------------------
/node_modules/njre/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "njre",
3 | "version": "0.2.0",
4 | "description": "Easily install and use JRE from a Node application.",
5 | "keywords": [
6 | "jre",
7 | "java",
8 | "javaw",
9 | "jdk",
10 | "openjdk",
11 | "adoptopenjdk"
12 | ],
13 | "homepage": "https://github.com/raftario/njre",
14 | "bugs": "https://github.com/raftario/njre/issues",
15 | "main": "index.js",
16 | "scripts": {
17 | "test": "mocha tests/test.js",
18 | "coverage": "nyc npm run test",
19 | "lint": "standard --fix",
20 | "docs": "jsdoc2md index.js lib/*.js > DOCS.md"
21 | },
22 | "repository": "github:raftario/njre",
23 | "author": "Raphaël Thériault (raphaeltheriault.com)",
24 | "license": "MIT",
25 | "files": [
26 | "lib/*.js"
27 | ],
28 | "engines": {
29 | "node": ">=8"
30 | },
31 | "husky": {
32 | "hooks": {
33 | "pre-commit": "lint-staged && npm run docs && git add DOCS.md"
34 | }
35 | },
36 | "lint-staged": {
37 | "*.js": [
38 | "standard --fix",
39 | "git add"
40 | ]
41 | },
42 | "private": false,
43 | "dependencies": {
44 | "command-exists-promise": "^2.0.2",
45 | "node-fetch": "^2.5.0",
46 | "tar": "^4.4.8",
47 | "yauzl": "^2.10.0"
48 | },
49 | "devDependencies": {
50 | "husky": "^2.2.0",
51 | "jsdoc-to-markdown": "^5.0.0",
52 | "lint-staged": "^8.1.6",
53 | "mocha": "^6.1.4",
54 | "nyc": "^14.1.1",
55 | "standard": "^12.0.1"
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/node_modules/node-fetch/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 David Frank
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/node_modules/node-fetch/browser.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | // ref: https://github.com/tc39/proposal-global
4 | var getGlobal = function () {
5 | // the only reliable means to get the global object is
6 | // `Function('return this')()`
7 | // However, this causes CSP violations in Chrome apps.
8 | if (typeof self !== 'undefined') { return self; }
9 | if (typeof window !== 'undefined') { return window; }
10 | if (typeof global !== 'undefined') { return global; }
11 | throw new Error('unable to locate global object');
12 | }
13 |
14 | var globalObject = getGlobal();
15 |
16 | module.exports = exports = globalObject.fetch;
17 |
18 | // Needed for TypeScript and Webpack.
19 | if (globalObject.fetch) {
20 | exports.default = globalObject.fetch.bind(globalObject);
21 | }
22 |
23 | exports.Headers = globalObject.Headers;
24 | exports.Request = globalObject.Request;
25 | exports.Response = globalObject.Response;
26 |
--------------------------------------------------------------------------------
/node_modules/once/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/node_modules/once/once.js:
--------------------------------------------------------------------------------
1 | var wrappy = require('wrappy')
2 | module.exports = wrappy(once)
3 | module.exports.strict = wrappy(onceStrict)
4 |
5 | once.proto = once(function () {
6 | Object.defineProperty(Function.prototype, 'once', {
7 | value: function () {
8 | return once(this)
9 | },
10 | configurable: true
11 | })
12 |
13 | Object.defineProperty(Function.prototype, 'onceStrict', {
14 | value: function () {
15 | return onceStrict(this)
16 | },
17 | configurable: true
18 | })
19 | })
20 |
21 | function once (fn) {
22 | var f = function () {
23 | if (f.called) return f.value
24 | f.called = true
25 | return f.value = fn.apply(this, arguments)
26 | }
27 | f.called = false
28 | return f
29 | }
30 |
31 | function onceStrict (fn) {
32 | var f = function () {
33 | if (f.called)
34 | throw new Error(f.onceError)
35 | f.called = true
36 | return f.value = fn.apply(this, arguments)
37 | }
38 | var name = fn.name || 'Function wrapped with `once`'
39 | f.onceError = name + " shouldn't be called more than once"
40 | f.called = false
41 | return f
42 | }
43 |
--------------------------------------------------------------------------------
/node_modules/once/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "once",
3 | "version": "1.4.0",
4 | "description": "Run a function exactly one time",
5 | "main": "once.js",
6 | "directories": {
7 | "test": "test"
8 | },
9 | "dependencies": {
10 | "wrappy": "1"
11 | },
12 | "devDependencies": {
13 | "tap": "^7.0.1"
14 | },
15 | "scripts": {
16 | "test": "tap test/*.js"
17 | },
18 | "files": [
19 | "once.js"
20 | ],
21 | "repository": {
22 | "type": "git",
23 | "url": "git://github.com/isaacs/once"
24 | },
25 | "keywords": [
26 | "once",
27 | "function",
28 | "one",
29 | "single"
30 | ],
31 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
32 | "license": "ISC"
33 | }
34 |
--------------------------------------------------------------------------------
/node_modules/path-is-absolute/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | function posix(path) {
4 | return path.charAt(0) === '/';
5 | }
6 |
7 | function win32(path) {
8 | // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
9 | var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
10 | var result = splitDeviceRe.exec(path);
11 | var device = result[1] || '';
12 | var isUnc = Boolean(device && device.charAt(1) !== ':');
13 |
14 | // UNC paths are always absolute
15 | return Boolean(result[2] || isUnc);
16 | }
17 |
18 | module.exports = process.platform === 'win32' ? win32 : posix;
19 | module.exports.posix = posix;
20 | module.exports.win32 = win32;
21 |
--------------------------------------------------------------------------------
/node_modules/path-is-absolute/license:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) Sindre Sorhus (sindresorhus.com)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/path-is-absolute/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "path-is-absolute",
3 | "version": "1.0.1",
4 | "description": "Node.js 0.12 path.isAbsolute() ponyfill",
5 | "license": "MIT",
6 | "repository": "sindresorhus/path-is-absolute",
7 | "author": {
8 | "name": "Sindre Sorhus",
9 | "email": "sindresorhus@gmail.com",
10 | "url": "sindresorhus.com"
11 | },
12 | "engines": {
13 | "node": ">=0.10.0"
14 | },
15 | "scripts": {
16 | "test": "xo && node test.js"
17 | },
18 | "files": [
19 | "index.js"
20 | ],
21 | "keywords": [
22 | "path",
23 | "paths",
24 | "file",
25 | "dir",
26 | "absolute",
27 | "isabsolute",
28 | "is-absolute",
29 | "built-in",
30 | "util",
31 | "utils",
32 | "core",
33 | "ponyfill",
34 | "polyfill",
35 | "shim",
36 | "is",
37 | "detect",
38 | "check"
39 | ],
40 | "devDependencies": {
41 | "xo": "^0.16.0"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/node_modules/path-is-absolute/readme.md:
--------------------------------------------------------------------------------
1 | # path-is-absolute [](https://travis-ci.org/sindresorhus/path-is-absolute)
2 |
3 | > Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) [ponyfill](https://ponyfill.com)
4 |
5 |
6 | ## Install
7 |
8 | ```
9 | $ npm install --save path-is-absolute
10 | ```
11 |
12 |
13 | ## Usage
14 |
15 | ```js
16 | const pathIsAbsolute = require('path-is-absolute');
17 |
18 | // Running on Linux
19 | pathIsAbsolute('/home/foo');
20 | //=> true
21 | pathIsAbsolute('C:/Users/foo');
22 | //=> false
23 |
24 | // Running on Windows
25 | pathIsAbsolute('C:/Users/foo');
26 | //=> true
27 | pathIsAbsolute('/home/foo');
28 | //=> false
29 |
30 | // Running on any OS
31 | pathIsAbsolute.posix('/home/foo');
32 | //=> true
33 | pathIsAbsolute.posix('C:/Users/foo');
34 | //=> false
35 | pathIsAbsolute.win32('C:/Users/foo');
36 | //=> true
37 | pathIsAbsolute.win32('/home/foo');
38 | //=> false
39 | ```
40 |
41 |
42 | ## API
43 |
44 | See the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isabsolute_path).
45 |
46 | ### pathIsAbsolute(path)
47 |
48 | ### pathIsAbsolute.posix(path)
49 |
50 | POSIX specific version.
51 |
52 | ### pathIsAbsolute.win32(path)
53 |
54 | Windows specific version.
55 |
56 |
57 | ## License
58 |
59 | MIT © [Sindre Sorhus](https://sindresorhus.com)
60 |
--------------------------------------------------------------------------------
/node_modules/path-parse/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Javier Blanco
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/path-parse/README.md:
--------------------------------------------------------------------------------
1 | # path-parse [](https://travis-ci.org/jbgutierrez/path-parse)
2 |
3 | > Node.js [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) [ponyfill](https://ponyfill.com).
4 |
5 | ## Install
6 |
7 | ```
8 | $ npm install --save path-parse
9 | ```
10 |
11 | ## Usage
12 |
13 | ```js
14 | var pathParse = require('path-parse');
15 |
16 | pathParse('/home/user/dir/file.txt');
17 | //=> {
18 | // root : "/",
19 | // dir : "/home/user/dir",
20 | // base : "file.txt",
21 | // ext : ".txt",
22 | // name : "file"
23 | // }
24 | ```
25 |
26 | ## API
27 |
28 | See [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) docs.
29 |
30 | ### pathParse(path)
31 |
32 | ### pathParse.posix(path)
33 |
34 | The Posix specific version.
35 |
36 | ### pathParse.win32(path)
37 |
38 | The Windows specific version.
39 |
40 | ## License
41 |
42 | MIT © [Javier Blanco](http://jbgutierrez.info)
43 |
--------------------------------------------------------------------------------
/node_modules/path-parse/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "path-parse",
3 | "version": "1.0.7",
4 | "description": "Node.js path.parse() ponyfill",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "node test.js"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "https://github.com/jbgutierrez/path-parse.git"
12 | },
13 | "keywords": [
14 | "path",
15 | "paths",
16 | "file",
17 | "dir",
18 | "parse",
19 | "built-in",
20 | "util",
21 | "utils",
22 | "core",
23 | "ponyfill",
24 | "polyfill",
25 | "shim"
26 | ],
27 | "author": "Javier Blanco ",
28 | "license": "MIT",
29 | "bugs": {
30 | "url": "https://github.com/jbgutierrez/path-parse/issues"
31 | },
32 | "homepage": "https://github.com/jbgutierrez/path-parse#readme"
33 | }
34 |
--------------------------------------------------------------------------------
/node_modules/pend/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (Expat)
2 |
3 | Copyright (c) 2014 Andrew Kelley
4 |
5 | Permission is hereby granted, free of charge, to any person
6 | obtaining a copy of this software and associated documentation files
7 | (the "Software"), to deal in the Software without restriction,
8 | including without limitation the rights to use, copy, modify, merge,
9 | publish, distribute, sublicense, and/or sell copies of the Software,
10 | and to permit persons to whom the Software is furnished to do so,
11 | subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
20 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
21 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
24 |
--------------------------------------------------------------------------------
/node_modules/pend/README.md:
--------------------------------------------------------------------------------
1 | # Pend
2 |
3 | Dead-simple optimistic async helper.
4 |
5 | ## Usage
6 |
7 | ```js
8 | var Pend = require('pend');
9 | var pend = new Pend();
10 | pend.max = 10; // defaults to Infinity
11 | setTimeout(pend.hold(), 1000); // pend.wait will have to wait for this hold to finish
12 | pend.go(function(cb) {
13 | console.log("this function is immediately executed");
14 | setTimeout(function() {
15 | console.log("calling cb 1");
16 | cb();
17 | }, 500);
18 | });
19 | pend.go(function(cb) {
20 | console.log("this function is also immediately executed");
21 | setTimeout(function() {
22 | console.log("calling cb 2");
23 | cb();
24 | }, 1000);
25 | });
26 | pend.wait(function(err) {
27 | console.log("this is excuted when the first 2 have returned.");
28 | console.log("err is a possible error in the standard callback style.");
29 | });
30 | ```
31 |
32 | Output:
33 |
34 | ```
35 | this function is immediately executed
36 | this function is also immediately executed
37 | calling cb 1
38 | calling cb 2
39 | this is excuted when the first 2 have returned.
40 | err is a possible error in the standard callback style.
41 | ```
42 |
--------------------------------------------------------------------------------
/node_modules/pend/index.js:
--------------------------------------------------------------------------------
1 | module.exports = Pend;
2 |
3 | function Pend() {
4 | this.pending = 0;
5 | this.max = Infinity;
6 | this.listeners = [];
7 | this.waiting = [];
8 | this.error = null;
9 | }
10 |
11 | Pend.prototype.go = function(fn) {
12 | if (this.pending < this.max) {
13 | pendGo(this, fn);
14 | } else {
15 | this.waiting.push(fn);
16 | }
17 | };
18 |
19 | Pend.prototype.wait = function(cb) {
20 | if (this.pending === 0) {
21 | cb(this.error);
22 | } else {
23 | this.listeners.push(cb);
24 | }
25 | };
26 |
27 | Pend.prototype.hold = function() {
28 | return pendHold(this);
29 | };
30 |
31 | function pendHold(self) {
32 | self.pending += 1;
33 | var called = false;
34 | return onCb;
35 | function onCb(err) {
36 | if (called) throw new Error("callback called twice");
37 | called = true;
38 | self.error = self.error || err;
39 | self.pending -= 1;
40 | if (self.waiting.length > 0 && self.pending < self.max) {
41 | pendGo(self, self.waiting.shift());
42 | } else if (self.pending === 0) {
43 | var listeners = self.listeners;
44 | self.listeners = [];
45 | listeners.forEach(cbListener);
46 | }
47 | }
48 | function cbListener(listener) {
49 | listener(self.error);
50 | }
51 | }
52 |
53 | function pendGo(self, fn) {
54 | fn(pendHold(self));
55 | }
56 |
--------------------------------------------------------------------------------
/node_modules/pend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pend",
3 | "version": "1.2.0",
4 | "description": "dead-simple optimistic async helper",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "node test.js"
8 | },
9 | "author": "Andrew Kelley ",
10 | "license": "MIT",
11 | "repository": {
12 | "type": "git",
13 | "url": "git://github.com/andrewrk/node-pend.git"
14 | },
15 | "bugs": {
16 | "url": "https://github.com/andrewrk/node-pend/issues"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/node_modules/rechoir/.npmignore:
--------------------------------------------------------------------------------
1 | test
2 |
--------------------------------------------------------------------------------
/node_modules/rechoir/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 | language: node_js
3 | node_js:
4 | - "0.10"
5 | - "0.12"
6 | env:
7 | global:
8 | - REMOVE_DEPS=""
9 | matrix:
10 | - "CUSTOM_DEPS=coffee-script@~1.3"
11 | - "CUSTOM_DEPS=coffee-script@~1.5"
12 | - "CUSTOM_DEPS=coffee-script@~1.7"
13 | - "CUSTOM_DEPS=coffee-script@latest"
14 | - "CUSTOM_DEPS=iced-coffee-script@1.6.3-j"
15 | - "CUSTOM_DEPS=iced-coffee-script@latest"
16 | - "CUSTOM_DEPS=LiveScript@1.3.1 REMOVE_DEPS=livescript"
17 | - "CUSTOM_DEPS=typescript-require REMOVE_DEPS=typescript-register"
18 | matrix:
19 | fast_finish: true
20 | before_install:
21 | - "npm install -g npm" # needs the newest version of npm
22 | before_script:
23 | - "[ \"${REMOVE_DEPS}\" == \"\" ] || npm rm $REMOVE_DEPS"
24 | - "npm install $CUSTOM_DEPS" # install a specific version of dependencies
25 |
--------------------------------------------------------------------------------
/node_modules/rechoir/CHANGELOG:
--------------------------------------------------------------------------------
1 | v0.6.2:
2 | date: 2015-07-22
3 | changes:
4 | - Return `undefined` when an unknown extension is provided to prepare and
5 | the `nothrow` option is specified.
6 | v0.6.1:
7 | date: 2015-05-22
8 | changes:
9 | - Add option for not throwing.
10 | v0.6.0:
11 | date: 2015-05-20
12 | changes:
13 | - Include module name when prepare is successful.
14 | v0.5.0:
15 | date: 2015-05-20
16 | changes:
17 | - Overhaul to support interpret 0.6.0.
18 | v0.3.0:
19 | date: 2015-01-10
20 | changes:
21 | - Breaking: `load` method removed.
22 | - Improved extension recognition.
23 | - No longer fails upon dots in filenames.
24 | - Support confuration objects.
25 | - Support and test ES6.
26 | - Support legacy module loading.
27 | v0.2.2:
28 | date: 2014-12-17
29 | changes:
30 | - Expose interpret.
31 | v0.2.0:
32 | date: 2014-04-20
33 | changes:
34 | - Simplify loading of coffee-script and iced-coffee-script.
35 | v0.1.0:
36 | date: 2014-04-20
37 | changes:
38 | - Initial public release.
39 |
--------------------------------------------------------------------------------
/node_modules/rechoir/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2015 Tyler Kellen
2 |
3 | Permission is hereby granted, free of charge, to any person
4 | obtaining a copy of this software and associated documentation
5 | files (the "Software"), to deal in the Software without
6 | restriction, including without limitation the rights to use,
7 | copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the
9 | Software is furnished to do so, subject to the following
10 | conditions:
11 |
12 | The above copyright notice and this permission notice shall be
13 | included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 | OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/node_modules/rechoir/lib/extension.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 |
3 | const EXTRE = /^[.]?[^.]+([.].*)$/;
4 |
5 | module.exports = function (input) {
6 | var extension = EXTRE.exec(path.basename(input));
7 | if (!extension) {
8 | return;
9 | }
10 | return extension[1];
11 | };
12 |
--------------------------------------------------------------------------------
/node_modules/rechoir/lib/normalize.js:
--------------------------------------------------------------------------------
1 | function normalizer (config) {
2 | if (typeof config === 'string') {
3 | return {
4 | module: config
5 | }
6 | }
7 | return config;
8 | };
9 |
10 | module.exports = function (config) {
11 | if (Array.isArray(config)) {
12 | return config.map(normalizer);
13 | }
14 | return normalizer(config);
15 | };
16 |
--------------------------------------------------------------------------------
/node_modules/rechoir/lib/register.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 | const resolve = require('resolve');
3 |
4 | module.exports = function (cwd, moduleName, register) {
5 | try {
6 | var modulePath = resolve.sync(moduleName, {basedir: cwd});
7 | var result = require(modulePath);
8 | if (typeof register === 'function') {
9 | register(result);
10 | }
11 | } catch (e) {
12 | result = e;
13 | }
14 | return result;
15 | };
16 |
--------------------------------------------------------------------------------
/node_modules/resolve/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 | max_line_length = 200
11 |
12 | [*.js]
13 | block_comment_start = /*
14 | block_comment = *
15 | block_comment_end = */
16 |
17 | [*.yml]
18 | indent_size = 1
19 |
20 | [package.json]
21 | indent_style = tab
22 |
23 | [lib/core.json]
24 | indent_style = tab
25 |
26 | [CHANGELOG.md]
27 | indent_style = space
28 | indent_size = 2
29 |
30 | [{*.json,Makefile}]
31 | max_line_length = off
32 |
33 | [test/{dotdot,resolver,module_dir,multirepo,node_path,pathfilter,precedence}/**/*]
34 | indent_style = off
35 | indent_size = off
36 | max_line_length = off
37 | insert_final_newline = off
38 |
--------------------------------------------------------------------------------
/node_modules/resolve/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [ljharb]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: npm/resolve
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
13 |
--------------------------------------------------------------------------------
/node_modules/resolve/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2012 James Halliday
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/resolve/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security
2 |
3 | Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report.
4 |
--------------------------------------------------------------------------------
/node_modules/resolve/async.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = require('./lib/async');
4 |
--------------------------------------------------------------------------------
/node_modules/resolve/example/async.js:
--------------------------------------------------------------------------------
1 | var resolve = require('../');
2 | resolve('tap', { basedir: __dirname }, function (err, res) {
3 | if (err) console.error(err);
4 | else console.log(res);
5 | });
6 |
--------------------------------------------------------------------------------
/node_modules/resolve/example/sync.js:
--------------------------------------------------------------------------------
1 | var resolve = require('../');
2 | var res = resolve.sync('tap', { basedir: __dirname });
3 | console.log(res);
4 |
--------------------------------------------------------------------------------
/node_modules/resolve/index.js:
--------------------------------------------------------------------------------
1 | var async = require('./lib/async');
2 | async.core = require('./lib/core');
3 | async.isCore = require('./lib/is-core');
4 | async.sync = require('./lib/sync');
5 |
6 | module.exports = async;
7 |
--------------------------------------------------------------------------------
/node_modules/resolve/lib/caller.js:
--------------------------------------------------------------------------------
1 | module.exports = function () {
2 | // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
3 | var origPrepareStackTrace = Error.prepareStackTrace;
4 | Error.prepareStackTrace = function (_, stack) { return stack; };
5 | var stack = (new Error()).stack;
6 | Error.prepareStackTrace = origPrepareStackTrace;
7 | return stack[2].getFileName();
8 | };
9 |
--------------------------------------------------------------------------------
/node_modules/resolve/lib/core.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var isCoreModule = require('is-core-module');
4 | var data = require('./core.json');
5 |
6 | var core = {};
7 | for (var mod in data) { // eslint-disable-line no-restricted-syntax
8 | if (Object.prototype.hasOwnProperty.call(data, mod)) {
9 | core[mod] = isCoreModule(mod);
10 | }
11 | }
12 | module.exports = core;
13 |
--------------------------------------------------------------------------------
/node_modules/resolve/lib/homedir.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var os = require('os');
4 |
5 | // adapted from https://github.com/sindresorhus/os-homedir/blob/11e089f4754db38bb535e5a8416320c4446e8cfd/index.js
6 |
7 | module.exports = os.homedir || function homedir() {
8 | var home = process.env.HOME;
9 | var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME;
10 |
11 | if (process.platform === 'win32') {
12 | return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null;
13 | }
14 |
15 | if (process.platform === 'darwin') {
16 | return home || (user ? '/Users/' + user : null);
17 | }
18 |
19 | if (process.platform === 'linux') {
20 | return home || (process.getuid() === 0 ? '/root' : (user ? '/home/' + user : null)); // eslint-disable-line no-extra-parens
21 | }
22 |
23 | return home || null;
24 | };
25 |
--------------------------------------------------------------------------------
/node_modules/resolve/lib/is-core.js:
--------------------------------------------------------------------------------
1 | var isCoreModule = require('is-core-module');
2 |
3 | module.exports = function isCore(x) {
4 | return isCoreModule(x);
5 | };
6 |
--------------------------------------------------------------------------------
/node_modules/resolve/lib/node-modules-paths.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var parse = path.parse || require('path-parse'); // eslint-disable-line global-require
3 |
4 | var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {
5 | var prefix = '/';
6 | if ((/^([A-Za-z]:)/).test(absoluteStart)) {
7 | prefix = '';
8 | } else if ((/^\\\\/).test(absoluteStart)) {
9 | prefix = '\\\\';
10 | }
11 |
12 | var paths = [absoluteStart];
13 | var parsed = parse(absoluteStart);
14 | while (parsed.dir !== paths[paths.length - 1]) {
15 | paths.push(parsed.dir);
16 | parsed = parse(parsed.dir);
17 | }
18 |
19 | return paths.reduce(function (dirs, aPath) {
20 | return dirs.concat(modules.map(function (moduleDir) {
21 | return path.resolve(prefix, aPath, moduleDir);
22 | }));
23 | }, []);
24 | };
25 |
26 | module.exports = function nodeModulesPaths(start, opts, request) {
27 | var modules = opts && opts.moduleDirectory
28 | ? [].concat(opts.moduleDirectory)
29 | : ['node_modules'];
30 |
31 | if (opts && typeof opts.paths === 'function') {
32 | return opts.paths(
33 | request,
34 | start,
35 | function () { return getNodeModulesDirs(start, modules); },
36 | opts
37 | );
38 | }
39 |
40 | var dirs = getNodeModulesDirs(start, modules);
41 | return opts && opts.paths ? dirs.concat(opts.paths) : dirs;
42 | };
43 |
--------------------------------------------------------------------------------
/node_modules/resolve/lib/normalize-options.js:
--------------------------------------------------------------------------------
1 | module.exports = function (x, opts) {
2 | /**
3 | * This file is purposefully a passthrough. It's expected that third-party
4 | * environments will override it at runtime in order to inject special logic
5 | * into `resolve` (by manipulating the options). One such example is the PnP
6 | * code path in Yarn.
7 | */
8 |
9 | return opts || {};
10 | };
11 |
--------------------------------------------------------------------------------
/node_modules/resolve/sync.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = require('./lib/sync');
4 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/dotdot.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var test = require('tape');
3 | var resolve = require('../');
4 |
5 | test('dotdot', function (t) {
6 | t.plan(4);
7 | var dir = path.join(__dirname, '/dotdot/abc');
8 |
9 | resolve('..', { basedir: dir }, function (err, res, pkg) {
10 | t.ifError(err);
11 | t.equal(res, path.join(__dirname, 'dotdot/index.js'));
12 | });
13 |
14 | resolve('.', { basedir: dir }, function (err, res, pkg) {
15 | t.ifError(err);
16 | t.equal(res, path.join(dir, 'index.js'));
17 | });
18 | });
19 |
20 | test('dotdot sync', function (t) {
21 | t.plan(2);
22 | var dir = path.join(__dirname, '/dotdot/abc');
23 |
24 | var a = resolve.sync('..', { basedir: dir });
25 | t.equal(a, path.join(__dirname, 'dotdot/index.js'));
26 |
27 | var b = resolve.sync('.', { basedir: dir });
28 | t.equal(b, path.join(dir, 'index.js'));
29 | });
30 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/dotdot/abc/index.js:
--------------------------------------------------------------------------------
1 | var x = require('..');
2 | console.log(x);
3 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/dotdot/index.js:
--------------------------------------------------------------------------------
1 | module.exports = 'whatever';
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/faulty_basedir.js:
--------------------------------------------------------------------------------
1 | var test = require('tape');
2 | var path = require('path');
3 | var resolve = require('../');
4 |
5 | test('faulty basedir must produce error in windows', { skip: process.platform !== 'win32' }, function (t) {
6 | t.plan(1);
7 |
8 | var resolverDir = 'C:\\a\\b\\c\\d';
9 |
10 | resolve('tape/lib/test.js', { basedir: resolverDir }, function (err, res, pkg) {
11 | t.equal(!!err, true);
12 | });
13 | });
14 |
15 | test('non-existent basedir should not throw when preserveSymlinks is false', function (t) {
16 | t.plan(2);
17 |
18 | var opts = {
19 | basedir: path.join(path.sep, 'unreal', 'path', 'that', 'does', 'not', 'exist'),
20 | preserveSymlinks: false
21 | };
22 |
23 | var module = './dotdot/abc';
24 |
25 | resolve(module, opts, function (err, res) {
26 | t.equal(err.code, 'MODULE_NOT_FOUND');
27 | t.equal(res, undefined);
28 | });
29 | });
30 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/filter.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var test = require('tape');
3 | var resolve = require('../');
4 |
5 | test('filter', function (t) {
6 | t.plan(4);
7 | var dir = path.join(__dirname, 'resolver');
8 | var packageFilterArgs;
9 | resolve('./baz', {
10 | basedir: dir,
11 | packageFilter: function (pkg, pkgfile) {
12 | pkg.main = 'doom'; // eslint-disable-line no-param-reassign
13 | packageFilterArgs = [pkg, pkgfile];
14 | return pkg;
15 | }
16 | }, function (err, res, pkg) {
17 | if (err) t.fail(err);
18 |
19 | t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works');
20 |
21 | var packageData = packageFilterArgs[0];
22 | t.equal(pkg, packageData, 'first packageFilter argument is "pkg"');
23 | t.equal(packageData.main, 'doom', 'package "main" was altered');
24 |
25 | var packageFile = packageFilterArgs[1];
26 | t.equal(
27 | packageFile,
28 | path.join(dir, 'baz/package.json'),
29 | 'second packageFilter argument is "pkgfile"'
30 | );
31 |
32 | t.end();
33 | });
34 | });
35 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/filter_sync.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var test = require('tape');
3 | var resolve = require('../');
4 |
5 | test('filter', function (t) {
6 | var dir = path.join(__dirname, 'resolver');
7 | var packageFilterArgs;
8 | var res = resolve.sync('./baz', {
9 | basedir: dir,
10 | // NOTE: in v2.x, this will be `pkg, pkgfile, dir`, but must remain "broken" here in v1.x for compatibility
11 | packageFilter: function (pkg, /*pkgfile,*/ dir) { // eslint-disable-line spaced-comment
12 | pkg.main = 'doom'; // eslint-disable-line no-param-reassign
13 | packageFilterArgs = 'is 1.x' ? [pkg, dir] : [pkg, pkgfile, dir]; // eslint-disable-line no-constant-condition, no-undef
14 | return pkg;
15 | }
16 | });
17 |
18 | t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works');
19 |
20 | var packageData = packageFilterArgs[0];
21 | t.equal(packageData.main, 'doom', 'package "main" was altered');
22 |
23 | if (!'is 1.x') { // eslint-disable-line no-constant-condition
24 | var packageFile = packageFilterArgs[1];
25 | t.equal(packageFile, path.join(dir, 'baz', 'package.json'), 'package.json path is correct');
26 | }
27 |
28 | var packageDir = packageFilterArgs['is 1.x' ? 1 : 2]; // eslint-disable-line no-constant-condition
29 | // eslint-disable-next-line no-constant-condition
30 | t.equal(packageDir, path.join(dir, 'baz'), ('is 1.x' ? 'second' : 'third') + ' packageFilter argument is "dir"');
31 |
32 | t.end();
33 | });
34 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/module_dir/xmodules/aaa/index.js:
--------------------------------------------------------------------------------
1 | module.exports = function (x) { return x * 100; };
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/module_dir/ymodules/aaa/index.js:
--------------------------------------------------------------------------------
1 | module.exports = function (x) { return x + 100; };
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/module_dir/zmodules/bbb/main.js:
--------------------------------------------------------------------------------
1 | module.exports = function (n) { return n * 111; };
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/module_dir/zmodules/bbb/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "main": "main.js"
3 | }
4 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/node_path/x/aaa/index.js:
--------------------------------------------------------------------------------
1 | module.exports = 'A';
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/node_path/x/ccc/index.js:
--------------------------------------------------------------------------------
1 | module.exports = 'C';
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/node_path/y/bbb/index.js:
--------------------------------------------------------------------------------
1 | module.exports = 'B';
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/node_path/y/ccc/index.js:
--------------------------------------------------------------------------------
1 | module.exports = 'CY';
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/nonstring.js:
--------------------------------------------------------------------------------
1 | var test = require('tape');
2 | var resolve = require('../');
3 |
4 | test('nonstring', function (t) {
5 | t.plan(1);
6 | resolve(555, function (err, res, pkg) {
7 | t.ok(err);
8 | });
9 | });
10 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/pathfilter/deep_ref/main.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/pathfilter/deep_ref/main.js
--------------------------------------------------------------------------------
/node_modules/resolve/test/precedence.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var test = require('tape');
3 | var resolve = require('../');
4 |
5 | test('precedence', function (t) {
6 | t.plan(3);
7 | var dir = path.join(__dirname, 'precedence/aaa');
8 |
9 | resolve('./', { basedir: dir }, function (err, res, pkg) {
10 | t.ifError(err);
11 | t.equal(res, path.join(dir, 'index.js'));
12 | t.equal(pkg.name, 'resolve');
13 | });
14 | });
15 |
16 | test('./ should not load ${dir}.js', function (t) { // eslint-disable-line no-template-curly-in-string
17 | t.plan(1);
18 | var dir = path.join(__dirname, 'precedence/bbb');
19 |
20 | resolve('./', { basedir: dir }, function (err, res, pkg) {
21 | t.ok(err);
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/precedence/aaa.js:
--------------------------------------------------------------------------------
1 | module.exports = 'wtf';
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/precedence/aaa/index.js:
--------------------------------------------------------------------------------
1 | module.exports = 'okok';
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/precedence/aaa/main.js:
--------------------------------------------------------------------------------
1 | console.log(require('./'));
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/precedence/bbb.js:
--------------------------------------------------------------------------------
1 | module.exports = '>_<';
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/precedence/bbb/main.js:
--------------------------------------------------------------------------------
1 | console.log(require('./')); // should throw
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/baz/doom.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/resolver/baz/doom.js
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/baz/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "baz",
3 | "main": "quux.js"
4 | }
5 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/baz/quux.js:
--------------------------------------------------------------------------------
1 | module.exports = 1;
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/browser_field/a.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/resolver/browser_field/a.js
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/browser_field/b.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/resolver/browser_field/b.js
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/browser_field/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "browser_field",
3 | "main": "a",
4 | "browser": "b"
5 | }
6 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/cup.coffee:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/dot_main/index.js:
--------------------------------------------------------------------------------
1 | module.exports = 1;
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/dot_main/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "main": "."
3 | }
4 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/dot_slash_main/index.js:
--------------------------------------------------------------------------------
1 | module.exports = 1;
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/dot_slash_main/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "main": "./"
3 | }
4 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/false_main/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/resolver/false_main/index.js
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/false_main/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "false_main",
3 | "main": false
4 | }
5 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/foo.js:
--------------------------------------------------------------------------------
1 | module.exports = 1;
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/incorrect_main/index.js:
--------------------------------------------------------------------------------
1 | // this is the actual main file 'index.js', not 'wrong.js' like the package.json would indicate
2 | module.exports = 1;
3 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/incorrect_main/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "main": "wrong.js"
3 | }
4 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/invalid_main/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "invalid_main",
3 | "main": [
4 | "why is this a thing",
5 | "srsly omg wtf"
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/mug.coffee:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/resolver/mug.coffee
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/mug.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/resolver/mug.js
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/multirepo/lerna.json:
--------------------------------------------------------------------------------
1 | {
2 | "packages": [
3 | "packages/*"
4 | ],
5 | "version": "0.0.0"
6 | }
7 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/multirepo/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ljharb-monorepo-symlink-test",
3 | "private": true,
4 | "version": "0.0.0",
5 | "description": "",
6 | "main": "index.js",
7 | "scripts": {
8 | "postinstall": "lerna bootstrap",
9 | "test": "node packages/package-a"
10 | },
11 | "author": "",
12 | "license": "MIT",
13 | "dependencies": {
14 | "jquery": "^3.3.1",
15 | "resolve": "../../../"
16 | },
17 | "devDependencies": {
18 | "lerna": "^3.4.3"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var assert = require('assert');
4 | var path = require('path');
5 | var resolve = require('resolve');
6 |
7 | var basedir = __dirname + '/node_modules/@my-scope/package-b';
8 |
9 | var expected = path.join(__dirname, '../../node_modules/jquery/dist/jquery.js');
10 |
11 | /*
12 | * preserveSymlinks === false
13 | * will search NPM package from
14 | * - packages/package-b/node_modules
15 | * - packages/node_modules
16 | * - node_modules
17 | */
18 | assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: false }), expected);
19 | assert.equal(resolve.sync('../../node_modules/jquery', { basedir: basedir, preserveSymlinks: false }), expected);
20 |
21 | /*
22 | * preserveSymlinks === true
23 | * will search NPM package from
24 | * - packages/package-a/node_modules/@my-scope/packages/package-b/node_modules
25 | * - packages/package-a/node_modules/@my-scope/packages/node_modules
26 | * - packages/package-a/node_modules/@my-scope/node_modules
27 | * - packages/package-a/node_modules/node_modules
28 | * - packages/package-a/node_modules
29 | * - packages/node_modules
30 | * - node_modules
31 | */
32 | assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: true }), expected);
33 | assert.equal(resolve.sync('../../../../../node_modules/jquery', { basedir: basedir, preserveSymlinks: true }), expected);
34 |
35 | console.log(' * all monorepo paths successfully resolved through symlinks');
36 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@my-scope/package-a",
3 | "version": "0.0.0",
4 | "private": true,
5 | "description": "",
6 | "license": "MIT",
7 | "main": "index.js",
8 | "scripts": {
9 | "test": "echo \"Error: run tests from root\" && exit 1"
10 | },
11 | "dependencies": {
12 | "@my-scope/package-b": "^0.0.0"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@my-scope/package-b",
3 | "private": true,
4 | "version": "0.0.0",
5 | "description": "",
6 | "license": "MIT",
7 | "main": "index.js",
8 | "scripts": {
9 | "test": "echo \"Error: run tests from root\" && exit 1"
10 | },
11 | "dependencies": {
12 | "@my-scope/package-a": "^0.0.0"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js:
--------------------------------------------------------------------------------
1 | var a = require.resolve('buffer/').replace(process.cwd(), '$CWD');
2 | var b;
3 | var c;
4 |
5 | var test = function test() {
6 | console.log(a, ': require.resolve, preserveSymlinks ' + (process.execArgv.indexOf('preserve-symlinks') > -1 ? 'true' : 'false'));
7 | console.log(b, ': preserveSymlinks true');
8 | console.log(c, ': preserveSymlinks false');
9 |
10 | if (a !== b && a !== c) {
11 | throw 'async: no match';
12 | }
13 | console.log('async: success! a matched either b or c\n');
14 | };
15 |
16 | require('resolve')('buffer/', { preserveSymlinks: true }, function (err, result) {
17 | if (err) { throw err; }
18 | b = result.replace(process.cwd(), '$CWD');
19 | if (b && c) { test(); }
20 | });
21 | require('resolve')('buffer/', { preserveSymlinks: false }, function (err, result) {
22 | if (err) { throw err; }
23 | c = result.replace(process.cwd(), '$CWD');
24 | if (b && c) { test(); }
25 | });
26 |
27 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "mylib",
3 | "version": "0.0.0",
4 | "description": "",
5 | "private": true,
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "keywords": [],
10 | "author": "",
11 | "license": "ISC",
12 | "dependencies": {
13 | "buffer": "*"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js:
--------------------------------------------------------------------------------
1 | var a = require.resolve('buffer/').replace(process.cwd(), '$CWD');
2 | var b = require('resolve').sync('buffer/', { preserveSymlinks: true }).replace(process.cwd(), '$CWD');
3 | var c = require('resolve').sync('buffer/', { preserveSymlinks: false }).replace(process.cwd(), '$CWD');
4 |
5 | console.log(a, ': require.resolve, preserveSymlinks ' + (process.execArgv.indexOf('preserve-symlinks') > -1 ? 'true' : 'false'));
6 | console.log(b, ': preserveSymlinks true');
7 | console.log(c, ': preserveSymlinks false');
8 |
9 | if (a !== b && a !== c) {
10 | throw 'sync: no match';
11 | }
12 | console.log('sync: success! a matched either b or c\n');
13 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/other_path/lib/other-lib.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/resolver/other_path/lib/other-lib.js
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/other_path/root.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/resolver/other_path/root.js
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/quux/foo/index.js:
--------------------------------------------------------------------------------
1 | module.exports = 1;
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/same_names/foo.js:
--------------------------------------------------------------------------------
1 | module.exports = 42;
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/same_names/foo/index.js:
--------------------------------------------------------------------------------
1 | module.exports = 1;
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/symlinked/package/bar.js:
--------------------------------------------------------------------------------
1 | module.exports = 'bar';
2 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/symlinked/package/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "main": "bar.js"
3 | }
--------------------------------------------------------------------------------
/node_modules/resolve/test/resolver/without_basedir/main.js:
--------------------------------------------------------------------------------
1 | var resolve = require('../../../');
2 |
3 | module.exports = function (t, cb) {
4 | resolve('mymodule', null, cb);
5 | };
6 |
--------------------------------------------------------------------------------
/node_modules/resolve/test/shadowed_core/node_modules/util/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/resolve/test/shadowed_core/node_modules/util/index.js
--------------------------------------------------------------------------------
/node_modules/resolve/test/subdirs.js:
--------------------------------------------------------------------------------
1 | var test = require('tape');
2 | var resolve = require('../');
3 | var path = require('path');
4 |
5 | test('subdirs', function (t) {
6 | t.plan(2);
7 |
8 | var dir = path.join(__dirname, '/subdirs');
9 | resolve('a/b/c/x.json', { basedir: dir }, function (err, res) {
10 | t.ifError(err);
11 | t.equal(res, path.join(dir, 'node_modules/a/b/c/x.json'));
12 | });
13 | });
14 |
--------------------------------------------------------------------------------
/node_modules/safe-buffer/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) Feross Aboukhadijeh
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/safe-buffer/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "safe-buffer",
3 | "description": "Safer Node.js Buffer API",
4 | "version": "5.2.1",
5 | "author": {
6 | "name": "Feross Aboukhadijeh",
7 | "email": "feross@feross.org",
8 | "url": "https://feross.org"
9 | },
10 | "bugs": {
11 | "url": "https://github.com/feross/safe-buffer/issues"
12 | },
13 | "devDependencies": {
14 | "standard": "*",
15 | "tape": "^5.0.0"
16 | },
17 | "homepage": "https://github.com/feross/safe-buffer",
18 | "keywords": [
19 | "buffer",
20 | "buffer allocate",
21 | "node security",
22 | "safe",
23 | "safe-buffer",
24 | "security",
25 | "uninitialized"
26 | ],
27 | "license": "MIT",
28 | "main": "index.js",
29 | "types": "index.d.ts",
30 | "repository": {
31 | "type": "git",
32 | "url": "git://github.com/feross/safe-buffer.git"
33 | },
34 | "scripts": {
35 | "test": "standard && tape test/*.js"
36 | },
37 | "funding": [
38 | {
39 | "type": "github",
40 | "url": "https://github.com/sponsors/feross"
41 | },
42 | {
43 | "type": "patreon",
44 | "url": "https://www.patreon.com/feross"
45 | },
46 | {
47 | "type": "consulting",
48 | "url": "https://feross.org/support"
49 | }
50 | ]
51 | }
52 |
--------------------------------------------------------------------------------
/node_modules/shelljs/bin/shjs:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | if (require.main !== module) {
4 | throw new Error('Executable-only module should not be required');
5 | }
6 |
7 | // we must import global ShellJS methods after the require.main check to prevent the global
8 | // namespace from being polluted if the error is caught
9 | require('../global');
10 |
11 | function exitWithErrorMessage(msg) {
12 | console.log(msg);
13 | console.log();
14 | process.exit(1);
15 | }
16 |
17 | if (process.argv.length < 3) {
18 | exitWithErrorMessage('ShellJS: missing argument (script name)');
19 | }
20 |
21 | var args,
22 | scriptName = process.argv[2];
23 | env['NODE_PATH'] = __dirname + '/../..';
24 |
25 | if (!scriptName.match(/\.js/) && !scriptName.match(/\.coffee/)) {
26 | if (test('-f', scriptName + '.js'))
27 | scriptName += '.js';
28 | if (test('-f', scriptName + '.coffee'))
29 | scriptName += '.coffee';
30 | }
31 |
32 | if (!test('-f', scriptName)) {
33 | exitWithErrorMessage('ShellJS: script not found ('+scriptName+')');
34 | }
35 |
36 | args = process.argv.slice(3);
37 |
38 | for (var i = 0, l = args.length; i < l; i++) {
39 | if (args[i][0] !== "-"){
40 | args[i] = '"' + args[i] + '"'; // fixes arguments with multiple words
41 | }
42 | }
43 |
44 | var path = require('path');
45 | var extensions = require('interpret').extensions;
46 | var rechoir = require('rechoir');
47 | rechoir.prepare(extensions, scriptName);
48 | require(require.resolve(path.resolve(process.cwd(), scriptName)));
49 |
--------------------------------------------------------------------------------
/node_modules/shelljs/commands.js:
--------------------------------------------------------------------------------
1 | module.exports = [
2 | 'cat',
3 | 'cd',
4 | 'chmod',
5 | 'cp',
6 | 'dirs',
7 | 'echo',
8 | 'exec',
9 | 'find',
10 | 'grep',
11 | 'head',
12 | 'ln',
13 | 'ls',
14 | 'mkdir',
15 | 'mv',
16 | 'pwd',
17 | 'rm',
18 | 'sed',
19 | 'set',
20 | 'sort',
21 | 'tail',
22 | 'tempdir',
23 | 'test',
24 | 'to',
25 | 'toEnd',
26 | 'touch',
27 | 'uniq',
28 | 'which',
29 | ];
30 |
--------------------------------------------------------------------------------
/node_modules/shelljs/global.js:
--------------------------------------------------------------------------------
1 | /* eslint no-extend-native: 0 */
2 | var shell = require('./shell.js');
3 | var common = require('./src/common');
4 | Object.keys(shell).forEach(function (cmd) {
5 | global[cmd] = shell[cmd];
6 | });
7 |
8 | var _to = require('./src/to');
9 | String.prototype.to = common.wrap('to', _to);
10 |
11 | var _toEnd = require('./src/toEnd');
12 | String.prototype.toEnd = common.wrap('toEnd', _toEnd);
13 |
--------------------------------------------------------------------------------
/node_modules/shelljs/make.js:
--------------------------------------------------------------------------------
1 | require('./global');
2 |
3 | global.config.fatal = true;
4 | global.target = {};
5 |
6 | var args = process.argv.slice(2),
7 | targetArgs,
8 | dashesLoc = args.indexOf('--');
9 |
10 | // split args, everything after -- if only for targets
11 | if (dashesLoc > -1) {
12 | targetArgs = args.slice(dashesLoc + 1, args.length);
13 | args = args.slice(0, dashesLoc);
14 | }
15 |
16 | // This ensures we only execute the script targets after the entire script has
17 | // been evaluated
18 | setTimeout(function() {
19 | var t;
20 |
21 | if (args.length === 1 && args[0] === '--help') {
22 | console.log('Available targets:');
23 | for (t in global.target)
24 | console.log(' ' + t);
25 | return;
26 | }
27 |
28 | // Wrap targets to prevent duplicate execution
29 | for (t in global.target) {
30 | (function(t, oldTarget){
31 |
32 | // Wrap it
33 | global.target[t] = function() {
34 | if (!oldTarget.done){
35 | oldTarget.done = true;
36 | oldTarget.result = oldTarget.apply(oldTarget, arguments);
37 | }
38 | return oldTarget.result;
39 | };
40 |
41 | })(t, global.target[t]);
42 | }
43 |
44 | // Execute desired targets
45 | if (args.length > 0) {
46 | args.forEach(function(arg) {
47 | if (arg in global.target)
48 | global.target[arg](targetArgs);
49 | else {
50 | console.log('no such target: ' + arg);
51 | }
52 | });
53 | } else if ('all' in global.target) {
54 | global.target.all(targetArgs);
55 | }
56 |
57 | }, 0);
58 |
--------------------------------------------------------------------------------
/node_modules/shelljs/plugin.js:
--------------------------------------------------------------------------------
1 | // Various utilties exposed to plugins
2 |
3 | require('./shell'); // Create the ShellJS instance (mandatory)
4 |
5 | var common = require('./src/common');
6 |
7 | var exportedAttributes = [
8 | 'error', // For signaling errors from within commands
9 | 'parseOptions', // For custom option parsing
10 | 'readFromPipe', // For commands with the .canReceivePipe attribute
11 | 'register', // For registering plugins
12 | ];
13 |
14 | exportedAttributes.forEach(function (attr) {
15 | exports[attr] = common[attr];
16 | });
17 |
--------------------------------------------------------------------------------
/node_modules/shelljs/src/cd.js:
--------------------------------------------------------------------------------
1 | var os = require('os');
2 | var common = require('./common');
3 |
4 | common.register('cd', _cd, {});
5 |
6 | //@
7 | //@ ### cd([dir])
8 | //@
9 | //@ Changes to directory `dir` for the duration of the script. Changes to home
10 | //@ directory if no argument is supplied.
11 | function _cd(options, dir) {
12 | if (!dir) dir = os.homedir();
13 |
14 | if (dir === '-') {
15 | if (!process.env.OLDPWD) {
16 | common.error('could not find previous directory');
17 | } else {
18 | dir = process.env.OLDPWD;
19 | }
20 | }
21 |
22 | try {
23 | var curDir = process.cwd();
24 | process.chdir(dir);
25 | process.env.OLDPWD = curDir;
26 | } catch (e) {
27 | // something went wrong, let's figure out the error
28 | var err;
29 | try {
30 | common.statFollowLinks(dir); // if this succeeds, it must be some sort of file
31 | err = 'not a directory: ' + dir;
32 | } catch (e2) {
33 | err = 'no such file or directory: ' + dir;
34 | }
35 | if (err) common.error(err);
36 | }
37 | return '';
38 | }
39 | module.exports = _cd;
40 |
--------------------------------------------------------------------------------
/node_modules/shelljs/src/error.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 |
3 | //@
4 | //@ ### error()
5 | //@
6 | //@ Tests if error occurred in the last command. Returns a truthy value if an
7 | //@ error returned, or a falsy value otherwise.
8 | //@
9 | //@ **Note**: do not rely on the
10 | //@ return value to be an error message. If you need the last error message, use
11 | //@ the `.stderr` attribute from the last command's return value instead.
12 | function error() {
13 | return common.state.error;
14 | }
15 | module.exports = error;
16 |
--------------------------------------------------------------------------------
/node_modules/shelljs/src/exec-child.js:
--------------------------------------------------------------------------------
1 | if (require.main !== module) {
2 | throw new Error('This file should not be required');
3 | }
4 |
5 | var childProcess = require('child_process');
6 | var fs = require('fs');
7 |
8 | var paramFilePath = process.argv[2];
9 |
10 | var serializedParams = fs.readFileSync(paramFilePath, 'utf8');
11 | var params = JSON.parse(serializedParams);
12 |
13 | var cmd = params.command;
14 | var execOptions = params.execOptions;
15 | var pipe = params.pipe;
16 | var stdoutFile = params.stdoutFile;
17 | var stderrFile = params.stderrFile;
18 |
19 | var c = childProcess.exec(cmd, execOptions, function (err) {
20 | if (!err) {
21 | process.exitCode = 0;
22 | } else if (err.code === undefined) {
23 | process.exitCode = 1;
24 | } else {
25 | process.exitCode = err.code;
26 | }
27 | });
28 |
29 | var stdoutStream = fs.createWriteStream(stdoutFile);
30 | var stderrStream = fs.createWriteStream(stderrFile);
31 |
32 | c.stdout.pipe(stdoutStream);
33 | c.stderr.pipe(stderrStream);
34 | c.stdout.pipe(process.stdout);
35 | c.stderr.pipe(process.stderr);
36 |
37 | if (pipe) {
38 | c.stdin.end(pipe);
39 | }
40 |
--------------------------------------------------------------------------------
/node_modules/shelljs/src/popd.js:
--------------------------------------------------------------------------------
1 | // see dirs.js
2 |
--------------------------------------------------------------------------------
/node_modules/shelljs/src/pushd.js:
--------------------------------------------------------------------------------
1 | // see dirs.js
2 |
--------------------------------------------------------------------------------
/node_modules/shelljs/src/pwd.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var common = require('./common');
3 |
4 | common.register('pwd', _pwd, {
5 | allowGlobbing: false,
6 | });
7 |
8 | //@
9 | //@ ### pwd()
10 | //@
11 | //@ Returns the current directory.
12 | function _pwd() {
13 | var pwd = path.resolve(process.cwd());
14 | return pwd;
15 | }
16 | module.exports = _pwd;
17 |
--------------------------------------------------------------------------------
/node_modules/shelljs/src/set.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 |
3 | common.register('set', _set, {
4 | allowGlobbing: false,
5 | wrapOutput: false,
6 | });
7 |
8 | //@
9 | //@ ### set(options)
10 | //@
11 | //@ Available options:
12 | //@
13 | //@ + `+/-e`: exit upon error (`config.fatal`)
14 | //@ + `+/-v`: verbose: show all commands (`config.verbose`)
15 | //@ + `+/-f`: disable filename expansion (globbing)
16 | //@
17 | //@ Examples:
18 | //@
19 | //@ ```javascript
20 | //@ set('-e'); // exit upon first error
21 | //@ set('+e'); // this undoes a "set('-e')"
22 | //@ ```
23 | //@
24 | //@ Sets global configuration variables.
25 | function _set(options) {
26 | if (!options) {
27 | var args = [].slice.call(arguments, 0);
28 | if (args.length < 2) common.error('must provide an argument');
29 | options = args[1];
30 | }
31 | var negate = (options[0] === '+');
32 | if (negate) {
33 | options = '-' + options.slice(1); // parseOptions needs a '-' prefix
34 | }
35 | options = common.parseOptions(options, {
36 | 'e': 'fatal',
37 | 'v': 'verbose',
38 | 'f': 'noglob',
39 | });
40 |
41 | if (negate) {
42 | Object.keys(options).forEach(function (key) {
43 | options[key] = !options[key];
44 | });
45 | }
46 |
47 | Object.keys(options).forEach(function (key) {
48 | // Only change the global config if `negate` is false and the option is true
49 | // or if `negate` is true and the option is false (aka negate !== option)
50 | if (negate !== options[key]) {
51 | common.config[key] = options[key];
52 | }
53 | });
54 | return;
55 | }
56 | module.exports = _set;
57 |
--------------------------------------------------------------------------------
/node_modules/shelljs/src/to.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 | var fs = require('fs');
3 | var path = require('path');
4 |
5 | common.register('to', _to, {
6 | pipeOnly: true,
7 | wrapOutput: false,
8 | });
9 |
10 | //@
11 | //@ ### ShellString.prototype.to(file)
12 | //@
13 | //@ Examples:
14 | //@
15 | //@ ```javascript
16 | //@ cat('input.txt').to('output.txt');
17 | //@ ```
18 | //@
19 | //@ Analogous to the redirection operator `>` in Unix, but works with
20 | //@ `ShellStrings` (such as those returned by `cat`, `grep`, etc.). _Like Unix
21 | //@ redirections, `to()` will overwrite any existing file!_
22 | function _to(options, file) {
23 | if (!file) common.error('wrong arguments');
24 |
25 | if (!fs.existsSync(path.dirname(file))) {
26 | common.error('no such file or directory: ' + path.dirname(file));
27 | }
28 |
29 | try {
30 | fs.writeFileSync(file, this.stdout || this.toString(), 'utf8');
31 | return this;
32 | } catch (e) {
33 | /* istanbul ignore next */
34 | common.error('could not write to file (code ' + e.code + '): ' + file, { continue: true });
35 | }
36 | }
37 | module.exports = _to;
38 |
--------------------------------------------------------------------------------
/node_modules/shelljs/src/toEnd.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 | var fs = require('fs');
3 | var path = require('path');
4 |
5 | common.register('toEnd', _toEnd, {
6 | pipeOnly: true,
7 | wrapOutput: false,
8 | });
9 |
10 | //@
11 | //@ ### ShellString.prototype.toEnd(file)
12 | //@
13 | //@ Examples:
14 | //@
15 | //@ ```javascript
16 | //@ cat('input.txt').toEnd('output.txt');
17 | //@ ```
18 | //@
19 | //@ Analogous to the redirect-and-append operator `>>` in Unix, but works with
20 | //@ `ShellStrings` (such as those returned by `cat`, `grep`, etc.).
21 | function _toEnd(options, file) {
22 | if (!file) common.error('wrong arguments');
23 |
24 | if (!fs.existsSync(path.dirname(file))) {
25 | common.error('no such file or directory: ' + path.dirname(file));
26 | }
27 |
28 | try {
29 | fs.appendFileSync(file, this.stdout || this.toString(), 'utf8');
30 | return this;
31 | } catch (e) {
32 | /* istanbul ignore next */
33 | common.error('could not append to file (code ' + e.code + '): ' + file, { continue: true });
34 | }
35 | }
36 | module.exports = _toEnd;
37 |
--------------------------------------------------------------------------------
/node_modules/supports-preserve-symlinks-flag/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 |
4 | "extends": "@ljharb",
5 |
6 | "env": {
7 | "browser": true,
8 | "node": true,
9 | },
10 |
11 | "rules": {
12 | "id-length": "off",
13 | },
14 | }
15 |
--------------------------------------------------------------------------------
/node_modules/supports-preserve-symlinks-flag/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [ljharb]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: npm/supports-preserve-symlink-flag
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
13 |
--------------------------------------------------------------------------------
/node_modules/supports-preserve-symlinks-flag/.nycrc:
--------------------------------------------------------------------------------
1 | {
2 | "all": true,
3 | "check-coverage": false,
4 | "reporter": ["text-summary", "text", "html", "json"],
5 | "exclude": [
6 | "coverage",
7 | "test"
8 | ]
9 | }
10 |
--------------------------------------------------------------------------------
/node_modules/supports-preserve-symlinks-flag/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Inspect JS
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/supports-preserve-symlinks-flag/browser.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = null;
4 |
--------------------------------------------------------------------------------
/node_modules/supports-preserve-symlinks-flag/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = (
4 | // node 12+
5 | process.allowedNodeEnvironmentFlags && process.allowedNodeEnvironmentFlags.has('--preserve-symlinks')
6 | ) || (
7 | // node v6.2 - v11
8 | String(module.constructor._findPath).indexOf('preserveSymlinks') >= 0 // eslint-disable-line no-underscore-dangle
9 | );
10 |
--------------------------------------------------------------------------------
/node_modules/supports-preserve-symlinks-flag/test/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var test = require('tape');
4 | var semver = require('semver');
5 |
6 | var supportsPreserveSymlinks = require('../');
7 | var browser = require('../browser');
8 |
9 | test('supportsPreserveSymlinks', function (t) {
10 | t.equal(typeof supportsPreserveSymlinks, 'boolean', 'is a boolean');
11 |
12 | t.equal(browser, null, 'browser file is `null`');
13 | t.equal(
14 | supportsPreserveSymlinks,
15 | null,
16 | 'in a browser, is null',
17 | { skip: typeof window === 'undefined' }
18 | );
19 |
20 | var expected = semver.satisfies(process.version, '>= 6.2');
21 | t.equal(
22 | supportsPreserveSymlinks,
23 | expected,
24 | 'is true in node v6.2+, false otherwise (actual: ' + supportsPreserveSymlinks + ', expected ' + expected + ')',
25 | { skip: typeof window !== 'undefined' }
26 | );
27 |
28 | t.end();
29 | });
30 |
--------------------------------------------------------------------------------
/node_modules/tar/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/node_modules/tar/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | // high-level commands
4 | exports.c = exports.create = require('./lib/create.js')
5 | exports.r = exports.replace = require('./lib/replace.js')
6 | exports.t = exports.list = require('./lib/list.js')
7 | exports.u = exports.update = require('./lib/update.js')
8 | exports.x = exports.extract = require('./lib/extract.js')
9 |
10 | // classes
11 | exports.Pack = require('./lib/pack.js')
12 | exports.Unpack = require('./lib/unpack.js')
13 | exports.Parse = require('./lib/parse.js')
14 | exports.ReadEntry = require('./lib/read-entry.js')
15 | exports.WriteEntry = require('./lib/write-entry.js')
16 | exports.Header = require('./lib/header.js')
17 | exports.Pax = require('./lib/pax.js')
18 | exports.types = require('./lib/types.js')
19 |
--------------------------------------------------------------------------------
/node_modules/tar/lib/buffer.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | // Buffer in node 4.x < 4.5.0 doesn't have working Buffer.from
4 | // or Buffer.alloc, and Buffer in node 10 deprecated the ctor.
5 | // .M, this is fine .\^/M..
6 | let B = Buffer
7 | /* istanbul ignore next */
8 | if (!B.alloc) {
9 | B = require('safe-buffer').Buffer
10 | }
11 | module.exports = B
12 |
--------------------------------------------------------------------------------
/node_modules/tar/lib/high-level-opt.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | // turn tar(1) style args like `C` into the more verbose things like `cwd`
4 |
5 | const argmap = new Map([
6 | ['C', 'cwd'],
7 | ['f', 'file'],
8 | ['z', 'gzip'],
9 | ['P', 'preservePaths'],
10 | ['U', 'unlink'],
11 | ['strip-components', 'strip'],
12 | ['stripComponents', 'strip'],
13 | ['keep-newer', 'newer'],
14 | ['keepNewer', 'newer'],
15 | ['keep-newer-files', 'newer'],
16 | ['keepNewerFiles', 'newer'],
17 | ['k', 'keep'],
18 | ['keep-existing', 'keep'],
19 | ['keepExisting', 'keep'],
20 | ['m', 'noMtime'],
21 | ['no-mtime', 'noMtime'],
22 | ['p', 'preserveOwner'],
23 | ['L', 'follow'],
24 | ['h', 'follow']
25 | ])
26 |
27 | const parse = module.exports = opt => opt ? Object.keys(opt).map(k => [
28 | argmap.has(k) ? argmap.get(k) : k, opt[k]
29 | ]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}
30 |
--------------------------------------------------------------------------------
/node_modules/tar/lib/mode-fix.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = (mode, isDir) => {
3 | mode &= 0o7777
4 | // if dirs are readable, then they should be listable
5 | if (isDir) {
6 | if (mode & 0o400)
7 | mode |= 0o100
8 | if (mode & 0o40)
9 | mode |= 0o10
10 | if (mode & 0o4)
11 | mode |= 0o1
12 | }
13 | return mode
14 | }
15 |
--------------------------------------------------------------------------------
/node_modules/tar/lib/normalize-windows-path.js:
--------------------------------------------------------------------------------
1 | // on windows, either \ or / are valid directory separators.
2 | // on unix, \ is a valid character in filenames.
3 | // so, on windows, and only on windows, we replace all \ chars with /,
4 | // so that we can use / as our one and only directory separator char.
5 |
6 | const platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform
7 | module.exports = platform !== 'win32' ? p => p
8 | : p => p && p.replace(/\\/g, '/')
9 |
--------------------------------------------------------------------------------
/node_modules/tar/lib/strip-absolute-path.js:
--------------------------------------------------------------------------------
1 | // unix absolute paths are also absolute on win32, so we use this for both
2 | const { isAbsolute, parse } = require('path').win32
3 |
4 | // returns [root, stripped]
5 | // Note that windows will think that //x/y/z/a has a "root" of //x/y, and in
6 | // those cases, we want to sanitize it to x/y/z/a, not z/a, so we strip /
7 | // explicitly if it's the first character.
8 | // drive-specific relative paths on Windows get their root stripped off even
9 | // though they are not absolute, so `c:../foo` becomes ['c:', '../foo']
10 | module.exports = path => {
11 | let r = ''
12 |
13 | let parsed = parse(path)
14 | while (isAbsolute(path) || parsed.root) {
15 | // windows will think that //x/y/z has a "root" of //x/y/
16 | // but strip the //?/C:/ off of //?/C:/path
17 | const root = path.charAt(0) === '/' && path.slice(0, 4) !== '//?/' ? '/'
18 | : parsed.root
19 | path = path.substr(root.length)
20 | r += root
21 | parsed = parse(path)
22 | }
23 | return [r, path]
24 | }
25 |
--------------------------------------------------------------------------------
/node_modules/tar/lib/strip-trailing-slashes.js:
--------------------------------------------------------------------------------
1 | // this is the only approach that was significantly faster than using
2 | // str.replace(/\/+$/, '') for strings ending with a lot of / chars and
3 | // containing multiple / chars.
4 | const batchStrings = [
5 | '/'.repeat(1024),
6 | '/'.repeat(512),
7 | '/'.repeat(256),
8 | '/'.repeat(128),
9 | '/'.repeat(64),
10 | '/'.repeat(32),
11 | '/'.repeat(16),
12 | '/'.repeat(8),
13 | '/'.repeat(4),
14 | '/'.repeat(2),
15 | '/',
16 | ]
17 |
18 | module.exports = str => {
19 | for (const s of batchStrings) {
20 | while (str.length >= s.length && str.slice(-1 * s.length) === s)
21 | str = str.slice(0, -1 * s.length)
22 | }
23 | return str
24 | }
25 |
--------------------------------------------------------------------------------
/node_modules/tar/lib/types.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | // map types from key to human-friendly name
3 | exports.name = new Map([
4 | ['0', 'File'],
5 | // same as File
6 | ['', 'OldFile'],
7 | ['1', 'Link'],
8 | ['2', 'SymbolicLink'],
9 | // Devices and FIFOs aren't fully supported
10 | // they are parsed, but skipped when unpacking
11 | ['3', 'CharacterDevice'],
12 | ['4', 'BlockDevice'],
13 | ['5', 'Directory'],
14 | ['6', 'FIFO'],
15 | // same as File
16 | ['7', 'ContiguousFile'],
17 | // pax headers
18 | ['g', 'GlobalExtendedHeader'],
19 | ['x', 'ExtendedHeader'],
20 | // vendor-specific stuff
21 | // skip
22 | ['A', 'SolarisACL'],
23 | // like 5, but with data, which should be skipped
24 | ['D', 'GNUDumpDir'],
25 | // metadata only, skip
26 | ['I', 'Inode'],
27 | // data = link path of next file
28 | ['K', 'NextFileHasLongLinkpath'],
29 | // data = path of next file
30 | ['L', 'NextFileHasLongPath'],
31 | // skip
32 | ['M', 'ContinuationFile'],
33 | // like L
34 | ['N', 'OldGnuLongPath'],
35 | // skip
36 | ['S', 'SparseFile'],
37 | // skip
38 | ['V', 'TapeVolumeHeader'],
39 | // like x
40 | ['X', 'OldExtendedHeader']
41 | ])
42 |
43 | // map the other direction
44 | exports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))
45 |
--------------------------------------------------------------------------------
/node_modules/tar/lib/update.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | // tar -u
4 |
5 | const hlo = require('./high-level-opt.js')
6 | const r = require('./replace.js')
7 | // just call tar.r with the filter and mtimeCache
8 |
9 | const u = module.exports = (opt_, files, cb) => {
10 | const opt = hlo(opt_)
11 |
12 | if (!opt.file)
13 | throw new TypeError('file is required')
14 |
15 | if (opt.gzip)
16 | throw new TypeError('cannot append to compressed archives')
17 |
18 | if (!files || !Array.isArray(files) || !files.length)
19 | throw new TypeError('no files or directories specified')
20 |
21 | files = Array.from(files)
22 |
23 | mtimeFilter(opt)
24 | return r(opt, files, cb)
25 | }
26 |
27 | const mtimeFilter = opt => {
28 | const filter = opt.filter
29 |
30 | if (!opt.mtimeCache)
31 | opt.mtimeCache = new Map()
32 |
33 | opt.filter = filter ? (path, stat) =>
34 | filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)
35 | : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)
36 | }
37 |
--------------------------------------------------------------------------------
/node_modules/tar/lib/warn-mixin.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = Base => class extends Base {
3 | warn (msg, data) {
4 | if (!this.strict)
5 | this.emit('warn', msg, data)
6 | else if (data instanceof Error)
7 | this.emit('error', data)
8 | else {
9 | const er = new Error(msg)
10 | er.data = data
11 | this.emit('error', er)
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/node_modules/tar/lib/winchars.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | // When writing files on Windows, translate the characters to their
4 | // 0xf000 higher-encoded versions.
5 |
6 | const raw = [
7 | '|',
8 | '<',
9 | '>',
10 | '?',
11 | ':'
12 | ]
13 |
14 | const win = raw.map(char =>
15 | String.fromCharCode(0xf000 + char.charCodeAt(0)))
16 |
17 | const toWin = new Map(raw.map((char, i) => [char, win[i]]))
18 | const toRaw = new Map(win.map((char, i) => [char, raw[i]]))
19 |
20 | module.exports = {
21 | encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),
22 | decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s)
23 | }
24 |
--------------------------------------------------------------------------------
/node_modules/tar/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
3 | "name": "tar",
4 | "description": "tar for node",
5 | "version": "4.4.19",
6 | "publishConfig": {
7 | "tag": "v4-legacy"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "https://github.com/npm/node-tar.git"
12 | },
13 | "scripts": {
14 | "test:posix": "tap",
15 | "test:win32": "tap --lines=98 --branches=98 --statements=98 --functions=98",
16 | "test": "node test/fixtures/test.js",
17 | "preversion": "npm test",
18 | "postversion": "npm publish",
19 | "postpublish": "git push origin --follow-tags",
20 | "genparse": "node scripts/generate-parse-fixtures.js",
21 | "bench": "for i in benchmarks/*/*.js; do echo $i; for j in {1..5}; do node $i || break; done; done"
22 | },
23 | "dependencies": {
24 | "chownr": "^1.1.4",
25 | "fs-minipass": "^1.2.7",
26 | "minipass": "^2.9.0",
27 | "minizlib": "^1.3.3",
28 | "mkdirp": "^0.5.5",
29 | "safe-buffer": "^5.2.1",
30 | "yallist": "^3.1.1"
31 | },
32 | "devDependencies": {
33 | "chmodr": "^1.2.0",
34 | "end-of-stream": "^1.4.4",
35 | "events-to-array": "^1.1.2",
36 | "mutate-fs": "^2.1.1",
37 | "require-inject": "^1.4.4",
38 | "rimraf": "^2.7.1",
39 | "tap": "^14.11.0",
40 | "tar-fs": "^1.16.3",
41 | "tar-stream": "^1.6.2"
42 | },
43 | "license": "ISC",
44 | "engines": {
45 | "node": ">=4.5"
46 | },
47 | "files": [
48 | "index.js",
49 | "lib/"
50 | ],
51 | "tap": {
52 | "coverage-map": "map.js",
53 | "check-coverage": true
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/node_modules/tr46/.npmignore:
--------------------------------------------------------------------------------
1 | scripts/
2 | test/
3 |
4 | !lib/mapping_table.json
5 |
--------------------------------------------------------------------------------
/node_modules/tr46/lib/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/node_modules/tr46/lib/.gitkeep
--------------------------------------------------------------------------------
/node_modules/tr46/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tr46",
3 | "version": "0.0.3",
4 | "description": "An implementation of the Unicode TR46 spec",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "mocha",
8 | "pretest": "node scripts/getLatestUnicodeTests.js",
9 | "prepublish": "node scripts/generateMappingTable.js"
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "git+https://github.com/Sebmaster/tr46.js.git"
14 | },
15 | "keywords": [
16 | "unicode",
17 | "tr46",
18 | "url",
19 | "whatwg"
20 | ],
21 | "author": "Sebastian Mayr ",
22 | "license": "MIT",
23 | "bugs": {
24 | "url": "https://github.com/Sebmaster/tr46.js/issues"
25 | },
26 | "homepage": "https://github.com/Sebmaster/tr46.js#readme",
27 | "devDependencies": {
28 | "mocha": "^2.2.5",
29 | "request": "^2.57.0"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/node_modules/webidl-conversions/LICENSE.md:
--------------------------------------------------------------------------------
1 | # The BSD 2-Clause License
2 |
3 | Copyright (c) 2014, Domenic Denicola
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
7 |
8 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
9 |
10 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
11 |
12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13 |
--------------------------------------------------------------------------------
/node_modules/webidl-conversions/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "webidl-conversions",
3 | "version": "3.0.1",
4 | "description": "Implements the WebIDL algorithms for converting to and from JavaScript values",
5 | "main": "lib/index.js",
6 | "scripts": {
7 | "test": "mocha test/*.js"
8 | },
9 | "repository": "jsdom/webidl-conversions",
10 | "keywords": [
11 | "webidl",
12 | "web",
13 | "types"
14 | ],
15 | "files": [
16 | "lib/"
17 | ],
18 | "author": "Domenic Denicola (https://domenic.me/)",
19 | "license": "BSD-2-Clause",
20 | "devDependencies": {
21 | "mocha": "^1.21.4"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/node_modules/whatwg-url/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015–2016 Sebastian Mayr
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/whatwg-url/lib/public-api.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | exports.URL = require("./URL").interface;
4 | exports.serializeURL = require("./url-state-machine").serializeURL;
5 | exports.serializeURLOrigin = require("./url-state-machine").serializeURLOrigin;
6 | exports.basicURLParse = require("./url-state-machine").basicURLParse;
7 | exports.setTheUsername = require("./url-state-machine").setTheUsername;
8 | exports.setThePassword = require("./url-state-machine").setThePassword;
9 | exports.serializeHost = require("./url-state-machine").serializeHost;
10 | exports.serializeInteger = require("./url-state-machine").serializeInteger;
11 | exports.parseURL = require("./url-state-machine").parseURL;
12 |
--------------------------------------------------------------------------------
/node_modules/whatwg-url/lib/utils.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | module.exports.mixin = function mixin(target, source) {
4 | const keys = Object.getOwnPropertyNames(source);
5 | for (let i = 0; i < keys.length; ++i) {
6 | Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
7 | }
8 | };
9 |
10 | module.exports.wrapperSymbol = Symbol("wrapper");
11 | module.exports.implSymbol = Symbol("impl");
12 |
13 | module.exports.wrapperForImpl = function (impl) {
14 | return impl[module.exports.wrapperSymbol];
15 | };
16 |
17 | module.exports.implForWrapper = function (wrapper) {
18 | return wrapper[module.exports.implSymbol];
19 | };
20 |
21 |
--------------------------------------------------------------------------------
/node_modules/whatwg-url/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "whatwg-url",
3 | "version": "5.0.0",
4 | "description": "An implementation of the WHATWG URL Standard's URL API and parsing machinery",
5 | "main": "lib/public-api.js",
6 | "files": [
7 | "lib/"
8 | ],
9 | "author": "Sebastian Mayr ",
10 | "license": "MIT",
11 | "repository": "jsdom/whatwg-url",
12 | "dependencies": {
13 | "tr46": "~0.0.3",
14 | "webidl-conversions": "^3.0.0"
15 | },
16 | "devDependencies": {
17 | "eslint": "^2.6.0",
18 | "istanbul": "~0.4.3",
19 | "mocha": "^2.2.4",
20 | "recast": "~0.10.29",
21 | "request": "^2.55.0",
22 | "webidl2js": "^3.0.2"
23 | },
24 | "scripts": {
25 | "build": "node scripts/transform.js && node scripts/convert-idl.js",
26 | "coverage": "istanbul cover node_modules/mocha/bin/_mocha",
27 | "lint": "eslint .",
28 | "prepublish": "npm run build",
29 | "pretest": "node scripts/get-latest-platform-tests.js && npm run build",
30 | "test": "mocha"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/node_modules/wrappy/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/node_modules/wrappy/README.md:
--------------------------------------------------------------------------------
1 | # wrappy
2 |
3 | Callback wrapping utility
4 |
5 | ## USAGE
6 |
7 | ```javascript
8 | var wrappy = require("wrappy")
9 |
10 | // var wrapper = wrappy(wrapperFunction)
11 |
12 | // make sure a cb is called only once
13 | // See also: http://npm.im/once for this specific use case
14 | var once = wrappy(function (cb) {
15 | var called = false
16 | return function () {
17 | if (called) return
18 | called = true
19 | return cb.apply(this, arguments)
20 | }
21 | })
22 |
23 | function printBoo () {
24 | console.log('boo')
25 | }
26 | // has some rando property
27 | printBoo.iAmBooPrinter = true
28 |
29 | var onlyPrintOnce = once(printBoo)
30 |
31 | onlyPrintOnce() // prints 'boo'
32 | onlyPrintOnce() // does nothing
33 |
34 | // random property is retained!
35 | assert.equal(onlyPrintOnce.iAmBooPrinter, true)
36 | ```
37 |
--------------------------------------------------------------------------------
/node_modules/wrappy/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wrappy",
3 | "version": "1.0.2",
4 | "description": "Callback wrapping utility",
5 | "main": "wrappy.js",
6 | "files": [
7 | "wrappy.js"
8 | ],
9 | "directories": {
10 | "test": "test"
11 | },
12 | "dependencies": {},
13 | "devDependencies": {
14 | "tap": "^2.3.1"
15 | },
16 | "scripts": {
17 | "test": "tap --coverage test/*.js"
18 | },
19 | "repository": {
20 | "type": "git",
21 | "url": "https://github.com/npm/wrappy"
22 | },
23 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
24 | "license": "ISC",
25 | "bugs": {
26 | "url": "https://github.com/npm/wrappy/issues"
27 | },
28 | "homepage": "https://github.com/npm/wrappy"
29 | }
30 |
--------------------------------------------------------------------------------
/node_modules/wrappy/wrappy.js:
--------------------------------------------------------------------------------
1 | // Returns a wrapper function that returns a wrapped callback
2 | // The wrapper function should do some stuff, and return a
3 | // presumably different callback function.
4 | // This makes sure that own properties are retained, so that
5 | // decorations and such are not lost along the way.
6 | module.exports = wrappy
7 | function wrappy (fn, cb) {
8 | if (fn && cb) return wrappy(fn)(cb)
9 |
10 | if (typeof fn !== 'function')
11 | throw new TypeError('need wrapper function')
12 |
13 | Object.keys(fn).forEach(function (k) {
14 | wrapper[k] = fn[k]
15 | })
16 |
17 | return wrapper
18 |
19 | function wrapper() {
20 | var args = new Array(arguments.length)
21 | for (var i = 0; i < args.length; i++) {
22 | args[i] = arguments[i]
23 | }
24 | var ret = fn.apply(this, args)
25 | var cb = args[args.length-1]
26 | if (typeof ret === 'function' && ret !== cb) {
27 | Object.keys(cb).forEach(function (k) {
28 | ret[k] = cb[k]
29 | })
30 | }
31 | return ret
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/node_modules/yallist/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/node_modules/yallist/iterator.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = function (Yallist) {
3 | Yallist.prototype[Symbol.iterator] = function* () {
4 | for (let walker = this.head; walker; walker = walker.next) {
5 | yield walker.value
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/node_modules/yallist/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "yallist",
3 | "version": "3.1.1",
4 | "description": "Yet Another Linked List",
5 | "main": "yallist.js",
6 | "directories": {
7 | "test": "test"
8 | },
9 | "files": [
10 | "yallist.js",
11 | "iterator.js"
12 | ],
13 | "dependencies": {},
14 | "devDependencies": {
15 | "tap": "^12.1.0"
16 | },
17 | "scripts": {
18 | "test": "tap test/*.js --100",
19 | "preversion": "npm test",
20 | "postversion": "npm publish",
21 | "postpublish": "git push origin --all; git push origin --tags"
22 | },
23 | "repository": {
24 | "type": "git",
25 | "url": "git+https://github.com/isaacs/yallist.git"
26 | },
27 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
28 | "license": "ISC"
29 | }
30 |
--------------------------------------------------------------------------------
/node_modules/yauzl/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Josh Wolfe
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/node_modules/yauzl/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "yauzl",
3 | "version": "2.10.0",
4 | "description": "yet another unzip library for node",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "node test/test.js",
8 | "test-cov": "istanbul cover test/test.js",
9 | "test-travis": "istanbul cover --report lcovonly test/test.js"
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "https://github.com/thejoshwolfe/yauzl.git"
14 | },
15 | "keywords": [
16 | "unzip",
17 | "zip",
18 | "stream",
19 | "archive",
20 | "file"
21 | ],
22 | "author": "Josh Wolfe ",
23 | "license": "MIT",
24 | "bugs": {
25 | "url": "https://github.com/thejoshwolfe/yauzl/issues"
26 | },
27 | "homepage": "https://github.com/thejoshwolfe/yauzl",
28 | "dependencies": {
29 | "fd-slicer": "~1.1.0",
30 | "buffer-crc32": "~0.2.3"
31 | },
32 | "devDependencies": {
33 | "bl": "~1.0.0",
34 | "istanbul": "~0.3.4",
35 | "pend": "~1.2.0"
36 | },
37 | "files": [
38 | "index.js"
39 | ]
40 | }
41 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "bin": {"perf-sheet": "jdeploy-bundle/jdeploy.js"},
3 | "author": "theapache64",
4 | "description": "A tool that analyzes your method trace file and generates the analysis in a spreadsheet",
5 | "main": "index.js",
6 | "preferGlobal": true,
7 | "repository": "https://github.com/theapache64/perf-sheet",
8 | "version": "0.0.9",
9 | "jdeploy": {
10 | "jdk": false,
11 | "javaVersion": "17",
12 | "jar": "perf-sheet.main.jar",
13 | "javafx": false,
14 | "title": "perf-sheet"
15 | },
16 | "dependencies": {
17 | "command-exists-promise": "^2.0.2",
18 | "node-fetch": "2.6.7",
19 | "tar": "^4.4.8",
20 | "yauzl": "^2.10.0",
21 | "shelljs": "^0.8.4"
22 | },
23 | "license": "ISC",
24 | "name": "perf-sheet",
25 | "files": ["jdeploy-bundle"],
26 | "scripts": {"test": "echo \"Error: no test specified\" && exit 1"}
27 | }
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | gradlePluginPortal()
6 | }
7 |
8 | }
9 |
10 | rootProject.name = "perf-sheet"
11 | include("trace-parser")
12 |
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/app/App.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.app
2 |
3 | import com.theapache64.cyclone.core.Application
4 | import io.github.theapache64.perfsheet.di.AppComponent
5 | import io.github.theapache64.perfsheet.di.DaggerAppComponent
6 | import io.github.theapache64.perfsheet.ui.splash.SplashActivity
7 | import javax.inject.Inject
8 |
9 |
10 | /**
11 | * Application class
12 | */
13 | class App : Application() {
14 |
15 | companion object {
16 | var args: Array? = null
17 | lateinit var di: AppComponent
18 | }
19 |
20 | @Inject
21 | lateinit var appController: AppController
22 |
23 | override fun onCreate() {
24 | super.onCreate()
25 | di = DaggerAppComponent.create()
26 | di.inject(this)
27 |
28 | appController.onArgs(args)
29 |
30 | val splashIntent = SplashActivity.getStartIntent()
31 | startActivity(splashIntent)
32 | }
33 | }
34 |
35 | /**
36 | * Entry point
37 | */
38 | fun main(args: Array) {
39 | App.args = args
40 | App().onCreate()
41 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/app/AppController.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.app
2 |
3 | import io.github.theapache64.perfsheet.data.repo.AppRepo
4 | import javax.inject.Inject
5 | import javax.inject.Singleton
6 |
7 | @Singleton
8 | class AppController @Inject constructor(
9 | private val appRepo: AppRepo,
10 | ) {
11 | fun onArgs(args: Array?) {
12 | appRepo.args = args?.toList()
13 | }
14 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/core/TraceLogger.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.core
2 |
3 | import io.github.theapache64.perfsheet.traceparser.core.AppLogger
4 | import javax.inject.Inject
5 | import javax.inject.Singleton
6 |
7 | @Singleton
8 | class TraceLogger @Inject constructor(
9 | var isDebug: Boolean
10 | ) : AppLogger {
11 | override fun d(msg: String) {
12 | if (isDebug) {
13 | println("debug: $msg")
14 | }
15 | }
16 |
17 | override fun e(msg: String) {
18 | if (isDebug) {
19 | println("error: $msg")
20 | }
21 | }
22 |
23 | override fun e(msg: String, t: Throwable) {
24 | if (isDebug) {
25 | println("error: $msg : ${t.message}")
26 | }
27 | }
28 |
29 | override fun w(msg: String) {
30 | if (isDebug) {
31 | println("warning: $msg")
32 | }
33 | }
34 |
35 | override fun i(msg: String) {
36 | if (isDebug) {
37 | println("info: $msg")
38 | }
39 | }
40 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/core/filter/AnonFilter.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.core.filter
2 |
3 |
4 | class AnonFilter : Filter() {
5 | private fun removeAnon(name: String): String {
6 | return name.replace(".", "")
7 | }
8 |
9 | override fun apply(methodName: String): String {
10 | return removeAnon(methodName)
11 | }
12 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/core/filter/Filter.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.core.filter
2 |
3 | abstract class Filter {
4 | abstract fun apply(methodName: String): String?
5 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/core/filter/FrameFilter.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.core.filter
2 |
3 |
4 | class FrameFilter : Filter() {
5 | override fun apply(methodName: String): String? {
6 | return if (methodName == "android.view.Choreographer.doFrame") methodName else null
7 | }
8 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/core/filter/FrameworkCallsFilter.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.core.filter
2 |
3 | class FrameworkCallsFilter : Filter() {
4 | companion object {
5 | private val blackList = listOf(
6 | "androidx.compose.",
7 | "android.",
8 | "com.android.internal.",
9 | "java.",
10 | "kotlinx.",
11 | "kotlin.",
12 | "sun.",
13 | "dalvik.",
14 | "Choreographer#",
15 | "HWUI:",
16 | "Compose:",
17 | "Recomposer:",
18 | "AndroidOwner:",
19 | "draw",
20 | "animation",
21 | "layout",
22 | "traversal",
23 | "measure",
24 | "Record View#draw\\(\\)"
25 | ).joinToString(separator = "|", prefix = "^(", postfix = ").*").toRegex()
26 |
27 | private val whiteList = listOf(
28 | "android.app.ActivityThread.handleBindApplication",
29 | "android.app.ActivityThread.installContentProviders",
30 | "android.app.Activity.perform", // this will match onCreate, onStart, onResume, etc
31 | "androidx.lifecycle.ViewModelProvider.get", // viewModel query time
32 | ).joinToString(separator = "|", prefix = "^(", postfix = ").*")
33 | .toRegex()
34 | }
35 |
36 | override fun apply(methodName: String): String? {
37 | val shouldSkipMethodName = blackList.matches(methodName) && !whiteList.matches(methodName)
38 | return if (shouldSkipMethodName) null else methodName
39 | }
40 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/core/filter/LastHyphenFilter.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.core.filter
2 |
3 | class LastHyphenFilter : Filter() {
4 | override fun apply(methodName: String): String {
5 | return removeLastHyphen(methodName)
6 | }
7 |
8 | private fun removeLastHyphen(name: String): String {
9 | val hyphenIndex = name.lastIndexOf('-')
10 | if (hyphenIndex == -1) return name
11 | return name.substring(0, hyphenIndex)
12 | }
13 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/core/filter/LineNoFilter.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.core.filter
2 |
3 | class LineNoFilter : Filter() {
4 | companion object {
5 | private val lineNoRegEx = "^(?.+) (?\\(.+:\\d+\\))\$".toRegex()
6 | }
7 |
8 | private fun removeLineNoFromRowName(name: String): String {
9 | val result = lineNoRegEx.find(name)
10 | var newName = name
11 | if (result != null) {
12 | newName = result.groupValues.getOrNull(1) ?: name
13 | }
14 |
15 | if (newName.contains("$1")) {
16 | newName = newName.substring(0, newName.indexOf("\$1"))
17 | }
18 |
19 | return newName
20 | }
21 |
22 | override fun apply(methodName: String): String {
23 | return removeLineNoFromRowName(methodName)
24 | }
25 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/data/repo/AppRepo.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.data.repo
2 |
3 | import javax.inject.Inject
4 | import javax.inject.Singleton
5 |
6 | interface AppRepo {
7 | var args: List?
8 | }
9 |
10 | @Singleton
11 | class AppRepoImpl @Inject constructor() : AppRepo {
12 | override var args: List? = null
13 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/di/AppComponent.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.di
2 |
3 | import dagger.Component
4 | import io.github.theapache64.perfsheet.app.App
5 | import io.github.theapache64.perfsheet.di.module.RepoModule
6 | import io.github.theapache64.perfsheet.di.module.TraceParserModule
7 | import io.github.theapache64.perfsheet.ui.analyze.AnalyzeActivity
8 | import io.github.theapache64.perfsheet.ui.splash.SplashActivity
9 | import javax.inject.Singleton
10 |
11 |
12 | @Singleton
13 | @Component(
14 | modules = [
15 | RepoModule::class,
16 | TraceParserModule::class
17 | ]
18 | )
19 | interface AppComponent {
20 | fun inject(app: App)
21 | fun inject(splashActivity: SplashActivity)
22 | fun inject(analyzeActivity: AnalyzeActivity)
23 | }
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/di/module/RepoModule.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.di.module
2 |
3 | import dagger.Binds
4 | import dagger.Module
5 | import io.github.theapache64.perfsheet.data.repo.AppRepo
6 | import io.github.theapache64.perfsheet.data.repo.AppRepoImpl
7 | import io.github.theapache64.perfsheet.data.repo.ExcelRepo
8 | import io.github.theapache64.perfsheet.data.repo.ExcelRepoImpl
9 | import io.github.theapache64.perfsheet.data.repo.TraceRepo
10 | import io.github.theapache64.perfsheet.data.repo.TraceRepoImpl
11 |
12 | @Module
13 | abstract class RepoModule {
14 | @Binds
15 | abstract fun bindAppRepo(appRepo: AppRepoImpl): AppRepo
16 |
17 | @Binds
18 | abstract fun bindTraceRepo(traceRepo: TraceRepoImpl): TraceRepo
19 |
20 | @Binds
21 | abstract fun bindExcelRepo(excelRepo: ExcelRepoImpl): ExcelRepo
22 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/di/module/TraceParserModule.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.di.module
2 |
3 | import dagger.Module
4 | import dagger.Provides
5 | import io.github.theapache64.perfsheet.core.TraceLogger
6 | import io.github.theapache64.perfsheet.traceparser.analyzer.TraceAnalyzer
7 | import io.github.theapache64.perfsheet.traceparser.core.AppLogger
8 | import javax.inject.Singleton
9 |
10 | @Module
11 | class TraceParserModule {
12 |
13 | @Singleton
14 | @Provides
15 | fun provideAppLogger(): AppLogger {
16 | return TraceLogger(isDebug = false)
17 | }
18 |
19 | @Singleton
20 | @Provides
21 | fun provideTraceAnalyzer(
22 | appLogger: AppLogger
23 | ): TraceAnalyzer {
24 | return TraceAnalyzer(appLogger)
25 | }
26 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/model/Method.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.model
2 |
3 | data class Method(
4 | var name: String,
5 | val nodes: MutableList,
6 | )
7 |
8 |
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/model/Node.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.model
2 |
3 | data class Node(
4 | val threadName: String,
5 | val durationInMs: Long
6 | )
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/model/ResultRow.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.model
2 |
3 | sealed interface ResultRow {
4 | data class SingleTrace(
5 | val name: String,
6 | val durationInMs: Long,
7 | val count: Int,
8 | val threadDetails: List,
9 | var comparison: String?
10 | ) : ResultRow
11 |
12 | data class DualTrace(
13 | val name: String,
14 | val beforeDurationInMs: Long,
15 | val afterDurationInMs: Long,
16 | val diffInMs: Long,
17 | val beforeCount: Int,
18 | val afterCount: Int,
19 | val countComparison: Int,
20 | val beforeThreadDetails: List,
21 | val afterThreadDetails: List,
22 | var beforeComparison: String?,
23 | var afterComparison: String?
24 | ) : ResultRow
25 |
26 | data class SingleFrame(
27 | val name: String,
28 | val durationInMs: Long,
29 | ) : ResultRow
30 |
31 | data class DualFrame(
32 | val name: String,
33 | val beforeDurationInMs: Long,
34 | val afterDurationInMs: Long,
35 | val diffInMs: Long,
36 | ) : ResultRow
37 | }
38 |
39 |
40 | data class ThreadDetail(
41 | val threadName: String,
42 | var noOfBlocks: Int,
43 | var totalDurationInMs: Double,
44 | )
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/model/SheetHeading.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.model
2 |
3 | data class Heading(
4 | val title: String,
5 | val colWidth: Int
6 | )
7 |
8 | val dualTraceHeadings = listOf(
9 | Heading("Method Name", 60),
10 | Heading("Before (ms)", 13),
11 | Heading("After (ms)", 13),
12 | Heading("Diff (ms)", 12),
13 | Heading("Before count", 13),
14 | Heading("After count", 13),
15 | Heading("Count diff", 18),
16 | Heading("Before summary", 60),
17 | Heading("After summary", 60)
18 | )
19 |
20 | val singleTraceHeadings = listOf(
21 | Heading("Method Name", 60),
22 | Heading("Duration (ms)", 13),
23 | Heading("Count", 13),
24 | Heading("Summary", 60)
25 | )
26 |
27 | val dualFrameHeadings = listOf(
28 | Heading("Frame#", 60),
29 | Heading("Before (ms)", 13),
30 | Heading("After (ms)", 13),
31 | Heading("Diff (ms)", 13)
32 |
33 | )
34 |
35 | val singleFrameHeadings = listOf(
36 | Heading("Frame#", 60 ),
37 | Heading("Duration (ms)", 13),
38 | )
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/ui/analyze/AnalyzeActivity.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.ui.analyze
2 |
3 | import com.theapache64.cyclone.core.Activity
4 | import com.theapache64.cyclone.core.Intent
5 | import io.github.theapache64.perfsheet.app.App
6 | import javax.inject.Inject
7 |
8 | class AnalyzeActivity : Activity() {
9 | companion object {
10 | fun getStartIntent(): Intent {
11 | return Intent(AnalyzeActivity::class)
12 | }
13 | }
14 |
15 | @Inject
16 | lateinit var viewModel: AnalyzeViewModel
17 |
18 | override fun onCreate() {
19 | super.onCreate()
20 | App.di.inject(this)
21 |
22 | viewModel.statusMsg.observe { statusMsg ->
23 | println(statusMsg)
24 | }
25 |
26 | viewModel.init()
27 | }
28 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/ui/splash/SplashActivity.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.ui.splash
2 |
3 | import com.theapache64.cyclone.core.Activity
4 | import com.theapache64.cyclone.core.Intent
5 | import io.github.theapache64.perfsheet.app.App
6 | import io.github.theapache64.perfsheet.ui.analyze.AnalyzeActivity
7 | import javax.inject.Inject
8 |
9 | class SplashActivity : Activity() {
10 | companion object {
11 | fun getStartIntent(): Intent {
12 | return Intent(SplashActivity::class).apply {
13 | }
14 | }
15 | }
16 |
17 | @Inject
18 | lateinit var viewModel: SplashViewModel
19 |
20 |
21 | override fun onCreate() {
22 | super.onCreate()
23 | App.di.inject(this)
24 |
25 | with(viewModel) {
26 | welcomeMsg.observe {
27 | println(it)
28 | }
29 |
30 | goToHome.observe { splashMsg ->
31 | startActivity(
32 | intent = AnalyzeActivity.getStartIntent()
33 | )
34 | }
35 | }
36 |
37 | }
38 | }
--------------------------------------------------------------------------------
/src/main/kotlin/io/github/theapache64/perfsheet/ui/splash/SplashViewModel.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.ui.splash
2 |
3 | import com.theapache64.cyclone.core.livedata.LiveData
4 | import com.theapache64.cyclone.core.livedata.MutableLiveData
5 | import javax.inject.Inject
6 |
7 | class SplashViewModel @Inject constructor() {
8 | companion object {
9 | private const val VERSION = "0.0.9"
10 | }
11 |
12 | private val _welcomeMsg = MutableLiveData()
13 | val welcomeMsg: LiveData = _welcomeMsg
14 |
15 | private val _goToHome = MutableLiveData()
16 | val goToHome: LiveData = _goToHome
17 |
18 | init {
19 | val splashMsg = "perf-sheet ($VERSION)"
20 | _welcomeMsg.value = splashMsg
21 | _goToHome.value = splashMsg
22 | }
23 |
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/resources/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/src/main/resources/.gitkeep
--------------------------------------------------------------------------------
/src/test/kotlin/io/github/theapache64/perfsheet/TestAppComponent.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet
2 |
3 | import dagger.Component
4 | import io.github.theapache64.perfsheet.data.repo.TraceRepoImplTest
5 | import io.github.theapache64.perfsheet.di.module.RepoModule
6 | import io.github.theapache64.perfsheet.di.module.TraceParserModule
7 | import io.github.theapache64.perfsheet.ui.analyze.AnalyzeViewModelTest
8 | import javax.inject.Singleton
9 |
10 |
11 | @Singleton
12 | @Component(
13 | modules = [
14 | RepoModule::class,
15 | TraceParserModule::class
16 | ]
17 | )
18 | interface TestAppComponent {
19 | fun inject(analyzeViewModelTest: AnalyzeViewModelTest)
20 | fun inject(traceRepoImplTest: TraceRepoImplTest)
21 | }
--------------------------------------------------------------------------------
/src/test/kotlin/io/github/theapache64/perfsheet/ui/analyze/AnalyzeViewModelTest.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.ui.analyze
2 |
3 | import io.github.theapache64.perfsheet.DaggerTestAppComponent
4 | import io.github.theapache64.perfsheet.data.repo.AppRepo
5 | import io.github.theapache64.perfsheet.data.repo.ExcelRepo
6 | import io.github.theapache64.perfsheet.data.repo.TraceRepo
7 | import io.mockk.every
8 | import io.mockk.mockk
9 | import org.junit.jupiter.api.Assertions.assertEquals
10 | import org.junit.jupiter.api.BeforeEach
11 | import org.junit.jupiter.api.Test
12 | import javax.inject.Inject
13 |
14 |
15 | class AnalyzeViewModelTest {
16 |
17 | @Inject
18 | lateinit var analyzeViewModel: AnalyzeViewModel
19 |
20 | @Inject
21 | lateinit var traceRepo: TraceRepo
22 |
23 | @Inject
24 | lateinit var excelRepo: ExcelRepo
25 |
26 | @BeforeEach
27 | fun before() {
28 | DaggerTestAppComponent.create().inject(this)
29 |
30 | val fakeAppRepo = mockk()
31 | every { fakeAppRepo.args } returns listOf(
32 | "/Users/theapache64/Desktop/perf-sheet/before.trace", // TODO: add some other traces to repo
33 | "/Users/theapache64/Desktop/perf-sheet/after.trace"
34 | )
35 | analyzeViewModel = AnalyzeViewModel(fakeAppRepo, traceRepo, excelRepo)
36 | }
37 |
38 | @Test
39 | fun parseTest() {
40 | analyzeViewModel.statusMsg.observe {
41 | assertEquals(AnalyzeViewModel.SUCCESS_MSG, it)
42 | }
43 | }
44 | }
--------------------------------------------------------------------------------
/src/test/resources/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/src/test/resources/.gitkeep
--------------------------------------------------------------------------------
/trace-parser/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | kotlin("jvm")
3 | }
4 |
5 | group = "io.github.theapache64.perfsheet"
6 | version = "1.0-SNAPSHOT"
7 |
8 | repositories {
9 | google()
10 | mavenCentral()
11 | maven { url = uri("https://jitpack.io") }
12 | }
13 |
14 | dependencies {
15 | implementation("com.github.Grishberg:mvtrace-dependencies:1.0.1")
16 |
17 | testImplementation("org.jetbrains.kotlin:kotlin-test")
18 | }
19 |
20 | tasks.test {
21 | useJUnitPlatform()
22 | }
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/analyzer/AnalyzerResultImpl.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.analyzer
2 |
3 | import io.github.theapache64.perfsheet.traceparser.core.AnalyzerResult
4 | import io.github.theapache64.perfsheet.traceparser.core.ProfileData
5 | import kotlin.math.max
6 |
7 | data class AnalyzerResultImpl(
8 | override val threadTimeBounds: Map,
9 | override val globalTimeBounds: Map,
10 | override val maxLevel: Int,
11 | internal val mutableData: MutableMap>,
12 | override val threads: List,
13 | override val mainThreadId: Int,
14 | override val startTimeUs: Long = -1,
15 | ) : AnalyzerResult {
16 | override val data: Map>
17 | get() = mutableData
18 | }
19 |
20 | /**
21 | * Calculates maximum global time in trace.
22 | */
23 | fun AnalyzerResult.calculateMaxGlobalTime(): Double {
24 | var maxGlobalTime = 0.0
25 | for (bound in this.globalTimeBounds) {
26 | maxGlobalTime = max(maxGlobalTime, bound.value.maxTime)
27 | }
28 | return maxGlobalTime
29 | }
30 |
31 | fun AnalyzerResult.calculateMaxThreadTime(): Double {
32 | var maxThreadTime = 0.0
33 | for (bound in this.threadTimeBounds) {
34 | maxThreadTime = max(maxThreadTime, bound.value.maxTime)
35 | }
36 | return maxThreadTime
37 | }
38 |
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/analyzer/MethodData.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.analyzer
2 |
3 | data class MethodData(
4 | val fullName: String,
5 | val className: String,
6 | val methodName: String
7 | )
8 |
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/analyzer/MethodsAndClasses.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.analyzer
2 |
3 | class MethodsAndClasses {
4 | private val emptyData = MethodData("", "", "")
5 | private val data = mutableMapOf()
6 |
7 | fun put(id: Long, newElement: MethodData) {
8 | data[id] = newElement
9 | }
10 |
11 | fun getFullNameById(id: Long): String {
12 | return data.getOrDefault(id, emptyData).fullName
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/analyzer/ThreadItemImpl.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.analyzer
2 |
3 | import io.github.theapache64.perfsheet.traceparser.core.ThreadItem
4 |
5 | class ThreadItemImpl(
6 | override val name: String,
7 | override val threadId: Int
8 | ) : ThreadItem {
9 | override fun toString() = name
10 | }
11 |
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/analyzer/ThreadTimeBoundsImpl.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.analyzer
2 |
3 | import io.github.theapache64.perfsheet.traceparser.core.ThreadTimeBounds
4 |
5 | data class ThreadTimeBoundsImpl(
6 | override var minTime: Double = Double.MAX_VALUE,
7 | override var maxTime: Double = 0.0
8 | ) : ThreadTimeBounds
9 |
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/analyzer/converter/NameConverter.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.analyzer.converter
2 |
3 | /**
4 | * Converts class names and class methods names.
5 | * For example converts obfuscated names to original names.
6 | */
7 | interface NameConverter {
8 | fun convertClassName(sourceClassName: String): String
9 | fun convertMethodName(className: String, sourceMethodName: String, type: String?): String
10 | }
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/analyzer/converter/NoOpNameConverter.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.analyzer.converter
2 |
3 | object NoOpNameConverter : NameConverter {
4 | override fun convertClassName(sourceClassName: String) = sourceClassName
5 |
6 | override fun convertMethodName(className: String, sourceMethodName: String, type: String?) = sourceMethodName
7 | }
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/core/AnalyzerResult.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.core
2 |
3 | interface AnalyzerResult {
4 | val threadTimeBounds: Map
5 | val globalTimeBounds: Map
6 | val maxLevel: Int
7 | val data: Map>
8 | val threads: List
9 | val mainThreadId: Int
10 | val startTimeUs: Long // start recording time in System.upTimeInMs()
11 | }
12 |
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/core/AppLogger.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.core
2 |
3 | interface AppLogger {
4 | fun d(msg: String)
5 | fun e(msg: String)
6 | fun e(msg: String, t: Throwable)
7 | fun w(msg: String)
8 | fun i(msg: String)
9 | }
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/core/ProfileData.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.core
2 |
3 | interface ProfileData {
4 | val name: String
5 | val level: Int
6 | val threadStartTimeInMillisecond: Double
7 | val globalStartTimeInMillisecond: Double
8 | val threadEndTimeInMillisecond: Double
9 | val globalEndTimeInMillisecond: Double
10 | val threadSelfTime: Double
11 | val globalSelfTime: Double
12 | val parent: ProfileData?
13 | val children: List
14 | }
15 |
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/core/ThreadItem.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.core
2 |
3 | interface ThreadItem {
4 | val name: String
5 | val threadId: Int
6 | }
7 |
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/core/ThreadTimeBounds.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.core
2 |
3 | interface ThreadTimeBounds {
4 | val minTime: Double
5 | val maxTime: Double
6 | }
7 |
--------------------------------------------------------------------------------
/trace-parser/src/main/kotlin/io/github/theapache64/perfsheet/traceparser/core/TraceReader.kt:
--------------------------------------------------------------------------------
1 | package io.github.theapache64.perfsheet.traceparser.core
2 |
3 | import java.io.File
4 |
5 | interface TraceReader {
6 | fun readTraceFile(traceFile: File): AnalyzerResult
7 | }
8 |
--------------------------------------------------------------------------------
/trace-parser/src/main/resources/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/trace-parser/src/main/resources/.gitkeep
--------------------------------------------------------------------------------
/trace-parser/src/test/kotlin/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/trace-parser/src/test/kotlin/.gitkeep
--------------------------------------------------------------------------------
/trace-parser/src/test/resources/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/theapache64/perf-sheet/bb96d66bd4b3b3eca82f6744014c5c739f5da6de/trace-parser/src/test/resources/.gitkeep
--------------------------------------------------------------------------------