quidproquo-actionprocessor-awslambda 0.1.7 → 0.1.8

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 (168) hide show
  1. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptActionProcessor.js +1 -1
  2. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptActionProcessor.js.map +1 -1
  3. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js +16 -5
  4. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js.map +1 -1
  5. package/lib/commonjs/getActionProcessor/core/ai/logic/createDriveFileResolver.js +2 -2
  6. package/lib/commonjs/getActionProcessor/core/ai/logic/createDriveFileResolver.js.map +1 -1
  7. package/lib/commonjs/getActionProcessor/core/ai/logic/index.d.ts +1 -0
  8. package/lib/commonjs/getActionProcessor/core/ai/logic/index.js +1 -0
  9. package/lib/commonjs/getActionProcessor/core/ai/logic/index.js.map +1 -1
  10. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinish.js +2 -1
  11. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinish.js.map +1 -1
  12. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.js +2 -1
  13. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.js.map +1 -1
  14. package/lib/commonjs/getActionProcessor/core/ai/logic/prepareAiPromptCall.js +10 -12
  15. package/lib/commonjs/getActionProcessor/core/ai/logic/prepareAiPromptCall.js.map +1 -1
  16. package/lib/commonjs/getActionProcessor/core/ai/logic/toAiStreamFinishReason.d.ts +2 -0
  17. package/lib/commonjs/getActionProcessor/core/ai/logic/toAiStreamFinishReason.js +10 -0
  18. package/lib/commonjs/getActionProcessor/core/ai/logic/toAiStreamFinishReason.js.map +1 -0
  19. package/lib/commonjs/getActionProcessor/core/ai/logic/toCacheableMessages.js +9 -9
  20. package/lib/commonjs/getActionProcessor/core/ai/logic/toCacheableMessages.js.map +1 -1
  21. package/lib/commonjs/getActionProcessor/core/ai/logic/toSdkMessages.d.ts +1 -1
  22. package/lib/commonjs/getActionProcessor/core/ai/logic/toSdkMessages.js +1 -1
  23. package/lib/commonjs/getActionProcessor/core/ai/logic/toSdkMessages.js.map +1 -1
  24. package/lib/commonjs/getActionProcessor/core/event/sqs/queue/getEventMatchStoryActionProcessor.d.ts +2 -2
  25. package/lib/commonjs/getActionProcessor/core/event/sqs/queue/getEventMatchStoryActionProcessor.js +10 -6
  26. package/lib/commonjs/getActionProcessor/core/event/sqs/queue/getEventMatchStoryActionProcessor.js.map +1 -1
  27. package/lib/commonjs/getActionProcessor/core/file/getFileDeleteActionProcessor.js +4 -2
  28. package/lib/commonjs/getActionProcessor/core/file/getFileDeleteActionProcessor.js.map +1 -1
  29. package/lib/commonjs/getActionProcessor/core/file/getFileExistsActionProcessor.js +4 -2
  30. package/lib/commonjs/getActionProcessor/core/file/getFileExistsActionProcessor.js.map +1 -1
  31. package/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.js +7 -3
  32. package/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.js.map +1 -1
  33. package/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +7 -3
  34. package/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js.map +1 -1
  35. package/lib/commonjs/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.js +4 -2
  36. package/lib/commonjs/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.js.map +1 -1
  37. package/lib/commonjs/getActionProcessor/core/file/getFileListDirectoryActionProcessor.js +6 -4
  38. package/lib/commonjs/getActionProcessor/core/file/getFileListDirectoryActionProcessor.js.map +1 -1
  39. package/lib/commonjs/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.js +4 -2
  40. package/lib/commonjs/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.js.map +1 -1
  41. package/lib/commonjs/getActionProcessor/core/file/getFileReadObjectJsonActionProcessor.js +7 -2
  42. package/lib/commonjs/getActionProcessor/core/file/getFileReadObjectJsonActionProcessor.js.map +1 -1
  43. package/lib/commonjs/getActionProcessor/core/file/getFileReadTextContentsActionProcessor.js +6 -2
  44. package/lib/commonjs/getActionProcessor/core/file/getFileReadTextContentsActionProcessor.js.map +1 -1
  45. package/lib/commonjs/getActionProcessor/core/file/getFileStreamOpenActionProcessor.js +3 -2
  46. package/lib/commonjs/getActionProcessor/core/file/getFileStreamOpenActionProcessor.js.map +1 -1
  47. package/lib/commonjs/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.js +3 -2
  48. package/lib/commonjs/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.js.map +1 -1
  49. package/lib/commonjs/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.js +3 -2
  50. package/lib/commonjs/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.js.map +1 -1
  51. package/lib/commonjs/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.js +3 -2
  52. package/lib/commonjs/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.js.map +1 -1
  53. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.js +11 -9
  54. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.js.map +1 -1
  55. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.js +7 -3
  56. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.js.map +1 -1
  57. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.js +8 -3
  58. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.js.map +1 -1
  59. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.js +9 -5
  60. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.js.map +1 -1
  61. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.js +9 -2
  62. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.js.map +1 -1
  63. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.js +10 -8
  64. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.js.map +1 -1
  65. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreUpsertActionProcessor.js +13 -11
  66. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreUpsertActionProcessor.js.map +1 -1
  67. package/lib/commonjs/getActionProcessor/core/keyValueStore/index.js +2 -1
  68. package/lib/commonjs/getActionProcessor/core/keyValueStore/index.js.map +1 -1
  69. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.js +2 -2
  70. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.js.map +1 -1
  71. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectorySetAccessTokenActionProcessor.js +11 -1
  72. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectorySetAccessTokenActionProcessor.js.map +1 -1
  73. package/lib/commonjs/lambdaHandlers/getSqsEvent_queueEvent.js +3 -3
  74. package/lib/commonjs/lambdaHandlers/getSqsEvent_queueEvent.js.map +1 -1
  75. package/lib/commonjs/logic/cognito/requestEmailVerificationCode.d.ts +2 -1
  76. package/lib/commonjs/logic/cognito/requestEmailVerificationCode.js +8 -1
  77. package/lib/commonjs/logic/cognito/requestEmailVerificationCode.js.map +1 -1
  78. package/lib/commonjs/logic/dynamo/getAllItems.d.ts +2 -1
  79. package/lib/commonjs/logic/dynamo/getAllItems.js +7 -2
  80. package/lib/commonjs/logic/dynamo/getAllItems.js.map +1 -1
  81. package/lib/commonjs/logic/dynamo/getItem.d.ts +2 -1
  82. package/lib/commonjs/logic/dynamo/getItem.js +8 -5
  83. package/lib/commonjs/logic/dynamo/getItem.js.map +1 -1
  84. package/lib/esm/getActionProcessor/core/ai/getAiPromptActionProcessor.js +1 -1
  85. package/lib/esm/getActionProcessor/core/ai/getAiPromptActionProcessor.js.map +1 -1
  86. package/lib/esm/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js +16 -6
  87. package/lib/esm/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js.map +1 -1
  88. package/lib/esm/getActionProcessor/core/ai/logic/createDriveFileResolver.js +2 -2
  89. package/lib/esm/getActionProcessor/core/ai/logic/createDriveFileResolver.js.map +1 -1
  90. package/lib/esm/getActionProcessor/core/ai/logic/index.d.ts +1 -0
  91. package/lib/esm/getActionProcessor/core/ai/logic/index.js +1 -0
  92. package/lib/esm/getActionProcessor/core/ai/logic/index.js.map +1 -1
  93. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinish.js +2 -1
  94. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinish.js.map +1 -1
  95. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.js +2 -1
  96. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.js.map +1 -1
  97. package/lib/esm/getActionProcessor/core/ai/logic/prepareAiPromptCall.js +13 -8
  98. package/lib/esm/getActionProcessor/core/ai/logic/prepareAiPromptCall.js.map +1 -1
  99. package/lib/esm/getActionProcessor/core/ai/logic/toAiStreamFinishReason.d.ts +2 -0
  100. package/lib/esm/getActionProcessor/core/ai/logic/toAiStreamFinishReason.js +6 -0
  101. package/lib/esm/getActionProcessor/core/ai/logic/toAiStreamFinishReason.js.map +1 -0
  102. package/lib/esm/getActionProcessor/core/ai/logic/toCacheableMessages.js +15 -15
  103. package/lib/esm/getActionProcessor/core/ai/logic/toCacheableMessages.js.map +1 -1
  104. package/lib/esm/getActionProcessor/core/ai/logic/toSdkMessages.d.ts +1 -1
  105. package/lib/esm/getActionProcessor/core/ai/logic/toSdkMessages.js +1 -1
  106. package/lib/esm/getActionProcessor/core/ai/logic/toSdkMessages.js.map +1 -1
  107. package/lib/esm/getActionProcessor/core/event/sqs/queue/getEventMatchStoryActionProcessor.d.ts +2 -2
  108. package/lib/esm/getActionProcessor/core/event/sqs/queue/getEventMatchStoryActionProcessor.js +10 -6
  109. package/lib/esm/getActionProcessor/core/event/sqs/queue/getEventMatchStoryActionProcessor.js.map +1 -1
  110. package/lib/esm/getActionProcessor/core/file/getFileDeleteActionProcessor.js +5 -3
  111. package/lib/esm/getActionProcessor/core/file/getFileDeleteActionProcessor.js.map +1 -1
  112. package/lib/esm/getActionProcessor/core/file/getFileExistsActionProcessor.js +5 -3
  113. package/lib/esm/getActionProcessor/core/file/getFileExistsActionProcessor.js.map +1 -1
  114. package/lib/esm/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.js +9 -5
  115. package/lib/esm/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.js.map +1 -1
  116. package/lib/esm/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +9 -5
  117. package/lib/esm/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js.map +1 -1
  118. package/lib/esm/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.js +5 -3
  119. package/lib/esm/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.js.map +1 -1
  120. package/lib/esm/getActionProcessor/core/file/getFileListDirectoryActionProcessor.js +7 -4
  121. package/lib/esm/getActionProcessor/core/file/getFileListDirectoryActionProcessor.js.map +1 -1
  122. package/lib/esm/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.js +5 -3
  123. package/lib/esm/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.js.map +1 -1
  124. package/lib/esm/getActionProcessor/core/file/getFileReadObjectJsonActionProcessor.js +8 -3
  125. package/lib/esm/getActionProcessor/core/file/getFileReadObjectJsonActionProcessor.js.map +1 -1
  126. package/lib/esm/getActionProcessor/core/file/getFileReadTextContentsActionProcessor.js +7 -3
  127. package/lib/esm/getActionProcessor/core/file/getFileReadTextContentsActionProcessor.js.map +1 -1
  128. package/lib/esm/getActionProcessor/core/file/getFileStreamOpenActionProcessor.js +4 -3
  129. package/lib/esm/getActionProcessor/core/file/getFileStreamOpenActionProcessor.js.map +1 -1
  130. package/lib/esm/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.js +4 -3
  131. package/lib/esm/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.js.map +1 -1
  132. package/lib/esm/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.js +4 -3
  133. package/lib/esm/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.js.map +1 -1
  134. package/lib/esm/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.js +4 -3
  135. package/lib/esm/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.js.map +1 -1
  136. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.js +7 -5
  137. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.js.map +1 -1
  138. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.js +8 -4
  139. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.js.map +1 -1
  140. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.js +9 -4
  141. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.js.map +1 -1
  142. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.js +10 -6
  143. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.js.map +1 -1
  144. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.js +11 -4
  145. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.js.map +1 -1
  146. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.js +7 -5
  147. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.js.map +1 -1
  148. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreUpsertActionProcessor.js +14 -12
  149. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreUpsertActionProcessor.js.map +1 -1
  150. package/lib/esm/getActionProcessor/core/keyValueStore/index.js +2 -0
  151. package/lib/esm/getActionProcessor/core/keyValueStore/index.js.map +1 -1
  152. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.js +2 -2
  153. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.js.map +1 -1
  154. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectorySetAccessTokenActionProcessor.js +12 -2
  155. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectorySetAccessTokenActionProcessor.js.map +1 -1
  156. package/lib/esm/lambdaHandlers/getSqsEvent_queueEvent.js +3 -3
  157. package/lib/esm/lambdaHandlers/getSqsEvent_queueEvent.js.map +1 -1
  158. package/lib/esm/logic/cognito/requestEmailVerificationCode.d.ts +2 -1
  159. package/lib/esm/logic/cognito/requestEmailVerificationCode.js +7 -1
  160. package/lib/esm/logic/cognito/requestEmailVerificationCode.js.map +1 -1
  161. package/lib/esm/logic/dynamo/getAllItems.d.ts +2 -1
  162. package/lib/esm/logic/dynamo/getAllItems.js +7 -2
  163. package/lib/esm/logic/dynamo/getAllItems.js.map +1 -1
  164. package/lib/esm/logic/dynamo/getItem.d.ts +2 -1
  165. package/lib/esm/logic/dynamo/getItem.js +8 -5
  166. package/lib/esm/logic/dynamo/getItem.js.map +1 -1
  167. package/lib/extension-layer/qpq-log-extension/index.js +37 -37
  168. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"getFileGenerateTemporarySecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAAgI;AAChI,qDAKyB;AAEzB,iFAA8E;AAC9E,mCAAwD;AAExD,oEAAoE;AACpE,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD,MAAM,wCAAwC,GAAG,CAAC,SAAoB,EAAiD,EAAE;IACvH,OAAO,KAA0C,EAAE,4CAArC,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE;QAC7C,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;YACnC,OAAO,IAAA,mCAAiB,EACtB,6DAA2C,CAAC,iBAAiB,EAC7D,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,MAAM,IAAA,2CAAoB,EAAC,YAAY,EAAE,QAAQ,EAAE,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;YAE5I,OAAO,IAAA,8BAAY,EAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,IAAA,mCAAiB,EAAC,+BAAa,CAAC,YAAY,EAAE,yCAAyC,EAAE,KAAK,CAAC,CAAC;QACzG,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,gDAAgD,GAAgC,CAC3F,SAAoB,EACU,EAAE;IAAC,OAAA,CAAC;QAClC,CAAC,gCAAc,CAAC,0BAA0B,CAAC,EAAE,wCAAwC,CAAC,SAAS,CAAC;KACjG,CAAC,CAAA;EAAA,CAAC;AAJU,QAAA,gDAAgD,oDAI1D","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport { ActionProcessorList, ActionProcessorListResolver, actionResultError, ErrorTypeEnum, QPQConfig } from 'quidproquo-core';\nimport {\n actionResult,\n FileActionType,\n FileGenerateTemporarySecureUrlActionProcessor,\n FileGenerateTemporarySecureUrlErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { generatePresignedUrl } from '../../../logic/s3/generatePresignedUrl';\nimport { resolveStorageDriveBucketName } from './utils';\n\n// SigV4 presigned URLs cannot expire more than 7 days in the future\nconst maxExpirationMs = 7 * 24 * 60 * 60 * 1000;\n\nconst getProcessFileGenerateTemporarySecureUrl = (qpqConfig: QPQConfig): FileGenerateTemporarySecureUrlActionProcessor => {\n return async ({ drive, filepath, expirationMs }) => {\n if (expirationMs > maxExpirationMs) {\n return actionResultError(\n FileGenerateTemporarySecureUrlErrorTypeEnum.ExpirationTooLong,\n 'Expiration exceeds the 7 day maximum for presigned URLs',\n );\n }\n\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n const url = await generatePresignedUrl(s3BucketName, filepath, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), expirationMs);\n\n return actionResult(url);\n } catch (error: any) {\n return actionResultError(ErrorTypeEnum.GenericError, 'Unable to generate temporary secure URL', error);\n }\n };\n};\n\nexport const getFileGenerateTemporarySecureUrlActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n): Promise<ActionProcessorList> => ({\n [FileActionType.GenerateTemporarySecureUrl]: getProcessFileGenerateTemporarySecureUrl(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getFileGenerateTemporarySecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAAmJ;AACnJ,qDAMyB;AAEzB,iFAA8E;AAC9E,mCAAwD;AAExD,oEAAoE;AACpE,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD,MAAM,wCAAwC,GAAG,CAAC,SAAoB,EAAiD,EAAE;IACvH,OAAO,KAAiD,EAAE,4CAA5C,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE;QACpD,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;YACnC,OAAO,IAAA,mCAAiB,EACtB,6DAA2C,CAAC,iBAAiB,EAC7D,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,MAAM,IAAA,2CAAoB,EACpC,YAAY,EACZ,IAAA,uCAAqB,EAAC,KAAK,EAAE,QAAQ,CAAC,EACtC,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAC7D,YAAY,CACb,CAAC;YAEF,OAAO,IAAA,8BAAY,EAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,qEAAqE;YACrE,uDAAuD;YACvD,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,6DAA2C,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aACzH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,gDAAgD,GAAgC,CAC3F,SAAoB,EACU,EAAE;IAAC,OAAA,CAAC;QAClC,CAAC,gCAAc,CAAC,0BAA0B,CAAC,EAAE,wCAAwC,CAAC,SAAS,CAAC;KACjG,CAAC,CAAA;EAAA,CAAC;AAJU,QAAA,gDAAgD,oDAI1D","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport { ActionProcessorList, ActionProcessorListResolver, actionResultError, actionResultErrorFromCaughtError, QPQConfig } from 'quidproquo-core';\nimport {\n actionResult,\n composeScopedFilePath,\n FileActionType,\n FileGenerateTemporarySecureUrlActionProcessor,\n FileGenerateTemporarySecureUrlErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { generatePresignedUrl } from '../../../logic/s3/generatePresignedUrl';\nimport { resolveStorageDriveBucketName } from './utils';\n\n// SigV4 presigned URLs cannot expire more than 7 days in the future\nconst maxExpirationMs = 7 * 24 * 60 * 60 * 1000;\n\nconst getProcessFileGenerateTemporarySecureUrl = (qpqConfig: QPQConfig): FileGenerateTemporarySecureUrlActionProcessor => {\n return async ({ drive, filepath, expirationMs, scope }) => {\n if (expirationMs > maxExpirationMs) {\n return actionResultError(\n FileGenerateTemporarySecureUrlErrorTypeEnum.ExpirationTooLong,\n 'Expiration exceeds the 7 day maximum for presigned URLs',\n );\n }\n\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n const url = await generatePresignedUrl(\n s3BucketName,\n composeScopedFilePath(scope, filepath),\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n expirationMs,\n );\n\n return actionResult(url);\n } catch (error: unknown) {\n // Name-keyed, not instanceof: under npm link / module federation the\n // error can come from another copy of quidproquo-core.\n return actionResultErrorFromCaughtError(error, {\n InvalidScopeError: (error) => actionResultError(FileGenerateTemporarySecureUrlErrorTypeEnum.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileGenerateTemporarySecureUrlActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n): Promise<ActionProcessorList> => ({\n [FileActionType.GenerateTemporarySecureUrl]: getProcessFileGenerateTemporarySecureUrl(qpqConfig),\n});\n"]}
