@openhi/constructs 0.0.85 → 0.0.87

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 (34) hide show
  1. package/lib/{chunk-SWSN6GDD.mjs → chunk-CEOAGPYY.mjs} +1 -5
  2. package/lib/chunk-CEOAGPYY.mjs.map +1 -0
  3. package/lib/chunk-X5MHU7DA.mjs +298 -0
  4. package/lib/chunk-X5MHU7DA.mjs.map +1 -0
  5. package/lib/data-store-postgres-replication.handler.d.mts +55 -0
  6. package/lib/data-store-postgres-replication.handler.d.ts +55 -0
  7. package/lib/data-store-postgres-replication.handler.js +448 -0
  8. package/lib/data-store-postgres-replication.handler.js.map +1 -0
  9. package/lib/data-store-postgres-replication.handler.mjs +313 -0
  10. package/lib/data-store-postgres-replication.handler.mjs.map +1 -0
  11. package/lib/firehose-archive-transform.handler.js +0 -4
  12. package/lib/firehose-archive-transform.handler.js.map +1 -1
  13. package/lib/firehose-archive-transform.handler.mjs +5 -290
  14. package/lib/firehose-archive-transform.handler.mjs.map +1 -1
  15. package/lib/index.d.mts +230 -5
  16. package/lib/index.d.ts +231 -6
  17. package/lib/index.js +489 -117
  18. package/lib/index.js.map +1 -1
  19. package/lib/index.mjs +468 -97
  20. package/lib/index.mjs.map +1 -1
  21. package/lib/post-authentication.handler.d.mts +5 -0
  22. package/lib/post-authentication.handler.d.ts +5 -0
  23. package/lib/post-authentication.handler.js +45 -0
  24. package/lib/post-authentication.handler.js.map +1 -0
  25. package/lib/post-authentication.handler.mjs +25 -0
  26. package/lib/post-authentication.handler.mjs.map +1 -0
  27. package/lib/rest-api-lambda.handler.js +636 -153
  28. package/lib/rest-api-lambda.handler.js.map +1 -1
  29. package/lib/rest-api-lambda.handler.mjs +639 -153
  30. package/lib/rest-api-lambda.handler.mjs.map +1 -1
  31. package/package.json +20 -11
  32. package/scripts/generate-operations.js +2 -2
  33. package/scripts/generate-routes.js +1 -1
  34. package/lib/chunk-SWSN6GDD.mjs.map +0 -1
package/lib/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import { Construct, IConstruct } from 'constructs';
3
3
  import { ICertificate, Certificate, CertificateProps } from 'aws-cdk-lib/aws-certificatemanager';
4
4
  import { IHttpApi, HttpApiProps, HttpApi, DomainName } from 'aws-cdk-lib/aws-apigatewayv2';
5
5
  import { IGraphqlApi, GraphqlApi, GraphqlApiProps } from 'aws-cdk-lib/aws-appsync';
6
- import { UserPool, UserPoolProps, UserPoolClient, UserPoolClientProps, UserPoolDomain, UserPoolDomainProps, IUserPool, IUserPoolClient, IUserPoolDomain } from 'aws-cdk-lib/aws-cognito';
6
+ import { UserPoolClient, UserPoolClientProps, IUserPool, UserPool, UserPoolProps, UserPoolDomain, UserPoolDomainProps, IUserPoolClient, IUserPoolDomain } from 'aws-cdk-lib/aws-cognito';
7
7
  import { Key, KeyProps, IKey } from 'aws-cdk-lib/aws-kms';
8
8
  import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';
9
9
  import { AttributeValue } from '@aws-sdk/client-dynamodb';
@@ -14,6 +14,8 @@ import * as kinesisfirehose from 'aws-cdk-lib/aws-kinesisfirehose';
14
14
  import * as s3 from 'aws-cdk-lib/aws-s3';
15
15
  import { IBucket, BucketProps } from 'aws-cdk-lib/aws-s3';
16
16
  import { Table, TableProps, ITable } from 'aws-cdk-lib/aws-dynamodb';
17
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
18
+ import * as rds from 'aws-cdk-lib/aws-rds';
17
19
  import { HostedZone, HostedZoneProps, IHostedZone, HostedZoneAttributes } from 'aws-cdk-lib/aws-route53';
18
20
  import { StringParameterProps, StringParameter } from 'aws-cdk-lib/aws-ssm';
