Socket
Socket
Sign inDemoInstall

@nrwl/workspace

Package Overview
Dependencies
Maintainers
1
Versions
1609
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nrwl/workspace - npm Package Compare versions

Comparing version 8.12.1-beta.1 to 8.12.1

4

package.json
{
"name": "@nrwl/workspace",
"version": "8.12.1-beta.1",
"version": "8.12.1",
"description": "Extensible Dev Tools for Monorepos",

@@ -68,4 +68,4 @@ "repository": {

"chalk": "2.4.2",
"@nrwl/cli": "8.12.1-beta.1"
"@nrwl/cli": "8.12.1"
}
}

@@ -16,3 +16,2 @@ "use strict";

const { nxArgs, overrides } = utils_1.splitArgsIntoNxArgsAndOverrides(parsedArgs);
const env = file_utils_1.readEnvironment(nxArgs.target);
const projectGraph = project_graph_1.createProjectGraph();

@@ -25,5 +24,7 @@ let affectedGraph = nxArgs.all

}
const affectedProjects = Object.values(parsedArgs.all ? projectGraph.nodes : affectedGraph.nodes)
const projects = parsedArgs.all ? projectGraph.nodes : affectedGraph.nodes;
const env = file_utils_1.readEnvironment(nxArgs.target, projects);
const affectedProjects = Object.values(projects)
.filter(n => !parsedArgs.exclude.includes(n.name))
.filter(n => !parsedArgs.onlyFailed || !env.workspace.getResult(n.name));
.filter(n => !parsedArgs.onlyFailed || !env.workspaceResults.getResult(n.name));
try {

@@ -30,0 +31,0 @@ switch (command) {

@@ -12,5 +12,9 @@ "use strict";

const { nxArgs, overrides } = utils_1.splitArgsIntoNxArgsAndOverrides(parsedArgs);
const env = file_utils_1.readEnvironment(nxArgs.target);
const projectGraph = project_graph_1.createProjectGraph();
const projects = projectsToRun(nxArgs, projectGraph);
const projectMap = {};
projects.forEach(proj => {
projectMap[proj.name] = proj;
});
const env = file_utils_1.readEnvironment(nxArgs.target, projectMap);
run_command_1.runCommand(projects, projectGraph, env, nxArgs, overrides, new default_reporter_1.DefaultReporter());

@@ -17,0 +21,0 @@ }

@@ -8,7 +8,9 @@ "use strict";

function runOne(opts) {
const env = file_utils_1.readEnvironment(opts.target);
const projectGraph = project_graph_1.createProjectGraph();
const projects = [projectGraph.nodes[opts.project]];
const env = file_utils_1.readEnvironment(opts.target, {
[opts.project]: projectGraph.nodes[opts.project]
});
run_command_1.runCommand(projects, projectGraph, env, opts, opts.overrides, new empty_reporter_1.EmptyReporter());
}
exports.runOne = runOne;

@@ -0,3 +1,5 @@

import { ProjectGraphNode } from '../core/project-graph';
export declare class WorkspaceResults {
private command;
private projects;
startedWithFailedProjects: boolean;

@@ -7,6 +9,7 @@ private commandResults;

readonly hasFailure: boolean;
constructor(command: string);
constructor(command: string, projects: Record<string, ProjectGraphNode>);
getResult(projectName: string): boolean;
saveResults(): void;
setResult(projectName: string, result: boolean): void;
private invalidateOldResults;
}

@@ -8,4 +8,5 @@ "use strict";

class WorkspaceResults {
constructor(command) {
constructor(command, projects) {
this.command = command;
this.projects = projects;
this.commandResults = {

@@ -23,2 +24,3 @@ command: this.command,

this.commandResults = commandResults;
this.invalidateOldResults();
}

@@ -57,3 +59,10 @@ }

}
invalidateOldResults() {
Object.keys(this.commandResults.results).forEach(projectName => {
if (!this.projects[projectName]) {
delete this.commandResults.results[projectName];
}
});
}
}
exports.WorkspaceResults = WorkspaceResults;

@@ -6,6 +6,15 @@ "use strict";

const fileutils_1 = require("../utils/fileutils");
const project_graph_1 = require("..//core/project-graph");
describe('WorkspacesResults', () => {
let results;
beforeEach(() => {
results = new workspace_results_1.WorkspaceResults('test');
results = new workspace_results_1.WorkspaceResults('test', {
proj: {
name: 'proj',
type: project_graph_1.ProjectType.app,
data: {
files: []
}
}
});
});

@@ -61,3 +70,11 @@ it('should be instantiable', () => {

}));
results = new workspace_results_1.WorkspaceResults('test');
results = new workspace_results_1.WorkspaceResults('test', {
proj: {
name: 'proj',
type: project_graph_1.ProjectType.app,
data: {
files: []
}
}
});
expect(fs.readFileSync).toHaveBeenCalledWith('dist/.nx-results', 'utf-8');

@@ -69,3 +86,11 @@ expect(results.getResult('proj')).toBe(false);

const runTests = () => {
results = new workspace_results_1.WorkspaceResults('test');
results = new workspace_results_1.WorkspaceResults('test', {
proj: {
name: 'proj',
type: project_graph_1.ProjectType.app,
data: {
files: []
}
}
});
};

@@ -82,6 +107,33 @@ expect(runTests).not.toThrow();

}));
results = new workspace_results_1.WorkspaceResults('build');
results = new workspace_results_1.WorkspaceResults('build', {
proj: {
name: 'proj',
type: project_graph_1.ProjectType.app,
data: {
files: []
}
}
});
expect(results.getResult('proj')).toBeUndefined();
});
it('should invalidate existing results when the project is not run', () => {
spyOn(fs, 'readFileSync').and.returnValue(fileutils_1.serializeJson({
command: 'test',
results: {
proj: true,
proj2: false
}
}));
results = new workspace_results_1.WorkspaceResults('build', {
proj: {
name: 'proj',
type: project_graph_1.ProjectType.app,
data: {
files: []
}
}
});
expect(results.hasFailure).toEqual(false);
});
});
});

