From aa04444fd0ca200d4e2229316bd5f287aa705105 Mon Sep 17 00:00:00 2001 From: Sebastian Korfmann Date: Mon, 20 Apr 2020 14:32:00 +0200 Subject: [PATCH 1/3] Build via jsii for polyglot packages --- .eslintrc.json | 3 +- .gitignore | 3 + Readme.md | 22 +- lib/aws-cdk-patrol.ts | 6 +- lib/aws-cdk-reporter.ts | 28 +- lib/index.ts | 14 +- lib/policy-pack.ts | 8 +- lib/policy.ts | 30 +- lib/reporter.ts | 29 +- package.json | 29 +- policies/aws/ec2.ts | 16 +- policies/aws/s3-bucket.ts | 16 +- tsconfig.json | 44 +-- yarn.lock | 565 +++++++++++++++++++++++++++++++++++++- 14 files changed, 693 insertions(+), 120 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 2221f63..05493d0 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -25,7 +25,8 @@ "@typescript-eslint/no-explicit-any": 0, "@typescript-eslint/explicit-function-return-type": 0, "@typescript-eslint/no-use-before-define": 0, - "import/prefer-default-export": 0 + "import/prefer-default-export": 0, + "@typescript-eslint/interface-name-prefix": 0 }, "ignorePatterns": [ "node_modules", diff --git a/.gitignore b/.gitignore index cb0322f..dd8e444 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ *.js !jest.config.js *.d.ts +**/.jsii + +**/.DS_Store # Created by https://www.gitignore.io/api/node # Edit at https://www.gitignore.io/?templates=node diff --git a/Readme.md b/Readme.md index 6f47211..78c30b0 100644 --- a/Readme.md +++ b/Readme.md @@ -23,7 +23,7 @@ Make sure your Cloud resources are: yarn add cloudpatrol ``` -### Example +### Example Given this example: @@ -73,14 +73,14 @@ Hasn't been implemented, yet. But it's on the agenda, and probably possible righ * @cloudformationResource AWS::S3::Bucket * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfig.html */ -export class BucketVersioningPolicy extends Policy implements PolicyInterface { +export class BucketVersioningPolicy extends Policy { public policyName = 'Bucket Versioning' public description = 'This ensures that a bucket is properly versioned' public link = 'https//docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfig.html' public scope = s3.CfnBucket - - public validator(node: s3.CfnBucket, reporter: Reportable): void { - if (!node.versioningConfiguration || + + public validator(node: s3.CfnBucket, reporter: IReportable): void { + if (!node.versioningConfiguration || (!cdk.Tokenization.isResolvable(node.versioningConfiguration) && node.versioningConfiguration.status !== 'Enabled')) { reporter.addWarning(node, this, 'Bucket versioning is not enabled'); } @@ -100,7 +100,7 @@ export class BucketVersioningPolicy extends Policy implements PolicyInterface { Policies have to follow this schema ```typescript -class YourCustomPolicy extends Policy implements PolicyInterface { +class YourCustomPolicy extends Policy { //... } ``` @@ -111,7 +111,7 @@ There are two options to define the scope of a Policy: *Define an explicit scope:* ```typescript -class YourCustomPolicy extends Policy implements PolicyInterface { +class YourCustomPolicy extends Policy { //... public scope = s3.CfnBucket //... @@ -121,7 +121,7 @@ class YourCustomPolicy extends Policy implements PolicyInterface { *Overwrite `isApplicable`:* ```typescript -class YourCustomPolicy extends Policy implements PolicyInterface { +class YourCustomPolicy extends Policy { //... public isApplicable(node: cdk.Resource): boolean { // your custom logic here @@ -132,9 +132,9 @@ class YourCustomPolicy extends Policy implements PolicyInterface { #### Policy Validation Logic ```typescript -class YourCustomPolicy extends Policy implements PolicyInterface { +class YourCustomPolicy extends Policy { //... - public validator(node: s3.CfnBucket, reporter: Reportable, context: PolicyContext): void { + public validator(node: s3.CfnBucket, reporter: IReportable, context: PolicyContext): void { // your custom logic here. } //... @@ -144,7 +144,7 @@ Found issues can be reported via the `reporter` object. You can report multiple - Info - Warning -- Error +- Error `context` is persistent across the entire Stack validation and can be passed in for dynamic information. diff --git a/lib/aws-cdk-patrol.ts b/lib/aws-cdk-patrol.ts index a5f0c45..de41bdf 100644 --- a/lib/aws-cdk-patrol.ts +++ b/lib/aws-cdk-patrol.ts @@ -1,13 +1,13 @@ import * as cdk from "@aws-cdk/core"; import { IConstruct, IAspect } from "constructs"; -import { Reportable, TerminalReporter } from "./reporter"; +import { IReportable, TerminalReporter } from "./reporter"; import { AwsCdkReporter } from "./aws-cdk-reporter" import { PolicyPack } from "./policy-pack"; import { PolicyContext } from "./policy"; export class AwsCdkPatrol implements IAspect { - private readonly reporter: Reportable; - + private readonly reporter: IReportable; + constructor(private readonly policies: PolicyPack, private context: PolicyContext = {}) { this.reporter = this.isSynthesizing() ? new AwsCdkReporter() : new TerminalReporter() } diff --git a/lib/aws-cdk-reporter.ts b/lib/aws-cdk-reporter.ts index 99ee8e4..234f2d1 100644 --- a/lib/aws-cdk-reporter.ts +++ b/lib/aws-cdk-reporter.ts @@ -1,8 +1,9 @@ import { Resource } from "@aws-cdk/core" -import { Reportable } from "./reporter"; -import { IPolicy } from "./policy" +import { IReportable } from "./reporter"; +import { Policy } from "./policy" +import { IConstruct } from "constructs"; -export class AwsCdkReporter implements Reportable { +export class AwsCdkReporter implements IReportable { private violations: Resource[] = [] public generateReport(): void { @@ -13,18 +14,21 @@ export class AwsCdkReporter implements Reportable { return this.violations.length > 0 } - public addInfo(node: Resource, policy: IPolicy, message: string): void { - this.violations.push(node) - node.node.addInfo(message) + public addInfo(node: IConstruct, _policy: Policy, message: string): void { + const resource = node as Resource; + this.violations.push(resource) + resource.node.addInfo(message) } - public addWarning(node: Resource, policy: IPolicy, message: string): void { - this.violations.push(node) - node.node.addWarning(message) + public addWarning(node: IConstruct, _policy: Policy, message: string): void { + const resource = node as Resource; + this.violations.push(resource) + resource.node.addWarning(message) } - public addError(node: Resource, policy: IPolicy, message: string): void { - this.violations.push(node) - node.node.addError(message) + public addError(node: IConstruct, _policy: Policy, message: string): void { + const resource = node as Resource; + this.violations.push(resource) + resource.node.addError(message) } } \ No newline at end of file diff --git a/lib/index.ts b/lib/index.ts index 740f275..9b9d873 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,8 +1,6 @@ -import { TerminalReporter, Reportable } from "./reporter"; -import { AwsCdkReporter } from "./aws-cdk-reporter" -import { Severity } from "./severity"; -import { Policy, PolicyInterface, PolicyContext } from "./policy"; -import { PolicyPack } from "./policy-pack"; -import { AwsCdkPatrol } from "./aws-cdk-patrol"; - -export { TerminalReporter, Reportable, Severity, Policy, PolicyPack, AwsCdkPatrol, AwsCdkReporter, PolicyInterface, PolicyContext}; +export * from "./reporter"; +export * from "./aws-cdk-reporter" +export * from "./severity"; +export * from "./policy"; +export * from "./policy-pack"; +export * from "./aws-cdk-patrol"; diff --git a/lib/policy-pack.ts b/lib/policy-pack.ts index b580e42..955bedd 100644 --- a/lib/policy-pack.ts +++ b/lib/policy-pack.ts @@ -1,15 +1,15 @@ import { IConstruct } from "constructs"; -import { Reportable } from "./reporter"; +import { IReportable } from "./reporter"; import { Policy, PolicyContext } from "./policy"; export class PolicyPack { constructor(private policies: Policy[] = []) { } - + public add(policy: Policy): void { this.policies.push(policy) } - - public validate(node: IConstruct, context: PolicyContext, reporter: Reportable): void { + + public validate(node: IConstruct, context: PolicyContext, reporter: IReportable): void { this.policies.forEach((policy) => { policy.validate(node, reporter, context); }); diff --git a/lib/policy.ts b/lib/policy.ts index b807bea..26c921e 100644 --- a/lib/policy.ts +++ b/lib/policy.ts @@ -1,48 +1,36 @@ import { IConstruct } from "constructs"; -import { Reportable } from "./reporter"; +import { IReportable } from "./reporter"; export interface PolicyContext { [key: string]: any; } -interface PolicyScope { - scope?: IConstruct; - isApplicable(node: IConstruct): boolean; -} - -export interface PolicyInterface extends PolicyScope { - policyName: string; - description: string; - link: string; -} - /* Policy */ -export abstract class Policy implements PolicyScope { +export abstract class Policy { + public policyName = ''; + public description = ''; + public link = ''; public scope?: IConstruct - public abstract validator(node: IConstruct, reporter: Reportable, context: PolicyContext): void + public abstract validator(node: IConstruct, reporter: IReportable, context: PolicyContext): void - public validate(node: IConstruct, reporter: Reportable, context: PolicyContext): void { + public validate(node: IConstruct, reporter: IReportable, context: PolicyContext): void { if (this.isApplicable(node)) { this.validator(node, reporter, context); } } - + /* Checks if the policy is applicable to a given node. Can be overwritten in descendants to implement custom logic. */ public isApplicable(node: IConstruct): boolean { if (!this.scope) throw new Error('If Policy.scope is not defined, `isApplicable` has to be overwritten'); - + // instanceof doesn't work reliably here. Probably need a better check than this. // Plus an ugly hack: tsc was complaining `Property 'prototype' does not exist on type` return node.constructor.name === (this.scope as any).prototype.constructor.name } } -/* - A compatible type for valid descendants of Policy class -*/ -export type IPolicy = Policy & PolicyInterface diff --git a/lib/reporter.ts b/lib/reporter.ts index c43a249..d616705 100644 --- a/lib/reporter.ts +++ b/lib/reporter.ts @@ -1,5 +1,5 @@ import * as cdk from "@aws-cdk/core" -import { IPolicy } from "./policy"; +import { Policy } from "./policy"; import { Severity } from "./severity"; import { IConstruct } from "constructs"; @@ -39,7 +39,7 @@ class ViolationList { public print(): void { Object.values(this.violationItems).forEach((violationItem) => { console.log("\x1b[1m%s\x1b[0m", `${violationItem.scope} (${violationItem.resourceType}):`) - console.group() + console.group() console.log('\n-------------- Violations ------------------') violationItem.violations.forEach((violation) => { console.log(violation.message()) @@ -51,18 +51,17 @@ class ViolationList { }) } } - -export interface Reportable { +export interface IReportable { generateReport(): void; hasViolations(): boolean; - addInfo(node: IConstruct, policy: IPolicy, message: string): void; - addWarning(node: IConstruct, policy: IPolicy, message: string): void; - addError(node: IConstruct, policy: IPolicy, message: string): void; + addInfo(node: IConstruct, policy: Policy, message: string): void; + addWarning(node: IConstruct, policy: Policy, message: string): void; + addError(node: IConstruct, policy: Policy, message: string): void; } interface PolicyViolationProps { node: any; - policy: IPolicy; + policy: Policy; message: string; severity: Severity; } @@ -71,7 +70,7 @@ class PolicyViolation { public scope: string; public resourceType: string; private node: cdk.CfnResource; - private policy: IPolicy; + private policy: Policy; constructor(private props: PolicyViolationProps) { this.node = this.props.node as cdk.CfnResource; @@ -112,7 +111,7 @@ class PolicyViolation { } } -export class TerminalReporter implements Reportable { +export class TerminalReporter implements IReportable { private violations: ViolationList constructor() { this.violations = new ViolationList() @@ -120,7 +119,7 @@ export class TerminalReporter implements Reportable { public generateReport(): void { console.log("\x1b[4m\x1b[35;1mCloud Patrol Report\x1b[0m\n"); - this.violations.print() + this.violations.print() } public hasViolations(): boolean { @@ -129,16 +128,16 @@ export class TerminalReporter implements Reportable { } return false; } - public addInfo(node: IConstruct, policy: IPolicy, message: string): void { + public addInfo(node: IConstruct, policy: Policy, message: string): void { this.reportViolation(node, policy, message, Severity.INFO); } - public addWarning(node: IConstruct, policy: IPolicy, message: string): void { + public addWarning(node: IConstruct, policy: Policy, message: string): void { this.reportViolation(node, policy, message, Severity.WARNING); } - public addError(node: IConstruct, policy: IPolicy, message: string): void { + public addError(node: IConstruct, policy: Policy, message: string): void { this.reportViolation(node, policy, message, Severity.ERROR); } - private reportViolation(node: IConstruct, policy: IPolicy, message: string, severity: Severity): void { + private reportViolation(node: IConstruct, policy: Policy, message: string, severity: Severity): void { this.violations.add( new PolicyViolation({ node, diff --git a/package.json b/package.json index cb57230..3e45cbc 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,9 @@ "description": "Policy as Code for the CDK", "main": "lib/index.js", "scripts": { - "build": "tsc", - "watch": "tsc -w", + "build": "jsii", + "watch": "jsii -w", + "package": "jsii-pacmak", "test": "jest", "cdk": "cdk", "lint": "eslint" @@ -17,10 +18,15 @@ ], "author": "Sebastian Korfmann ", "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/skorfmann/cloudpatrol" + }, "engines": { "node": ">= 0.10" }, - "dependencies": {}, + "dependencies": { + }, "devDependencies": { "@aws-cdk/aws-ec2": "1.32.2", "@aws-cdk/aws-s3": "1.32.2", @@ -31,12 +37,27 @@ "constructs": "^2.0.1", "eslint": "^6.8.0", "eslint-plugin-import": "^2.20.2", - "typescript": "^3.8.3" + "typescript": "^3.8.3", + "jsii": "^1.2.0", + "jsii-pacmak": "^1.2.0" }, "peerDependencies": { "@aws-cdk/aws-ec2": "^1.0.0", "@aws-cdk/aws-s3": "^1.0.0", "@aws-cdk/core": "^1.0.0", "constructs": "^2.0.1" + }, + "stability": "experimental", + "types": "lib/index.d.ts", + "jsii": { + "outdir": "dist", + "versionFormat": "short", + "excludeTypescript": ["example"], + "targets": { + "python": { + "distName": "cloudpatrol", + "module": "cloudpatrol" + } + } } } diff --git a/policies/aws/ec2.ts b/policies/aws/ec2.ts index c3e3255..1ed95f2 100644 --- a/policies/aws/ec2.ts +++ b/policies/aws/ec2.ts @@ -1,6 +1,6 @@ import * as ec2 from '@aws-cdk/aws-ec2'; -import { Policy, PolicyInterface } from '../../lib/policy'; -import { Reportable } from '../../lib/reporter'; +import { Policy } from '../../lib/policy'; +import { IReportable } from '../../lib/reporter'; export interface Ec2InstanceTypePolicyConfig { instanceClasses?: ec2.InstanceClass[]; @@ -10,11 +10,11 @@ export interface Ec2InstanceTypePolicyConfig { /** * This Policy ensures that we're using instances of a certain instance type * - * + * * @cloudformationResource AWS::EC2::Instance * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-instancetype */ -export class Ec2InstanceTypePolicy extends Policy implements PolicyInterface { +export class Ec2InstanceTypePolicy extends Policy { public policyName = 'Ec2InstanceType' public description = 'This Policy ensures that we\'re using instances of a certain class'; public link = 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-instancetype'; @@ -29,15 +29,17 @@ export class Ec2InstanceTypePolicy extends Policy implements PolicyInterface { this.instanceSizes = config.instanceSizes } - public validator(node: ec2.CfnInstance, reporter: Reportable): void { + public validator(node: ec2.CfnInstance, reporter: IReportable): void { if (this.instanceTypes().find(instanceType => node.instanceType?.includes(instanceType)) === undefined) { reporter.addInfo(node, this, `Please consider using instances from the following types ${this.instanceTypes()}`); } } private instanceTypes(): string[] { - if (Array.isArray(this.instanceClasses)) { - return this.instanceClasses.flatMap(c => ((this.instanceSizes && this.instanceSizes.map(s => `${c}.${s}`) || [`${c}.`]))) + if (Array.isArray(this.instanceClasses)) { + return this.instanceClasses.map((c: any) => { + return (this.instanceSizes && this.instanceSizes.map(s => `${c}.${s}`) || [`${c}.`]) + }).reduce((acc, val) => acc.concat(val), []); } else if (Array.isArray(this.instanceSizes)) { return this.instanceSizes } else { diff --git a/policies/aws/s3-bucket.ts b/policies/aws/s3-bucket.ts index 67ccb97..5f03d39 100644 --- a/policies/aws/s3-bucket.ts +++ b/policies/aws/s3-bucket.ts @@ -1,7 +1,7 @@ import * as cdk from "@aws-cdk/core"; import * as s3 from '@aws-cdk/aws-s3'; -import { Policy, PolicyInterface } from '../../lib/policy'; -import { Reportable } from '../../lib/reporter'; +import { Policy } from '../../lib/policy'; +import { IReportable } from '../../lib/reporter'; /** * This Policy ensures that a bucket is properly versioned @@ -9,14 +9,14 @@ import { Reportable } from '../../lib/reporter'; * @cloudformationResource AWS::S3::Bucket * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfig.html */ -export class BucketVersioningPolicy extends Policy implements PolicyInterface { +export class BucketVersioningPolicy extends Policy { public policyName = 'Bucket Versioning' public description = 'This ensures that a bucket is properly versioned' public link = 'https//docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfig.html' public scope = s3.CfnBucket - - public validator(node: s3.CfnBucket, reporter: Reportable): void { - if (!node.versioningConfiguration || + + public validator(node: s3.CfnBucket, reporter: IReportable): void { + if (!node.versioningConfiguration || (!cdk.Tokenization.isResolvable(node.versioningConfiguration) && node.versioningConfiguration.status !== 'Enabled')) { reporter.addWarning(node, this, 'Bucket versioning is not enabled'); } @@ -29,13 +29,13 @@ export class BucketVersioningPolicy extends Policy implements PolicyInterface { * @cloudformationResource AWS::S3::Bucket * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-bucketencryption.html */ -export class BucketEncryptionPolicy extends Policy implements PolicyInterface { +export class BucketEncryptionPolicy extends Policy { public policyName = 'Bucket Encryption' public description = 'This Policy ensures that a bucket is properly encrypted' public link = 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-bucketencryption.html' public scope = s3.CfnBucket - public validator(node: s3.CfnBucket, reporter: Reportable): void { + public validator(node: s3.CfnBucket, reporter: IReportable): void { if (!node.bucketEncryption || (!cdk.Tokenization.isResolvable(node.bucketEncryption))) { reporter.addError(node, this, 'Bucket encryption is not enabled. Please consider to add encryption'); } diff --git a/tsconfig.json b/tsconfig.json index 42f82e5..b8454a6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,23 +1,35 @@ { "compilerOptions": { - "target":"ES2019", - "module": "commonjs", - "lib": ["es2019"], - "declaration": true, - "strict": true, - "noImplicitAny": true, - "strictNullChecks": true, - "noImplicitThis": true, "alwaysStrict": true, - "noUnusedLocals": false, - "noUnusedParameters": false, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": false, + "charset": "utf8", + "declaration": true, + "experimentalDecorators": true, "inlineSourceMap": true, "inlineSources": true, - "experimentalDecorators": true, - "strictPropertyInitialization":false, - "typeRoots": ["./node_modules/@types"] + "lib": [ + "es2018" + ], + "module": "CommonJS", + "noEmitOnError": true, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "stripInternal": true, + "target": "ES2018" }, - "exclude": ["cdk.out", "example", "node_modules"] + "include": [ + "**/*.ts" + ], + "exclude": [ + "node_modules", + "example" + ], + "_generated_by_jsii_": "Generated by jsii - safe to delete, and ideally should be in .gitignore" } diff --git a/yarn.lock b/yarn.lock index 0610381..df7a9b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -125,6 +125,13 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@jsii/spec@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@jsii/spec/-/spec-1.2.0.tgz#232d33afc057a3b81814f0c420078b428bc1cf7c" + integrity sha512-oAe3MGldHqcZyAnL5vk3mdhicb55vjanqbxWi8DZN/hcIWnIxr+uSBwUG8LxDIRqJoJ92croj14h7y0NeyYOvw== + dependencies: + jsonschema "^1.2.5" + "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" @@ -232,7 +239,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== @@ -247,6 +254,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + array-includes@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" @@ -269,6 +281,18 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -287,6 +311,16 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase@^5.0.0, camelcase@^5.1.3, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +case@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" + integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== + chalk@^2.0.0, chalk@^2.1.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -321,6 +355,29 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +codemaker@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/codemaker/-/codemaker-1.2.0.tgz#9a9ea3567cb4322710b8145ed31494385e65503a" + integrity sha512-Cga8BFZz7muPZMcYvc+7JIgN2wNwrGaaFDLVXR4+xUDTaXFDq09tUNzx30o+GmGH4NMy8mNTSTxmTugJNB3U8w== + dependencies: + camelcase "^5.3.1" + decamelize "^1.2.0" + fs-extra "^9.0.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -345,6 +402,21 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +colors@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +commonmark@^0.29.1: + version "0.29.1" + resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.29.1.tgz#fdbf5970ca23600f4a27487e30eed43b66b83ef5" + integrity sha512-DafPdNYFXoEhsSiR4O+dJ45UJBfDL4cBTks4B+agKiaWt7qjG0bIhg5xuCE0RqU71ikJcBIf4/sRHh9vYQVF8Q== + dependencies: + entities "~1.1.1" + mdurl "~1.0.1" + minimist "~1.2.0" + string.prototype.repeat "^0.2.0" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -371,6 +443,16 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +date-format@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf" + integrity sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA== + +date-format@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-3.0.0.tgz#eb8780365c7d2b1511078fb491e6479780f3ad95" + integrity sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w== + debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -385,6 +467,30 @@ debug@^4.0.1, debug@^4.1.1: dependencies: ms "^2.1.1" +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +deep-equal@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.2.tgz#e68291e245493ae908ca7190c1deea57a01ed82b" + integrity sha512-kX0bjV7tdMuhrhzKPEnVwqfQCuf+IEfN+4Xqv4eKd75xGRyn8yzdQ9ujPY6a221rgJKyQC4KBu1PibDTpa6m9w== + dependencies: + es-abstract "^1.17.5" + es-get-iterator "^1.1.0" + is-arguments "^1.0.4" + is-date-object "^1.0.2" + is-regex "^1.0.5" + isarray "^2.0.5" + object-is "^1.0.2" + object-keys "^1.1.1" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + which-boxed-primitive "^1.0.1" + which-collection "^1.0.1" + which-typed-array "^1.1.1" + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -397,6 +503,16 @@ define-properties@^1.1.2, define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -422,6 +538,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + error-ex@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -429,7 +550,7 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -446,6 +567,19 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" +es-get-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" + integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + dependencies: + es-abstract "^1.17.4" + has-symbols "^1.0.1" + is-arguments "^1.0.4" + is-map "^2.0.1" + is-set "^2.0.1" + is-string "^1.0.5" + isarray "^2.0.5" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -460,6 +594,11 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + eslint-import-resolver-node@^0.3.2: version "0.3.3" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" @@ -652,6 +791,14 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -661,11 +808,35 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" -flatted@^2.0.0: +flatted@^2.0.0, flatted@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" + integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -681,6 +852,11 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + glob-parent@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" @@ -707,7 +883,7 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -graceful-fs@^4.1.2: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -796,17 +972,32 @@ inquirer@^7.0.0: strip-ansi "^6.0.0" through "^2.3.6" +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" + integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== + +is-boolean-object@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" + integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== + is-callable@^1.1.4, is-callable@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== @@ -833,6 +1024,16 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" +is-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" + integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== + +is-number-object@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -845,7 +1046,12 @@ is-regex@^1.0.5: dependencies: has "^1.0.3" -is-string@^1.0.5: +is-set@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" + integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== + +is-string@^1.0.4, is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== @@ -857,11 +1063,36 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" +is-typed-array@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d" + integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== + dependencies: + available-typed-arrays "^1.0.0" + es-abstract "^1.17.4" + foreach "^2.0.5" + has-symbols "^1.0.1" + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakset@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" + integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== + isarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -880,6 +1111,66 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +jsii-pacmak@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/jsii-pacmak/-/jsii-pacmak-1.2.0.tgz#b8e13d68fe06d596d95b39752fecac862bc404ac" + integrity sha512-ToP+syuqjSDotbmIx7hTreNHuTk3Z9TUT4tfYT+qTimvxaJHEj7feeg5Gu+4yhIEOtyVbiFoss46/QPmpt7W8g== + dependencies: + "@jsii/spec" "^1.2.0" + camelcase "^5.1.3" + clone "^2.1.2" + codemaker "^1.2.0" + commonmark "^0.29.1" + escape-string-regexp "^2.0.0" + fs-extra "^9.0.0" + jsii-reflect "^1.2.0" + jsii-rosetta "^1.2.0" + semver "^7.1.3" + spdx-license-list "^6.1.0" + xmlbuilder "^15.1.0" + yargs "^15.3.1" + +jsii-reflect@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/jsii-reflect/-/jsii-reflect-1.2.0.tgz#dba2dec42267e874093d2c3f52dc1376b0c6da62" + integrity sha512-55Q2gfgilmrWsfWdgzZzEDJ9X5aEMUK8ixritn7oAK/tiI9UwXibn+tAvnAyo/OD+UA0r4hRASAF7FvRjAmX9Q== + dependencies: + "@jsii/spec" "^1.2.0" + colors "^1.4.0" + fs-extra "^9.0.0" + oo-ascii-tree "^1.2.0" + yargs "^15.3.1" + +jsii-rosetta@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/jsii-rosetta/-/jsii-rosetta-1.2.0.tgz#d87407311725798ebf61281085333d736646b633" + integrity sha512-/VwG8QPB2COVoJOIlkX1a3VgDBJvv3fhG6MQTouoz+8ttfTDMxNSXBcfMaFiO8aS4J88yU0x3VhY4JdQrxHDQw== + dependencies: + "@jsii/spec" "^1.2.0" + commonmark "^0.29.1" + fs-extra "^9.0.0" + typescript "~3.8.3" + xmldom "^0.3.0" + yargs "^15.3.1" + +jsii@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/jsii/-/jsii-1.2.0.tgz#06a27a552479fa5f6037eb63c9565a4725aa7f12" + integrity sha512-JIyn7z3umoeEyK0QdVdnskjIW7SmV9S6sUKJVY424t7g0QE6NRlhM26JarRxCwCGuR1lJ1AnvcQbvQ7vV8/kaA== + dependencies: + "@jsii/spec" "^1.2.0" + case "^1.6.3" + colors "^1.4.0" + deep-equal "^2.0.1" + fs-extra "^9.0.0" + log4js "^6.1.2" + semver "^7.1.3" + semver-intersect "^1.4.0" + sort-json "^2.0.0" + spdx-license-list "^6.1.0" + typescript "~3.8.3" + yargs "^15.3.1" + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -890,6 +1181,27 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" + integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + dependencies: + universalify "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonschema@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.6.tgz#52b0a8e9dc06bbae7295249d03e4b9faee8a0c0b" + integrity sha512-SqhURKZG07JyKKeo/ir24QnS4/BV7a6gQy93bUSe4lUdNp0QNpIz2c9elWJQ9dpc5cQYY6cvCzgRwy0MQCLyqA== + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -916,11 +1228,34 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash@^4.17.14, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +log4js@^6.1.2: + version "6.2.0" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.2.0.tgz#e7514cd139c09b7b81a98b71c1b1eebc8a96c1ad" + integrity sha512-4x14gHnFaWgkKEygGtIBAvAaHuJX1z86bLx4SQ76jdgQmYxaW3SF6EFoEn9nRG6fW7TuKvyERItG6vxgNOCeTA== + dependencies: + date-format "^3.0.0" + debug "^4.1.1" + flatted "^2.0.1" + rfdc "^1.1.4" + streamroller "^2.2.3" + +mdurl@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -933,7 +1268,7 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.5: +minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -985,6 +1320,14 @@ object-inspect@^1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +object-is@^1.0.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -1024,6 +1367,11 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +oo-ascii-tree@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/oo-ascii-tree/-/oo-ascii-tree-1.2.0.tgz#8e9a8891d648e0fbc3aa79dda1cb38d5fc4f0b61" + integrity sha512-F96XM+6CrSQcCvEXX9l92h7RblmvN4FeL3VsNABLr9W6D9ZQ1m7JeA4eRdKj/kFlJ9SebAIZsX1nZAcWXyNVjQ== + optionator@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -1048,6 +1396,13 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -1055,11 +1410,23 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -1079,6 +1446,11 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -1145,6 +1517,14 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" +regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -1155,6 +1535,16 @@ regexpp@^3.0.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -1175,6 +1565,11 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" +rfdc@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" + integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug== + rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -1201,7 +1596,14 @@ rxjs@^6.5.3: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -"semver@2 || 3 || 4 || 5", semver@^5.5.0: +semver-intersect@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.4.0.tgz#bdd9c06bedcdd2fedb8cd352c3c43ee8c61321f3" + integrity sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ== + dependencies: + semver "^5.0.0" + +"semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -1211,11 +1613,21 @@ semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.1.3: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + semver@^7.2.1: version "7.2.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.2.3.tgz#3641217233c6382173c76bf2c7ecd1e1c16b0d8a" integrity sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig== +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -1228,6 +1640,14 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -1242,6 +1662,15 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +sort-json@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-json/-/sort-json-2.0.0.tgz#a7030d8875adbd4a5ea39a000567ed94c1aa3c50" + integrity sha512-OgXPErPJM/rBK5OhzIJ+etib/BmLQ1JY55Nb/ElhoWUec62pXNF/X6DrecHq3NW5OAGX0KxYD7m0HtgB9dvGeA== + dependencies: + detect-indent "^5.0.0" + detect-newline "^2.1.0" + minimist "^1.2.0" + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -1268,11 +1697,25 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== +spdx-license-list@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/spdx-license-list/-/spdx-license-list-6.1.0.tgz#a79cf9fb0222db69dfef067f61c52f0eb3ad36bb" + integrity sha512-xiaE3KtBiylVmZrlux8tHR28HZgZ921HTXbx2fEZaDloRjbBOro79LeKttcQJ5MSDYFKG7in9v2GTAEhcR9/Qg== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +streamroller@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-2.2.3.tgz#b95c9fad44e2e89005d242141486b3b4962c2d28" + integrity sha512-AegmvQsscTRhHVO46PhCDerjIpxi7E+d2GxgUDu+nzw/HuLnUdxHWr6WQ+mVn/4iJgMKKFFdiUwFcFRDvcjCtw== + dependencies: + date-format "^2.1.0" + debug "^4.1.1" + fs-extra "^8.1.0" + string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -1282,7 +1725,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -1291,6 +1734,11 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.prototype.repeat@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" + integrity sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8= + string.prototype.trimend@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" @@ -1419,11 +1867,21 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -typescript@^3.8.3: +typescript@^3.8.3, typescript@~3.8.3: version "3.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -1444,6 +1902,44 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +which-boxed-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1" + integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ== + dependencies: + is-bigint "^1.0.0" + is-boolean-object "^1.0.0" + is-number-object "^1.0.3" + is-string "^1.0.4" + is-symbol "^1.0.2" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which-typed-array@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2" + integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== + dependencies: + available-typed-arrays "^1.0.2" + es-abstract "^1.17.5" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -1456,6 +1952,15 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -1467,3 +1972,43 @@ write@1.0.3: integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== dependencies: mkdirp "^0.5.1" + +xmlbuilder@^15.1.0: + version "15.1.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + +xmldom@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.3.0.tgz#e625457f4300b5df9c2e1ecb776147ece47f3e5a" + integrity sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g== + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yargs-parser@^18.1.1: + version "18.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" + integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.3.1: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" From 6b6b576603f9456b9c9ab8a86eae59780aab0ed7 Mon Sep 17 00:00:00 2001 From: Sebastian Korfmann Date: Mon, 20 Apr 2020 14:32:26 +0200 Subject: [PATCH 2/3] Whitespace --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index 78c30b0..523b740 100644 --- a/Readme.md +++ b/Readme.md @@ -168,7 +168,7 @@ Cloud Patrol makes use of [Aspects](https://docs.aws.amazon.com/cdk/latest/guide - [ ] Modularize and detangle `Reporter` to allow multiple ways of reporting - [ ] [Github Actions](https://github.com/features/actions) for easy integration - [ ] `.cloudpatrol` file? -- [ ] Provide more policies out of the box +- [ ] Provide more policies out of the box - [ ] CLI which autodetects Stacks for inspection - [ ] Integration tests against the last X releases of the [AWS CDK](https://github.com/aws/aws-cdk/) - [ ] Integrate supported languages of [jsii](https://github.com/aws/jsii) From ad620787f160f9b31c77acd8adcaa6a2298902e7 Mon Sep 17 00:00:00 2001 From: Sebastian Korfmann Date: Mon, 20 Apr 2020 14:32:34 +0200 Subject: [PATCH 3/3] Add .npmignore --- .npmignore | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..d2e64ba --- /dev/null +++ b/.npmignore @@ -0,0 +1,14 @@ + +# Exclude typescript source and config +*.ts +tsconfig.json + +# Include javascript files and typescript declarations +!*.js +!*.d.ts + +# Exclude jsii outdir +dist + +# Include .jsii +!.jsii