@@ -18,17 +18,21 @@ const utils_1 = require("./utils");
18
18
  // SigV4 presigned URLs cannot expire more than 7 days in the future
19
19
  const maxExpirationMs = 7 * 24 * 60 * 60 * 1000;
20
20
  const getProcessFileGenerateTemporaryUploadSecureUrl = (qpqConfig) => {
21
- return (_a, session_1) => __awaiter(void 0, [_a, session_1], void 0, function* ({ drive, filepath, expirationMs, contentType }, session) {
21
+ return (_a, session_1) => __awaiter(void 0, [_a, session_1], void 0, function* ({ drive, filepath, expirationMs, contentType, scope }, session) {
22
22
  if (expirationMs > maxExpirationMs) {
23
23
  return (0, quidproquo_core_1.actionResultError)(quidproquo_core_2.FileGenerateTemporaryUploadSecureUrlErrorTypeEnum.ExpirationTooLong, 'Expiration exceeds the 7 day maximum for presigned URLs');
24
24
  }
25
25
  try {
26
26
  const s3BucketName = (0, utils_1.resolveStorageDriveBucketName)(drive, qpqConfig);
27
- const url = yield (0, generatePresignedUploadUrl_1.generatePresignedUploadUrl)(s3BucketName, filepath, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), expirationMs, session.correlation, contentType);
27
+ const url = yield (0, generatePresignedUploadUrl_1.generatePresignedUploadUrl)(s3BucketName, (0, quidproquo_core_2.composeScopedFilePath)(scope, filepath), quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), expirationMs, session.correlation, contentType);
28
28
  return (0, quidproquo_core_2.actionResult)(url);
29
29
  }
30
30
  catch (error) {
31
- return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.ErrorTypeEnum.GenericError, 'Unable to generate temporary upload secure URL', error);
31
+ // Name-keyed, not instanceof: under npm link / module federation the
32
+ // error can come from another copy of quidproquo-core.
33
+ return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, {
34
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_2.FileGenerateTemporaryUploadSecureUrlErrorTypeEnum.InvalidScope, error.message),
35
+ });
32
36
  }
33
37
  });
