sst 2.1.35 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap.js +1 -1
- package/cdk/cloudformation-deployments-wrapper.d.ts +1 -1
- package/cdk/cloudformation-deployments-wrapper.js +6 -6
- package/cdk/cloudformation-deployments.d.ts +8 -8
- package/cdk/cloudformation-deployments.js +7 -7
- package/cdk/deploy-stack.d.ts +6 -6
- package/cdk/deploy-stack.js +9 -9
- package/cli/colors.d.ts +9 -20
- package/cli/commands/deploy.js +8 -6
- package/cli/commands/remove.js +1 -1
- package/cli/ui/deploy.d.ts +1 -0
- package/cli/ui/deploy.js +1 -1
- package/constructs/App.d.ts +4 -27
- package/constructs/App.js +5 -31
- package/constructs/Cron.d.ts +1 -1
- package/constructs/EventBus.d.ts +68 -35
- package/constructs/EventBus.js +13 -4
- package/constructs/Function.js +36 -33
- package/constructs/Job.js +6 -5
- package/constructs/RDS.js +4 -8
- package/constructs/Script.js +1 -1
- package/constructs/SsrSite.js +3 -1
- package/constructs/Stack.d.ts +8 -0
- package/constructs/Stack.js +17 -8
- package/constructs/StaticSite.js +3 -1
- package/constructs/deprecated/NextjsSite.js +2 -1
- package/credentials.d.ts +1 -1
- package/credentials.js +1 -1
- package/node/future/auth/session.js +1 -8
- package/package.json +8 -12
- package/sst.mjs +35 -33
- package/stacks/synth.d.ts +1 -1
- package/stacks/synth.js +3 -3
- package/support/bootstrap-metadata-function/index.mjs +1027 -274
- package/support/bridge/bridge.mjs +46 -35
- package/support/custom-resources/index.mjs +1663 -910
package/constructs/Function.js
CHANGED
|
@@ -100,16 +100,36 @@ export class Function extends CDKFunction {
|
|
|
100
100
|
const tracing = Tracing[(props.tracing || "active").toUpperCase()];
|
|
101
101
|
const logRetention = props.logRetention &&
|
|
102
102
|
RetentionDays[props.logRetention.toUpperCase()];
|
|
103
|
-
const isLiveDevEnabled = props.enableLiveDev === false ? false : true;
|
|
103
|
+
const isLiveDevEnabled = app.mode === "dev" && (props.enableLiveDev === false ? false : true);
|
|
104
104
|
Function.validateHandlerSet(id, props);
|
|
105
105
|
Function.validateVpcSettings(id, props);
|
|
106
|
+
// Handle inactive stacks
|
|
107
|
+
if (!stack.isActive) {
|
|
108
|
+
// Note: need to override runtime as CDK does not support inline code
|
|
109
|
+
// for some runtimes.
|
|
110
|
+
super(scope, id, {
|
|
111
|
+
...props,
|
|
112
|
+
architecture,
|
|
113
|
+
code: Code.fromInline("export function placeholder() {}"),
|
|
114
|
+
handler: "index.placeholder",
|
|
115
|
+
functionName,
|
|
116
|
+
runtime: CDKRuntime.NODEJS_16_X,
|
|
117
|
+
memorySize,
|
|
118
|
+
ephemeralStorageSize: diskSize,
|
|
119
|
+
timeout,
|
|
120
|
+
tracing,
|
|
121
|
+
environment: props.environment,
|
|
122
|
+
layers: Function.buildLayers(scope, id, props),
|
|
123
|
+
logRetention,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
106
126
|
// Handle local development (ie. sst start)
|
|
107
127
|
// - set runtime to nodejs12.x for non-Node runtimes (b/c the stub is in Node)
|
|
108
128
|
// - set retry to 0. When the debugger is disconnected, the Cron construct
|
|
109
129
|
// will still try to periodically invoke the Lambda, and the requests would
|
|
110
130
|
// fail and retry. So when launching `sst start`, a couple of retry requests
|
|
111
131
|
// from recent failed request will be received. And this behavior is confusing.
|
|
112
|
-
if (isLiveDevEnabled
|
|
132
|
+
else if (isLiveDevEnabled) {
|
|
113
133
|
// If debugIncreaseTimeout is enabled:
|
|
114
134
|
// set timeout to 900s. This will give people more time to debug the function
|
|
115
135
|
// without timing out the request. Note API Gateway requests have a maximum
|
|
@@ -147,26 +167,6 @@ export class Function extends CDKFunction {
|
|
|
147
167
|
}),
|
|
148
168
|
]);
|
|
149
169
|
}
|
|
150
|
-
// Handle remove (ie. sst remove)
|
|
151
|
-
else if (app.skipBuild) {
|
|
152
|
-
// Note: need to override runtime as CDK does not support inline code
|
|
153
|
-
// for some runtimes.
|
|
154
|
-
super(scope, id, {
|
|
155
|
-
...props,
|
|
156
|
-
architecture,
|
|
157
|
-
code: Code.fromInline("export function placeholder() {}"),
|
|
158
|
-
handler: "index.placeholder",
|
|
159
|
-
functionName,
|
|
160
|
-
runtime: CDKRuntime.NODEJS_16_X,
|
|
161
|
-
memorySize,
|
|
162
|
-
ephemeralStorageSize: diskSize,
|
|
163
|
-
timeout,
|
|
164
|
-
tracing,
|
|
165
|
-
environment: props.environment,
|
|
166
|
-
layers: Function.buildLayers(scope, id, props),
|
|
167
|
-
logRetention,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
170
|
// Handle build
|
|
171
171
|
else {
|
|
172
172
|
super(scope, id, {
|
|
@@ -193,12 +193,22 @@ export class Function extends CDKFunction {
|
|
|
193
193
|
...result.errors,
|
|
194
194
|
].join("\n"));
|
|
195
195
|
}
|
|
196
|
+
// Update code
|
|
197
|
+
const cfnFunction = this.node.defaultChild;
|
|
196
198
|
const code = AssetCode.fromAsset(result.out);
|
|
197
|
-
// Update function's code
|
|
198
199
|
const codeConfig = code.bind(this);
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
200
|
+
cfnFunction.code = {
|
|
201
|
+
s3Bucket: codeConfig.s3Location?.bucketName,
|
|
202
|
+
s3Key: codeConfig.s3Location?.objectKey,
|
|
203
|
+
s3ObjectVersion: codeConfig.s3Location?.objectVersion,
|
|
204
|
+
};
|
|
205
|
+
cfnFunction.handler = result.handler;
|
|
206
|
+
code.bindToResource(cfnFunction);
|
|
207
|
+
// Update runtime
|
|
208
|
+
// @ts-ignore - override "runtime" private property
|
|
209
|
+
this.runtime =
|
|
210
|
+
supportedRuntimes[props.runtime];
|
|
211
|
+
cfnFunction.runtime = this.runtime.toString();
|
|
202
212
|
/*
|
|
203
213
|
if (isJavaRuntime) {
|
|
204
214
|
const providedRuntime = (bundle as FunctionBundleJavaProps)
|
|
@@ -208,13 +218,6 @@ export class Function extends CDKFunction {
|
|
|
208
218
|
}
|
|
209
219
|
}
|
|
210
220
|
*/
|
|
211
|
-
cfnFunction.code = {
|
|
212
|
-
s3Bucket: codeConfig.s3Location?.bucketName,
|
|
213
|
-
s3Key: codeConfig.s3Location?.objectKey,
|
|
214
|
-
s3ObjectVersion: codeConfig.s3Location?.objectVersion,
|
|
215
|
-
};
|
|
216
|
-
cfnFunction.handler = result.handler;
|
|
217
|
-
code.bindToResource(cfnFunction);
|
|
218
221
|
});
|
|
219
222
|
}
|
|
220
223
|
this.id = id;
|
package/constructs/Job.js
CHANGED
|
@@ -41,6 +41,7 @@ export class Job extends Construct {
|
|
|
41
41
|
constructor(scope, id, props) {
|
|
42
42
|
super(scope, props.cdk?.id || id);
|
|
43
43
|
const app = this.node.root;
|
|
44
|
+
const stack = Stack.of(scope);
|
|
44
45
|
this.id = id;
|
|
45
46
|
this.props = props;
|
|
46
47
|
useFunctions().add(this.node.addr, {
|
|
@@ -52,10 +53,13 @@ export class Job extends Construct {
|
|
|
52
53
|
.replace(/\$/g, "-")
|
|
53
54
|
.replace(/\//g, "-")
|
|
54
55
|
.replace(/\./g, "-");
|
|
55
|
-
const isLiveDevEnabled = app.
|
|
56
|
+
const isLiveDevEnabled = app.mode === "dev" && (this.props.enableLiveDev === false ? false : true);
|
|
56
57
|
this.job = this.createCodeBuildProject();
|
|
57
58
|
this.createLogRetention();
|
|
58
|
-
if (
|
|
59
|
+
if (!stack.isActive) {
|
|
60
|
+
this._jobInvoker = this.createCodeBuildInvoker();
|
|
61
|
+
}
|
|
62
|
+
else if (isLiveDevEnabled) {
|
|
59
63
|
this._jobInvoker = this.createLocalInvoker();
|
|
60
64
|
}
|
|
61
65
|
else {
|
|
@@ -175,9 +179,6 @@ export class Job extends Construct {
|
|
|
175
179
|
}
|
|
176
180
|
buildCodeBuildProjectCode() {
|
|
177
181
|
const app = this.node.root;
|
|
178
|
-
// Handle remove (ie. sst remove)
|
|
179
|
-
if (app.mode === "remove")
|
|
180
|
-
return;
|
|
181
182
|
useDeferredTasks().add(async () => {
|
|
182
183
|
// Build function
|
|
183
184
|
const bundle = await useRuntimeHandlers().build(this.node.addr, "deploy");
|
package/constructs/RDS.js
CHANGED
|
@@ -274,7 +274,7 @@ export class RDS extends Construct {
|
|
|
274
274
|
RDS_ENGINE_MODE: engine.includes("postgres") ? "postgres" : "mysql",
|
|
275
275
|
// for live development, perserve the migrations path so the migrator
|
|
276
276
|
// can locate the migration files
|
|
277
|
-
RDS_MIGRATIONS_PATH: app.
|
|
277
|
+
RDS_MIGRATIONS_PATH: app.mode === "dev" ? migrations : migrationsDestination,
|
|
278
278
|
},
|
|
279
279
|
// Note that we need to generate a relative path of the migrations off the
|
|
280
280
|
// srcPath because sst.Function internally builds the copy "from" path by
|
|
@@ -313,17 +313,13 @@ export class RDS extends Construct {
|
|
|
313
313
|
// infrastructure. Otherwise, there will always be a change when
|
|
314
314
|
// rebuilding infrastructure b/c the "BuildAt" property changes on
|
|
315
315
|
// each build.
|
|
316
|
-
const hash = app.
|
|
316
|
+
const hash = app.mode === "dev" ? 0 : this.generateMigrationsHash(migrations);
|
|
317
317
|
new cdk.CustomResource(this, "MigrationResource", {
|
|
318
318
|
serviceToken: handler.functionArn,
|
|
319
319
|
resourceType: "Custom::SSTScript",
|
|
320
320
|
properties: {
|
|
321
|
-
UserCreateFunction: app.
|
|
322
|
-
|
|
323
|
-
: this.migratorFunction?.functionName,
|
|
324
|
-
UserUpdateFunction: app.local
|
|
325
|
-
? undefined
|
|
326
|
-
: this.migratorFunction?.functionName,
|
|
321
|
+
UserCreateFunction: app.mode === "dev" ? undefined : this.migratorFunction?.functionName,
|
|
322
|
+
UserUpdateFunction: app.mode === "dev" ? undefined : this.migratorFunction?.functionName,
|
|
327
323
|
UserParams: JSON.stringify({}),
|
|
328
324
|
MigrationsHash: hash,
|
|
329
325
|
},
|
package/constructs/Script.js
CHANGED
|
@@ -133,7 +133,7 @@ export class Script extends Construct {
|
|
|
133
133
|
// when rebuilding infrastructure. Otherwise, there will always be
|
|
134
134
|
// a change when rebuilding infrastructure b/c the "BuildAt" property
|
|
135
135
|
// changes on each build.
|
|
136
|
-
const builtAt = app.
|
|
136
|
+
const builtAt = app.mode === "dev" ? app.debugStartedAt : Date.now();
|
|
137
137
|
new cdk.CustomResource(this, "ScriptResource", {
|
|
138
138
|
serviceToken: crFunction.functionArn,
|
|
139
139
|
resourceType: "Custom::SSTScript",
|
package/constructs/SsrSite.js
CHANGED
|
@@ -52,6 +52,7 @@ export class SsrSite extends Construct {
|
|
|
52
52
|
constructor(scope, id, props) {
|
|
53
53
|
super(scope, props?.cdk?.id || id);
|
|
54
54
|
const app = scope.node.root;
|
|
55
|
+
const stack = Stack.of(this);
|
|
55
56
|
this.id = id;
|
|
56
57
|
this.props = {
|
|
57
58
|
path: ".",
|
|
@@ -61,7 +62,8 @@ export class SsrSite extends Construct {
|
|
|
61
62
|
memorySize: "1024 MB",
|
|
62
63
|
...props,
|
|
63
64
|
};
|
|
64
|
-
this.doNotDeploy =
|
|
65
|
+
this.doNotDeploy =
|
|
66
|
+
!stack.isActive || (app.mode === "dev" && !this.props.dev?.deploy);
|
|
65
67
|
this.validateSiteExists();
|
|
66
68
|
this.registerSiteEnvironment();
|
|
67
69
|
if (this.doNotDeploy) {
|
package/constructs/Stack.d.ts
CHANGED
|
@@ -28,9 +28,17 @@ export declare class Stack extends cdk.Stack {
|
|
|
28
28
|
*/
|
|
29
29
|
readonly defaultFunctionProps: FunctionProps[];
|
|
30
30
|
/**
|
|
31
|
+
* Create a custom resource handler per stack. This handler will
|
|
32
|
+
* be used by all the custom resources in the stack.
|
|
31
33
|
* @internal
|
|
32
34
|
*/
|
|
33
35
|
readonly customResourceHandler: lambda.Function;
|
|
36
|
+
/**
|
|
37
|
+
* Skip building Function/Site code when stack is not active
|
|
38
|
+
* ie. `sst remove` and `sst deploy PATTERN` (pattern not matched)
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
readonly isActive: boolean;
|
|
34
42
|
constructor(scope: Construct, id: string, props?: StackProps);
|
|
35
43
|
/**
|
|
36
44
|
* The default function props to be applied to all the Lambda functions in the stack.
|
package/constructs/Stack.js
CHANGED
|
@@ -30,27 +30,36 @@ export class Stack extends cdk.Stack {
|
|
|
30
30
|
*/
|
|
31
31
|
defaultFunctionProps;
|
|
32
32
|
/**
|
|
33
|
+
* Create a custom resource handler per stack. This handler will
|
|
34
|
+
* be used by all the custom resources in the stack.
|
|
33
35
|
* @internal
|
|
34
36
|
*/
|
|
35
37
|
customResourceHandler;
|
|
38
|
+
/**
|
|
39
|
+
* Skip building Function/Site code when stack is not active
|
|
40
|
+
* ie. `sst remove` and `sst deploy PATTERN` (pattern not matched)
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
isActive;
|
|
36
44
|
constructor(scope, id, props) {
|
|
37
|
-
const
|
|
38
|
-
const stackId =
|
|
45
|
+
const app = scope.node.root;
|
|
46
|
+
const stackId = app.logicalPrefixedName(id);
|
|
39
47
|
Stack.checkForPropsIsConstruct(id, props);
|
|
40
48
|
Stack.checkForEnvInProps(id, props);
|
|
41
49
|
super(scope, stackId, {
|
|
42
50
|
...props,
|
|
43
51
|
env: {
|
|
44
|
-
account:
|
|
45
|
-
region:
|
|
52
|
+
account: app.account,
|
|
53
|
+
region: app.region,
|
|
46
54
|
},
|
|
47
55
|
synthesizer: props?.synthesizer || Stack.buildSynthesizer(),
|
|
48
56
|
});
|
|
49
|
-
this.stage =
|
|
50
|
-
this.defaultFunctionProps =
|
|
51
|
-
// Create a custom resource handler per stack. This handler will
|
|
52
|
-
// be used by all the custom resources in the stack.
|
|
57
|
+
this.stage = app.stage;
|
|
58
|
+
this.defaultFunctionProps = app.defaultFunctionProps.map((dfp) => typeof dfp === "function" ? dfp(this) : dfp);
|
|
53
59
|
this.customResourceHandler = this.createCustomResourceHandler();
|
|
60
|
+
this.isActive =
|
|
61
|
+
app.mode !== "remove" &&
|
|
62
|
+
(!app.isActiveStack || app.isActiveStack?.(this.stackName) === true);
|
|
54
63
|
}
|
|
55
64
|
/**
|
|
56
65
|
* The default function props to be applied to all the Lambda functions in the stack.
|
package/constructs/StaticSite.js
CHANGED
|
@@ -53,13 +53,15 @@ export class StaticSite extends Construct {
|
|
|
53
53
|
constructor(scope, id, props) {
|
|
54
54
|
super(scope, props?.cdk?.id || id);
|
|
55
55
|
const app = scope.node.root;
|
|
56
|
+
const stack = Stack.of(this);
|
|
56
57
|
this.id = id;
|
|
57
58
|
this.props = {
|
|
58
59
|
path: ".",
|
|
59
60
|
waitForInvalidation: false,
|
|
60
61
|
...props,
|
|
61
62
|
};
|
|
62
|
-
this.doNotDeploy =
|
|
63
|
+
this.doNotDeploy =
|
|
64
|
+
!stack.isActive || (app.mode === "dev" && !this.props.dev?.deploy);
|
|
63
65
|
this.validateCustomDomainSettings();
|
|
64
66
|
this.registerSiteEnvironment();
|
|
65
67
|
this.generateViteTypes();
|
|
@@ -117,9 +117,10 @@ export class NextjsSite extends Construct {
|
|
|
117
117
|
super(scope, props.cdk?.id || id);
|
|
118
118
|
this.id = id;
|
|
119
119
|
const app = scope.node.root;
|
|
120
|
+
const stack = Stack.of(this);
|
|
120
121
|
// Local development or skip build => stub asset
|
|
121
122
|
this.isPlaceholder =
|
|
122
|
-
|
|
123
|
+
!stack.isActive && app.mode === "dev" && !props.disablePlaceholder;
|
|
123
124
|
this.sstBuildDir = useProject().paths.artifacts;
|
|
124
125
|
const fileSizeLimit = app.isRunningSSTTest()
|
|
125
126
|
? // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
package/credentials.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Client } from "@aws-sdk/smithy-client";
|
|
|
3
3
|
import { RegionInputConfig } from "@aws-sdk/config-resolver";
|
|
4
4
|
import { RetryInputConfig } from "@aws-sdk/middleware-retry";
|
|
5
5
|
import { AwsAuthInputConfig } from "@aws-sdk/middleware-signing";
|
|
6
|
-
import { SdkProvider } from "aws-cdk/lib/api/aws-auth/sdk-provider.js";
|
|
6
|
+
import { SdkProvider } from "sst-aws-cdk/lib/api/aws-auth/sdk-provider.js";
|
|
7
7
|
type Config = RegionInputConfig & RetryInputConfig & AwsAuthInputConfig & HostHeaderConditionConfig;
|
|
8
8
|
export declare const useAWSCredentialsProvider: () => import("@aws-sdk/types").AwsCredentialIdentityProvider;
|
|
9
9
|
export declare const useAWSCredentials: () => Promise<import("@aws-sdk/types").AwsCredentialIdentity>;
|
package/credentials.js
CHANGED
|
@@ -3,7 +3,7 @@ import { Context } from "./context/context.js";
|
|
|
3
3
|
import { fromNodeProviderChain } from "@aws-sdk/credential-providers";
|
|
4
4
|
import { GetCallerIdentityCommand, STSClient } from "@aws-sdk/client-sts";
|
|
5
5
|
import { Logger } from "./logger.js";
|
|
6
|
-
import { SdkProvider } from "aws-cdk/lib/api/aws-auth/sdk-provider.js";
|
|
6
|
+
import { SdkProvider } from "sst-aws-cdk/lib/api/aws-auth/sdk-provider.js";
|
|
7
7
|
import { StandardRetryStrategy } from "@aws-sdk/middleware-retry";
|
|
8
8
|
export const useAWSCredentialsProvider = Context.memo(() => {
|
|
9
9
|
const project = useProject();
|
|
@@ -12,14 +12,7 @@ const SessionMemo = /* @__PURE__ */ Context.memo(() => {
|
|
|
12
12
|
if (cookie)
|
|
13
13
|
token = cookie;
|
|
14
14
|
if (token) {
|
|
15
|
-
|
|
16
|
-
const jwt = createVerifier({
|
|
17
|
-
algorithms: ["RS512"],
|
|
18
|
-
key: getPublicKey(),
|
|
19
|
-
})(token);
|
|
20
|
-
return jwt;
|
|
21
|
-
}
|
|
22
|
-
catch { }
|
|
15
|
+
return Session.verify(token);
|
|
23
16
|
}
|
|
24
17
|
return {
|
|
25
18
|
type: "public",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sst",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"bin": {
|
|
5
5
|
"sst": "cli/sst.js"
|
|
6
6
|
},
|
|
@@ -30,11 +30,7 @@
|
|
|
30
30
|
"@aws-cdk/cloud-assembly-schema": "2.62.2",
|
|
31
31
|
"@aws-cdk/cloudformation-diff": "2.62.2",
|
|
32
32
|
"@aws-cdk/cx-api": "2.62.2",
|
|
33
|
-
"@aws-cdk/region-info": "2.62.2",
|
|
34
|
-
"@aws-sdk/client-api-gateway": "^3.208.0",
|
|
35
33
|
"@aws-sdk/client-cloudformation": "^3.279.0",
|
|
36
|
-
"@aws-sdk/client-cloudfront": "^3.279.0",
|
|
37
|
-
"@aws-sdk/client-iam": "^3.279.0",
|
|
38
34
|
"@aws-sdk/client-iot": "^3.279.0",
|
|
39
35
|
"@aws-sdk/client-iot-data-plane": "^3.279.0",
|
|
40
36
|
"@aws-sdk/client-lambda": "^3.279.0",
|
|
@@ -51,16 +47,12 @@
|
|
|
51
47
|
"@babel/core": "^7.0.0-0",
|
|
52
48
|
"@babel/generator": "^7.20.5",
|
|
53
49
|
"@trpc/server": "9.16.0",
|
|
54
|
-
"adm-zip": "^0.5.10",
|
|
55
|
-
"archiver": "^5.3.1",
|
|
56
|
-
"aws-cdk": "2.62.2",
|
|
57
50
|
"aws-cdk-lib": "2.62.2",
|
|
58
51
|
"aws-iot-device-sdk": "^2.2.12",
|
|
59
|
-
"aws-iot-device-sdk-v2": "^1.9.5",
|
|
60
52
|
"aws-sdk": "^2.1326.0",
|
|
61
53
|
"builtin-modules": "3.2.0",
|
|
62
54
|
"cdk-assets": "2.62.2",
|
|
63
|
-
"chalk": "^
|
|
55
|
+
"chalk": "^5.2.0",
|
|
64
56
|
"chokidar": "^3.5.3",
|
|
65
57
|
"ci-info": "^3.7.0",
|
|
66
58
|
"colorette": "^2.0.19",
|
|
@@ -85,17 +77,20 @@
|
|
|
85
77
|
"minimatch": "^6.1.6",
|
|
86
78
|
"openid-client": "^5.1.8",
|
|
87
79
|
"ora": "^6.1.2",
|
|
88
|
-
"promptly": "^3.2.0",
|
|
89
80
|
"react": "17.0.2",
|
|
90
81
|
"remeda": "^1.3.0",
|
|
82
|
+
"sst-aws-cdk": "2.62.2-2",
|
|
91
83
|
"undici": "^5.12.0",
|
|
92
84
|
"uuid": "^9.0.0",
|
|
93
85
|
"ws": "^8.11.0",
|
|
94
|
-
"yaml": "1.10.2",
|
|
95
86
|
"yargs": "^17.6.2",
|
|
96
87
|
"zip-local": "^0.3.5"
|
|
97
88
|
},
|
|
98
89
|
"devDependencies": {
|
|
90
|
+
"adm-zip": "^0.5.10",
|
|
91
|
+
"@aws-sdk/client-iam": "^3.279.0",
|
|
92
|
+
"@aws-sdk/client-cloudfront": "^3.279.0",
|
|
93
|
+
"@aws-sdk/client-api-gateway": "^3.208.0",
|
|
99
94
|
"@aws-sdk/client-codebuild": "^3.279.0",
|
|
100
95
|
"@aws-sdk/types": "^3.272.0",
|
|
101
96
|
"@graphql-tools/merge": "^8.3.16",
|
|
@@ -114,6 +109,7 @@
|
|
|
114
109
|
"@types/uuid": "^8.3.4",
|
|
115
110
|
"@types/ws": "^8.5.3",
|
|
116
111
|
"@types/yargs": "^17.0.13",
|
|
112
|
+
"archiver": "^5.3.1",
|
|
117
113
|
"tsx": "^3.12.1",
|
|
118
114
|
"typescript": "^4.9.5",
|
|
119
115
|
"vitest": "^0.28.3"
|
package/sst.mjs
CHANGED
|
@@ -1595,7 +1595,7 @@ __export(credentials_exports, {
|
|
|
1595
1595
|
});
|
|
1596
1596
|
import { fromNodeProviderChain } from "@aws-sdk/credential-providers";
|
|
1597
1597
|
import { GetCallerIdentityCommand, STSClient } from "@aws-sdk/client-sts";
|
|
1598
|
-
import { SdkProvider } from "aws-cdk/lib/api/aws-auth/sdk-provider.js";
|
|
1598
|
+
import { SdkProvider } from "sst-aws-cdk/lib/api/aws-auth/sdk-provider.js";
|
|
1599
1599
|
import { StandardRetryStrategy } from "@aws-sdk/middleware-retry";
|
|
1600
1600
|
import stupid from "aws-sdk/lib/maintenance_mode_message.js";
|
|
1601
1601
|
import aws from "aws-sdk";
|
|
@@ -2917,14 +2917,14 @@ var init_util = __esm({
|
|
|
2917
2917
|
import * as cxapi from "@aws-cdk/cx-api";
|
|
2918
2918
|
import fs8 from "fs/promises";
|
|
2919
2919
|
import * as uuid from "uuid";
|
|
2920
|
-
import { addMetadataAssetsToManifest } from "aws-cdk/lib/assets.js";
|
|
2921
|
-
import { debug, error, print } from "aws-cdk/lib/logging.js";
|
|
2922
|
-
import { toYAML } from "aws-cdk/lib/serialize.js";
|
|
2923
|
-
import { AssetManifestBuilder } from "aws-cdk/lib/util/asset-manifest-builder.js";
|
|
2924
|
-
import { publishAssets } from "aws-cdk/lib/util/asset-publishing.js";
|
|
2925
|
-
import { contentHash } from "aws-cdk/lib/util/content-hash.js";
|
|
2926
|
-
import { CfnEvaluationException } from "aws-cdk/lib/api/evaluate-cloudformation-template.js";
|
|
2927
|
-
import { tryHotswapDeployment } from "aws-cdk/lib/api/hotswap-deployments.js";
|
|
2920
|
+
import { addMetadataAssetsToManifest } from "sst-aws-cdk/lib/assets.js";
|
|
2921
|
+
import { debug, error, print } from "sst-aws-cdk/lib/logging.js";
|
|
2922
|
+
import { toYAML } from "sst-aws-cdk/lib/serialize.js";
|
|
2923
|
+
import { AssetManifestBuilder } from "sst-aws-cdk/lib/util/asset-manifest-builder.js";
|
|
2924
|
+
import { publishAssets } from "sst-aws-cdk/lib/util/asset-publishing.js";
|
|
2925
|
+
import { contentHash } from "sst-aws-cdk/lib/util/content-hash.js";
|
|
2926
|
+
import { CfnEvaluationException } from "sst-aws-cdk/lib/api/evaluate-cloudformation-template.js";
|
|
2927
|
+
import { tryHotswapDeployment } from "sst-aws-cdk/lib/api/hotswap-deployments.js";
|
|
2928
2928
|
import {
|
|
2929
2929
|
changeSetHasNoChanges,
|
|
2930
2930
|
CloudFormationStack,
|
|
@@ -2932,7 +2932,7 @@ import {
|
|
|
2932
2932
|
waitForChangeSet,
|
|
2933
2933
|
waitForStackDeploy,
|
|
2934
2934
|
waitForStackDelete
|
|
2935
|
-
} from "aws-cdk/lib/api/util/cloudformation.js";
|
|
2935
|
+
} from "sst-aws-cdk/lib/api/util/cloudformation.js";
|
|
2936
2936
|
import { blue as blue2 } from "colorette";
|
|
2937
2937
|
async function deployStack(options) {
|
|
2938
2938
|
const stackArtifact = options.stack;
|
|
@@ -3441,21 +3441,21 @@ __export(cloudformation_deployments_exports, {
|
|
|
3441
3441
|
});
|
|
3442
3442
|
import * as cxapi2 from "@aws-cdk/cx-api";
|
|
3443
3443
|
import { AssetManifest } from "cdk-assets";
|
|
3444
|
-
import { debug as debug2, warning } from "aws-cdk/lib/logging.js";
|
|
3444
|
+
import { debug as debug2, warning } from "sst-aws-cdk/lib/logging.js";
|
|
3445
3445
|
import {
|
|
3446
3446
|
buildAssets,
|
|
3447
3447
|
publishAssets as publishAssets2
|
|
3448
|
-
} from "aws-cdk/lib/util/asset-publishing.js";
|
|
3449
|
-
import { Mode } from "aws-cdk/lib/api/aws-auth/credentials.js";
|
|
3448
|
+
} from "sst-aws-cdk/lib/util/asset-publishing.js";
|
|
3449
|
+
import { Mode } from "sst-aws-cdk/lib/api/aws-auth/credentials.js";
|
|
3450
3450
|
import {
|
|
3451
3451
|
loadCurrentTemplateWithNestedStacks,
|
|
3452
3452
|
loadCurrentTemplate
|
|
3453
|
-
} from "aws-cdk/lib/api/nested-stack-helpers.js";
|
|
3454
|
-
import { ToolkitInfo } from "aws-cdk/lib/api/toolkit-info.js";
|
|
3453
|
+
} from "sst-aws-cdk/lib/api/nested-stack-helpers.js";
|
|
3454
|
+
import { ToolkitInfo } from "sst-aws-cdk/lib/api/toolkit-info.js";
|
|
3455
3455
|
import {
|
|
3456
3456
|
CloudFormationStack as CloudFormationStack2
|
|
3457
|
-
} from "aws-cdk/lib/api/util/cloudformation.js";
|
|
3458
|
-
import { replaceEnvPlaceholders } from "aws-cdk/lib/api/util/placeholders.js";
|
|
3457
|
+
} from "sst-aws-cdk/lib/api/util/cloudformation.js";
|
|
3458
|
+
import { replaceEnvPlaceholders } from "sst-aws-cdk/lib/api/util/placeholders.js";
|
|
3459
3459
|
async function prepareSdkWithLookupRoleFor(sdkProvider, stack) {
|
|
3460
3460
|
const resolvedEnvironment = await sdkProvider.resolveEnvironment(
|
|
3461
3461
|
stack.environment
|
|
@@ -3764,16 +3764,16 @@ var cloudformation_deployments_wrapper_exports = {};
|
|
|
3764
3764
|
__export(cloudformation_deployments_wrapper_exports, {
|
|
3765
3765
|
publishDeployAssets: () => publishDeployAssets
|
|
3766
3766
|
});
|
|
3767
|
-
import { debug as debug3 } from "aws-cdk/lib/logging.js";
|
|
3767
|
+
import { debug as debug3 } from "sst-aws-cdk/lib/logging.js";
|
|
3768
3768
|
import {
|
|
3769
3769
|
CloudFormationStack as CloudFormationStack3,
|
|
3770
3770
|
TemplateParameters as TemplateParameters2,
|
|
3771
3771
|
waitForStackDelete as waitForStackDelete2
|
|
3772
|
-
} from "aws-cdk/lib/api/util/cloudformation.js";
|
|
3773
|
-
import { ToolkitInfo as ToolkitInfo2 } from "aws-cdk/lib/api/toolkit-info.js";
|
|
3774
|
-
import { addMetadataAssetsToManifest as addMetadataAssetsToManifest2 } from "aws-cdk/lib/assets.js";
|
|
3775
|
-
import { publishAssets as publishAssets3 } from "aws-cdk/lib/util/asset-publishing.js";
|
|
3776
|
-
import { AssetManifestBuilder as AssetManifestBuilder2 } from "aws-cdk/lib/util/asset-manifest-builder.js";
|
|
3772
|
+
} from "sst-aws-cdk/lib/api/util/cloudformation.js";
|
|
3773
|
+
import { ToolkitInfo as ToolkitInfo2 } from "sst-aws-cdk/lib/api/toolkit-info.js";
|
|
3774
|
+
import { addMetadataAssetsToManifest as addMetadataAssetsToManifest2 } from "sst-aws-cdk/lib/assets.js";
|
|
3775
|
+
import { publishAssets as publishAssets3 } from "sst-aws-cdk/lib/util/asset-publishing.js";
|
|
3776
|
+
import { AssetManifestBuilder as AssetManifestBuilder2 } from "sst-aws-cdk/lib/util/asset-manifest-builder.js";
|
|
3777
3777
|
async function publishDeployAssets(sdkProvider, options) {
|
|
3778
3778
|
const {
|
|
3779
3779
|
deployment,
|
|
@@ -5271,7 +5271,7 @@ var init_java = __esm({
|
|
|
5271
5271
|
});
|
|
5272
5272
|
|
|
5273
5273
|
// src/stacks/synth.ts
|
|
5274
|
-
import * as contextproviders from "aws-cdk/lib/context-providers/index.js";
|
|
5274
|
+
import * as contextproviders from "sst-aws-cdk/lib/context-providers/index.js";
|
|
5275
5275
|
import path15 from "path";
|
|
5276
5276
|
async function synth(opts) {
|
|
5277
5277
|
Logger.debug("Synthesizing stacks...");
|
|
@@ -5287,7 +5287,7 @@ async function synth(opts) {
|
|
|
5287
5287
|
useJavaHandler2();
|
|
5288
5288
|
useDotnetHandler();
|
|
5289
5289
|
useRustHandler2();
|
|
5290
|
-
const { Configuration } = await import("aws-cdk/lib/settings.js");
|
|
5290
|
+
const { Configuration } = await import("sst-aws-cdk/lib/settings.js");
|
|
5291
5291
|
const project = useProject();
|
|
5292
5292
|
const identity = await useSTSIdentity();
|
|
5293
5293
|
opts = {
|
|
@@ -5306,7 +5306,7 @@ async function synth(opts) {
|
|
|
5306
5306
|
region: project.config.region,
|
|
5307
5307
|
mode: opts.mode,
|
|
5308
5308
|
debugIncreaseTimeout: opts.increaseTimeout,
|
|
5309
|
-
|
|
5309
|
+
isActiveStack: opts.isActiveStack
|
|
5310
5310
|
},
|
|
5311
5311
|
{
|
|
5312
5312
|
outdir: opts.buildDir,
|
|
@@ -5611,7 +5611,7 @@ async function bootstrapSST() {
|
|
|
5611
5611
|
path16.resolve(__dirname2, "support/bootstrap-metadata-function")
|
|
5612
5612
|
),
|
|
5613
5613
|
handler: "index.handler",
|
|
5614
|
-
runtime: region?.startsWith("us-gov-") ? Runtime2.NODEJS_16_X : Runtime2.NODEJS_18_X,
|
|
5614
|
+
runtime: region?.startsWith("us-gov-") || region?.startsWith("cn-") ? Runtime2.NODEJS_16_X : Runtime2.NODEJS_18_X,
|
|
5615
5615
|
environment: {
|
|
5616
5616
|
BUCKET_NAME: bucket.bucketName
|
|
5617
5617
|
},
|
|
@@ -6117,7 +6117,7 @@ var init_deploy2 = __esm({
|
|
|
6117
6117
|
evt.LogicalResourceId
|
|
6118
6118
|
);
|
|
6119
6119
|
return /* @__PURE__ */ React.createElement(Box, { key: index }, /* @__PURE__ */ React.createElement(Text, null, /* @__PURE__ */ React.createElement(Spinner, null), " ", readable ? `${stackNameToId(evt.StackName)} ${readable} ${evt.ResourceType}` : `${stackNameToId(evt.StackName)} ${evt.ResourceType}`, " "), /* @__PURE__ */ React.createElement(Text, { color: color(evt.ResourceStatus || "") }, evt.ResourceStatus));
|
|
6120
|
-
}), Object.entries(resources).length === 0 && /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, null, /* @__PURE__ */ React.createElement(Spinner, null), " ", /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Deploying..."))));
|
|
6120
|
+
}), Object.entries(resources).length === 0 && /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, null, /* @__PURE__ */ React.createElement(Spinner, null), " ", /* @__PURE__ */ React.createElement(Text, { dimColor: true }, props.remove ? "Removing..." : "Deploying..."))));
|
|
6121
6121
|
};
|
|
6122
6122
|
}
|
|
6123
6123
|
});
|
|
@@ -7273,6 +7273,7 @@ var deploy2 = (program2) => program2.command(
|
|
|
7273
7273
|
Colors.line(` ${Colors.bold("Region:")} ${project.config.region}`);
|
|
7274
7274
|
Colors.line(` ${Colors.bold("Account:")} ${identity.Account}`);
|
|
7275
7275
|
Colors.gap();
|
|
7276
|
+
const isActiveStack = (stackId) => !args.filter || stackId.toLowerCase().replace(project.config.name.toLowerCase(), "").replace(project.config.stage.toLowerCase(), "").includes(args.filter.toLowerCase());
|
|
7276
7277
|
const assembly = await async function() {
|
|
7277
7278
|
if (args.from) {
|
|
7278
7279
|
const result2 = await loadAssembly2(args.from);
|
|
@@ -7283,14 +7284,13 @@ var deploy2 = (program2) => program2.command(
|
|
|
7283
7284
|
});
|
|
7284
7285
|
const result = await Stacks.synth({
|
|
7285
7286
|
fn: project.stacks,
|
|
7286
|
-
mode: "deploy"
|
|
7287
|
+
mode: "deploy",
|
|
7288
|
+
isActiveStack
|
|
7287
7289
|
});
|
|
7288
7290
|
spinner.succeed();
|
|
7289
7291
|
return result;
|
|
7290
7292
|
}();
|
|
7291
|
-
const target = assembly.stacks.filter(
|
|
7292
|
-
(s) => !args.filter || s.id.toLowerCase().replace(project.config.name.toLowerCase(), "").replace(project.config.stage.toLowerCase(), "").includes(args.filter.toLowerCase())
|
|
7293
|
-
);
|
|
7293
|
+
const target = assembly.stacks.filter((s) => isActiveStack(s.id));
|
|
7294
7294
|
if (!target.length) {
|
|
7295
7295
|
Colors.line(`No stacks found matching ${blue4(args.filter)}`);
|
|
7296
7296
|
process.exit(1);
|
|
@@ -7377,7 +7377,9 @@ var remove2 = (program2) => program2.command(
|
|
|
7377
7377
|
console.log(`No stacks found matching ${blue4(args.filter)}`);
|
|
7378
7378
|
process.exit(1);
|
|
7379
7379
|
}
|
|
7380
|
-
const component = render(
|
|
7380
|
+
const component = render(
|
|
7381
|
+
/* @__PURE__ */ React2.createElement(DeploymentUI2, { assembly, remove: true })
|
|
7382
|
+
);
|
|
7381
7383
|
const results = await Stacks.removeMany(target);
|
|
7382
7384
|
component.clear();
|
|
7383
7385
|
component.unmount();
|
package/stacks/synth.d.ts
CHANGED
|
@@ -2,10 +2,10 @@ import type { App } from "../constructs/App.js";
|
|
|
2
2
|
interface SynthOptions {
|
|
3
3
|
buildDir?: string;
|
|
4
4
|
outDir?: string;
|
|
5
|
-
skipBuild?: boolean;
|
|
6
5
|
increaseTimeout?: boolean;
|
|
7
6
|
mode: App["mode"];
|
|
8
7
|
fn: (app: App) => Promise<void> | void;
|
|
8
|
+
isActiveStack?: (stackName: string) => boolean;
|
|
9
9
|
}
|
|
10
10
|
export declare function synth(opts: SynthOptions): Promise<import("aws-cdk-lib/cx-api").CloudAssembly>;
|
|
11
11
|
export {};
|
package/stacks/synth.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Logger } from "../logger.js";
|
|
2
2
|
import { useProject } from "../project.js";
|
|
3
3
|
import { useAWSProvider, useSTSIdentity } from "../credentials.js";
|
|
4
|
-
import * as contextproviders from "aws-cdk/lib/context-providers/index.js";
|
|
4
|
+
import * as contextproviders from "sst-aws-cdk/lib/context-providers/index.js";
|
|
5
5
|
import path from "path";
|
|
6
6
|
import { VisibleError } from "../error.js";
|
|
7
7
|
import { useDotnetHandler } from "../runtime/handlers/dotnet.js";
|
|
@@ -19,7 +19,7 @@ export async function synth(opts) {
|
|
|
19
19
|
useJavaHandler();
|
|
20
20
|
useDotnetHandler();
|
|
21
21
|
useRustHandler();
|
|
22
|
-
const { Configuration } = await import("aws-cdk/lib/settings.js");
|
|
22
|
+
const { Configuration } = await import("sst-aws-cdk/lib/settings.js");
|
|
23
23
|
const project = useProject();
|
|
24
24
|
const identity = await useSTSIdentity();
|
|
25
25
|
opts = {
|
|
@@ -46,7 +46,7 @@ export async function synth(opts) {
|
|
|
46
46
|
region: project.config.region,
|
|
47
47
|
mode: opts.mode,
|
|
48
48
|
debugIncreaseTimeout: opts.increaseTimeout,
|
|
49
|
-
|
|
49
|
+
isActiveStack: opts.isActiveStack,
|
|
50
50
|
}, {
|
|
51
51
|
outdir: opts.buildDir,
|
|
52
52
|
context: cfg.context.all,
|