@expo/package-manager
Advanced tools
Comparing version 0.0.0 to 0.0.1-canary-20231125-d600e44
@@ -1,44 +0,46 @@ | ||
import { SpawnOptions } from '@expo/spawn-async'; | ||
export declare function isUsingYarn(projectRoot: string): boolean; | ||
declare type Logger = (...args: any[]) => void; | ||
import { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/spawn-async'; | ||
import { PendingSpawnPromise } from './utils/spawn'; | ||
export interface PackageManagerOptions extends SpawnOptions { | ||
/** | ||
* If the package manager should run in silent mode. | ||
* Note, this will hide possible error output from executed commands. | ||
* When running in silent mode, make sure you handle them properly. | ||
*/ | ||
silent?: boolean; | ||
/** | ||
* The logging method used to communicate the command which is executed. | ||
* Without `silent`, this defaults to `console.log`. | ||
* When `silent` is set to `true`, this defaults to a no-op. | ||
*/ | ||
log?: (...args: any[]) => void; | ||
} | ||
export interface PackageManager { | ||
installAsync(): Promise<void>; | ||
addAsync(...names: string[]): Promise<void>; | ||
addDevAsync(...names: string[]): Promise<void>; | ||
/** The options for this package manager */ | ||
readonly options: PackageManagerOptions; | ||
/** Run any command using the package manager */ | ||
runAsync(command: string[]): SpawnPromise<SpawnResult>; | ||
/** Get the version of the used package manager */ | ||
versionAsync(): Promise<string>; | ||
/** Get a single configuration property from the package manager */ | ||
getConfigAsync(key: string): Promise<string>; | ||
/** Remove the lock file within the project, if any */ | ||
removeLockfileAsync(): Promise<void>; | ||
/** Get the workspace root package manager, if this project is within a workspace/monorepo */ | ||
workspaceRoot(): PackageManager | null; | ||
/** Install all current dependencies using the package manager */ | ||
installAsync(): Promise<SpawnResult> | SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; | ||
/** Uninstall all current dependencies by removing the folder containing the packages */ | ||
uninstallAsync(): Promise<void>; | ||
/** Add a normal dependency to the project */ | ||
addAsync(namesOrFlags: string[]): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; | ||
/** Add a development dependency to the project */ | ||
addDevAsync(namesOrFlags: string[]): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; | ||
/** Add a global dependency to the environment */ | ||
addGlobalAsync(namesOrFlags: string[]): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; | ||
/** Remove a normal dependency from the project */ | ||
removeAsync(namesOrFlags: string[]): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; | ||
/** Remove a development dependency from the project */ | ||
removeDevAsync(namesOrFlags: string[]): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; | ||
/** Remove a global dependency from the environments */ | ||
removeGlobalAsync(namesOrFlags: string[]): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; | ||
} | ||
export declare class NpmPackageManager implements PackageManager { | ||
options: SpawnOptions; | ||
private log; | ||
constructor({ cwd, log }: { | ||
cwd: string; | ||
log?: Logger; | ||
}); | ||
readonly name: string; | ||
installAsync(): Promise<void>; | ||
addAsync(...names: string[]): Promise<void>; | ||
addDevAsync(...names: string[]): Promise<void>; | ||
private _runAsync; | ||
private _parseSpecs; | ||
private _patchAsync; | ||
} | ||
export declare class YarnPackageManager implements PackageManager { | ||
options: SpawnOptions; | ||
private log; | ||
constructor({ cwd, log }: { | ||
cwd: string; | ||
log?: Logger; | ||
}); | ||
readonly name: string; | ||
installAsync(): Promise<void>; | ||
addAsync(...names: string[]): Promise<void>; | ||
addDevAsync(...names: string[]): Promise<void>; | ||
private _runAsync; | ||
} | ||
export declare function createForProject(projectRoot: string, options?: { | ||
npm?: boolean; | ||
yarn?: boolean; | ||
log?: Logger; | ||
}): NpmPackageManager | YarnPackageManager; | ||
export declare function getModulesPath(projectRoot: string): string; | ||
export declare function getPossibleProjectRoot(): string; | ||
export {}; |
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const ansi_regex_1 = __importDefault(require("ansi-regex")); | ||
const find_yarn_workspace_root_1 = __importDefault(require("find-yarn-workspace-root")); | ||
const spawn_async_1 = __importDefault(require("@expo/spawn-async")); | ||
const split_1 = __importDefault(require("split")); | ||
const stream_1 = require("stream"); | ||
const npm_package_arg_1 = __importDefault(require("npm-package-arg")); | ||
const fs_extra_1 = __importDefault(require("fs-extra")); | ||
const path_1 = __importDefault(require("path")); | ||
const detect_indent_1 = __importDefault(require("detect-indent")); | ||
const detect_newline_1 = __importDefault(require("detect-newline")); | ||
const ansi = `(?:${ansi_regex_1.default().source})*`; | ||
const npmPeerDependencyWarningPattern = new RegExp(`${ansi}npm${ansi} ${ansi}WARN${ansi}.+You must install peer dependencies yourself\\.\n`, 'g'); | ||
const yarnPeerDependencyWarningPattern = new RegExp(`${ansi}warning${ansi} "[^"]+" has (?:unmet|incorrect) peer dependency "[^"]+"\\.\n`, 'g'); | ||
function isUsingYarn(projectRoot) { | ||
const workspaceRoot = find_yarn_workspace_root_1.default(projectRoot); | ||
if (workspaceRoot) { | ||
return fs_extra_1.default.existsSync(path_1.default.join(workspaceRoot, 'yarn.lock')); | ||
} | ||
else { | ||
return fs_extra_1.default.existsSync(path_1.default.join(projectRoot, 'yarn.lock')); | ||
} | ||
} | ||
exports.isUsingYarn = isUsingYarn; | ||
class NpmStderrTransform extends stream_1.Transform { | ||
_transform(chunk, encoding, callback) { | ||
this.push(chunk.toString().replace(npmPeerDependencyWarningPattern, '')); | ||
callback(); | ||
} | ||
} | ||
class YarnStderrTransform extends stream_1.Transform { | ||
_transform(chunk, encoding, callback) { | ||
this.push(chunk.toString().replace(yarnPeerDependencyWarningPattern, '')); | ||
callback(); | ||
} | ||
} | ||
class NpmPackageManager { | ||
constructor({ cwd, log }) { | ||
this.log = log || console.log; | ||
this.options = { cwd, stdio: ['inherit', 'inherit', 'pipe'] }; | ||
} | ||
get name() { | ||
return 'npm'; | ||
} | ||
installAsync() { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
yield this._runAsync(['install']); | ||
}); | ||
} | ||
addAsync(...names) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const { versioned, unversioned } = this._parseSpecs(names); | ||
if (versioned.length) { | ||
yield this._patchAsync(versioned, 'dependencies'); | ||
yield this._runAsync(['install']); | ||
} | ||
if (unversioned.length) { | ||
yield this._runAsync(['install', '--save', ...unversioned.map(spec => spec.raw)]); | ||
} | ||
}); | ||
} | ||
addDevAsync(...names) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const { versioned, unversioned } = this._parseSpecs(names); | ||
if (versioned.length) { | ||
yield this._patchAsync(versioned, 'devDependencies'); | ||
yield this._runAsync(['install']); | ||
} | ||
if (unversioned.length) { | ||
yield this._runAsync(['install', '--save-dev', ...unversioned.map(spec => spec.raw)]); | ||
} | ||
}); | ||
} | ||
// Private | ||
_runAsync(args) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
this.log(`> npm ${args.join(' ')}`); | ||
const promise = spawn_async_1.default('npm', [...args], this.options); | ||
if (promise.child.stderr) { | ||
promise.child.stderr | ||
.pipe(split_1.default(/\r?\n/, (line) => line + '\n')) | ||
.pipe(new NpmStderrTransform()) | ||
.pipe(process.stderr); | ||
} | ||
yield promise; | ||
}); | ||
} | ||
_parseSpecs(names) { | ||
const result = { versioned: [], unversioned: [] }; | ||
names | ||
.map(name => npm_package_arg_1.default(name)) | ||
.forEach(spec => { | ||
if (spec.rawSpec) { | ||
result.versioned.push(spec); | ||
} | ||
else { | ||
result.unversioned.push(spec); | ||
} | ||
}); | ||
return result; | ||
} | ||
_patchAsync(specs, packageType) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const pkgPath = path_1.default.join(this.options.cwd || '.', 'package.json'); | ||
const pkgRaw = yield fs_extra_1.default.readFile(pkgPath, { encoding: 'utf8', flag: 'r' }); | ||
const pkg = JSON.parse(pkgRaw); | ||
specs.forEach(spec => { | ||
pkg[packageType] = pkg[packageType] || {}; | ||
pkg[packageType][spec.name] = spec.rawSpec; | ||
}); | ||
yield fs_extra_1.default.writeJson(pkgPath, pkg, { | ||
spaces: detect_indent_1.default(pkgRaw).indent, | ||
EOL: detect_newline_1.default(pkgRaw), | ||
}); | ||
}); | ||
} | ||
} | ||
exports.NpmPackageManager = NpmPackageManager; | ||
class YarnPackageManager { | ||
constructor({ cwd, log }) { | ||
this.log = log || console.log; | ||
this.options = { | ||
cwd, | ||
stdio: ['inherit', 'inherit', 'pipe'], | ||
}; | ||
} | ||
get name() { | ||
return 'Yarn'; | ||
} | ||
installAsync() { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
yield this._runAsync(['install']); | ||
}); | ||
} | ||
addAsync(...names) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
yield this._runAsync(['add', ...names]); | ||
}); | ||
} | ||
addDevAsync(...names) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
yield this._runAsync(['add', '--dev', ...names]); | ||
}); | ||
} | ||
// Private | ||
_runAsync(args) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
this.log(`> yarn ${args.join(' ')}`); | ||
const promise = spawn_async_1.default('yarnpkg', args, this.options); | ||
if (promise.child.stderr) { | ||
promise.child.stderr.pipe(new YarnStderrTransform()).pipe(process.stderr); | ||
} | ||
yield promise; | ||
}); | ||
} | ||
} | ||
exports.YarnPackageManager = YarnPackageManager; | ||
function createForProject(projectRoot, options = {}) { | ||
let PackageManager; | ||
if (options.npm) { | ||
PackageManager = NpmPackageManager; | ||
} | ||
else if (options.yarn) { | ||
PackageManager = YarnPackageManager; | ||
} | ||
else if (isUsingYarn(projectRoot)) { | ||
PackageManager = YarnPackageManager; | ||
} | ||
else { | ||
PackageManager = NpmPackageManager; | ||
} | ||
return new PackageManager({ cwd: projectRoot, log: options.log }); | ||
} | ||
exports.createForProject = createForProject; | ||
function getModulesPath(projectRoot) { | ||
const workspaceRoot = find_yarn_workspace_root_1.default(path_1.default.resolve(projectRoot)); // Absolute path or null | ||
if (workspaceRoot) { | ||
return path_1.default.resolve(workspaceRoot, 'node_modules'); | ||
} | ||
return path_1.default.resolve(projectRoot, 'node_modules'); | ||
} | ||
exports.getModulesPath = getModulesPath; | ||
function getPossibleProjectRoot() { | ||
return fs_extra_1.default.realpathSync(process.cwd()); | ||
} | ||
exports.getPossibleProjectRoot = getPossibleProjectRoot; | ||
//# sourceMappingURL=PackageManager.js.map |
{ | ||
"name": "@expo/package-manager", | ||
"version": "0.0.0", | ||
"description": "A library for installing and finding packages in a node project", | ||
"main": "build/PackageManager.js", | ||
"types": "build/PackageManager.d.ts", | ||
"version": "0.0.1-canary-20231125-d600e44", | ||
"description": "A library for installing and finding packages in a project", | ||
"main": "build/index.js", | ||
"types": "build/index.d.ts", | ||
"scripts": { | ||
"watch": "tsc --watch", | ||
"build": "tsc", | ||
"prepare": "yarn run clean && yarn build", | ||
"clean": "rm -rf build ./tsconfig.tsbuildinfo", | ||
"lint": "eslint .", | ||
"test": "jest" | ||
"build": "expo-module build", | ||
"clean": "expo-module clean", | ||
"lint": "expo-module lint", | ||
"prepare": "expo-module clean && expo-module build", | ||
"prepublishOnly": "expo-module prepublishOnly", | ||
"test": "expo-module test", | ||
"typecheck": "expo-module typecheck" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/expo/expo-cli.git", | ||
"directory": "packages/package-manager" | ||
"url": "https://github.com/expo/expo.git", | ||
"directory": "packages/@expo/package-manager" | ||
}, | ||
@@ -26,9 +27,11 @@ "keywords": [ | ||
"yarn", | ||
"yarnpkg" | ||
"yarnpkg", | ||
"pnpm", | ||
"bun" | ||
], | ||
"license": "MIT", | ||
"bugs": { | ||
"url": "https://github.com/expo/expo-cli/issues" | ||
"url": "https://github.com/expo/expo/issues" | ||
}, | ||
"homepage": "https://github.com/expo/expo-cli/tree/master/packages/package-manager#readme", | ||
"homepage": "https://github.com/expo/expo/tree/main/packages/@expo/package-manager#readme", | ||
"files": [ | ||
@@ -38,19 +41,26 @@ "build" | ||
"dependencies": { | ||
"@expo/json-file": "0.0.1-canary-20231125-d600e44", | ||
"@expo/spawn-async": "^1.5.0", | ||
"ansi-regex": "^5.0.0", | ||
"detect-indent": "^6.0.0", | ||
"detect-newline": "^3.1.0", | ||
"find-yarn-workspace-root": "^1.2.1", | ||
"fs-extra": "^8.1.0", | ||
"chalk": "^4.0.0", | ||
"find-up": "^5.0.0", | ||
"find-yarn-workspace-root": "~2.0.0", | ||
"js-yaml": "^3.13.1", | ||
"micromatch": "^4.0.2", | ||
"npm-package-arg": "^7.0.0", | ||
"split": "^1.0.1", | ||
"stream": "^0.0.2" | ||
"sudo-prompt": "9.1.1" | ||
}, | ||
"devDependencies": { | ||
"@expo/babel-preset-cli": "^0.2.0", | ||
"typescript": "3.4.5" | ||
"@types/npm-package-arg": "^6.1.0", | ||
"@types/rimraf": "^3.0.0", | ||
"@types/split": "^1.0.0", | ||
"@types/js-yaml": "^3.12.5", | ||
"@types/micromatch": "^4.0.2", | ||
"expo-module-scripts": "0.0.1-canary-20231125-d600e44" | ||
}, | ||
"publishConfig": { | ||
"access": "public" | ||
} | ||
}, | ||
"gitHead": "d600e446fb6eaa71a089309b28076f312f0773a3" | ||
} |
@@ -6,11 +6,12 @@ <!-- Title --> | ||
<p align="center">A library for installing and finding packages in a project.</p> | ||
<!-- Header --> | ||
<p align="center"> | ||
<b>A library for installing and finding packages in a node project</b> | ||
<br/> | ||
<br/> | ||
<a aria-label="Circle CI" href="https://circleci.com/gh/expo/expo-cli/tree/master"> | ||
<img alt="Circle CI" src="https://flat.badgen.net/circleci/github/expo/expo-cli?label=Circle%20CI&labelColor=555555&icon=circleci"> | ||
</a> | ||
<img src="https://flat.badgen.net/packagephobia/install/@expo/package-manager"> | ||
<a href="https://www.npmjs.com/package/@expo/package-manager"> | ||
<img src="https://flat.badgen.net/npm/dw/@expo/package-manager" target="_blank" /> | ||
</a> | ||
</p> | ||
@@ -35,25 +36,8 @@ | ||
const manager = await PackageManager.createForProject(projectRoot); | ||
const manager = PackageManager.createForProject(projectRoot); | ||
await Promise.all([ | ||
manager.addDevAsync('@expo/webpack-config'), | ||
manager.addAsync('expo', 'expo-camera'), | ||
manager.addDevAsync(['@expo/webpack-config']), | ||
manager.addAsync(['expo', 'expo-camera']), | ||
]); | ||
``` | ||
## License | ||
The Expo source code is made available under the [MIT license](LICENSE). Some of the dependencies are licensed differently, with the BSD license, for example. | ||
<!-- Footer --> | ||
--- | ||
<p> | ||
<a aria-label="sponsored by expo" href="http://expo.io"> | ||
<img src="https://img.shields.io/badge/SPONSORED%20BY%20EXPO-4630EB.svg?style=for-the-badge" target="_blank" /> | ||
</a> | ||
<a aria-label="@expo/package-manager is free to use" href="/LICENSE" target="_blank"> | ||
<img align="right" alt="License: MIT" src="https://img.shields.io/badge/License-MIT-success.svg?style=for-the-badge&color=33CC12" target="_blank" /> | ||
</a> | ||
</p> |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
97575
42
1348
139
9
15
5
11
6
42
9
3
+ Addedchalk@^4.0.0
+ Addedfind-up@^5.0.0
+ Addedjs-yaml@^3.13.1
+ Addedmicromatch@^4.0.2
+ Addedsudo-prompt@9.1.1
+ Added@babel/code-frame@7.10.4(transitive)
+ Added@babel/helper-validator-identifier@7.25.9(transitive)
+ Added@babel/highlight@7.25.9(transitive)
+ Added@expo/json-file@0.0.1-canary-20231125-d600e44(transitive)
+ Addedansi-styles@3.2.14.3.0(transitive)
+ Addedargparse@1.0.10(transitive)
+ Addedbraces@3.0.3(transitive)
+ Addedchalk@2.4.24.1.2(transitive)
+ Addedcolor-convert@1.9.32.0.1(transitive)
+ Addedcolor-name@1.1.31.1.4(transitive)
+ Addedescape-string-regexp@1.0.5(transitive)
+ Addedesprima@4.0.1(transitive)
+ Addedfill-range@7.1.1(transitive)
+ Addedfind-up@5.0.0(transitive)
+ Addedfind-yarn-workspace-root@2.0.0(transitive)
+ Addedhas-flag@3.0.04.0.0(transitive)
+ Addedimurmurhash@0.1.4(transitive)
+ Addedis-number@7.0.0(transitive)
+ Addedjs-tokens@4.0.0(transitive)
+ Addedjs-yaml@3.14.1(transitive)
+ Addedjson5@2.2.3(transitive)
+ Addedlocate-path@6.0.0(transitive)
+ Addedmicromatch@4.0.8(transitive)
+ Addedp-limit@3.1.0(transitive)
+ Addedp-locate@5.0.0(transitive)
+ Addedpath-exists@4.0.0(transitive)
+ Addedpicocolors@1.1.1(transitive)
+ Addedpicomatch@2.3.1(transitive)
+ Addedsignal-exit@3.0.7(transitive)
+ Addedsprintf-js@1.0.3(transitive)
+ Addedsudo-prompt@9.1.1(transitive)
+ Addedsupports-color@5.5.07.2.0(transitive)
+ Addedto-regex-range@5.0.1(transitive)
+ Addedwrite-file-atomic@2.4.3(transitive)
+ Addedyocto-queue@0.1.0(transitive)
- Removeddetect-indent@^6.0.0
- Removeddetect-newline@^3.1.0
- Removedfs-extra@^8.1.0
- Removedstream@^0.0.2
- Removedarr-diff@4.0.0(transitive)
- Removedarr-flatten@1.1.0(transitive)
- Removedarr-union@3.1.0(transitive)
- Removedarray-unique@0.3.2(transitive)
- Removedassign-symbols@1.0.0(transitive)
- Removedatob@2.1.2(transitive)
- Removedbase@0.11.2(transitive)
- Removedbraces@2.3.2(transitive)
- Removedcache-base@1.0.1(transitive)
- Removedclass-utils@0.3.6(transitive)
- Removedcollection-visit@1.0.0(transitive)
- Removedcomponent-emitter@1.3.1(transitive)
- Removedcopy-descriptor@0.1.1(transitive)
- Removeddebug@2.6.9(transitive)
- Removeddecode-uri-component@0.2.2(transitive)
- Removeddefine-property@0.2.51.0.02.0.2(transitive)
- Removeddetect-indent@6.1.0(transitive)
- Removeddetect-newline@3.1.0(transitive)
- Removedemitter-component@1.1.2(transitive)
- Removedexpand-brackets@2.1.4(transitive)
- Removedextend-shallow@2.0.13.0.2(transitive)
- Removedextglob@2.0.4(transitive)
- Removedfill-range@4.0.0(transitive)
- Removedfind-yarn-workspace-root@1.2.1(transitive)
- Removedfor-in@1.0.2(transitive)
- Removedfragment-cache@0.2.1(transitive)
- Removedfs-extra@4.0.38.1.0(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedget-value@2.0.6(transitive)
- Removedhas-value@0.3.11.0.0(transitive)
- Removedhas-values@0.1.41.0.0(transitive)
- Removedhasown@2.0.2(transitive)
- Removedis-accessor-descriptor@1.0.1(transitive)
- Removedis-buffer@1.1.6(transitive)
- Removedis-data-descriptor@1.0.1(transitive)
- Removedis-descriptor@0.1.71.0.3(transitive)
- Removedis-extendable@0.1.11.0.1(transitive)
- Removedis-number@3.0.0(transitive)
- Removedis-plain-object@2.0.4(transitive)
- Removedis-windows@1.0.2(transitive)
- Removedisarray@1.0.0(transitive)
- Removedisobject@2.1.03.0.1(transitive)
- Removedjsonfile@4.0.0(transitive)
- Removedkind-of@3.2.24.0.06.0.3(transitive)
- Removedmap-cache@0.2.2(transitive)
- Removedmap-visit@1.0.0(transitive)
- Removedmicromatch@3.1.10(transitive)
- Removedmixin-deep@1.3.2(transitive)
- Removedms@2.0.0(transitive)
- Removednanomatch@1.2.13(transitive)
- Removedobject-copy@0.1.0(transitive)
- Removedobject-visit@1.0.1(transitive)
- Removedobject.pick@1.3.0(transitive)
- Removedpascalcase@0.1.1(transitive)
- Removedposix-character-classes@0.1.1(transitive)
- Removedregex-not@1.0.2(transitive)
- Removedrepeat-element@1.1.4(transitive)
- Removedrepeat-string@1.6.1(transitive)
- Removedresolve-url@0.2.1(transitive)
- Removedret@0.1.15(transitive)
- Removedsafe-regex@1.1.0(transitive)
- Removedset-value@2.0.1(transitive)
- Removedsnapdragon@0.8.2(transitive)
- Removedsnapdragon-node@2.1.1(transitive)
- Removedsnapdragon-util@3.0.1(transitive)
- Removedsource-map@0.5.7(transitive)
- Removedsource-map-resolve@0.5.3(transitive)
- Removedsource-map-url@0.4.1(transitive)
- Removedsplit-string@3.1.0(transitive)
- Removedstatic-extend@0.1.2(transitive)
- Removedstream@0.0.2(transitive)
- Removedto-object-path@0.3.0(transitive)
- Removedto-regex@3.0.2(transitive)
- Removedto-regex-range@2.1.1(transitive)
- Removedunion-value@1.0.1(transitive)
- Removeduniversalify@0.1.2(transitive)
- Removedunset-value@1.0.0(transitive)
- Removedurix@0.1.0(transitive)
- Removeduse@3.1.1(transitive)