267 lines
9.4 KiB
TypeScript
267 lines
9.4 KiB
TypeScript
import type { ICloudAssembly } from '@aws-cdk/cloud-assembly-schema';
|
|
import * as cxschema from '@aws-cdk/cloud-assembly-schema/lib';
|
|
import { CloudFormationStackArtifact } from './artifacts/cloudformation-artifact';
|
|
import { NestedCloudAssemblyArtifact } from './artifacts/nested-cloud-assembly-artifact';
|
|
import { TreeCloudArtifact } from './artifacts/tree-cloud-artifact';
|
|
import { CloudArtifact } from './cloud-artifact';
|
|
/**
|
|
* Represents a deployable cloud application.
|
|
*/
|
|
export declare class CloudAssembly implements ICloudAssembly {
|
|
/**
|
|
* Return whether the given object is a CloudAssembly.
|
|
*
|
|
* We do attribute detection since we can't reliably use 'instanceof'.
|
|
*/
|
|
static isCloudAssembly(x: any): x is CloudAssembly;
|
|
/**
|
|
* Cleans up any temporary assembly directories that got created in this process
|
|
*
|
|
* If a Cloud Assembly is emitted to a temporary directory, its directory gets
|
|
* added to a list. This function iterates over that list and deletes each
|
|
* directory in it, to free up disk space.
|
|
*
|
|
* This function will normally be called automatically during Node process
|
|
* exit and so you don't need to call this. However, some test environments do
|
|
* not properly trigger Node's `exit` event. Notably: Jest does not trigger
|
|
* the `exit` event (<https://github.com/jestjs/jest/issues/10927>).
|
|
*
|
|
* ## Cleaning up temporary directories in jest
|
|
*
|
|
* For Jest, you have to make sure this function is called at the end of the
|
|
* test suite instead:
|
|
*
|
|
* ```js
|
|
* import { CloudAssembly } from 'aws-cdk-lib/cx-api';
|
|
*
|
|
* afterAll(CloudAssembly.cleanupTemporaryDirectories);
|
|
* ```
|
|
*
|
|
* Alternatively, you can use the `setupFilesAfterEnv` feature and use a
|
|
* provided helper script to automatically inject the above into every
|
|
* test file, so you don't have to do it by hand.
|
|
*
|
|
* ```
|
|
* $ npx jest --setupFilesAfterEnv aws-cdk-lib/testhelpers/jest-autoclean
|
|
* ```
|
|
*
|
|
* Or put the following into `jest.config.js`:
|
|
*
|
|
* ```js
|
|
* module.exports = {
|
|
* // ...
|
|
* setupFilesAfterEnv: ['aws-cdk-lib/testhelpers/jest-cleanup'],
|
|
* };
|
|
* ```
|
|
*/
|
|
static cleanupTemporaryDirectories(): void;
|
|
/**
|
|
* The root directory of the cloud assembly.
|
|
*/
|
|
readonly directory: string;
|
|
/**
|
|
* The schema version of the assembly manifest.
|
|
*/
|
|
readonly version: string;
|
|
/**
|
|
* All artifacts included in this assembly.
|
|
*/
|
|
readonly artifacts: CloudArtifact[];
|
|
/**
|
|
* Runtime information such as module versions used to synthesize this assembly.
|
|
*/
|
|
readonly runtime: cxschema.RuntimeInfo;
|
|
/**
|
|
* The raw assembly manifest.
|
|
*/
|
|
readonly manifest: cxschema.AssemblyManifest;
|
|
/**
|
|
* Reads a cloud assembly from the specified directory.
|
|
* @param directory - The root directory of the assembly.
|
|
*/
|
|
constructor(directory: string, loadOptions?: cxschema.LoadManifestOptions);
|
|
/**
|
|
* Attempts to find an artifact with a specific identity.
|
|
* @returns A `CloudArtifact` object or `undefined` if the artifact does not exist in this assembly.
|
|
* @param id - The artifact ID
|
|
*/
|
|
tryGetArtifact(id: string): CloudArtifact | undefined;
|
|
/**
|
|
* Returns a CloudFormation stack artifact from this assembly.
|
|
*
|
|
* Will only search the current assembly.
|
|
*
|
|
* @param stackName - the name of the CloudFormation stack.
|
|
* @throws if there is no stack artifact by that name
|
|
* @throws if there is more than one stack with the same stack name. You can
|
|
* use `getStackArtifact(stack.artifactId)` instead.
|
|
* @returns a `CloudFormationStackArtifact` object.
|
|
*/
|
|
getStackByName(stackName: string): CloudFormationStackArtifact;
|
|
/**
|
|
* Returns a CloudFormation stack artifact by name from this assembly.
|
|
* @deprecated renamed to `getStackByName` (or `getStackArtifact(id)`)
|
|
*/
|
|
getStack(stackName: string): CloudFormationStackArtifact;
|
|
/**
|
|
* Returns a CloudFormation stack artifact from this assembly.
|
|
*
|
|
* @param artifactId - the artifact id of the stack (can be obtained through `stack.artifactId`).
|
|
* @throws if there is no stack artifact with that id
|
|
* @returns a `CloudFormationStackArtifact` object.
|
|
*/
|
|
getStackArtifact(artifactId: string): CloudFormationStackArtifact;
|
|
private tryGetArtifactRecursively;
|
|
/**
|
|
* Returns all the stacks, including the ones in nested assemblies
|
|
*/
|
|
get stacksRecursively(): CloudFormationStackArtifact[];
|
|
/**
|
|
* Returns a nested assembly artifact.
|
|
*
|
|
* @param artifactId - The artifact ID of the nested assembly
|
|
*/
|
|
getNestedAssemblyArtifact(artifactId: string): NestedCloudAssemblyArtifact;
|
|
/**
|
|
* Returns a nested assembly.
|
|
*
|
|
* @param artifactId - The artifact ID of the nested assembly
|
|
*/
|
|
getNestedAssembly(artifactId: string): CloudAssembly;
|
|
/**
|
|
* Returns the tree metadata artifact from this assembly.
|
|
* @throws if there is no metadata artifact by that name
|
|
* @returns a `TreeCloudArtifact` object if there is one defined in the manifest, `undefined` otherwise.
|
|
*/
|
|
tree(): TreeCloudArtifact | undefined;
|
|
/**
|
|
* @returns all the CloudFormation stack artifacts that are included in this assembly.
|
|
*/
|
|
get stacks(): CloudFormationStackArtifact[];
|
|
/**
|
|
* The nested assembly artifacts in this assembly
|
|
*/
|
|
get nestedAssemblies(): NestedCloudAssemblyArtifact[];
|
|
private validateDeps;
|
|
private renderArtifacts;
|
|
}
|
|
/**
|
|
* Construction properties for CloudAssemblyBuilder
|
|
*/
|
|
export interface CloudAssemblyBuilderProps {
|
|
/**
|
|
* Use the given asset output directory
|
|
*
|
|
* @default - Same as the manifest outdir
|
|
*/
|
|
readonly assetOutdir?: string;
|
|
/**
|
|
* If this builder is for a nested assembly, the parent assembly builder
|
|
*
|
|
* @default - This is a root assembly
|
|
*/
|
|
readonly parentBuilder?: CloudAssemblyBuilder;
|
|
}
|
|
/**
|
|
* Can be used to build a cloud assembly.
|
|
*/
|
|
export declare class CloudAssemblyBuilder {
|
|
/**
|
|
* The root directory of the resulting cloud assembly.
|
|
*/
|
|
readonly outdir: string;
|
|
/**
|
|
* The directory where assets of this Cloud Assembly should be stored
|
|
*/
|
|
readonly assetOutdir: string;
|
|
private readonly artifacts;
|
|
private readonly missing;
|
|
private readonly parentBuilder?;
|
|
/**
|
|
* Initializes a cloud assembly builder.
|
|
* @param outdir - The output directory, uses temporary directory if undefined
|
|
*/
|
|
constructor(outdir?: string, props?: CloudAssemblyBuilderProps);
|
|
/**
|
|
* Adds an artifact into the cloud assembly.
|
|
* @param id - The ID of the artifact.
|
|
* @param manifest - The artifact manifest
|
|
*/
|
|
addArtifact(id: string, manifest: cxschema.ArtifactManifest): void;
|
|
/**
|
|
* Reports that some context is missing in order for this cloud assembly to be fully synthesized.
|
|
* @param missing - Missing context information.
|
|
*/
|
|
addMissing(missing: cxschema.MissingContext): void;
|
|
/**
|
|
* Finalizes the cloud assembly into the output directory returns a
|
|
* `CloudAssembly` object that can be used to inspect the assembly.
|
|
*/
|
|
buildAssembly(options?: AssemblyBuildOptions): CloudAssembly;
|
|
/**
|
|
* Creates a nested cloud assembly
|
|
*/
|
|
createNestedAssembly(artifactId: string, displayName: string): CloudAssemblyBuilder;
|
|
/**
|
|
* Delete the cloud assembly directory
|
|
*/
|
|
delete(): void;
|
|
}
|
|
/**
|
|
* Backwards compatibility for when `RuntimeInfo`
|
|
* was defined here. This is necessary because its used as an input in the stable
|
|
* @aws-cdk/core library.
|
|
*
|
|
* @deprecated moved to package 'cloud-assembly-schema'
|
|
* @see core.ConstructNode.synth
|
|
*/
|
|
export interface RuntimeInfo extends cxschema.RuntimeInfo {
|
|
}
|
|
/**
|
|
* Backwards compatibility for when `MetadataEntry`
|
|
* was defined here. This is necessary because its used as an input in the stable
|
|
* @aws-cdk/core library.
|
|
*
|
|
* @deprecated moved to package 'cloud-assembly-schema'
|
|
* @see core.ConstructNode.metadata
|
|
*/
|
|
export interface MetadataEntry extends cxschema.MetadataEntry {
|
|
}
|
|
/**
|
|
* Backwards compatibility for when `MissingContext`
|
|
* was defined here. This is necessary because its used as an input in the stable
|
|
* @aws-cdk/core library.
|
|
*
|
|
* @deprecated moved to package 'cloud-assembly-schema'
|
|
* @see core.Stack.reportMissingContext
|
|
*/
|
|
export interface MissingContext {
|
|
/**
|
|
* The missing context key.
|
|
*/
|
|
readonly key: string;
|
|
/**
|
|
* The provider from which we expect this context key to be obtained.
|
|
*
|
|
* (This is the old untyped definition, which is necessary for backwards compatibility.
|
|
* See cxschema for a type definition.)
|
|
*/
|
|
readonly provider: string;
|
|
/**
|
|
* A set of provider-specific options.
|
|
*
|
|
* (This is the old untyped definition, which is necessary for backwards compatibility.
|
|
* See cxschema for a type definition.)
|
|
*/
|
|
readonly props: Record<string, any>;
|
|
}
|
|
export interface AssemblyBuildOptions {
|
|
/**
|
|
* Include the specified runtime information (module versions) in manifest.
|
|
* @default - if this option is not specified, runtime info will not be included
|
|
* @deprecated All template modifications that should result from this should
|
|
* have already been inserted into the template.
|
|
*/
|
|
readonly runtimeInfo?: RuntimeInfo;
|
|
}
|