19
21
  import { Distribution, DistributionProps } from 'aws-cdk-lib/aws-cloudfront';
@@ -482,6 +484,47 @@ declare class RootGraphqlApi extends GraphqlApi {
482
484
  constructor(scope: Construct, props?: Omit<RootGraphqlApiProps, "name">);
483
485
  }
484
486
 
487
+ interface CognitoFixtureSeederClientProps extends Partial<Omit<UserPoolClientProps, "userPool" | "generateSecret">> {
488
+ readonly userPool: IUserPool;
489
+ }
490
+ /**
491
+ * Dedicated Cognito app client for the OpenHI fixture-seeder CLI
492
+ * (`@openhi/seed-fixtures`).
493
+ *
494
+ * Why a dedicated client (vs reusing the SPA client):
495
+ * - Tightly scoped: only the seeder consumes tokens issued here, so an
496
+ * audit trail of seeder activity is cleanly separable.
497
+ * - Decoupled from the SPA client's OAuth flows — no risk of breaking
498
+ * web-app sign-in by tweaking auth-flow settings here.
499
+ * - Stage-conditional creation upstream (only provisioned in non-prod
500
+ * environments) means prod stacks never carry a code path that could
501
+ * issue a fixture-seeder token in the first place.
502
+ *
503
+ * Why USER_PASSWORD_AUTH (vs M2M client-credentials):
504
+ * - Cognito's M2M tier has a per-app-client monthly fee plus per-token
505
+ * activity charges. For sporadic non-prod fixture runs the per-client
506
+ * fee dominates the bill, especially if every dev branch spins up
507
+ * its own auth stack.
508
+ * - USER_PASSWORD_AUTH against a service `fixture-seeder` user keeps
509
+ * the cost in MAU territory (free under the 50K MAU tier).
510
+ * - Tradeoff: passwords need rotation and the service user must be
511
+ * provisioned per non-prod environment (manual or scripted post-deploy).
512
+ *
513
+ * No client secret (`generateSecret: false`): USER_PASSWORD_AUTH
514
+ * authenticates with the password directly; a secret would just add
515
+ * another credential to manage without strengthening anything.
516
+ */
517
+ declare class CognitoFixtureSeederClient extends UserPoolClient {
518
+ /**
519
+ * SSM parameter name suffix used to publish this client's ID for
520
+ * cross-stack lookups. Built into a full parameter name via
521
+ * `buildParameterName` with `serviceType` AUTH (since the auth stack
522
+ * owns this resource).
523
+ */
524
+ static readonly SSM_PARAM_NAME = "COGNITO_FIXTURE_SEEDER_CLIENT";
525
+ constructor(scope: Construct, props: CognitoFixtureSeederClientProps);
526
+ }
527
+
485
528
  /**
486
529
  * @see sites/www-docs/content/packages/@openhi/constructs/components/cognito/cognito-user-pool.md
487
530
  */
@@ -526,6 +569,14 @@ declare class CognitoUserPoolKmsKey extends Key {
526
569
  constructor(scope: Construct, props?: KeyProps);
527
570
  }
528
571
 
572
+ /**
573
+ * Lambda used as Cognito Post Authentication trigger.
574
+ */
575
+ declare class PostAuthenticationLambda extends Construct {
576
+ readonly lambda: NodejsFunction;
577
+ constructor(scope: Construct);
578
+ }
579
+
529
580
  /**
530
581
  * Lambda used as Cognito Pre Token Generation trigger.
531
582
  */
@@ -619,13 +670,25 @@ interface DynamoDbDataStoreProps extends Omit<TableProps, "tableName" | "removal
619
670
  readonly removalPolicy?: RemovalPolicy;
620
671
  }
