@openhi/constructs 0.0.115 → 0.0.117

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/lib/index.js CHANGED
@@ -816,6 +816,7 @@ __export(src_exports, {
816
816
  OpenHiRestApiService: () => OpenHiRestApiService,
817
817
  OpenHiService: () => OpenHiService,
818
818
  OpenHiStage: () => OpenHiStage,
819
+ OpenHiWebsiteService: () => OpenHiWebsiteService,
819
820
  OpsEventBus: () => OpsEventBus,
820
821
  OwningDeleteCascadeLambdas: () => OwningDeleteCascadeLambdas,
821
822
  OwningDeleteCascadeWorkflow: () => OwningDeleteCascadeWorkflow,
@@ -851,11 +852,13 @@ __export(src_exports, {
851
852
  SEED_SYSTEM_DATA_ACTOR_SYSTEM: () => SEED_SYSTEM_DATA_ACTOR_SYSTEM,
852
853
  SEED_SYSTEM_DATA_CONSUMER_NAME: () => SEED_SYSTEM_DATA_CONSUMER_NAME,
853
854
  SEED_SYSTEM_DATA_CONTROL_BUS_ENV_VAR: () => SEED_SYSTEM_DATA_CONTROL_BUS_ENV_VAR,
855
+ SSM_PARAM_NAME_FULL_DOMAIN: () => SSM_PARAM_NAME_FULL_DOMAIN,
854
856
  STATIC_HOSTING_SERVICE_TYPE: () => STATIC_HOSTING_SERVICE_TYPE,
855
857
  SeedDemoDataLambda: () => SeedDemoDataLambda,
856
858
  SeedDemoDataWorkflow: () => SeedDemoDataWorkflow,
857
859
  SeedSystemDataLambda: () => SeedSystemDataLambda,
858
860
  SeedSystemDataWorkflow: () => SeedSystemDataWorkflow,
861
+ StaticContent: () => StaticContent,
859
862
  StaticHosting: () => StaticHosting,
860
863
  USER_ONBOARDING_EVENT_SOURCE: () => USER_ONBOARDING_EVENT_SOURCE,
861
864
  UserOnboardingWorkflow: () => UserOnboardingWorkflow,
@@ -2019,7 +2022,9 @@ var WorkflowDedupConsumerNameInvalidError = class extends Error {
2019
2022
  };
2020
2023
 
2021
2024
  // src/components/event-bridge/data-event-bus.ts
2025
+ var import_aws_cdk_lib8 = require("aws-cdk-lib");
2022
2026
  var import_aws_events = require("aws-cdk-lib/aws-events");
2027
+ var DEFAULT_ARCHIVE_RETENTION = import_aws_cdk_lib8.Duration.days(7);
2023
2028
  var DataEventBus = class _DataEventBus extends import_aws_events.EventBus {
2024
2029
  /*****************************************************************************
2025
2030
  *
@@ -2032,11 +2037,19 @@ var DataEventBus = class _DataEventBus extends import_aws_events.EventBus {
2032
2037
  const stack = OpenHiService.of(scope);
2033
2038
  return `datav1${stack.branchHash}`;
2034
2039
  }
2035
- constructor(scope, props) {
2040
+ constructor(scope, props = void 0) {
2041
+ const { archiveRetention, ...busProps } = props ?? {};
2036
2042
  super(scope, "data-event-bus-v1", {
2037
- ...props,
2043
+ ...busProps,
2038
2044
  eventBusName: _DataEventBus.getEventBusName(scope)
2039
2045
  });
2046
+ this.replayArchive = new import_aws_events.Archive(this, "Archive", {
2047
+ sourceEventBus: this,
2048
+ archiveName: `${_DataEventBus.getEventBusName(scope)}-archive`,
2049
+ description: "Replay archive for the OpenHI data event bus (data-store change notifications).",
2050
+ eventPattern: { account: [import_aws_cdk_lib8.Stack.of(this).account] },
2051
+ retention: archiveRetention ?? DEFAULT_ARCHIVE_RETENTION
2052
+ });
2040
2053
  }
2041
2054
  };
2042
2055
 
@@ -2087,7 +2100,7 @@ var ControlEventBus = class _ControlEventBus extends import_aws_events3.EventBus
2087
2100
  // src/components/postgres/data-store-postgres-replica.ts
2088
2101
  var import_node_fs5 = __toESM(require("fs"));
2089
2102
  var import_node_path5 = __toESM(require("path"));
2090
- var import_aws_cdk_lib8 = require("aws-cdk-lib");
2103
+ var import_aws_cdk_lib9 = require("aws-cdk-lib");
2091
2104
  var ec2 = __toESM(require("aws-cdk-lib/aws-ec2"));
2092
2105
  var import_aws_lambda5 = require("aws-cdk-lib/aws-lambda");
2093
2106
  var import_aws_lambda_event_sources = require("aws-cdk-lib/aws-lambda-event-sources");
@@ -2153,7 +2166,7 @@ var DataStorePostgresReplica = class extends import_constructs6.Construct {
2153
2166
  super(scope, id);
2154
2167
  this.databaseName = props.databaseName ?? DEFAULT_DATABASE_NAME;
2155
2168
  this.schemaName = getPostgresReplicaSchemaName(props.branchHash);
2156
- const region = import_aws_cdk_lib8.Stack.of(this).region;
2169
+ const region = import_aws_cdk_lib9.Stack.of(this).region;
2157
2170
  this.vpc = props.vpc ?? new ec2.Vpc(this, "Vpc", {
2158
2171
  availabilityZones: [`${region}a`, `${region}b`],
2159
2172
  natGateways: 0,
@@ -2189,7 +2202,7 @@ var DataStorePostgresReplica = class extends import_constructs6.Construct {
2189
2202
  entry: resolveHandlerEntry5(__dirname),
2190
2203
  runtime: import_aws_lambda5.Runtime.NODEJS_LATEST,
2191
2204
  memorySize: 512,
2192
- timeout: import_aws_cdk_lib8.Duration.minutes(1),
2205
+ timeout: import_aws_cdk_lib9.Duration.minutes(1),
2193
2206
  vpc: this.vpc,
2194
2207
  vpcSubnets: { subnetType: ec2.SubnetType.PRIVATE_ISOLATED },
2195
2208
  description: "Replicates DynamoDB current-resource changes into the Postgres `resources` JSONB table (ADR 2026-04-17-01).",
@@ -2216,7 +2229,7 @@ var DataStorePostgresReplica = class extends import_constructs6.Construct {
2216
2229
  new import_aws_lambda_event_sources.KinesisEventSource(props.kinesisStream, {
2217
2230
  startingPosition: import_aws_lambda5.StartingPosition.LATEST,
2218
2231
  batchSize: 100,
2219
- maxBatchingWindow: import_aws_cdk_lib8.Duration.seconds(5),
2232
+ maxBatchingWindow: import_aws_cdk_lib9.Duration.seconds(5),
2220
2233
  retryAttempts: 10,
2221
2234
  bisectBatchOnError: true,
2222
2235
  parallelizationFactor: 2,
@@ -2249,7 +2262,7 @@ var DataStorePostgresReplica = class extends import_constructs6.Construct {
2249
2262
  };
2250
2263
 
2251
2264
  // src/components/route-53/child-hosted-zone.ts
2252
- var import_aws_cdk_lib9 = require("aws-cdk-lib");
2265
+ var import_aws_cdk_lib10 = require("aws-cdk-lib");
2253
2266
  var import_aws_route53 = require("aws-cdk-lib/aws-route53");
2254
2267
  var ChildHostedZone = class extends import_aws_route53.HostedZone {
2255
2268
  constructor(scope, id, props) {
@@ -2258,7 +2271,7 @@ var ChildHostedZone = class extends import_aws_route53.HostedZone {
2258
2271
  zone: props.parentHostedZone,
2259
2272
  recordName: this.zoneName,
2260
2273
  values: this.hostedZoneNameServers || [],
2261
- ttl: import_aws_cdk_lib9.Duration.minutes(5)
2274
+ ttl: import_aws_cdk_lib10.Duration.minutes(5)
2262
2275
  });
2263
2276
  }
2264
2277
  };
@@ -2272,11 +2285,24 @@ var import_constructs7 = require("constructs");
2272
2285
  var RootHostedZone = class extends import_constructs7.Construct {
2273
2286
  };
2274
2287
 
2288
+ // src/components/static-hosting/static-content.ts
2289
+ var import_aws_s32 = require("aws-cdk-lib/aws-s3");
2290
+ var import_aws_s3_deployment = require("aws-cdk-lib/aws-s3-deployment");
2291
+ var import_change_case2 = require("change-case");
2292
+ var import_constructs9 = require("constructs");
2293
+
2275
2294
  // src/components/static-hosting/static-hosting.ts
2295
+ var fs6 = __toESM(require("fs"));
2296
+ var path6 = __toESM(require("path"));
2297
+ var import_aws_cdk_lib11 = require("aws-cdk-lib");
2276
2298
  var import_aws_cloudfront = require("aws-cdk-lib/aws-cloudfront");
2277
2299
  var import_aws_cloudfront_origins = require("aws-cdk-lib/aws-cloudfront-origins");
2300
+ var import_aws_lambda6 = require("aws-cdk-lib/aws-lambda");
2301
+ var import_aws_lambda_nodejs6 = require("aws-cdk-lib/aws-lambda-nodejs");
2302
+ var import_aws_logs = require("aws-cdk-lib/aws-logs");
2303
+ var import_aws_route532 = require("aws-cdk-lib/aws-route53");
2304
+ var import_aws_route53_targets = require("aws-cdk-lib/aws-route53-targets");
2278
2305
  var import_aws_s3 = require("aws-cdk-lib/aws-s3");
2279
- var import_core = require("aws-cdk-lib/core");
2280
2306
  var import_constructs8 = require("constructs");
2281
2307
  var STATIC_HOSTING_SERVICE_TYPE = "website";
2282
2308
  var _StaticHosting = class _StaticHosting extends import_constructs8.Construct {
@@ -2284,6 +2310,7 @@ var _StaticHosting = class _StaticHosting extends import_constructs8.Construct {
2284
2310
  super(scope, id);
2285
2311
  const stack = OpenHiService.of(scope);
2286
2312
  const serviceType = props.serviceType ?? STATIC_HOSTING_SERVICE_TYPE;
2313
+ const hostingMode = props.hostingMode ?? "spa";
2287
2314
  this.bucket = new import_aws_s3.Bucket(this, "bucket", {
2288
2315
  blockPublicAccess: {
2289
2316
  blockPublicAcls: true,
@@ -2293,30 +2320,105 @@ var _StaticHosting = class _StaticHosting extends import_constructs8.Construct {
2293
2320
  },
2294
2321
  ...props.bucketProps
2295
2322
  });
2296
- const origin = import_aws_cloudfront_origins.S3BucketOrigin.withOriginAccessControl(this.bucket);
2323
+ const handlerJs = path6.join(
2324
+ __dirname,
2325
+ "static-hosting.viewer-request-handler.js"
2326
+ );
2327
+ const handlerTs = path6.join(
2328
+ __dirname,
2329
+ "static-hosting.viewer-request-handler.ts"
2330
+ );
2331
+ const handlerEntry = fs6.existsSync(handlerJs) ? handlerJs : handlerTs;
2332
+ this.viewerRequestHandler = new import_aws_lambda_nodejs6.NodejsFunction(
2333
+ this,
2334
+ "viewer-request-handler",
2335
+ {
2336
+ entry: handlerEntry,
2337
+ handler: hostingMode === "static" ? "staticHandler" : "spaHandler",
2338
+ memorySize: 128,
2339
+ runtime: import_aws_lambda6.Runtime.NODEJS_LATEST,
2340
+ logGroup: new import_aws_logs.LogGroup(this, "viewer-request-handler-log-group", {
2341
+ retention: import_aws_logs.RetentionDays.ONE_MONTH
2342
+ })
2343
+ }
2344
+ );
2297
2345
  const cachePolicy = new import_aws_cloudfront.CachePolicy(this, "cache-policy", {
2298
- cachePolicyName: `static-hosting-10s-${stack.branchHash}`,
2299
- comment: "Low TTL (10s) for static hosting; no invalidation",
2300
- defaultTtl: import_core.Duration.seconds(10),
2301
- minTtl: import_core.Duration.seconds(0),
2302
- maxTtl: import_core.Duration.seconds(10)
2346
+ cachePolicyName: `static-hosting-${stack.branchHash}`,
2347
+ comment: "Static hosting default: 60s default / 300s max, gzip+brotli.",
2348
+ defaultTtl: import_aws_cdk_lib11.Duration.seconds(60),
2349
+ minTtl: import_aws_cdk_lib11.Duration.seconds(0),
2350
+ maxTtl: import_aws_cdk_lib11.Duration.seconds(300),
2351
+ headerBehavior: import_aws_cloudfront.CacheHeaderBehavior.none(),
2352
+ queryStringBehavior: import_aws_cloudfront.CacheQueryStringBehavior.none(),
2353
+ cookieBehavior: import_aws_cloudfront.CacheCookieBehavior.none(),
2354
+ enableAcceptEncodingGzip: true,
2355
+ enableAcceptEncodingBrotli: true,
2356
+ ...props.cachePolicyProps
2357
+ });
2358
+ const oac = new import_aws_cloudfront.S3OriginAccessControl(this, "origin-access-control", {
2359
+ signing: import_aws_cloudfront.Signing.SIGV4_NO_OVERRIDE
2303
2360
  });
2361
+ const origin = import_aws_cloudfront_origins.S3BucketOrigin.withOriginAccessControl(this.bucket, {
2362
+ originAccessControl: oac,
2363
+ originAccessLevels: [import_aws_cloudfront.AccessLevel.READ]
2364
+ });
2365
+ const hasCustomDomain = props.certificate !== void 0 && props.hostedZone !== void 0 && props.domainNames !== void 0 && props.domainNames.length > 0;
2304
2366
  this.distribution = new import_aws_cloudfront.Distribution(this, "distribution", {
2367
+ comment: `Static hosting distribution for ${props.description ?? id}`,
2368
+ ...hasCustomDomain ? {
2369
+ certificate: props.certificate,
2370
+ domainNames: [...props.domainNames]
2371
+ } : {},
2372
+ defaultRootObject: "index.html",
2305
2373
  defaultBehavior: {
2306
2374
  origin,
2307
- cachePolicy
2375
+ viewerProtocolPolicy: import_aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
2376
+ cachePolicy,
2377
+ allowedMethods: import_aws_cloudfront.AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
2378
+ edgeLambdas: [
2379
+ {
2380
+ functionVersion: this.viewerRequestHandler.currentVersion,
2381
+ eventType: import_aws_cloudfront.LambdaEdgeEventType.VIEWER_REQUEST,
2382
+ includeBody: false
2383
+ }
2384
+ ]
2308
2385
  },
2309
2386
  ...props.distributionProps
2310
2387
  });
2388
+ if (hasCustomDomain) {
2389
+ props.domainNames.forEach((domainName, index) => {
2390
+ new import_aws_route532.ARecord(this, `dns-record-${index}`, {
2391
+ zone: props.hostedZone,
2392
+ recordName: domainName,
2393
+ target: import_aws_route532.RecordTarget.fromAlias(
2394
+ new import_aws_route53_targets.CloudFrontTarget(this.distribution)
2395
+ )
2396
+ });
2397
+ });
2398
+ }
2311
2399
  new DiscoverableStringParameter(this, "bucket-arn-param", {
2312
2400
  ssmParamName: _StaticHosting.SSM_PARAM_NAME_BUCKET_ARN,
2313
2401
  serviceType,
2314
- stringValue: this.bucket.bucketArn
2402
+ stringValue: this.bucket.bucketArn,
2403
+ description: `Static hosting bucket ARN (${props.description ?? id})`
2315
2404
  });
2316
2405
  new DiscoverableStringParameter(this, "distribution-arn-param", {
2317
2406
  ssmParamName: _StaticHosting.SSM_PARAM_NAME_DISTRIBUTION_ARN,
2318
2407
  serviceType,
2319
- stringValue: this.distribution.distributionArn
2408
+ stringValue: this.distribution.distributionArn,
2409
+ description: `Static hosting distribution ARN (${props.description ?? id})`
2410
+ });
2411
+ new DiscoverableStringParameter(this, "distribution-domain-param", {
2412
+ ssmParamName: _StaticHosting.SSM_PARAM_NAME_DISTRIBUTION_DOMAIN,
2413
+ serviceType,
2414
+ stringValue: this.distribution.domainName,
2415
+ description: `Static hosting distribution domain (${props.description ?? id})`
2416
+ });
2417
+ new DiscoverableStringParameter(this, "distribution-id-param", {
2418
+ ssmParamName: _StaticHosting.SSM_PARAM_NAME_DISTRIBUTION_ID,
2419
+ serviceType,
2420
+ stringValue: this.distribution.distributionId,
2421
+ description: `Static hosting distribution ID (${props.description ?? id})`
2320
2422
  });
2321
2423
  }
2322
2424
  };
@@ -2328,13 +2430,51 @@ _StaticHosting.SSM_PARAM_NAME_BUCKET_ARN = "STATIC_HOSTING_BUCKET_ARN";
2328
2430
  * SSM parameter name for the CloudFront distribution ARN.
2329
2431
  */
2330
2432
  _StaticHosting.SSM_PARAM_NAME_DISTRIBUTION_ARN = "STATIC_HOSTING_DISTRIBUTION_ARN";
2433
+ /**
2434
+ * SSM parameter name for the CloudFront distribution domain
2435
+ * (e.g. dXXXXX.cloudfront.net).
2436
+ */
2437
+ _StaticHosting.SSM_PARAM_NAME_DISTRIBUTION_DOMAIN = "STATIC_HOSTING_DISTRIBUTION_DOMAIN";
2438
+ /**
2439
+ * SSM parameter name for the CloudFront distribution ID.
2440
+ */
2441
+ _StaticHosting.SSM_PARAM_NAME_DISTRIBUTION_ID = "STATIC_HOSTING_DISTRIBUTION_ID";
2331
2442
  var StaticHosting = _StaticHosting;
2332
2443
 
2444
+ // src/components/static-hosting/static-content.ts
2445
+ var StaticContent = class extends import_constructs9.Construct {
2446
+ constructor(scope, id, props) {
2447
+ super(scope, id);
2448
+ const stack = OpenHiService.of(scope);
2449
+ const {
2450
+ contentSourceDirectory,
2451
+ contentDestinationDirectory = "/",
2452
+ subDomain = stack.branchName,
2453
+ fullDomain,
2454
+ serviceType = STATIC_HOSTING_SERVICE_TYPE
2455
+ } = props;
2456
+ const keyPrefix = [(0, import_change_case2.paramCase)(subDomain), fullDomain].join(".");
2457
+ const bucketArn = DiscoverableStringParameter.valueForLookupName(this, {
2458
+ ssmParamName: StaticHosting.SSM_PARAM_NAME_BUCKET_ARN,
2459
+ serviceType
2460
+ });
2461
+ const bucket = import_aws_s32.Bucket.fromBucketArn(this, "bucket", bucketArn);
2462
+ const isTestEnv = process.env.JEST_WORKER_ID !== void 0;
2463
+ const sources = isTestEnv ? [] : [import_aws_s3_deployment.Source.asset(contentSourceDirectory)];
2464
+ new import_aws_s3_deployment.BucketDeployment(this, "deploy", {
2465
+ sources,
2466
+ destinationBucket: bucket,
2467
+ retainOnDelete: false,
2468
+ destinationKeyPrefix: `${keyPrefix}${contentDestinationDirectory}`
2469
+ });
2470
+ }
2471
+ };
2472
+
2333
2473
  // src/services/open-hi-auth-service.ts
2334
2474
  var import_aws_cognito4 = require("aws-cdk-lib/aws-cognito");
2335
2475
  var import_aws_iam6 = require("aws-cdk-lib/aws-iam");
2336
2476
  var import_aws_kms2 = require("aws-cdk-lib/aws-kms");
2337
- var import_core2 = require("aws-cdk-lib/core");
2477
+ var import_core = require("aws-cdk-lib/core");
2338
2478
 
2339
2479
  // src/services/open-hi-data-service.ts
2340
2480
  var import_config4 = __toESM(require_lib());
@@ -2344,7 +2484,7 @@ var kinesis = __toESM(require("aws-cdk-lib/aws-kinesis"));
2344
2484
  // src/services/open-hi-global-service.ts
2345
2485
  var import_aws_certificatemanager2 = require("aws-cdk-lib/aws-certificatemanager");
2346
2486
  var import_aws_events5 = require("aws-cdk-lib/aws-events");
2347
- var import_aws_route532 = require("aws-cdk-lib/aws-route53");
2487
+ var import_aws_route533 = require("aws-cdk-lib/aws-route53");
2348
2488
  var import_aws_ssm3 = require("aws-cdk-lib/aws-ssm");
2349
2489
 
2350
2490
  // src/workflows/control-plane/platform-deploy-bridge/events.ts
@@ -2357,18 +2497,18 @@ var OPENHI_TAG_KEY_PREFIX_ENV_VAR = "OPENHI_TAG_KEY_PREFIX";
2357
2497
  var PLATFORM_DEPLOY_BRIDGE_ACTOR_SYSTEM = "platform-deploy-bridge";
2358
2498
 
2359
2499
  // src/workflows/control-plane/platform-deploy-bridge/platform-deploy-bridge.ts
2360
- var import_constructs10 = require("constructs");
2500
+ var import_constructs11 = require("constructs");
2361
2501
 
2362
2502
  // src/workflows/control-plane/platform-deploy-bridge/platform-deploy-bridge-lambda.ts
2363
2503
  var import_node_fs6 = __toESM(require("fs"));
2364
2504
  var import_node_path6 = __toESM(require("path"));
2365
- var import_aws_cdk_lib10 = require("aws-cdk-lib");
2505
+ var import_aws_cdk_lib12 = require("aws-cdk-lib");
2366
2506
  var import_aws_events4 = require("aws-cdk-lib/aws-events");
2367
2507
  var import_aws_events_targets = require("aws-cdk-lib/aws-events-targets");
2368
2508
  var import_aws_iam2 = require("aws-cdk-lib/aws-iam");
2369
- var import_aws_lambda6 = require("aws-cdk-lib/aws-lambda");
2370
- var import_aws_lambda_nodejs6 = require("aws-cdk-lib/aws-lambda-nodejs");
2371
- var import_constructs9 = require("constructs");
2509
+ var import_aws_lambda7 = require("aws-cdk-lib/aws-lambda");
2510
+ var import_aws_lambda_nodejs7 = require("aws-cdk-lib/aws-lambda-nodejs");
2511
+ var import_constructs10 = require("constructs");
2372
2512
  var HANDLER_NAME6 = "platform-deploy-bridge.handler.js";
2373
2513
  function resolveHandlerEntry6(dirname) {
2374
2514
  const sameDir = import_node_path6.default.join(dirname, HANDLER_NAME6);
@@ -2377,7 +2517,7 @@ function resolveHandlerEntry6(dirname) {
2377
2517
  }
2378
2518
  return import_node_path6.default.join(dirname, "..", "..", "..", "..", "lib", HANDLER_NAME6);
2379
2519
  }
2380
- var PlatformDeployBridgeLambda = class extends import_constructs9.Construct {
2520
+ var PlatformDeployBridgeLambda = class extends import_constructs10.Construct {
2381
2521
  constructor(scope, props) {
2382
2522
  super(scope, "platform-deploy-bridge-lambda");
2383
2523
  const service = OpenHiService.of(this);
@@ -2386,15 +2526,15 @@ var PlatformDeployBridgeLambda = class extends import_constructs9.Construct {
2386
2526
  OPENHI_TAG_SUFFIX_REPO_NAME
2387
2527
  );
2388
2528
  const tagKeyPrefix = `${service.appName}:`;
2389
- const ownStackName = import_aws_cdk_lib10.Stack.of(this).stackName;
2390
- const ownSuffix = `-${service.serviceId}-${import_aws_cdk_lib10.Stack.of(this).account}-${import_aws_cdk_lib10.Stack.of(this).region}`;
2529
+ const ownStackName = import_aws_cdk_lib12.Stack.of(this).stackName;
2530
+ const ownSuffix = `-${service.serviceId}-${import_aws_cdk_lib12.Stack.of(this).account}-${import_aws_cdk_lib12.Stack.of(this).region}`;
2391
2531
  const sharedPrefix = ownStackName.endsWith(ownSuffix) ? ownStackName.slice(0, -ownSuffix.length) : service.branchHash;
2392
- const stackIdPrefix = `arn:aws:cloudformation:${import_aws_cdk_lib10.Stack.of(this).region}:${import_aws_cdk_lib10.Stack.of(this).account}:stack/${sharedPrefix}-`;
2393
- this.lambda = new import_aws_lambda_nodejs6.NodejsFunction(this, "handler", {
2532
+ const stackIdPrefix = `arn:aws:cloudformation:${import_aws_cdk_lib12.Stack.of(this).region}:${import_aws_cdk_lib12.Stack.of(this).account}:stack/${sharedPrefix}-`;
2533
+ this.lambda = new import_aws_lambda_nodejs7.NodejsFunction(this, "handler", {
2394
2534
  entry: resolveHandlerEntry6(__dirname),
2395
- runtime: import_aws_lambda6.Runtime.NODEJS_LATEST,
2535
+ runtime: import_aws_lambda7.Runtime.NODEJS_LATEST,
2396
2536
  memorySize: 256,
2397
- timeout: import_aws_cdk_lib10.Duration.seconds(30),
2537
+ timeout: import_aws_cdk_lib12.Duration.seconds(30),
2398
2538
  environment: {
2399
2539
  [CONTROL_EVENT_BUS_NAME_ENV_VAR]: props.controlEventBus.eventBusName,
2400
2540
  [OPENHI_REPO_TAG_KEY_ENV_VAR]: repoTagKey,
@@ -2406,7 +2546,7 @@ var PlatformDeployBridgeLambda = class extends import_constructs9.Construct {
2406
2546
  effect: import_aws_iam2.Effect.ALLOW,
2407
2547
  actions: ["cloudformation:DescribeStacks"],
2408
2548
  resources: [
2409
- `arn:aws:cloudformation:${import_aws_cdk_lib10.Stack.of(this).region}:${import_aws_cdk_lib10.Stack.of(this).account}:stack/*`
2549
+ `arn:aws:cloudformation:${import_aws_cdk_lib12.Stack.of(this).region}:${import_aws_cdk_lib12.Stack.of(this).account}:stack/*`
2410
2550
  ]
2411
2551
  })
2412
2552
  );
@@ -2425,7 +2565,7 @@ var PlatformDeployBridgeLambda = class extends import_constructs9.Construct {
2425
2565
  targets: [
2426
2566
  new import_aws_events_targets.LambdaFunction(this.lambda, {
2427
2567
  retryAttempts: 2,
2428
- maxEventAge: import_aws_cdk_lib10.Duration.hours(2)
2568
+ maxEventAge: import_aws_cdk_lib12.Duration.hours(2)
2429
2569
  })
2430
2570
  ]
2431
2571
  });
@@ -2433,7 +2573,7 @@ var PlatformDeployBridgeLambda = class extends import_constructs9.Construct {
2433
2573
  };
2434
2574
 
2435
2575
  // src/workflows/control-plane/platform-deploy-bridge/platform-deploy-bridge.ts
2436
- var PlatformDeployBridge = class extends import_constructs10.Construct {
2576
+ var PlatformDeployBridge = class extends import_constructs11.Construct {
2437
2577
  constructor(scope, props) {
2438
2578
  super(scope, "platform-deploy-bridge");
2439
2579
  this.bridgeLambda = new PlatformDeployBridgeLambda(this, {
@@ -2448,7 +2588,7 @@ var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
2448
2588
  * Returns an IHostedZone from the given attributes (no SSM). Use when the zone is imported from config.
2449
2589
  */
2450
2590
  static rootHostedZoneFromConstruct(scope, props) {
2451
- return import_aws_route532.HostedZone.fromHostedZoneAttributes(scope, "root-zone", props);
2591
+ return import_aws_route533.HostedZone.fromHostedZoneAttributes(scope, "root-zone", props);
2452
2592
  }
2453
2593
  /**
2454
2594
  * Returns an ICertificate by looking up the Global stack's wildcard cert ARN from SSM.
@@ -2472,7 +2612,7 @@ var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
2472
2612
  ssmParamName: ChildHostedZone.SSM_PARAM_NAME,
2473
2613
  serviceType: props.serviceType ?? _OpenHiGlobalService.SERVICE_TYPE
2474
2614
  });
2475
- return import_aws_route532.HostedZone.fromHostedZoneAttributes(scope, "child-zone", {
2615
+ return import_aws_route533.HostedZone.fromHostedZoneAttributes(scope, "child-zone", {
2476
2616
  hostedZoneId,
2477
2617
  zoneName: props.zoneName
2478
2618
  });
@@ -3138,13 +3278,13 @@ _validateFixturesAgainstTenantSpecs();
3138
3278
  // src/workflows/control-plane/seed-demo-data/seed-demo-data-lambda.ts
3139
3279
  var import_node_fs7 = __toESM(require("fs"));
3140
3280
  var import_node_path7 = __toESM(require("path"));
3141
- var import_aws_cdk_lib11 = require("aws-cdk-lib");
3281
+ var import_aws_cdk_lib13 = require("aws-cdk-lib");
3142
3282
  var import_aws_events6 = require("aws-cdk-lib/aws-events");
3143
3283
  var import_aws_events_targets2 = require("aws-cdk-lib/aws-events-targets");
3144
3284
  var import_aws_iam3 = require("aws-cdk-lib/aws-iam");
3145
- var import_aws_lambda7 = require("aws-cdk-lib/aws-lambda");
3146
- var import_aws_lambda_nodejs7 = require("aws-cdk-lib/aws-lambda-nodejs");
3147
- var import_constructs11 = require("constructs");
3285
+ var import_aws_lambda8 = require("aws-cdk-lib/aws-lambda");
3286
+ var import_aws_lambda_nodejs8 = require("aws-cdk-lib/aws-lambda-nodejs");
3287
+ var import_constructs12 = require("constructs");
3148
3288
 
3149
3289
  // src/workflows/control-plane/seed-demo-data/seed-demo-data.handler.ts
3150
3290
  var import_node_crypto = require("crypto");
@@ -6025,14 +6165,14 @@ function resolveHandlerEntry7(dirname) {
6025
6165
  }
6026
6166
  return import_node_path7.default.join(dirname, "..", "..", "..", "..", "lib", HANDLER_NAME7);
6027
6167
  }
6028
- var SeedDemoDataLambda = class extends import_constructs11.Construct {
6168
+ var SeedDemoDataLambda = class extends import_constructs12.Construct {
6029
6169
  constructor(scope, props) {
6030
6170
  super(scope, "seed-demo-data-lambda");
6031
- this.lambda = new import_aws_lambda_nodejs7.NodejsFunction(this, "handler", {
6171
+ this.lambda = new import_aws_lambda_nodejs8.NodejsFunction(this, "handler", {
6032
6172
  entry: resolveHandlerEntry7(__dirname),
6033
- runtime: import_aws_lambda7.Runtime.NODEJS_LATEST,
6173
+ runtime: import_aws_lambda8.Runtime.NODEJS_LATEST,
6034
6174
  memorySize: 512,
6035
- timeout: import_aws_cdk_lib11.Duration.minutes(2),
6175
+ timeout: import_aws_cdk_lib13.Duration.minutes(2),
6036
6176
  environment: {
6037
6177
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName,
6038
6178
  [SEED_DEMO_DATA_USER_POOL_ID_ENV_VAR]: props.userPool.userPoolId
@@ -6061,7 +6201,7 @@ var SeedDemoDataLambda = class extends import_constructs11.Construct {
6061
6201
  "cognito-idp:AdminSetUserPassword"
6062
6202
  ],
6063
6203
  resources: [
6064
- import_aws_cdk_lib11.Stack.of(this).formatArn({
6204
+ import_aws_cdk_lib13.Stack.of(this).formatArn({
6065
6205
  service: "cognito-idp",
6066
6206
  resource: "userpool",
6067
6207
  resourceName: props.userPool.userPoolId
@@ -6078,7 +6218,7 @@ var SeedDemoDataLambda = class extends import_constructs11.Construct {
6078
6218
  targets: [
6079
6219
  new import_aws_events_targets2.LambdaFunction(this.lambda, {
6080
6220
  retryAttempts: 2,
6081
- maxEventAge: import_aws_cdk_lib11.Duration.hours(2)
6221
+ maxEventAge: import_aws_cdk_lib13.Duration.hours(2)
6082
6222
  })
6083
6223
  ]
6084
6224
  });
@@ -6086,8 +6226,8 @@ var SeedDemoDataLambda = class extends import_constructs11.Construct {
6086
6226
  };
6087
6227
 
6088
6228
  // src/workflows/control-plane/seed-demo-data/seed-demo-data-workflow.ts
6089
- var import_constructs12 = require("constructs");
6090
- var SeedDemoDataWorkflow = class extends import_constructs12.Construct {
6229
+ var import_constructs13 = require("constructs");
6230
+ var SeedDemoDataWorkflow = class extends import_constructs13.Construct {
6091
6231
  constructor(scope, props) {
6092
6232
  super(scope, "seed-demo-data-workflow");
6093
6233
  this.seedDemoData = new SeedDemoDataLambda(this, {
@@ -6113,13 +6253,13 @@ var SEED_SYSTEM_DATA_CONTROL_BUS_ENV_VAR = "CONTROL_EVENT_BUS_NAME";
6113
6253
  var import_node_fs8 = __toESM(require("fs"));
6114
6254
  var import_node_path8 = __toESM(require("path"));
6115
6255
  var import_types13 = require("@openhi/types");
6116
- var import_aws_cdk_lib12 = require("aws-cdk-lib");
6256
+ var import_aws_cdk_lib14 = require("aws-cdk-lib");
6117
6257
  var import_aws_events7 = require("aws-cdk-lib/aws-events");
6118
6258
  var import_aws_events_targets3 = require("aws-cdk-lib/aws-events-targets");
6119
6259
  var import_aws_iam4 = require("aws-cdk-lib/aws-iam");
6120
- var import_aws_lambda8 = require("aws-cdk-lib/aws-lambda");
6121
- var import_aws_lambda_nodejs8 = require("aws-cdk-lib/aws-lambda-nodejs");
6122
- var import_constructs13 = require("constructs");
6260
+ var import_aws_lambda9 = require("aws-cdk-lib/aws-lambda");
6261
+ var import_aws_lambda_nodejs9 = require("aws-cdk-lib/aws-lambda-nodejs");
6262
+ var import_constructs14 = require("constructs");
6123
6263
  var HANDLER_NAME8 = "seed-system-data.handler.js";
6124
6264
  function resolveHandlerEntry8(dirname) {
6125
6265
  const sameDir = import_node_path8.default.join(dirname, HANDLER_NAME8);
@@ -6128,14 +6268,14 @@ function resolveHandlerEntry8(dirname) {
6128
6268
  }
6129
6269
  return import_node_path8.default.join(dirname, "..", "..", "..", "..", "lib", HANDLER_NAME8);
6130
6270
  }
6131
- var SeedSystemDataLambda = class extends import_constructs13.Construct {
6271
+ var SeedSystemDataLambda = class extends import_constructs14.Construct {
6132
6272
  constructor(scope, props) {
6133
6273
  super(scope, "seed-system-data-lambda");
6134
- this.lambda = new import_aws_lambda_nodejs8.NodejsFunction(this, "handler", {
6274
+ this.lambda = new import_aws_lambda_nodejs9.NodejsFunction(this, "handler", {
6135
6275
  entry: resolveHandlerEntry8(__dirname),
6136
- runtime: import_aws_lambda8.Runtime.NODEJS_LATEST,
6276
+ runtime: import_aws_lambda9.Runtime.NODEJS_LATEST,
6137
6277
  memorySize: 512,
6138
- timeout: import_aws_cdk_lib12.Duration.minutes(1),
6278
+ timeout: import_aws_cdk_lib14.Duration.minutes(1),
6139
6279
  environment: {
6140
6280
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName,
6141
6281
  [SEED_SYSTEM_DATA_CONTROL_BUS_ENV_VAR]: props.controlEventBus.eventBusName
@@ -6157,7 +6297,7 @@ var SeedSystemDataLambda = class extends import_constructs13.Construct {
6157
6297
  })
6158
6298
  );
6159
6299
  props.controlEventBus.grantPutEventsTo(this.lambda);
6160
- const hostStackName = import_aws_cdk_lib12.Stack.of(this).stackName;
6300
+ const hostStackName = import_aws_cdk_lib14.Stack.of(this).stackName;
6161
6301
  this.rule = new import_aws_events7.Rule(this, "rule", {
6162
6302
  eventBus: props.controlEventBus,
6163
6303
  eventPattern: {
@@ -6172,7 +6312,7 @@ var SeedSystemDataLambda = class extends import_constructs13.Construct {
6172
6312
  targets: [
6173
6313
  new import_aws_events_targets3.LambdaFunction(this.lambda, {
6174
6314
  retryAttempts: 2,
6175
- maxEventAge: import_aws_cdk_lib12.Duration.hours(2)
6315
+ maxEventAge: import_aws_cdk_lib14.Duration.hours(2)
6176
6316
  })
6177
6317
  ]
6178
6318
  });
@@ -6180,8 +6320,8 @@ var SeedSystemDataLambda = class extends import_constructs13.Construct {
6180
6320
  };
6181
6321
 
6182
6322
  // src/workflows/control-plane/seed-system-data/seed-system-data-workflow.ts
6183
- var import_constructs14 = require("constructs");
6184
- var SeedSystemDataWorkflow = class extends import_constructs14.Construct {
6323
+ var import_constructs15 = require("constructs");
6324
+ var SeedSystemDataWorkflow = class extends import_constructs15.Construct {
6185
6325
  constructor(scope, props) {
6186
6326
  super(scope, "seed-system-data-workflow");
6187
6327
  this.seedSystemData = new SeedSystemDataLambda(this, {
@@ -6334,13 +6474,13 @@ var buildProvisionDefaultWorkspaceRequestedDetail = (event) => {
6334
6474
  // src/workflows/control-plane/user-onboarding/provision-default-workspace-lambda.ts
6335
6475
  var import_node_fs9 = __toESM(require("fs"));
6336
6476
  var import_node_path9 = __toESM(require("path"));
6337
- var import_aws_cdk_lib13 = require("aws-cdk-lib");
6477
+ var import_aws_cdk_lib15 = require("aws-cdk-lib");
6338
6478
  var import_aws_events8 = require("aws-cdk-lib/aws-events");
6339
6479
  var import_aws_events_targets4 = require("aws-cdk-lib/aws-events-targets");
6340
6480
  var import_aws_iam5 = require("aws-cdk-lib/aws-iam");
6341
- var import_aws_lambda9 = require("aws-cdk-lib/aws-lambda");
6342
- var import_aws_lambda_nodejs9 = require("aws-cdk-lib/aws-lambda-nodejs");
6343
- var import_constructs15 = require("constructs");
6481
+ var import_aws_lambda10 = require("aws-cdk-lib/aws-lambda");
6482
+ var import_aws_lambda_nodejs10 = require("aws-cdk-lib/aws-lambda-nodejs");
6483
+ var import_constructs16 = require("constructs");
6344
6484
  var HANDLER_NAME9 = "provision-default-workspace.handler.js";
6345
6485
  function resolveHandlerEntry9(dirname) {
6346
6486
  const sameDir = import_node_path9.default.join(dirname, HANDLER_NAME9);
@@ -6349,12 +6489,12 @@ function resolveHandlerEntry9(dirname) {
6349
6489
  }
6350
6490
  return import_node_path9.default.join(dirname, "..", "..", "..", "..", "lib", HANDLER_NAME9);
6351
6491
  }
6352
- var ProvisionDefaultWorkspaceLambda = class extends import_constructs15.Construct {
6492
+ var ProvisionDefaultWorkspaceLambda = class extends import_constructs16.Construct {
6353
6493
  constructor(scope, props) {
6354
6494
  super(scope, "provision-default-workspace-lambda");
6355
- this.lambda = new import_aws_lambda_nodejs9.NodejsFunction(this, "handler", {
6495
+ this.lambda = new import_aws_lambda_nodejs10.NodejsFunction(this, "handler", {
6356
6496
  entry: resolveHandlerEntry9(__dirname),
6357
- runtime: import_aws_lambda9.Runtime.NODEJS_LATEST,
6497
+ runtime: import_aws_lambda10.Runtime.NODEJS_LATEST,
6358
6498
  memorySize: 1024,
6359
6499
  environment: {
6360
6500
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName
@@ -6381,7 +6521,7 @@ var ProvisionDefaultWorkspaceLambda = class extends import_constructs15.Construc
6381
6521
  targets: [
6382
6522
  new import_aws_events_targets4.LambdaFunction(this.lambda, {
6383
6523
  retryAttempts: 2,
6384
- maxEventAge: import_aws_cdk_lib13.Duration.hours(2)
6524
+ maxEventAge: import_aws_cdk_lib15.Duration.hours(2)
6385
6525
  })
6386
6526
  ]
6387
6527
  });
@@ -6389,8 +6529,8 @@ var ProvisionDefaultWorkspaceLambda = class extends import_constructs15.Construc
6389
6529
  };
6390
6530
 
6391
6531
  // src/workflows/control-plane/user-onboarding/user-onboarding-workflow.ts
6392
- var import_constructs16 = require("constructs");
6393
- var UserOnboardingWorkflow = class extends import_constructs16.Construct {
6532
+ var import_constructs17 = require("constructs");
6533
+ var UserOnboardingWorkflow = class extends import_constructs17.Construct {
6394
6534
  constructor(scope, props) {
6395
6535
  super(scope, "user-onboarding-workflow");
6396
6536
  this.provisionDefaultWorkspace = new ProvisionDefaultWorkspaceLambda(this, {
@@ -6608,7 +6748,7 @@ var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
6608
6748
  new import_aws_iam6.PolicyStatement({
6609
6749
  actions: ["cognito-idp:AdminUserGlobalSignOut"],
6610
6750
  resources: [
6611
- import_core2.Stack.of(this).formatArn({
6751
+ import_core.Stack.of(this).formatArn({
6612
6752
  service: "cognito-idp",
6613
6753
  resource: "userpool",
6614
6754
  resourceName: "*"
@@ -6668,16 +6808,16 @@ var import_aws_apigatewayv22 = require("aws-cdk-lib/aws-apigatewayv2");
6668
6808
  var import_aws_apigatewayv2_authorizers = require("aws-cdk-lib/aws-apigatewayv2-authorizers");
6669
6809
  var import_aws_apigatewayv2_integrations = require("aws-cdk-lib/aws-apigatewayv2-integrations");
6670
6810
  var import_aws_iam7 = require("aws-cdk-lib/aws-iam");
6671
- var import_aws_route533 = require("aws-cdk-lib/aws-route53");
6672
- var import_aws_route53_targets = require("aws-cdk-lib/aws-route53-targets");
6673
- var import_core3 = require("aws-cdk-lib/core");
6811
+ var import_aws_route534 = require("aws-cdk-lib/aws-route53");
6812
+ var import_aws_route53_targets2 = require("aws-cdk-lib/aws-route53-targets");
6813
+ var import_core2 = require("aws-cdk-lib/core");
6674
6814
 
6675
6815
  // src/data/lambda/cors-options-lambda.ts
6676
6816
  var import_node_fs10 = __toESM(require("fs"));
6677
6817
  var import_node_path10 = __toESM(require("path"));
6678
- var import_aws_lambda10 = require("aws-cdk-lib/aws-lambda");
6679
- var import_aws_lambda_nodejs10 = require("aws-cdk-lib/aws-lambda-nodejs");
6680
- var import_constructs17 = require("constructs");
6818
+ var import_aws_lambda11 = require("aws-cdk-lib/aws-lambda");
6819
+ var import_aws_lambda_nodejs11 = require("aws-cdk-lib/aws-lambda-nodejs");
6820
+ var import_constructs18 = require("constructs");
6681
6821
  var HANDLER_NAME10 = "cors-options-lambda.handler.js";
6682
6822
  function resolveHandlerEntry10(dirname) {
6683
6823
  const sameDir = import_node_path10.default.join(dirname, HANDLER_NAME10);
@@ -6687,12 +6827,12 @@ function resolveHandlerEntry10(dirname) {
6687
6827
  const fromLib = import_node_path10.default.join(dirname, "..", "..", "..", "lib", HANDLER_NAME10);
6688
6828
  return fromLib;
6689
6829
  }
6690
- var CorsOptionsLambda = class extends import_constructs17.Construct {
6830
+ var CorsOptionsLambda = class extends import_constructs18.Construct {
6691
6831
  constructor(scope, id = "cors-options-lambda") {
6692
6832
  super(scope, id);
6693
- this.lambda = new import_aws_lambda_nodejs10.NodejsFunction(this, "handler", {
6833
+ this.lambda = new import_aws_lambda_nodejs11.NodejsFunction(this, "handler", {
6694
6834
  entry: resolveHandlerEntry10(__dirname),
6695
- runtime: import_aws_lambda10.Runtime.NODEJS_LATEST,
6835
+ runtime: import_aws_lambda11.Runtime.NODEJS_LATEST,
6696
6836
  memorySize: 128
6697
6837
  });
6698
6838
  }
@@ -6701,9 +6841,9 @@ var CorsOptionsLambda = class extends import_constructs17.Construct {
6701
6841
  // src/data/lambda/rest-api-lambda.ts
6702
6842
  var import_node_fs11 = __toESM(require("fs"));
6703
6843
  var import_node_path11 = __toESM(require("path"));
6704
- var import_aws_lambda11 = require("aws-cdk-lib/aws-lambda");
6705
- var import_aws_lambda_nodejs11 = require("aws-cdk-lib/aws-lambda-nodejs");
6706
- var import_constructs18 = require("constructs");
6844
+ var import_aws_lambda12 = require("aws-cdk-lib/aws-lambda");
6845
+ var import_aws_lambda_nodejs12 = require("aws-cdk-lib/aws-lambda-nodejs");
6846
+ var import_constructs19 = require("constructs");
6707
6847
  var HANDLER_NAME11 = "rest-api-lambda.handler.js";
6708
6848
  function resolveHandlerEntry11(dirname) {
6709
6849
  const sameDir = import_node_path11.default.join(dirname, HANDLER_NAME11);
@@ -6713,12 +6853,12 @@ function resolveHandlerEntry11(dirname) {
6713
6853
  const fromLib = import_node_path11.default.join(dirname, "..", "..", "..", "lib", HANDLER_NAME11);
6714
6854
  return fromLib;
6715
6855
  }
6716
- var RestApiLambda = class extends import_constructs18.Construct {
6856
+ var RestApiLambda = class extends import_constructs19.Construct {
6717
6857
  constructor(scope, props) {
6718
6858
  super(scope, "rest-api-lambda");
6719
- this.lambda = new import_aws_lambda_nodejs11.NodejsFunction(this, "handler", {
6859
+ this.lambda = new import_aws_lambda_nodejs12.NodejsFunction(this, "handler", {
6720
6860
  entry: resolveHandlerEntry11(__dirname),
6721
- runtime: import_aws_lambda11.Runtime.NODEJS_LATEST,
6861
+ runtime: import_aws_lambda12.Runtime.NODEJS_LATEST,
6722
6862
  memorySize: 1024,
6723
6863
  environment: {
6724
6864
  DYNAMO_TABLE_NAME: props.dynamoTableName,
@@ -6796,7 +6936,7 @@ var _OpenHiRestApiService = class _OpenHiRestApiService extends OpenHiService {
6796
6936
  */
6797
6937
  createHostedZone() {
6798
6938
  const { config } = this.props;
6799
- return import_aws_route533.HostedZone.fromHostedZoneAttributes(this, "root-zone", {
6939
+ return import_aws_route534.HostedZone.fromHostedZoneAttributes(this, "root-zone", {
6800
6940
  hostedZoneId: config.hostedZoneId,
6801
6941
  zoneName: config.zoneName
6802
6942
  });
@@ -6936,11 +7076,11 @@ var _OpenHiRestApiService = class _OpenHiRestApiService extends OpenHiService {
6936
7076
  integration
6937
7077
  });
6938
7078
  const apiPrefix = this.branchName === "main" ? `api` : `api-${this.childZonePrefix}`;
6939
- new import_aws_route533.ARecord(this, "api-a-record", {
7079
+ new import_aws_route534.ARecord(this, "api-a-record", {
6940
7080
  zone: hostedZone,
6941
7081
  recordName: apiPrefix,
6942
- target: import_aws_route533.RecordTarget.fromAlias(
6943
- new import_aws_route53_targets.ApiGatewayv2DomainProperties(
7082
+ target: import_aws_route534.RecordTarget.fromAlias(
7083
+ new import_aws_route53_targets2.ApiGatewayv2DomainProperties(
6944
7084
  domainName.regionalDomainName,
6945
7085
  domainName.regionalHostedZoneId
6946
7086
  )
@@ -6977,7 +7117,7 @@ var _OpenHiRestApiService = class _OpenHiRestApiService extends OpenHiService {
6977
7117
  "Authorization"
6978
7118
  ],
6979
7119
  allowCredentials: cors.allowCredentials ?? true,
6980
- maxAge: cors.maxAge ?? import_core3.Duration.days(1),
7120
+ maxAge: cors.maxAge ?? import_core2.Duration.days(1),
6981
7121
  ...cors.exposeHeaders !== void 0 && {
6982
7122
  exposeHeaders: cors.exposeHeaders
6983
7123
  }
@@ -7039,6 +7179,158 @@ var _OpenHiGraphqlService = class _OpenHiGraphqlService extends OpenHiService {
7039
7179
  _OpenHiGraphqlService.SERVICE_TYPE = "graphql-api";
7040
7180
  var OpenHiGraphqlService = _OpenHiGraphqlService;
7041
7181
 
7182
+ // src/services/open-hi-website-service.ts
7183
+ var SSM_PARAM_NAME_FULL_DOMAIN = "WEBSITE_FULL_DOMAIN";
7184
+ var _OpenHiWebsiteService = class _OpenHiWebsiteService extends OpenHiService {
7185
+ /**
7186
+ * Looks up the static-hosting bucket ARN published by the release-branch
7187
+ * deploy of this service.
7188
+ */
7189
+ static bucketArnFromConstruct(scope) {
7190
+ return DiscoverableStringParameter.valueForLookupName(scope, {
7191
+ ssmParamName: StaticHosting.SSM_PARAM_NAME_BUCKET_ARN,
7192
+ serviceType: _OpenHiWebsiteService.SERVICE_TYPE
7193
+ });
7194
+ }
7195
+ /**
7196
+ * Looks up the CloudFront distribution ARN published by the release-branch
7197
+ * deploy of this service.
7198
+ */
7199
+ static distributionArnFromConstruct(scope) {
7200
+ return DiscoverableStringParameter.valueForLookupName(scope, {
7201
+ ssmParamName: StaticHosting.SSM_PARAM_NAME_DISTRIBUTION_ARN,
7202
+ serviceType: _OpenHiWebsiteService.SERVICE_TYPE
7203
+ });
7204
+ }
7205
+ /**
7206
+ * Looks up the CloudFront distribution domain
7207
+ * (e.g. dXXXXX.cloudfront.net) published by the release-branch deploy.
7208
+ */
7209
+ static distributionDomainFromConstruct(scope) {
7210
+ return DiscoverableStringParameter.valueForLookupName(scope, {
7211
+ ssmParamName: StaticHosting.SSM_PARAM_NAME_DISTRIBUTION_DOMAIN,
7212
+ serviceType: _OpenHiWebsiteService.SERVICE_TYPE
7213
+ });
7214
+ }
7215
+ /**
7216
+ * Looks up the CloudFront distribution ID published by the release-branch
7217
+ * deploy of this service.
7218
+ */
7219
+ static distributionIdFromConstruct(scope) {
7220
+ return DiscoverableStringParameter.valueForLookupName(scope, {
7221
+ ssmParamName: StaticHosting.SSM_PARAM_NAME_DISTRIBUTION_ID,
7222
+ serviceType: _OpenHiWebsiteService.SERVICE_TYPE
7223
+ });
7224
+ }
7225
+ /**
7226
+ * Looks up the website's full domain (e.g. www.example.com) published by
7227
+ * the release-branch deploy of this service.
7228
+ */
7229
+ static fullDomainFromConstruct(scope) {
7230
+ return DiscoverableStringParameter.valueForLookupName(scope, {
7231
+ ssmParamName: SSM_PARAM_NAME_FULL_DOMAIN,
7232
+ serviceType: _OpenHiWebsiteService.SERVICE_TYPE
7233
+ });
7234
+ }
7235
+ get serviceType() {
7236
+ return _OpenHiWebsiteService.SERVICE_TYPE;
7237
+ }
7238
+ constructor(ohEnv, props) {
7239
+ super(ohEnv, _OpenHiWebsiteService.SERVICE_TYPE, props);
7240
+ this.props = props;
7241
+ this.validateConfig(props);
7242
+ const hostedZone = this.createHostedZone();
7243
+ this.fullDomain = this.computeFullDomain(hostedZone);
7244
+ const shouldCreateHostingInfra = props.createHostingInfrastructure ?? this.branchName === this.defaultReleaseBranch;
7245
+ if (shouldCreateHostingInfra) {
7246
+ const certificate = this.createCertificate();
7247
+ this.staticHosting = this.createStaticHosting({
7248
+ certificate,
7249
+ hostedZone
7250
+ });
7251
+ this.createFullDomainParameter();
7252
+ }
7253
+ this.staticContent = this.createStaticContent();
7254
+ }
7255
+ /**
7256
+ * Validates that config required for the website stack is present.
7257
+ */
7258
+ validateConfig(props) {
7259
+ const { config } = props;
7260
+ if (!config) {
7261
+ throw new Error("Config is required");
7262
+ }
7263
+ if (!config.zoneName) {
7264
+ throw new Error("Zone name is required");
7265
+ }
7266
+ }
7267
+ /**
7268
+ * Looks up the child hosted zone published by the Global service.
7269
+ * Override to customize.
7270
+ */
7271
+ createHostedZone() {
7272
+ return OpenHiGlobalService.childHostedZoneFromConstruct(this, {
7273
+ zoneName: this.config.zoneName
7274
+ });
7275
+ }
7276
+ /**
7277
+ * Returns the wildcard certificate looked up from the Global service.
7278
+ * Override to customize.
7279
+ */
7280
+ createCertificate() {
7281
+ return OpenHiGlobalService.rootWildcardCertificateFromConstruct(this);
7282
+ }
7283
+ /**
7284
+ * Computes the full website domain from `domainPrefix` and the child
7285
+ * zone name.
7286
+ */
7287
+ computeFullDomain(hostedZone) {
7288
+ const prefix = this.props.domainPrefix ?? "www";
7289
+ return [prefix, hostedZone.zoneName].join(".");
7290
+ }
7291
+ /**
7292
+ * Creates the StaticHosting infrastructure (bucket + distribution +
7293
+ * Lambda@Edge + 4 SSM params + DNS).
7294
+ */
7295
+ createStaticHosting(deps) {
7296
+ return new StaticHosting(this, "static-hosting", {
7297
+ serviceType: _OpenHiWebsiteService.SERVICE_TYPE,
7298
+ certificate: deps.certificate,
7299
+ hostedZone: deps.hostedZone,
7300
+ domainNames: [this.fullDomain],
7301
+ description: `OpenHI website (${this.fullDomain})`
7302
+ });
7303
+ }
7304
+ /**
7305
+ * Creates the SSM parameter that publishes the website's full domain.
7306
+ * Look up via {@link OpenHiWebsiteService.fullDomainFromConstruct}.
7307
+ */
7308
+ createFullDomainParameter() {
7309
+ new DiscoverableStringParameter(this, "full-domain-param", {
7310
+ ssmParamName: SSM_PARAM_NAME_FULL_DOMAIN,
7311
+ serviceType: _OpenHiWebsiteService.SERVICE_TYPE,
7312
+ stringValue: this.fullDomain,
7313
+ description: "Full website domain (e.g. www.example.com)"
7314
+ });
7315
+ }
7316
+ /**
7317
+ * Creates the StaticContent uploader. Always created so feature-branch
7318
+ * deploys can publish content to their own sub-domain folder against the
7319
+ * release-branch bucket.
7320
+ */
7321
+ createStaticContent() {
7322
+ const { contentSourceDirectory, contentDestinationDirectory } = this.props;
7323
+ return new StaticContent(this, "static-content", {
7324
+ contentSourceDirectory,
7325
+ contentDestinationDirectory,
7326
+ fullDomain: this.fullDomain,
7327
+ serviceType: _OpenHiWebsiteService.SERVICE_TYPE
7328
+ });
7329
+ }
7330
+ };
7331
+ _OpenHiWebsiteService.SERVICE_TYPE = "website";
7332
+ var OpenHiWebsiteService = _OpenHiWebsiteService;
7333
+
7042
7334
  // src/workflows/control-plane/owning-delete-cascade/events.ts
7043
7335
  var import_workflows5 = __toESM(require_lib2());
7044
7336
  var OWNING_DELETE_CASCADE_CONSUMER_NAME = "owning-delete-cascade";
@@ -7049,11 +7341,11 @@ var OWNING_DELETE_OPS_EVENT_BUS_ENV_VAR = "OWNING_DELETE_OPS_EVENT_BUS_NAME";
7049
7341
  // src/workflows/control-plane/owning-delete-cascade/owning-delete-cascade-lambdas.ts
7050
7342
  var import_node_fs12 = __toESM(require("fs"));
7051
7343
  var import_node_path12 = __toESM(require("path"));
7052
- var import_aws_cdk_lib14 = require("aws-cdk-lib");
7344
+ var import_aws_cdk_lib16 = require("aws-cdk-lib");
7053
7345
  var import_aws_iam8 = require("aws-cdk-lib/aws-iam");
7054
- var import_aws_lambda12 = require("aws-cdk-lib/aws-lambda");
7055
- var import_aws_lambda_nodejs12 = require("aws-cdk-lib/aws-lambda-nodejs");
7056
- var import_constructs19 = require("constructs");
7346
+ var import_aws_lambda13 = require("aws-cdk-lib/aws-lambda");
7347
+ var import_aws_lambda_nodejs13 = require("aws-cdk-lib/aws-lambda-nodejs");
7348
+ var import_constructs20 = require("constructs");
7057
7349
  function resolveHandlerEntry12(dirname, handlerName) {
7058
7350
  const sameDir = import_node_path12.default.join(dirname, handlerName);
7059
7351
  if (import_node_fs12.default.existsSync(sameDir)) {
@@ -7062,18 +7354,18 @@ function resolveHandlerEntry12(dirname, handlerName) {
7062
7354
  const libDir = import_node_path12.default.join(dirname, "..", "..", "..", "..", "lib", handlerName);
7063
7355
  return { entry: libDir, handler: "handler" };
7064
7356
  }
7065
- var OwningDeleteCascadeLambdas = class extends import_constructs19.Construct {
7357
+ var OwningDeleteCascadeLambdas = class extends import_constructs20.Construct {
7066
7358
  constructor(scope, props) {
7067
7359
  super(scope, "owning-delete-cascade-lambdas");
7068
7360
  const listResolved = resolveHandlerEntry12(
7069
7361
  __dirname,
7070
7362
  "list-chunks.handler.js"
7071
7363
  );
7072
- this.listChunks = new import_aws_lambda_nodejs12.NodejsFunction(this, "list-chunks-handler", {
7364
+ this.listChunks = new import_aws_lambda_nodejs13.NodejsFunction(this, "list-chunks-handler", {
7073
7365
  entry: listResolved.entry,
7074
- runtime: import_aws_lambda12.Runtime.NODEJS_LATEST,
7366
+ runtime: import_aws_lambda13.Runtime.NODEJS_LATEST,
7075
7367
  memorySize: 512,
7076
- timeout: import_aws_cdk_lib14.Duration.minutes(1),
7368
+ timeout: import_aws_cdk_lib16.Duration.minutes(1),
7077
7369
  environment: {
7078
7370
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName
7079
7371
  }
@@ -7083,11 +7375,11 @@ var OwningDeleteCascadeLambdas = class extends import_constructs19.Construct {
7083
7375
  __dirname,
7084
7376
  "delete-chunk.handler.js"
7085
7377
  );
7086
- this.deleteChunk = new import_aws_lambda_nodejs12.NodejsFunction(this, "delete-chunk-handler", {
7378
+ this.deleteChunk = new import_aws_lambda_nodejs13.NodejsFunction(this, "delete-chunk-handler", {
7087
7379
  entry: deleteResolved.entry,
7088
- runtime: import_aws_lambda12.Runtime.NODEJS_LATEST,
7380
+ runtime: import_aws_lambda13.Runtime.NODEJS_LATEST,
7089
7381
  memorySize: 512,
7090
- timeout: import_aws_cdk_lib14.Duration.minutes(1),
7382
+ timeout: import_aws_cdk_lib16.Duration.minutes(1),
7091
7383
  environment: {
7092
7384
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName
7093
7385
  }
@@ -7102,11 +7394,11 @@ var OwningDeleteCascadeLambdas = class extends import_constructs19.Construct {
7102
7394
  __dirname,
7103
7395
  "finalize.handler.js"
7104
7396
  );
7105
- this.finalize = new import_aws_lambda_nodejs12.NodejsFunction(this, "finalize-handler", {
7397
+ this.finalize = new import_aws_lambda_nodejs13.NodejsFunction(this, "finalize-handler", {
7106
7398
  entry: finalizeResolved.entry,
7107
- runtime: import_aws_lambda12.Runtime.NODEJS_LATEST,
7399
+ runtime: import_aws_lambda13.Runtime.NODEJS_LATEST,
7108
7400
  memorySize: 512,
7109
- timeout: import_aws_cdk_lib14.Duration.minutes(1),
7401
+ timeout: import_aws_cdk_lib16.Duration.minutes(1),
7110
7402
  environment: {
7111
7403
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName,
7112
7404
  [OWNING_DELETE_OPS_EVENT_BUS_ENV_VAR]: props.opsEventBus.eventBusName
@@ -7124,13 +7416,13 @@ var OwningDeleteCascadeLambdas = class extends import_constructs19.Construct {
7124
7416
  };
7125
7417
 
7126
7418
  // src/workflows/control-plane/owning-delete-cascade/owning-delete-cascade-workflow.ts
7127
- var import_aws_cdk_lib15 = require("aws-cdk-lib");
7419
+ var import_aws_cdk_lib17 = require("aws-cdk-lib");
7128
7420
  var import_aws_events9 = require("aws-cdk-lib/aws-events");
7129
7421
  var import_aws_events_targets5 = require("aws-cdk-lib/aws-events-targets");
7130
7422
  var import_aws_stepfunctions = require("aws-cdk-lib/aws-stepfunctions");
7131
7423
  var import_aws_stepfunctions_tasks = require("aws-cdk-lib/aws-stepfunctions-tasks");
7132
- var import_constructs20 = require("constructs");
7133
- var OwningDeleteCascadeWorkflow = class extends import_constructs20.Construct {
7424
+ var import_constructs21 = require("constructs");
7425
+ var OwningDeleteCascadeWorkflow = class extends import_constructs21.Construct {
7134
7426
  constructor(scope, props) {
7135
7427
  super(scope, "owning-delete-cascade-workflow");
7136
7428
  this.lambdas = new OwningDeleteCascadeLambdas(this, {
@@ -7239,7 +7531,7 @@ var OwningDeleteCascadeWorkflow = class extends import_constructs20.Construct {
7239
7531
  }
7240
7532
  });
7241
7533
  const interPageWait = new import_aws_stepfunctions.Wait(this, "inter-page-wait", {
7242
- time: import_aws_stepfunctions.WaitTime.duration(import_aws_cdk_lib15.Duration.seconds(0))
7534
+ time: import_aws_stepfunctions.WaitTime.duration(import_aws_cdk_lib17.Duration.seconds(0))
7243
7535
  });
7244
7536
  const isExhausted = new import_aws_stepfunctions.Choice(this, "is-exhausted");
7245
7537
  const finalize = new import_aws_stepfunctions_tasks.LambdaInvoke(this, "finalize", {
@@ -7270,7 +7562,7 @@ var OwningDeleteCascadeWorkflow = class extends import_constructs20.Construct {
7270
7562
  // Long timeout because real-world cascades can run minutes when
7271
7563
  // a workspace has thousands of members. The stuck-cascade alarm
7272
7564
  // fires at 15 minutes; the state machine itself does not abort.
7273
- timeout: import_aws_cdk_lib15.Duration.hours(2)
7565
+ timeout: import_aws_cdk_lib17.Duration.hours(2)
7274
7566
  });
7275
7567
  this.rule = new import_aws_events9.Rule(this, "rule", {
7276
7568
  eventBus: props.dataEventBus,
@@ -7281,7 +7573,7 @@ var OwningDeleteCascadeWorkflow = class extends import_constructs20.Construct {
7281
7573
  targets: [
7282
7574
  new import_aws_events_targets5.SfnStateMachine(this.stateMachine, {
7283
7575
  retryAttempts: 2,
7284
- maxEventAge: import_aws_cdk_lib15.Duration.hours(2)
7576
+ maxEventAge: import_aws_cdk_lib17.Duration.hours(2)
7285
7577
  })
7286
7578
  ]
7287
7579
  });
@@ -7299,11 +7591,11 @@ var RENAME_CASCADE_OPS_EVENT_BUS_ENV_VAR = "RENAME_CASCADE_OPS_EVENT_BUS_NAME";
7299
7591
  // src/workflows/control-plane/rename-cascade/rename-cascade-lambdas.ts
7300
7592
  var import_node_fs13 = __toESM(require("fs"));
7301
7593
  var import_node_path13 = __toESM(require("path"));
7302
- var import_aws_cdk_lib16 = require("aws-cdk-lib");
7594
+ var import_aws_cdk_lib18 = require("aws-cdk-lib");
7303
7595
  var import_aws_iam9 = require("aws-cdk-lib/aws-iam");
7304
- var import_aws_lambda13 = require("aws-cdk-lib/aws-lambda");
7305
- var import_aws_lambda_nodejs13 = require("aws-cdk-lib/aws-lambda-nodejs");
7306
- var import_constructs21 = require("constructs");
7596
+ var import_aws_lambda14 = require("aws-cdk-lib/aws-lambda");
7597
+ var import_aws_lambda_nodejs14 = require("aws-cdk-lib/aws-lambda-nodejs");
7598
+ var import_constructs22 = require("constructs");
7307
7599
  function resolveHandlerEntry13(dirname, handlerName) {
7308
7600
  const sameDir = import_node_path13.default.join(dirname, handlerName);
7309
7601
  if (import_node_fs13.default.existsSync(sameDir)) {
@@ -7312,18 +7604,18 @@ function resolveHandlerEntry13(dirname, handlerName) {
7312
7604
  const libDir = import_node_path13.default.join(dirname, "..", "..", "..", "..", "lib", handlerName);
7313
7605
  return { entry: libDir, handler: "handler" };
7314
7606
  }
7315
- var RenameCascadeLambdas = class extends import_constructs21.Construct {
7607
+ var RenameCascadeLambdas = class extends import_constructs22.Construct {
7316
7608
  constructor(scope, props) {
7317
7609
  super(scope, "rename-cascade-lambdas");
7318
7610
  const listResolved = resolveHandlerEntry13(
7319
7611
  __dirname,
7320
7612
  "rename-list-targets.handler.js"
7321
7613
  );
7322
- this.listTargets = new import_aws_lambda_nodejs13.NodejsFunction(this, "list-targets-handler", {
7614
+ this.listTargets = new import_aws_lambda_nodejs14.NodejsFunction(this, "list-targets-handler", {
7323
7615
  entry: listResolved.entry,
7324
- runtime: import_aws_lambda13.Runtime.NODEJS_LATEST,
7616
+ runtime: import_aws_lambda14.Runtime.NODEJS_LATEST,
7325
7617
  memorySize: 512,
7326
- timeout: import_aws_cdk_lib16.Duration.minutes(1),
7618
+ timeout: import_aws_cdk_lib18.Duration.minutes(1),
7327
7619
  environment: {
7328
7620
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName
7329
7621
  }
@@ -7333,11 +7625,11 @@ var RenameCascadeLambdas = class extends import_constructs21.Construct {
7333
7625
  __dirname,
7334
7626
  "rename-rewrite-chunk.handler.js"
7335
7627
  );
7336
- this.rewriteChunk = new import_aws_lambda_nodejs13.NodejsFunction(this, "rewrite-chunk-handler", {
7628
+ this.rewriteChunk = new import_aws_lambda_nodejs14.NodejsFunction(this, "rewrite-chunk-handler", {
7337
7629
  entry: rewriteResolved.entry,
7338
- runtime: import_aws_lambda13.Runtime.NODEJS_LATEST,
7630
+ runtime: import_aws_lambda14.Runtime.NODEJS_LATEST,
7339
7631
  memorySize: 512,
7340
- timeout: import_aws_cdk_lib16.Duration.minutes(1),
7632
+ timeout: import_aws_cdk_lib18.Duration.minutes(1),
7341
7633
  environment: {
7342
7634
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName
7343
7635
  }
@@ -7352,11 +7644,11 @@ var RenameCascadeLambdas = class extends import_constructs21.Construct {
7352
7644
  __dirname,
7353
7645
  "rename-finalize.handler.js"
7354
7646
  );
7355
- this.finalize = new import_aws_lambda_nodejs13.NodejsFunction(this, "finalize-handler", {
7647
+ this.finalize = new import_aws_lambda_nodejs14.NodejsFunction(this, "finalize-handler", {
7356
7648
  entry: finalizeResolved.entry,
7357
- runtime: import_aws_lambda13.Runtime.NODEJS_LATEST,
7649
+ runtime: import_aws_lambda14.Runtime.NODEJS_LATEST,
7358
7650
  memorySize: 512,
7359
- timeout: import_aws_cdk_lib16.Duration.minutes(1),
7651
+ timeout: import_aws_cdk_lib18.Duration.minutes(1),
7360
7652
  environment: {
7361
7653
  [RENAME_CASCADE_OPS_EVENT_BUS_ENV_VAR]: props.opsEventBus.eventBusName
7362
7654
  }
@@ -7372,13 +7664,13 @@ var RenameCascadeLambdas = class extends import_constructs21.Construct {
7372
7664
  };
7373
7665
 
7374
7666
  // src/workflows/control-plane/rename-cascade/rename-cascade-workflow.ts
7375
- var import_aws_cdk_lib17 = require("aws-cdk-lib");
7667
+ var import_aws_cdk_lib19 = require("aws-cdk-lib");
7376
7668
  var import_aws_events10 = require("aws-cdk-lib/aws-events");
7377
7669
  var import_aws_events_targets6 = require("aws-cdk-lib/aws-events-targets");
7378
7670
  var import_aws_stepfunctions2 = require("aws-cdk-lib/aws-stepfunctions");
7379
7671
  var import_aws_stepfunctions_tasks2 = require("aws-cdk-lib/aws-stepfunctions-tasks");
7380
- var import_constructs22 = require("constructs");
7381
- var RenameCascadeWorkflow = class extends import_constructs22.Construct {
7672
+ var import_constructs23 = require("constructs");
7673
+ var RenameCascadeWorkflow = class extends import_constructs23.Construct {
7382
7674
  constructor(scope, props) {
7383
7675
  super(scope, "rename-cascade-workflow");
7384
7676
  this.lambdas = new RenameCascadeLambdas(this, {
@@ -7522,7 +7814,7 @@ var RenameCascadeWorkflow = class extends import_constructs22.Construct {
7522
7814
  // Long timeout — large renames may rewrite thousands of rows;
7523
7815
  // the `CascadeSlow` alarm fires at 300s p99 but the state
7524
7816
  // machine itself does not abort.
7525
- timeout: import_aws_cdk_lib17.Duration.hours(2)
7817
+ timeout: import_aws_cdk_lib19.Duration.hours(2)
7526
7818
  });
7527
7819
  this.rule = new import_aws_events10.Rule(this, "rule", {
7528
7820
  eventBus: props.dataEventBus,
@@ -7533,7 +7825,7 @@ var RenameCascadeWorkflow = class extends import_constructs22.Construct {
7533
7825
  targets: [
7534
7826
  new import_aws_events_targets6.SfnStateMachine(this.stateMachine, {
7535
7827
  retryAttempts: 2,
7536
- maxEventAge: import_aws_cdk_lib17.Duration.hours(2)
7828
+ maxEventAge: import_aws_cdk_lib19.Duration.hours(2)
7537
7829
  })
7538
7830
  ]
7539
7831
  });
@@ -7591,6 +7883,7 @@ var RenameCascadeWorkflow = class extends import_constructs22.Construct {
7591
7883
  OpenHiRestApiService,
7592
7884
  OpenHiService,
7593
7885
  OpenHiStage,
7886
+ OpenHiWebsiteService,
7594
7887
  OpsEventBus,
7595
7888
  OwningDeleteCascadeLambdas,
7596
7889
  OwningDeleteCascadeWorkflow,
@@ -7626,11 +7919,13 @@ var RenameCascadeWorkflow = class extends import_constructs22.Construct {
7626
7919
  SEED_SYSTEM_DATA_ACTOR_SYSTEM,
7627
7920
  SEED_SYSTEM_DATA_CONSUMER_NAME,
7628
7921
  SEED_SYSTEM_DATA_CONTROL_BUS_ENV_VAR,
7922
+ SSM_PARAM_NAME_FULL_DOMAIN,
7629
7923
  STATIC_HOSTING_SERVICE_TYPE,
7630
7924
  SeedDemoDataLambda,
7631
7925
  SeedDemoDataWorkflow,
7632
7926
  SeedSystemDataLambda,
7633
7927
  SeedSystemDataWorkflow,
7928
+ StaticContent,
7634
7929
  StaticHosting,
7635
7930
  USER_ONBOARDING_EVENT_SOURCE,
7636
7931
  UserOnboardingWorkflow,