projen 0.92.10 → 0.92.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +13752 -324
- package/lib/awscdk/auto-discover.js +5 -5
- package/lib/awscdk/awscdk-app-java.js +1 -1
- package/lib/awscdk/awscdk-app-py.js +1 -1
- package/lib/awscdk/awscdk-app-ts.js +3 -3
- package/lib/awscdk/awscdk-construct.js +2 -2
- package/lib/awscdk/awscdk-deps-java.js +1 -1
- package/lib/awscdk/awscdk-deps-js.js +1 -1
- package/lib/awscdk/awscdk-deps-py.js +1 -1
- package/lib/awscdk/awscdk-deps.js +1 -1
- package/lib/awscdk/cdk-config.js +1 -1
- package/lib/awscdk/cdk-tasks.js +1 -1
- package/lib/awscdk/integration-test.js +1 -1
- package/lib/awscdk/lambda-extension.js +1 -1
- package/lib/awscdk/lambda-function.js +2 -2
- package/lib/build/build-workflow.js +1 -1
- package/lib/cdk/auto-discover-base.js +4 -4
- package/lib/cdk/construct-lib.js +1 -1
- package/lib/cdk/integration-test-base.js +1 -1
- package/lib/cdk/jsii-docgen.js +1 -1
- package/lib/cdk/jsii-project.js +1 -1
- package/lib/cdk8s/auto-discover.js +2 -2
- package/lib/cdk8s/cdk8s-app-py.js +1 -1
- package/lib/cdk8s/cdk8s-app-ts.js +1 -1
- package/lib/cdk8s/cdk8s-construct.js +1 -1
- package/lib/cdk8s/cdk8s-deps-py.js +1 -1
- package/lib/cdk8s/cdk8s-deps.js +1 -1
- package/lib/cdk8s/integration-test.js +1 -1
- package/lib/cdktf/cdktf-construct.js +1 -1
- package/lib/circleci/circleci.js +1 -1
- package/lib/cleanup.js +4 -3
- package/lib/component.js +1 -1
- package/lib/dependencies.js +1 -1
- package/lib/dev-env.js +1 -1
- package/lib/docker-compose/docker-compose-service.js +1 -1
- package/lib/docker-compose/docker-compose.js +1 -1
- package/lib/file.js +1 -1
- package/lib/gitattributes.js +1 -1
- package/lib/github/actions-provider.js +1 -1
- package/lib/github/auto-approve.js +1 -1
- package/lib/github/auto-merge.js +1 -1
- package/lib/github/auto-queue.js +1 -1
- package/lib/github/dependabot.js +1 -1
- package/lib/github/github-credentials.js +1 -1
- package/lib/github/github-project.js +1 -1
- package/lib/github/github.js +1 -1
- package/lib/github/merge-queue.js +1 -1
- package/lib/github/mergify.js +1 -1
- package/lib/github/pr-template.js +1 -1
- package/lib/github/pull-request-backport.js +1 -1
- package/lib/github/pull-request-lint.js +1 -1
- package/lib/github/stale.js +1 -1
- package/lib/github/task-workflow-job.js +1 -1
- package/lib/github/task-workflow.js +1 -1
- package/lib/github/workflow-actions.js +1 -1
- package/lib/github/workflow-jobs.js +1 -1
- package/lib/github/workflow-steps.js +1 -1
- package/lib/github/workflows.js +1 -1
- package/lib/gitlab/configuration.js +1 -1
- package/lib/gitlab/gitlab-configuration.js +1 -1
- package/lib/gitlab/nested-configuration.js +1 -1
- package/lib/gitpod.js +1 -1
- package/lib/ignore-file.js +1 -1
- package/lib/ini.js +1 -1
- package/lib/java/java-project.js +1 -1
- package/lib/java/junit.js +1 -1
- package/lib/java/maven-compile.js +1 -1
- package/lib/java/maven-packaging.js +1 -1
- package/lib/java/maven-sample.js +1 -1
- package/lib/java/pom.js +2 -2
- package/lib/java/projenrc.js +1 -1
- package/lib/javascript/biome/biome-config.d.ts +2522 -0
- package/lib/javascript/biome/biome-config.js +10 -0
- package/lib/javascript/biome/biome.d.ts +67 -0
- package/lib/javascript/biome/biome.js +128 -0
- package/lib/javascript/bundler.js +1 -1
- package/lib/javascript/eslint.js +1 -1
- package/lib/javascript/index.d.ts +2 -0
- package/lib/javascript/index.js +4 -1
- package/lib/javascript/jest.js +4 -4
- package/lib/javascript/license-checker.js +1 -1
- package/lib/javascript/node-package.js +1 -1
- package/lib/javascript/node-project.d.ts +13 -0
- package/lib/javascript/node-project.js +9 -2
- package/lib/javascript/npm-config.js +1 -1
- package/lib/javascript/prettier.js +1 -1
- package/lib/javascript/projenrc.d.ts +1 -1
- package/lib/javascript/projenrc.js +5 -2
- package/lib/javascript/typescript-config.js +2 -2
- package/lib/javascript/upgrade-dependencies.js +2 -2
- package/lib/javascript/yarnrc.js +1 -1
- package/lib/json-patch.js +1 -1
- package/lib/json.js +1 -1
- package/lib/license.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/makefile.js +1 -1
- package/lib/object-file.js +3 -3
- package/lib/project-build.js +1 -1
- package/lib/project-tree.js +1 -1
- package/lib/project.js +5 -4
- package/lib/projects.js +1 -1
- package/lib/projenrc-json.js +2 -2
- package/lib/projenrc.js +1 -1
- package/lib/python/pip.js +1 -1
- package/lib/python/poetry.js +2 -2
- package/lib/python/projenrc.js +1 -1
- package/lib/python/pytest-sample.js +1 -1
- package/lib/python/pytest.js +1 -1
- package/lib/python/python-project.js +1 -1
- package/lib/python/python-sample.js +1 -1
- package/lib/python/requirements-file.js +1 -1
- package/lib/python/setuppy.js +1 -1
- package/lib/python/setuptools.js +1 -1
- package/lib/python/venv.js +1 -1
- package/lib/readme.js +1 -1
- package/lib/release/publisher.js +1 -1
- package/lib/release/release-trigger.js +1 -1
- package/lib/release/release.js +1 -1
- package/lib/renovatebot.js +1 -1
- package/lib/sample-file.js +6 -5
- package/lib/semver.js +1 -1
- package/lib/source-code.js +1 -1
- package/lib/task-runtime.js +1 -1
- package/lib/task.js +1 -1
- package/lib/tasks.js +1 -1
- package/lib/testing.js +1 -1
- package/lib/textfile.js +1 -1
- package/lib/toml.js +1 -1
- package/lib/typescript/projenrc-ts.js +1 -1
- package/lib/typescript/projenrc.js +4 -2
- package/lib/typescript/typescript-typedoc.js +1 -1
- package/lib/typescript/typescript.js +13 -7
- package/lib/util/synth.js +5 -4
- package/lib/util.d.ts +20 -2
- package/lib/util.js +20 -8
- package/lib/version.js +2 -2
- package/lib/vscode/devcontainer.js +1 -1
- package/lib/vscode/extensions.js +1 -1
- package/lib/vscode/launch-config.js +1 -1
- package/lib/vscode/settings.js +1 -1
- package/lib/vscode/vscode.js +1 -1
- package/lib/web/next.js +3 -3
- package/lib/web/postcss.js +1 -1
- package/lib/web/react.js +4 -4
- package/lib/web/tailwind.js +1 -1
- package/lib/xmlfile.js +1 -1
- package/lib/yaml.js +1 -1
- package/node_modules/pump/index.js +1 -1
- package/node_modules/pump/package.json +1 -1
- package/package.json +6 -3
- package/node_modules/balanced-match/.github/FUNDING.yml +0 -2
- package/node_modules/balanced-match/LICENSE.md +0 -21
- package/node_modules/balanced-match/README.md +0 -97
- package/node_modules/balanced-match/index.js +0 -62
- package/node_modules/balanced-match/package.json +0 -48
- package/node_modules/brace-expansion/.github/FUNDING.yml +0 -2
- package/node_modules/brace-expansion/LICENSE +0 -21
- package/node_modules/brace-expansion/README.md +0 -135
- package/node_modules/brace-expansion/index.js +0 -203
- package/node_modules/brace-expansion/package.json +0 -46
- package/node_modules/fs.realpath/LICENSE +0 -43
- package/node_modules/fs.realpath/README.md +0 -33
- package/node_modules/fs.realpath/index.js +0 -66
- package/node_modules/fs.realpath/old.js +0 -303
- package/node_modules/fs.realpath/package.json +0 -26
- package/node_modules/glob/LICENSE +0 -15
- package/node_modules/glob/README.md +0 -399
- package/node_modules/glob/common.js +0 -244
- package/node_modules/glob/glob.js +0 -790
- package/node_modules/glob/node_modules/minimatch/LICENSE +0 -15
- package/node_modules/glob/node_modules/minimatch/README.md +0 -259
- package/node_modules/glob/node_modules/minimatch/lib/path.js +0 -4
- package/node_modules/glob/node_modules/minimatch/minimatch.js +0 -944
- package/node_modules/glob/node_modules/minimatch/package.json +0 -35
- package/node_modules/glob/package.json +0 -55
- package/node_modules/glob/sync.js +0 -486
- package/node_modules/inflight/LICENSE +0 -15
- package/node_modules/inflight/README.md +0 -37
- package/node_modules/inflight/inflight.js +0 -54
- package/node_modules/inflight/package.json +0 -29
- package/node_modules/inherits/LICENSE +0 -16
- package/node_modules/inherits/README.md +0 -42
- package/node_modules/inherits/inherits.js +0 -9
- package/node_modules/inherits/inherits_browser.js +0 -27
- package/node_modules/inherits/package.json +0 -29
- /package/node_modules/{fast-glob/node_modules/glob-parent → glob-parent}/LICENSE +0 -0
- /package/node_modules/{fast-glob/node_modules/glob-parent → glob-parent}/README.md +0 -0
- /package/node_modules/{fast-glob/node_modules/glob-parent → glob-parent}/index.js +0 -0
- /package/node_modules/{fast-glob/node_modules/glob-parent → glob-parent}/package.json +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/LICENSE +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/README.md +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/index.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action/append/constant.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action/append.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action/count.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action/help.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action/store/constant.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action/store/false.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action/store/true.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action/store.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action/subparsers.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action/version.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/action_container.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/argparse.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/argument/error.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/argument/exclusive.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/argument/group.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/argument_parser.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/const.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/help/added_formatters.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/help/formatter.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/namespace.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/lib/utils.js +0 -0
- /package/node_modules/{argparse → xmlbuilder2/node_modules/argparse}/package.json +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/LICENSE +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/README.md +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/bin/js-yaml.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/dist/js-yaml.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/dist/js-yaml.min.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/index.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/common.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/dumper.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/exception.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/loader.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/mark.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/schema/core.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/schema/default_full.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/schema/default_safe.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/schema/failsafe.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/schema/json.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/schema.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/binary.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/bool.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/float.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/int.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/js/function.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/js/regexp.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/js/undefined.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/map.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/merge.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/null.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/omap.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/pairs.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/seq.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/set.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/str.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type/timestamp.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml/type.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/lib/js-yaml.js +0 -0
- /package/node_modules/{js-yaml → xmlbuilder2/node_modules/js-yaml}/package.json +0 -0
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
|
|
3
|
-
"name": "minimatch",
|
|
4
|
-
"description": "a glob matcher in javascript",
|
|
5
|
-
"publishConfig": {
|
|
6
|
-
"tag": "legacy-v5"
|
|
7
|
-
},
|
|
8
|
-
"version": "5.1.6",
|
|
9
|
-
"repository": {
|
|
10
|
-
"type": "git",
|
|
11
|
-
"url": "git://github.com/isaacs/minimatch.git"
|
|
12
|
-
},
|
|
13
|
-
"main": "minimatch.js",
|
|
14
|
-
"scripts": {
|
|
15
|
-
"test": "tap",
|
|
16
|
-
"snap": "tap",
|
|
17
|
-
"preversion": "npm test",
|
|
18
|
-
"postversion": "npm publish",
|
|
19
|
-
"prepublishOnly": "git push origin --follow-tags"
|
|
20
|
-
},
|
|
21
|
-
"engines": {
|
|
22
|
-
"node": ">=10"
|
|
23
|
-
},
|
|
24
|
-
"dependencies": {
|
|
25
|
-
"brace-expansion": "^2.0.1"
|
|
26
|
-
},
|
|
27
|
-
"devDependencies": {
|
|
28
|
-
"tap": "^16.3.2"
|
|
29
|
-
},
|
|
30
|
-
"license": "ISC",
|
|
31
|
-
"files": [
|
|
32
|
-
"minimatch.js",
|
|
33
|
-
"lib"
|
|
34
|
-
]
|
|
35
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
|
|
3
|
-
"name": "glob",
|
|
4
|
-
"description": "a little globber",
|
|
5
|
-
"version": "8.1.0",
|
|
6
|
-
"repository": {
|
|
7
|
-
"type": "git",
|
|
8
|
-
"url": "git://github.com/isaacs/node-glob.git"
|
|
9
|
-
},
|
|
10
|
-
"main": "glob.js",
|
|
11
|
-
"files": [
|
|
12
|
-
"glob.js",
|
|
13
|
-
"sync.js",
|
|
14
|
-
"common.js"
|
|
15
|
-
],
|
|
16
|
-
"engines": {
|
|
17
|
-
"node": ">=12"
|
|
18
|
-
},
|
|
19
|
-
"dependencies": {
|
|
20
|
-
"fs.realpath": "^1.0.0",
|
|
21
|
-
"inflight": "^1.0.4",
|
|
22
|
-
"inherits": "2",
|
|
23
|
-
"minimatch": "^5.0.1",
|
|
24
|
-
"once": "^1.3.0"
|
|
25
|
-
},
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
"memfs": "^3.2.0",
|
|
28
|
-
"mkdirp": "0",
|
|
29
|
-
"rimraf": "^2.2.8",
|
|
30
|
-
"tap": "^16.0.1",
|
|
31
|
-
"tick": "0.0.6"
|
|
32
|
-
},
|
|
33
|
-
"tap": {
|
|
34
|
-
"before": "test/00-setup.js",
|
|
35
|
-
"after": "test/zz-cleanup.js",
|
|
36
|
-
"statements": 90,
|
|
37
|
-
"branches": 90,
|
|
38
|
-
"functions": 90,
|
|
39
|
-
"lines": 90,
|
|
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
|
-
}
|
|
@@ -1,486 +0,0 @@
|
|
|
1
|
-
module.exports = globSync
|
|
2
|
-
globSync.GlobSync = GlobSync
|
|
3
|
-
|
|
4
|
-
var rp = require('fs.realpath')
|
|
5
|
-
var minimatch = require('minimatch')
|
|
6
|
-
var Minimatch = minimatch.Minimatch
|
|
7
|
-
var Glob = require('./glob.js').Glob
|
|
8
|
-
var util = require('util')
|
|
9
|
-
var path = require('path')
|
|
10
|
-
var assert = require('assert')
|
|
11
|
-
var isAbsolute = require('path').isAbsolute
|
|
12
|
-
var common = require('./common.js')
|
|
13
|
-
var setopts = common.setopts
|
|
14
|
-
var ownProp = common.ownProp
|
|
15
|
-
var childrenIgnored = common.childrenIgnored
|
|
16
|
-
var isIgnored = common.isIgnored
|
|
17
|
-
|
|
18
|
-
function globSync (pattern, options) {
|
|
19
|
-
if (typeof options === 'function' || arguments.length === 3)
|
|
20
|
-
throw new TypeError('callback provided to sync glob\n'+
|
|
21
|
-
'See: https://github.com/isaacs/node-glob/issues/167')
|
|
22
|
-
|
|
23
|
-
return new GlobSync(pattern, options).found
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function GlobSync (pattern, options) {
|
|
27
|
-
if (!pattern)
|
|
28
|
-
throw new Error('must provide pattern')
|
|
29
|
-
|
|
30
|
-
if (typeof options === 'function' || arguments.length === 3)
|
|
31
|
-
throw new TypeError('callback provided to sync glob\n'+
|
|
32
|
-
'See: https://github.com/isaacs/node-glob/issues/167')
|
|
33
|
-
|
|
34
|
-
if (!(this instanceof GlobSync))
|
|
35
|
-
return new GlobSync(pattern, options)
|
|
36
|
-
|
|
37
|
-
setopts(this, pattern, options)
|
|
38
|
-
|
|
39
|
-
if (this.noprocess)
|
|
40
|
-
return this
|
|
41
|
-
|
|
42
|
-
var n = this.minimatch.set.length
|
|
43
|
-
this.matches = new Array(n)
|
|
44
|
-
for (var i = 0; i < n; i ++) {
|
|
45
|
-
this._process(this.minimatch.set[i], i, false)
|
|
46
|
-
}
|
|
47
|
-
this._finish()
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
GlobSync.prototype._finish = function () {
|
|
51
|
-
assert.ok(this instanceof GlobSync)
|
|
52
|
-
if (this.realpath) {
|
|
53
|
-
var self = this
|
|
54
|
-
this.matches.forEach(function (matchset, index) {
|
|
55
|
-
var set = self.matches[index] = Object.create(null)
|
|
56
|
-
for (var p in matchset) {
|
|
57
|
-
try {
|
|
58
|
-
p = self._makeAbs(p)
|
|
59
|
-
var real = rp.realpathSync(p, self.realpathCache)
|
|
60
|
-
set[real] = true
|
|
61
|
-
} catch (er) {
|
|
62
|
-
if (er.syscall === 'stat')
|
|
63
|
-
set[self._makeAbs(p)] = true
|
|
64
|
-
else
|
|
65
|
-
throw er
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
})
|
|
69
|
-
}
|
|
70
|
-
common.finish(this)
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
GlobSync.prototype._process = function (pattern, index, inGlobStar) {
|
|
75
|
-
assert.ok(this instanceof GlobSync)
|
|
76
|
-
|
|
77
|
-
// Get the first [n] parts of pattern that are all strings.
|
|
78
|
-
var n = 0
|
|
79
|
-
while (typeof pattern[n] === 'string') {
|
|
80
|
-
n ++
|
|
81
|
-
}
|
|
82
|
-
// now n is the index of the first one that is *not* a string.
|
|
83
|
-
|
|
84
|
-
// See if there's anything else
|
|
85
|
-
var prefix
|
|
86
|
-
switch (n) {
|
|
87
|
-
// if not, then this is rather simple
|
|
88
|
-
case pattern.length:
|
|
89
|
-
this._processSimple(pattern.join('/'), index)
|
|
90
|
-
return
|
|
91
|
-
|
|
92
|
-
case 0:
|
|
93
|
-
// pattern *starts* with some non-trivial item.
|
|
94
|
-
// going to readdir(cwd), but not include the prefix in matches.
|
|
95
|
-
prefix = null
|
|
96
|
-
break
|
|
97
|
-
|
|
98
|
-
default:
|
|
99
|
-
// pattern has some string bits in the front.
|
|
100
|
-
// whatever it starts with, whether that's 'absolute' like /foo/bar,
|
|
101
|
-
// or 'relative' like '../baz'
|
|
102
|
-
prefix = pattern.slice(0, n).join('/')
|
|
103
|
-
break
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
var remain = pattern.slice(n)
|
|
107
|
-
|
|
108
|
-
// get the list of entries.
|
|
109
|
-
var read
|
|
110
|
-
if (prefix === null)
|
|
111
|
-
read = '.'
|
|
112
|
-
else if (isAbsolute(prefix) ||
|
|
113
|
-
isAbsolute(pattern.map(function (p) {
|
|
114
|
-
return typeof p === 'string' ? p : '[*]'
|
|
115
|
-
}).join('/'))) {
|
|
116
|
-
if (!prefix || !isAbsolute(prefix))
|
|
117
|
-
prefix = '/' + prefix
|
|
118
|
-
read = prefix
|
|
119
|
-
} else
|
|
120
|
-
read = prefix
|
|
121
|
-
|
|
122
|
-
var abs = this._makeAbs(read)
|
|
123
|
-
|
|
124
|
-
//if ignored, skip processing
|
|
125
|
-
if (childrenIgnored(this, read))
|
|
126
|
-
return
|
|
127
|
-
|
|
128
|
-
var isGlobStar = remain[0] === minimatch.GLOBSTAR
|
|
129
|
-
if (isGlobStar)
|
|
130
|
-
this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)
|
|
131
|
-
else
|
|
132
|
-
this._processReaddir(prefix, read, abs, remain, index, inGlobStar)
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
|
|
137
|
-
var entries = this._readdir(abs, inGlobStar)
|
|
138
|
-
|
|
139
|
-
// if the abs isn't a dir, then nothing can match!
|
|
140
|
-
if (!entries)
|
|
141
|
-
return
|
|
142
|
-
|
|
143
|
-
// It will only match dot entries if it starts with a dot, or if
|
|
144
|
-
// dot is set. Stuff like @(.foo|.bar) isn't allowed.
|
|
145
|
-
var pn = remain[0]
|
|
146
|
-
var negate = !!this.minimatch.negate
|
|
147
|
-
var rawGlob = pn._glob
|
|
148
|
-
var dotOk = this.dot || rawGlob.charAt(0) === '.'
|
|
149
|
-
|
|
150
|
-
var matchedEntries = []
|
|
151
|
-
for (var i = 0; i < entries.length; i++) {
|
|
152
|
-
var e = entries[i]
|
|
153
|
-
if (e.charAt(0) !== '.' || dotOk) {
|
|
154
|
-
var m
|
|
155
|
-
if (negate && !prefix) {
|
|
156
|
-
m = !e.match(pn)
|
|
157
|
-
} else {
|
|
158
|
-
m = e.match(pn)
|
|
159
|
-
}
|
|
160
|
-
if (m)
|
|
161
|
-
matchedEntries.push(e)
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
var len = matchedEntries.length
|
|
166
|
-
// If there are no matched entries, then nothing matches.
|
|
167
|
-
if (len === 0)
|
|
168
|
-
return
|
|
169
|
-
|
|
170
|
-
// if this is the last remaining pattern bit, then no need for
|
|
171
|
-
// an additional stat *unless* the user has specified mark or
|
|
172
|
-
// stat explicitly. We know they exist, since readdir returned
|
|
173
|
-
// them.
|
|
174
|
-
|
|
175
|
-
if (remain.length === 1 && !this.mark && !this.stat) {
|
|
176
|
-
if (!this.matches[index])
|
|
177
|
-
this.matches[index] = Object.create(null)
|
|
178
|
-
|
|
179
|
-
for (var i = 0; i < len; i ++) {
|
|
180
|
-
var e = matchedEntries[i]
|
|
181
|
-
if (prefix) {
|
|
182
|
-
if (prefix.slice(-1) !== '/')
|
|
183
|
-
e = prefix + '/' + e
|
|
184
|
-
else
|
|
185
|
-
e = prefix + e
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
if (e.charAt(0) === '/' && !this.nomount) {
|
|
189
|
-
e = path.join(this.root, e)
|
|
190
|
-
}
|
|
191
|
-
this._emitMatch(index, e)
|
|
192
|
-
}
|
|
193
|
-
// This was the last one, and no stats were needed
|
|
194
|
-
return
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// now test all matched entries as stand-ins for that part
|
|
198
|
-
// of the pattern.
|
|
199
|
-
remain.shift()
|
|
200
|
-
for (var i = 0; i < len; i ++) {
|
|
201
|
-
var e = matchedEntries[i]
|
|
202
|
-
var newPattern
|
|
203
|
-
if (prefix)
|
|
204
|
-
newPattern = [prefix, e]
|
|
205
|
-
else
|
|
206
|
-
newPattern = [e]
|
|
207
|
-
this._process(newPattern.concat(remain), index, inGlobStar)
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
GlobSync.prototype._emitMatch = function (index, e) {
|
|
213
|
-
if (isIgnored(this, e))
|
|
214
|
-
return
|
|
215
|
-
|
|
216
|
-
var abs = this._makeAbs(e)
|
|
217
|
-
|
|
218
|
-
if (this.mark)
|
|
219
|
-
e = this._mark(e)
|
|
220
|
-
|
|
221
|
-
if (this.absolute) {
|
|
222
|
-
e = abs
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
if (this.matches[index][e])
|
|
226
|
-
return
|
|
227
|
-
|
|
228
|
-
if (this.nodir) {
|
|
229
|
-
var c = this.cache[abs]
|
|
230
|
-
if (c === 'DIR' || Array.isArray(c))
|
|
231
|
-
return
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
this.matches[index][e] = true
|
|
235
|
-
|
|
236
|
-
if (this.stat)
|
|
237
|
-
this._stat(e)
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
GlobSync.prototype._readdirInGlobStar = function (abs) {
|
|
242
|
-
// follow all symlinked directories forever
|
|
243
|
-
// just proceed as if this is a non-globstar situation
|
|
244
|
-
if (this.follow)
|
|
245
|
-
return this._readdir(abs, false)
|
|
246
|
-
|
|
247
|
-
var entries
|
|
248
|
-
var lstat
|
|
249
|
-
var stat
|
|
250
|
-
try {
|
|
251
|
-
lstat = this.fs.lstatSync(abs)
|
|
252
|
-
} catch (er) {
|
|
253
|
-
if (er.code === 'ENOENT') {
|
|
254
|
-
// lstat failed, doesn't exist
|
|
255
|
-
return null
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
var isSym = lstat && lstat.isSymbolicLink()
|
|
260
|
-
this.symlinks[abs] = isSym
|
|
261
|
-
|
|
262
|
-
// If it's not a symlink or a dir, then it's definitely a regular file.
|
|
263
|
-
// don't bother doing a readdir in that case.
|
|
264
|
-
if (!isSym && lstat && !lstat.isDirectory())
|
|
265
|
-
this.cache[abs] = 'FILE'
|
|
266
|
-
else
|
|
267
|
-
entries = this._readdir(abs, false)
|
|
268
|
-
|
|
269
|
-
return entries
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
GlobSync.prototype._readdir = function (abs, inGlobStar) {
|
|
273
|
-
var entries
|
|
274
|
-
|
|
275
|
-
if (inGlobStar && !ownProp(this.symlinks, abs))
|
|
276
|
-
return this._readdirInGlobStar(abs)
|
|
277
|
-
|
|
278
|
-
if (ownProp(this.cache, abs)) {
|
|
279
|
-
var c = this.cache[abs]
|
|
280
|
-
if (!c || c === 'FILE')
|
|
281
|
-
return null
|
|
282
|
-
|
|
283
|
-
if (Array.isArray(c))
|
|
284
|
-
return c
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
try {
|
|
288
|
-
return this._readdirEntries(abs, this.fs.readdirSync(abs))
|
|
289
|
-
} catch (er) {
|
|
290
|
-
this._readdirError(abs, er)
|
|
291
|
-
return null
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
GlobSync.prototype._readdirEntries = function (abs, entries) {
|
|
296
|
-
// if we haven't asked to stat everything, then just
|
|
297
|
-
// assume that everything in there exists, so we can avoid
|
|
298
|
-
// having to stat it a second time.
|
|
299
|
-
if (!this.mark && !this.stat) {
|
|
300
|
-
for (var i = 0; i < entries.length; i ++) {
|
|
301
|
-
var e = entries[i]
|
|
302
|
-
if (abs === '/')
|
|
303
|
-
e = abs + e
|
|
304
|
-
else
|
|
305
|
-
e = abs + '/' + e
|
|
306
|
-
this.cache[e] = true
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
this.cache[abs] = entries
|
|
311
|
-
|
|
312
|
-
// mark and cache dir-ness
|
|
313
|
-
return entries
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
GlobSync.prototype._readdirError = function (f, er) {
|
|
317
|
-
// handle errors, and cache the information
|
|
318
|
-
switch (er.code) {
|
|
319
|
-
case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
|
|
320
|
-
case 'ENOTDIR': // totally normal. means it *does* exist.
|
|
321
|
-
var abs = this._makeAbs(f)
|
|
322
|
-
this.cache[abs] = 'FILE'
|
|
323
|
-
if (abs === this.cwdAbs) {
|
|
324
|
-
var error = new Error(er.code + ' invalid cwd ' + this.cwd)
|
|
325
|
-
error.path = this.cwd
|
|
326
|
-
error.code = er.code
|
|
327
|
-
throw error
|
|
328
|
-
}
|
|
329
|
-
break
|
|
330
|
-
|
|
331
|
-
case 'ENOENT': // not terribly unusual
|
|
332
|
-
case 'ELOOP':
|
|
333
|
-
case 'ENAMETOOLONG':
|
|
334
|
-
case 'UNKNOWN':
|
|
335
|
-
this.cache[this._makeAbs(f)] = false
|
|
336
|
-
break
|
|
337
|
-
|
|
338
|
-
default: // some unusual error. Treat as failure.
|
|
339
|
-
this.cache[this._makeAbs(f)] = false
|
|
340
|
-
if (this.strict)
|
|
341
|
-
throw er
|
|
342
|
-
if (!this.silent)
|
|
343
|
-
console.error('glob error', er)
|
|
344
|
-
break
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
|
|
349
|
-
|
|
350
|
-
var entries = this._readdir(abs, inGlobStar)
|
|
351
|
-
|
|
352
|
-
// no entries means not a dir, so it can never have matches
|
|
353
|
-
// foo.txt/** doesn't match foo.txt
|
|
354
|
-
if (!entries)
|
|
355
|
-
return
|
|
356
|
-
|
|
357
|
-
// test without the globstar, and with every child both below
|
|
358
|
-
// and replacing the globstar.
|
|
359
|
-
var remainWithoutGlobStar = remain.slice(1)
|
|
360
|
-
var gspref = prefix ? [ prefix ] : []
|
|
361
|
-
var noGlobStar = gspref.concat(remainWithoutGlobStar)
|
|
362
|
-
|
|
363
|
-
// the noGlobStar pattern exits the inGlobStar state
|
|
364
|
-
this._process(noGlobStar, index, false)
|
|
365
|
-
|
|
366
|
-
var len = entries.length
|
|
367
|
-
var isSym = this.symlinks[abs]
|
|
368
|
-
|
|
369
|
-
// If it's a symlink, and we're in a globstar, then stop
|
|
370
|
-
if (isSym && inGlobStar)
|
|
371
|
-
return
|
|
372
|
-
|
|
373
|
-
for (var i = 0; i < len; i++) {
|
|
374
|
-
var e = entries[i]
|
|
375
|
-
if (e.charAt(0) === '.' && !this.dot)
|
|
376
|
-
continue
|
|
377
|
-
|
|
378
|
-
// these two cases enter the inGlobStar state
|
|
379
|
-
var instead = gspref.concat(entries[i], remainWithoutGlobStar)
|
|
380
|
-
this._process(instead, index, true)
|
|
381
|
-
|
|
382
|
-
var below = gspref.concat(entries[i], remain)
|
|
383
|
-
this._process(below, index, true)
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
GlobSync.prototype._processSimple = function (prefix, index) {
|
|
388
|
-
// XXX review this. Shouldn't it be doing the mounting etc
|
|
389
|
-
// before doing stat? kinda weird?
|
|
390
|
-
var exists = this._stat(prefix)
|
|
391
|
-
|
|
392
|
-
if (!this.matches[index])
|
|
393
|
-
this.matches[index] = Object.create(null)
|
|
394
|
-
|
|
395
|
-
// If it doesn't exist, then just mark the lack of results
|
|
396
|
-
if (!exists)
|
|
397
|
-
return
|
|
398
|
-
|
|
399
|
-
if (prefix && isAbsolute(prefix) && !this.nomount) {
|
|
400
|
-
var trail = /[\/\\]$/.test(prefix)
|
|
401
|
-
if (prefix.charAt(0) === '/') {
|
|
402
|
-
prefix = path.join(this.root, prefix)
|
|
403
|
-
} else {
|
|
404
|
-
prefix = path.resolve(this.root, prefix)
|
|
405
|
-
if (trail)
|
|
406
|
-
prefix += '/'
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
if (process.platform === 'win32')
|
|
411
|
-
prefix = prefix.replace(/\\/g, '/')
|
|
412
|
-
|
|
413
|
-
// Mark this as a match
|
|
414
|
-
this._emitMatch(index, prefix)
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
// Returns either 'DIR', 'FILE', or false
|
|
418
|
-
GlobSync.prototype._stat = function (f) {
|
|
419
|
-
var abs = this._makeAbs(f)
|
|
420
|
-
var needDir = f.slice(-1) === '/'
|
|
421
|
-
|
|
422
|
-
if (f.length > this.maxLength)
|
|
423
|
-
return false
|
|
424
|
-
|
|
425
|
-
if (!this.stat && ownProp(this.cache, abs)) {
|
|
426
|
-
var c = this.cache[abs]
|
|
427
|
-
|
|
428
|
-
if (Array.isArray(c))
|
|
429
|
-
c = 'DIR'
|
|
430
|
-
|
|
431
|
-
// It exists, but maybe not how we need it
|
|
432
|
-
if (!needDir || c === 'DIR')
|
|
433
|
-
return c
|
|
434
|
-
|
|
435
|
-
if (needDir && c === 'FILE')
|
|
436
|
-
return false
|
|
437
|
-
|
|
438
|
-
// otherwise we have to stat, because maybe c=true
|
|
439
|
-
// if we know it exists, but not what it is.
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
var exists
|
|
443
|
-
var stat = this.statCache[abs]
|
|
444
|
-
if (!stat) {
|
|
445
|
-
var lstat
|
|
446
|
-
try {
|
|
447
|
-
lstat = this.fs.lstatSync(abs)
|
|
448
|
-
} catch (er) {
|
|
449
|
-
if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
|
|
450
|
-
this.statCache[abs] = false
|
|
451
|
-
return false
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
if (lstat && lstat.isSymbolicLink()) {
|
|
456
|
-
try {
|
|
457
|
-
stat = this.fs.statSync(abs)
|
|
458
|
-
} catch (er) {
|
|
459
|
-
stat = lstat
|
|
460
|
-
}
|
|
461
|
-
} else {
|
|
462
|
-
stat = lstat
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
this.statCache[abs] = stat
|
|
467
|
-
|
|
468
|
-
var c = true
|
|
469
|
-
if (stat)
|
|
470
|
-
c = stat.isDirectory() ? 'DIR' : 'FILE'
|
|
471
|
-
|
|
472
|
-
this.cache[abs] = this.cache[abs] || c
|
|
473
|
-
|
|
474
|
-
if (needDir && c === 'FILE')
|
|
475
|
-
return false
|
|
476
|
-
|
|
477
|
-
return c
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
GlobSync.prototype._mark = function (p) {
|
|
481
|
-
return common.mark(this, p)
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
GlobSync.prototype._makeAbs = function (f) {
|
|
485
|
-
return common.makeAbs(this, f)
|
|
486
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
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.
|
|
@@ -1,37 +0,0 @@
|
|
|
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
|
-
```
|
|
@@ -1,54 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
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 <i@izs.me> (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
|
-
}
|