Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .projenrc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1270,6 +1270,7 @@ toolkitLib.postCompileTask.exec('node build-tools/bundle.mjs');
toolkitLib.postCompileTask.exec('node ./lib/index.js >/dev/null 2>/dev/null </dev/null');
toolkitLib.postCompileTask.exec('node ./lib/api/aws-cdk.js >/dev/null 2>/dev/null </dev/null');
toolkitLib.postCompileTask.exec('node ./lib/api/shared-public.js >/dev/null 2>/dev/null </dev/null');
toolkitLib.postCompileTask.exec('node ./lib/api/shared-private.js >/dev/null 2>/dev/null </dev/null');
toolkitLib.postCompileTask.exec('node ./lib/private/util.js >/dev/null 2>/dev/null </dev/null');

// Do include all .ts files inside init-templates
Expand Down
3 changes: 3 additions & 0 deletions packages/@aws-cdk/toolkit-lib/.projen/tasks.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion packages/@aws-cdk/toolkit-lib/lib/actions/bootstrap/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import type * as cxapi from '@aws-cdk/cx-api';
import { environmentsFromDescriptors } from './private';
import type { Tag } from '../../api/aws-cdk';
import type { ICloudAssemblySource, IIoHost } from '../../api/cloud-assembly';
import type { ICloudAssemblySource } from '../../api/cloud-assembly';
import { ALL_STACKS } from '../../api/cloud-assembly/private';
import type { IIoHost } from '../../api/io';
import { asIoHelper } from '../../api/shared-private';
import { assemblyFromSource } from '../../toolkit/private';

Expand Down
15 changes: 4 additions & 11 deletions packages/@aws-cdk/toolkit-lib/lib/api/aws-cdk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,16 @@ export { Settings } from '../../../../aws-cdk/lib/api/settings';
export { type Tag, tagsForStack } from '../../../../aws-cdk/lib/api/tags';
export { DEFAULT_TOOLKIT_STACK_NAME } from '../../../../aws-cdk/lib/api/toolkit-info';
export { ResourceMigrator } from '../../../../aws-cdk/lib/api/resource-import';
export { CloudWatchLogEventMonitor, findCloudWatchLogGroups } from '../../../../aws-cdk/lib/api/logs';
export { CloudWatchLogEventMonitor, findCloudWatchLogGroups } from '../../../../aws-cdk/lib/api/logs-monitor';
export { type WorkGraph, WorkGraphBuilder, AssetBuildNode, AssetPublishNode, StackNode, Concurrency } from '../../../../aws-cdk/lib/api/work-graph';
export { Bootstrapper } from '../../../../aws-cdk/lib/api/bootstrap';
export { loadTree, some } from '../../../../aws-cdk/lib/api/tree';
export { RWLock, type ILock } from '../../../../aws-cdk/lib/api/rwlock';
export { HotswapMode, HotswapPropertyOverrides, EcsHotswapProperties } from '../../../../aws-cdk/lib/api/hotswap';

// Context Providers
export * as contextproviders from '../../../../aws-cdk/lib/context-providers';

// @todo APIs not clean import
export { HotswapMode } from '../../../../aws-cdk/lib/api/hotswap';
export { HotswapPropertyOverrides, EcsHotswapProperties } from '../../../../aws-cdk/lib/api/hotswap';
export { RWLock, type ILock } from '../../../../aws-cdk/lib/api/util/rwlock';

// @todo Cloud Assembly and Executable - this is a messy API right now
export { CloudAssembly, sanitizePatterns, StackCollection, ExtendedStackSelection } from '../../../../aws-cdk/lib/api/cxapp/cloud-assembly';
export { prepareDefaultEnvironment, prepareContext, spaceAvailableForContext } from '../../../../aws-cdk/lib/api/cxapp/exec';
export { guessExecutable } from '../../../../aws-cdk/lib/api/cxapp/exec';