34
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getFileGenerateTemporaryUploadSecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAAgI;AAChI,qDAKyB;AAEzB,6FAA0F;AAC1F,mCAAwD;AAExD,oEAAoE;AACpE,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD,MAAM,8CAA8C,GAAG,CAAC,SAAoB,EAAuD,EAAE;IACnI,OAAO,gBAAgE,EAAE,uDAA3D,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,OAAO;QACnE,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;YACnC,OAAO,IAAA,mCAAiB,EACtB,mEAAiD,CAAC,iBAAiB,EACnE,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,MAAM,IAAA,uDAA0B,EAC1C,YAAY,EACZ,QAAQ,EACR,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAC7D,YAAY,EACZ,OAAO,CAAC,WAAW,EACnB,WAAW,CACZ,CAAC;YAEF,OAAO,IAAA,8BAAY,EAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,IAAA,mCAAiB,EAAC,+BAAa,CAAC,YAAY,EAAE,gDAAgD,EAAE,KAAK,CAAC,CAAC;QAChH,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,sDAAsD,GAAgC,CACjG,SAAoB,EACU,EAAE;IAAC,OAAA,CAAC;QAClC,CAAC,gCAAc,CAAC,gCAAgC,CAAC,EAAE,8CAA8C,CAAC,SAAS,CAAC;KAC7G,CAAC,CAAA;EAAA,CAAC;AAJU,QAAA,sDAAsD,0DAIhE","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport { ActionProcessorList, ActionProcessorListResolver, actionResultError, ErrorTypeEnum, QPQConfig } from 'quidproquo-core';\nimport {\n actionResult,\n FileActionType,\n FileGenerateTemporaryUploadSecureUrlActionProcessor,\n FileGenerateTemporaryUploadSecureUrlErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { generatePresignedUploadUrl } from '../../../logic/s3/generatePresignedUploadUrl';\nimport { resolveStorageDriveBucketName } from './utils';\n\n// SigV4 presigned URLs cannot expire more than 7 days in the future\nconst maxExpirationMs = 7 * 24 * 60 * 60 * 1000;\n\nconst getProcessFileGenerateTemporaryUploadSecureUrl = (qpqConfig: QPQConfig): FileGenerateTemporaryUploadSecureUrlActionProcessor => {\n return async ({ drive, filepath, expirationMs, contentType }, session) => {\n if (expirationMs > maxExpirationMs) {\n return actionResultError(\n FileGenerateTemporaryUploadSecureUrlErrorTypeEnum.ExpirationTooLong,\n 'Expiration exceeds the 7 day maximum for presigned URLs',\n );\n }\n\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n const url = await generatePresignedUploadUrl(\n s3BucketName,\n filepath,\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n expirationMs,\n session.correlation,\n contentType,\n );\n\n return actionResult(url);\n } catch (error: any) {\n return actionResultError(ErrorTypeEnum.GenericError, 'Unable to generate temporary upload secure URL', error);\n }\n };\n};\n\nexport const getFileGenerateTemporaryUploadSecureUrlActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n): Promise<ActionProcessorList> => ({\n [FileActionType.GenerateTemporaryUploadSecureUrl]: getProcessFileGenerateTemporaryUploadSecureUrl(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getFileGenerateTemporaryUploadSecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAAmJ;AACnJ,qDAMyB;AAEzB,6FAA0F;AAC1F,mCAAwD;AAExD,oEAAoE;AACpE,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD,MAAM,8CAA8C,GAAG,CAAC,SAAoB,EAAuD,EAAE;IACnI,OAAO,gBAAuE,EAAE,uDAAlE,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,OAAO;QAC1E,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;YACnC,OAAO,IAAA,mCAAiB,EACtB,mEAAiD,CAAC,iBAAiB,EACnE,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,MAAM,IAAA,uDAA0B,EAC1C,YAAY,EACZ,IAAA,uCAAqB,EAAC,KAAK,EAAE,QAAQ,CAAC,EACtC,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAC7D,YAAY,EACZ,OAAO,CAAC,WAAW,EACnB,WAAW,CACZ,CAAC;YAEF,OAAO,IAAA,8BAAY,EAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,qEAAqE;YACrE,uDAAuD;YACvD,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,mEAAiD,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aAC/H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,sDAAsD,GAAgC,CACjG,SAAoB,EACU,EAAE;IAAC,OAAA,CAAC;QAClC,CAAC,gCAAc,CAAC,gCAAgC,CAAC,EAAE,8CAA8C,CAAC,SAAS,CAAC;KAC7G,CAAC,CAAA;EAAA,CAAC;AAJU,QAAA,sDAAsD,0DAIhE","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport { ActionProcessorList, ActionProcessorListResolver, actionResultError, actionResultErrorFromCaughtError, QPQConfig } from 'quidproquo-core';\nimport {\n actionResult,\n composeScopedFilePath,\n FileActionType,\n FileGenerateTemporaryUploadSecureUrlActionProcessor,\n FileGenerateTemporaryUploadSecureUrlErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { generatePresignedUploadUrl } from '../../../logic/s3/generatePresignedUploadUrl';\nimport { resolveStorageDriveBucketName } from './utils';\n\n// SigV4 presigned URLs cannot expire more than 7 days in the future\nconst maxExpirationMs = 7 * 24 * 60 * 60 * 1000;\n\nconst getProcessFileGenerateTemporaryUploadSecureUrl = (qpqConfig: QPQConfig): FileGenerateTemporaryUploadSecureUrlActionProcessor => {\n return async ({ drive, filepath, expirationMs, contentType, scope }, session) => {\n if (expirationMs > maxExpirationMs) {\n return actionResultError(\n FileGenerateTemporaryUploadSecureUrlErrorTypeEnum.ExpirationTooLong,\n 'Expiration exceeds the 7 day maximum for presigned URLs',\n );\n }\n\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n const url = await generatePresignedUploadUrl(\n s3BucketName,\n composeScopedFilePath(scope, filepath),\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n expirationMs,\n session.correlation,\n contentType,\n );\n\n return actionResult(url);\n } catch (error: unknown) {\n // Name-keyed, not instanceof: under npm link / module federation the\n // error can come from another copy of quidproquo-core.\n return actionResultErrorFromCaughtError(error, {\n InvalidScopeError: (error) => actionResultError(FileGenerateTemporaryUploadSecureUrlErrorTypeEnum.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileGenerateTemporaryUploadSecureUrlActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n): Promise<ActionProcessorList> => ({\n [FileActionType.GenerateTemporaryUploadSecureUrl]: getProcessFileGenerateTemporaryUploadSecureUrl(qpqConfig),\n});\n"]}
@@ -15,10 +15,11 @@ const quidproquo_core_1 = require("quidproquo-core");
15
15
  const getObjectStorageClass_1 = require("../../../logic/s3/getObjectStorageClass");
16
16
  const utils_1 = require("./utils");
17
17
  const getProcessFileIsColdStorage = (qpqConfig) => {
18
- return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath }) {
18
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, scope }) {
19
19
  const s3BucketName = (0, utils_1.resolveStorageDriveBucketName)(drive, qpqConfig);
20
20
  try {
21
- const isColdStorage = (yield (0, getObjectStorageClass_1.getObjectStorageClass)(s3BucketName, filepath, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig))) === 'cold_storage';
21
+ const key = (0, quidproquo_core_1.composeScopedFilePath)(scope, filepath);
22
+ const isColdStorage = (yield (0, getObjectStorageClass_1.getObjectStorageClass)(s3BucketName, key, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig))) === 'cold_storage';
22
23
  return (0, quidproquo_core_1.actionResult)(isColdStorage);
23
24
  }
24
25
  catch (error) {
@@ -28,6 +29,7 @@ const getProcessFileIsColdStorage = (qpqConfig) => {
28
29
  NotFound: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileIsColdStorageErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),
29
30
  NoSuchKey: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileIsColdStorageErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),
30
31
  NoSuchBucket: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileIsColdStorageErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),
32
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileIsColdStorageErrorTypeEnum.InvalidScope, error.message),
31
33
  });
32
34
  }
33
35
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getFileIsColdStorageActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAUyB;AAEzB,mFAAgF;AAChF,mCAAwD;AAExD,MAAM,2BAA2B,GAAG,CAAC,SAAoB,EAAoC,EAAE;IAC7F,OAAO,KAA4B,EAAE,4CAAvB,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/B,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,aAAa,GACjB,CAAC,MAAM,IAAA,6CAAqB,EAAC,YAAY,EAAE,QAAQ,EAAE,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC;YAE1I,OAAO,IAAA,8BAAY,EAAC,aAAa,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,0CAA0C,CAAC;gBAC9H,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,0CAA0C,CAAC;gBAC3H,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBAC7G,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBAC9G,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,aAAa,EAAE,4BAA4B,KAAK,EAAE,CAAC;aACzH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,mCAAmC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7I,CAAC,gCAAc,CAAC,aAAa,CAAC,EAAE,2BAA2B,CAAC,SAAS,CAAC;KACvE,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,mCAAmC,uCAE7C","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileIsColdStorageActionProcessor,\n FileIsColdStorageErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { getObjectStorageClass } from '../../../logic/s3/getObjectStorageClass';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileIsColdStorage = (qpqConfig: QPQConfig): FileIsColdStorageActionProcessor => {\n return async ({ drive, filepath }) => {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n try {\n const isColdStorage =\n (await getObjectStorageClass(s3BucketName, filepath, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig))) === 'cold_storage';\n\n return actionResult(isColdStorage);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n AccessDenied: () => actionResultError(FileIsColdStorageErrorTypeEnum.AccessDenied, 'Access denied reading file storage class'),\n Forbidden: () => actionResultError(FileIsColdStorageErrorTypeEnum.AccessDenied, 'Access denied reading file storage class'),\n NotFound: () => actionResultError(FileIsColdStorageErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n NoSuchKey: () => actionResultError(FileIsColdStorageErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n NoSuchBucket: () => actionResultError(FileIsColdStorageErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),\n });\n }\n };\n};\n\nexport const getFileIsColdStorageActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.IsColdStorage]: getProcessFileIsColdStorage(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getFileIsColdStorageActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAWyB;AAEzB,mFAAgF;AAChF,mCAAwD;AAExD,MAAM,2BAA2B,GAAG,CAAC,SAAoB,EAAoC,EAAE;IAC7F,OAAO,KAAmC,EAAE,4CAA9B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;QACtC,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAA,uCAAqB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACnD,MAAM,aAAa,GACjB,CAAC,MAAM,IAAA,6CAAqB,EAAC,YAAY,EAAE,GAAG,EAAE,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC;YAErI,OAAO,IAAA,8BAAY,EAAC,aAAa,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,0CAA0C,CAAC;gBAC9H,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,0CAA0C,CAAC;gBAC3H,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBAC7G,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBAC9G,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,aAAa,EAAE,4BAA4B,KAAK,EAAE,CAAC;gBACxH,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aAC5G,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,mCAAmC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7I,CAAC,gCAAc,CAAC,aAAa,CAAC,EAAE,2BAA2B,CAAC,SAAS,CAAC;KACvE,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,mCAAmC,uCAE7C","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n composeScopedFilePath,\n FileActionType,\n FileIsColdStorageActionProcessor,\n FileIsColdStorageErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { getObjectStorageClass } from '../../../logic/s3/getObjectStorageClass';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileIsColdStorage = (qpqConfig: QPQConfig): FileIsColdStorageActionProcessor => {\n return async ({ drive, filepath, scope }) => {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n try {\n const key = composeScopedFilePath(scope, filepath);\n const isColdStorage =\n (await getObjectStorageClass(s3BucketName, key, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig))) === 'cold_storage';\n\n return actionResult(isColdStorage);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n AccessDenied: () => actionResultError(FileIsColdStorageErrorTypeEnum.AccessDenied, 'Access denied reading file storage class'),\n Forbidden: () => actionResultError(FileIsColdStorageErrorTypeEnum.AccessDenied, 'Access denied reading file storage class'),\n NotFound: () => actionResultError(FileIsColdStorageErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n NoSuchKey: () => actionResultError(FileIsColdStorageErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n NoSuchBucket: () => actionResultError(FileIsColdStorageErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),\n InvalidScopeError: (error) => actionResultError(FileIsColdStorageErrorTypeEnum.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileIsColdStorageActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.IsColdStorage]: getProcessFileIsColdStorage(qpqConfig),\n});\n"]}
@@ -15,12 +15,13 @@ const quidproquo_core_1 = require("quidproquo-core");
15
15
  const s3Utils_1 = require("../../../logic/s3/s3Utils");
16
16
  const utils_1 = require("./utils");
17
17
  const getProcessFileListDirectory = (qpqConfig) => {
18
- return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, folderPath, maxFiles, pageToken }) {
18
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, folderPath, maxFiles, pageToken, scope }) {
19
19
  const s3BucketName = (0, utils_1.resolveStorageDriveBucketName)(drive, qpqConfig);
20
20
  try {
21
- const s3FileList = yield (0, s3Utils_1.listFiles)(s3BucketName, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), folderPath, maxFiles, pageToken);
22
- // Add the drive onto the list
23
- const fileInfos = s3FileList.fileInfos.map((s3fi) => (Object.assign(Object.assign({}, s3fi), { drive })));
21
+ const s3FileList = yield (0, s3Utils_1.listFiles)(s3BucketName, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), (0, quidproquo_core_1.composeScopedFilePath)(scope, folderPath), maxFiles, pageToken);
22
+ // S3 keys carry the scope prefix; strip it so callers see the same
23
+ // scope-relative paths they passed in. Add the drive onto the list.
24
+ const fileInfos = s3FileList.fileInfos.map((s3fi) => (Object.assign(Object.assign({}, s3fi), { filepath: (0, quidproquo_core_1.stripScopedFilePath)(scope, s3fi.filepath), drive })));
24
25
  return (0, quidproquo_core_1.actionResult)({
25
26
  fileInfos,
26
27
  pageToken: s3FileList.pageToken,
@@ -31,6 +32,7 @@ const getProcessFileListDirectory = (qpqConfig) => {
31
32
  AccessDenied: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileListDirectoryErrorTypeEnum.AccessDenied, 'Access denied listing directory'),
32
33
  Forbidden: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileListDirectoryErrorTypeEnum.AccessDenied, 'Access denied listing directory'),
33
34
  NoSuchBucket: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileListDirectoryErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),
35
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileListDirectoryErrorTypeEnum.InvalidScope, error.message),
34
36
  });
