@openhi/constructs 0.0.160 → 0.0.162
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/{chunk-HQ67J7BP.mjs → chunk-5S6VFBLT.mjs} +12 -70
- package/lib/chunk-5S6VFBLT.mjs.map +1 -0
- package/lib/{chunk-MVQWAIMC.mjs → chunk-6BB4CRSS.mjs} +3 -312
- package/lib/chunk-6BB4CRSS.mjs.map +1 -0
- package/lib/{chunk-WPCBVDFZ.mjs → chunk-76UM2LQ5.mjs} +2 -2
- package/lib/{chunk-QFHYTCVY.mjs → chunk-7TRO2STL.mjs} +7 -7
- package/lib/chunk-BUAYVN3C.mjs +87 -0
- package/lib/chunk-BUAYVN3C.mjs.map +1 -0
- package/lib/{chunk-23PUSHBV.mjs → chunk-D2Y6DDOC.mjs} +2 -2
- package/lib/chunk-DWSWCUZR.mjs +123 -0
- package/lib/chunk-DWSWCUZR.mjs.map +1 -0
- package/lib/{chunk-VZCPGQXA.mjs → chunk-EUIP2U5F.mjs} +69 -1
- package/lib/{chunk-VZCPGQXA.mjs.map → chunk-EUIP2U5F.mjs.map} +1 -1
- package/lib/chunk-GJTPXJKD.mjs +46 -0
- package/lib/chunk-GJTPXJKD.mjs.map +1 -0
- package/lib/chunk-I6LUPJUY.mjs +61 -0
- package/lib/chunk-I6LUPJUY.mjs.map +1 -0
- package/lib/{chunk-KR2Y2CVQ.mjs → chunk-KA3OMP3X.mjs} +2 -2
- package/lib/{chunk-ZM4GDHHC.mjs → chunk-KMEWULMX.mjs} +51 -3
- package/lib/chunk-KMEWULMX.mjs.map +1 -0
- package/lib/chunk-LKKLO66E.mjs +25 -0
- package/lib/chunk-LKKLO66E.mjs.map +1 -0
- package/lib/{chunk-CFJDATDK.mjs → chunk-MLFMW5IF.mjs} +43 -9
- package/lib/chunk-MLFMW5IF.mjs.map +1 -0
- package/lib/chunk-O5VQWB6U.mjs +315 -0
- package/lib/chunk-O5VQWB6U.mjs.map +1 -0
- package/lib/{chunk-7BQHLC7U.mjs → chunk-P3CTZWC2.mjs} +8 -40
- package/lib/chunk-P3CTZWC2.mjs.map +1 -0
- package/lib/{chunk-EFB5OFM7.mjs → chunk-P3NFCKTZ.mjs} +6 -4
- package/lib/{chunk-EFB5OFM7.mjs.map → chunk-P3NFCKTZ.mjs.map} +1 -1
- package/lib/{chunk-M7Y3BOQW.mjs → chunk-Q3MKITPY.mjs} +5 -5
- package/lib/chunk-Q64MOYJ7.mjs +218 -0
- package/lib/chunk-Q64MOYJ7.mjs.map +1 -0
- package/lib/chunk-RQKJNMX5.mjs +89 -0
- package/lib/chunk-RQKJNMX5.mjs.map +1 -0
- package/lib/{chunk-ZWSGM6PZ.mjs → chunk-SD7J3N3C.mjs} +2 -2
- package/lib/{chunk-7RZHFI77.mjs → chunk-VESULYQQ.mjs} +2 -2
- package/lib/{chunk-AOSEKL7U.mjs → chunk-WOTU36P3.mjs} +6 -103
- package/lib/chunk-WOTU36P3.mjs.map +1 -0
- package/lib/{chunk-X5E4YJGZ.mjs → chunk-YPTJJ35S.mjs} +2 -2
- package/lib/counter-apply-operation-DZM3MIDm.d.mts +63 -0
- package/lib/counter-apply-operation-DZM3MIDm.d.ts +63 -0
- package/lib/counter-maintenance.handler.d.mts +38 -0
- package/lib/counter-maintenance.handler.d.ts +38 -0
- package/lib/counter-maintenance.handler.js +2885 -0
- package/lib/counter-maintenance.handler.js.map +1 -0
- package/lib/counter-maintenance.handler.mjs +180 -0
- package/lib/counter-maintenance.handler.mjs.map +1 -0
- package/lib/counter-reconciliation.handler.d.mts +116 -0
- package/lib/counter-reconciliation.handler.d.ts +116 -0
- package/lib/counter-reconciliation.handler.js +3324 -0
- package/lib/counter-reconciliation.handler.js.map +1 -0
- package/lib/counter-reconciliation.handler.mjs +295 -0
- package/lib/counter-reconciliation.handler.mjs.map +1 -0
- package/lib/data-store-postgres-replication.handler.js +50 -2
- package/lib/data-store-postgres-replication.handler.js.map +1 -1
- package/lib/data-store-postgres-replication.handler.mjs +2 -2
- package/lib/delete-chunk.handler.js +118 -2
- package/lib/delete-chunk.handler.js.map +1 -1
- package/lib/delete-chunk.handler.mjs +3 -3
- package/lib/finalize.handler.js +50 -2
- package/lib/finalize.handler.js.map +1 -1
- package/lib/finalize.handler.mjs +4 -4
- package/lib/firehose-archive-transform.handler.js +50 -2
- package/lib/firehose-archive-transform.handler.js.map +1 -1
- package/lib/firehose-archive-transform.handler.mjs +2 -2
- package/lib/index.d.mts +140 -2
- package/lib/index.d.ts +143 -5
- package/lib/index.js +493 -196
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +360 -193
- package/lib/index.mjs.map +1 -1
- package/lib/list-chunks.handler.js +118 -2
- package/lib/list-chunks.handler.js.map +1 -1
- package/lib/list-chunks.handler.mjs +3 -3
- package/lib/platform-deploy-bridge.handler.js +50 -2
- package/lib/platform-deploy-bridge.handler.js.map +1 -1
- package/lib/platform-deploy-bridge.handler.mjs +1 -1
- package/lib/pre-token-generation.handler.js +68 -0
- package/lib/pre-token-generation.handler.js.map +1 -1
- package/lib/pre-token-generation.handler.mjs +9 -5
- package/lib/pre-token-generation.handler.mjs.map +1 -1
- package/lib/provision-default-workspace.handler.js +883 -0
- package/lib/provision-default-workspace.handler.js.map +1 -1
- package/lib/provision-default-workspace.handler.mjs +10 -5
- package/lib/provision-default-workspace.handler.mjs.map +1 -1
- package/lib/rename-finalize.handler.js +50 -2
- package/lib/rename-finalize.handler.js.map +1 -1
- package/lib/rename-finalize.handler.mjs +2 -2
- package/lib/rename-list-targets.handler.js +118 -2
- package/lib/rename-list-targets.handler.js.map +1 -1
- package/lib/rename-list-targets.handler.mjs +11 -9
- package/lib/rename-list-targets.handler.mjs.map +1 -1
- package/lib/rename-rewrite-chunk.handler.js +68 -0
- package/lib/rename-rewrite-chunk.handler.js.map +1 -1
- package/lib/rename-rewrite-chunk.handler.mjs +2 -2
- package/lib/rest-api-lambda.handler.js +1454 -251
- package/lib/rest-api-lambda.handler.js.map +1 -1
- package/lib/rest-api-lambda.handler.mjs +415 -291
- package/lib/rest-api-lambda.handler.mjs.map +1 -1
- package/lib/seed-demo-data.handler.js +205 -8
- package/lib/seed-demo-data.handler.js.map +1 -1
- package/lib/seed-demo-data.handler.mjs +10 -7
- package/lib/seed-system-data.handler.js +118 -2
- package/lib/seed-system-data.handler.js.map +1 -1
- package/lib/seed-system-data.handler.mjs +5 -5
- package/package.json +11 -11
- package/lib/chunk-7BQHLC7U.mjs.map +0 -1
- package/lib/chunk-AOSEKL7U.mjs.map +0 -1
- package/lib/chunk-CFJDATDK.mjs.map +0 -1
- package/lib/chunk-HQ67J7BP.mjs.map +0 -1
- package/lib/chunk-MVQWAIMC.mjs.map +0 -1
- package/lib/chunk-ZM4GDHHC.mjs.map +0 -1
- /package/lib/{chunk-WPCBVDFZ.mjs.map → chunk-76UM2LQ5.mjs.map} +0 -0
- /package/lib/{chunk-QFHYTCVY.mjs.map → chunk-7TRO2STL.mjs.map} +0 -0
- /package/lib/{chunk-23PUSHBV.mjs.map → chunk-D2Y6DDOC.mjs.map} +0 -0
- /package/lib/{chunk-KR2Y2CVQ.mjs.map → chunk-KA3OMP3X.mjs.map} +0 -0
- /package/lib/{chunk-M7Y3BOQW.mjs.map → chunk-Q3MKITPY.mjs.map} +0 -0
- /package/lib/{chunk-ZWSGM6PZ.mjs.map → chunk-SD7J3N3C.mjs.map} +0 -0
- /package/lib/{chunk-7RZHFI77.mjs.map → chunk-VESULYQQ.mjs.map} +0 -0
- /package/lib/{chunk-X5E4YJGZ.mjs.map → chunk-YPTJJ35S.mjs.map} +0 -0
|
@@ -139,7 +139,7 @@ var require_control_plane = __commonJS({
|
|
|
139
139
|
"../workflows/lib/detail-types/control-plane.js"(exports2) {
|
|
140
140
|
"use strict";
|
|
141
141
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
142
|
-
exports2.ControlPlaneRenameFailedV1 = exports2.ControlPlaneRenameCompleteV1 = exports2.ControlPlaneRenameV1 = exports2.RENAMABLE_ENTITY_TYPE = exports2.ControlPlaneOwningDeleteFailedV1 = exports2.ControlPlaneOwningDeleteCompleteV1 = exports2.ControlPlaneOwningDeleteV1 = exports2.OWNING_ENTITY_TYPE = void 0;
|
|
142
|
+
exports2.ControlPlaneWorkspaceDeletedV1 = exports2.ControlPlaneWorkspaceCreatedV1 = exports2.ControlPlaneRoleAssignmentDeletedV1 = exports2.ControlPlaneRoleAssignmentCreatedV1 = exports2.ControlPlaneMembershipDeletedV1 = exports2.ControlPlaneMembershipCreatedV1 = exports2.ControlPlaneRenameFailedV1 = exports2.ControlPlaneRenameCompleteV1 = exports2.ControlPlaneRenameV1 = exports2.RENAMABLE_ENTITY_TYPE = exports2.ControlPlaneOwningDeleteFailedV1 = exports2.ControlPlaneOwningDeleteCompleteV1 = exports2.ControlPlaneOwningDeleteV1 = exports2.OWNING_ENTITY_TYPE = void 0;
|
|
143
143
|
var sources_1 = require_sources();
|
|
144
144
|
var registry_1 = require_registry();
|
|
145
145
|
exports2.OWNING_ENTITY_TYPE = {
|
|
@@ -181,6 +181,36 @@ var require_control_plane = __commonJS({
|
|
|
181
181
|
source: sources_1.OPENHI_OPS_SOURCE,
|
|
182
182
|
dedupRequired: true
|
|
183
183
|
});
|
|
184
|
+
exports2.ControlPlaneMembershipCreatedV1 = (0, registry_1.defineDetailType)({
|
|
185
|
+
detailType: "control-plane.membership-created.v1",
|
|
186
|
+
source: sources_1.OPENHI_CONTROL_SOURCE,
|
|
187
|
+
dedupRequired: true
|
|
188
|
+
});
|
|
189
|
+
exports2.ControlPlaneMembershipDeletedV1 = (0, registry_1.defineDetailType)({
|
|
190
|
+
detailType: "control-plane.membership-deleted.v1",
|
|
191
|
+
source: sources_1.OPENHI_CONTROL_SOURCE,
|
|
192
|
+
dedupRequired: true
|
|
193
|
+
});
|
|
194
|
+
exports2.ControlPlaneRoleAssignmentCreatedV1 = (0, registry_1.defineDetailType)({
|
|
195
|
+
detailType: "control-plane.role-assignment-created.v1",
|
|
196
|
+
source: sources_1.OPENHI_CONTROL_SOURCE,
|
|
197
|
+
dedupRequired: true
|
|
198
|
+
});
|
|
199
|
+
exports2.ControlPlaneRoleAssignmentDeletedV1 = (0, registry_1.defineDetailType)({
|
|
200
|
+
detailType: "control-plane.role-assignment-deleted.v1",
|
|
201
|
+
source: sources_1.OPENHI_CONTROL_SOURCE,
|
|
202
|
+
dedupRequired: true
|
|
203
|
+
});
|
|
204
|
+
exports2.ControlPlaneWorkspaceCreatedV1 = (0, registry_1.defineDetailType)({
|
|
205
|
+
detailType: "control-plane.workspace-created.v1",
|
|
206
|
+
source: sources_1.OPENHI_CONTROL_SOURCE,
|
|
207
|
+
dedupRequired: true
|
|
208
|
+
});
|
|
209
|
+
exports2.ControlPlaneWorkspaceDeletedV1 = (0, registry_1.defineDetailType)({
|
|
210
|
+
detailType: "control-plane.workspace-deleted.v1",
|
|
211
|
+
source: sources_1.OPENHI_CONTROL_SOURCE,
|
|
212
|
+
dedupRequired: true
|
|
213
|
+
});
|
|
184
214
|
}
|
|
185
215
|
});
|
|
186
216
|
|
|
@@ -239,17 +269,17 @@ var require_publisher = __commonJS({
|
|
|
239
269
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
240
270
|
exports2.WorkflowPublishError = void 0;
|
|
241
271
|
exports2.workflowsClient = workflowsClient;
|
|
242
|
-
exports2.publishWorkflowEvent =
|
|
272
|
+
exports2.publishWorkflowEvent = publishWorkflowEvent2;
|
|
243
273
|
var node_crypto_1 = require("crypto");
|
|
244
274
|
var client_eventbridge_1 = require("@aws-sdk/client-eventbridge");
|
|
245
275
|
var envelope_version_1 = require_envelope_version();
|
|
246
276
|
var sources_1 = require_sources();
|
|
247
277
|
function workflowsClient(bridge, options = {}) {
|
|
248
278
|
return {
|
|
249
|
-
publish: (entry, payload, ctx) =>
|
|
279
|
+
publish: (entry, payload, ctx) => publishWorkflowEvent2(bridge, entry, payload, ctx, options)
|
|
250
280
|
};
|
|
251
281
|
}
|
|
252
|
-
async function
|
|
282
|
+
async function publishWorkflowEvent2(bridge, entry, payload, ctx, options = {}) {
|
|
253
283
|
const eventIdGenerator = options.eventIdGenerator ?? (() => (0, node_crypto_1.randomUUID)());
|
|
254
284
|
const correlationIdGenerator = options.correlationIdGenerator ?? (() => (0, node_crypto_1.randomUUID)());
|
|
255
285
|
const now = options.now ?? (() => /* @__PURE__ */ new Date());
|
|
@@ -578,7 +608,7 @@ var require_lib = __commonJS({
|
|
|
578
608
|
"../workflows/lib/index.js"(exports2) {
|
|
579
609
|
"use strict";
|
|
580
610
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
581
|
-
exports2.workflowDedupClient = exports2.recordIfAbsent = exports2.markFailed = exports2.encodeSortKey = exports2.WorkflowDedupTableNameMissingError = exports2.WorkflowDedupInvalidInputError = exports2.WORKFLOW_DEDUP_TABLE_NAME_ENV_VAR = exports2.WORKFLOW_DEDUP_MAX_CONSUMER_NAME_LENGTH = exports2.WORKFLOW_DEDUP_DEFAULT_TTL_SECONDS = exports2.parseWorkflowEvent = exports2.UnsupportedEnvelopeVersionError = exports2.InvalidWorkflowEventError = exports2.workflowsClient = exports2.publishWorkflowEvent = exports2.WorkflowPublishError = exports2.isWellFormedDetailType = exports2.defineDetailType = exports2.RENAMABLE_ENTITY_TYPE = exports2.PlatformSystemDataSeededV1 = exports2.PlatformDeploymentCompletedV1 = exports2.OWNING_ENTITY_TYPE = exports2.InvalidDetailTypeRegistrationError = exports2.ControlPlaneRenameV1 = exports2.ControlPlaneRenameFailedV1 = exports2.ControlPlaneRenameCompleteV1 = exports2.ControlPlaneOwningDeleteV1 = exports2.ControlPlaneOwningDeleteFailedV1 = exports2.ControlPlaneOwningDeleteCompleteV1 = exports2.OPENHI_OPS_SOURCE = exports2.OPENHI_DATA_SOURCE = exports2.OPENHI_CONTROL_SOURCE = exports2.DEFAULT_BUS_NAME_BY_SOURCE = exports2.workflowUserActorFromClaims = exports2.isWorkflowUserActor = exports2.isWorkflowSystemActor = exports2.MissingActorContextError = exports2.isSupportedEnvelopeVersion = exports2.ENVELOPE_VERSION = void 0;
|
|
611
|
+
exports2.workflowDedupClient = exports2.recordIfAbsent = exports2.markFailed = exports2.encodeSortKey = exports2.WorkflowDedupTableNameMissingError = exports2.WorkflowDedupInvalidInputError = exports2.WORKFLOW_DEDUP_TABLE_NAME_ENV_VAR = exports2.WORKFLOW_DEDUP_MAX_CONSUMER_NAME_LENGTH = exports2.WORKFLOW_DEDUP_DEFAULT_TTL_SECONDS = exports2.parseWorkflowEvent = exports2.UnsupportedEnvelopeVersionError = exports2.InvalidWorkflowEventError = exports2.workflowsClient = exports2.publishWorkflowEvent = exports2.WorkflowPublishError = exports2.isWellFormedDetailType = exports2.defineDetailType = exports2.RENAMABLE_ENTITY_TYPE = exports2.PlatformSystemDataSeededV1 = exports2.PlatformDeploymentCompletedV1 = exports2.OWNING_ENTITY_TYPE = exports2.InvalidDetailTypeRegistrationError = exports2.ControlPlaneWorkspaceDeletedV1 = exports2.ControlPlaneWorkspaceCreatedV1 = exports2.ControlPlaneRoleAssignmentDeletedV1 = exports2.ControlPlaneRoleAssignmentCreatedV1 = exports2.ControlPlaneRenameV1 = exports2.ControlPlaneRenameFailedV1 = exports2.ControlPlaneRenameCompleteV1 = exports2.ControlPlaneOwningDeleteV1 = exports2.ControlPlaneOwningDeleteFailedV1 = exports2.ControlPlaneOwningDeleteCompleteV1 = exports2.ControlPlaneMembershipDeletedV1 = exports2.ControlPlaneMembershipCreatedV1 = exports2.OPENHI_OPS_SOURCE = exports2.OPENHI_DATA_SOURCE = exports2.OPENHI_CONTROL_SOURCE = exports2.DEFAULT_BUS_NAME_BY_SOURCE = exports2.workflowUserActorFromClaims = exports2.isWorkflowUserActor = exports2.isWorkflowSystemActor = exports2.MissingActorContextError = exports2.isSupportedEnvelopeVersion = exports2.ENVELOPE_VERSION = void 0;
|
|
582
612
|
var envelope_version_1 = require_envelope_version();
|
|
583
613
|
Object.defineProperty(exports2, "ENVELOPE_VERSION", { enumerable: true, get: function() {
|
|
584
614
|
return envelope_version_1.ENVELOPE_VERSION;
|
|
@@ -613,6 +643,12 @@ var require_lib = __commonJS({
|
|
|
613
643
|
return sources_1.OPENHI_OPS_SOURCE;
|
|
614
644
|
} });
|
|
615
645
|
var detail_types_1 = require_detail_types();
|
|
646
|
+
Object.defineProperty(exports2, "ControlPlaneMembershipCreatedV1", { enumerable: true, get: function() {
|
|
647
|
+
return detail_types_1.ControlPlaneMembershipCreatedV1;
|
|
648
|
+
} });
|
|
649
|
+
Object.defineProperty(exports2, "ControlPlaneMembershipDeletedV1", { enumerable: true, get: function() {
|
|
650
|
+
return detail_types_1.ControlPlaneMembershipDeletedV1;
|
|
651
|
+
} });
|
|
616
652
|
Object.defineProperty(exports2, "ControlPlaneOwningDeleteCompleteV1", { enumerable: true, get: function() {
|
|
617
653
|
return detail_types_1.ControlPlaneOwningDeleteCompleteV1;
|
|
618
654
|
} });
|
|
@@ -631,6 +667,18 @@ var require_lib = __commonJS({
|
|
|
631
667
|
Object.defineProperty(exports2, "ControlPlaneRenameV1", { enumerable: true, get: function() {
|
|
632
668
|
return detail_types_1.ControlPlaneRenameV1;
|
|
633
669
|
} });
|
|
670
|
+
Object.defineProperty(exports2, "ControlPlaneRoleAssignmentCreatedV1", { enumerable: true, get: function() {
|
|
671
|
+
return detail_types_1.ControlPlaneRoleAssignmentCreatedV1;
|
|
672
|
+
} });
|
|
673
|
+
Object.defineProperty(exports2, "ControlPlaneRoleAssignmentDeletedV1", { enumerable: true, get: function() {
|
|
674
|
+
return detail_types_1.ControlPlaneRoleAssignmentDeletedV1;
|
|
675
|
+
} });
|
|
676
|
+
Object.defineProperty(exports2, "ControlPlaneWorkspaceCreatedV1", { enumerable: true, get: function() {
|
|
677
|
+
return detail_types_1.ControlPlaneWorkspaceCreatedV1;
|
|
678
|
+
} });
|
|
679
|
+
Object.defineProperty(exports2, "ControlPlaneWorkspaceDeletedV1", { enumerable: true, get: function() {
|
|
680
|
+
return detail_types_1.ControlPlaneWorkspaceDeletedV1;
|
|
681
|
+
} });
|
|
634
682
|
Object.defineProperty(exports2, "InvalidDetailTypeRegistrationError", { enumerable: true, get: function() {
|
|
635
683
|
return detail_types_1.InvalidDetailTypeRegistrationError;
|
|
636
684
|
} });
|
|
@@ -721,7 +769,7 @@ var import_client_cognito_identity_provider = require("@aws-sdk/client-cognito-i
|
|
|
721
769
|
var import_client_dynamodb2 = require("@aws-sdk/client-dynamodb");
|
|
722
770
|
var import_client_ssm = require("@aws-sdk/client-ssm");
|
|
723
771
|
var import_types12 = require("@openhi/types");
|
|
724
|
-
var
|
|
772
|
+
var import_workflows3 = __toESM(require_lib());
|
|
725
773
|
|
|
726
774
|
// src/workflows/control-plane/seed-demo-data/events.ts
|
|
727
775
|
var import_types = require("@openhi/types");
|
|
@@ -5897,6 +5945,24 @@ var TenantEntity = new import_electrodb11.Entity({
|
|
|
5897
5945
|
type: "string",
|
|
5898
5946
|
required: true
|
|
5899
5947
|
},
|
|
5948
|
+
/**
|
|
5949
|
+
* ADR-028 denormalized counter — number of tenant-scoped Memberships
|
|
5950
|
+
* (users) in this tenant. Maintained by the counter-maintenance
|
|
5951
|
+
* consumer via atomic ADD; absent/0 until first event or reconciliation.
|
|
5952
|
+
*/
|
|
5953
|
+
usersInTenant: {
|
|
5954
|
+
type: "number",
|
|
5955
|
+
required: false
|
|
5956
|
+
},
|
|
5957
|
+
/**
|
|
5958
|
+
* ADR-028 denormalized counter — number of Workspaces in this tenant.
|
|
5959
|
+
* Maintained by the counter-maintenance consumer via atomic ADD;
|
|
5960
|
+
* absent/0 until first event or reconciliation.
|
|
5961
|
+
*/
|
|
5962
|
+
workspacesInTenant: {
|
|
5963
|
+
type: "number",
|
|
5964
|
+
required: false
|
|
5965
|
+
},
|
|
5900
5966
|
gsi1Shard: gsi1ShardAttribute,
|
|
5901
5967
|
/** Derived GSI1 sort key — name-based when extractable; else `<lastUpdated>#<id>`. */
|
|
5902
5968
|
gsi1sk: gsi1skAttribute,
|
|
@@ -6001,6 +6067,26 @@ var UserEntity = new import_electrodb12.Entity({
|
|
|
6001
6067
|
type: "string",
|
|
6002
6068
|
required: true
|
|
6003
6069
|
},
|
|
6070
|
+
/**
|
|
6071
|
+
* ADR-028 denormalized counter — number of tenant-scoped Memberships
|
|
6072
|
+
* (tenants) this user belongs to. Maintained by the
|
|
6073
|
+
* counter-maintenance consumer via atomic ADD; absent/0 until first
|
|
6074
|
+
* event or reconciliation.
|
|
6075
|
+
*/
|
|
6076
|
+
tenantsForUser: {
|
|
6077
|
+
type: "number",
|
|
6078
|
+
required: false
|
|
6079
|
+
},
|
|
6080
|
+
/**
|
|
6081
|
+
* ADR-028 denormalized counter — number of workspace-scoped
|
|
6082
|
+
* Memberships (workspaces) this user belongs to. Maintained by the
|
|
6083
|
+
* counter-maintenance consumer via atomic ADD; absent/0 until first
|
|
6084
|
+
* event or reconciliation.
|
|
6085
|
+
*/
|
|
6086
|
+
workspacesForUser: {
|
|
6087
|
+
type: "number",
|
|
6088
|
+
required: false
|
|
6089
|
+
},
|
|
6004
6090
|
gsi1Shard: gsi1ShardAttribute,
|
|
6005
6091
|
/** Derived GSI1 sort key — name-based when extractable; else `<lastUpdated>#<id>`. */
|
|
6006
6092
|
gsi1sk: gsi1skAttribute,
|
|
@@ -6145,6 +6231,36 @@ var WorkspaceEntity = new import_electrodb13.Entity({
|
|
|
6145
6231
|
type: "string",
|
|
6146
6232
|
required: true
|
|
6147
6233
|
},
|
|
6234
|
+
/**
|
|
6235
|
+
* ADR-028 denormalized counter — number of workspace-scoped
|
|
6236
|
+
* Memberships (users) in this workspace. Maintained by the
|
|
6237
|
+
* counter-maintenance consumer via atomic ADD; absent/0 until first
|
|
6238
|
+
* event or reconciliation.
|
|
6239
|
+
*/
|
|
6240
|
+
usersInWorkspace: {
|
|
6241
|
+
type: "number",
|
|
6242
|
+
required: false
|
|
6243
|
+
},
|
|
6244
|
+
/**
|
|
6245
|
+
* ADR-028 denormalized counter — number of workspace-scoped
|
|
6246
|
+
* RoleAssignments classified as admin-tier in this workspace.
|
|
6247
|
+
* Maintained by the counter-maintenance consumer via atomic ADD;
|
|
6248
|
+
* absent/0 until first event or reconciliation.
|
|
6249
|
+
*/
|
|
6250
|
+
adminUsersInWorkspace: {
|
|
6251
|
+
type: "number",
|
|
6252
|
+
required: false
|
|
6253
|
+
},
|
|
6254
|
+
/**
|
|
6255
|
+
* ADR-028 denormalized counter — number of workspace-scoped
|
|
6256
|
+
* RoleAssignments classified as non-admin in this workspace.
|
|
6257
|
+
* Maintained by the counter-maintenance consumer via atomic ADD;
|
|
6258
|
+
* absent/0 until first event or reconciliation.
|
|
6259
|
+
*/
|
|
6260
|
+
normalUsersInWorkspace: {
|
|
6261
|
+
type: "number",
|
|
6262
|
+
required: false
|
|
6263
|
+
},
|
|
6148
6264
|
gsi1Shard: gsi1ShardAttribute,
|
|
6149
6265
|
/** Derived GSI1 sort key — name-based when extractable; else `<lastUpdated>#<id>`. */
|
|
6150
6266
|
gsi1sk: gsi1skAttribute,
|
|
@@ -6372,6 +6488,63 @@ function buildMembershipWorkspaceProjectionItem(input) {
|
|
|
6372
6488
|
};
|
|
6373
6489
|
}
|
|
6374
6490
|
|
|
6491
|
+
// src/data/operations/control/control-event-publisher.ts
|
|
6492
|
+
var import_client_eventbridge = require("@aws-sdk/client-eventbridge");
|
|
6493
|
+
var import_workflows2 = __toESM(require_lib());
|
|
6494
|
+
var CONTROL_EVENT_BUS_NAME_ENV_VAR = "CONTROL_EVENT_BUS_NAME";
|
|
6495
|
+
var cachedClient;
|
|
6496
|
+
function getClient() {
|
|
6497
|
+
if (!cachedClient) {
|
|
6498
|
+
cachedClient = new import_client_eventbridge.EventBridgeClient({
|
|
6499
|
+
region: process.env.AWS_REGION ?? "us-east-1"
|
|
6500
|
+
});
|
|
6501
|
+
}
|
|
6502
|
+
return cachedClient;
|
|
6503
|
+
}
|
|
6504
|
+
function actorFromContext(context) {
|
|
6505
|
+
return {
|
|
6506
|
+
ohi_tid: context.tenantId,
|
|
6507
|
+
ohi_wid: context.workspaceId,
|
|
6508
|
+
ohi_uid: context.actorId,
|
|
6509
|
+
ohi_uname: context.actorName
|
|
6510
|
+
};
|
|
6511
|
+
}
|
|
6512
|
+
async function publishControlEvent(entry, payload, context) {
|
|
6513
|
+
const busName = process.env[CONTROL_EVENT_BUS_NAME_ENV_VAR];
|
|
6514
|
+
if (!busName) {
|
|
6515
|
+
return;
|
|
6516
|
+
}
|
|
6517
|
+
try {
|
|
6518
|
+
await (0, import_workflows2.publishWorkflowEvent)(
|
|
6519
|
+
getClient(),
|
|
6520
|
+
entry,
|
|
6521
|
+
payload,
|
|
6522
|
+
{ actor: actorFromContext(context) },
|
|
6523
|
+
{ busNameByPlane: { [import_workflows2.OPENHI_CONTROL_SOURCE]: busName } }
|
|
6524
|
+
);
|
|
6525
|
+
} catch (err) {
|
|
6526
|
+
console.error(`control-event publish failed for ${entry.detailType}:`, err);
|
|
6527
|
+
}
|
|
6528
|
+
}
|
|
6529
|
+
async function publishMembershipCreated(context, detail) {
|
|
6530
|
+
await publishControlEvent(import_workflows2.ControlPlaneMembershipCreatedV1, detail, context);
|
|
6531
|
+
}
|
|
6532
|
+
async function publishRoleAssignmentCreated(context, detail) {
|
|
6533
|
+
await publishControlEvent(
|
|
6534
|
+
import_workflows2.ControlPlaneRoleAssignmentCreatedV1,
|
|
6535
|
+
detail,
|
|
6536
|
+
context
|
|
6537
|
+
);
|
|
6538
|
+
}
|
|
6539
|
+
async function publishWorkspaceCreated(context, detail) {
|
|
6540
|
+
await publishControlEvent(import_workflows2.ControlPlaneWorkspaceCreatedV1, detail, context);
|
|
6541
|
+
}
|
|
6542
|
+
function extractRoleLevel(resource) {
|
|
6543
|
+
const code = resource?.code;
|
|
6544
|
+
const first = code?.coding?.[0]?.code;
|
|
6545
|
+
return typeof first === "string" && first.length > 0 ? first : void 0;
|
|
6546
|
+
}
|
|
6547
|
+
|
|
6375
6548
|
// src/data/operations/control/denormalized-display-names.ts
|
|
6376
6549
|
function extractDenormalizedReferenceDisplay(resource, fieldName) {
|
|
6377
6550
|
const field = resource[fieldName];
|
|
@@ -6605,6 +6778,14 @@ async function createMembershipOperation(params) {
|
|
|
6605
6778
|
});
|
|
6606
6779
|
}
|
|
6607
6780
|
await executeMultiWrite({ service, triples });
|
|
6781
|
+
await publishMembershipCreated(context, {
|
|
6782
|
+
membershipId: id,
|
|
6783
|
+
tenantId: context.tenantId,
|
|
6784
|
+
...userIdFromResource !== void 0 && { userId: userIdFromResource },
|
|
6785
|
+
...workspaceIdFromResource !== void 0 && {
|
|
6786
|
+
workspaceId: workspaceIdFromResource
|
|
6787
|
+
}
|
|
6788
|
+
});
|
|
6608
6789
|
return {
|
|
6609
6790
|
id,
|
|
6610
6791
|
resource,
|
|
@@ -6846,6 +7027,18 @@ async function createRoleAssignmentOperation(params) {
|
|
|
6846
7027
|
});
|
|
6847
7028
|
}
|
|
6848
7029
|
await executeMultiWrite({ service, triples });
|
|
7030
|
+
await publishRoleAssignmentCreated(context, {
|
|
7031
|
+
roleAssignmentId: id,
|
|
7032
|
+
tenantId: context.tenantId,
|
|
7033
|
+
...userIdFromResource !== void 0 && { userId: userIdFromResource },
|
|
7034
|
+
...workspaceIdFromResource !== void 0 && {
|
|
7035
|
+
workspaceId: workspaceIdFromResource
|
|
7036
|
+
},
|
|
7037
|
+
...roleIdFromResource !== void 0 && { roleId: roleIdFromResource },
|
|
7038
|
+
...extractRoleLevel(resourceRecord) !== void 0 && {
|
|
7039
|
+
roleLevel: extractRoleLevel(resourceRecord)
|
|
7040
|
+
}
|
|
7041
|
+
});
|
|
6849
7042
|
return {
|
|
6850
7043
|
id,
|
|
6851
7044
|
resource,
|
|
@@ -8057,6 +8250,10 @@ async function createWorkspaceOperation(params) {
|
|
|
8057
8250
|
workspaceName,
|
|
8058
8251
|
tableName
|
|
8059
8252
|
});
|
|
8253
|
+
await publishWorkspaceCreated(context, {
|
|
8254
|
+
workspaceId: id,
|
|
8255
|
+
tenantId
|
|
8256
|
+
});
|
|
8060
8257
|
return { id, resource, meta: { lastUpdated, versionId: vid } };
|
|
8061
8258
|
}
|
|
8062
8259
|
|
|
@@ -8996,7 +9193,7 @@ var seedDemoGraph = async (params) => {
|
|
|
8996
9193
|
}
|
|
8997
9194
|
};
|
|
8998
9195
|
var runSeedDemoData = async (event, deps, devUsers) => {
|
|
8999
|
-
const parsed = (0,
|
|
9196
|
+
const parsed = (0, import_workflows3.parseWorkflowEvent)(event, import_workflows.PlatformSystemDataSeededV1);
|
|
9000
9197
|
const recordResult = await deps.dedupClient.recordIfAbsent({
|
|
9001
9198
|
consumerName: SEED_DEMO_DATA_CONSUMER_NAME,
|
|
9002
9199
|
eventId: parsed.dedupKey.eventId,
|
|
@@ -9167,7 +9364,7 @@ var productionDependencies = () => {
|
|
|
9167
9364
|
const dynamodb = new import_client_dynamodb2.DynamoDBClient({});
|
|
9168
9365
|
const cognito = productionCognitoProvisioner();
|
|
9169
9366
|
return {
|
|
9170
|
-
dedupClient: (0,
|
|
9367
|
+
dedupClient: (0, import_workflows3.workflowDedupClient)(dynamodb),
|
|
9171
9368
|
verifyRoles: verifySystemRolesExist,
|
|
9172
9369
|
seedDemoGraph,
|
|
9173
9370
|
cognito
|