diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 000000000..758cf1e31 --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,57 @@ +{ + "projectName": "react-native-dom", + "projectOwner": "vincentriemer", + "repoType": "github", + "repoHost": "https://github.com", + "files": [ + "README.md" + ], + "imageSize": 100, + "commit": false, + "contributors": [ + { + "login": "vincentriemer", + "name": "Vincent Riemer", + "avatar_url": "https://avatars2.githubusercontent.com/u/1398555?v=4", + "profile": "http://vincentriemer.com", + "contributions": [ + "code", + "bug", + "doc", + "example", + "ideas", + "infra", + "platform", + "talk" + ] + }, + { + "login": "joegoodall1", + "name": "Joe Goodall", + "avatar_url": "https://avatars0.githubusercontent.com/u/8888799?v=4", + "profile": "https://uk.linkedin.com/in/joegoodall", + "contributions": [ + "doc" + ] + }, + { + "login": "frosato-ekino", + "name": "FranΓ§ois Rosato", + "avatar_url": "https://avatars3.githubusercontent.com/u/31624379?v=4", + "profile": "https://github.com/frosato-ekino", + "contributions": [ + "doc" + ] + }, + { + "login": "motiz88", + "name": "Moti Zilberman", + "avatar_url": "https://avatars2.githubusercontent.com/u/2246565?v=4", + "profile": "https://github.com/motiz88", + "contributions": [ + "code", + "doc" + ] + } + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..b8eef5391 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,22 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + + +# [0.2.0](https://github.com/vincentriemer/react-native-dom/compare/v0.1.2...v0.2.0) (2018-06-03) + + +### Bug Fixes + +* **flow:** Fix flow errors ([0304c11](https://github.com/vincentriemer/react-native-dom/commit/0304c11)) +* **RCTBridge:** Silence bundle progress parse errors ([62ddca5](https://github.com/vincentriemer/react-native-dom/commit/62ddca5)) +* **RCTPropsAnimatedNode:** Fix iteration over prop config ([cdabeb5](https://github.com/vincentriemer/react-native-dom/commit/cdabeb5)) + + +### Features + +* **AsyncLocalStorage:** Add clear method to native AsyncLocalStorage ([6e72487](https://github.com/vincentriemer/react-native-dom/commit/6e72487)) +* **RCTImage:** Add Image resizeMode=repeat ([3d441ca](https://github.com/vincentriemer/react-native-dom/commit/3d441ca)) +* **RCTRootView:** Begin work on decoupling the root view from the document's body ([79a02bc](https://github.com/vincentriemer/react-native-dom/commit/79a02bc)) +* **RCTVibration:** Add Vibration API ([9277d56](https://github.com/vincentriemer/react-native-dom/commit/9277d56)) diff --git a/README.md b/README.md index f98cce3e1..cd9b5708b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# React Native DOM · [![CircleCI](https://circleci.com/gh/vincentriemer/react-native-dom.svg?style=shield&circle-token=96448c580730a065cb93c0a10af0f85f6c954166)](https://circleci.com/gh/vincentriemer/react-native-dom) [![npm version](https://badge.fury.io/js/react-native-dom.svg)](https://badge.fury.io/js/react-native-dom) [![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lernajs.io/) +# React Native DOM · [![CircleCI](https://circleci.com/gh/vincentriemer/react-native-dom.svg?style=shield&circle-token=96448c580730a065cb93c0a10af0f85f6c954166)](https://circleci.com/gh/vincentriemer/react-native-dom) [![npm version](https://badge.fury.io/js/react-native-dom.svg)](https://badge.fury.io/js/react-native-dom) [![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lernajs.io/) [![All Contributors](https://img.shields.io/badge/all_contributors-4-orange.svg)](#contributors) An experimental, comprehensive port of React Native to the web. @@ -102,6 +102,9 @@ that gets generated from the rnpm plugin). # Ensure development-speecific code is stripped from the bundle export NODE_ENV=production +# Make the dist directory, or the build command below will fail. +mkdir -p ./dom/dist + # Build the main thread bundle react-native bundle \ --config $(pwd)/rn-cli.config.js \ @@ -184,3 +187,20 @@ like to see. A live deployment of the RNTester project (used primarily for manually testing changes) can be found at [rntester.now.sh](https://rntester.now.sh) + +## Contributors + +Thanks goes to these wonderful people +([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)): + + + + +| [
Vincent Riemer](http://vincentriemer.com)
[πŸ’»](https://github.com/vincentriemer/react-native-dom/commits?author=vincentriemer "Code") [πŸ›](https://github.com/vincentriemer/react-native-dom/issues?q=author%3Avincentriemer "Bug reports") [πŸ“–](https://github.com/vincentriemer/react-native-dom/commits?author=vincentriemer "Documentation") [πŸ’‘](#example-vincentriemer "Examples") [πŸ€”](#ideas-vincentriemer "Ideas, Planning, & Feedback") [πŸš‡](#infra-vincentriemer "Infrastructure (Hosting, Build-Tools, etc)") [πŸ“¦](#platform-vincentriemer "Packaging/porting to new platform") [πŸ“’](#talk-vincentriemer "Talks") | [
Joe Goodall](https://uk.linkedin.com/in/joegoodall)
[πŸ“–](https://github.com/vincentriemer/react-native-dom/commits?author=joegoodall1 "Documentation") | [
François Rosato](https://github.com/frosato-ekino)
[πŸ“–](https://github.com/vincentriemer/react-native-dom/commits?author=frosato-ekino "Documentation") | [
Moti Zilberman](https://github.com/motiz88)
[πŸ’»](https://github.com/vincentriemer/react-native-dom/commits?author=motiz88 "Code") [πŸ“–](https://github.com/vincentriemer/react-native-dom/commits?author=motiz88 "Documentation") | +| :---: | :---: | :---: | :---: | + + + +This project follows the +[all-contributors](https://github.com/kentcdodds/all-contributors) +specification. Contributions of any kind welcome! diff --git a/lerna.json b/lerna.json index 9caaeadb5..257d7ae74 100644 --- a/lerna.json +++ b/lerna.json @@ -1,8 +1,10 @@ { "lerna": "2.4.0", - "packages": ["packages/*"], + "packages": [ + "packages/*" + ], "npmClient": "yarn", - "version": "0.1.2", + "version": "0.2.0", "exact": true, "command": { "publish": { diff --git a/package.json b/package.json index 713c8a499..3a2b1f6e5 100644 --- a/package.json +++ b/package.json @@ -23,9 +23,11 @@ "precommit": "lint-staged", "compile": "lerna run compile --stream", "compile:components": "lerna run compile --scope rndom-* --stream", + "contributors:add": "all-contributors add", + "contributors:generate": "all-contributors generate", "fmt": "prettier --write 'packages/**/*.js'", "lint": "flow check && eslint packages", - "release": "lerna publish --conventional-commits --yes", + "release": "lerna publish --conventional-commits --yes --cd-version-minor", "release:canary": "lerna publish --canary --yes --cd-version minor", "run-examples": "cd packages/react-native-dom && yarn run-examples", "test": "lerna run test" @@ -36,6 +38,7 @@ } }, "devDependencies": { + "all-contributors-cli": "^4.11.1", "babel-eslint": "^8.2.3", "cz-conventional-changelog": "^2.1.0", "eslint": "^4.19.1", diff --git a/packages/react-native-dom/CHANGELOG.md b/packages/react-native-dom/CHANGELOG.md new file mode 100644 index 000000000..b8eef5391 --- /dev/null +++ b/packages/react-native-dom/CHANGELOG.md @@ -0,0 +1,22 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + + +# [0.2.0](https://github.com/vincentriemer/react-native-dom/compare/v0.1.2...v0.2.0) (2018-06-03) + + +### Bug Fixes + +* **flow:** Fix flow errors ([0304c11](https://github.com/vincentriemer/react-native-dom/commit/0304c11)) +* **RCTBridge:** Silence bundle progress parse errors ([62ddca5](https://github.com/vincentriemer/react-native-dom/commit/62ddca5)) +* **RCTPropsAnimatedNode:** Fix iteration over prop config ([cdabeb5](https://github.com/vincentriemer/react-native-dom/commit/cdabeb5)) + + +### Features + +* **AsyncLocalStorage:** Add clear method to native AsyncLocalStorage ([6e72487](https://github.com/vincentriemer/react-native-dom/commit/6e72487)) +* **RCTImage:** Add Image resizeMode=repeat ([3d441ca](https://github.com/vincentriemer/react-native-dom/commit/3d441ca)) +* **RCTRootView:** Begin work on decoupling the root view from the document's body ([79a02bc](https://github.com/vincentriemer/react-native-dom/commit/79a02bc)) +* **RCTVibration:** Add Vibration API ([9277d56](https://github.com/vincentriemer/react-native-dom/commit/9277d56)) diff --git a/packages/react-native-dom/Libraries/Vibration/Vibration.dom.js b/packages/react-native-dom/Libraries/Vibration/Vibration.dom.js new file mode 100644 index 000000000..c313893df --- /dev/null +++ b/packages/react-native-dom/Libraries/Vibration/Vibration.dom.js @@ -0,0 +1,114 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @providesModule Vibration + * @flow + * @jsdoc + */ +"use strict"; + +var RCTVibration = require("NativeModules").Vibration; +var Platform = require("Platform"); + +/** + * Vibration API + * + * See https://facebook.github.io/react-native/docs/vibration.html + */ + +var _vibrating: boolean = false; +var _id: number = 0; // _id is necessary to prevent race condition. + +function vibrateByPattern(pattern: Array, repeat: boolean = false) { + if (_vibrating) { + return; + } + _vibrating = true; + if (pattern[0] === 0) { + RCTVibration.vibrate(); + pattern = pattern.slice(1); + } + if (pattern.length === 0) { + _vibrating = false; + return; + } + setTimeout(() => vibrateScheduler(++_id, pattern, repeat, 1), pattern[0]); +} + +function vibrateScheduler( + id, + pattern: Array, + repeat: boolean, + nextIndex: number +) { + if (!_vibrating || id !== _id) { + return; + } + RCTVibration.vibrate(); + if (nextIndex >= pattern.length) { + if (repeat) { + nextIndex = 0; + } else { + _vibrating = false; + return; + } + } + setTimeout( + () => vibrateScheduler(id, pattern, repeat, nextIndex + 1), + pattern[nextIndex] + ); +} + +var Vibration = { + /** + * Trigger a vibration with specified `pattern`. + * + * See https://facebook.github.io/react-native/docs/vibration.html#vibrate + */ + vibrate: function( + pattern: number | Array = 400, + repeat: boolean = false + ) { + if (Platform.OS === "android" || Platform.OS === "dom") { + if (typeof pattern === "number") { + RCTVibration.vibrate(pattern); + } else if (Array.isArray(pattern)) { + if (Platform.OS === "android") { + RCTVibration.vibrateByPattern(pattern, repeat ? 0 : -1); + } else { + RCTVibration.vibrateByPattern(pattern, repeat); + } + } else { + throw new Error("Vibration pattern should be a number or array"); + } + } else { + if (_vibrating) { + return; + } + if (typeof pattern === "number") { + RCTVibration.vibrate(); + } else if (Array.isArray(pattern)) { + vibrateByPattern(pattern, repeat); + } else { + throw new Error("Vibration pattern should be a number or array"); + } + } + }, + /** + * Stop vibration + * + * See https://facebook.github.io/react-native/docs/vibration.html#cancel + */ + cancel: function() { + if (Platform.OS === "ios") { + _vibrating = false; + } else { + RCTVibration.cancel(); + } + } +}; + +module.exports = Vibration; diff --git a/packages/react-native-dom/RNTester b/packages/react-native-dom/RNTester index 837d48bcd..13471daf6 160000 --- a/packages/react-native-dom/RNTester +++ b/packages/react-native-dom/RNTester @@ -1 +1 @@ -Subproject commit 837d48bcd8f935adff80cbfae2a07843a45cfb1b +Subproject commit 13471daf6e90e582e482707b5cf642f25f7061ab diff --git a/packages/react-native-dom/ReactDom/index.js b/packages/react-native-dom/ReactDom/index.js index 870237ae0..855f50c51 100644 --- a/packages/react-native-dom/ReactDom/index.js +++ b/packages/react-native-dom/ReactDom/index.js @@ -22,7 +22,7 @@ import RCTView from "RCTView"; import RCTViewManager from "RCTViewManager"; import RCTEventEmitter from "RCTNativeEventEmitter"; import CustomElement from "CustomElement"; -import RCTEventDispatcher from "RCTEventDispatcher"; +import RCTEventDispatcher, { type RCTEvent } from "RCTEventDispatcher"; import _RCTUIManager from "RCTUIManager"; declare var __DEV__: boolean; @@ -50,7 +50,7 @@ export { type RCTUIManager = $await; // Export type definitions useful for native module development -export type { RCTUIManager, RCTEventDispatcher, RCTBridge }; +export type { RCTUIManager, RCTEventDispatcher, RCTBridge, RCTEvent }; // Register Built-in Native Modules const builtInNativeModules: any[] = [ @@ -84,7 +84,8 @@ const builtInNativeModules: any[] = [ import("RCTRedBox"), import("RCTWebViewManager"), import("RCTNetworkingNative"), - import("RCTBlobManager") + import("RCTBlobManager"), + import("RCTVibration") ]; // Development Specific Native Modules diff --git a/packages/react-native-dom/ReactDom/modules/RCTVibration.js b/packages/react-native-dom/ReactDom/modules/RCTVibration.js new file mode 100644 index 000000000..f2a5a8833 --- /dev/null +++ b/packages/react-native-dom/ReactDom/modules/RCTVibration.js @@ -0,0 +1,49 @@ +/** + * @providesModule RCTVibration + * @flow + */ + +import RCTBridge, { + RCTFunctionTypeNormal, + RCT_EXPORT_METHOD, + RCT_EXPORT_MODULE +} from "RCTBridge"; + +@RCT_EXPORT_MODULE("RCTVibration") +class RCTVibration { + _intervalHandle: IntervalID; + + @RCT_EXPORT_METHOD(RCTFunctionTypeNormal) + vibrateByPattern(pattern: Array, repeat: boolean = false) { + if (!navigator.vibrate) { + return; + } + // Keep flow happy re: possible mutations of navigator + const vibrate = navigator.vibrate.bind(navigator); + vibrate(pattern); + clearInterval(this._intervalHandle); + if (repeat) { + const patternDuration = pattern.reduce((a, b) => a + b, 0); + this._intervalHandle = setInterval( + () => vibrate(pattern), + patternDuration + ); + } + } + + @RCT_EXPORT_METHOD(RCTFunctionTypeNormal) + vibrate(duration: number) { + if (!navigator.vibrate) { + return; + } + navigator.vibrate(duration); + clearInterval(this._intervalHandle); + } + + @RCT_EXPORT_METHOD(RCTFunctionTypeNormal) + cancel() { + this.vibrate(0); + } +} + +export default RCTVibration; diff --git a/packages/react-native-dom/ReactDom/views/Image/RCTImageView.js b/packages/react-native-dom/ReactDom/views/Image/RCTImageView.js index 12097675e..c5d6510bd 100644 --- a/packages/react-native-dom/ReactDom/views/Image/RCTImageView.js +++ b/packages/react-native-dom/ReactDom/views/Image/RCTImageView.js @@ -53,6 +53,11 @@ class RCTImageView extends RCTView { _blurRadius: ?number; _tintColor: ?string; + _tile: ?boolean; // resizeMode === "repeat" + _src: ?string; // Used to set the tile image + _imageWidth: ?number; // Used to calculate the tile image's scale factor + _imageHeight: ?number; // Used to calculate the tile image's scale factor + constructor(bridge: RCTBridge) { super(bridge); @@ -108,6 +113,50 @@ class RCTImageView extends RCTView { this.imageElementAlt.style.filter = filterStrings.join(" "); } + updateTile() { + let style; + + if (this._tile) { + const { + frameSize: { width: frameWidth, height: frameHeight }, + _src: src, + _imageWidth: imageWidth, + _imageHeight: imageHeight + } = this; + + if (!frameWidth || !frameHeight || !imageWidth || !imageHeight || !src) { + return; + } + + const scaleDownFactor = Math.min( + 1, + frameWidth / imageWidth, + frameHeight / imageHeight + ); + + style = { + backgroundImage: `url(${encodeURI(src)})`, + backgroundSize: ` + ${scaleDownFactor * imageWidth}px + ${scaleDownFactor * imageHeight}px + `, + backgroundRepeat: "repeat", + backgroundPosition: "0 0", + objectPosition: `${-imageWidth - 1}px ${-imageHeight - 1}px` + }; + } else { + style = { + backgroundImage: "", + backgroundSize: "", + backgroundRepeat: "", + backgroundPosition: "", + objectPosition: "" + }; + } + Object.assign(this.imageElement.style, style); + Object.assign(this.imageElementAlt.style, style); + } + forceRasterization() { const mountedImage = this.mountedImage; if (this._tintColor != null && mountedImage != null) { @@ -132,6 +181,7 @@ class RCTImageView extends RCTView { case "cover": outputValue = value; break; + case "repeat": case "center": outputValue = "scale-down"; break; @@ -149,6 +199,9 @@ class RCTImageView extends RCTView { Object.assign(this.imageElementAlt.style, { objectFit: outputValue }); + + this._tile = value === "repeat"; + this.updateTile(); } set blurRadius(value: ?number) { @@ -256,6 +309,9 @@ class RCTImageView extends RCTView { : this.imageElement; pendingImage.src = image.src; + this._src = pendingImage.src; + // We call updateTile() below so can skip it here + // $FlowFixMe if (typeof pendingImage.decode === "function") { return pendingImage.decode().then(() => pendingImage); @@ -263,6 +319,11 @@ class RCTImageView extends RCTView { return pendingImage; }) .then((image: HTMLImageElement) => { + this._imageWidth = image.width; + this._imageHeight = image.height; + + this.updateTile(); + this.mountedImage && this.mountedImage.remove(); this.childContainer.appendChild(image); diff --git a/packages/react-native-dom/package.json b/packages/react-native-dom/package.json index d492a6197..6d7a11e1b 100644 --- a/packages/react-native-dom/package.json +++ b/packages/react-native-dom/package.json @@ -1,6 +1,6 @@ { "name": "react-native-dom", - "version": "0.1.2", + "version": "0.2.0", "homepage": "https://github.com/vincentriemer/react-native-dom", "bugs": { "url": "https://github.com/vincentriemer/react-native-dom/issues" @@ -11,7 +11,12 @@ "email": "vincentriemer+rndom@gmail.com", "url": "https://vincentriemer.com" }, - "files": ["lib", "Libraries", "local-cli", "flow-typed"], + "files": [ + "lib", + "Libraries", + "local-cli", + "flow-typed" + ], "main": "lib/index.js", "repository": { "type": "git", @@ -19,12 +24,9 @@ }, "scripts": { "prebuild:rntester": "rimraf dist && mkdir -p dist", - "build:rntester": - "yarn run build:rntester:client && yarn run build:rntester:bundle && cp ./RNTester/js/index.html ./dist/index.html", - "build:rntester:bundle": - "react-native bundle --config $(pwd)/rn-cli.config.js --dev false --entry-file ./RNTester/js/RNTesterApp.dom.js --bundle-output ./dist/RNTesterApp.dom.bundle --platform dom --assets-dest ./dist --reset-cache", - "build:rntester:client": - "react-native bundle --config $(pwd)/rn-cli.config.js --dev false --entry-file ./RNTester/js/client.js --bundle-output ./dist/client.bundle --platform dom --reset-cache", + "build:rntester": "yarn run build:rntester:client && yarn run build:rntester:bundle && cp ./RNTester/js/index.html ./dist/index.html", + "build:rntester:bundle": "react-native bundle --config $(pwd)/rn-cli.config.js --dev false --entry-file ./RNTester/js/RNTesterApp.dom.js --bundle-output ./dist/RNTesterApp.dom.bundle --platform dom --assets-dest ./dist --reset-cache", + "build:rntester:client": "react-native bundle --config $(pwd)/rn-cli.config.js --dev false --entry-file ./RNTester/js/client.js --bundle-output ./dist/client.bundle --platform dom --reset-cache", "precompile": "rimraf lib", "compile": "BABEL_ENV=lib babel ReactDom --out-dir lib --source-maps", "postcompile": "flow-copy-source ReactDom lib", @@ -36,10 +38,16 @@ "jest": { "haste": { "defaultPlatform": "dom", - "providesModuleNodeModules": ["react-native-dom"], - "platforms": ["dom"] + "providesModuleNodeModules": [ + "react-native-dom" + ], + "platforms": [ + "dom" + ] }, - "roots": ["/Libraries/"] + "roots": [ + "/Libraries/" + ] }, "dependencies": { "@webcomponents/webcomponentsjs": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index 511123e3b..92d89fdc5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -626,6 +626,18 @@ align-text@^0.1.1, align-text@^0.1.3: longest "^1.0.1" repeat-string "^1.5.2" +all-contributors-cli@^4.11.1: + version "4.11.1" + resolved "https://registry.yarnpkg.com/all-contributors-cli/-/all-contributors-cli-4.11.1.tgz#8e4d28a69bb60006b72d53758177a0c7b8a20f19" + dependencies: + async "^2.0.0-rc.1" + chalk "^2.3.0" + inquirer "^4.0.0" + lodash "^4.11.2" + pify "^3.0.0" + request "^2.72.0" + yargs "^10.0.3" + amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" @@ -893,7 +905,7 @@ async@^1.4.0, async@^1.4.2, async@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.1.4, async@^2.4.0: +async@^2.0.0-rc.1, async@^2.1.4, async@^2.4.0: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: @@ -2059,7 +2071,7 @@ chalk@2.4.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1: +chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -3520,7 +3532,7 @@ external-editor@^1.1.0: spawn-sync "^1.0.15" tmp "^0.0.29" -external-editor@^2.0.4: +external-editor@^2.0.4, external-editor@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" dependencies: @@ -4607,6 +4619,25 @@ inquirer@^3.0.6, inquirer@^3.2.2: strip-ansi "^4.0.0" through "^2.3.6" +inquirer@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-4.0.2.tgz#cc678b4cbc0e183a3500cc63395831ec956ab0a3" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + interpret@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" @@ -5806,7 +5837,7 @@ lodash@^3.1.0, lodash@^3.2.0, lodash@^3.3.1, lodash@^3.5.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.11.1, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1: +lodash@^4.11.1, lodash@^4.11.2, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -7410,7 +7441,11 @@ replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" +<<<<<<< .merge_file_WPKO4l request@2.x.x, request@^2.79.0, request@^2.83.0: +======= +request@2.x.x, request@^2.72.0, request@^2.79.0: +>>>>>>> .merge_file_TdyDrY version "2.87.0" resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" dependencies: @@ -9102,12 +9137,35 @@ yargs-parser@^7.0.0: dependencies: camelcase "^4.1.0" +yargs-parser@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" + dependencies: + camelcase "^4.1.0" + yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" dependencies: camelcase "^4.1.0" +yargs@^10.0.3: + version "10.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^8.1.0" + yargs@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b"