35
37
  }
36
38
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getFileListDirectoryActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileListDirectoryActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAUyB;AAEzB,uDAAsD;AACtD,mCAAwD;AAExD,MAAM,2BAA2B,GAAG,CAAC,SAAoB,EAAoC,EAAE;IAC7F,OAAO,KAAmD,EAAE,4CAA9C,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;QACtD,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAA,mBAAS,EAChC,YAAY,EACZ,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAC7D,UAAU,EACV,QAAQ,EACR,SAAS,CACV,CAAC;YAEF,8BAA8B;YAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iCAChD,IAAI,KACP,KAAK,IACL,CAAC,CAAC;YAEJ,OAAO,IAAA,8BAAY,EAAC;gBAClB,SAAS;gBACT,SAAS,EAAE,UAAU,CAAC,SAAS;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,iCAAiC,CAAC;gBACrH,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,iCAAiC,CAAC;gBAClH,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,aAAa,EAAE,4BAA4B,KAAK,EAAE,CAAC;aACzH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,mCAAmC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7I,CAAC,gCAAc,CAAC,aAAa,CAAC,EAAE,2BAA2B,CAAC,SAAS,CAAC;KACvE,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,mCAAmC,uCAE7C","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileListDirectoryActionProcessor,\n FileListDirectoryErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { listFiles } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileListDirectory = (qpqConfig: QPQConfig): FileListDirectoryActionProcessor => {\n return async ({ drive, folderPath, maxFiles, pageToken }) => {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n try {\n const s3FileList = await listFiles(\n s3BucketName,\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n folderPath,\n maxFiles,\n pageToken,\n );\n\n // Add the drive onto the list\n const fileInfos = s3FileList.fileInfos.map((s3fi) => ({\n ...s3fi,\n drive,\n }));\n\n return actionResult({\n fileInfos,\n pageToken: s3FileList.pageToken,\n });\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n AccessDenied: () => actionResultError(FileListDirectoryErrorTypeEnum.AccessDenied, 'Access denied listing directory'),\n Forbidden: () => actionResultError(FileListDirectoryErrorTypeEnum.AccessDenied, 'Access denied listing directory'),\n NoSuchBucket: () => actionResultError(FileListDirectoryErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),\n });\n }\n };\n};\n\nexport const getFileListDirectoryActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ListDirectory]: getProcessFileListDirectory(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getFileListDirectoryActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileListDirectoryActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAYyB;AAEzB,uDAAsD;AACtD,mCAAwD;AAExD,MAAM,2BAA2B,GAAG,CAAC,SAAoB,EAAoC,EAAE;IAC7F,OAAO,KAA0D,EAAE,4CAArD,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE;QAC7D,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAA,mBAAS,EAChC,YAAY,EACZ,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAC7D,IAAA,uCAAqB,EAAC,KAAK,EAAE,UAAU,CAAC,EACxC,QAAQ,EACR,SAAS,CACV,CAAC;YAEF,mEAAmE;YACnE,oEAAoE;YACpE,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iCAChD,IAAI,KACP,QAAQ,EAAE,IAAA,qCAAmB,EAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EACnD,KAAK,IACL,CAAC,CAAC;YAEJ,OAAO,IAAA,8BAAY,EAAC;gBAClB,SAAS;gBACT,SAAS,EAAE,UAAU,CAAC,SAAS;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,iCAAiC,CAAC;gBACrH,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,iCAAiC,CAAC;gBAClH,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,aAAa,EAAE,4BAA4B,KAAK,EAAE,CAAC;gBACxH,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aAC5G,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,mCAAmC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7I,CAAC,gCAAc,CAAC,aAAa,CAAC,EAAE,2BAA2B,CAAC,SAAS,CAAC;KACvE,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,mCAAmC,uCAE7C","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n composeScopedFilePath,\n FileActionType,\n FileListDirectoryActionProcessor,\n FileListDirectoryErrorTypeEnum,\n QPQConfig,\n stripScopedFilePath,\n} from 'quidproquo-core';\n\nimport { listFiles } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileListDirectory = (qpqConfig: QPQConfig): FileListDirectoryActionProcessor => {\n return async ({ drive, folderPath, maxFiles, pageToken, scope }) => {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n try {\n const s3FileList = await listFiles(\n s3BucketName,\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n composeScopedFilePath(scope, folderPath),\n maxFiles,\n pageToken,\n );\n\n // S3 keys carry the scope prefix; strip it so callers see the same\n // scope-relative paths they passed in. Add the drive onto the list.\n const fileInfos = s3FileList.fileInfos.map((s3fi) => ({\n ...s3fi,\n filepath: stripScopedFilePath(scope, s3fi.filepath),\n drive,\n }));\n\n return actionResult({\n fileInfos,\n pageToken: s3FileList.pageToken,\n });\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n AccessDenied: () => actionResultError(FileListDirectoryErrorTypeEnum.AccessDenied, 'Access denied listing directory'),\n Forbidden: () => actionResultError(FileListDirectoryErrorTypeEnum.AccessDenied, 'Access denied listing directory'),\n NoSuchBucket: () => actionResultError(FileListDirectoryErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),\n InvalidScopeError: (error) => actionResultError(FileListDirectoryErrorTypeEnum.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileListDirectoryActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ListDirectory]: getProcessFileListDirectory(qpqConfig),\n});\n"]}
@@ -15,16 +15,18 @@ const quidproquo_core_1 = require("quidproquo-core");
15
15
  const s3Utils_1 = require("../../../logic/s3/s3Utils");
16
16
  const utils_1 = require("./utils");
17
17
  const getProcessFileReadBinaryContents = (qpqConfig) => {
18
- return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath }) {
18
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, scope }) {
19
19
  try {
20
20
  const s3BucketName = (0, utils_1.resolveStorageDriveBucketName)(drive, qpqConfig);
21
- return (0, quidproquo_core_1.actionResult)(yield (0, s3Utils_1.readBinaryFile)(s3BucketName, filepath, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig)));
21
+ const key = (0, quidproquo_core_1.composeScopedFilePath)(scope, filepath);
22
+ return (0, quidproquo_core_1.actionResult)(yield (0, s3Utils_1.readBinaryFile)(s3BucketName, key, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig)));
22
23
  }
23
24
  catch (error) {
24
25
  return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, {
25
26
  InvalidObjectState: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadBinaryContentsErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),
26
27
  NoSuchKey: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadBinaryContentsErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),
27
28
  NotFound: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadBinaryContentsErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),
29
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadBinaryContentsErrorTypeEnum.InvalidScope, error.message),
28
30
  });
29
31
  }
30
32
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getFileReadBinaryContentsActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAUyB;AAEzB,uDAA2D;AAC3D,mCAAwD;AAExD,MAAM,gCAAgC,GAAG,CAAC,SAAoB,EAAyC,EAAE;IACvG,OAAO,KAA4B,EAAE,4CAAvB,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAErE,OAAO,IAAA,8BAAY,EAAC,MAAM,IAAA,wBAAc,EAAC,YAAY,EAAE,QAAQ,EAAE,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACnI,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,qDAAmC,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;gBAC1I,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,qDAAmC,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBACnH,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,qDAAmC,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;aACnH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,wCAAwC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAClJ,CAAC,gCAAc,CAAC,kBAAkB,CAAC,EAAE,gCAAgC,CAAC,SAAS,CAAC;KACjF,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,wCAAwC,4CAElD","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileReadBinaryContentsActionProcessor,\n FileReadBinaryContentsErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { readBinaryFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileReadBinaryContents = (qpqConfig: QPQConfig): FileReadBinaryContentsActionProcessor => {\n return async ({ drive, filepath }) => {\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n return actionResult(await readBinaryFile(s3BucketName, filepath, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig)));\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InvalidObjectState: () => actionResultError(FileReadBinaryContentsErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),\n NoSuchKey: () => actionResultError(FileReadBinaryContentsErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n NotFound: () => actionResultError(FileReadBinaryContentsErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n });\n }\n };\n};\n\nexport const getFileReadBinaryContentsActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ReadBinaryContents]: getProcessFileReadBinaryContents(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getFileReadBinaryContentsActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAWyB;AAEzB,uDAA2D;AAC3D,mCAAwD;AAExD,MAAM,gCAAgC,GAAG,CAAC,SAAoB,EAAyC,EAAE;IACvG,OAAO,KAAmC,EAAE,4CAA9B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,IAAA,uCAAqB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEnD,OAAO,IAAA,8BAAY,EAAC,MAAM,IAAA,wBAAc,EAAC,YAAY,EAAE,GAAG,EAAE,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9H,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,qDAAmC,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;gBAC1I,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,qDAAmC,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBACnH,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,qDAAmC,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBAClH,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,qDAAmC,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aACjH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,wCAAwC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAClJ,CAAC,gCAAc,CAAC,kBAAkB,CAAC,EAAE,gCAAgC,CAAC,SAAS,CAAC;KACjF,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,wCAAwC,4CAElD","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n composeScopedFilePath,\n FileActionType,\n FileReadBinaryContentsActionProcessor,\n FileReadBinaryContentsErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { readBinaryFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileReadBinaryContents = (qpqConfig: QPQConfig): FileReadBinaryContentsActionProcessor => {\n return async ({ drive, filepath, scope }) => {\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n const key = composeScopedFilePath(scope, filepath);\n\n return actionResult(await readBinaryFile(s3BucketName, key, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig)));\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InvalidObjectState: () => actionResultError(FileReadBinaryContentsErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),\n NoSuchKey: () => actionResultError(FileReadBinaryContentsErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n NotFound: () => actionResultError(FileReadBinaryContentsErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n InvalidScopeError: (error) => actionResultError(FileReadBinaryContentsErrorTypeEnum.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileReadBinaryContentsActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ReadBinaryContents]: getProcessFileReadBinaryContents(qpqConfig),\n});\n"]}
@@ -15,16 +15,21 @@ const quidproquo_core_1 = require("quidproquo-core");
15
15
  const s3Utils_1 = require("../../../logic/s3/s3Utils");
16
16
  const utils_1 = require("./utils");
17
17
  const getProcessFileReadObjectJson = (qpqConfig) => {
18
- return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath }) {
18
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, scope }) {
19
19
  try {
20
20
  const s3BucketName = (0, utils_1.resolveStorageDriveBucketName)(drive, qpqConfig);
21
- const json = yield (0, s3Utils_1.readTextFile)(s3BucketName, filepath, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig));
21
+ const key = (0, quidproquo_core_1.composeScopedFilePath)(scope, filepath);
22
+ const json = yield (0, s3Utils_1.readTextFile)(s3BucketName, key, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig));
22
23
  const obj = JSON.parse(json);
23
24
  return (0, quidproquo_core_1.actionResult)(obj);
24
25
  }
