@openhi/constructs 0.0.150 → 0.0.152

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 (39) hide show
  1. package/lib/{chunk-AWYZJFPL.mjs → chunk-CFJDATDK.mjs} +8 -1
  2. package/lib/chunk-CFJDATDK.mjs.map +1 -0
  3. package/lib/{chunk-I7IIPV5X.mjs → chunk-KR2Y2CVQ.mjs} +10 -4
  4. package/lib/chunk-KR2Y2CVQ.mjs.map +1 -0
  5. package/lib/{chunk-WGA43MMY.mjs → chunk-SXYY5WHG.mjs} +194 -71
  6. package/lib/chunk-SXYY5WHG.mjs.map +1 -0
  7. package/lib/{chunk-CEOAGPYY.mjs → chunk-ZXPA6W3G.mjs} +1 -3
  8. package/lib/chunk-ZXPA6W3G.mjs.map +1 -0
  9. package/lib/data-store-postgres-replication.handler.js +687 -0
  10. package/lib/data-store-postgres-replication.handler.js.map +1 -1
  11. package/lib/data-store-postgres-replication.handler.mjs +3 -2
  12. package/lib/data-store-postgres-replication.handler.mjs.map +1 -1
  13. package/lib/{events-CMG8xanm.d.ts → events-DTgo2dcW.d.mts} +2 -14
  14. package/lib/{events-CMG8xanm.d.mts → events-DTgo2dcW.d.ts} +2 -14
  15. package/lib/firehose-archive-transform.handler.js +688 -2
  16. package/lib/firehose-archive-transform.handler.js.map +1 -1
  17. package/lib/firehose-archive-transform.handler.mjs +3 -2
  18. package/lib/index.d.mts +62 -8
  19. package/lib/index.d.ts +62 -20
  20. package/lib/index.js +53 -22
  21. package/lib/index.js.map +1 -1
  22. package/lib/index.mjs +36 -7
  23. package/lib/index.mjs.map +1 -1
  24. package/lib/provision-default-workspace.handler.js +6 -0
  25. package/lib/provision-default-workspace.handler.js.map +1 -1
  26. package/lib/provision-default-workspace.handler.mjs +1 -1
  27. package/lib/rest-api-lambda.handler.js +6 -0
  28. package/lib/rest-api-lambda.handler.js.map +1 -1
  29. package/lib/rest-api-lambda.handler.mjs +1 -1
  30. package/lib/seed-demo-data.handler.d.mts +14 -1
  31. package/lib/seed-demo-data.handler.d.ts +14 -1
  32. package/lib/seed-demo-data.handler.js +199 -68
  33. package/lib/seed-demo-data.handler.js.map +1 -1
  34. package/lib/seed-demo-data.handler.mjs +2 -2
  35. package/package.json +5 -5
  36. package/lib/chunk-AWYZJFPL.mjs.map +0 -1
  37. package/lib/chunk-CEOAGPYY.mjs.map +0 -1
  38. package/lib/chunk-I7IIPV5X.mjs.map +0 -1
  39. package/lib/chunk-WGA43MMY.mjs.map +0 -1
