Skip to content

Commit

Permalink
chore(release): 1.95.1 (#13805)
Browse files Browse the repository at this point in the history
See CHANGELOG

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
  • Loading branch information
mergify[bot] authored Mar 25, 2021
2 parents 28ba8b4 + 4ec9383 commit ed2bbe6
Show file tree
Hide file tree
Showing 16 changed files with 51 additions and 152 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

## [1.95.1](https://github.com/aws/aws-cdk/compare/v1.95.0...v1.95.1) (2021-03-25)


### Bug Fixes

* **codebuild:** module fails to load with error "Cannot use import statement outside a module" ([b1ffd33](https://github.com/aws/aws-cdk/commit/b1ffd335b6c41a26c1f88db2fc5a739c4c18c7fe)), closes [#13699](https://github.com/aws/aws-cdk/issues/13699) [#13699](https://github.com/aws/aws-cdk/issues/13699)

## [1.95.0](https://github.com/aws/aws-cdk/compare/v1.94.1...v1.95.0) (2021-03-25)


Expand Down
12 changes: 0 additions & 12 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,6 @@
"nohoist": [
"**/jszip",
"**/jszip/**",
"@aws-cdk/aws-codebuild/@aws-cdk/yaml-cfn",
"@aws-cdk/aws-codebuild/@aws-cdk/yaml-cfn/yaml",
"@aws-cdk/aws-codebuild/@aws-cdk/yaml-cfn/yaml/**",
"@aws-cdk/aws-codepipeline-actions/case",
"@aws-cdk/aws-codepipeline-actions/case/**",
"@aws-cdk/aws-cognito/punycode",
Expand All @@ -66,9 +63,6 @@
"@aws-cdk/cloud-assembly-schema/jsonschema/**",
"@aws-cdk/cloud-assembly-schema/semver",
"@aws-cdk/cloud-assembly-schema/semver/**",
"@aws-cdk/cloudformation-include/@aws-cdk/yaml-cfn",
"@aws-cdk/cloudformation-include/@aws-cdk/yaml-cfn/yaml",
"@aws-cdk/cloudformation-include/@aws-cdk/yaml-cfn/yaml/**",
"@aws-cdk/core/@balena/dockerignore",
"@aws-cdk/core/@balena/dockerignore/**",
"@aws-cdk/core/fs-extra",
Expand All @@ -81,9 +75,6 @@
"@aws-cdk/cx-api/semver/**",
"@aws-cdk/yaml-cfn/yaml",
"@aws-cdk/yaml-cfn/yaml/**",
"aws-cdk-lib/@aws-cdk/yaml-cfn",
"aws-cdk-lib/@aws-cdk/yaml-cfn/yaml",
"aws-cdk-lib/@aws-cdk/yaml-cfn/yaml/**",
"aws-cdk-lib/@balena/dockerignore",
"aws-cdk-lib/@balena/dockerignore/**",
"aws-cdk-lib/case",
Expand All @@ -102,9 +93,6 @@
"aws-cdk-lib/semver/**",
"aws-cdk-lib/yaml",
"aws-cdk-lib/yaml/**",
"monocdk/@aws-cdk/yaml-cfn",
"monocdk/@aws-cdk/yaml-cfn/yaml",
"monocdk/@aws-cdk/yaml-cfn/yaml/**",
"monocdk/@balena/dockerignore",
"monocdk/@balena/dockerignore/**",
"monocdk/case",
Expand Down
4 changes: 1 addition & 3 deletions packages/@aws-cdk/aws-codebuild/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,6 @@
"@aws-cdk/yaml-cfn": "0.0.0",
"constructs": "^3.3.69"
},
"bundledDependencies": [
"@aws-cdk/yaml-cfn"
],
"homepage": "https://github.com/aws/aws-cdk",
"peerDependencies": {
"@aws-cdk/aws-cloudwatch": "0.0.0",
Expand All @@ -122,6 +119,7 @@
"@aws-cdk/aws-secretsmanager": "0.0.0",
"@aws-cdk/core": "0.0.0",
"@aws-cdk/region-info": "0.0.0",
"@aws-cdk/yaml-cfn": "0.0.0",
"constructs": "^3.3.69"
},
"engines": {
Expand Down
4 changes: 1 addition & 3 deletions packages/@aws-cdk/cloudformation-include/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,7 @@
"@aws-cdk/aws-wafv2": "0.0.0",
"@aws-cdk/aws-workspaces": "0.0.0",
"@aws-cdk/core": "0.0.0",
"@aws-cdk/yaml-cfn": "0.0.0",
"constructs": "^3.3.69"
},
"devDependencies": {
Expand All @@ -374,9 +375,6 @@
"pkglint": "0.0.0",
"ts-jest": "^26.5.4"
},
"bundledDependencies": [
"@aws-cdk/yaml-cfn"
],
"keywords": [
"aws",
"cdk",
Expand Down
3 changes: 2 additions & 1 deletion packages/@aws-cdk/yaml-cfn/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
*.d.ts
node_modules
dist
tsconfig.json
.jsii

.LAST_BUILD
Expand All @@ -14,4 +15,4 @@ nyc.config.js
!.eslintrc.js
!jest.config.js

junit.xml
junit.xml
26 changes: 26 additions & 0 deletions packages/@aws-cdk/yaml-cfn/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,32 @@
"cloudformation",
"yaml"
],
"jsii": {
"outdir": "dist",
"targets": {
"java": {
"package": "software.amazon.awscdk.yaml.cfn",
"maven": {
"groupId": "software.amazon.awscdk",
"artifactId": "cdk-yaml-cfn"
}
},
"dotnet": {
"namespace": "Amazon.CDK.Yaml.Cfn",
"packageId": "Amazon.CDK.Yaml.Cfn",
"iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png"
},
"python": {
"distName": "aws-cdk.yaml-cfn",
"module": "aws_cdk.yaml_cfn",
"classifiers": [
"Framework :: AWS CDK",
"Framework :: AWS CDK :: 1"
]
}
},
"projectReferences": true
},
"scripts": {
"build": "cdk-build",
"watch": "cdk-watch",
Expand Down
24 changes: 0 additions & 24 deletions packages/@aws-cdk/yaml-cfn/tsconfig.json

This file was deleted.

2 changes: 0 additions & 2 deletions packages/aws-cdk-lib/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@
},
"license": "Apache-2.0",
"bundledDependencies": [
"@aws-cdk/yaml-cfn",
"@balena/dockerignore",
"case",
"fs-extra",
Expand All @@ -93,7 +92,6 @@
"yaml"
],
"dependencies": {
"@aws-cdk/yaml-cfn": "0.0.0",
"@balena/dockerignore": "^1.0.2",
"case": "1.6.3",
"fs-extra": "^9.1.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/decdk/test/schema.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ test('schemaForInterface: interface with primitives', async () => {
* are propagated outwards.
*/
function spawn(command: string, options: SpawnOptions | undefined) {
return new Promise<void>((resolve, reject) => {
return new Promise((resolve, reject) => {
const cp = spawnAsync(command, [], { stdio: 'inherit', ...options });

cp.on('error', reject);
Expand Down
2 changes: 0 additions & 2 deletions packages/monocdk/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@
},
"license": "Apache-2.0",
"bundledDependencies": [
"@aws-cdk/yaml-cfn",
"@balena/dockerignore",
"case",
"fs-extra",
Expand All @@ -99,7 +98,6 @@
"yaml"
],
"dependencies": {
"@aws-cdk/yaml-cfn": "0.0.0",
"@balena/dockerignore": "^1.0.2",
"case": "1.6.3",
"fs-extra": "^9.1.0",
Expand Down
2 changes: 1 addition & 1 deletion tools/nodeunit-shim/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ export function nodeunitShim(exports: Record<string, any>) {
});
} else {
// It's a test
test(testName, () => new Promise<void>(ok => {
test(testName, () => new Promise(ok => {
testObj(new Test(ok));
}));
}
Expand Down
12 changes: 2 additions & 10 deletions tools/pkglint/bin/pkglint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,8 @@ async function main(): Promise<void> {

const pkgs = findPackageJsons(argv.directory as string);

for (const rule of rules) {
for (const pkg of pkgs.filter(pkg => pkg.shouldApply(rule))) {
rule.prepare(pkg);
}
}
for (const rule of rules) {
for (const pkg of pkgs.filter(pkg => pkg.shouldApply(rule))) {
await rule.validate(pkg);
}
}
rules.forEach(rule => pkgs.filter(pkg => pkg.shouldApply(rule)).forEach(pkg => rule.prepare(pkg)));
rules.forEach(rule => pkgs.filter(pkg => pkg.shouldApply(rule)).forEach(pkg => rule.validate(pkg)));

if (argv.fix) {
pkgs.forEach(pkg => pkg.applyFixes());
Expand Down
2 changes: 1 addition & 1 deletion tools/pkglint/lib/packagejson.ts
Original file line number Diff line number Diff line change
Expand Up @@ -361,5 +361,5 @@ export abstract class ValidationRule {
/**
* Will be executed for every package definition once, should mutate the package object
*/
public abstract validate(pkg: PackageJson): void | Promise<void>;
public abstract validate(pkg: PackageJson): void;
}
63 changes: 8 additions & 55 deletions tools/pkglint/lib/rules.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import * as fs from 'fs';
import * as path from 'path';
import * as caseUtils from 'case';
import * as fse from 'fs-extra';
import * as glob from 'glob';
import * as semver from 'semver';
import { LICENSE, NOTICE } from './licensing';
Expand All @@ -12,7 +11,6 @@ import {
fileShouldBe, fileShouldBeginWith, fileShouldContain,
fileShouldNotContain,
findInnerPackages,
findPackageDir,
monoRepoRoot,
} from './util';

Expand Down Expand Up @@ -1373,42 +1371,25 @@ export class FastFailingBuildScripts extends ValidationRule {
}
}

/**
* For every bundled dependency, we need to make sure that package and all of its transitive dependencies are nohoisted
*
* Bundling literally works by including `<package>/node_modules/<dep>` into
* the tarball when `npm pack` is run, and if that directory does not exist at
* that exact location (because it has been hoisted) then NPM shrugs its
* shoulders and the dependency will be missing from the distribution.
*
* --
*
* We also must not forget to nohoist transitive dependencies. Strictly
* speaking, we need to only hoist transitive *runtime* dependencies (`dependencies`, not
* `devDependencies`).
*
* For 3rd party deps, there is no difference and we short-circuit by adding a
* catch-all glob (`<package>/node_modules/<dep>/**`), but for in-repo bundled
* dependencies, we DO need the `devDependencies` installed as per normal and
* only the transitive runtime dependencies nohoisted (recursively).
*/
export class YarnNohoistBundledDependencies extends ValidationRule {
public readonly name = 'yarn/nohoist-bundled-dependencies';

public async validate(pkg: PackageJson) {
public validate(pkg: PackageJson) {
const bundled: string[] = pkg.json.bundleDependencies || pkg.json.bundledDependencies || [];
if (bundled.length === 0) { return; }

const repoPackageJson = path.resolve(__dirname, '../../../package.json');
const nohoist = new Set<string>(require(repoPackageJson).workspaces.nohoist); // eslint-disable-line @typescript-eslint/no-require-imports

const expectedNoHoistEntries = new Array<string>();
const nohoist: string[] = require(repoPackageJson).workspaces.nohoist; // eslint-disable-line @typescript-eslint/no-require-imports

const missing = new Array<string>();
for (const dep of bundled) {
await noHoistDependency(pkg.packageName, dep, pkg.packageRoot);
for (const entry of [`${pkg.packageName}/${dep}`, `${pkg.packageName}/${dep}/**`]) {
if (nohoist.indexOf(entry) >= 0) { continue; }
missing.push(entry);
}
}

const missing = expectedNoHoistEntries.filter(entry => !nohoist.has(entry));

if (missing.length > 0) {
pkg.report({
ruleName: this.name,
Expand All @@ -1420,23 +1401,6 @@ export class YarnNohoistBundledDependencies extends ValidationRule {
},
});
}

async function noHoistDependency(parentPackageHierarchy: string, depName: string, parentPackageDir: string) {
expectedNoHoistEntries.push(`${parentPackageHierarchy}/${depName}`);

const dependencyDir = await findPackageDir(depName, parentPackageDir);
if (!isMonoRepoPackageDir(dependencyDir)) {
// Not one of ours, so we can just ignore everything underneath as well
expectedNoHoistEntries.push(`${parentPackageHierarchy}/${depName}/**`);
return;
}

// A monorepo package, recurse into dependencies (but not devDependencies)
const packageJson = await fse.readJson(path.join(dependencyDir, 'package.json'));
for (const dep of Object.keys(packageJson.dependencies ?? {})) {
await noHoistDependency(`${parentPackageHierarchy}/${depName}`, dep, dependencyDir);
}
}
}
}

Expand Down Expand Up @@ -1706,14 +1670,3 @@ function cdkMajorVersion() {
const releaseJson = require(`${__dirname}/../../../release.json`);
return releaseJson.majorVersion as number;
}

/**
* Whether this is a package in the monorepo or not
*
* We're going to be cheeky and not do too much analysis, and say that
* a package that has `/node_modules/` in the directory name is NOT in the
* monorepo, otherwise it is.
*/
function isMonoRepoPackageDir(packageDir: string) {
return path.resolve(packageDir).indexOf(`${path.sep}node_modules${path.sep}`) === -1;
}
36 changes: 0 additions & 36 deletions tools/pkglint/lib/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,39 +190,3 @@ export function* findInnerPackages(dir: string): IterableIterator<string> {
yield* findInnerPackages(path.join(dir, fname));
}
}

/**
* Find package directory
*
* Do this by walking upwards in the directory tree until we find
* `<dir>/node_modules/<package>/package.json`.
*
* -------
*
* Things that we tried but don't work:
*
* 1. require.resolve(`${depName}/package.json`, { paths: [rootDir] });
*
* Breaks with ES Modules if `package.json` has not been exported, which is
* being enforced starting Node12.
*
* 2. findPackageJsonUpwardFrom(require.resolve(depName, { paths: [rootDir] }))
*
* Breaks if a built-in NodeJS package name conflicts with an NPM package name
* (in Node15 `string_decoder` is introduced...)
*/
export async function findPackageDir(depName: string, rootDir: string) {
let prevDir;
let dir = rootDir;
while (dir !== prevDir) {
const candidateDir = path.join(dir, 'node_modules', depName);
if (await new Promise(ok => fs.exists(path.join(candidateDir, 'package.json'), ok))) {
return new Promise<string>((ok, ko) => fs.realpath(candidateDir, (err, result) => err ? ko(err) : ok(result)));
}

prevDir = dir;
dir = path.dirname(dir); // dirname('/') -> '/', dirname('c:\\') -> 'c:\\'
}

throw new Error(`Did not find '${depName}' upwards of '${rootDir}'`);
}
2 changes: 1 addition & 1 deletion version.v1.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"version": "1.95.0"
"version": "1.95.1"
}

0 comments on commit ed2bbe6

Please sign in to comment.