25
26
  catch (error) {
26
27
  return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, {
27
28
  InvalidObjectState: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadObjectJsonErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),
29
+ NoSuchKey: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadObjectJsonErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),
30
+ NotFound: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadObjectJsonErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),
31
+ SyntaxError: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadObjectJsonErrorTypeEnum.InvalidJson, `Invalid JSON in file: ${filepath}`), // JSON.parse failure
32
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadObjectJsonErrorTypeEnum.InvalidScope, error.message),
28
33
  });
29
34
  }
30
35
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getFileReadObjectJsonActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileReadObjectJsonActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAUyB;AAEzB,uDAAyD;AACzD,mCAAwD;AAExD,MAAM,4BAA4B,GAAG,CAAC,SAAoB,EAA6C,EAAE;IACvG,OAAO,KAA4B,EAAE,4CAAvB,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAErE,MAAM,IAAI,GAAG,MAAM,IAAA,sBAAY,EAAC,YAAY,EAAE,QAAQ,EAAE,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,CAAC;YAEvH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE7B,OAAO,IAAA,8BAAY,EAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,iDAA+B,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;aACvI,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,oCAAoC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC9I,CAAC,gCAAc,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAC,SAAS,CAAC;KACzE,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,oCAAoC,wCAE9C","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileReadObjectJsonActionProcessor,\n FileReadObjectJsonErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { readTextFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileReadObjectJson = (qpqConfig: QPQConfig): FileReadObjectJsonActionProcessor<object> => {\n return async ({ drive, filepath }) => {\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n const json = await readTextFile(s3BucketName, filepath, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig));\n\n const obj = JSON.parse(json);\n\n return actionResult(obj);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InvalidObjectState: () => actionResultError(FileReadObjectJsonErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),\n });\n }\n };\n};\n\nexport const getFileReadObjectJsonActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ReadObjectJson]: getProcessFileReadObjectJson(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getFileReadObjectJsonActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileReadObjectJsonActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAWyB;AAEzB,uDAAyD;AACzD,mCAAwD;AAExD,MAAM,4BAA4B,GAAG,CAAC,SAAoB,EAA6C,EAAE;IACvG,OAAO,KAAmC,EAAE,4CAA9B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,IAAA,uCAAqB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEnD,MAAM,IAAI,GAAG,MAAM,IAAA,sBAAY,EAAC,YAAY,EAAE,GAAG,EAAE,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,CAAC;YAElH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE7B,OAAO,IAAA,8BAAY,EAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,iDAA+B,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;gBACtI,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,iDAA+B,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBAC/G,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,iDAA+B,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBAC9G,WAAW,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,iDAA+B,CAAC,WAAW,EAAE,yBAAyB,QAAQ,EAAE,CAAC,EAAE,qBAAqB;gBAC7I,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,iDAA+B,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aAC7G,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,oCAAoC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC9I,CAAC,gCAAc,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAC,SAAS,CAAC;KACzE,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,oCAAoC,wCAE9C","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n composeScopedFilePath,\n FileActionType,\n FileReadObjectJsonActionProcessor,\n FileReadObjectJsonErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { readTextFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileReadObjectJson = (qpqConfig: QPQConfig): FileReadObjectJsonActionProcessor<object> => {\n return async ({ drive, filepath, scope }) => {\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n const key = composeScopedFilePath(scope, filepath);\n\n const json = await readTextFile(s3BucketName, key, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig));\n\n const obj = JSON.parse(json);\n\n return actionResult(obj);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InvalidObjectState: () => actionResultError(FileReadObjectJsonErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),\n NoSuchKey: () => actionResultError(FileReadObjectJsonErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n NotFound: () => actionResultError(FileReadObjectJsonErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n SyntaxError: () => actionResultError(FileReadObjectJsonErrorTypeEnum.InvalidJson, `Invalid JSON in file: ${filepath}`), // JSON.parse failure\n InvalidScopeError: (error) => actionResultError(FileReadObjectJsonErrorTypeEnum.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileReadObjectJsonActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ReadObjectJson]: getProcessFileReadObjectJson(qpqConfig),\n});\n"]}
@@ -15,14 +15,18 @@ const quidproquo_core_1 = require("quidproquo-core");
15
15
  const s3Utils_1 = require("../../../logic/s3/s3Utils");
16
16
  const utils_1 = require("./utils");
17
17
  const getProcessFileReadTextContents = (qpqConfig) => {
18
- return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath }) {
18
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, scope }) {
19
19
  try {
20
20
  const s3BucketName = (0, utils_1.resolveStorageDriveBucketName)(drive, qpqConfig);
21
- return (0, quidproquo_core_1.actionResult)(yield (0, s3Utils_1.readTextFile)(s3BucketName, filepath, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig)));
21
+ const key = (0, quidproquo_core_1.composeScopedFilePath)(scope, filepath);
22
+ return (0, quidproquo_core_1.actionResult)(yield (0, s3Utils_1.readTextFile)(s3BucketName, key, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig)));
22
23
  }
23
24
  catch (error) {
24
25
  return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, {
25
26
  InvalidObjectState: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadTextContentsErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),
27
+ NoSuchKey: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadTextContentsErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),
28
+ NotFound: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadTextContentsErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),
29
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileReadTextContentsErrorTypeEnum.InvalidScope, error.message),
26
30
  });
27
31
  }
