@altostra/core
Version:
Core library for shared types and logic
1 lines • 4.64 kB
JavaScript
"use strict";var _DynamoDbTableIdentifier_value,_DynamoDbTableIdentifier_identifierType,_DynamoDbTableIdentifier_tableName,__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(e,t,r,a,i){if("m"===a)throw new TypeError("Private method is not writable");if("a"===a&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===a?i.call(e,r):i?i.value=r:t.set(e,r),r},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(e,t,r,a){if("a"===r&&!a)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?a:"a"===r?a.call(e):a?a.value:t.get(e)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.tableArnFromStreamArn=exports.tableNameFromArn=exports.isTableArn=exports.isStreamArn=exports.DynamoDbTableIdentifier=void 0;const Arn_1=require("../../aws/CustomTypes/Arn"),NonEmptyString_1=require("../../common/CustomTypes/NonEmptyString"),Errors_1=require("../../common/Errors");class DynamoDbTableIdentifier{constructor(e){_DynamoDbTableIdentifier_value.set(this,void 0),_DynamoDbTableIdentifier_identifierType.set(this,void 0),_DynamoDbTableIdentifier_tableName.set(this,void 0),__classPrivateFieldSet(this,_DynamoDbTableIdentifier_value,e,"f");try{(0,Arn_1.isArn)(e)?isStreamArn(e)?(__classPrivateFieldSet(this,_DynamoDbTableIdentifier_identifierType,"stream-arn","f"),__classPrivateFieldSet(this,_DynamoDbTableIdentifier_tableName,tableNameFromArn(e),"f"),this.tableArn=tableArnFromStreamArn(e),this.streamArn=e,this.hasStreamArn=!0,this.hasTableArn=!0):(__classPrivateFieldSet(this,_DynamoDbTableIdentifier_identifierType,"table-arn","f"),__classPrivateFieldSet(this,_DynamoDbTableIdentifier_tableName,tableNameFromArn(e),"f"),this.tableArn=e,this.streamArn=void 0,this.hasStreamArn=!1,this.hasTableArn=!0):(__classPrivateFieldSet(this,_DynamoDbTableIdentifier_identifierType,"table-name","f"),__classPrivateFieldSet(this,_DynamoDbTableIdentifier_tableName,e,"f"),this.tableArn=void 0,this.streamArn=void 0,this.isValid=!0,this.hasStreamArn=!1,this.hasTableArn=!1),this.isValid=!0}catch(t){console.debug(`Table ARN validity failed for [${e}]`,t),this.isValid=!1,__classPrivateFieldSet(this,_DynamoDbTableIdentifier_identifierType,void 0,"f"),__classPrivateFieldSet(this,_DynamoDbTableIdentifier_tableName,void 0,"f"),this.tableArn=void 0,this.streamArn=void 0,this.hasStreamArn=!1,this.hasTableArn=!1}}get identifierType(){if(!this.isValid)throw Errors_1.AltoError.create("External table identifier is invalid table or stream ARN",{data:{tableIdentifier:__classPrivateFieldGet(this,_DynamoDbTableIdentifier_value,"f")}});return __classPrivateFieldGet(this,_DynamoDbTableIdentifier_identifierType,"f")}get tableName(){if(!this.isValid)throw Errors_1.AltoError.create("External table identifier is invalid table or stream ARN",{data:{tableIdentifier:__classPrivateFieldGet(this,_DynamoDbTableIdentifier_value,"f")}});return __classPrivateFieldGet(this,_DynamoDbTableIdentifier_tableName,"f")}get originalId(){return __classPrivateFieldGet(this,_DynamoDbTableIdentifier_value,"f")}valueOf(){return this.originalId}getGenericTableArn(){return this.hasTableArn?this.tableArn:(0,Arn_1.arn)("arn:${AWS::Partition}:dynamodb:${AWS::Region}:${AWS::AccountId}:table/"+this.tableName)}}exports.DynamoDbTableIdentifier=DynamoDbTableIdentifier,_DynamoDbTableIdentifier_value=new WeakMap,_DynamoDbTableIdentifier_identifierType=new WeakMap,_DynamoDbTableIdentifier_tableName=new WeakMap;const STREAM_ARN_POSTFIX_MATCH_INDEX=2,streamArnRX=/\/stream\/[^/]+$/;function isStreamArn(e){return streamArnRX.test(e)}exports.isStreamArn=isStreamArn;const tableOrStreamArnRX=/^arn:aws:dynamodb:[^:]+:[^:]+:table\/([^/]+)(\/stream\/[^/]+)?$/;function isTableArn(e){const t=tableOrStreamArnRX.exec(e);return!!t&&void 0===t[2]}function tableNameFromArn(e){const t=tableOrStreamArnRX.exec(e);if(!t)throw Errors_1.AltoError.create("The specified Arn is not a table Arn",{data:{arn:e}});return(0,NonEmptyString_1.nonEmptyString)(t[1])}function tableArnFromStreamArn(e){const t=tableOrStreamArnRX.exec(e),r=null==t?void 0:t[2];if(void 0===r)throw Errors_1.AltoError.create("The specified Arn is not a stream Arn",{data:{arn:e}});return(0,Arn_1.arn)(e.substr(0,e.length-r.length))}exports.isTableArn=isTableArn,exports.tableNameFromArn=tableNameFromArn,exports.tableArnFromStreamArn=tableArnFromStreamArn;