// @todo Should not use! investigate how to replace
export { versionNumber } from '../../../../aws-cdk/lib/cli/version';
export { guessExecutable, prepareDefaultEnvironment, prepareContext, spaceAvailableForContext } from '../../../../aws-cdk/lib/api/cxapp/exec';
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export * from '../../api/shared-public';
export { StackSelectionStrategy, StackSelector } from '../../api/shared-public';
export * from './source-builder';
export * from './types';

Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import * as cxapi from '@aws-cdk/cx-api';
import * as fs from 'fs-extra';
import { lte } from 'semver';
import type { SdkProvider } from '../../../api/aws-cdk';
import { prepareDefaultEnvironment as oldPrepare, prepareContext, spaceAvailableForContext, Settings, loadTree, some, versionNumber, guessExecutable } from '../../../api/aws-cdk';
import { splitBySize } from '../../../private/util';
import { prepareDefaultEnvironment as oldPrepare, prepareContext, spaceAvailableForContext, Settings, loadTree, some, guessExecutable } from '../../../api/aws-cdk';
import { splitBySize, versionNumber } from '../../../private/util';
import type { ToolkitServices } from '../../../toolkit/private';
import { IO } from '../../io/private';
import type { IoHelper } from '../../shared-private';
Expand Down
1 change: 1 addition & 0 deletions packages/@aws-cdk/toolkit-lib/lib/api/shared-private.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@

export * from '../../../tmp-toolkit-helpers/src/api/io/private';
export * from '../../../tmp-toolkit-helpers/src/private';
export * from '../../../tmp-toolkit-helpers/src/api';
18 changes: 17 additions & 1 deletion packages/@aws-cdk/toolkit-lib/lib/api/shared-public.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
/* eslint-disable import/no-restricted-paths */

export * from '../../../tmp-toolkit-helpers/src/api';
export {
ToolkitError,
AuthenticationError,
AssemblyError,
ExpandStackSelection,
StackSelectionStrategy,
} from '../../../tmp-toolkit-helpers/src/api';

export type {
IoMessageLevel,
IoMessageCode,
IIoHost,
IoMessage,
IoRequest,
ToolkitAction,
StackSelector,
} from '../../../tmp-toolkit-helpers/src/api';

export * from '../../../tmp-toolkit-helpers/src/payloads';
1 change: 0 additions & 1 deletion packages/@aws-cdk/toolkit-lib/lib/toolkit/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
export * from './toolkit';
export * from './non-interactive-io-host';
export * from '../api/shared-public';
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as chalk from 'chalk';
import type { IIoHost, IoMessage, IoMessageLevel, IoRequest } from '../api/io';
import type { IActivityPrinter } from '../api/shared-private';
import { HistoryActivityPrinter, isMessageRelevantForLevel } from '../api/shared-private';
import type { IIoHost, IoMessage, IoMessageLevel, IoRequest } from '../api/shared-public';
import { isCI, isTTY } from '../util/shell-env';