28
32
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getFileReadTextContentsActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileReadTextContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAUyB;AAEzB,uDAAyD;AACzD,mCAAwD;AAExD,MAAM,8BAA8B,GAAG,CAAC,SAAoB,EAAuC,EAAE;IACnG,OAAO,KAA4B,EAAE,4CAAvB,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAErE,OAAO,IAAA,8BAAY,EAAC,MAAM,IAAA,sBAAY,EAAC,YAAY,EAAE,QAAQ,EAAE,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACjI,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,mDAAiC,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;aACzI,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,sCAAsC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAChJ,CAAC,gCAAc,CAAC,gBAAgB,CAAC,EAAE,8BAA8B,CAAC,SAAS,CAAC;KAC7E,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,sCAAsC,0CAEhD","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileReadTextContentsActionProcessor,\n FileReadTextContentsErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { readTextFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileReadTextContents = (qpqConfig: QPQConfig): FileReadTextContentsActionProcessor => {\n return async ({ drive, filepath }) => {\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n return actionResult(await readTextFile(s3BucketName, filepath, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig)));\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InvalidObjectState: () => actionResultError(FileReadTextContentsErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),\n });\n }\n };\n};\n\nexport const getFileReadTextContentsActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ReadTextContents]: getProcessFileReadTextContents(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getFileReadTextContentsActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileReadTextContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAWyB;AAEzB,uDAAyD;AACzD,mCAAwD;AAExD,MAAM,8BAA8B,GAAG,CAAC,SAAoB,EAAuC,EAAE;IACnG,OAAO,KAAmC,EAAE,4CAA9B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,IAAA,uCAAqB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEnD,OAAO,IAAA,8BAAY,EAAC,MAAM,IAAA,sBAAY,EAAC,YAAY,EAAE,GAAG,EAAE,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5H,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,mDAAiC,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;gBACxI,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,mDAAiC,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBACjH,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,mDAAiC,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBAChH,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,mDAAiC,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aAC/G,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,sCAAsC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAChJ,CAAC,gCAAc,CAAC,gBAAgB,CAAC,EAAE,8BAA8B,CAAC,SAAS,CAAC;KAC7E,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,sCAAsC,0CAEhD","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n composeScopedFilePath,\n FileActionType,\n FileReadTextContentsActionProcessor,\n FileReadTextContentsErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { readTextFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileReadTextContents = (qpqConfig: QPQConfig): FileReadTextContentsActionProcessor => {\n return async ({ drive, filepath, scope }) => {\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n const key = composeScopedFilePath(scope, filepath);\n\n return actionResult(await readTextFile(s3BucketName, key, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig)));\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InvalidObjectState: () => actionResultError(FileReadTextContentsErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),\n NoSuchKey: () => actionResultError(FileReadTextContentsErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n NotFound: () => actionResultError(FileReadTextContentsErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n InvalidScopeError: (error) => actionResultError(FileReadTextContentsErrorTypeEnum.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileReadTextContentsActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ReadTextContents]: getProcessFileReadTextContents(qpqConfig),\n});\n"]}
@@ -66,13 +66,13 @@ function chunkedReadableIterator(stream, chunkSize, transform) {
66
66
  });
67
67
  }
68
68
  const getProcessFileStreamOpen = (qpqConfig) => {
69
- return (_a, session_1, actionProcessors_1, logger_1, updateSession_1, dynamicModuleLoader_1, streamRegistry_1) => __awaiter(void 0, [_a, session_1, actionProcessors_1, logger_1, updateSession_1, dynamicModuleLoader_1, streamRegistry_1], void 0, function* ({ drive, filepath, encoding, chunkSize }, session, actionProcessors, logger, updateSession, dynamicModuleLoader, streamRegistry) {
69
+ return (_a, session_1, actionProcessors_1, logger_1, updateSession_1, dynamicModuleLoader_1, streamRegistry_1) => __awaiter(void 0, [_a, session_1, actionProcessors_1, logger_1, updateSession_1, dynamicModuleLoader_1, streamRegistry_1], void 0, function* ({ drive, filepath, encoding, chunkSize, scope }, session, actionProcessors, logger, updateSession, dynamicModuleLoader, streamRegistry) {
70
70
  try {
71
71
  const s3BucketName = (0, utils_1.resolveStorageDriveBucketName)(drive, qpqConfig);
72
72
  const region = quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
73
73
  const s3Client = (0, createAwsClient_1.createAwsClient)(client_s3_1.S3Client, { region });
74
74
  const response = yield s3Client.send(new client_s3_1.GetObjectCommand({
75
- Key: filepath,
75
+ Key: (0, quidproquo_core_1.composeScopedFilePath)(scope, filepath),
76
76
  Bucket: s3BucketName,
77
77
  }));
78
78
  if (!response.Body) {
@@ -91,6 +91,7 @@ const getProcessFileStreamOpen = (qpqConfig) => {
91
91
  InvalidObjectState: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileStreamOpenErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),
92
92
  NoSuchKey: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileStreamOpenErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),
93
93
  NotFound: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileStreamOpenErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),
94
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileStreamOpenErrorTypeEnum.InvalidScope, error.message),
94
95
  });
95
96
  }
96
97
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getFileStreamOpenActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileStreamOpenActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAWyB;AAGzB,kDAAgE;AAEhE,4DAAqD;AACrD,oEAAiE;AACjE,mCAAwD;AAExD,SAAgB,uBAAuB,CAAC,MAAgB,EAAE,SAAiB,EAAE,SAAkC;;;QAC7G,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;YAE7B,KAA0B,eAAA,WAAA,cAAA,MAAM,CAAA,YAAA,qFAAE,CAAC;gBAAT,sBAAM;gBAAN,WAAM;gBAArB,MAAM,KAAK,KAAA,CAAA;gBACpB,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAE,KAAgB,CAAC;gBAC5F,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAE3C,OAAO,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;oBAClC,oBAAM,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA,CAAC;oBAC/C,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;;;;;;;;;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,oBAAM,SAAS,CAAC,MAAM,CAAC,CAAA,CAAC;QAC1B,CAAC;IACH,CAAC;CAAA;AAED,MAAM,wBAAwB,GAAG,CAAC,SAAoB,EAAiC,EAAE;IACvF,OAAO,wGAAwI,EAAE,+IAAnI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc;QAC3I,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;YAC7E,MAAM,QAAQ,GAAG,IAAA,iCAAe,EAAC,oBAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAEvD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAClC,IAAI,4BAAgB,CAAC;gBACnB,GAAG,EAAE,QAAQ;gBACb,MAAM,EAAE,YAAY;aACrB,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnB,OAAO,IAAA,mCAAiB,EAAC,+BAAa,CAAC,YAAY,EAAE,4BAA4B,QAAQ,EAAE,CAAC,CAAC;YAC/F,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAU,GAAE,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,QAAQ,KAAK,MAAM,CAAC;YACnC,MAAM,IAAI,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,KAAK,CAAC;YAChC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC3G,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,CAAC,IAAgB,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACrF,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE5C,OAAO,IAAA,8BAAY,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,6CAA2B,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;gBAClI,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,6CAA2B,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;gBAC3G,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,6CAA2B,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC;aAC3G,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,gCAAgC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC1I,CAAC,gCAAc,CAAC,UAAU,CAAC,EAAE,wBAAwB,CAAC,SAAS,CAAC;KACjE,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,gCAAgC,oCAE1C","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n ErrorTypeEnum,\n FileActionType,\n FileStreamOpenActionProcessor,\n FileStreamOpenErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { Readable } from 'stream';\nimport { GetObjectCommand, S3Client } from '@aws-sdk/client-s3';\n\nimport { randomGuid } from '../../../awsLambdaUtils';\nimport { createAwsClient } from '../../../logic/createAwsClient';\nimport { resolveStorageDriveBucketName } from './utils';\n\nasync function* chunkedReadableIterator(stream: Readable, chunkSize: number, transform: (buf: Buffer) => string): AsyncIterableIterator<string> {\n let buffer = Buffer.alloc(0);\n\n for await (const chunk of stream) {\n const incoming = typeof chunk === 'string' ? Buffer.from(chunk, 'utf8') : (chunk as Buffer);\n buffer = Buffer.concat([buffer, incoming]);\n\n while (buffer.length >= chunkSize) {\n yield transform(buffer.subarray(0, chunkSize));\n buffer = buffer.subarray(chunkSize);\n }\n }\n\n if (buffer.length > 0) {\n yield transform(buffer);\n }\n}\n\nconst getProcessFileStreamOpen = (qpqConfig: QPQConfig): FileStreamOpenActionProcessor => {\n return async ({ drive, filepath, encoding, chunkSize }, session, actionProcessors, logger, updateSession, dynamicModuleLoader, streamRegistry) => {\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n const s3Client = createAwsClient(S3Client, { region });\n\n const response = await s3Client.send(\n new GetObjectCommand({\n Key: filepath,\n Bucket: s3BucketName,\n }),\n );\n\n if (!response.Body) {\n return actionResultError(ErrorTypeEnum.GenericError, `Empty response body for: ${filepath}`);\n }\n\n const streamId = `s3-${randomGuid()}`;\n const isText = encoding === 'text';\n const size = chunkSize ?? 65536;\n const transform = isText ? (buf: Buffer) => buf.toString('utf8') : (buf: Buffer) => buf.toString('base64');\n const iterator = chunkedReadableIterator(response.Body as Readable, size, transform);\n streamRegistry.register(streamId, iterator);\n\n return actionResult({ id: streamId, encoding });\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InvalidObjectState: () => actionResultError(FileStreamOpenErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),\n NoSuchKey: () => actionResultError(FileStreamOpenErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n NotFound: () => actionResultError(FileStreamOpenErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n });\n }\n };\n};\n\nexport const getFileStreamOpenActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.StreamOpen]: getProcessFileStreamOpen(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getFileStreamOpenActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileStreamOpenActionProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n composeScopedFilePath,\n ErrorTypeEnum,\n FileActionType,\n FileStreamOpenActionProcessor,\n FileStreamOpenErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { Readable } from 'stream';\nimport { GetObjectCommand, S3Client } from '@aws-sdk/client-s3';\n\nimport { randomGuid } from '../../../awsLambdaUtils';\nimport { createAwsClient } from '../../../logic/createAwsClient';\nimport { resolveStorageDriveBucketName } from './utils';\n\nasync function* chunkedReadableIterator(stream: Readable, chunkSize: number, transform: (buf: Buffer) => string): AsyncIterableIterator<string> {\n let buffer = Buffer.alloc(0);\n\n for await (const chunk of stream) {\n const incoming = typeof chunk === 'string' ? Buffer.from(chunk, 'utf8') : (chunk as Buffer);\n buffer = Buffer.concat([buffer, incoming]);\n\n while (buffer.length >= chunkSize) {\n yield transform(buffer.subarray(0, chunkSize));\n buffer = buffer.subarray(chunkSize);\n }\n }\n\n if (buffer.length > 0) {\n yield transform(buffer);\n }\n}\n\nconst getProcessFileStreamOpen = (qpqConfig: QPQConfig): FileStreamOpenActionProcessor => {\n return async (\n { drive, filepath, encoding, chunkSize, scope },\n session,\n actionProcessors,\n logger,\n updateSession,\n dynamicModuleLoader,\n streamRegistry,\n ) => {\n try {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n const s3Client = createAwsClient(S3Client, { region });\n\n const response = await s3Client.send(\n new GetObjectCommand({\n Key: composeScopedFilePath(scope, filepath),\n Bucket: s3BucketName,\n }),\n );\n\n if (!response.Body) {\n return actionResultError(ErrorTypeEnum.GenericError, `Empty response body for: ${filepath}`);\n }\n\n const streamId = `s3-${randomGuid()}`;\n const isText = encoding === 'text';\n const size = chunkSize ?? 65536;\n const transform = isText ? (buf: Buffer) => buf.toString('utf8') : (buf: Buffer) => buf.toString('base64');\n const iterator = chunkedReadableIterator(response.Body as Readable, size, transform);\n streamRegistry.register(streamId, iterator);\n\n return actionResult({ id: streamId, encoding });\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InvalidObjectState: () => actionResultError(FileStreamOpenErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),\n NoSuchKey: () => actionResultError(FileStreamOpenErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n NotFound: () => actionResultError(FileStreamOpenErrorTypeEnum.FileNotFound, `File not found: ${filepath}`),\n InvalidScopeError: (error) => actionResultError(FileStreamOpenErrorTypeEnum.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileStreamOpenActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.StreamOpen]: getProcessFileStreamOpen(qpqConfig),\n});\n"]}
@@ -16,10 +16,10 @@ const awsLambdaUtils_1 = require("../../../awsLambdaUtils");
16
16
  const s3Utils_1 = require("../../../logic/s3/s3Utils");
17
17
  const utils_1 = require("./utils");
18
18
  const getProcessFileWriteBinaryContents = (qpqConfig) => {
19
- return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, data, storageDriveAdvancedWriteOptions }) {
19
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, data, storageDriveAdvancedWriteOptions, scope }) {
20
20
  const s3BucketName = (0, utils_1.resolveStorageDriveBucketName)(drive, qpqConfig);
21
21
  try {
22
- yield (0, s3Utils_1.writeBinaryFile)(s3BucketName, filepath, data, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), (0, awsLambdaUtils_1.getS3BucketStorageClassFromStorageDriveTier)(storageDriveAdvancedWriteOptions === null || storageDriveAdvancedWriteOptions === void 0 ? void 0 : storageDriveAdvancedWriteOptions.storageDriveTier));
22
+ yield (0, s3Utils_1.writeBinaryFile)(s3BucketName, (0, quidproquo_core_1.composeScopedFilePath)(scope, filepath), data, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), (0, awsLambdaUtils_1.getS3BucketStorageClassFromStorageDriveTier)(storageDriveAdvancedWriteOptions === null || storageDriveAdvancedWriteOptions === void 0 ? void 0 : storageDriveAdvancedWriteOptions.storageDriveTier));
23
23
  return (0, quidproquo_core_1.actionResult)(void 0);
24
24
  }
25
25
  catch (error) {
@@ -27,6 +27,7 @@ const getProcessFileWriteBinaryContents = (qpqConfig) => {
27
27
  AccessDenied: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteBinaryContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),
28
28
  Forbidden: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteBinaryContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),
29
29
  NoSuchBucket: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteBinaryContentsErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),
30
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteBinaryContentsErrorTypeEnum.InvalidScope, error.message),
30
31
  });
31
32
  }
32
33
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getFileWriteBinaryContentsActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAUyB;AAEzB,4DAAsF;AACtF,uDAA4D;AAC5D,mCAAwD;AAExD,MAAM,iCAAiC,GAAG,CAAC,SAAoB,EAA0C,EAAE;IACzG,OAAO,KAAoE,EAAE,4CAA/D,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE;QACvE,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,IAAA,yBAAe,EACnB,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAC7D,IAAA,4DAA2C,EAAC,gCAAgC,aAAhC,gCAAgC,uBAAhC,gCAAgC,CAAE,gBAAgB,CAAC,CAChG,CAAC;YAEF,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,sDAAoC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBACtH,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,sDAAoC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBACnH,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,sDAAoC,CAAC,aAAa,EAAE,4BAA4B,KAAK,EAAE,CAAC;aAC/H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,yCAAyC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QACnJ,CAAC,gCAAc,CAAC,mBAAmB,CAAC,EAAE,iCAAiC,CAAC,SAAS,CAAC;KACnF,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,yCAAyC,6CAEnD","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileWriteBinaryContentsActionProcessor,\n FileWriteBinaryContentsErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { getS3BucketStorageClassFromStorageDriveTier } from '../../../awsLambdaUtils';\nimport { writeBinaryFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileWriteBinaryContents = (qpqConfig: QPQConfig): FileWriteBinaryContentsActionProcessor => {\n return async ({ drive, filepath, data, storageDriveAdvancedWriteOptions }) => {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n try {\n await writeBinaryFile(\n s3BucketName,\n filepath,\n data,\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n getS3BucketStorageClassFromStorageDriveTier(storageDriveAdvancedWriteOptions?.storageDriveTier),\n );\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n AccessDenied: () => actionResultError(FileWriteBinaryContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n Forbidden: () => actionResultError(FileWriteBinaryContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n NoSuchBucket: () => actionResultError(FileWriteBinaryContentsErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),\n });\n }\n };\n};\n\nexport const getFileWriteBinaryContentsActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.WriteBinaryContents]: getProcessFileWriteBinaryContents(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getFileWriteBinaryContentsActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAWyB;AAEzB,4DAAsF;AACtF,uDAA4D;AAC5D,mCAAwD;AAExD,MAAM,iCAAiC,GAAG,CAAC,SAAoB,EAA0C,EAAE;IACzG,OAAO,KAA2E,EAAE,4CAAtE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE;QAC9E,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,IAAA,yBAAe,EACnB,YAAY,EACZ,IAAA,uCAAqB,EAAC,KAAK,EAAE,QAAQ,CAAC,EACtC,IAAI,EACJ,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAC7D,IAAA,4DAA2C,EAAC,gCAAgC,aAAhC,gCAAgC,uBAAhC,gCAAgC,CAAE,gBAAgB,CAAC,CAChG,CAAC;YAEF,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,sDAAoC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBACtH,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,sDAAoC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBACnH,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,sDAAoC,CAAC,aAAa,EAAE,4BAA4B,KAAK,EAAE,CAAC;gBAC9H,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,sDAAoC,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aAClH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,yCAAyC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QACnJ,CAAC,gCAAc,CAAC,mBAAmB,CAAC,EAAE,iCAAiC,CAAC,SAAS,CAAC;KACnF,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,yCAAyC,6CAEnD","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n composeScopedFilePath,\n FileActionType,\n FileWriteBinaryContentsActionProcessor,\n FileWriteBinaryContentsErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { getS3BucketStorageClassFromStorageDriveTier } from '../../../awsLambdaUtils';\nimport { writeBinaryFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileWriteBinaryContents = (qpqConfig: QPQConfig): FileWriteBinaryContentsActionProcessor => {\n return async ({ drive, filepath, data, storageDriveAdvancedWriteOptions, scope }) => {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n try {\n await writeBinaryFile(\n s3BucketName,\n composeScopedFilePath(scope, filepath),\n data,\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n getS3BucketStorageClassFromStorageDriveTier(storageDriveAdvancedWriteOptions?.storageDriveTier),\n );\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n AccessDenied: () => actionResultError(FileWriteBinaryContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n Forbidden: () => actionResultError(FileWriteBinaryContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n NoSuchBucket: () => actionResultError(FileWriteBinaryContentsErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),\n InvalidScopeError: (error) => actionResultError(FileWriteBinaryContentsErrorTypeEnum.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileWriteBinaryContentsActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.WriteBinaryContents]: getProcessFileWriteBinaryContents(qpqConfig),\n});\n"]}
@@ -16,11 +16,11 @@ const awsLambdaUtils_1 = require("../../../awsLambdaUtils");
16
16
  const s3Utils_1 = require("../../../logic/s3/s3Utils");
17
17
  const utils_1 = require("./utils");
18
18
  const getProcessFileWriteObjectJson = (qpqConfig) => {
19
- return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, data, storageDriveAdvancedWriteOptions }) {
19
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, data, storageDriveAdvancedWriteOptions, scope }) {
20
20
  const s3BucketName = (0, utils_1.resolveStorageDriveBucketName)(drive, qpqConfig);
21
21
  const dataJson = JSON.stringify(data);
22
22
  try {
23
- yield (0, s3Utils_1.writeTextFile)(s3BucketName, filepath, dataJson, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), (0, awsLambdaUtils_1.getS3BucketStorageClassFromStorageDriveTier)(storageDriveAdvancedWriteOptions === null || storageDriveAdvancedWriteOptions === void 0 ? void 0 : storageDriveAdvancedWriteOptions.storageDriveTier));
23
+ yield (0, s3Utils_1.writeTextFile)(s3BucketName, (0, quidproquo_core_1.composeScopedFilePath)(scope, filepath), dataJson, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), (0, awsLambdaUtils_1.getS3BucketStorageClassFromStorageDriveTier)(storageDriveAdvancedWriteOptions === null || storageDriveAdvancedWriteOptions === void 0 ? void 0 : storageDriveAdvancedWriteOptions.storageDriveTier));
24
24
  return (0, quidproquo_core_1.actionResult)(void 0);
25
25
  }
26
26
  catch (error) {
@@ -28,6 +28,7 @@ const getProcessFileWriteObjectJson = (qpqConfig) => {
28
28
  AccessDenied: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteObjectJsonErrorTypeEnum.AccessDenied, 'Access denied writing file'),
29
29
  Forbidden: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteObjectJsonErrorTypeEnum.AccessDenied, 'Access denied writing file'),
30
30
  NoSuchBucket: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteObjectJsonErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),
31
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteObjectJsonErrorTypeEnum.InvalidScope, error.message),
31
32
  });
32
33
  }
33
34
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getFileWriteObjectJsonActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAUyB;AAEzB,4DAAsF;AACtF,uDAA0D;AAC1D,mCAAwD;AAExD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAA8C,EAAE;IACzG,OAAO,KAAoE,EAAE,4CAA/D,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE;QACvE,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,IAAA,uBAAa,EACjB,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAC7D,IAAA,4DAA2C,EAAC,gCAAgC,aAAhC,gCAAgC,uBAAhC,gCAAgC,CAAE,gBAAgB,CAAC,CAChG,CAAC;YAEF,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBAClH,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBAC/G,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,aAAa,EAAE,4BAA4B,KAAK,EAAE,CAAC;aAC3H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,qCAAqC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC/I,CAAC,gCAAc,CAAC,eAAe,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;KAC3E,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,qCAAqC,yCAE/C","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileWriteObjectJsonActionProcessor,\n FileWriteObjectJsonErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { getS3BucketStorageClassFromStorageDriveTier } from '../../../awsLambdaUtils';\nimport { writeTextFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileWriteObjectJson = (qpqConfig: QPQConfig): FileWriteObjectJsonActionProcessor<object> => {\n return async ({ drive, filepath, data, storageDriveAdvancedWriteOptions }) => {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n const dataJson = JSON.stringify(data);\n\n try {\n await writeTextFile(\n s3BucketName,\n filepath,\n dataJson,\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n getS3BucketStorageClassFromStorageDriveTier(storageDriveAdvancedWriteOptions?.storageDriveTier),\n );\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n AccessDenied: () => actionResultError(FileWriteObjectJsonErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n Forbidden: () => actionResultError(FileWriteObjectJsonErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n NoSuchBucket: () => actionResultError(FileWriteObjectJsonErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),\n });\n }\n };\n};\n\nexport const getFileWriteObjectJsonActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.WriteObjectJson]: getProcessFileWriteObjectJson(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getFileWriteObjectJsonActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAWyB;AAEzB,4DAAsF;AACtF,uDAA0D;AAC1D,mCAAwD;AAExD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAA8C,EAAE;IACzG,OAAO,KAA2E,EAAE,4CAAtE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE;QAC9E,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,IAAA,uBAAa,EACjB,YAAY,EACZ,IAAA,uCAAqB,EAAC,KAAK,EAAE,QAAQ,CAAC,EACtC,QAAQ,EACR,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAC7D,IAAA,4DAA2C,EAAC,gCAAgC,aAAhC,gCAAgC,uBAAhC,gCAAgC,CAAE,gBAAgB,CAAC,CAChG,CAAC;YAEF,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBAClH,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBAC/G,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,aAAa,EAAE,4BAA4B,KAAK,EAAE,CAAC;gBAC1H,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aAC9G,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,qCAAqC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC/I,CAAC,gCAAc,CAAC,eAAe,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;KAC3E,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,qCAAqC,yCAE/C","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n composeScopedFilePath,\n FileActionType,\n FileWriteObjectJsonActionProcessor,\n FileWriteObjectJsonErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { getS3BucketStorageClassFromStorageDriveTier } from '../../../awsLambdaUtils';\nimport { writeTextFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileWriteObjectJson = (qpqConfig: QPQConfig): FileWriteObjectJsonActionProcessor<object> => {\n return async ({ drive, filepath, data, storageDriveAdvancedWriteOptions, scope }) => {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n const dataJson = JSON.stringify(data);\n\n try {\n await writeTextFile(\n s3BucketName,\n composeScopedFilePath(scope, filepath),\n dataJson,\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n getS3BucketStorageClassFromStorageDriveTier(storageDriveAdvancedWriteOptions?.storageDriveTier),\n );\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n AccessDenied: () => actionResultError(FileWriteObjectJsonErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n Forbidden: () => actionResultError(FileWriteObjectJsonErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n NoSuchBucket: () => actionResultError(FileWriteObjectJsonErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),\n InvalidScopeError: (error) => actionResultError(FileWriteObjectJsonErrorTypeEnum.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileWriteObjectJsonActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.WriteObjectJson]: getProcessFileWriteObjectJson(qpqConfig),\n});\n"]}
@@ -16,10 +16,10 @@ const awsLambdaUtils_1 = require("../../../awsLambdaUtils");
16
16
  const s3Utils_1 = require("../../../logic/s3/s3Utils");
17
17
  const utils_1 = require("./utils");
18
18
  const getProcessFileWriteTextContents = (qpqConfig) => {
19
- return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, data, storageDriveAdvancedWriteOptions }) {
19
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, data, storageDriveAdvancedWriteOptions, scope }) {
20
20
  const s3BucketName = (0, utils_1.resolveStorageDriveBucketName)(drive, qpqConfig);
21
21
  try {
22
- yield (0, s3Utils_1.writeTextFile)(s3BucketName, filepath, data, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), (0, awsLambdaUtils_1.getS3BucketStorageClassFromStorageDriveTier)(storageDriveAdvancedWriteOptions === null || storageDriveAdvancedWriteOptions === void 0 ? void 0 : storageDriveAdvancedWriteOptions.storageDriveTier));
22
+ yield (0, s3Utils_1.writeTextFile)(s3BucketName, (0, quidproquo_core_1.composeScopedFilePath)(scope, filepath), data, quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), (0, awsLambdaUtils_1.getS3BucketStorageClassFromStorageDriveTier)(storageDriveAdvancedWriteOptions === null || storageDriveAdvancedWriteOptions === void 0 ? void 0 : storageDriveAdvancedWriteOptions.storageDriveTier));
23
23
  return (0, quidproquo_core_1.actionResult)(void 0);
24
24
  }
25
25
  catch (error) {
@@ -27,6 +27,7 @@ const getProcessFileWriteTextContents = (qpqConfig) => {
27
27
  AccessDenied: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteTextContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),
28
28
  Forbidden: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteTextContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),
29
29
  NoSuchBucket: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteTextContentsErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),
30
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileWriteTextContentsErrorTypeEnum.InvalidScope, error.message),
30
31
  });
31
32
  }
32
33
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getFileWriteTextContentsActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAUyB;AAEzB,4DAAsF;AACtF,uDAA0D;AAC1D,mCAAwD;AAExD,MAAM,+BAA+B,GAAG,CAAC,SAAoB,EAAwC,EAAE;IACrG,OAAO,KAAoE,EAAE,4CAA/D,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE;QACvE,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,IAAA,uBAAa,EACjB,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAC7D,IAAA,4DAA2C,EAAC,gCAAgC,aAAhC,gCAAgC,uBAAhC,gCAAgC,CAAE,gBAAgB,CAAC,CAChG,CAAC;YAEF,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,oDAAkC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBACpH,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,oDAAkC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBACjH,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,oDAAkC,CAAC,aAAa,EAAE,4BAA4B,KAAK,EAAE,CAAC;aAC7H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,uCAAuC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QACjJ,CAAC,gCAAc,CAAC,iBAAiB,CAAC,EAAE,+BAA+B,CAAC,SAAS,CAAC;KAC/E,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,uCAAuC,2CAEjD","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileWriteTextContentsActionProcessor,\n FileWriteTextContentsErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { getS3BucketStorageClassFromStorageDriveTier } from '../../../awsLambdaUtils';\nimport { writeTextFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileWriteTextContents = (qpqConfig: QPQConfig): FileWriteTextContentsActionProcessor => {\n return async ({ drive, filepath, data, storageDriveAdvancedWriteOptions }) => {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n try {\n await writeTextFile(\n s3BucketName,\n filepath,\n data,\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n getS3BucketStorageClassFromStorageDriveTier(storageDriveAdvancedWriteOptions?.storageDriveTier),\n );\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n AccessDenied: () => actionResultError(FileWriteTextContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n Forbidden: () => actionResultError(FileWriteTextContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n NoSuchBucket: () => actionResultError(FileWriteTextContentsErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),\n });\n }\n };\n};\n\nexport const getFileWriteTextContentsActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.WriteTextContents]: getProcessFileWriteTextContents(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getFileWriteTextContentsActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAWyB;AAEzB,4DAAsF;AACtF,uDAA0D;AAC1D,mCAAwD;AAExD,MAAM,+BAA+B,GAAG,CAAC,SAAoB,EAAwC,EAAE;IACrG,OAAO,KAA2E,EAAE,4CAAtE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE;QAC9E,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,IAAA,uBAAa,EACjB,YAAY,EACZ,IAAA,uCAAqB,EAAC,KAAK,EAAE,QAAQ,CAAC,EACtC,IAAI,EACJ,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAC7D,IAAA,4DAA2C,EAAC,gCAAgC,aAAhC,gCAAgC,uBAAhC,gCAAgC,CAAE,gBAAgB,CAAC,CAChG,CAAC;YAEF,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,oDAAkC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBACpH,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,oDAAkC,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBACjH,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,oDAAkC,CAAC,aAAa,EAAE,4BAA4B,KAAK,EAAE,CAAC;gBAC5H,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,oDAAkC,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aAChH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,uCAAuC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QACjJ,CAAC,gCAAc,CAAC,iBAAiB,CAAC,EAAE,+BAA+B,CAAC,SAAS,CAAC;KAC/E,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,uCAAuC,2CAEjD","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n composeScopedFilePath,\n FileActionType,\n FileWriteTextContentsActionProcessor,\n FileWriteTextContentsErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { getS3BucketStorageClassFromStorageDriveTier } from '../../../awsLambdaUtils';\nimport { writeTextFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileWriteTextContents = (qpqConfig: QPQConfig): FileWriteTextContentsActionProcessor => {\n return async ({ drive, filepath, data, storageDriveAdvancedWriteOptions, scope }) => {\n const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);\n\n try {\n await writeTextFile(\n s3BucketName,\n composeScopedFilePath(scope, filepath),\n data,\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n getS3BucketStorageClassFromStorageDriveTier(storageDriveAdvancedWriteOptions?.storageDriveTier),\n );\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n AccessDenied: () => actionResultError(FileWriteTextContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n Forbidden: () => actionResultError(FileWriteTextContentsErrorTypeEnum.AccessDenied, 'Access denied writing file'),\n NoSuchBucket: () => actionResultError(FileWriteTextContentsErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),\n InvalidScopeError: (error) => actionResultError(FileWriteTextContentsErrorTypeEnum.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileWriteTextContentsActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.WriteTextContents]: getProcessFileWriteTextContents(qpqConfig),\n});\n"]}
@@ -12,30 +12,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.getKeyValueStoreDeleteActionProcessor = void 0;
13
13
  const quidproquo_config_aws_1 = require("quidproquo-config-aws");
14
14
  const quidproquo_core_1 = require("quidproquo-core");
15
- const quidproquo_core_2 = require("quidproquo-core");
16
15
  const awsNamingUtils_1 = require("../../../awsNamingUtils");
17
16
  const dynamo_1 = require("../../../logic/dynamo");
18
17
  const getProcessKeyValueStoreDelete = (qpqConfig) => {
19
- return (_a) => __awaiter(void 0, [_a], void 0, function* ({ keyValueStoreName, key, sortKey }) {
18
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ keyValueStoreName, key, sortKey, options }) {
20
19
  var _b;
21
20
  const dynamoTableName = (0, awsNamingUtils_1.getKvsDynamoTableNameFromConfig)(keyValueStoreName, qpqConfig, 'kvs');
22
21
  const region = quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
23
- const storeConfig = quidproquo_core_1.qpqCoreUtils.getKeyValueStoreByName(qpqConfig, keyValueStoreName);
24
22
  try {
25
- yield (0, dynamo_1.deleteItem)(dynamoTableName, region, key, storeConfig.partitionKey.key, sortKey, (_b = storeConfig.sortKeys[0]) === null || _b === void 0 ? void 0 : _b.key);
26
- return (0, quidproquo_core_2.actionResult)(void 0);
23
+ const storeConfig = (0, quidproquo_core_1.resolveKvsStoreConfigOrThrow)(qpqConfig, keyValueStoreName);
24
+ const scoped = (0, quidproquo_core_1.getScopedKvsTranslatorOrThrow)(qpqConfig, keyValueStoreName, options === null || options === void 0 ? void 0 : options.scope);
25
+ yield (0, dynamo_1.deleteItem)(dynamoTableName, region, scoped.key(key), storeConfig.partitionKey.key, sortKey, (_b = storeConfig.sortKeys[0]) === null || _b === void 0 ? void 0 : _b.key);
26
+ return (0, quidproquo_core_1.actionResult)(void 0);
27
27
  }
28
28
  catch (error) {
29
- return (0, quidproquo_core_2.actionResultErrorFromCaughtError)(error, {
30
- InternalServerError: () => (0, quidproquo_core_2.actionResultError)(quidproquo_core_2.KeyValueStoreDeleteErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),
31
- ResourceNotFoundException: () => (0, quidproquo_core_2.actionResultError)(quidproquo_core_2.KeyValueStoreDeleteErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),
29
+ return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, {
30
+ InternalServerError: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.KeyValueStoreDeleteErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),
31
+ ResourceNotFoundException: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.KeyValueStoreDeleteErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),
32
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.KeyValueStoreDeleteErrorTypeEnum.InvalidScope, error.message),
33
+ KvsStoreNotFoundError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.KeyValueStoreDeleteErrorTypeEnum.StoreNotFound, error.message),
32
34
  });
33
35
  }
34
36
  });
35
37
  };
36
38
  const getKeyValueStoreDeleteActionProcessor = (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
37
39
  return ({
38
- [quidproquo_core_2.KeyValueStoreActionType.Delete]: getProcessKeyValueStoreDelete(qpqConfig),
40
+ [quidproquo_core_1.KeyValueStoreActionType.Delete]: getProcessKeyValueStoreDelete(qpqConfig),
39
41
  });
40
42
  });
41
43
  exports.getKeyValueStoreDeleteActionProcessor = getKeyValueStoreDeleteActionProcessor;
@@ -1 +1 @@
1
- {"version":3,"file":"getKeyValueStoreDeleteActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAA4G;AAC5G,qDAOyB;AAEzB,4DAA0E;AAC1E,kDAAmD;AAEnD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAAsC,EAAE;IACjG,OAAO,KAA4C,EAAE,4CAAvC,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE;;QAC/C,MAAM,eAAe,GAAG,IAAA,gDAA+B,EAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,MAAM,WAAW,GAAG,8BAAY,CAAC,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,CAAE,CAAC;QAEvF,IAAI,CAAC;YACH,MAAM,IAAA,mBAAU,EAAC,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAA,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAAE,GAAG,CAAC,CAAC;YAEpH,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC5H,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;aAChI,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,qCAAqC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC/I,CAAC,yCAAuB,CAAC,MAAM,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;KAC3E,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,qCAAqC,yCAE/C","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport { ActionProcessorList, ActionProcessorListResolver, QPQConfig, qpqCoreUtils } from 'quidproquo-core';\nimport {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n KeyValueStoreActionType,\n KeyValueStoreDeleteActionProcessor,\n KeyValueStoreDeleteErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { deleteItem } from '../../../logic/dynamo';\n\nconst getProcessKeyValueStoreDelete = (qpqConfig: QPQConfig): KeyValueStoreDeleteActionProcessor => {\n return async ({ keyValueStoreName, key, sortKey }) => {\n const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n const storeConfig = qpqCoreUtils.getKeyValueStoreByName(qpqConfig, keyValueStoreName)!;\n\n try {\n await deleteItem(dynamoTableName, region, key, storeConfig.partitionKey.key, sortKey, storeConfig.sortKeys[0]?.key);\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreDeleteErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreDeleteErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n });\n }\n };\n};\n\nexport const getKeyValueStoreDeleteActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Delete]: getProcessKeyValueStoreDelete(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getKeyValueStoreDeleteActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAE1D,qDASyB;AAEzB,4DAA0E;AAC1E,kDAAmD;AAEnD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAAsC,EAAE;IACjG,OAAO,KAAqD,EAAE,4CAAhD,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;;QACxD,MAAM,eAAe,GAAG,IAAA,gDAA+B,EAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAA,8CAA4B,EAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,IAAA,+CAA6B,EAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,CAAC;YAE3F,MAAM,IAAA,mBAAU,EAAC,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAA,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAAE,GAAG,CAAC,CAAC;YAEhI,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC5H,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;gBAC/H,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC7G,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC;aACnH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,qCAAqC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC/I,CAAC,yCAAuB,CAAC,MAAM,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;KAC3E,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,qCAAqC,yCAE/C","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport { ActionProcessorList, ActionProcessorListResolver, QPQConfig } from 'quidproquo-core';\nimport {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n getScopedKvsTranslatorOrThrow,\n KeyValueStoreActionType,\n KeyValueStoreDeleteActionProcessor,\n KeyValueStoreDeleteErrorTypeEnum,\n resolveKvsStoreConfigOrThrow,\n} from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { deleteItem } from '../../../logic/dynamo';\n\nconst getProcessKeyValueStoreDelete = (qpqConfig: QPQConfig): KeyValueStoreDeleteActionProcessor => {\n return async ({ keyValueStoreName, key, sortKey, options }) => {\n const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n const storeConfig = resolveKvsStoreConfigOrThrow(qpqConfig, keyValueStoreName);\n const scoped = getScopedKvsTranslatorOrThrow(qpqConfig, keyValueStoreName, options?.scope);\n\n await deleteItem(dynamoTableName, region, scoped.key(key), storeConfig.partitionKey.key, sortKey, storeConfig.sortKeys[0]?.key);\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreDeleteErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreDeleteErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n InvalidScopeError: (error) => actionResultError(KeyValueStoreDeleteErrorTypeEnum.InvalidScope, error.message),\n KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreDeleteErrorTypeEnum.StoreNotFound, error.message),\n });\n }\n };\n};\n\nexport const getKeyValueStoreDeleteActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Delete]: getProcessKeyValueStoreDelete(qpqConfig),\n});\n"]}
@@ -15,17 +15,21 @@ const quidproquo_core_1 = require("quidproquo-core");
15
15
  const awsNamingUtils_1 = require("../../../awsNamingUtils");
16
16
  const dynamo_1 = require("../../../logic/dynamo");
17
17
  const getProcessKeyValueStoreGet = (qpqConfig) => {
18
- return (_a) => __awaiter(void 0, [_a], void 0, function* ({ keyValueStoreName, key }) {
18
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ keyValueStoreName, key, options }) {
19
19
  const dynamoTableName = (0, awsNamingUtils_1.getKvsDynamoTableNameFromConfig)(keyValueStoreName, qpqConfig, 'kvs');
20
20
  const region = quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
21
21
  try {
22
- const result = yield (0, dynamo_1.getItem)(dynamoTableName, key, region);
23
- return (0, quidproquo_core_1.actionResult)(result);
22
+ const storeConfig = (0, quidproquo_core_1.resolveKvsStoreConfigOrThrow)(qpqConfig, keyValueStoreName);
23
+ const scoped = (0, quidproquo_core_1.getScopedKvsTranslatorOrThrow)(qpqConfig, keyValueStoreName, options === null || options === void 0 ? void 0 : options.scope);
24
+ const result = yield (0, dynamo_1.getItem)(dynamoTableName, region, storeConfig.partitionKey.key, scoped.key(key));
25
+ return (0, quidproquo_core_1.actionResult)(scoped.strip(result));
24
26
  }
25
27
  catch (error) {
26
28
  return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, {
27
29
  InternalServerError: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.KeyValueStoreGetErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),
28
30
  ResourceNotFoundException: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.KeyValueStoreGetErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),
31
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.KeyValueStoreGetErrorTypeEnum.InvalidScope, error.message),
32
+ KvsStoreNotFoundError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.KeyValueStoreGetErrorTypeEnum.StoreNotFound, error.message),
29
33
  });
30
34
  }
31
35
  });