package/lib/index.js CHANGED
@@ -785,7 +785,6 @@ __export(src_exports, {
785
785
  ControlPlaneRenameV1: () => import_workflows6.ControlPlaneRenameV1,
786
786
  DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES: () => DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES,
787
787
  DATA_STORE_CHANGE_DETAIL_TYPE: () => DATA_STORE_CHANGE_DETAIL_TYPE,
788
- DATA_STORE_CHANGE_EVENT_SOURCE: () => DATA_STORE_CHANGE_EVENT_SOURCE,
789
788
  DEFAULT_PREVIEW_EXPIRATION_DAYS: () => DEFAULT_PREVIEW_EXPIRATION_DAYS,
790
789
  DEMO_DATA_PLANE_FIXTURES: () => DEMO_DATA_PLANE_FIXTURES,
791
790
  DEMO_PERIOD: () => DEMO_PERIOD,
@@ -1643,7 +1642,6 @@ function dynamodbImageToPlain(image) {
1643
1642
  }
1644
1643
 
1645
1644
  // src/components/dynamodb/data-store-change-events.ts
1646
- var DATA_STORE_CHANGE_EVENT_SOURCE = "openhi.data.store";
1647
1645
  var DATA_STORE_CHANGE_DETAIL_TYPE = "FhirCurrentResourceChanged";
1648
1646
  var DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES = 250 * 1024;
1649
1647
  var EXCLUDED_CHANGE_DETAIL_KEYS = /* @__PURE__ */ new Set([
@@ -3103,11 +3101,15 @@ var OpenHiGlobalService = _OpenHiGlobalService;
3103
3101
  // src/workflows/control-plane/seed-demo-data/events.ts
3104
3102
  var import_types = require("@openhi/types");
3105
3103
  var import_workflows2 = __toESM(require_lib2());
3104
+
3105
+ // src/data/operations/control/membership-constraints/platform-scope-tenant-id.ts
3106
+ var PLATFORM_SCOPE_TENANT_ID = "platform";
3107
+
3108
+ // src/workflows/control-plane/seed-demo-data/events.ts
3106
3109
  var SEED_DEMO_DATA_CONSUMER_NAME = "seed-demo-data";
3107
3110
  var DEMO_URN_SYSTEM = "urn:openhi:demo";
3108
3111
  var OPENHI_RESOURCE_URN_SYSTEM = "http://openhi.org/";
3109
3112
  var DEMO_PERIOD = { start: "2026-01-01T00:00:00Z" };
3110
- var PLATFORM_SCOPE_TENANT_ID = "platform";
3111
3113
  var PLACEHOLDER_TENANT_ID = "placeholder-tenant-id";
3112
3114
  var PLACEHOLDER_WORKSPACE_ID = "placeholder-workspace-id";
3113
3115
  var DEV_USERS = [
@@ -6524,7 +6526,7 @@ var SeedDemoDataLambda = class extends import_constructs13.Construct {
6524
6526
  this.lambda.addToRolePolicy(
6525
6527
  new import_aws_iam3.PolicyStatement({
6526
6528
  effect: import_aws_iam3.Effect.ALLOW,
6527
- actions: ["dynamodb:PutItem", "dynamodb:UpdateItem"],
6529
+ actions: ["dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:Query"],
6528
6530
  resources: [props.dataStoreTable.tableArn]
6529
6531
  })
6530
6532
  );
@@ -6786,6 +6788,7 @@ var OpenHiDataService = _OpenHiDataService;
6786
6788
 
6787
6789
  // src/services/open-hi-website-service.ts
6788
6790
  var import_config6 = __toESM(require_lib());
6791
+ var import_aws_cdk_lib15 = require("aws-cdk-lib");
6789
6792
  var import_aws_s32 = require("aws-cdk-lib/aws-s3");
6790
6793
 
6791
6794
  // src/services/open-hi-rest-api-service.ts
@@ -7362,6 +7365,7 @@ var _OpenHiWebsiteService = class _OpenHiWebsiteService extends OpenHiService {
7362
7365
  const isReleaseBranch = this.branchName === this.defaultReleaseBranch;
7363
7366
  const hostedZone = this.createHostedZone();
7364
7367
  this.fullDomain = this.computeFullDomain(hostedZone);
7368
+ this.createAdminConsoleEndpointOutput();
7365
7369
  const shouldCreateHostingInfra = props.createHostingInfrastructure ?? isReleaseBranch;
7366
7370
  if (shouldCreateHostingInfra) {
7367
7371
  const certificate = this.createCertificate();
@@ -7501,6 +7505,25 @@ var _OpenHiWebsiteService = class _OpenHiWebsiteService extends OpenHiService {
7501
7505
  description: "Full website domain (e.g. www.example.com)"
7502
7506
  });
7503
7507
  }
7508
+ /**
7509
+ * Adds a CloudFormation `AdminConsoleEndpoint` output exposing the
7510
+ * admin-console invocation URL (`https://<fullDomain>`) on every
7511
+ * deploy of this stack — release-branch and per-PR alike. The
7512
+ * configulator `aws-deploy-workflow` filters CFN outputs by the
7513
+ * `Endpoint$` logical-id suffix to surface them in the GitHub
7514
+ * Actions run summary and sticky PR comment, so the logical id is
7515
+ * pinned via {@link CfnOutput.overrideLogicalId} to keep the
7516
+ * literal key stable across synths.
7517
+ */
7518
+ createAdminConsoleEndpointOutput() {
7519
+ const output = new import_aws_cdk_lib15.CfnOutput(this, "admin-console-endpoint-output", {
7520
+ value: `https://${this.fullDomain}`,
7521
+ description: "Admin console endpoint for this deploy (https://<fullDomain>). Surfaced by the deploy workflow's sticky PR comment and job summary."
7522
+ });
7523
+ output.overrideLogicalId(
7524
+ _OpenHiWebsiteService.ADMIN_CONSOLE_ENDPOINT_OUTPUT_NAME
7525
+ );
7526
+ }
7504
7527
  /**
7505
7528
  * Creates the StaticContent uploader. Receives the resolved static-hosting
7506
7529
  * bucket from the constructor — on the release-branch deploy this is the
@@ -7567,6 +7590,15 @@ _OpenHiWebsiteService.SERVICE_TYPE = "website";
7567
7590
  * `www-<childZonePrefix>.<zone>`.
7568
7591
  */
7569
7592
  _OpenHiWebsiteService.DEFAULT_DOMAIN_PREFIX = "www";
7593
+ /**
7594
+ * CloudFormation logical key for the admin-console endpoint `CfnOutput`.
7595
+ * The configulator deploy workflow filters outputs whose logical id
7596
+ * matches the `Endpoint$` regex to surface them in the GitHub Actions
7597
+ * run summary and sticky PR comment, so the suffix must be `Endpoint`.
7598
+ * The logical id is pinned via {@link CfnOutput.overrideLogicalId} so
7599
+ * it does not pick up a synth-time hash suffix.
7600
+ */
7601
+ _OpenHiWebsiteService.ADMIN_CONSOLE_ENDPOINT_OUTPUT_NAME = "AdminConsoleEndpoint";
7570
7602
  var OpenHiWebsiteService = _OpenHiWebsiteService;
7571
7603
 
7572
7604
  // src/workflows/control-plane/user-onboarding/events.ts
@@ -7597,7 +7629,7 @@ var buildProvisionDefaultWorkspaceRequestedDetail = (event) => {
7597
7629
  // src/workflows/control-plane/user-onboarding/provision-default-workspace-lambda.ts
7598
7630
  var import_node_fs11 = __toESM(require("fs"));
7599
7631
  var import_node_path11 = __toESM(require("path"));
7600
- var import_aws_cdk_lib15 = require("aws-cdk-lib");
7632
+ var import_aws_cdk_lib16 = require("aws-cdk-lib");
7601
7633
  var import_aws_events8 = require("aws-cdk-lib/aws-events");
7602
7634
  var import_aws_events_targets4 = require("aws-cdk-lib/aws-events-targets");
7603
7635
  var import_aws_iam6 = require("aws-cdk-lib/aws-iam");
@@ -7644,7 +7676,7 @@ var ProvisionDefaultWorkspaceLambda = class extends import_constructs20.Construc
7644
7676
  targets: [
7645
7677
  new import_aws_events_targets4.LambdaFunction(this.lambda, {
7646
7678
  retryAttempts: 2,
7647
- maxEventAge: import_aws_cdk_lib15.Duration.hours(2)
7679
+ maxEventAge: import_aws_cdk_lib16.Duration.hours(2)
7648
7680
  })
7649
7681
  ]
7650
7682
  });
@@ -8083,7 +8115,7 @@ var OWNING_DELETE_OPS_EVENT_BUS_ENV_VAR = "OWNING_DELETE_OPS_EVENT_BUS_NAME";
8083
8115
  // src/workflows/control-plane/owning-delete-cascade/owning-delete-cascade-lambdas.ts
8084
8116
  var import_node_fs12 = __toESM(require("fs"));
8085
8117
  var import_node_path12 = __toESM(require("path"));
8086
- var import_aws_cdk_lib16 = require("aws-cdk-lib");
8118
+ var import_aws_cdk_lib17 = require("aws-cdk-lib");
8087
8119
  var import_aws_iam8 = require("aws-cdk-lib/aws-iam");
8088
8120
  var import_aws_lambda13 = require("aws-cdk-lib/aws-lambda");
8089
8121
  var import_aws_lambda_nodejs13 = require("aws-cdk-lib/aws-lambda-nodejs");
@@ -8107,7 +8139,7 @@ var OwningDeleteCascadeLambdas = class extends import_constructs22.Construct {
8107
8139
  entry: listResolved.entry,
8108
8140
  runtime: import_aws_lambda13.Runtime.NODEJS_LATEST,
8109
8141
  memorySize: 512,
8110
- timeout: import_aws_cdk_lib16.Duration.minutes(1),
8142
+ timeout: import_aws_cdk_lib17.Duration.minutes(1),
8111
8143
  environment: {
8112
8144
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName
8113
8145
  }
@@ -8121,7 +8153,7 @@ var OwningDeleteCascadeLambdas = class extends import_constructs22.Construct {
8121
8153
  entry: deleteResolved.entry,
8122
8154
  runtime: import_aws_lambda13.Runtime.NODEJS_LATEST,
8123
8155
  memorySize: 512,
8124
- timeout: import_aws_cdk_lib16.Duration.minutes(1),
8156
+ timeout: import_aws_cdk_lib17.Duration.minutes(1),
8125
8157
  environment: {
8126
8158
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName
8127
8159
  }
@@ -8140,7 +8172,7 @@ var OwningDeleteCascadeLambdas = class extends import_constructs22.Construct {
8140
8172
  entry: finalizeResolved.entry,
8141
8173
  runtime: import_aws_lambda13.Runtime.NODEJS_LATEST,
8142
8174
  memorySize: 512,
8143
- timeout: import_aws_cdk_lib16.Duration.minutes(1),
8175
+ timeout: import_aws_cdk_lib17.Duration.minutes(1),
8144
8176
  environment: {
8145
8177
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName,
8146
8178
  [OWNING_DELETE_OPS_EVENT_BUS_ENV_VAR]: props.opsEventBus.eventBusName
@@ -8158,7 +8190,7 @@ var OwningDeleteCascadeLambdas = class extends import_constructs22.Construct {
8158
8190
  };
8159
8191
 
8160
8192
  // src/workflows/control-plane/owning-delete-cascade/owning-delete-cascade-workflow.ts
8161
- var import_aws_cdk_lib17 = require("aws-cdk-lib");
8193
+ var import_aws_cdk_lib18 = require("aws-cdk-lib");
8162
8194
  var import_aws_events9 = require("aws-cdk-lib/aws-events");
8163
8195
  var import_aws_events_targets5 = require("aws-cdk-lib/aws-events-targets");
8164
8196
  var import_aws_stepfunctions = require("aws-cdk-lib/aws-stepfunctions");
@@ -8273,7 +8305,7 @@ var OwningDeleteCascadeWorkflow = class extends import_constructs23.Construct {
8273
8305
  }
8274
8306
  });
8275
8307
  const interPageWait = new import_aws_stepfunctions.Wait(this, "inter-page-wait", {
8276
- time: import_aws_stepfunctions.WaitTime.duration(import_aws_cdk_lib17.Duration.seconds(0))
8308
+ time: import_aws_stepfunctions.WaitTime.duration(import_aws_cdk_lib18.Duration.seconds(0))
8277
8309
  });
8278
8310
  const isExhausted = new import_aws_stepfunctions.Choice(this, "is-exhausted");
8279
8311
  const finalize = new import_aws_stepfunctions_tasks.LambdaInvoke(this, "finalize", {
@@ -8304,7 +8336,7 @@ var OwningDeleteCascadeWorkflow = class extends import_constructs23.Construct {
8304
8336
  // Long timeout because real-world cascades can run minutes when
8305
8337
  // a workspace has thousands of members. The stuck-cascade alarm
8306
8338
  // fires at 15 minutes; the state machine itself does not abort.
8307
- timeout: import_aws_cdk_lib17.Duration.hours(2)
8339
+ timeout: import_aws_cdk_lib18.Duration.hours(2)
8308
8340
  });
8309
8341
  this.rule = new import_aws_events9.Rule(this, "rule", {
8310
8342
  eventBus: props.dataEventBus,
@@ -8315,7 +8347,7 @@ var OwningDeleteCascadeWorkflow = class extends import_constructs23.Construct {
8315
8347
  targets: [
8316
8348
  new import_aws_events_targets5.SfnStateMachine(this.stateMachine, {
8317
8349
  retryAttempts: 2,
8318
- maxEventAge: import_aws_cdk_lib17.Duration.hours(2)
8350
+ maxEventAge: import_aws_cdk_lib18.Duration.hours(2)
8319
8351
  })
8320
8352
  ]
8321
8353
  });
@@ -8333,7 +8365,7 @@ var RENAME_CASCADE_OPS_EVENT_BUS_ENV_VAR = "RENAME_CASCADE_OPS_EVENT_BUS_NAME";
8333
8365
  // src/workflows/control-plane/rename-cascade/rename-cascade-lambdas.ts
8334
8366
  var import_node_fs13 = __toESM(require("fs"));
8335
8367
  var import_node_path13 = __toESM(require("path"));
8336
- var import_aws_cdk_lib18 = require("aws-cdk-lib");
8368
+ var import_aws_cdk_lib19 = require("aws-cdk-lib");
8337
8369
  var import_aws_iam9 = require("aws-cdk-lib/aws-iam");
8338
8370
  var import_aws_lambda14 = require("aws-cdk-lib/aws-lambda");
8339
8371
  var import_aws_lambda_nodejs14 = require("aws-cdk-lib/aws-lambda-nodejs");
@@ -8357,7 +8389,7 @@ var RenameCascadeLambdas = class extends import_constructs24.Construct {
8357
8389
  entry: listResolved.entry,
8358
8390
  runtime: import_aws_lambda14.Runtime.NODEJS_LATEST,
8359
8391
  memorySize: 512,
8360
- timeout: import_aws_cdk_lib18.Duration.minutes(1),
8392
+ timeout: import_aws_cdk_lib19.Duration.minutes(1),
8361
8393
  environment: {
8362
8394
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName
8363
8395
  }
@@ -8371,7 +8403,7 @@ var RenameCascadeLambdas = class extends import_constructs24.Construct {
8371
8403
  entry: rewriteResolved.entry,
8372
8404
  runtime: import_aws_lambda14.Runtime.NODEJS_LATEST,
8373
8405
  memorySize: 512,
8374
- timeout: import_aws_cdk_lib18.Duration.minutes(1),
8406
+ timeout: import_aws_cdk_lib19.Duration.minutes(1),
8375
8407
  environment: {
8376
8408
  DYNAMO_TABLE_NAME: props.dataStoreTable.tableName
8377
8409
  }
@@ -8390,7 +8422,7 @@ var RenameCascadeLambdas = class extends import_constructs24.Construct {
8390
8422
  entry: finalizeResolved.entry,
8391
8423
  runtime: import_aws_lambda14.Runtime.NODEJS_LATEST,
8392
8424
  memorySize: 512,
8393
- timeout: import_aws_cdk_lib18.Duration.minutes(1),
8425
+ timeout: import_aws_cdk_lib19.Duration.minutes(1),
8394
8426
  environment: {
8395
8427
  [RENAME_CASCADE_OPS_EVENT_BUS_ENV_VAR]: props.opsEventBus.eventBusName
8396
8428
  }
@@ -8406,7 +8438,7 @@ var RenameCascadeLambdas = class extends import_constructs24.Construct {
8406
8438
  };
8407
8439
 
8408
8440
  // src/workflows/control-plane/rename-cascade/rename-cascade-workflow.ts
8409
- var import_aws_cdk_lib19 = require("aws-cdk-lib");
8441
+ var import_aws_cdk_lib20 = require("aws-cdk-lib");
8410
8442
  var import_aws_events10 = require("aws-cdk-lib/aws-events");
8411
8443
  var import_aws_events_targets6 = require("aws-cdk-lib/aws-events-targets");
8412
8444
  var import_aws_stepfunctions2 = require("aws-cdk-lib/aws-stepfunctions");
@@ -8556,7 +8588,7 @@ var RenameCascadeWorkflow = class extends import_constructs25.Construct {
8556
8588
  // Long timeout — large renames may rewrite thousands of rows;
8557
8589
  // the `CascadeSlow` alarm fires at 300s p99 but the state
8558
8590
  // machine itself does not abort.
8559
- timeout: import_aws_cdk_lib19.Duration.hours(2)
8591
+ timeout: import_aws_cdk_lib20.Duration.hours(2)
8560
8592
  });
8561
8593
  this.rule = new import_aws_events10.Rule(this, "rule", {
8562
8594
  eventBus: props.dataEventBus,
@@ -8567,7 +8599,7 @@ var RenameCascadeWorkflow = class extends import_constructs25.Construct {
8567
8599
  targets: [
8568
8600
  new import_aws_events_targets6.SfnStateMachine(this.stateMachine, {
8569
8601
  retryAttempts: 2,
8570
- maxEventAge: import_aws_cdk_lib19.Duration.hours(2)
8602
+ maxEventAge: import_aws_cdk_lib20.Duration.hours(2)
8571
8603
  })
8572
8604
  ]
8573
8605
  });
@@ -8594,7 +8626,6 @@ var RenameCascadeWorkflow = class extends import_constructs25.Construct {
8594
8626
  ControlPlaneRenameV1,
8595
8627
  DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES,
8596
8628
  DATA_STORE_CHANGE_DETAIL_TYPE,
8597
- DATA_STORE_CHANGE_EVENT_SOURCE,
8598
8629
  DEFAULT_PREVIEW_EXPIRATION_DAYS,
8599
8630
  DEMO_DATA_PLANE_FIXTURES,
8600
8631
  DEMO_PERIOD,