diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/is-generator-function | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/is-generator-function')
| -rw-r--r-- | node_modules/is-generator-function/.editorconfig | 20 | ||||
| -rw-r--r-- | node_modules/is-generator-function/.eslintrc | 9 | ||||
| -rw-r--r-- | node_modules/is-generator-function/.jscs.json | 176 | ||||
| -rw-r--r-- | node_modules/is-generator-function/.nvmrc | 1 | ||||
| -rw-r--r-- | node_modules/is-generator-function/.travis.yml | 191 | ||||
| -rw-r--r-- | node_modules/is-generator-function/CHANGELOG.md | 44 | ||||
| -rw-r--r-- | node_modules/is-generator-function/LICENSE | 20 | ||||
| -rw-r--r-- | node_modules/is-generator-function/Makefile | 61 | ||||
| -rw-r--r-- | node_modules/is-generator-function/README.md | 42 | ||||
| -rw-r--r-- | node_modules/is-generator-function/index.js | 32 | ||||
| -rw-r--r-- | node_modules/is-generator-function/package.json | 73 | ||||
| -rw-r--r-- | node_modules/is-generator-function/test/.eslintrc | 5 | ||||
| -rw-r--r-- | node_modules/is-generator-function/test/corejs.js | 5 | ||||
| -rw-r--r-- | node_modules/is-generator-function/test/index.js | 94 | ||||
| -rw-r--r-- | node_modules/is-generator-function/test/uglified.js | 8 |
15 files changed, 781 insertions, 0 deletions
diff --git a/node_modules/is-generator-function/.editorconfig b/node_modules/is-generator-function/.editorconfig new file mode 100644 index 00000000..ac29adef --- /dev/null +++ b/node_modules/is-generator-function/.editorconfig @@ -0,0 +1,20 @@ +root = true + +[*] +indent_style = tab +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +max_line_length = 120 + +[CHANGELOG.md] +indent_style = space +indent_size = 2 + +[*.json] +max_line_length = off + +[Makefile] +max_line_length = off diff --git a/node_modules/is-generator-function/.eslintrc b/node_modules/is-generator-function/.eslintrc new file mode 100644 index 00000000..484e4d71 --- /dev/null +++ b/node_modules/is-generator-function/.eslintrc @@ -0,0 +1,9 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "no-new-func": [1] + } +} diff --git a/node_modules/is-generator-function/.jscs.json b/node_modules/is-generator-function/.jscs.json new file mode 100644 index 00000000..c62f2c19 --- /dev/null +++ b/node_modules/is-generator-function/.jscs.json @@ -0,0 +1,176 @@ +{ + "es3": true, + + "additionalRules": [], + + "requireSemicolons": true, + + "disallowMultipleSpaces": true, + + "disallowIdentifierNames": [], + + "requireCurlyBraces": { + "allExcept": [], + "keywords": ["if", "else", "for", "while", "do", "try", "catch"] + }, + + "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"], + + "disallowSpaceAfterKeywords": [], + + "disallowSpaceBeforeComma": true, + "disallowSpaceAfterComma": false, + "disallowSpaceBeforeSemicolon": true, + + "disallowNodeTypes": [ + "DebuggerStatement", + "ForInStatement", + "LabeledStatement", + "SwitchCase", + "SwitchStatement", + "WithStatement" + ], + + "requireObjectKeysOnNewLine": { "allExcept": ["sameLine"] }, + + "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true }, + "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, + "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, + "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, + "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, + + "requireSpaceBetweenArguments": true, + + "disallowSpacesInsideParentheses": true, + + "disallowSpacesInsideArrayBrackets": true, + + "disallowQuotedKeysInObjects": { "allExcept": ["reserved"] }, + + "disallowSpaceAfterObjectKeys": true, + + "requireCommaBeforeLineBreak": true, + + "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], + "requireSpaceAfterPrefixUnaryOperators": [], + + "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], + "requireSpaceBeforePostfixUnaryOperators": [], + + "disallowSpaceBeforeBinaryOperators": [], + "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], + + "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], + "disallowSpaceAfterBinaryOperators": [], + + "disallowImplicitTypeConversion": ["binary", "string"], + + "disallowKeywords": ["with", "eval"], + + "requireKeywordsOnNewLine": [], + "disallowKeywordsOnNewLine": ["else"], + + "requireLineFeedAtFileEnd": true, + + "disallowTrailingWhitespace": true, + + "disallowTrailingComma": true, + + "excludeFiles": ["node_modules/**", "vendor/**"], + + "disallowMultipleLineStrings": true, + + "requireDotNotation": { "allExcept": ["keywords"] }, + + "requireParenthesesAroundIIFE": true, + + "validateLineBreaks": "LF", + + "validateQuoteMarks": { + "escape": true, + "mark": "'" + }, + + "disallowOperatorBeforeLineBreak": [], + + "requireSpaceBeforeKeywords": [ + "do", + "for", + "if", + "else", + "switch", + "case", + "try", + "catch", + "finally", + "while", + "with", + "return" + ], + + "validateAlignedFunctionParameters": { + "lineBreakAfterOpeningBraces": true, + "lineBreakBeforeClosingBraces": true + }, + + "requirePaddingNewLinesBeforeExport": true, + + "validateNewlineAfterArrayElements": { + "maximum": 2 + }, + + "requirePaddingNewLinesAfterUseStrict": true, + + "disallowArrowFunctions": true, + + "disallowMultiLineTernary": true, + + "validateOrderInObjectKeys": "asc-insensitive", + + "disallowIdenticalDestructuringNames": true, + + "disallowNestedTernaries": { "maxLevel": 1 }, + + "requireSpaceAfterComma": { "allExcept": ["trailing"] }, + "requireAlignedMultilineParams": false, + + "requireSpacesInGenerator": { + "afterStar": true + }, + + "disallowSpacesInGenerator": { + "beforeStar": true + }, + + "disallowVar": false, + + "requireArrayDestructuring": false, + + "requireEnhancedObjectLiterals": false, + + "requireObjectDestructuring": false, + + "requireEarlyReturn": false, + + "requireCapitalizedConstructorsNew": { + "allExcept": ["Function", "String", "Object", "Symbol", "Number", "Date", "RegExp", "Error", "Boolean", "Array"] + }, + + "requireImportAlphabetized": false, + + "requireSpaceBeforeObjectValues": true, + "requireSpaceBeforeDestructuredValues": true, + + "disallowSpacesInsideTemplateStringPlaceholders": true, + + "disallowArrayDestructuringReturn": false, + + "requireNewlineBeforeSingleStatementsInIf": false, + + "disallowUnusedVariables": true, + + "requireSpacesInsideImportedObjectBraces": true, + + "requireUseStrict": true +} + diff --git a/node_modules/is-generator-function/.nvmrc b/node_modules/is-generator-function/.nvmrc new file mode 100644 index 00000000..64f5a0a6 --- /dev/null +++ b/node_modules/is-generator-function/.nvmrc @@ -0,0 +1 @@ +node diff --git a/node_modules/is-generator-function/.travis.yml b/node_modules/is-generator-function/.travis.yml new file mode 100644 index 00000000..7ead9e94 --- /dev/null +++ b/node_modules/is-generator-function/.travis.yml @@ -0,0 +1,191 @@ +language: node_js +os: + - linux +node_js: + - "9.3" + - "8.9" + - "7.10" + - "6.12" + - "5.12" + - "4.8" + - "iojs-v3.3" + - "iojs-v2.5" + - "iojs-v1.8" + - "0.12" + - "0.10" + - "0.8" +before_install: + - 'nvm install-latest-npm' +install: + - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ] || [ "${TRAVIS_NODE_VERSION}" = "0.9" ]; then nvm install --latest-npm 0.8 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;' +script: + - 'if [ -n "${PRETEST-}" ]; then npm run pretest ; fi' + - 'if [ -n "${POSTTEST-}" ]; then npm run posttest ; fi' + - 'if [ -n "${COVERAGE-}" ]; then npm run coverage ; fi' + - 'if [ -n "${TEST-}" ]; then npm run tests-only ; fi' +sudo: false +env: + - TEST=true +matrix: + fast_finish: true + include: + - node_js: "lts/*" + env: PRETEST=true + - node_js: "lts/*" + env: POSTTEST=true + - node_js: "8" + env: COVERAGE=true + - node_js: "4" + env: COVERAGE=true + - node_js: "9.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.11" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.11" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.11" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.4" + env: TEST=true ALLOW_FAILURE=true + allow_failures: + - os: osx + - env: TEST=true ALLOW_FAILURE=true + - env: COVERAGE=true diff --git a/node_modules/is-generator-function/CHANGELOG.md b/node_modules/is-generator-function/CHANGELOG.md new file mode 100644 index 00000000..983f5181 --- /dev/null +++ b/node_modules/is-generator-function/CHANGELOG.md @@ -0,0 +1,44 @@ +1.0.7 / 2017-12-27 +================= + * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js`, `nsp`, `semver`, `tape` + * [Tests] up to `node` `v9.3`, `v8.9`, `v6.12`; pin included builds to LTS; use `nvm install-latest-npm` + * [Tests] run tests with uglify-register + +1.0.6 / 2016-12-20 +================= + * [Fix] fix `is-generator-function` in an env without native generators, with core-js (https://github.com/ljharb/is-equal/issues/33) + +1.0.5 / 2016-12-19 +================= + * [Fix] account for Safari 10 which reports the wrong toString on generator functions + * [Refactor] remove useless `Object#toString` check + * [Dev Deps] update everything; add linting + * [Tests] use pretest/posttest for linting/security + * [Tests] on all minors of node and io.js + +1.0.4 / 2015-03-03 +================= + * Add support for concise generator methods (#2) This is a patch change since concise methods are not in any actual released engines yet. + * Test on latest `io.js` + * Update `semver` + +1.0.3 / 2015-01-31 +================= + * Speed up travis-ci tests + * Run tests against a faked @@toStringTag + * Bail out early when typeof is not "function" + +1.0.2 / 2015-01-20 +================= + * Update `jscs`, `tape` + * Fix tests in newer v8 (and io.js) where Object#toString.call of a generator is GeneratorFunction, not Function + +1.0.1 / 2014-12-14 +================= + * Update `jscs`, `tape` + * Tweaks to README + * Use `make-generator-function` in tests + +1.0.0 / 2014-08-09 +================= + * Initial release. diff --git a/node_modules/is-generator-function/LICENSE b/node_modules/is-generator-function/LICENSE new file mode 100644 index 00000000..47b7b507 --- /dev/null +++ b/node_modules/is-generator-function/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/is-generator-function/Makefile b/node_modules/is-generator-function/Makefile new file mode 100644 index 00000000..ccca6f1c --- /dev/null +++ b/node_modules/is-generator-function/Makefile @@ -0,0 +1,61 @@ +# Since we rely on paths relative to the makefile location, abort if make isn't being run from there. +$(if $(findstring /,$(MAKEFILE_LIST)),$(error Please only invoke this makefile from the directory it resides in)) + + # The files that need updating when incrementing the version number. +VERSIONED_FILES := *.js */*.js *.json README* + + +# Add the local npm packages' bin folder to the PATH, so that `make` can find them, when invoked directly. +# Note that rather than using `$(npm bin)` the 'node_modules/.bin' path component is hard-coded, so that invocation works even from an environment +# where npm is (temporarily) unavailable due to having deactivated an nvm instance loaded into the calling shell in order to avoid interference with tests. +export PATH := $(shell printf '%s' "$$PWD/node_modules/.bin:$$PATH") +UTILS := semver replace +# Make sure that all required utilities can be located. +UTIL_CHECK := $(or $(shell PATH="$(PATH)" which $(UTILS) >/dev/null && echo 'ok'),$(error Did you forget to run `npm install` after cloning the repo? At least one of the required supporting utilities not found: $(UTILS))) + +# Default target (by virtue of being the first non '.'-prefixed in the file). +.PHONY: _no-target-specified +_no-target-specified: + $(error Please specify the target to make - `make list` shows targets. Alternatively, use `npm test` to run the default tests; `npm run` shows all tests) + +# Lists all targets defined in this makefile. +.PHONY: list +list: + @$(MAKE) -pRrn : -f $(MAKEFILE_LIST) 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | command grep -v -e '^[^[:alnum:]]' -e '^$@$$command ' | sort + +# All-tests target: invokes the specified test suites for ALL shells defined in $(SHELLS). +.PHONY: test +test: + @npm test + +.PHONY: _ensure-tag +_ensure-tag: +ifndef TAG + $(error Please invoke with `make TAG=<new-version> release`, where <new-version> is either an increment specifier (patch, minor, major, prepatch, preminor, premajor, prerelease), or an explicit major.minor.patch version number) +endif + +CHANGELOG_ERROR = $(error No CHANGELOG specified) +.PHONY: _ensure-changelog +_ensure-changelog: + @ (git status -sb --porcelain | command grep -E '^( M|[MA] ) CHANGELOG.md' > /dev/null) || (echo no CHANGELOG.md specified && exit 2) + +# Ensures that the git workspace is clean. +.PHONY: _ensure-clean +_ensure-clean: + @[ -z "$$((git status --porcelain --untracked-files=no || echo err) | command grep -v 'CHANGELOG.md')" ] || { echo "Workspace is not clean; please commit changes first." >&2; exit 2; } + +# Makes a release; invoke with `make TAG=<versionOrIncrementSpec> release`. +.PHONY: release +release: _ensure-tag _ensure-changelog _ensure-clean + @old_ver=`git describe --abbrev=0 --tags --match 'v[0-9]*.[0-9]*.[0-9]*'` || { echo "Failed to determine current version." >&2; exit 1; }; old_ver=$${old_ver#v}; \ + new_ver=`echo "$(TAG)" | sed 's/^v//'`; new_ver=$${new_ver:-patch}; \ + if printf "$$new_ver" | command grep -q '^[0-9]'; then \ + semver "$$new_ver" >/dev/null || { echo 'Invalid version number specified: $(TAG) - must be major.minor.patch' >&2; exit 2; }; \ + semver -r "> $$old_ver" "$$new_ver" >/dev/null || { echo 'Invalid version number specified: $(TAG) - must be HIGHER than current one.' >&2; exit 2; } \ + else \ + new_ver=`semver -i "$$new_ver" "$$old_ver"` || { echo 'Invalid version-increment specifier: $(TAG)' >&2; exit 2; } \ + fi; \ + printf "=== Bumping version **$$old_ver** to **$$new_ver** before committing and tagging:\n=== TYPE 'proceed' TO PROCEED, anything else to abort: " && read response && [ "$$response" = 'proceed' ] || { echo 'Aborted.' >&2; exit 2; }; \ + replace "$$old_ver" "$$new_ver" -- $(VERSIONED_FILES) && \ + git commit -m "v$$new_ver" $(VERSIONED_FILES) CHANGELOG.md && \ + git tag -a -m "v$$new_ver" "v$$new_ver" diff --git a/node_modules/is-generator-function/README.md b/node_modules/is-generator-function/README.md new file mode 100644 index 00000000..027facf4 --- /dev/null +++ b/node_modules/is-generator-function/README.md @@ -0,0 +1,42 @@ +# is-generator-function <sup>[![Version Badge][2]][1]</sup> + +[![Build Status][3]][4] +[![dependency status][5]][6] +[![dev dependency status][7]][8] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][11]][1] + +[![browser support][9]][10] + +Is this a native generator function? + +## Example + +```js +var isGeneratorFunction = require('is-generator-function'); +assert(!isGeneratorFunction(function () {})); +assert(!isGeneratorFunction(null)); +assert(isGeneratorFunction(function* () { yield 42; return Infinity; })); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[1]: https://npmjs.org/package/is-generator-function +[2]: http://versionbadg.es/ljharb/is-generator-function.svg +[3]: https://travis-ci.org/ljharb/is-generator-function.svg +[4]: https://travis-ci.org/ljharb/is-generator-function +[5]: https://david-dm.org/ljharb/is-generator-function.svg +[6]: https://david-dm.org/ljharb/is-generator-function +[7]: https://david-dm.org/ljharb/is-generator-function/dev-status.svg +[8]: https://david-dm.org/ljharb/is-generator-function#info=devDependencies +[9]: https://ci.testling.com/ljharb/is-generator-function.png +[10]: https://ci.testling.com/ljharb/is-generator-function +[11]: https://nodei.co/npm/is-generator-function.png?downloads=true&stars=true +[license-image]: http://img.shields.io/npm/l/is-generator-function.svg +[license-url]: LICENSE +[downloads-image]: http://img.shields.io/npm/dm/is-generator-function.svg +[downloads-url]: http://npm-stat.com/charts.html?package=is-generator-function + diff --git a/node_modules/is-generator-function/index.js b/node_modules/is-generator-function/index.js new file mode 100644 index 00000000..306a299c --- /dev/null +++ b/node_modules/is-generator-function/index.js @@ -0,0 +1,32 @@ +'use strict'; + +var toStr = Object.prototype.toString; +var fnToStr = Function.prototype.toString; +var isFnRegex = /^\s*(?:function)?\*/; +var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol'; +var getProto = Object.getPrototypeOf; +var getGeneratorFunc = function () { // eslint-disable-line consistent-return + if (!hasToStringTag) { + return false; + } + try { + return Function('return function*() {}')(); + } catch (e) { + } +}; +var generatorFunc = getGeneratorFunc(); +var GeneratorFunction = generatorFunc ? getProto(generatorFunc) : {}; + +module.exports = function isGeneratorFunction(fn) { + if (typeof fn !== 'function') { + return false; + } + if (isFnRegex.test(fnToStr.call(fn))) { + return true; + } + if (!hasToStringTag) { + var str = toStr.call(fn); + return str === '[object GeneratorFunction]'; + } + return getProto(fn) === GeneratorFunction; +}; diff --git a/node_modules/is-generator-function/package.json b/node_modules/is-generator-function/package.json new file mode 100644 index 00000000..2ef6b2b8 --- /dev/null +++ b/node_modules/is-generator-function/package.json @@ -0,0 +1,73 @@ +{ + "name": "is-generator-function", + "version": "1.0.7", + "description": "Determine if a function is a native generator function.", + "main": "index.js", + "scripts": { + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "node --es-staging --harmony test", + "posttests-only": "npm run test:corejs && npm run test:uglified", + "test:corejs": "node test/corejs", + "test:uglified": "node test/uglified", + "posttest": "npm run security", + "coverage": "covert test", + "lint": "npm run jscs && npm run eslint", + "jscs": "jscs *.js */*.js", + "eslint": "eslint *.js */*.js", + "security": "nsp check" + }, + "repository": { + "type": "git", + "url": "git://github.com/ljharb/is-generator-function.git" + }, + "keywords": [ + "generator", + "generator function", + "es6", + "es2015", + "yield", + "function", + "function*" + ], + "author": "Jordan Harband", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/is-generator-function/issues" + }, + "dependencies": {}, + "devDependencies": { + "@ljharb/eslint-config": "^12.2.1", + "core-js": "^2.5.3", + "covert": "^1.1.0", + "eslint": "^4.14.0", + "jscs": "^3.0.7", + "make-generator-function": "^1.1.0", + "nsp": "^3.1.0", + "replace": "^0.3.0", + "semver": "^5.4.1", + "tape": "^4.8.0", + "uglify-register": "^1.0.1" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "iexplore/6.0..latest", + "firefox/3.0..6.0", + "firefox/15.0..latest", + "firefox/nightly", + "chrome/4.0..10.0", + "chrome/20.0..latest", + "chrome/canary", + "opera/10.0..latest", + "opera/next", + "safari/4.0..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/is-generator-function/test/.eslintrc b/node_modules/is-generator-function/test/.eslintrc new file mode 100644 index 00000000..168cdf85 --- /dev/null +++ b/node_modules/is-generator-function/test/.eslintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "max-statements-per-line": [2, { "max": 2 }] + } +} diff --git a/node_modules/is-generator-function/test/corejs.js b/node_modules/is-generator-function/test/corejs.js new file mode 100644 index 00000000..73f0c89c --- /dev/null +++ b/node_modules/is-generator-function/test/corejs.js @@ -0,0 +1,5 @@ +'use strict'; + +require('core-js'); + +require('./'); diff --git a/node_modules/is-generator-function/test/index.js b/node_modules/is-generator-function/test/index.js new file mode 100644 index 00000000..a33cc2b7 --- /dev/null +++ b/node_modules/is-generator-function/test/index.js @@ -0,0 +1,94 @@ +'use strict'; + +/* globals window */ + +var test = require('tape'); +var isGeneratorFunction = require('../index'); +var generatorFunc = require('make-generator-function'); +var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol'; + +var forEach = function (arr, func) { + var i; + for (i = 0; i < arr.length; ++i) { + func(arr[i], i, arr); + } +}; + +test('returns false for non-functions', function (t) { + var nonFuncs = [ + true, + false, + null, + undefined, + {}, + [], + /a/g, + 'string', + 42, + new Date() + ]; + t.plan(nonFuncs.length); + forEach(nonFuncs, function (nonFunc) { + t.notOk(isGeneratorFunction(nonFunc), nonFunc + ' is not a function'); + }); + t.end(); +}); + +test('returns false for non-generator functions', function (t) { + var func = function () {}; + t.notOk(isGeneratorFunction(func), 'anonymous function is not an generator function'); + + var namedFunc = function foo() {}; + t.notOk(isGeneratorFunction(namedFunc), 'named function is not an generator function'); + + if (typeof window === 'undefined') { + t.skip('window.alert is not an generator function'); + } else { + t.notOk(isGeneratorFunction(window.alert), 'window.alert is not an generator function'); + } + t.end(); +}); + +test('returns false for non-generator function with faked toString', function (t) { + var func = function () {}; + func.toString = function () { return 'function* () { return "TOTALLY REAL I SWEAR!"; }'; }; + + t.notEqual(String(func), Function.prototype.toString.apply(func), 'faked toString is not real toString'); + t.notOk(isGeneratorFunction(func), 'anonymous function with faked toString is not a generator function'); + t.end(); +}); + +test('returns false for non-generator function with faked @@toStringTag', { skip: !hasToStringTag }, function (t) { + var fakeGenFunction = { + toString: function () { return String(generatorFunc); }, + valueOf: function () { return generatorFunc; } + }; + fakeGenFunction[Symbol.toStringTag] = 'GeneratorFunction'; + t.notOk(isGeneratorFunction(fakeGenFunction), 'fake GeneratorFunction with @@toStringTag "GeneratorFunction" is not a generator function'); + t.end(); +}); + +test('returns true for generator functions', function (t) { + if (generatorFunc) { + t.ok(isGeneratorFunction(generatorFunc), 'generator function is generator function'); + } else { + t.skip('generator function is generator function - this environment does not support ES6 generator functions. Please run `node --harmony`, or use a supporting browser.'); + } + t.end(); +}); + +test('concise methods', { skip: !generatorFunc || !generatorFunc.concise }, function (t) { + t.test('returns true for concise generator methods', function (st) { + st.ok(isGeneratorFunction(generatorFunc.concise), 'concise generator method is generator function'); + st.end(); + }); + + t.test('returns false for concise non-generator methods', function (st) { + var conciseMethod = Function('return { concise() {} }.concise;')(); + st.equal(typeof conciseMethod, 'function', 'assert: concise method exists'); + st.notOk(isGeneratorFunction(conciseMethod), 'concise non-generator method is not generator function'); + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/is-generator-function/test/uglified.js b/node_modules/is-generator-function/test/uglified.js new file mode 100644 index 00000000..fd82b553 --- /dev/null +++ b/node_modules/is-generator-function/test/uglified.js @@ -0,0 +1,8 @@ +'use strict'; + +require('uglify-register/api').register({ + exclude: [/\/node_modules\//, /\/test\//], + uglify: { mangle: true } +}); + +require('./'); |