@@ -1,1 +0,1 @@

export declare function workspaceSchematic(args: string[]): 1 | 0;
export declare function workspaceSchematic(args: string[]): 0 | 1;

@@ -29,3 +29,3 @@ import { Environment, NxJson } from './shared-interfaces';

export declare function readWorkspaceFiles(): FileData[];
export declare function readEnvironment(target: string): Environment;
export declare function readEnvironment(target: string, projects: Record<string, ProjectGraphNode>): Environment;
/**

@@ -32,0 +32,0 @@ * Returns the time when file was last modified

@@ -167,7 +167,7 @@ "use strict";

exports.readWorkspaceFiles = readWorkspaceFiles;
function readEnvironment(target) {
function readEnvironment(target, projects) {
const nxJson = readNxJson();
const workspaceJson = readWorkspaceJson();
const workspace = new workspace_results_1.WorkspaceResults(target);
return { nxJson, workspaceJson, workspace };
const workspaceResults = new workspace_results_1.WorkspaceResults(target, projects);
return { nxJson, workspaceJson, workspaceResults };
}

@@ -174,0 +174,0 @@ exports.readEnvironment = readEnvironment;

@@ -0,1 +1,2 @@

import { WorkspaceResults } from '@nrwl/workspace/src/command-line/workspace-results';
export declare type ImplicitDependencyEntry<T = '*' | string[]> = {

@@ -27,3 +28,3 @@ [key: string]: T | ImplicitJsonSubsetDependency<T>;

workspaceJson: any;
workspace: any;
workspaceResults: WorkspaceResults;
}

@@ -7,5 +7,12 @@ {

"type": "object",
"examples": [
{
"command": "g @nrwl/workspace:move --project my-feature-lib shared/my-feature-lib",
"description": "Move libs/my-feature-lib to libs/shared/my-feature-lib"
}
],
"properties": {
"projectName": {
"type": "string",
"alias": "project",
"description": "The name of the project to move"

@@ -15,3 +22,7 @@ },

"type": "string",
"description": "The folder to move the project into"
"description": "The folder to move the project into",
"$default": {
"$source": "argv",
"index": 0
}
}

@@ -18,0 +29,0 @@ },

@@ -8,3 +8,3 @@ import { Task, TasksRunner } from './tasks-runner';

declare type RunArgs = yargs.Arguments & ReporterArgs;
export declare function runCommand<T extends RunArgs>(projectsToRun: ProjectGraphNode[], projectGraph: ProjectGraph, { nxJson, workspace }: Environment, nxArgs: NxArgs, overrides: any, reporter: any): Promise<void>;
export declare function runCommand<T extends RunArgs>(projectsToRun: ProjectGraphNode[], projectGraph: ProjectGraph, { nxJson, workspaceResults }: Environment, nxArgs: NxArgs, overrides: any, reporter: any): Promise<void>;
export interface TaskParams {

@@ -11,0 +11,0 @@ project: ProjectGraphNode;

@@ -16,3 +16,3 @@ "use strict";

const hasher_1 = require("./hasher");
function runCommand(projectsToRun, projectGraph, { nxJson, workspace }, nxArgs, overrides, reporter) {
function runCommand(projectsToRun, projectGraph, { nxJson, workspaceResults }, nxArgs, overrides, reporter) {
return __awaiter(this, void 0, void 0, function* () {

@@ -42,7 +42,7 @@ reporter.beforeRun(projectsToRun.map(p => p.name), nxArgs, overrides);

case tasks_runner_1.AffectedEventType.TaskComplete: {
workspace.setResult(event.task.target.project, event.success);
workspaceResults.setResult(event.task.target.project, event.success);
break;
}
case tasks_runner_1.AffectedEventType.TaskCacheRead: {
workspace.setResult(event.task.target.project, event.success);
workspaceResults.setResult(event.task.target.project, event.success);
cached.push(event.task.target.project);

@@ -58,5 +58,5 @@ break;

process.stdin.unref();
workspace.saveResults();
reporter.printResults(nxArgs, workspace.failedProjects, workspace.startedWithFailedProjects, cached);
if (workspace.hasFailure) {
workspaceResults.saveResults();
reporter.printResults(nxArgs, workspaceResults.failedProjects, workspaceResults.startedWithFailedProjects, cached);
if (workspaceResults.hasFailure) {
process.exit(1);

@@ -63,0 +63,0 @@ }

@@ -90,3 +90,2 @@ "use strict";

tasks.forEach(t => {
this.options.lifeCycle.startTask(t.task);
output_1.output.note({ title: `Cached Output:` });

@@ -96,3 +95,2 @@ process.stdout.write(t.cachedResult.terminalOutput);

this.cache.copyFilesFromCache(t.cachedResult, outputs);
this.options.lifeCycle.endTask(t.task, 0);
});

@@ -113,3 +111,2 @@ return tasks.reduce((m, c) => {

try {
this.options.lifeCycle.startTask(task);
const env = Object.assign({}, process.env);

@@ -126,3 +123,2 @@ if (outputPath) {

this.cache.put(task, outputPath, taskOutputs).then(() => {
this.options.lifeCycle.endTask(task, code);
res(code);

@@ -132,3 +128,2 @@ });

else {
this.options.lifeCycle.endTask(task, code);
res(code);

@@ -135,0 +130,0 @@ }

@@ -1,2 +0,2 @@

import { Task, TasksRunner } from './tasks-runner';
import { TasksRunner } from './tasks-runner';
export interface RemoteCache {

@@ -6,6 +6,2 @@ retrieve: (hash: string, cacheDirectory: string) => Promise<boolean>;

}
export interface LifeCycle {
startTask(task: Task): void;
endTask(task: Task, code: number): void;
}
export interface DefaultTasksRunnerOptions {

@@ -17,5 +13,4 @@ parallel?: boolean;

remoteCache?: RemoteCache;
lifeCycle?: LifeCycle;
}
export declare const tasksRunnerV2: TasksRunner<DefaultTasksRunnerOptions>;
export default tasksRunnerV2;

@@ -15,10 +15,3 @@ "use strict";

const task_orchestrator_1 = require("./task-orchestrator");
class EmptyLifeCycle {
startTask(task) { }
endTask(task) { }
}
exports.tasksRunnerV2 = (tasks, options, context) => {
if (!options.lifeCycle) {
options.lifeCycle = new EmptyLifeCycle();
}
return new rxjs_1.Observable(subscriber => {

@@ -25,0 +18,0 @@ runAllTasks(tasks, options, context)

@@ -106,2 +106,11 @@ /**

export declare function readWorkspace(host: Tree): any;
/**
* Updates the package.json given the passed deps and/or devDeps. Only updates
* if the packages are not yet present
*
* @param host the schematic tree
* @param deps the package.json dependencies to add
* @param devDeps the package.json devDependencies to add
* @param addInstall default `true`; set to false to avoid installs
*/
export declare function addDepsToPackageJson(deps: any, devDeps: any, addInstall?: boolean): Rule;