621
672
  /**
622
- * DynamoDB table implementing the single-table design for app data (e.g. FHIR
623
- * resources and configuration).
673
+ * DynamoDB table implementing the single-table design for app data (FHIR
674
+ * resources data plane and platform control plane), per planning ADR-011 and
675
+ * DR-004.
624
676
  *
625
677
  * @see {@link https://github.com/codedrifters/openhi/blob/main/sites/www-docs/content/architecture/dynamodb-single-table-design.md | DynamoDB Single-Table Design}
626
678
  *
627
679
  * Primary key: PK (String), SK (String).
628
- * GSIs: GSI1 (reverse reference), GSI2 (identifier lookup), GSI3 (facility ops), GSI4 (resource type list).
680
+ *
681
+ * GSIs:
682
+ * - **GSI1 — Unified Sharded List** (`GSI1PK`/`GSI1SK`, INCLUDE projection per
683
+ * DR-004). Primary list/lookup index for both data-plane FHIR resources and
684
+ * control-plane entities (User, Tenant, Workspace, Membership, Role,
685
+ * RoleAssignment, Configuration). PK shape:
686
+ * `TID#<tid>#WID#<wid>#RT#<Type>#SHARD#<n>` with 4 shards
687
+ * (`n = hash(id) mod 4`). SK shape per `extractSortKey`: labeled types use
688
+ * `<normalizedLabel>#<id>`; unlabeled use `<ISO-8601 lastUpdated>#<id>`.
689
+ * - **GSI2 — Sub-Lookup** (`GSI2PK`/`GSI2SK`, INCLUDE projection). Resolves
690
+ * `UserEntity` from a Cognito `sub` for the Pre Token Generation Lambda.
691
+ * PK shape: `USER#SUB#<cognitoSub>`. SK shape: `CURRENT`.
629
692
  *
630
693
  * For historical archive to S3, pass `kinesisStream` and `stream` (e.g.
631
694
  * `StreamViewType.NEW_AND_OLD_IMAGES`) on the table props per ADR 2026-03-11-02.
@@ -664,6 +727,111 @@ declare class OpsEventBus extends EventBus {
664
727
  constructor(scope: Construct, props?: EventBusProps);
665
728
  }
666
729
 
730
+ /**
731
+ * SSM parameter names that publish the Postgres replica's coordinates so other
732
+ * stacks (notably the REST API stack) can discover them without a direct CDK
733
+ * cross-stack reference. The schema name is intentionally NOT published — it
734
+ * is a deterministic function of `branchHash` and consumers compute it locally
735
+ * via {@link getPostgresReplicaSchemaName}.
736
+ */
737
+ declare const POSTGRES_REPLICA_CLUSTER_ARN_SSM_NAME = "POSTGRES_REPLICA_CLUSTER_ARN";
738
+ declare const POSTGRES_REPLICA_SECRET_ARN_SSM_NAME = "POSTGRES_REPLICA_SECRET_ARN";
739
+ declare const POSTGRES_REPLICA_DATABASE_NAME_SSM_NAME = "POSTGRES_REPLICA_DATABASE_NAME";
740
+ /**
741
+ * Derive the per-branch Postgres schema name from a branch hash. The `b_`
742
+ * prefix guarantees a leading letter (Postgres identifier rule). Branch hashes
743
+ * are 6 hex chars from {@link OpenHiService.branchHash} so the resulting
744
+ * `b_xxxxxx` is well within the 63-byte identifier limit.
745
+ */
746
+ declare function getPostgresReplicaSchemaName(branchHash: string): string;
747
+ interface DataStorePostgresReplicaProps {
748
+ /**
749
+ * Kinesis stream that receives DynamoDB item-level changes (the same stream
750
+ * that backs {@link DataStoreHistoricalArchive}). The replication Lambda is
751
+ * registered as a parallel consumer.
752
+ */
753
+ readonly kinesisStream: kinesis.IStream;
754
+ /**
755
+ * Removal policy for the cluster, secret, and dependent resources.
756
+ */
757
+ readonly removalPolicy: RemovalPolicy;
758
+ /**
759
+ * Short hash unique to the stack — used in the cluster identifier.
760
+ */
761
+ readonly stackHash: string;
762
+ /**
763
+ * Short hash unique to the branch — used to derive the per-branch schema
764
+ * name (`b_<branchHash>`) inside the Postgres database.
765
+ */
766
+ readonly branchHash: string;
767
+ /**
768
+ * Optional VPC override. If absent, the construct creates a minimal isolated
769
+ * VPC (2 AZs, no NAT gateways) just for the cluster and replication Lambda.
770
+ */
771
+ readonly vpc?: ec2.IVpc;
772
+ /**
773
+ * Optional database name override.
774
+ * @default "openhi"
775
+ */
776
+ readonly databaseName?: string;
777
+ /**
778
+ * Aurora Serverless v2 minimum capacity in ACUs. Defaults to 1 so the
779
+ * writer stays warm — avoids the ~10–20s scale-up wait that a cold
780
+ * (0 ACU) cluster imposes on the next request. Set explicitly to 0 to
781
+ * opt back into scale-to-zero if idle cost becomes the dominant concern.
782
+ */
783
+ readonly minCapacity?: number;
784
+ /**
785
+ * Aurora Serverless v2 maximum capacity in ACUs. Defaults to 2 — adequate
786
+ * for the PoC's replication-only workload.
787
+ */
788
+ readonly maxCapacity?: number;
789
+ }
790
+ /**
791
+ * DynamoDB change stream → Postgres replication tier (ADR 2026-04-17-01,
792
+ * phase 1). Provisions an Aurora Serverless v2 PostgreSQL cluster and a
793
+ * Lambda consumer on the existing change-stream that projects each current
794
+ * FHIR resource into a JSONB `resources` table under a per-branch schema.
795
+ *
796
+ * Phase 1 is replication-only; query routing and SearchParameter-specific
797
+ * indexes are intentionally deferred. Per-branch *clusters* (rather than the
798
+ * shared cluster suggested by the ADR) are an explicit PoC simplification —
799
+ * see the ADR's "Operational notes" section for the long-term direction.
800
+ *
801
+ * @see sites/www-docs/content/architecture/adr/2026-04-17-01-ad-hoc-query-support-fhir-api.md
802
+ */
803
+ declare class DataStorePostgresReplica extends Construct {
804
+ /**
805
+ * Resolve the cluster ARN published by an upstream {@link DataStorePostgresReplica}.
806
+ * Use from any stack that needs to grant `rds-data:ExecuteStatement` against
807
+ * the cluster.
808
+ */
809
+ static clusterArnFromConstruct(scope: Construct): string;
810
+ /**
811
+ * Resolve the credentials secret ARN published by an upstream
812
+ * {@link DataStorePostgresReplica}. Use from any stack that needs to grant
813
+ * `secretsmanager:GetSecretValue` against the secret.
814
+ */
815
+ static secretArnFromConstruct(scope: Construct): string;
816
+ /**
817
+ * Resolve the database name published by an upstream
818
+ * {@link DataStorePostgresReplica}.
819
+ */
820
+ static databaseNameFromConstruct(scope: Construct): string;
821
+ readonly vpc: ec2.IVpc;
822
+ readonly cluster: rds.DatabaseCluster;
823
+ readonly replicationFunction: NodejsFunction;
824
+ readonly databaseName: string;
825
+ readonly schemaName: string;
826
+ constructor(scope: Construct, id: string, props: DataStorePostgresReplicaProps);
827
+ /**
828
+ * Publishes the cluster ARN, secret ARN, and database name as discoverable
829
+ * SSM parameters so the REST API stack (and any future read-side consumer)
830
+ * can wire RDS Data API access without a direct CDK cross-stack reference.
831
+ */
832
+ private publishCoordinatesToSsm;
833
+ }
834
+
667
835
  /**
668
836
  * @see sites/www-docs/content/packages/@openhi/constructs/components/route-53/child-hosted-zone.md
669
837
  */
