@openhi/constructs 0.0.104 → 0.0.105

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.
Files changed (35) hide show
  1. package/README.md +14 -0
  2. package/lib/chunk-2PM2NGXI.mjs +31 -0
  3. package/lib/chunk-2PM2NGXI.mjs.map +1 -0
  4. package/lib/chunk-36YCDLLA.mjs +1258 -0
  5. package/lib/chunk-36YCDLLA.mjs.map +1 -0
  6. package/lib/chunk-BXEG7IOZ.mjs +108 -0
  7. package/lib/chunk-BXEG7IOZ.mjs.map +1 -0
  8. package/lib/chunk-WNUH2WDZ.mjs +45 -0
  9. package/lib/chunk-WNUH2WDZ.mjs.map +1 -0
  10. package/lib/events-CVA3_eEB.d.mts +23 -0
  11. package/lib/events-CVA3_eEB.d.ts +23 -0
  12. package/lib/index.d.mts +92 -21
  13. package/lib/index.d.ts +112 -22
  14. package/lib/index.js +214 -72
  15. package/lib/index.js.map +1 -1
  16. package/lib/index.mjs +190 -74
  17. package/lib/index.mjs.map +1 -1
  18. package/lib/post-confirmation.handler.js +50 -904
  19. package/lib/post-confirmation.handler.js.map +1 -1
  20. package/lib/post-confirmation.handler.mjs +36 -111
  21. package/lib/post-confirmation.handler.mjs.map +1 -1
  22. package/lib/pre-token-generation.handler.js +62 -27
  23. package/lib/pre-token-generation.handler.js.map +1 -1
  24. package/lib/pre-token-generation.handler.mjs +22 -31
  25. package/lib/pre-token-generation.handler.mjs.map +1 -1
  26. package/lib/provision-default-workspace.handler.d.mts +13 -0
  27. package/lib/provision-default-workspace.handler.d.ts +13 -0
  28. package/lib/{chunk-MLTYFMSE.mjs → provision-default-workspace.handler.js} +346 -26
  29. package/lib/provision-default-workspace.handler.js.map +1 -0
  30. package/lib/provision-default-workspace.handler.mjs +173 -0
  31. package/lib/provision-default-workspace.handler.mjs.map +1 -0
  32. package/lib/rest-api-lambda.handler.mjs +40 -546
  33. package/lib/rest-api-lambda.handler.mjs.map +1 -1
  34. package/package.json +3 -3
  35. package/lib/chunk-MLTYFMSE.mjs.map +0 -1