export interface NonInteractiveIoHostProps {
Expand Down
5 changes: 2 additions & 3 deletions packages/@aws-cdk/toolkit-lib/lib/toolkit/toolkit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,8 @@ import { ALL_STACKS, CloudAssemblySourceBuilder, IdentityCloudAssemblySource } f
import type { IIoHost, IoMessageLevel } from '../api/io';
import { IO, SPAN, asSdkLogger, withoutColor, withoutEmojis, withTrimmedWhitespace } from '../api/io/private';
import type { IoHelper } from '../api/shared-private';
import { asIoHelper } from '../api/shared-private';
import type { AssemblyData, StackDetails, ToolkitAction } from '../api/shared-public';
import { DiffFormatter, RequireApproval, ToolkitError, removeNonImportResources } from '../api/shared-public';
import { asIoHelper, DiffFormatter, RequireApproval, ToolkitError, removeNonImportResources } from '../api/shared-private';
import type { ToolkitAction, AssemblyData, StackDetails } from '../api/shared-public';
import { obscureTemplate, serializeStructure, validateSnsTopicArn, formatTime, formatErrorMessage, deserializeStructure } from '../private/util';
import { pLimit } from '../util/concurrency';
import { promiseWithResolvers } from '../util/promises';
Expand Down
3 changes: 1 addition & 2 deletions packages/@aws-cdk/toolkit-lib/test/_helpers/test-io-host.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { IIoHost, IoMessage, IoMessageLevel, IoRequest } from '../../lib/api/io';
import { asIoHelper, isMessageRelevantForLevel, type IoHelper } from '../../lib/api/shared-private';
import { RequireApproval } from '../../lib/toolkit';
import { asIoHelper, isMessageRelevantForLevel, RequireApproval, type IoHelper } from '../../lib/api/shared-private';

/**
* A test implementation of IIoHost that does nothing but can be spied on.
Expand Down
3 changes: 2 additions & 1 deletion packages/@aws-cdk/toolkit-lib/test/actions/deploy.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { RequireApproval, StackParameters } from '../../lib';
import { StackParameters } from '../../lib';
import * as awsCdkApi from '../../lib/api/aws-cdk';
import type { DeployStackOptions, DeployStackResult } from '../../lib/api/aws-cdk';
import { RequireApproval } from '../../lib/api/shared-private';
import { Toolkit } from '../../lib/toolkit';
import { builderFixture, TestIoHost } from '../_helpers';
import { MockSdk } from '../util/aws-cdk';
Expand Down
5 changes: 3 additions & 2 deletions packages/@aws-cdk/toolkit-lib/test/actions/diff.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import * as path from 'path';
import { format } from 'util';
import * as chalk from 'chalk';
import { RequireApproval } from '../../lib';
import { DiffMethod } from '../../lib/actions/diff';
import * as awsCdkApi from '../../lib/api/aws-cdk';
import { StackSelectionStrategy, Toolkit } from '../../lib/toolkit';
import { RequireApproval } from '../../lib/api/shared-private';
import { StackSelectionStrategy } from '../../lib/api/shared-public';
import { Toolkit } from '../../lib/toolkit';
import { builderFixture, TestIoHost } from '../_helpers';
import { MockSdk } from '../util/aws-cdk';

Expand Down
4 changes: 2 additions & 2 deletions packages/aws-cdk/lib/api/cxapp/exec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ import { PROJECT_CONFIG, USER_DEFAULTS } from '../../cli/user-configuration';
import { versionNumber } from '../../cli/version';
import { splitBySize } from '../../util';
import type { SdkProvider } from '../aws-auth';
import type { ILock } from '../rwlock';
import { RWLock } from '../rwlock';
import type { Settings } from '../settings';
import type { ILock } from '../util/rwlock';
import { RWLock } from '../util/rwlock';

export interface ExecProgramResult {
readonly assembly: cxapi.CloudAssembly;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { promises as fs } from 'fs';
import * as path from 'path';
import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api';
import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api';

/**
* A single-writer/multi-reader lock on a directory
Expand Down
4 changes: 2 additions & 2 deletions packages/aws-cdk/lib/cli/cdk-toolkit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ import type { DeploymentMethod, SuccessfulDeployStackResult, Deployments } from
import { createDiffChangeSet } from '../api/deployments/cfn-api';
import { GarbageCollector } from '../api/garbage-collection/garbage-collector';
import { HotswapMode, HotswapPropertyOverrides, EcsHotswapProperties } from '../api/hotswap/common';
import { findCloudWatchLogGroups } from '../api/logs/find-cloudwatch-logs';
import { CloudWatchLogEventMonitor } from '../api/logs/logs-monitor';
import { findCloudWatchLogGroups } from '../api/logs-monitor/find-cloudwatch-logs';
import { CloudWatchLogEventMonitor } from '../api/logs-monitor/logs-monitor';
import { ResourceImporter, removeNonImportResources, ResourceMigrator } from '../api/resource-import';
import { tagsForStack, type Tag } from '../api/tags';
import type { AssetBuildNode, AssetPublishNode, Concurrency, StackNode, WorkGraph } from '../api/work-graph';
Expand Down
2 changes: 1 addition & 1 deletion packages/aws-cdk/lib/cli/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ import { Deployments } from '../api/deployments';
import { HotswapMode } from '../api/hotswap/common';
import { Notices } from '../api/notices';
import { PluginHost } from '../api/plugin';
import type { ILock } from '../api/rwlock';
import type { Settings } from '../api/settings';
import { ToolkitInfo } from '../api/toolkit-info';
import type { ILock } from '../api/util/rwlock';
import { contextHandler as context } from '../commands/context';
import { docs } from '../commands/docs';
import { doctor } from '../commands/doctor';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import {
CfnEvaluationException,
EvaluateCloudFormationTemplate,
Template,
} from '../../lib/api/cloudformation';
import { MockSdk, mockCloudFormationClient, restoreSdkMocksToDefault } from '../_helpers/mock-sdk';
} from '../../../lib/api/cloudformation';
import { MockSdk, mockCloudFormationClient, restoreSdkMocksToDefault } from '../../_helpers/mock-sdk';

const sdk = new MockSdk();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'aws-sdk-client-mock-jest';

import { ListStackResourcesCommand } from '@aws-sdk/client-cloudformation';
import { LazyListStackResources } from '../../lib/api/cloudformation';
import { MockSdk, mockCloudFormationClient } from '../_helpers/mock-sdk';
import { LazyListStackResources } from '../../../lib/api/cloudformation';
import { MockSdk, mockCloudFormationClient } from '../../_helpers/mock-sdk';

describe('Lazy ListStackResources', () => {
test('correctly caches calls to the CloudFormation API', async () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ListExportsCommand } from '@aws-sdk/client-cloudformation';
import { LazyLookupExport } from '../../lib/api/cloudformation';
import { MockSdk, mockCloudFormationClient, restoreSdkMocksToDefault } from '../_helpers/mock-sdk';
import { LazyLookupExport } from '../../../lib/api/cloudformation';
import { MockSdk, mockCloudFormationClient, restoreSdkMocksToDefault } from '../../_helpers/mock-sdk';

describe('LazyLookupExport', () => {
const mockSdk = new MockSdk();
Expand Down
2 changes: 1 addition & 1 deletion packages/aws-cdk/test/api/cxapp/exec.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { Configuration } from '../../../lib/cli/user-configuration';
import { testAssembly } from '../../_helpers/assembly';
import { mockSpawn } from '../../util/mock-child_process';
import { MockSdkProvider } from '../../_helpers/mock-sdk';
import { RWLock } from '../../../lib/api/util/rwlock';
import { RWLock } from '../../../lib/api/rwlock';
import { rewriteManifestMinimumCliVersion, rewriteManifestVersion } from './assembly-versions';
import { TestIoHost } from '../../_helpers/io-host';
import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ import {
StackStatus,
} from '@aws-sdk/client-cloudformation';
import { SdkProvider } from '../../../lib/api';
import { findCloudWatchLogGroups } from '../../../lib/api/logs/find-cloudwatch-logs';
import { CliIoHost, IoMessaging } from '../../../lib/cli/io-host';
import { findCloudWatchLogGroups } from '../../../lib/api/logs-monitor/find-cloudwatch-logs';
import { testStack, TestStackArtifact } from '../../_helpers/assembly';
import {
mockCloudFormationClient,
Expand All @@ -16,10 +15,13 @@ import {
restoreSdkMocksToDefault,
setDefaultSTSMocks,
} from '../../_helpers/mock-sdk';
import { TestIoHost } from '../../_helpers/io-host';

let sdk: MockSdk;
let logsMockSdkProvider: SdkProvider;
const mockMsg: IoMessaging = { ioHost: CliIoHost.instance(), action: 'deploy' };

const ioHost = new TestIoHost();
const ioHelper = ioHost.asHelper('deploy');

beforeEach(() => {
logsMockSdkProvider = new MockSdkProvider();
Expand Down Expand Up @@ -59,7 +61,7 @@ test('add log groups from lambda function', async () => {
pushStackResourceSummaries(stackSummaryOf('Func', 'AWS::Lambda::Function', 'my-function'));

// WHEN
const result = await findCloudWatchLogGroups(logsMockSdkProvider, mockMsg, cdkStackArtifact);
const result = await findCloudWatchLogGroups(logsMockSdkProvider, ioHelper, cdkStackArtifact);

// THEN
expect(result.logGroupNames).toEqual(['/aws/lambda/my-function']);
Expand All @@ -85,7 +87,7 @@ test('add log groups from lambda function when using custom LoggingConfig', asyn
pushStackResourceSummaries(stackSummaryOf('Func', 'AWS::Lambda::Function', 'my-function'));

// WHEN
const result = await findCloudWatchLogGroups(logsMockSdkProvider, mockMsg, cdkStackArtifact);
const result = await findCloudWatchLogGroups(logsMockSdkProvider, ioHelper, cdkStackArtifact);

// THEN
expect(result.logGroupNames).toEqual(['/this/custom/my-custom-log-group']);
Expand Down Expand Up @@ -119,7 +121,7 @@ test('add log groups from lambda function when using custom LoggingConfig using
pushStackResourceSummaries(stackSummaryOf('Func', 'AWS::Lambda::Function', 'my-function'));

// WHEN
const result = await findCloudWatchLogGroups(logsMockSdkProvider, mockMsg, cdkStackArtifact);
const result = await findCloudWatchLogGroups(logsMockSdkProvider, ioHelper, cdkStackArtifact);

// THEN
expect(result.logGroupNames).toEqual(['/this/custom/my-custom-log-group']);
Expand All @@ -139,7 +141,7 @@ test('add log groups from lambda function without physical name', async () => {
pushStackResourceSummaries(stackSummaryOf('Func', 'AWS::Lambda::Function', 'my-function'));

// WHEN
const result = await findCloudWatchLogGroups(logsMockSdkProvider, mockMsg, cdkStackArtifact);
const result = await findCloudWatchLogGroups(logsMockSdkProvider, ioHelper, cdkStackArtifact);

// THEN
expect(result.logGroupNames).toEqual(['/aws/lambda/my-function']);
Expand All @@ -152,7 +154,7 @@ test('empty template', async () => {
});

// WHEN
const result = await findCloudWatchLogGroups(logsMockSdkProvider, mockMsg, cdkStackArtifact);
const result = await findCloudWatchLogGroups(logsMockSdkProvider, ioHelper, cdkStackArtifact);

// THEN
expect(result.logGroupNames).toEqual([]);
Expand Down Expand Up @@ -191,7 +193,7 @@ test('add log groups from ECS Task Definitions', async () => {
pushStackResourceSummaries(stackSummaryOf('LogGroup', 'AWS::Logs::LogGroup', 'log_group'));

// WHEN
const result = await findCloudWatchLogGroups(logsMockSdkProvider, mockMsg, cdkStackArtifact);
const result = await findCloudWatchLogGroups(logsMockSdkProvider, ioHelper, cdkStackArtifact);

// THEN
expect(result.logGroupNames).toEqual(['log_group']);
Expand Down Expand Up @@ -230,7 +232,7 @@ test('add log groups from State Machines', async () => {
pushStackResourceSummaries(stackSummaryOf('LogGroup', 'AWS::Logs::LogGroup', 'log_group'));

// WHEN
const result = await findCloudWatchLogGroups(logsMockSdkProvider, mockMsg, cdkStackArtifact);
const result = await findCloudWatchLogGroups(logsMockSdkProvider, ioHelper, cdkStackArtifact);

// THEN
expect(result.logGroupNames).toEqual(['log_group']);
Expand Down Expand Up @@ -288,7 +290,7 @@ test('excluded log groups are not added', async () => {
pushStackResourceSummaries(stackSummaryOf('Def', 'AWS::CodeBuild:Project', 'project'));

// WHEN
const result = await findCloudWatchLogGroups(logsMockSdkProvider, mockMsg, cdkStackArtifact);
const result = await findCloudWatchLogGroups(logsMockSdkProvider, ioHelper, cdkStackArtifact);

// THEN
expect(result.logGroupNames).toEqual([]);
Expand All @@ -311,7 +313,7 @@ test('unassociated log groups are added', async () => {
pushStackResourceSummaries(stackSummaryOf('LogGroup', 'AWS::Logs::LogGroup', 'log_group'));

// WHEN
const result = await findCloudWatchLogGroups(logsMockSdkProvider, mockMsg, cdkStackArtifact);
const result = await findCloudWatchLogGroups(logsMockSdkProvider, ioHelper, cdkStackArtifact);

// THEN
expect(result.logGroupNames).toEqual(['log_group']);
Expand All @@ -331,7 +333,7 @@ test('log groups without physical names are added', async () => {
pushStackResourceSummaries(stackSummaryOf('LogGroup', 'AWS::Logs::LogGroup', 'log_group'));

// WHEN
const result = await findCloudWatchLogGroups(logsMockSdkProvider, mockMsg, cdkStackArtifact);
const result = await findCloudWatchLogGroups(logsMockSdkProvider, ioHelper, cdkStackArtifact);

// THEN
expect(result.logGroupNames).toEqual(['log_group']);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { FilterLogEventsCommand, type FilteredLogEvent } from '@aws-sdk/client-cloudwatch-logs';
import { CloudWatchLogEventMonitor } from '../../../lib/api/logs/logs-monitor';
import { CloudWatchLogEventMonitor } from '../../../lib/api/logs-monitor';
import { sleep } from '../../_helpers/sleep';
import { MockSdk, mockCloudWatchClient } from '../../_helpers/mock-sdk';
import { TestIoHost } from '../../_helpers/io-host';
Expand Down
2 changes: 1 addition & 1 deletion packages/aws-cdk/test/api/rwlock.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* eslint-disable import/order */
import * as os from 'os';
import * as path from 'path';
import { RWLock } from '../../lib/api/util/rwlock';
import { RWLock } from '../../lib/api/rwlock';

function testDir() {
return path.join(os.tmpdir(), 'rwlock-tests');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { result, success, highlight, error, warning, info, debug, trace } from '../../../lib/logging';
import { CliIoHost } from '../../../lib/cli/io-host';
import { result, success, highlight, error, warning, info, debug, trace } from '../lib/logging';
import { CliIoHost } from '../lib/cli/io-host';

describe('logging', () => {
const ioHost = CliIoHost.instance({}, true);
Expand Down