@@ -842,6 +1010,17 @@ declare class OpenHiAuthService extends OpenHiService {
842
1010
  * Returns an IUserPoolClient by looking up the Auth stack's User Pool Client ID from SSM.
843
1011
  */
844
1012
  static userPoolClientFromConstruct(scope: Construct): IUserPoolClient;
1013
+ /**
1014
+ * Returns the dedicated fixture-seeder IUserPoolClient by looking up
1015
+ * its ID from SSM. Only non-prod auth stacks publish this parameter
1016
+ * (per the conditional in {@link createFixtureSeederClient}); calling
1017
+ * this against a prod-deployed stack will fail at lookup time.
1018
+ *
1019
+ * Consumed by `OpenHiRestApiService` (in non-prod) so the authorizer
1020
+ * accepts tokens issued by this client, and by the seed-fixtures CLI
1021
+ * to drive USER_PASSWORD_AUTH against this client's ID.
1022
+ */
1023
+ static fixtureSeederClientFromConstruct(scope: Construct): IUserPoolClient;
845
1024
  /**
846
1025
  * Returns an IUserPoolDomain by looking up the Auth stack's User Pool Domain from SSM.
847
1026
  */
@@ -855,9 +1034,16 @@ declare class OpenHiAuthService extends OpenHiService {
855
1034
  props: OpenHiAuthServiceProps;
856
1035
  readonly userPoolKmsKey: IKey;
857
1036
  readonly preTokenGenerationLambda: IFunction;
1037
+ readonly postAuthenticationLambda: IFunction;
858
1038
  readonly userPool: IUserPool;
859
1039
  readonly userPoolClient: IUserPoolClient;
860
1040
  readonly userPoolDomain: IUserPoolDomain;
1041
+ /**
1042
+ * Dedicated USER_PASSWORD_AUTH client for the seed-fixtures CLI.
1043
+ * Only created in non-prod environments (see
1044
+ * {@link createFixtureSeederClient}). `undefined` in prod.
1045
+ */
1046
+ readonly fixtureSeederClient?: IUserPoolClient;
861
1047
  constructor(ohEnv: OpenHiEnvironment, props?: OpenHiAuthServiceProps);
862
1048
  /**
863
1049
  * Creates the KMS key for the Cognito User Pool and exports its ARN to SSM.
@@ -870,18 +1056,50 @@ declare class OpenHiAuthService extends OpenHiService {
870
1056
  * openhi_* claims to the access token only; trigger version V2_0 may be required.
871
1057
  */
872
1058
  protected createPreTokenGenerationLambda(): IFunction;
1059
+ /**
1060
+ * Creates the Post Authentication Lambda (Cognito trigger). Calls
1061
+ * AdminUserGlobalSignOut on every sign-in to enforce single-device-per-user
1062
+ * sessions per ADR 2026-03-17-01.
1063
+ */
1064
+ protected createPostAuthenticationLambda(): IFunction;
873
1065
  /**
874
1066
  * Creates the Cognito User Pool and exports its ID to SSM.
875
1067
  * Look up via {@link OpenHiAuthService.userPoolFromConstruct}.
876
1068
  * Override to customize.
877
1069
  */
878
1070
  protected createUserPool(): IUserPool;
1071
+ /**
1072
+ * Grants the Post Authentication Lambda permission to call
1073
+ * `cognito-idp:AdminUserGlobalSignOut`.
1074
+ *
1075
+ * Scoped via `Stack.of(this).formatArn` rather than `userPool.userPoolArn`
1076
+ * because the User Pool registers this Lambda as a Post Authentication
1077
+ * trigger, creating the cycle:
1078
+ * userPool → lambda (trigger ARN) → role policy → userPool ARN.
1079
+ * Using `formatArn` avoids referencing the User Pool resource directly
1080
+ * while still scoping to user pools in this account+region. The Lambda
1081
+ * is invoked only by Cognito with a Cognito-provided `event.userPoolId`,
1082
+ * so the runtime target is constrained by the trigger contract.
1083
+ */
1084
+ protected grantPostAuthenticationPermissions(): void;
879
1085
  /**
880
1086
  * Creates the User Pool Client and exports its ID to SSM (AUTH service type).
881
1087
  * Look up via {@link OpenHiAuthService.userPoolClientFromConstruct}.
882
1088
  * Override to customize.
883
1089
  */
884
1090
  protected createUserPoolClient(): IUserPoolClient;
1091
+ /**
1092
+ * Creates the dedicated USER_PASSWORD_AUTH app client for the
1093
+ * `@openhi/seed-fixtures` CLI, **only** in non-prod environments.
1094
+ * Returns `undefined` when this stack is being deployed to a prod
1095
+ * stage so the prod auth stack carries no fixture-seeder code path.
1096
+ *
1097
+ * Operator post-deploy: create a `fixture-seeder` Cognito user with
1098
+ * a service password (manually via console or scripted with
1099
+ * `aws cognito-idp admin-create-user`); the CLI consumes those creds
1100
+ * via env vars to drive `InitiateAuth`.
1101
+ */
1102
+ protected createFixtureSeederClient(): IUserPoolClient | undefined;
885
1103
  /**
886
1104
  * Creates the User Pool Domain (Cognito hosted UI) and exports domain name to SSM.
887
1105
  * Look up via {@link OpenHiAuthService.userPoolDomainFromConstruct}.
@@ -1078,6 +1296,13 @@ declare class OpenHiDataService extends OpenHiService {
1078
1296
  * notifications for current FHIR resources (ADRs 2026-03-11-02, 2026-03-02-01).
1079
1297
  */
1080
1298
  readonly dataStoreHistoricalArchive: DataStoreHistoricalArchive;
1299
+ /**
1300
+ * Postgres replication tier (ADR 2026-04-17-01, phase 1). A second consumer
1301
+ * on the change stream that projects current FHIR resources into a JSONB
1302
+ * `resources` table on Aurora Serverless v2. Phase 1 is replication-only;
1303
+ * the read path is not wired up yet.
1304
+ */
1305
+ readonly dataStorePostgresReplica: DataStorePostgresReplica;
1081
1306
  constructor(ohEnv: OpenHiEnvironment, props?: OpenHiDataServiceProps);
1082
1307
  /**
1083
1308
  * Creates the data event bus.
@@ -1118,5 +1343,5 @@ declare class OpenHiGraphqlService extends OpenHiService {
1118
1343
  protected createRootGraphqlApi(): RootGraphqlApi;
1119
1344
  }
1120
1345
 
1121
- export { ChildHostedZone, CognitoUserPool, CognitoUserPoolClient, CognitoUserPoolDomain, CognitoUserPoolKmsKey, DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES, DATA_STORE_CHANGE_DETAIL_TYPE, DATA_STORE_CHANGE_EVENT_SOURCE, DataEventBus, DataStoreHistoricalArchive, DiscoverableStringParameter, DynamoDbDataStore, OpenHiApp, OpenHiAuthService, OpenHiDataService, OpenHiEnvironment, OpenHiGlobalService, OpenHiGraphqlService, OpenHiRestApiService, OpenHiService, OpenHiStage, OpsEventBus, PreTokenGenerationLambda, REST_API_BASE_URL_SSM_NAME, RootGraphqlApi, RootHostedZone, RootHttpApi, RootWildcardCertificate, STATIC_HOSTING_SERVICE_TYPE, StaticHosting, buildFhirCurrentResourceChangeDetail, getDynamoDbDataStoreTableName };
1122
- export type { BuildParameterNameProps, ChildHostedZoneProps, DataStoreHistoricalArchiveProps, DiscoverableStringParameterProps, DynamoDbDataStoreProps, FhirCurrentResourceChangeDetail, OpenHiAppProps, OpenHiAuthServiceProps, OpenHiDataServiceProps, OpenHiEnvironmentProps, OpenHiGlobalServiceProps, OpenHiGraphqlServiceProps, OpenHiRestApiServiceProps, OpenHiServiceProps, OpenHiServiceType, OpenHiStageProps, RootGraphqlApiProps, RootHttpApiProps, StaticHostingProps };
1346
+ export { ChildHostedZone, CognitoFixtureSeederClient, CognitoUserPool, CognitoUserPoolClient, CognitoUserPoolDomain, CognitoUserPoolKmsKey, DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES, DATA_STORE_CHANGE_DETAIL_TYPE, DATA_STORE_CHANGE_EVENT_SOURCE, DataEventBus, DataStoreHistoricalArchive, DataStorePostgresReplica, DiscoverableStringParameter, DynamoDbDataStore, OpenHiApp, OpenHiAuthService, OpenHiDataService, OpenHiEnvironment, OpenHiGlobalService, OpenHiGraphqlService, OpenHiRestApiService, OpenHiService, OpenHiStage, OpsEventBus, POSTGRES_REPLICA_CLUSTER_ARN_SSM_NAME, POSTGRES_REPLICA_DATABASE_NAME_SSM_NAME, POSTGRES_REPLICA_SECRET_ARN_SSM_NAME, PostAuthenticationLambda, PreTokenGenerationLambda, REST_API_BASE_URL_SSM_NAME, RootGraphqlApi, RootHostedZone, RootHttpApi, RootWildcardCertificate, STATIC_HOSTING_SERVICE_TYPE, StaticHosting, buildFhirCurrentResourceChangeDetail, getDynamoDbDataStoreTableName, getPostgresReplicaSchemaName };
1347
+ export type { BuildParameterNameProps, ChildHostedZoneProps, CognitoFixtureSeederClientProps, DataStoreHistoricalArchiveProps, DataStorePostgresReplicaProps, DiscoverableStringParameterProps, DynamoDbDataStoreProps, FhirCurrentResourceChangeDetail, OpenHiAppProps, OpenHiAuthServiceProps, OpenHiDataServiceProps, OpenHiEnvironmentProps, OpenHiGlobalServiceProps, OpenHiGraphqlServiceProps, OpenHiRestApiServiceProps, OpenHiServiceProps, OpenHiServiceType, OpenHiStageProps, RootGraphqlApiProps, RootHttpApiProps, StaticHostingProps };