package/lib/index.js CHANGED
@@ -99,6 +99,7 @@ __export(src_exports, {
99
99
  CognitoUserPoolClient: () => CognitoUserPoolClient,
100
100
  CognitoUserPoolDomain: () => CognitoUserPoolDomain,
101
101
  CognitoUserPoolKmsKey: () => CognitoUserPoolKmsKey,
102
+ ControlEventBus: () => ControlEventBus,
102
103
  DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES: () => DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES,
103
104
  DATA_STORE_CHANGE_DETAIL_TYPE: () => DATA_STORE_CHANGE_DETAIL_TYPE,
104
105
  DATA_STORE_CHANGE_EVENT_SOURCE: () => DATA_STORE_CHANGE_EVENT_SOURCE,
@@ -120,9 +121,11 @@ __export(src_exports, {
120
121
  POSTGRES_REPLICA_CLUSTER_ARN_SSM_NAME: () => POSTGRES_REPLICA_CLUSTER_ARN_SSM_NAME,
121
122
  POSTGRES_REPLICA_DATABASE_NAME_SSM_NAME: () => POSTGRES_REPLICA_DATABASE_NAME_SSM_NAME,
122
123
  POSTGRES_REPLICA_SECRET_ARN_SSM_NAME: () => POSTGRES_REPLICA_SECRET_ARN_SSM_NAME,
124
+ PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE: () => PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE,
123
125
  PostAuthenticationLambda: () => PostAuthenticationLambda,
124
126
  PostConfirmationLambda: () => PostConfirmationLambda,
125
127
  PreTokenGenerationLambda: () => PreTokenGenerationLambda,
128
+ ProvisionDefaultWorkspaceLambda: () => ProvisionDefaultWorkspaceLambda,
126
129
  REST_API_BASE_URL_SSM_NAME: () => REST_API_BASE_URL_SSM_NAME,
127
130
  RootGraphqlApi: () => RootGraphqlApi,
128
131
  RootHostedZone: () => RootHostedZone,
@@ -130,7 +133,10 @@ __export(src_exports, {
130
133
  RootWildcardCertificate: () => RootWildcardCertificate,
131
134
  STATIC_HOSTING_SERVICE_TYPE: () => STATIC_HOSTING_SERVICE_TYPE,
132
135
  StaticHosting: () => StaticHosting,
136
+ USER_ONBOARDING_EVENT_SOURCE: () => USER_ONBOARDING_EVENT_SOURCE,
137
+ UserOnboardingWorkflow: () => UserOnboardingWorkflow,
133
138
  buildFhirCurrentResourceChangeDetail: () => buildFhirCurrentResourceChangeDetail,
139
+ buildProvisionDefaultWorkspaceRequestedDetail: () => buildProvisionDefaultWorkspaceRequestedDetail,
134
140
  getDynamoDbDataStoreTableName: () => getDynamoDbDataStoreTableName,
135
141
  getPostgresReplicaSchemaName: () => getPostgresReplicaSchemaName
136
142
  });
@@ -761,14 +767,13 @@ var import_aws_lambda2 = require("aws-cdk-lib/aws-lambda");
761
767
  var import_aws_lambda_nodejs2 = require("aws-cdk-lib/aws-lambda-nodejs");
762
768
  var import_constructs2 = require("constructs");
763
769
  var HANDLER_NAME2 = "post-confirmation.handler.js";
764
- function resolveHandlerEntry2(dirname) {
770
+ var resolveHandlerEntry2 = (dirname) => {
765
771
  const sameDir = import_node_path2.default.join(dirname, HANDLER_NAME2);
766
772
  if (import_node_fs2.default.existsSync(sameDir)) {
767
773
  return sameDir;
768
774
  }
769
- const fromLib = import_node_path2.default.join(dirname, "..", "..", "..", "lib", HANDLER_NAME2);
770
- return fromLib;
771
- }
775
+ return import_node_path2.default.join(dirname, "..", "..", "..", "lib", HANDLER_NAME2);
776
+ };
772
777
  var PostConfirmationLambda = class extends import_constructs2.Construct {
773
778
  constructor(scope, props) {
774
779
  super(scope, "post-confirmation-lambda");
@@ -777,7 +782,7 @@ var PostConfirmationLambda = class extends import_constructs2.Construct {
777
782
  runtime: import_aws_lambda2.Runtime.NODEJS_LATEST,
778
783
  memorySize: 1024,
779
784
  environment: {
780
- DYNAMO_TABLE_NAME: props.dynamoTableName
785
+ CONTROL_EVENT_BUS_NAME: props.controlEventBusName
781
786
  }
782
787
  });
783
788
  }
@@ -1149,6 +1154,28 @@ var OpsEventBus = class _OpsEventBus extends import_aws_events2.EventBus {
1149
1154
  }
1150
1155
  };
1151
1156
 
1157
+ // src/components/event-bridge/control-event-bus.ts
1158
+ var import_aws_events3 = require("aws-cdk-lib/aws-events");
1159
+ var ControlEventBus = class _ControlEventBus extends import_aws_events3.EventBus {
1160
+ /*****************************************************************************
1161
+ *
1162
+ * Return a name for this EventBus based on the stack environment hash. This
1163
+ * name is common across all stacks since it's using the environment hash in
1164
+ * its name.
1165
+ *
1166
+ ****************************************************************************/
1167
+ static getEventBusName(scope) {
1168
+ const stack = OpenHiService.of(scope);
1169
+ return `controlv1${stack.branchHash}`;
1170
+ }
1171
+ constructor(scope, props) {
1172
+ super(scope, "control-event-bus-v1", {
1173
+ ...props,
1174
+ eventBusName: _ControlEventBus.getEventBusName(scope)
1175
+ });
1176
+ }
1177
+ };
1178
+
1152
1179
  // src/components/postgres/data-store-postgres-replica.ts
1153
1180
  var import_node_fs5 = __toESM(require("fs"));
1154
1181
  var import_node_path5 = __toESM(require("path"));
@@ -1398,7 +1425,7 @@ var StaticHosting = _StaticHosting;
1398
1425
  // src/services/open-hi-auth-service.ts
1399
1426
  var import_config4 = __toESM(require_lib());
1400
1427
  var import_aws_cognito5 = require("aws-cdk-lib/aws-cognito");
1401
- var import_aws_iam = require("aws-cdk-lib/aws-iam");
1428
+ var import_aws_iam2 = require("aws-cdk-lib/aws-iam");
1402
1429
  var import_aws_kms2 = require("aws-cdk-lib/aws-kms");
1403
1430
  var import_core2 = require("aws-cdk-lib/core");
1404
1431
 
@@ -1408,7 +1435,7 @@ var kinesis = __toESM(require("aws-cdk-lib/aws-kinesis"));
1408
1435
 
1409
1436
  // src/services/open-hi-global-service.ts
1410
1437
  var import_aws_certificatemanager2 = require("aws-cdk-lib/aws-certificatemanager");
1411
- var import_aws_events3 = require("aws-cdk-lib/aws-events");
1438
+ var import_aws_events4 = require("aws-cdk-lib/aws-events");
1412
1439
  var import_aws_route532 = require("aws-cdk-lib/aws-route53");
1413
1440
  var import_aws_ssm3 = require("aws-cdk-lib/aws-ssm");
1414
1441
  var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
@@ -1449,7 +1476,7 @@ var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
1449
1476
  * Returns the data event bus by name (deterministic per branch). Use from other stacks to obtain an IEventBus reference.
1450
1477
  */
1451
1478
  static dataEventBusFromConstruct(scope) {
1452
- return import_aws_events3.EventBus.fromEventBusName(
1479
+ return import_aws_events4.EventBus.fromEventBusName(
1453
1480
  scope,
1454
1481
  "data-event-bus",
1455
1482
  DataEventBus.getEventBusName(scope)
@@ -1459,12 +1486,22 @@ var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
1459
1486
  * Returns the ops event bus by name (deterministic per branch). Use from other stacks to obtain an IEventBus reference.
1460
1487
  */
1461
1488
  static opsEventBusFromConstruct(scope) {
1462
- return import_aws_events3.EventBus.fromEventBusName(
1489
+ return import_aws_events4.EventBus.fromEventBusName(
1463
1490
  scope,
1464
1491
  "ops-event-bus",
1465
1492
  OpsEventBus.getEventBusName(scope)
1466
1493
  );
1467
1494
  }
1495
+ /**
1496
+ * Returns the control-plane event bus by name (deterministic per branch). Use from other stacks to obtain an IEventBus reference.
1497
+ */
1498
+ static controlEventBusFromConstruct(scope) {
1499
+ return import_aws_events4.EventBus.fromEventBusName(
1500
+ scope,
1501
+ "control-event-bus",
1502
+ ControlEventBus.getEventBusName(scope)
1503
+ );
1504
+ }
1468
1505
  get serviceType() {
1469
1506
  return _OpenHiGlobalService.SERVICE_TYPE;
1470
1507
  }
@@ -1477,6 +1514,7 @@ var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
1477
1514
  this.rootWildcardCertificate = this.createRootWildcardCertificate();
1478
1515
  this.dataEventBus = this.createDataEventBus();
1479
1516
  this.opsEventBus = this.createOpsEventBus();
1517
+ this.controlEventBus = this.createControlEventBus();
1480
1518
  }
1481
1519
  /**
1482
1520
  * Validates that config required for the Global stack is present.
@@ -1541,6 +1579,13 @@ var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
1541
1579
  createOpsEventBus() {
1542
1580
  return new OpsEventBus(this);
1543
1581
  }
1582
+ /**
1583
+ * Creates the control-plane event bus.
1584
+ * Override to customize.
1585
+ */
1586
+ createControlEventBus() {
1587
+ return new ControlEventBus(this);
1588
+ }
1544
1589
  };
1545
1590
  _OpenHiGlobalService.SERVICE_TYPE = "global";
1546
1591
  var OpenHiGlobalService = _OpenHiGlobalService;
@@ -1607,6 +1652,100 @@ var _OpenHiDataService = class _OpenHiDataService extends OpenHiService {
1607
1652
  _OpenHiDataService.SERVICE_TYPE = "data";
1608
1653
  var OpenHiDataService = _OpenHiDataService;
1609
1654
 
1655
+ // src/workflows/control-plane/user-onboarding/events.ts
1656
+ var USER_ONBOARDING_EVENT_SOURCE = "openhi.control.user-onboarding";
1657
+ var PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE = "ProvisionDefaultWorkspaceRequested";
1658
+ var buildProvisionDefaultWorkspaceRequestedDetail = (event) => {
1659
+ const attrs = event.request?.userAttributes ?? {};
1660
+ const cognitoSub = attrs.sub?.trim();
1661
+ if (!cognitoSub) {
1662
+ return void 0;
1663
+ }
1664
+ const email = attrs.email?.trim();
1665
+ const displayName = email || event.userName || cognitoSub;
1666
+ return {
1667
+ cognitoSub,
1668
+ ...email ? { email } : {},
1669
+ displayName,
1670
+ trigger: {
1671
+ source: "cognito.post-confirmation",
1672
+ triggerSource: event.triggerSource,
1673
+ userPoolId: event.userPoolId,
1674
+ userName: event.userName,
1675
+ clientId: event.callerContext?.clientId
1676
+ }
1677
+ };
1678
+ };
1679
+
1680
+ // src/workflows/control-plane/user-onboarding/provision-default-workspace-lambda.ts
1681
+ var import_node_fs6 = __toESM(require("fs"));
1682
+ var import_node_path6 = __toESM(require("path"));
1683
+ var import_aws_cdk_lib10 = require("aws-cdk-lib");
1684
+ var import_aws_events5 = require("aws-cdk-lib/aws-events");
1685
+ var import_aws_events_targets = require("aws-cdk-lib/aws-events-targets");
1686
+ var import_aws_iam = require("aws-cdk-lib/aws-iam");
1687
+ var import_aws_lambda6 = require("aws-cdk-lib/aws-lambda");
1688
+ var import_aws_lambda_nodejs6 = require("aws-cdk-lib/aws-lambda-nodejs");
1689
+ var import_constructs8 = require("constructs");
1690
+ var HANDLER_NAME6 = "provision-default-workspace.handler.js";
1691
+ function resolveHandlerEntry6(dirname) {
1692
+ const sameDir = import_node_path6.default.join(dirname, HANDLER_NAME6);
1693
+ if (import_node_fs6.default.existsSync(sameDir)) {
1694
+ return sameDir;
1695
+ }
1696
+ return import_node_path6.default.join(dirname, "..", "..", "..", "..", "lib", HANDLER_NAME6);
1697
+ }
1698
+ var ProvisionDefaultWorkspaceLambda = class extends import_constructs8.Construct {
1699
+ constructor(scope, props) {
1700
+ super(scope, "provision-default-workspace-lambda");
1701
+ this.lambda = new import_aws_lambda_nodejs6.NodejsFunction(this, "handler", {
1702
+ entry: resolveHandlerEntry6(__dirname),
1703
+ runtime: import_aws_lambda6.Runtime.NODEJS_LATEST,
1704
+ memorySize: 1024,
1705
+ environment: {
1706
+ DYNAMO_TABLE_NAME: props.dataStoreTable.tableName
1707
+ }
1708
+ });
1709
+ props.dataStoreTable.grant(
1710
+ this.lambda,
1711
+ "dynamodb:PutItem",
1712
+ "dynamodb:UpdateItem"
1713
+ );
1714
+ this.lambda.addToRolePolicy(
1715
+ new import_aws_iam.PolicyStatement({
1716
+ effect: import_aws_iam.Effect.ALLOW,
1717
+ actions: ["dynamodb:Query"],
1718
+ resources: [`${props.dataStoreTable.tableArn}/index/*`]
1719
+ })
1720
+ );
1721
+ this.rule = new import_aws_events5.Rule(this, "rule", {
1722
+ eventBus: props.controlEventBus,
1723
+ eventPattern: {
1724
+ source: [USER_ONBOARDING_EVENT_SOURCE],
1725
+ detailType: [PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE]
1726
+ },
1727
+ targets: [
1728
+ new import_aws_events_targets.LambdaFunction(this.lambda, {
1729
+ retryAttempts: 2,
1730
+ maxEventAge: import_aws_cdk_lib10.Duration.hours(2)
1731
+ })
1732
+ ]
1733
+ });
1734
+ }
1735
+ };
1736
+
1737
+ // src/workflows/control-plane/user-onboarding/user-onboarding-workflow.ts
1738
+ var import_constructs9 = require("constructs");
1739
+ var UserOnboardingWorkflow = class extends import_constructs9.Construct {
1740
+ constructor(scope, props) {
1741
+ super(scope, "user-onboarding-workflow");
1742
+ this.provisionDefaultWorkspace = new ProvisionDefaultWorkspaceLambda(this, {
1743
+ dataStoreTable: props.dataStoreTable,
1744
+ controlEventBus: props.controlEventBus
1745
+ });
1746
+ }
1747
+ };
1748
+
1610
1749
  // src/services/open-hi-auth-service.ts
1611
1750
  var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
1612
1751
  constructor(ohEnv, props = {}) {
@@ -1618,11 +1757,13 @@ var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
1618
1757
  * would collide.
1619
1758
  */
1620
1759
  this._dataStoreTable = null;
1760
+ this._controlEventBus = null;
1621
1761
  this.props = props;
1622
1762
  this.userPoolKmsKey = this.createUserPoolKmsKey();
1623
1763
  this.preTokenGenerationLambda = this.createPreTokenGenerationLambda();
1624
1764
  this.postAuthenticationLambda = this.createPostAuthenticationLambda();
1625
1765
  this.postConfirmationLambda = this.createPostConfirmationLambda();
1766
+ this.userOnboardingWorkflow = this.createUserOnboardingWorkflow();
1626
1767
  this.userPool = this.createUserPool();
1627
1768
  this.grantPreTokenGenerationPermissions();
1628
1769
  this.grantPostAuthenticationPermissions();
@@ -1739,23 +1880,33 @@ var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
1739
1880
  }
1740
1881
  /**
1741
1882
  * Creates the Post Confirmation Lambda (Cognito trigger). On sign-up
1742
- * confirmation, writes the new user's default Tenant, Workspace,
1743
- * Memberships, and `tenant-user` RoleAssignment, plus a User record
1744
- * carrying the Cognito `sub` and current tenant/workspace pointers
1745
- * (ADR 2026-03-17-01 invariants).
1883
+ * confirmation, publishes a control-plane workflow event; provisioning lives
1884
+ * behind EventBridge.
1746
1885
  */
1747
1886
  createPostConfirmationLambda() {
1748
1887
  const construct = new PostConfirmationLambda(this, {
1749
- dynamoTableName: this.dataStoreTable().tableName
1888
+ controlEventBusName: this.controlEventBus().eventBusName
1750
1889
  });
1751
1890
  return construct.lambda;
1752
1891
  }
1892
+ createUserOnboardingWorkflow() {
1893
+ return new UserOnboardingWorkflow(this, {
1894
+ controlEventBus: this.controlEventBus(),
1895
+ dataStoreTable: this.dataStoreTable()
1896
+ });
1897
+ }
1753
1898
  dataStoreTable() {
1754
1899
  if (this._dataStoreTable === null) {
1755
1900
  this._dataStoreTable = OpenHiDataService.dynamoDbDataStoreFromConstruct(this);
1756
1901
  }
1757
1902
  return this._dataStoreTable;
1758
1903
  }
1904
+ controlEventBus() {
1905
+ if (this._controlEventBus === null) {
1906
+ this._controlEventBus = OpenHiGlobalService.controlEventBusFromConstruct(this);
1907
+ }
1908
+ return this._controlEventBus;
1909
+ }
1759
1910
  /**
1760
1911
  * Creates the Cognito User Pool and exports its ID to SSM.
1761
1912
  * Look up via {@link OpenHiAuthService.userPoolFromConstruct}.
@@ -1800,8 +1951,8 @@ var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
1800
1951
  const dynamoActions = ["dynamodb:GetItem", "dynamodb:Query"];
1801
1952
  dataStoreTable.grant(this.preTokenGenerationLambda, ...dynamoActions);
1802
1953
  this.preTokenGenerationLambda.addToRolePolicy(
1803
- new import_aws_iam.PolicyStatement({
1804
- effect: import_aws_iam.Effect.ALLOW,
1954
+ new import_aws_iam2.PolicyStatement({
1955
+ effect: import_aws_iam2.Effect.ALLOW,
1805
1956
  actions: [...dynamoActions],
1806
1957
  resources: [`${dataStoreTable.tableArn}/index/*`]
1807
1958
  })
@@ -1822,7 +1973,7 @@ var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
1822
1973
  */
1823
1974
  grantPostAuthenticationPermissions() {
1824
1975
  this.postAuthenticationLambda.addToRolePolicy(
1825
- new import_aws_iam.PolicyStatement({
1976
+ new import_aws_iam2.PolicyStatement({
1826
1977
  actions: ["cognito-idp:AdminUserGlobalSignOut"],
1827
1978
  resources: [
1828
1979
  import_core2.Stack.of(this).formatArn({
@@ -1835,26 +1986,11 @@ var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
1835
1986
  );
1836
1987
  }
1837
1988
  /**
1838
- * Grants the Post Confirmation Lambda write access to the data store
1839
- * table (and its GSIs) so it can seed the new user's Tenant, Workspace,
1840
- * Memberships, RoleAssignment, and User records on sign-up confirmation.
1989
+ * Grants the Post Confirmation Lambda publish-only access to the
1990
+ * control-plane event bus. Workflow Lambdas own DynamoDB writes.
1841
1991
  */
1842
1992
  grantPostConfirmationPermissions() {
1843
- const dataStoreTable = this.dataStoreTable();
1844
- const dynamoActions = [
1845
- "dynamodb:PutItem",
1846
- "dynamodb:UpdateItem",
1847
- "dynamodb:BatchWriteItem",
1848
- "dynamodb:DescribeTable"
1849
- ];
1850
- dataStoreTable.grant(this.postConfirmationLambda, ...dynamoActions);
1851
- this.postConfirmationLambda.addToRolePolicy(
1852
- new import_aws_iam.PolicyStatement({
1853
- effect: import_aws_iam.Effect.ALLOW,
1854
- actions: [...dynamoActions],
1855
- resources: [`${dataStoreTable.tableArn}/index/*`]
1856
- })
1857
- );
1993
+ this.controlEventBus().grantPutEventsTo(this.postConfirmationLambda);
1858
1994
  }
1859
1995
  /**
1860
1996
  * Creates the User Pool Client and exports its ID to SSM (AUTH service type).
@@ -1925,58 +2061,58 @@ var import_config5 = __toESM(require_lib());
1925
2061
  var import_aws_apigatewayv22 = require("aws-cdk-lib/aws-apigatewayv2");
1926
2062
  var import_aws_apigatewayv2_authorizers = require("aws-cdk-lib/aws-apigatewayv2-authorizers");
1927
2063
  var import_aws_apigatewayv2_integrations = require("aws-cdk-lib/aws-apigatewayv2-integrations");
1928
- var import_aws_iam2 = require("aws-cdk-lib/aws-iam");
2064
+ var import_aws_iam3 = require("aws-cdk-lib/aws-iam");
1929
2065
  var import_aws_route533 = require("aws-cdk-lib/aws-route53");
1930
2066
  var import_aws_route53_targets = require("aws-cdk-lib/aws-route53-targets");
1931
2067
  var import_core3 = require("aws-cdk-lib/core");
1932
2068
 
1933
2069
  // src/data/lambda/cors-options-lambda.ts
1934
- var import_node_fs6 = __toESM(require("fs"));
1935
- var import_node_path6 = __toESM(require("path"));
1936
- var import_aws_lambda6 = require("aws-cdk-lib/aws-lambda");
1937
- var import_aws_lambda_nodejs6 = require("aws-cdk-lib/aws-lambda-nodejs");
1938
- var import_constructs8 = require("constructs");
1939
- var HANDLER_NAME6 = "cors-options-lambda.handler.js";
1940
- function resolveHandlerEntry6(dirname) {
1941
- const sameDir = import_node_path6.default.join(dirname, HANDLER_NAME6);
1942
- if (import_node_fs6.default.existsSync(sameDir)) {
2070
+ var import_node_fs7 = __toESM(require("fs"));
2071
+ var import_node_path7 = __toESM(require("path"));
2072
+ var import_aws_lambda7 = require("aws-cdk-lib/aws-lambda");
2073
+ var import_aws_lambda_nodejs7 = require("aws-cdk-lib/aws-lambda-nodejs");
2074
+ var import_constructs10 = require("constructs");
2075
+ var HANDLER_NAME7 = "cors-options-lambda.handler.js";
2076
+ function resolveHandlerEntry7(dirname) {
2077
+ const sameDir = import_node_path7.default.join(dirname, HANDLER_NAME7);
2078
+ if (import_node_fs7.default.existsSync(sameDir)) {
1943
2079
  return sameDir;
1944
2080
  }
1945
- const fromLib = import_node_path6.default.join(dirname, "..", "..", "..", "lib", HANDLER_NAME6);
2081
+ const fromLib = import_node_path7.default.join(dirname, "..", "..", "..", "lib", HANDLER_NAME7);
1946
2082
  return fromLib;
1947
2083
  }
1948
- var CorsOptionsLambda = class extends import_constructs8.Construct {
2084
+ var CorsOptionsLambda = class extends import_constructs10.Construct {
1949
2085
  constructor(scope, id = "cors-options-lambda") {
1950
2086
  super(scope, id);
1951
- this.lambda = new import_aws_lambda_nodejs6.NodejsFunction(this, "handler", {
1952
- entry: resolveHandlerEntry6(__dirname),
1953
- runtime: import_aws_lambda6.Runtime.NODEJS_LATEST,
2087
+ this.lambda = new import_aws_lambda_nodejs7.NodejsFunction(this, "handler", {
2088
+ entry: resolveHandlerEntry7(__dirname),
2089
+ runtime: import_aws_lambda7.Runtime.NODEJS_LATEST,
1954
2090
  memorySize: 128
1955
2091
  });
1956
2092
  }
1957
2093
  };
1958
2094
 
1959
2095
  // src/data/lambda/rest-api-lambda.ts
1960
- var import_node_fs7 = __toESM(require("fs"));
1961
- var import_node_path7 = __toESM(require("path"));
1962
- var import_aws_lambda7 = require("aws-cdk-lib/aws-lambda");
1963
- var import_aws_lambda_nodejs7 = require("aws-cdk-lib/aws-lambda-nodejs");
1964
- var import_constructs9 = require("constructs");
1965
- var HANDLER_NAME7 = "rest-api-lambda.handler.js";
1966
- function resolveHandlerEntry7(dirname) {
1967
- const sameDir = import_node_path7.default.join(dirname, HANDLER_NAME7);
1968
- if (import_node_fs7.default.existsSync(sameDir)) {
2096
+ var import_node_fs8 = __toESM(require("fs"));
2097
+ var import_node_path8 = __toESM(require("path"));
2098
+ var import_aws_lambda8 = require("aws-cdk-lib/aws-lambda");
2099
+ var import_aws_lambda_nodejs8 = require("aws-cdk-lib/aws-lambda-nodejs");
2100
+ var import_constructs11 = require("constructs");
2101
+ var HANDLER_NAME8 = "rest-api-lambda.handler.js";
2102
+ function resolveHandlerEntry8(dirname) {
2103
+ const sameDir = import_node_path8.default.join(dirname, HANDLER_NAME8);
2104
+ if (import_node_fs8.default.existsSync(sameDir)) {
1969
2105
  return sameDir;
1970
2106
  }
1971
- const fromLib = import_node_path7.default.join(dirname, "..", "..", "..", "lib", HANDLER_NAME7);
2107
+ const fromLib = import_node_path8.default.join(dirname, "..", "..", "..", "lib", HANDLER_NAME8);
1972
2108
  return fromLib;
1973
2109
  }
1974
- var RestApiLambda = class extends import_constructs9.Construct {
2110
+ var RestApiLambda = class extends import_constructs11.Construct {
1975
2111
  constructor(scope, props) {
1976
2112
  super(scope, "rest-api-lambda");
1977
- this.lambda = new import_aws_lambda_nodejs7.NodejsFunction(this, "handler", {
1978
- entry: resolveHandlerEntry7(__dirname),
1979
- runtime: import_aws_lambda7.Runtime.NODEJS_LATEST,
2113
+ this.lambda = new import_aws_lambda_nodejs8.NodejsFunction(this, "handler", {
2114
+ entry: resolveHandlerEntry8(__dirname),
2115
+ runtime: import_aws_lambda8.Runtime.NODEJS_LATEST,
1980
2116
  memorySize: 1024,
1981
2117
  environment: {
1982
2118
  DYNAMO_TABLE_NAME: props.dynamoTableName,
@@ -2118,8 +2254,8 @@ var _OpenHiRestApiService = class _OpenHiRestApiService extends OpenHiService {
2118
2254
  postgresSchema
2119
2255
  });
2120
2256
  lambda.addToRolePolicy(
2121
- new import_aws_iam2.PolicyStatement({
2122
- effect: import_aws_iam2.Effect.ALLOW,
2257
+ new import_aws_iam3.PolicyStatement({
2258
+ effect: import_aws_iam3.Effect.ALLOW,
2123
2259
  actions: [
2124
2260
  "rds-data:ExecuteStatement",
2125
2261
  "rds-data:BatchExecuteStatement"
@@ -2128,8 +2264,8 @@ var _OpenHiRestApiService = class _OpenHiRestApiService extends OpenHiService {
2128
2264
  })
2129
2265
  );
2130
2266
  lambda.addToRolePolicy(
2131
- new import_aws_iam2.PolicyStatement({
2132
- effect: import_aws_iam2.Effect.ALLOW,
2267
+ new import_aws_iam3.PolicyStatement({
2268
+ effect: import_aws_iam3.Effect.ALLOW,
2133
2269
  actions: ["secretsmanager:GetSecretValue"],
2134
2270
  resources: [postgresSecretArn]
2135
2271
  })
@@ -2147,15 +2283,15 @@ var _OpenHiRestApiService = class _OpenHiRestApiService extends OpenHiService {
2147
2283
  ];
2148
2284
  dataStoreTable.grant(lambda, ...dynamoActions);
2149
2285
  lambda.addToRolePolicy(
2150
- new import_aws_iam2.PolicyStatement({
2151
- effect: import_aws_iam2.Effect.ALLOW,
2286
+ new import_aws_iam3.PolicyStatement({
2287
+ effect: import_aws_iam3.Effect.ALLOW,
2152
2288
  actions: [...dynamoActions],
2153
2289
  resources: [`${dataStoreTable.tableArn}/index/*`]
2154
2290
  })
2155
2291
  );
2156
2292
  lambda.addToRolePolicy(
2157
- new import_aws_iam2.PolicyStatement({
2158
- effect: import_aws_iam2.Effect.ALLOW,
2293
+ new import_aws_iam3.PolicyStatement({
2294
+ effect: import_aws_iam3.Effect.ALLOW,
2159
2295
  actions: [
2160
2296
  "ssm:GetParameter",
2161
2297
  "ssm:GetParameters",
@@ -2310,6 +2446,7 @@ var OpenHiGraphqlService = _OpenHiGraphqlService;
2310
2446
  CognitoUserPoolClient,
2311
2447
  CognitoUserPoolDomain,
2312
2448
  CognitoUserPoolKmsKey,
2449
+ ControlEventBus,
2313
2450
  DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES,
2314
2451
  DATA_STORE_CHANGE_DETAIL_TYPE,
2315
2452
  DATA_STORE_CHANGE_EVENT_SOURCE,
@@ -2331,9 +2468,11 @@ var OpenHiGraphqlService = _OpenHiGraphqlService;
2331
2468
  POSTGRES_REPLICA_CLUSTER_ARN_SSM_NAME,
2332
2469
  POSTGRES_REPLICA_DATABASE_NAME_SSM_NAME,
2333
2470
  POSTGRES_REPLICA_SECRET_ARN_SSM_NAME,
2471
+ PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE,
2334
2472
  PostAuthenticationLambda,
2335
2473
  PostConfirmationLambda,
2336
2474
  PreTokenGenerationLambda,
2475
+ ProvisionDefaultWorkspaceLambda,
2337
2476
  REST_API_BASE_URL_SSM_NAME,
2338
2477
  RootGraphqlApi,
2339
2478
  RootHostedZone,
@@ -2341,7 +2480,10 @@ var OpenHiGraphqlService = _OpenHiGraphqlService;
2341
2480
  RootWildcardCertificate,
2342
2481
  STATIC_HOSTING_SERVICE_TYPE,
2343
2482
  StaticHosting,
2483
+ USER_ONBOARDING_EVENT_SOURCE,
2484
+ UserOnboardingWorkflow,
2344
2485
  buildFhirCurrentResourceChangeDetail,
2486
+ buildProvisionDefaultWorkspaceRequestedDetail,
2345
2487
  getDynamoDbDataStoreTableName,
2346
2488
  getPostgresReplicaSchemaName
2347
2489
  });