@@ -108,0 +117,0 @@ export declare function updatePackageJsonDependencies(deps: any, devDeps: any, addInstall?: boolean): Rule;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT- style license that can be
* found in the LICENSE file at https://angular.io/license
*/
const schematics_1 = require("@angular-devkit/schematics");
const ts = require("typescript");

@@ -388,13 +396,47 @@ const stripJsonComments = require("strip-json-comments");

exports.readWorkspace = readWorkspace;
/**
* verifies whether the given packageJson dependencies require an update
* given the deps & devDeps passed in
*/
function requiresAddingOfPackages(packageJsonFile, deps, devDeps) {
let needsDepsUpdate = false;
let needsDevDepsUpdate = false;
packageJsonFile.dependencies = packageJsonFile.dependencies || {};
packageJsonFile.devDependencies = packageJsonFile.devDependencies || {};
if (Object.keys(deps).length > 0) {
needsDepsUpdate = !Object.keys(deps).find(entry => packageJsonFile.dependencies[entry]);
}
if (Object.keys(devDeps).length > 0) {
needsDevDepsUpdate = !Object.keys(devDeps).find(entry => packageJsonFile.devDependencies[entry]);
}
return needsDepsUpdate || needsDevDepsUpdate;
}
let installAdded = false;
/**
* Updates the package.json given the passed deps and/or devDeps. Only updates
* if the packages are not yet present
*
* @param host the schematic tree
* @param deps the package.json dependencies to add
* @param devDeps the package.json devDependencies to add
* @param addInstall default `true`; set to false to avoid installs
*/
function addDepsToPackageJson(deps, devDeps, addInstall = true) {
return updateJsonInTree('package.json', (json, context) => {
json.dependencies = Object.assign({}, (json.dependencies || {}), deps, (json.dependencies || {}));
json.devDependencies = Object.assign({}, (json.devDependencies || {}), devDeps, (json.devDependencies || {}));
if (addInstall && !installAdded) {
context.addTask(new tasks_1.NodePackageInstallTask());
installAdded = true;
return (host, context) => {
const currentPackageJson = readJsonInTree(host, 'package.json');
if (requiresAddingOfPackages(currentPackageJson, deps, devDeps)) {
return updateJsonInTree('package.json', (json, context) => {
json.dependencies = Object.assign({}, (json.dependencies || {}), deps, (json.dependencies || {}));
json.devDependencies = Object.assign({}, (json.devDependencies || {}), devDeps, (json.devDependencies || {}));
if (addInstall && !installAdded) {
context.addTask(new tasks_1.NodePackageInstallTask());
installAdded = true;
}
return json;
});
}
return json;
});
else {
return schematics_1.noop();
}
};
}

@@ -401,0 +443,0 @@ exports.addDepsToPackageJson = addDepsToPackageJson;

"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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });

@@ -7,2 +15,3 @@ const ast_utils_1 = require("./ast-utils");

const fileutils_1 = require("./fileutils");
const testing_utils_1 = require("./testing-utils");
describe('readJsonInTree', () => {

@@ -99,1 +108,24 @@ let tree;

});
describe('addDepsToPackageJson', () => {
let appTree;
beforeEach(() => {
appTree = schematics_1.Tree.empty();
appTree = testing_utils_1.createEmptyWorkspace(appTree);
});
it('should not update the package.json if dependencies have already been added', () => __awaiter(this, void 0, void 0, function* () {
const devDeps = {
'@nrwl/jest': '1.2.3'
};
appTree.overwrite('/package.json', JSON.stringify({
dependencies: {},
devDependencies: Object.assign({}, devDeps)
}));
const testRunner = new testing_1.SchematicTestRunner('@nrwl/jest', null);
yield testRunner
.callRule(() => {
return ast_utils_1.addDepsToPackageJson({}, devDeps);
}, appTree)
.toPromise();
expect(testRunner.tasks.find(x => x.name === 'node-package')).not.toBeDefined();
}));
});
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@angular-devkit/core");
const schematics_1 = require("@angular-devkit/schematics");
const ast_utils_1 = require("./ast-utils");

@@ -38,42 +39,51 @@ const common_1 = require("./common");

}
const chainedCommands = [];
if (linter === 'tslint') {
if (!host.exists('/tslint.json')) {
host.create('/tslint.json', globalTsLint);
}
if (!options.onlyGlobal) {
host.create(core_1.join(projectRoot, `tslint.json`), JSON.stringify({
extends: `${common_1.offsetFromRoot(projectRoot)}tslint.json`,
rules: {}
}));
}
return;
chainedCommands.push((host) => {
if (!host.exists('/tslint.json')) {
host.create('/tslint.json', globalTsLint);
}
if (!options.onlyGlobal) {
host.create(core_1.join(projectRoot, `tslint.json`), JSON.stringify({
extends: `${common_1.offsetFromRoot(projectRoot)}tslint.json`,
rules: {}
}));
}
});
return schematics_1.chain(chainedCommands);
}
debugger;
if (linter === 'eslint') {
if (!host.exists('/.eslintrc')) {
host.create('/.eslintrc', globalESLint);
ast_utils_1.addDepsToPackageJson(Object.assign({}, (options.extraPackageDeps
? options.extraPackageDeps.dependencies
: {})), Object.assign({ '@nrwl/eslint-plugin-nx': versions_1.nxVersion, '@typescript-eslint/parser': versions_1.typescriptESLintVersion, '@typescript-eslint/eslint-plugin': versions_1.typescriptESLintVersion, eslint: versions_1.eslintVersion, 'eslint-config-prettier': versions_1.eslintConfigPrettierVersion }, (options.extraPackageDeps
? options.extraPackageDeps.devDependencies
: {})))(host, context);
chainedCommands.push((host) => {
host.create('/.eslintrc', globalESLint);
return ast_utils_1.addDepsToPackageJson(Object.assign({}, (options.extraPackageDeps
? options.extraPackageDeps.dependencies
: {})), Object.assign({ '@nrwl/eslint-plugin-nx': versions_1.nxVersion, '@typescript-eslint/parser': versions_1.typescriptESLintVersion, '@typescript-eslint/eslint-plugin': versions_1.typescriptESLintVersion, eslint: versions_1.eslintVersion, 'eslint-config-prettier': versions_1.eslintConfigPrettierVersion }, (options.extraPackageDeps
? options.extraPackageDeps.devDependencies
: {})));
});
}
if (!options.onlyGlobal) {
let configJson;
const rootConfig = `${common_1.offsetFromRoot(projectRoot)}.eslintrc`;
if (options.localConfig) {
const extendsOption = options.localConfig.extends
? Array.isArray(options.localConfig.extends)
? options.localConfig.extends
: [options.localConfig.extends]
: [];
configJson = Object.assign({}, options.localConfig, { extends: [...extendsOption, rootConfig] });
}
else {
configJson = {
extends: rootConfig,
rules: {}
};
}
host.create(core_1.join(projectRoot, `.eslintrc`), JSON.stringify(configJson));
chainedCommands.push((host) => {
let configJson;
const rootConfig = `${common_1.offsetFromRoot(projectRoot)}.eslintrc`;
if (options.localConfig) {
const extendsOption = options.localConfig.extends
? Array.isArray(options.localConfig.extends)
? options.localConfig.extends
: [options.localConfig.extends]
: [];
configJson = Object.assign({}, options.localConfig, { extends: [...extendsOption, rootConfig] });
}
else {
configJson = {
extends: rootConfig,
rules: {}
};
}
host.create(core_1.join(projectRoot, `.eslintrc`), JSON.stringify(configJson));
});
}
return schematics_1.chain(chainedCommands);
}

@@ -80,0 +90,0 @@ };

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.nxVersion = '8.12.1-beta.1';
exports.nxVersion = '8.12.1';
exports.angularCliVersion = '8.3.14';

@@ -5,0 +5,0 @@ exports.typescriptVersion = '~3.5.3';

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc