@altostra/core
Version:
Core library for shared types and logic
1 lines • 2.24 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.getExternalResourceUtils=void 0;const Arn_1=require("../../../aws/Arn"),Errors_1=require("../../../common/Errors"),some_1=require("../../../common/Iterable/Operators/some"),ExternalResource_1=require("../../Resources/ExternalResource"),ExternalDataBase_1=require("../../Resources/ExternalResource/ExternalDataBase"),DynamoDbTableIdentifier_1=require("../../Utils/DynamoDbTableIdentifier");function getExternalResourceUtils(e){const r="resource.table"===e.resource.externalResourceType?new DynamoDbTableIdentifier_1.DynamoDbTableIdentifier(e.resource.identifier):void 0;return{supportsIncomingConnections:!0,supportsOutgoingConnections:"resource.table"!==e.resource.externalResourceType||r.hasStreamArn,tableId:r,utilsByType(r){if(r!==ExternalResource_1.externalTypeByResource[e.resource.externalResourceType])throw Errors_1.AltoError.create("Invalid external resource utils key.",{data:{invalidKey:r,resource:e.resource}});return utilsByType[r]},validateConnections(){if("resource.table"===e.resource.externalResourceType&&!r.hasStreamArn&&(0,some_1.some)(e.outgoingConnections))throw Errors_1.AltoError.create({message:'External table cannot trigger a function unless its stream ARN is provided as an identifier.\nTo allow triggers from an external table, use the "Latest stream ARN" from the AWS console page linked below.\nIf the table does not have a stream, you must enable it by clicking on the "Manage Stream" button.\n\nhttps://console.aws.amazon.com/dynamodb/home#tables:selected='+r.tableName,data:{identifier:e.resource.identifier,tableId:Object.assign({},r)}})}}}exports.getExternalResourceUtils=getExternalResourceUtils;const relationUtils={isValidDatabaseArn:e=>(0,ExternalDataBase_1.isValidDatabaseArn)(e),parseRdbArn(e){const{service:r,resource:t}=(0,Arn_1.parseArn)(e),a=t.split(":");if(!(0,ExternalDataBase_1.validateArnParts)(r,a))return;const s=a[ExternalDataBase_1.RdbArnParts.resourceType];if(!(0,ExternalDataBase_1.isValidArnResourceTypePart)(s))throw Errors_1.AltoError.create("Database's arn contains invalid resource type",{data:{arn:e}});return[s,a[ExternalDataBase_1.RdbArnParts.dbName]]}},utilsByType={"external.rdb":relationUtils};