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":"getKeyValueStoreDeleteActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAA+D,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,uBAAuB,EAEvB,gCAAgC,GACjC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAAsC,EAAE;IACjG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;QACnD,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,MAAM,WAAW,GAAG,YAAY,CAAC,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,CAAE,CAAC;QAEvF,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAEpH,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC5H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;aAChI,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC/I,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;CAC3E,CAAC,CAAC","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,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,6BAA6B,EAC7B,uBAAuB,EAEvB,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAAsC,EAAE;IACjG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5D,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,4BAA4B,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAE3F,MAAM,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAEhI,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC5H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;gBAC/H,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC7G,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC;aACnH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC/I,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;CAC3E,CAAC,CAAC","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"]}
@@ -1,19 +1,23 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResult, actionResultError, actionResultErrorFromCaughtError, KeyValueStoreActionType, KeyValueStoreGetErrorTypeEnum, } from 'quidproquo-core';
2
+ import { actionResult, actionResultError, actionResultErrorFromCaughtError, getScopedKvsTranslatorOrThrow, KeyValueStoreActionType, KeyValueStoreGetErrorTypeEnum, resolveKvsStoreConfigOrThrow, } from 'quidproquo-core';
3
3
  import { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';
4
4
  import { getItem } from '../../../logic/dynamo';
5
5
  const getProcessKeyValueStoreGet = (qpqConfig) => {
6
- return async ({ keyValueStoreName, key }) => {
6
+ return async ({ keyValueStoreName, key, options }) => {
7
7
  const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');
8
8
  const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
9
9
  try {
10
- const result = await getItem(dynamoTableName, key, region);
11
- return actionResult(result);
10
+ const storeConfig = resolveKvsStoreConfigOrThrow(qpqConfig, keyValueStoreName);
11
+ const scoped = getScopedKvsTranslatorOrThrow(qpqConfig, keyValueStoreName, options?.scope);
12
+ const result = await getItem(dynamoTableName, region, storeConfig.partitionKey.key, scoped.key(key));
13
+ return actionResult(scoped.strip(result));
12
14
  }
13
15
  catch (error) {
14
16
  return actionResultErrorFromCaughtError(error, {
15
17
  InternalServerError: () => actionResultError(KeyValueStoreGetErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),
16
18
  ResourceNotFoundException: () => actionResultError(KeyValueStoreGetErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),
19
+ InvalidScopeError: (error) => actionResultError(KeyValueStoreGetErrorTypeEnum.InvalidScope, error.message),
20
+ KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreGetErrorTypeEnum.StoreNotFound, error.message),
17
21
  });
18
22
  }
19
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getKeyValueStoreGetActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,uBAAuB,EAEvB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,MAAM,0BAA0B,GAAG,CAAC,SAAoB,EAAwC,EAAE;IAChG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,EAAE,EAAE;QAC1C,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YAE3D,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBACzH,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;aAC7H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC5I,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,0BAA0B,CAAC,SAAS,CAAC;CACrE,CAAC,CAAC","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 KeyValueStoreGetActionProcessor,\n KeyValueStoreGetErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { getItem } from '../../../logic/dynamo';\n\nconst getProcessKeyValueStoreGet = (qpqConfig: QPQConfig): KeyValueStoreGetActionProcessor<any> => {\n return async ({ keyValueStoreName, key }) => {\n const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n const result = await getItem(dynamoTableName, key, region);\n\n return actionResult(result);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreGetErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreGetErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n });\n }\n };\n};\n\nexport const getKeyValueStoreGetActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Get]: getProcessKeyValueStoreGet(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getKeyValueStoreGetActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,6BAA6B,EAC7B,uBAAuB,EAEvB,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,MAAM,0BAA0B,GAAG,CAAC,SAAoB,EAAwC,EAAE;IAChG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;QACnD,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,4BAA4B,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAE3F,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAErG,OAAO,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBACzH,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;gBAC5H,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC1G,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC;aAChH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC5I,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,0BAA0B,CAAC,SAAS,CAAC;CACrE,CAAC,CAAC","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 KeyValueStoreGetActionProcessor,\n KeyValueStoreGetErrorTypeEnum,\n resolveKvsStoreConfigOrThrow,\n} from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { getItem } from '../../../logic/dynamo';\n\nconst getProcessKeyValueStoreGet = (qpqConfig: QPQConfig): KeyValueStoreGetActionProcessor<any> => {\n return async ({ keyValueStoreName, key, 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 const result = await getItem(dynamoTableName, region, storeConfig.partitionKey.key, scoped.key(key));\n\n return actionResult(scoped.strip(result));\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreGetErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreGetErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n InvalidScopeError: (error) => actionResultError(KeyValueStoreGetErrorTypeEnum.InvalidScope, error.message),\n KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreGetErrorTypeEnum.StoreNotFound, error.message),\n });\n }\n };\n};\n\nexport const getKeyValueStoreGetActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Get]: getProcessKeyValueStoreGet(qpqConfig),\n});\n"]}
@@ -1,19 +1,24 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResult, actionResultError, actionResultErrorFromCaughtError, KeyValueStoreActionType, KeyValueStoreGetAllErrorTypeEnum, } from 'quidproquo-core';
2
+ import { actionResult, actionResultError, actionResultErrorFromCaughtError, getScopedKvsTranslatorOrThrow, KeyValueStoreActionType, KeyValueStoreGetAllErrorTypeEnum, } from 'quidproquo-core';
3
3
  import { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';
4
4
  import { getAllItems } from '../../../logic/dynamo';
5
5
  const getProcessKeyValueStoreGetAll = (qpqConfig) => {
6
- return async ({ keyValueStoreName }) => {
6
+ return async ({ keyValueStoreName, options }) => {
7
7
  const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');
8
8
  const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
9
9
  try {
10
- const result = await getAllItems(dynamoTableName, region);
11
- return actionResult(result);
10
+ // GetAll has no key condition, so scope is enforced as a begins_with
11
+ // prefix filter (a full scan on the Dynamo side either way).
12
+ const scoped = getScopedKvsTranslatorOrThrow(qpqConfig, keyValueStoreName, options?.scope);
13
+ const result = await getAllItems(dynamoTableName, region, scoped.scanFilter(undefined));
14
+ return actionResult(result.map((item) => scoped.strip(item)));
12
15
  }
13
16
  catch (error) {
14
17
  return actionResultErrorFromCaughtError(error, {
15
18
  InternalServerError: () => actionResultError(KeyValueStoreGetAllErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),
16
19
  ResourceNotFoundException: () => actionResultError(KeyValueStoreGetAllErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),
20
+ InvalidScopeError: (error) => actionResultError(KeyValueStoreGetAllErrorTypeEnum.InvalidScope, error.message),
21
+ KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreGetAllErrorTypeEnum.StoreNotFound, error.message),
17
22
  });
18
23
  }
19
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getKeyValueStoreGetAllActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,uBAAuB,EAEvB,gCAAgC,GACjC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAA2C,EAAE;IACtG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE;QACrC,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YAE1D,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC5H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;aAChI,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC/I,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;CAC3E,CAAC,CAAC","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 KeyValueStoreGetAllActionProcessor,\n KeyValueStoreGetAllErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { getAllItems } from '../../../logic/dynamo';\n\nconst getProcessKeyValueStoreGetAll = (qpqConfig: QPQConfig): KeyValueStoreGetAllActionProcessor<any> => {\n return async ({ keyValueStoreName }) => {\n const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n const result = await getAllItems(dynamoTableName, region);\n\n return actionResult(result);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreGetAllErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreGetAllErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n });\n }\n };\n};\n\nexport const getKeyValueStoreGetAllActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.GetAll]: getProcessKeyValueStoreGetAll(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getKeyValueStoreGetAllActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,6BAA6B,EAC7B,uBAAuB,EAEvB,gCAAgC,GACjC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAA2C,EAAE;IACtG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9C,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,qEAAqE;YACrE,6DAA6D;YAC7D,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAE3F,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;YAExF,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC5H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;gBAC/H,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC7G,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC;aACnH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC/I,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;CAC3E,CAAC,CAAC","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 KeyValueStoreGetAllActionProcessor,\n KeyValueStoreGetAllErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { getAllItems } from '../../../logic/dynamo';\n\nconst getProcessKeyValueStoreGetAll = (qpqConfig: QPQConfig): KeyValueStoreGetAllActionProcessor<any> => {\n return async ({ keyValueStoreName, options }) => {\n const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n // GetAll has no key condition, so scope is enforced as a begins_with\n // prefix filter (a full scan on the Dynamo side either way).\n const scoped = getScopedKvsTranslatorOrThrow(qpqConfig, keyValueStoreName, options?.scope);\n\n const result = await getAllItems(dynamoTableName, region, scoped.scanFilter(undefined));\n\n return actionResult(result.map((item) => scoped.strip(item)));\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreGetAllErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreGetAllErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n InvalidScopeError: (error) => actionResultError(KeyValueStoreGetAllErrorTypeEnum.InvalidScope, error.message),\n KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreGetAllErrorTypeEnum.StoreNotFound, error.message),\n });\n }\n };\n};\n\nexport const getKeyValueStoreGetAllActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.GetAll]: getProcessKeyValueStoreGetAll(qpqConfig),\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResultError, actionResultErrorFromCaughtError, ErrorTypeEnum, qpqCoreUtils, } from 'quidproquo-core';
2
+ import { actionResultError, actionResultErrorFromCaughtError, getScopedKvsTranslatorOrThrow, resolveKvsStoreConfigOrThrow, } from 'quidproquo-core';
3
3
  import { actionResult, KeyValueStoreActionType, KeyValueStoreQueryErrorTypeEnum } from 'quidproquo-core';
4
4
  import { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';
5
5
  import { query } from '../../../logic/dynamo';
@@ -8,18 +8,22 @@ const getProcessKeyValueStoreQuery = (qpqConfig) => {
8
8
  return async ({ keyValueStoreName, keyCondition, options }) => {
9
9
  const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');
10
10
  const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
11
- const storeConfig = qpqCoreUtils.getKeyValueStoreByName(qpqConfig, keyValueStoreName);
12
- if (!storeConfig) {
13
- return actionResultError(ErrorTypeEnum.NotFound, `Could not find key value store with name "${keyValueStoreName}"`);
14
- }
15
11
  try {
16
- const items = await query(dynamoTableName, region, keyCondition, options?.filter, options?.nextPageKey, getDynamoTableIndexByConfigAndQuery(storeConfig, keyCondition), options?.limit, options?.sortAscending);
12
+ const storeConfig = resolveKvsStoreConfigOrThrow(qpqConfig, keyValueStoreName);
13
+ // Scope lives inside the pk values, so pk conditions are rewritten to the
14
+ // composed form (throws when the key condition never constrains the pk).
15
+ const scoped = getScopedKvsTranslatorOrThrow(qpqConfig, keyValueStoreName, options?.scope);
16
+ const effectiveKeyCondition = scoped.keyCondition(keyCondition);
17
+ const items = await query(dynamoTableName, region, effectiveKeyCondition, scoped.filter(options?.filter), options?.nextPageKey, getDynamoTableIndexByConfigAndQuery(storeConfig, effectiveKeyCondition), options?.limit, options?.sortAscending);
18
+ items.items = items.items.map((item) => scoped.strip(item));
17
19
  return actionResult(items);
18
20
  }
19
21
  catch (error) {
20
22
  return actionResultErrorFromCaughtError(error, {
21
23
  InternalServerError: () => actionResultError(KeyValueStoreQueryErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),
22
24
  ResourceNotFoundException: () => actionResultError(KeyValueStoreQueryErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),
25
+ InvalidScopeError: (error) => actionResultError(KeyValueStoreQueryErrorTypeEnum.InvalidScope, error.message),
26
+ KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreQueryErrorTypeEnum.StoreNotFound, error.message),
23
27
  });
24
28
  }
25
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getKeyValueStoreQueryActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAGL,iBAAiB,EACjB,gCAAgC,EAChC,aAAa,EAEb,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAqC,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAE5I,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,mCAAmC,EAAE,MAAM,oCAAoC,CAAC;AAEzF,MAAM,4BAA4B,GAAG,CAAC,SAAoB,EAA0C,EAAE;IACpG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5D,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,MAAM,WAAW,GAAG,YAAY,CAAC,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QACtF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,6CAA6C,iBAAiB,GAAG,CAAC,CAAC;QACtH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,KAAK,CACvB,eAAe,EACf,MAAM,EACN,YAAY,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,mCAAmC,CAAC,WAAW,EAAE,YAAY,CAAC,EAC9D,OAAO,EAAE,KAAK,EACd,OAAO,EAAE,aAAa,CACvB,CAAC;YAEF,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC3H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;aAC/H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oCAAoC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC9I,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,4BAA4B,CAAC,SAAS,CAAC;CACzE,CAAC,CAAC","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResultError,\n actionResultErrorFromCaughtError,\n ErrorTypeEnum,\n QPQConfig,\n qpqCoreUtils,\n} from 'quidproquo-core';\nimport { actionResult, KeyValueStoreActionType, KeyValueStoreQueryActionProcessor, KeyValueStoreQueryErrorTypeEnum } from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { query } from '../../../logic/dynamo';\nimport { getDynamoTableIndexByConfigAndQuery } from '../../../logic/dynamo/qpqDynamoOrm';\n\nconst getProcessKeyValueStoreQuery = (qpqConfig: QPQConfig): KeyValueStoreQueryActionProcessor<any> => {\n return async ({ keyValueStoreName, keyCondition, options }) => {\n const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n const storeConfig = qpqCoreUtils.getKeyValueStoreByName(qpqConfig, keyValueStoreName);\n if (!storeConfig) {\n return actionResultError(ErrorTypeEnum.NotFound, `Could not find key value store with name \"${keyValueStoreName}\"`);\n }\n\n try {\n const items = await query<any>(\n dynamoTableName,\n region,\n keyCondition,\n options?.filter,\n options?.nextPageKey,\n getDynamoTableIndexByConfigAndQuery(storeConfig, keyCondition),\n options?.limit,\n options?.sortAscending,\n );\n\n return actionResult(items);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreQueryErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreQueryErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n });\n }\n };\n};\n\nexport const getKeyValueStoreQueryActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Query]: getProcessKeyValueStoreQuery(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getKeyValueStoreQueryActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAGL,iBAAiB,EACjB,gCAAgC,EAChC,6BAA6B,EAE7B,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAqC,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAE5I,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,mCAAmC,EAAE,MAAM,oCAAoC,CAAC;AAEzF,MAAM,4BAA4B,GAAG,CAAC,SAAoB,EAA0C,EAAE;IACpG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5D,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,4BAA4B,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAE/E,0EAA0E;YAC1E,yEAAyE;YACzE,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC3F,MAAM,qBAAqB,GAAG,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAEhE,MAAM,KAAK,GAAG,MAAM,KAAK,CACvB,eAAe,EACf,MAAM,EACN,qBAAqB,EACrB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,EAC9B,OAAO,EAAE,WAAW,EACpB,mCAAmC,CAAC,WAAW,EAAE,qBAAqB,CAAC,EACvE,OAAO,EAAE,KAAK,EACd,OAAO,EAAE,aAAa,CACvB,CAAC;YAEF,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC3H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;gBAC9H,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC5G,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC;aAClH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oCAAoC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC9I,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,4BAA4B,CAAC,SAAS,CAAC;CACzE,CAAC,CAAC","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResultError,\n actionResultErrorFromCaughtError,\n getScopedKvsTranslatorOrThrow,\n QPQConfig,\n resolveKvsStoreConfigOrThrow,\n} from 'quidproquo-core';\nimport { actionResult, KeyValueStoreActionType, KeyValueStoreQueryActionProcessor, KeyValueStoreQueryErrorTypeEnum } from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { query } from '../../../logic/dynamo';\nimport { getDynamoTableIndexByConfigAndQuery } from '../../../logic/dynamo/qpqDynamoOrm';\n\nconst getProcessKeyValueStoreQuery = (qpqConfig: QPQConfig): KeyValueStoreQueryActionProcessor<any> => {\n return async ({ keyValueStoreName, keyCondition, options }) => {\n const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n const storeConfig = resolveKvsStoreConfigOrThrow(qpqConfig, keyValueStoreName);\n\n // Scope lives inside the pk values, so pk conditions are rewritten to the\n // composed form (throws when the key condition never constrains the pk).\n const scoped = getScopedKvsTranslatorOrThrow(qpqConfig, keyValueStoreName, options?.scope);\n const effectiveKeyCondition = scoped.keyCondition(keyCondition);\n\n const items = await query<any>(\n dynamoTableName,\n region,\n effectiveKeyCondition,\n scoped.filter(options?.filter),\n options?.nextPageKey,\n getDynamoTableIndexByConfigAndQuery(storeConfig, effectiveKeyCondition),\n options?.limit,\n options?.sortAscending,\n );\n\n items.items = items.items.map((item: any) => scoped.strip(item));\n\n return actionResult(items);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreQueryErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreQueryErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n InvalidScopeError: (error) => actionResultError(KeyValueStoreQueryErrorTypeEnum.InvalidScope, error.message),\n KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreQueryErrorTypeEnum.StoreNotFound, error.message),\n });\n }\n };\n};\n\nexport const getKeyValueStoreQueryActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Query]: getProcessKeyValueStoreQuery(qpqConfig),\n});\n"]}
@@ -1,20 +1,27 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResultError, actionResultErrorFromCaughtError, } from 'quidproquo-core';
3
- import { actionResult, KeyValueStoreActionType, KeyValueStoreScanErrorTypeEnum } from 'quidproquo-core';
2
+ import { actionResultError, actionResultErrorFromCaughtError } from 'quidproquo-core';
3
+ import { actionResult, getScopedKvsTranslatorOrThrow, KeyValueStoreActionType, KeyValueStoreScanErrorTypeEnum, } from 'quidproquo-core';
4
4
  import { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';
5
5
  import { scan } from '../../../logic/dynamo/scan';
6
6
  const getProcessKeyValueStoreScan = (qpqConfig) => {
7
- return async ({ keyValueStoreName, filterCondition, nextPageKey }) => {
7
+ return async ({ keyValueStoreName, filterCondition, nextPageKey, options }) => {
8
8
  const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');
9
9
  const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
10
10
  try {
11
- const items = await scan(dynamoTableName, region, filterCondition, nextPageKey);
11
+ // A scan has no key condition, so scope is enforced as a begins_with
12
+ // prefix predicate ANDed onto the caller's filter. Still a full-table
13
+ // scan on the Dynamo side - only the results are isolated.
14
+ const scoped = getScopedKvsTranslatorOrThrow(qpqConfig, keyValueStoreName, options?.scope);
15
+ const items = await scan(dynamoTableName, region, scoped.scanFilter(filterCondition), nextPageKey);
16
+ items.items = items.items.map((item) => scoped.strip(item));
12
17
  return actionResult(items);
13
18
  }
14
19
  catch (error) {
15
20
  return actionResultErrorFromCaughtError(error, {
16
21
  InternalServerError: () => actionResultError(KeyValueStoreScanErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),
17
22
  ResourceNotFoundException: () => actionResultError(KeyValueStoreScanErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),
23
+ InvalidScopeError: (error) => actionResultError(KeyValueStoreScanErrorTypeEnum.InvalidScope, error.message),
24
+ KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreScanErrorTypeEnum.StoreNotFound, error.message),
18
25
  });
19
26
  }
20
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getKeyValueStoreScanActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAGL,iBAAiB,EACjB,gCAAgC,GAGjC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAoC,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAE1I,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD,MAAM,2BAA2B,GAAG,CAAC,SAAoB,EAAyC,EAAE;IAClG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,EAAE;QACnE,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAM,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;YAErF,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC1H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;aAC9H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mCAAmC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC7I,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,2BAA2B,CAAC,SAAS,CAAC;CACvE,CAAC,CAAC","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResultError,\n actionResultErrorFromCaughtError,\n QPQConfig,\n qpqCoreUtils,\n} from 'quidproquo-core';\nimport { actionResult, KeyValueStoreActionType, KeyValueStoreScanActionProcessor, KeyValueStoreScanErrorTypeEnum } from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { scan } from '../../../logic/dynamo/scan';\n\nconst getProcessKeyValueStoreScan = (qpqConfig: QPQConfig): KeyValueStoreScanActionProcessor<any> => {\n return async ({ keyValueStoreName, filterCondition, nextPageKey }) => {\n const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n const items = await scan<any>(dynamoTableName, region, filterCondition, nextPageKey);\n\n return actionResult(items);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreScanErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreScanErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n });\n }\n };\n};\n\nexport const getKeyValueStoreScanActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Scan]: getProcessKeyValueStoreScan(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getKeyValueStoreScanActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAoD,iBAAiB,EAAE,gCAAgC,EAAa,MAAM,iBAAiB,CAAC;AACnJ,OAAO,EACL,YAAY,EACZ,6BAA6B,EAC7B,uBAAuB,EAEvB,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD,MAAM,2BAA2B,GAAG,CAAC,SAAoB,EAAyC,EAAE;IAClG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5E,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,qEAAqE;YACrE,sEAAsE;YACtE,2DAA2D;YAC3D,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAE3F,MAAM,KAAK,GAAG,MAAM,IAAI,CAAM,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC;YAExG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC1H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;gBAC7H,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC3G,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC;aACjH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mCAAmC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC7I,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,2BAA2B,CAAC,SAAS,CAAC;CACvE,CAAC,CAAC","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport { ActionProcessorList, ActionProcessorListResolver, actionResultError, actionResultErrorFromCaughtError, QPQConfig } from 'quidproquo-core';\nimport {\n actionResult,\n getScopedKvsTranslatorOrThrow,\n KeyValueStoreActionType,\n KeyValueStoreScanActionProcessor,\n KeyValueStoreScanErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { scan } from '../../../logic/dynamo/scan';\n\nconst getProcessKeyValueStoreScan = (qpqConfig: QPQConfig): KeyValueStoreScanActionProcessor<any> => {\n return async ({ keyValueStoreName, filterCondition, nextPageKey, options }) => {\n const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n // A scan has no key condition, so scope is enforced as a begins_with\n // prefix predicate ANDed onto the caller's filter. Still a full-table\n // scan on the Dynamo side - only the results are isolated.\n const scoped = getScopedKvsTranslatorOrThrow(qpqConfig, keyValueStoreName, options?.scope);\n\n const items = await scan<any>(dynamoTableName, region, scoped.scanFilter(filterCondition), nextPageKey);\n\n items.items = items.items.map((item: any) => scoped.strip(item));\n\n return actionResult(items);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreScanErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreScanErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n InvalidScopeError: (error) => actionResultError(KeyValueStoreScanErrorTypeEnum.InvalidScope, error.message),\n KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreScanErrorTypeEnum.StoreNotFound, error.message),\n });\n }\n };\n};\n\nexport const getKeyValueStoreScanActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Scan]: getProcessKeyValueStoreScan(qpqConfig),\n});\n"]}
@@ -1,21 +1,23 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { qpqCoreUtils } from 'quidproquo-core';
3
- import { actionResult, actionResultError, actionResultErrorFromCaughtError, KeyValueStoreActionType, KeyValueStoreUpdateErrorTypeEnum, } from 'quidproquo-core';
2
+ import { actionResult, actionResultError, actionResultErrorFromCaughtError, getScopedKvsTranslatorOrThrow, KeyValueStoreActionType, KeyValueStoreUpdateErrorTypeEnum, resolveKvsStoreConfigOrThrow, } from 'quidproquo-core';
4
3
  import { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';
5
4
  import { updateItem } from '../../../logic/dynamo';
6
5
  const getProcessKeyValueStoreUpdate = (qpqConfig) => {
7
6
  return async ({ keyValueStoreName, key, sortKey, updates, options }) => {
8
7
  const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');
9
8
  const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
10
- const storeConfig = qpqCoreUtils.getKeyValueStoreByName(qpqConfig, keyValueStoreName);
11
9
  try {
12
- const item = await updateItem(dynamoTableName, region, updates, storeConfig.partitionKey.key, key, storeConfig.sortKeys[0]?.key, sortKey);
13
- return actionResult(item);
10
+ const storeConfig = resolveKvsStoreConfigOrThrow(qpqConfig, keyValueStoreName);
11
+ const scoped = getScopedKvsTranslatorOrThrow(qpqConfig, keyValueStoreName, options?.scope);
12
+ const item = await updateItem(dynamoTableName, region, updates, storeConfig.partitionKey.key, scoped.key(key), storeConfig.sortKeys[0]?.key, sortKey);
13
+ return actionResult(scoped.strip(item));
14
14
  }
15
15
  catch (error) {
16
16
  return actionResultErrorFromCaughtError(error, {
17
17
  InternalServerError: () => actionResultError(KeyValueStoreUpdateErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),
18
18
  ResourceNotFoundException: () => actionResultError(KeyValueStoreUpdateErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),
19
+ InvalidScopeError: (error) => actionResultError(KeyValueStoreUpdateErrorTypeEnum.InvalidScope, error.message),
20
+ KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreUpdateErrorTypeEnum.StoreNotFound, error.message),
19
21
  });
20
22
  }
21
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getKeyValueStoreUpdateActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAA+D,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,uBAAuB,EAEvB,gCAAgC,GACjC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAA2C,EAAE;IACtG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QACrE,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,MAAM,WAAW,GAAG,YAAY,CAAC,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,CAAE,CAAC;QAEvF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAE1I,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC5H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;aAChI,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC/I,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;CAC3E,CAAC,CAAC","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 KeyValueStoreUpdateActionProcessor,\n KeyValueStoreUpdateErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { updateItem } from '../../../logic/dynamo';\n\nconst getProcessKeyValueStoreUpdate = (qpqConfig: QPQConfig): KeyValueStoreUpdateActionProcessor<any> => {\n return async ({ keyValueStoreName, key, sortKey, updates, options }) => {\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 const item = await updateItem(dynamoTableName, region, updates, storeConfig.partitionKey.key, key, storeConfig.sortKeys[0]?.key, sortKey);\n\n return actionResult(item);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreUpdateErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreUpdateErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n });\n }\n };\n};\n\nexport const getKeyValueStoreUpdateActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Update]: getProcessKeyValueStoreUpdate(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getKeyValueStoreUpdateActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,6BAA6B,EAC7B,uBAAuB,EAEvB,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAA2C,EAAE;IACtG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QACrE,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,4BAA4B,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAE3F,MAAM,IAAI,GAAG,MAAM,UAAU,CAC3B,eAAe,EACf,MAAM,EACN,OAAO,EACP,WAAW,CAAC,YAAY,CAAC,GAAG,EAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EACf,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAC5B,OAAO,CACR,CAAC;YAEF,OAAO,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC5H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;gBAC/H,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC7G,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC;aACnH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC/I,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;CAC3E,CAAC,CAAC","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 KeyValueStoreUpdateActionProcessor,\n KeyValueStoreUpdateErrorTypeEnum,\n resolveKvsStoreConfigOrThrow,\n} from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { updateItem } from '../../../logic/dynamo';\n\nconst getProcessKeyValueStoreUpdate = (qpqConfig: QPQConfig): KeyValueStoreUpdateActionProcessor<any> => {\n return async ({ keyValueStoreName, key, sortKey, updates, 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 const item = await updateItem(\n dynamoTableName,\n region,\n updates,\n storeConfig.partitionKey.key,\n scoped.key(key),\n storeConfig.sortKeys[0]?.key,\n sortKey,\n );\n\n return actionResult(scoped.strip(item));\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreUpdateErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreUpdateErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n InvalidScopeError: (error) => actionResultError(KeyValueStoreUpdateErrorTypeEnum.InvalidScope, error.message),\n KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreUpdateErrorTypeEnum.StoreNotFound, error.message),\n });\n }\n };\n};\n\nexport const getKeyValueStoreUpdateActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Update]: getProcessKeyValueStoreUpdate(qpqConfig),\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResult, actionResultError, actionResultErrorFromCaughtError, ErrorTypeEnum, KeyValueStoreActionType, qpqCoreUtils, } from 'quidproquo-core';
2
+ import { actionResult, actionResultError, actionResultErrorFromCaughtError, getScopedKvsTranslatorOrThrow, KeyValueStoreActionType, resolveKvsStoreConfigOrThrow, } from 'quidproquo-core';
3
3
  import { KeyValueStoreUpsertErrorTypeEnum } from 'quidproquo-core';
4
4
  import { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';
5
5
  import { putItem } from '../../../logic/dynamo';
@@ -7,18 +7,18 @@ const getProcessKeyValueStoreUpsert = (qpqConfig) => {
7
7
  return async ({ keyValueStoreName, item, options }) => {
8
8
  const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');
9
9
  const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
10
- const storeConfig = qpqCoreUtils.getKeyValueStoreByName(qpqConfig, keyValueStoreName);
11
- if (!storeConfig) {
12
- return actionResultError(ErrorTypeEnum.NotFound, `Could not find key value store with name "${keyValueStoreName}"`);
13
- }
14
- const keys = [
15
- storeConfig.partitionKey,
16
- ...storeConfig.sortKeys,
17
- ...storeConfig.indexes.map((i) => i.partitionKey),
18
- ...storeConfig.indexes.filter((i) => !!i.sortKey).map((i) => i.sortKey),
19
- ];
20
10
  try {
21
- await putItem(dynamoTableName, item, keys, {
11
+ const storeConfig = resolveKvsStoreConfigOrThrow(qpqConfig, keyValueStoreName);
12
+ const keys = [
13
+ storeConfig.partitionKey,
14
+ ...storeConfig.sortKeys,
15
+ ...storeConfig.indexes.map((i) => i.partitionKey),
16
+ ...storeConfig.indexes.filter((i) => !!i.sortKey).map((i) => i.sortKey),
17
+ ];
18
+ // The scope lives inside the stored partition key value, so the item is
19
+ // persisted with a composed pk; reads strip it back off.
20
+ const scoped = getScopedKvsTranslatorOrThrow(qpqConfig, keyValueStoreName, options?.scope);
21
+ await putItem(dynamoTableName, scoped.item(item), keys, {
22
22
  expires: options?.ttlInSeconds,
23
23
  ifNotExistsAttribute: options?.ifNotExists ? storeConfig.partitionKey.key : undefined,
24
24
  }, region);
@@ -29,6 +29,8 @@ const getProcessKeyValueStoreUpsert = (qpqConfig) => {
29
29
  InternalServerError: () => actionResultError(KeyValueStoreUpsertErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),
30
30
  ResourceNotFoundException: () => actionResultError(KeyValueStoreUpsertErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),
31
31
  ConditionalCheckFailedException: () => actionResultError(KeyValueStoreUpsertErrorTypeEnum.Conflict, 'KVS item already exists'),
32
+ InvalidScopeError: (error) => actionResultError(KeyValueStoreUpsertErrorTypeEnum.InvalidScope, error.message),
33
+ KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreUpsertErrorTypeEnum.StoreNotFound, error.message),
32
34
  });
33
35
  }
34
36
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getKeyValueStoreUpsertActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreUpsertActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAGL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,aAAa,EACb,uBAAuB,EAGvB,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gCAAgC,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAA2C,EAAE;IACtG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACpD,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,MAAM,WAAW,GAAG,YAAY,CAAC,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QACtF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,6CAA6C,iBAAiB,GAAG,CAAC,CAAC;QACtH,CAAC;QAED,MAAM,IAAI,GAAG;YACX,WAAW,CAAC,YAAY;YACxB,GAAG,WAAW,CAAC,QAAQ;YACvB,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;YACjD,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAQ,CAAC;SACzE,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,OAAO,CACX,eAAe,EACf,IAAI,EACJ,IAAI,EACJ;gBACE,OAAO,EAAE,OAAO,EAAE,YAAY;gBAC9B,oBAAoB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;aACtF,EACD,MAAM,CACP,CAAC;YAEF,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC5H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;gBAC/H,+BAA+B,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,QAAQ,EAAE,yBAAyB,CAAC;aAC/H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC/I,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;CAC3E,CAAC,CAAC","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n ErrorTypeEnum,\n KeyValueStoreActionType,\n KeyValueStoreUpsertActionProcessor,\n QPQConfig,\n qpqCoreUtils,\n} from 'quidproquo-core';\nimport { KeyValueStoreUpsertErrorTypeEnum } from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { putItem } from '../../../logic/dynamo';\n\nconst getProcessKeyValueStoreUpsert = (qpqConfig: QPQConfig): KeyValueStoreUpsertActionProcessor<any> => {\n return async ({ keyValueStoreName, item, options }) => {\n const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n const storeConfig = qpqCoreUtils.getKeyValueStoreByName(qpqConfig, keyValueStoreName);\n if (!storeConfig) {\n return actionResultError(ErrorTypeEnum.NotFound, `Could not find key value store with name \"${keyValueStoreName}\"`);\n }\n\n const keys = [\n storeConfig.partitionKey,\n ...storeConfig.sortKeys,\n ...storeConfig.indexes.map((i) => i.partitionKey),\n ...storeConfig.indexes.filter((i) => !!i.sortKey).map((i) => i.sortKey!),\n ];\n\n try {\n await putItem(\n dynamoTableName,\n item,\n keys,\n {\n expires: options?.ttlInSeconds,\n ifNotExistsAttribute: options?.ifNotExists ? storeConfig.partitionKey.key : undefined,\n },\n region,\n );\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreUpsertErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreUpsertErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n ConditionalCheckFailedException: () => actionResultError(KeyValueStoreUpsertErrorTypeEnum.Conflict, 'KVS item already exists'),\n });\n }\n };\n};\n\nexport const getKeyValueStoreUpsertActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Upsert]: getProcessKeyValueStoreUpsert(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getKeyValueStoreUpsertActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/getKeyValueStoreUpsertActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAGL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,6BAA6B,EAC7B,uBAAuB,EAGvB,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gCAAgC,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAA2C,EAAE;IACtG,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACpD,MAAM,eAAe,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,4BAA4B,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAE/E,MAAM,IAAI,GAAG;gBACX,WAAW,CAAC,YAAY;gBACxB,GAAG,WAAW,CAAC,QAAQ;gBACvB,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;gBACjD,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAQ,CAAC;aACzE,CAAC;YAEF,wEAAwE;YACxE,yDAAyD;YACzD,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAE3F,MAAM,OAAO,CACX,eAAe,EACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EACjB,IAAI,EACJ;gBACE,OAAO,EAAE,OAAO,EAAE,YAAY;gBAC9B,oBAAoB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;aACtF,EACD,MAAM,CACP,CAAC;YAEF,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;gBAC5H,yBAAyB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;gBAC/H,+BAA+B,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,QAAQ,EAAE,yBAAyB,CAAC;gBAC9H,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC7G,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC;aACnH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAgC,KAAK,EAAE,SAAoB,EAAgC,EAAE,CAAC,CAAC;IAC/I,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,6BAA6B,CAAC,SAAS,CAAC;CAC3E,CAAC,CAAC","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n getScopedKvsTranslatorOrThrow,\n KeyValueStoreActionType,\n KeyValueStoreUpsertActionProcessor,\n QPQConfig,\n resolveKvsStoreConfigOrThrow,\n} from 'quidproquo-core';\nimport { KeyValueStoreUpsertErrorTypeEnum } from 'quidproquo-core';\n\nimport { getKvsDynamoTableNameFromConfig } from '../../../awsNamingUtils';\nimport { putItem } from '../../../logic/dynamo';\n\nconst getProcessKeyValueStoreUpsert = (qpqConfig: QPQConfig): KeyValueStoreUpsertActionProcessor<any> => {\n return async ({ keyValueStoreName, item, options }) => {\n const dynamoTableName = getKvsDynamoTableNameFromConfig(keyValueStoreName, qpqConfig, 'kvs');\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n const storeConfig = resolveKvsStoreConfigOrThrow(qpqConfig, keyValueStoreName);\n\n const keys = [\n storeConfig.partitionKey,\n ...storeConfig.sortKeys,\n ...storeConfig.indexes.map((i) => i.partitionKey),\n ...storeConfig.indexes.filter((i) => !!i.sortKey).map((i) => i.sortKey!),\n ];\n\n // The scope lives inside the stored partition key value, so the item is\n // persisted with a composed pk; reads strip it back off.\n const scoped = getScopedKvsTranslatorOrThrow(qpqConfig, keyValueStoreName, options?.scope);\n\n await putItem(\n dynamoTableName,\n scoped.item(item),\n keys,\n {\n expires: options?.ttlInSeconds,\n ifNotExistsAttribute: options?.ifNotExists ? storeConfig.partitionKey.key : undefined,\n },\n region,\n );\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InternalServerError: () => actionResultError(KeyValueStoreUpsertErrorTypeEnum.ServiceUnavailable, 'KVS Service Unavailable'),\n ResourceNotFoundException: () => actionResultError(KeyValueStoreUpsertErrorTypeEnum.ResourceNotFound, 'KVS Resource Not Found'),\n ConditionalCheckFailedException: () => actionResultError(KeyValueStoreUpsertErrorTypeEnum.Conflict, 'KVS item already exists'),\n InvalidScopeError: (error) => actionResultError(KeyValueStoreUpsertErrorTypeEnum.InvalidScope, error.message),\n KvsStoreNotFoundError: (error) => actionResultError(KeyValueStoreUpsertErrorTypeEnum.StoreNotFound, error.message),\n });\n }\n };\n};\n\nexport const getKeyValueStoreUpsertActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [KeyValueStoreActionType.Upsert]: getProcessKeyValueStoreUpsert(qpqConfig),\n});\n"]}
@@ -1,5 +1,6 @@
1
1
  import { getKeyValueStoreDeleteActionProcessor } from './getKeyValueStoreDeleteActionProcessor';
2
2
  import { getKeyValueStoreGetActionProcessor } from './getKeyValueStoreGetActionProcessor';
3
+ import { getKeyValueStoreGetAllActionProcessor } from './getKeyValueStoreGetAllActionProcessor';
3
4
  import { getKeyValueStoreQueryActionProcessor } from './getKeyValueStoreQueryActionProcessor';
4
5
  import { getKeyValueStoreScanActionProcessor } from './getKeyValueStoreScanActionProcessor';
5
6
  import { getKeyValueStoreUpdateActionProcessor } from './getKeyValueStoreUpdateActionProcessor';
@@ -7,6 +8,7 @@ import { getKeyValueStoreUpsertActionProcessor } from './getKeyValueStoreUpsertA
7
8
  export const getKeyValueStoreActionProcessor = async (qpqConfig, dynamicModuleLoader) => ({
8
9
  ...(await getKeyValueStoreDeleteActionProcessor(qpqConfig, dynamicModuleLoader)),
9
10
  ...(await getKeyValueStoreGetActionProcessor(qpqConfig, dynamicModuleLoader)),
11
+ ...(await getKeyValueStoreGetAllActionProcessor(qpqConfig, dynamicModuleLoader)),
10
12
  ...(await getKeyValueStoreUpsertActionProcessor(qpqConfig, dynamicModuleLoader)),
11
13
  ...(await getKeyValueStoreUpdateActionProcessor(qpqConfig, dynamicModuleLoader)),
12
14
  ...(await getKeyValueStoreQueryActionProcessor(qpqConfig, dynamicModuleLoader)),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,oCAAoC,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAEhG,MAAM,CAAC,MAAM,+BAA+B,GAAgC,KAAK,EAC/E,SAAoB,EACpB,mBAAwC,EACV,EAAE,CAAC,CAAC;IAClC,GAAG,CAAC,MAAM,qCAAqC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAChF,GAAG,CAAC,MAAM,kCAAkC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAC7E,GAAG,CAAC,MAAM,qCAAqC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAChF,GAAG,CAAC,MAAM,qCAAqC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAChF,GAAG,CAAC,MAAM,oCAAoC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAC/E,GAAG,CAAC,MAAM,mCAAmC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;CAC/E,CAAC,CAAC","sourcesContent":["import { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getKeyValueStoreDeleteActionProcessor } from './getKeyValueStoreDeleteActionProcessor';\nimport { getKeyValueStoreGetActionProcessor } from './getKeyValueStoreGetActionProcessor';\nimport { getKeyValueStoreQueryActionProcessor } from './getKeyValueStoreQueryActionProcessor';\nimport { getKeyValueStoreScanActionProcessor } from './getKeyValueStoreScanActionProcessor';\nimport { getKeyValueStoreUpdateActionProcessor } from './getKeyValueStoreUpdateActionProcessor';\nimport { getKeyValueStoreUpsertActionProcessor } from './getKeyValueStoreUpsertActionProcessor';\n\nexport const getKeyValueStoreActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n dynamicModuleLoader: DynamicModuleLoader,\n): Promise<ActionProcessorList> => ({\n ...(await getKeyValueStoreDeleteActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getKeyValueStoreGetActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getKeyValueStoreUpsertActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getKeyValueStoreUpdateActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getKeyValueStoreQueryActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getKeyValueStoreScanActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/keyValueStore/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,oCAAoC,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAEhG,MAAM,CAAC,MAAM,+BAA+B,GAAgC,KAAK,EAC/E,SAAoB,EACpB,mBAAwC,EACV,EAAE,CAAC,CAAC;IAClC,GAAG,CAAC,MAAM,qCAAqC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAChF,GAAG,CAAC,MAAM,kCAAkC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAC7E,GAAG,CAAC,MAAM,qCAAqC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAChF,GAAG,CAAC,MAAM,qCAAqC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAChF,GAAG,CAAC,MAAM,qCAAqC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAChF,GAAG,CAAC,MAAM,oCAAoC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAC/E,GAAG,CAAC,MAAM,mCAAmC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;CAC/E,CAAC,CAAC","sourcesContent":["import { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getKeyValueStoreDeleteActionProcessor } from './getKeyValueStoreDeleteActionProcessor';\nimport { getKeyValueStoreGetActionProcessor } from './getKeyValueStoreGetActionProcessor';\nimport { getKeyValueStoreGetAllActionProcessor } from './getKeyValueStoreGetAllActionProcessor';\nimport { getKeyValueStoreQueryActionProcessor } from './getKeyValueStoreQueryActionProcessor';\nimport { getKeyValueStoreScanActionProcessor } from './getKeyValueStoreScanActionProcessor';\nimport { getKeyValueStoreUpdateActionProcessor } from './getKeyValueStoreUpdateActionProcessor';\nimport { getKeyValueStoreUpsertActionProcessor } from './getKeyValueStoreUpsertActionProcessor';\n\nexport const getKeyValueStoreActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n dynamicModuleLoader: DynamicModuleLoader,\n): Promise<ActionProcessorList> => ({\n ...(await getKeyValueStoreDeleteActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getKeyValueStoreGetActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getKeyValueStoreGetAllActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getKeyValueStoreUpsertActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getKeyValueStoreUpdateActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getKeyValueStoreQueryActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getKeyValueStoreScanActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
@@ -5,8 +5,8 @@ const getProcessRequestEmailVerification = (qpqConfig) => {
5
5
  return async ({ userDirectoryName, accessToken }) => {
6
6
  const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
7
7
  try {
8
- await requestEmailVerificationCode(region, accessToken);
9
- return actionResult(void 0);
8
+ const deliveryDetails = await requestEmailVerificationCode(region, accessToken);
9
+ return actionResult(deliveryDetails);
10
10
  }
11
11
  catch (error) {
12
12
  return actionResultErrorFromCaughtError(error, {
@@ -1 +1 @@
1
- {"version":3,"file":"getUserDirectoryRequestEmailVerificationActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAGL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAEhC,uBAAuB,EAEvB,kDAAkD,GACnD,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AAEnG,MAAM,kCAAkC,GAAG,CAAC,SAAoB,EAAwD,EAAE;IACxH,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,4BAA4B,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAExD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,sBAAsB,EAAE,GAAG,EAAE,CAC3B,iBAAiB,CAAC,kDAAkD,CAAC,YAAY,EAAE,wCAAwC,CAAC;gBAC9H,sBAAsB,EAAE,GAAG,EAAE,CAC3B,iBAAiB,CAAC,kDAAkD,CAAC,aAAa,EAAE,2CAA2C,CAAC;gBAClI,4BAA4B,EAAE,GAAG,EAAE,CACjC,iBAAiB,CAAC,kDAAkD,CAAC,kBAAkB,EAAE,yCAAyC,CAAC;aACtI,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uDAAuD,GAAgC,KAAK,EACvG,SAAoB,EACU,EAAE,CAAC,CAAC;IAClC,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,EAAE,kCAAkC,CAAC,SAAS,CAAC;CAClG,CAAC,CAAC","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n QPQConfig,\n UserDirectoryActionType,\n UserDirectoryRequestEmailVerificationActionProcessor,\n UserDirectoryRequestEmailVerificationErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { requestEmailVerificationCode } from '../../../logic/cognito/requestEmailVerificationCode';\n\nconst getProcessRequestEmailVerification = (qpqConfig: QPQConfig): UserDirectoryRequestEmailVerificationActionProcessor => {\n return async ({ userDirectoryName, accessToken }) => {\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n await requestEmailVerificationCode(region, accessToken);\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n NotAuthorizedException: () =>\n actionResultError(UserDirectoryRequestEmailVerificationErrorTypeEnum.Unauthorized, 'Access token is invalid or has expired'),\n LimitExceededException: () =>\n actionResultError(UserDirectoryRequestEmailVerificationErrorTypeEnum.LimitExceeded, 'Too many attempts, please try again later'),\n CodeDeliveryFailureException: () =>\n actionResultError(UserDirectoryRequestEmailVerificationErrorTypeEnum.CodeDeliveryFailed, 'Could not deliver the verification code'),\n });\n }\n };\n};\n\nexport const getUserDirectoryRequestEmailVerificationActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n): Promise<ActionProcessorList> => ({\n [UserDirectoryActionType.RequestEmailVerification]: getProcessRequestEmailVerification(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getUserDirectoryRequestEmailVerificationActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAGL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAEhC,uBAAuB,EAEvB,kDAAkD,GACnD,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AAEnG,MAAM,kCAAkC,GAAG,CAAC,SAAoB,EAAwD,EAAE;IACxH,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,MAAM,4BAA4B,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAEhF,OAAO,YAAY,CAAC,eAAe,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,sBAAsB,EAAE,GAAG,EAAE,CAC3B,iBAAiB,CAAC,kDAAkD,CAAC,YAAY,EAAE,wCAAwC,CAAC;gBAC9H,sBAAsB,EAAE,GAAG,EAAE,CAC3B,iBAAiB,CAAC,kDAAkD,CAAC,aAAa,EAAE,2CAA2C,CAAC;gBAClI,4BAA4B,EAAE,GAAG,EAAE,CACjC,iBAAiB,CAAC,kDAAkD,CAAC,kBAAkB,EAAE,yCAAyC,CAAC;aACtI,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uDAAuD,GAAgC,KAAK,EACvG,SAAoB,EACU,EAAE,CAAC,CAAC;IAClC,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,EAAE,kCAAkC,CAAC,SAAS,CAAC;CAClG,CAAC,CAAC","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n QPQConfig,\n UserDirectoryActionType,\n UserDirectoryRequestEmailVerificationActionProcessor,\n UserDirectoryRequestEmailVerificationErrorTypeEnum,\n} from 'quidproquo-core';\n\nimport { requestEmailVerificationCode } from '../../../logic/cognito/requestEmailVerificationCode';\n\nconst getProcessRequestEmailVerification = (qpqConfig: QPQConfig): UserDirectoryRequestEmailVerificationActionProcessor => {\n return async ({ userDirectoryName, accessToken }) => {\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n const deliveryDetails = await requestEmailVerificationCode(region, accessToken);\n\n return actionResult(deliveryDetails);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n NotAuthorizedException: () =>\n actionResultError(UserDirectoryRequestEmailVerificationErrorTypeEnum.Unauthorized, 'Access token is invalid or has expired'),\n LimitExceededException: () =>\n actionResultError(UserDirectoryRequestEmailVerificationErrorTypeEnum.LimitExceeded, 'Too many attempts, please try again later'),\n CodeDeliveryFailureException: () =>\n actionResultError(UserDirectoryRequestEmailVerificationErrorTypeEnum.CodeDeliveryFailed, 'Could not deliver the verification code'),\n });\n }\n };\n};\n\nexport const getUserDirectoryRequestEmailVerificationActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n): Promise<ActionProcessorList> => ({\n [UserDirectoryActionType.RequestEmailVerification]: getProcessRequestEmailVerification(qpqConfig),\n});\n"]}
@@ -1,8 +1,18 @@
1
- import { actionResult, UserDirectoryActionType, } from 'quidproquo-core';
1
+ import { actionResult, actionResultError, ErrorTypeEnum, UserDirectoryActionType, } from 'quidproquo-core';
2
2
  import { decodeAccessToken } from '../../../logic/cognito';
3
3
  const getProcessSetAccessToken = (qpqConfig) => {
4
4
  return async ({ accessToken, userDirectoryName }, session, apl, logger, updateSession) => {
5
- const decodedAccessToken = await decodeAccessToken(userDirectoryName, qpqConfig, accessToken, false);
5
+ // decodeAccessToken throws on a missing/unverifiable/expired token; surface that
6
+ // as a typed Unauthorized result (matching the dev-server processor and
7
+ // ReadAccessToken) instead of letting the raw error escape as a GenericError.
8
+ // The session is left untouched on failure.
9
+ let decodedAccessToken;
10
+ try {
11
+ decodedAccessToken = await decodeAccessToken(userDirectoryName, qpqConfig, accessToken, false);
12
+ }
13
+ catch {
14
+ return actionResultError(ErrorTypeEnum.Unauthorized, 'Invalid accessToken');
15
+ }
6
16
  updateSession({
7
17
  decodedAccessToken: decodedAccessToken,
8
18
  accessToken,
@@ -1 +1 @@
1
- {"version":3,"file":"getUserDirectorySetAccessTokenActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/userDirectory/getUserDirectorySetAccessTokenActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAEZ,uBAAuB,GAExB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,wBAAwB,GAAG,CAAC,SAAoB,EAA8C,EAAE;IACpG,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE;QACvF,MAAM,kBAAkB,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAErG,aAAa,CAAC;YACZ,kBAAkB,EAAE,kBAAkB;YACtC,WAAW;SACZ,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6CAA6C,GAAgC,KAAK,EAC7F,SAAoB,EACU,EAAE,CAAC,CAAC;IAClC,CAAC,uBAAuB,CAAC,cAAc,CAAC,EAAE,wBAAwB,CAAC,SAAS,CAAC;CAC9E,CAAC,CAAC","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n QPQConfig,\n UserDirectoryActionType,\n UserDirectorySetAccessTokenActionProcessor,\n} from 'quidproquo-core';\n\nimport { decodeAccessToken } from '../../../logic/cognito';\n\nconst getProcessSetAccessToken = (qpqConfig: QPQConfig): UserDirectorySetAccessTokenActionProcessor => {\n return async ({ accessToken, userDirectoryName }, session, apl, logger, updateSession) => {\n const decodedAccessToken = await decodeAccessToken(userDirectoryName, qpqConfig, accessToken, false);\n\n updateSession({\n decodedAccessToken: decodedAccessToken,\n accessToken,\n });\n\n return actionResult(decodedAccessToken);\n };\n};\n\nexport const getUserDirectorySetAccessTokenActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n): Promise<ActionProcessorList> => ({\n [UserDirectoryActionType.SetAccessToken]: getProcessSetAccessToken(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getUserDirectorySetAccessTokenActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/userDirectory/getUserDirectorySetAccessTokenActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,iBAAiB,EAEjB,aAAa,EAEb,uBAAuB,GAExB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,wBAAwB,GAAG,CAAC,SAAoB,EAA8C,EAAE;IACpG,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE;QACvF,iFAAiF;QACjF,wEAAwE;QACxE,8EAA8E;QAC9E,4CAA4C;QAC5C,IAAI,kBAAsC,CAAC;QAC3C,IAAI,CAAC;YACH,kBAAkB,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACjG,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,iBAAiB,CAAC,aAAa,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;QAC9E,CAAC;QAED,aAAa,CAAC;YACZ,kBAAkB,EAAE,kBAAkB;YACtC,WAAW;SACZ,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6CAA6C,GAAgC,KAAK,EAC7F,SAAoB,EACU,EAAE,CAAC,CAAC;IAClC,CAAC,uBAAuB,CAAC,cAAc,CAAC,EAAE,wBAAwB,CAAC,SAAS,CAAC;CAC9E,CAAC,CAAC","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n DecodedAccessToken,\n ErrorTypeEnum,\n QPQConfig,\n UserDirectoryActionType,\n UserDirectorySetAccessTokenActionProcessor,\n} from 'quidproquo-core';\n\nimport { decodeAccessToken } from '../../../logic/cognito';\n\nconst getProcessSetAccessToken = (qpqConfig: QPQConfig): UserDirectorySetAccessTokenActionProcessor => {\n return async ({ accessToken, userDirectoryName }, session, apl, logger, updateSession) => {\n // decodeAccessToken throws on a missing/unverifiable/expired token; surface that\n // as a typed Unauthorized result (matching the dev-server processor and\n // ReadAccessToken) instead of letting the raw error escape as a GenericError.\n // The session is left untouched on failure.\n let decodedAccessToken: DecodedAccessToken;\n try {\n decodedAccessToken = await decodeAccessToken(userDirectoryName, qpqConfig, accessToken, false);\n } catch {\n return actionResultError(ErrorTypeEnum.Unauthorized, 'Invalid accessToken');\n }\n\n updateSession({\n decodedAccessToken: decodedAccessToken,\n accessToken,\n });\n\n return actionResult(decodedAccessToken);\n };\n};\n\nexport const getUserDirectorySetAccessTokenActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n): Promise<ActionProcessorList> => ({\n [UserDirectoryActionType.SetAccessToken]: getProcessSetAccessToken(qpqConfig),\n});\n"]}
@@ -2,9 +2,9 @@ import { askProcessEvent, askProcessEventWithGroupOrdering, QpqRuntimeType } fro
2
2
  import { getSqsQueueEventProcessor } from '../getActionProcessor';
3
3
  import { getQueueConfigSetting } from '../getActionProcessor/core/event/sqs/queue/getEventMatchStoryActionProcessor';
4
4
  import { getQpqLambdaRuntimeForEvent } from './helpers/getQpqLambdaRuntimeForEvent';
5
- const getProcessEventStory = () => {
5
+ const getProcessEventStory = (qpqConfig) => {
6
6
  // FIFO queues must process records one group at a time, blocking a group once a record fails
7
- if (getQueueConfigSetting().isFifo) {
7
+ if (getQueueConfigSetting(qpqConfig).isFifo) {
8
8
  return function* askProcessQueueEventWithGroupOrdering(...eventArguments) {
9
9
  return yield* askProcessEventWithGroupOrdering((record) => record.groupId, ...eventArguments);
10
10
  };
@@ -16,5 +16,5 @@ export const getSqsEvent_queueEvent = (dynamicModuleLoader, qpqConfig) => getQpq
16
16
  depth: 0,
17
17
  context: {},
18
18
  };
19
- }, getSqsQueueEventProcessor, dynamicModuleLoader, qpqConfig, getProcessEventStory);
19
+ }, getSqsQueueEventProcessor, dynamicModuleLoader, qpqConfig, () => getProcessEventStory(qpqConfig));
20
20
  //# sourceMappingURL=getSqsEvent_queueEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSqsEvent_queueEvent.js","sourceRoot":"","sources":["../../../src/lambdaHandlers/getSqsEvent_queueEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gCAAgC,EAAkC,cAAc,EAAc,MAAM,iBAAiB,CAAC;AAIhJ,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8EAA8E,CAAC;AACrH,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAEpF,MAAM,oBAAoB,GAAG,GAA2B,EAAE;IACxD,6FAA6F;IAC7F,IAAI,qBAAqB,EAAE,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC,CAAC,qCAAqC,CAAC,GAAG,cAAc;YACtE,OAAO,KAAK,CAAC,CAAC,gCAAgC,CAAC,CAAC,MAAuB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC;QACjH,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,mBAAwC,EAAE,SAAoB,EAAE,EAAE,CACvG,2BAA2B,CACzB,cAAc,CAAC,WAAW,EAC1B,CAAC,KAAK,EAAE,EAAE;IACR,OAAO;QACL,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC,EACD,yBAAyB,EACzB,mBAAmB,EACnB,SAAS,EACT,oBAAoB,CACrB,CAAC","sourcesContent":["import { askProcessEvent, askProcessEventWithGroupOrdering, DynamicModuleLoader, QPQConfig, QpqRuntimeType, QueueEvent } from 'quidproquo-core';\n\nimport { SQSEvent } from 'aws-lambda';\n\nimport { getSqsQueueEventProcessor } from '../getActionProcessor';\nimport { getQueueConfigSetting } from '../getActionProcessor/core/event/sqs/queue/getEventMatchStoryActionProcessor';\nimport { getQpqLambdaRuntimeForEvent } from './helpers/getQpqLambdaRuntimeForEvent';\n\nconst getProcessEventStory = (): typeof askProcessEvent => {\n // FIFO queues must process records one group at a time, blocking a group once a record fails\n if (getQueueConfigSetting().isFifo) {\n return function* askProcessQueueEventWithGroupOrdering(...eventArguments) {\n return yield* askProcessEventWithGroupOrdering((record: QueueEvent<any>) => record.groupId, ...eventArguments);\n };\n }\n\n return askProcessEvent;\n};\n\nexport const getSqsEvent_queueEvent = (dynamicModuleLoader: DynamicModuleLoader, qpqConfig: QPQConfig) =>\n getQpqLambdaRuntimeForEvent<SQSEvent>(\n QpqRuntimeType.QUEUE_EVENT,\n (event) => {\n return {\n depth: 0,\n context: {},\n };\n },\n getSqsQueueEventProcessor,\n dynamicModuleLoader,\n qpqConfig,\n getProcessEventStory,\n );\n"]}
1
+ {"version":3,"file":"getSqsEvent_queueEvent.js","sourceRoot":"","sources":["../../../src/lambdaHandlers/getSqsEvent_queueEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gCAAgC,EAAkC,cAAc,EAAc,MAAM,iBAAiB,CAAC;AAIhJ,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8EAA8E,CAAC;AACrH,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAEpF,MAAM,oBAAoB,GAAG,CAAC,SAAoB,EAA0B,EAAE;IAC5E,6FAA6F;IAC7F,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,QAAQ,CAAC,CAAC,qCAAqC,CAAC,GAAG,cAAc;YACtE,OAAO,KAAK,CAAC,CAAC,gCAAgC,CAAC,CAAC,MAAuB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC;QACjH,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,mBAAwC,EAAE,SAAoB,EAAE,EAAE,CACvG,2BAA2B,CACzB,cAAc,CAAC,WAAW,EAC1B,CAAC,KAAK,EAAE,EAAE;IACR,OAAO;QACL,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC,EACD,yBAAyB,EACzB,mBAAmB,EACnB,SAAS,EACT,GAAG,EAAE,CAAC,oBAAoB,CAAC,SAAS,CAAC,CACtC,CAAC","sourcesContent":["import { askProcessEvent, askProcessEventWithGroupOrdering, DynamicModuleLoader, QPQConfig, QpqRuntimeType, QueueEvent } from 'quidproquo-core';\n\nimport { SQSEvent } from 'aws-lambda';\n\nimport { getSqsQueueEventProcessor } from '../getActionProcessor';\nimport { getQueueConfigSetting } from '../getActionProcessor/core/event/sqs/queue/getEventMatchStoryActionProcessor';\nimport { getQpqLambdaRuntimeForEvent } from './helpers/getQpqLambdaRuntimeForEvent';\n\nconst getProcessEventStory = (qpqConfig: QPQConfig): typeof askProcessEvent => {\n // FIFO queues must process records one group at a time, blocking a group once a record fails\n if (getQueueConfigSetting(qpqConfig).isFifo) {\n return function* askProcessQueueEventWithGroupOrdering(...eventArguments) {\n return yield* askProcessEventWithGroupOrdering((record: QueueEvent<any>) => record.groupId, ...eventArguments);\n };\n }\n\n return askProcessEvent;\n};\n\nexport const getSqsEvent_queueEvent = (dynamicModuleLoader: DynamicModuleLoader, qpqConfig: QPQConfig) =>\n getQpqLambdaRuntimeForEvent<SQSEvent>(\n QpqRuntimeType.QUEUE_EVENT,\n (event) => {\n return {\n depth: 0,\n context: {},\n };\n },\n getSqsQueueEventProcessor,\n dynamicModuleLoader,\n qpqConfig,\n () => getProcessEventStory(qpqConfig),\n );\n"]}
@@ -1 +1,2 @@
1
- export declare const requestEmailVerificationCode: (region: string, accessToken: string) => Promise<void>;
1
+ import { AuthenticationDeliveryDetails } from 'quidproquo-core';
2
+ export declare const requestEmailVerificationCode: (region: string, accessToken: string) => Promise<AuthenticationDeliveryDetails>;
@@ -8,6 +8,12 @@ export const requestEmailVerificationCode = async (region, accessToken) => {
8
8
  AccessToken: accessToken,
9
9
  AttributeName: 'email', // Request verification for the email attribute
10
10
  };
11
- const requestEmailVerificationCodeResponse = await cognitoClient.send(new GetUserAttributeVerificationCodeCommand(params));
11
+ const response = await cognitoClient.send(new GetUserAttributeVerificationCodeCommand(params));
12
+ const deliveryInfo = {
13
+ attributeName: response.CodeDeliveryDetails?.AttributeName || 'email',
14
+ destination: response.CodeDeliveryDetails?.Destination || 'unknown@email.com',
15
+ deliveryMedium: response.CodeDeliveryDetails?.DeliveryMedium || 'EMAIL',
16
+ };
17
+ return deliveryInfo;
12
18
  };
13
19
  //# sourceMappingURL=requestEmailVerificationCode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requestEmailVerificationCode.js","sourceRoot":"","sources":["../../../../src/logic/cognito/requestEmailVerificationCode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,uCAAuC,GAExC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,MAAc,EAAE,WAAmB,EAAE,EAAE;IACxF,MAAM,aAAa,GAAG,eAAe,CAAC,6BAA6B,EAAE;QACnE,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,MAAM,GAAiD;QAC3D,WAAW,EAAE,WAAW;QACxB,aAAa,EAAE,OAAO,EAAE,+CAA+C;KACxE,CAAC;IAEF,MAAM,oCAAoC,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,uCAAuC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7H,CAAC,CAAC","sourcesContent":["import {\n CognitoIdentityProviderClient,\n GetUserAttributeVerificationCodeCommand,\n GetUserAttributeVerificationCodeCommandInput,\n} from '@aws-sdk/client-cognito-identity-provider';\n\nimport { createAwsClient } from '../createAwsClient';\n\nexport const requestEmailVerificationCode = async (region: string, accessToken: string) => {\n const cognitoClient = createAwsClient(CognitoIdentityProviderClient, {\n region,\n });\n\n const params: GetUserAttributeVerificationCodeCommandInput = {\n AccessToken: accessToken,\n AttributeName: 'email', // Request verification for the email attribute\n };\n\n const requestEmailVerificationCodeResponse = await cognitoClient.send(new GetUserAttributeVerificationCodeCommand(params));\n};\n"]}
1
+ {"version":3,"file":"requestEmailVerificationCode.js","sourceRoot":"","sources":["../../../../src/logic/cognito/requestEmailVerificationCode.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,6BAA6B,EAC7B,uCAAuC,GAExC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,MAAc,EAAE,WAAmB,EAA0C,EAAE;IAChI,MAAM,aAAa,GAAG,eAAe,CAAC,6BAA6B,EAAE;QACnE,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,MAAM,GAAiD;QAC3D,WAAW,EAAE,WAAW;QACxB,aAAa,EAAE,OAAO,EAAE,+CAA+C;KACxE,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,uCAAuC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE/F,MAAM,YAAY,GAAG;QACnB,aAAa,EAAE,QAAQ,CAAC,mBAAmB,EAAE,aAAa,IAAI,OAAO;QACrE,WAAW,EAAE,QAAQ,CAAC,mBAAmB,EAAE,WAAW,IAAI,mBAAmB;QAC7E,cAAc,EAAE,QAAQ,CAAC,mBAAmB,EAAE,cAAc,IAAI,OAAO;KACvC,CAAC;IAEnC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC","sourcesContent":["import { AuthenticationDeliveryDetails } from 'quidproquo-core';\n\nimport {\n CognitoIdentityProviderClient,\n GetUserAttributeVerificationCodeCommand,\n GetUserAttributeVerificationCodeCommandInput,\n} from '@aws-sdk/client-cognito-identity-provider';\n\nimport { createAwsClient } from '../createAwsClient';\n\nexport const requestEmailVerificationCode = async (region: string, accessToken: string): Promise<AuthenticationDeliveryDetails> => {\n const cognitoClient = createAwsClient(CognitoIdentityProviderClient, {\n region,\n });\n\n const params: GetUserAttributeVerificationCodeCommandInput = {\n AccessToken: accessToken,\n AttributeName: 'email', // Request verification for the email attribute\n };\n\n const response = await cognitoClient.send(new GetUserAttributeVerificationCodeCommand(params));\n\n const deliveryInfo = {\n attributeName: response.CodeDeliveryDetails?.AttributeName || 'email',\n destination: response.CodeDeliveryDetails?.Destination || 'unknown@email.com',\n deliveryMedium: response.CodeDeliveryDetails?.DeliveryMedium || 'EMAIL',\n } as AuthenticationDeliveryDetails;\n\n return deliveryInfo;\n};\n"]}
@@ -1 +1,2 @@
1
- export declare function getAllItems(tableName: string, region: string): Promise<any[]>;
1
+ import { KvsQueryOperation } from 'quidproquo-core';
2
+ export declare function getAllItems(tableName: string, region: string, filterExpression?: KvsQueryOperation): Promise<any[]>;
@@ -1,17 +1,22 @@
1
1
  import { DynamoDBClient, ScanCommand } from '@aws-sdk/client-dynamodb';
2
2
  import { createAwsClient } from '../createAwsClient';
3
- export async function getAllItems(tableName, region) {
3
+ import { convertDynamoMapToObject } from './convertObjectToDynamoMap';
4
+ import { buildDynamoQueryExpression, buildExpressionAttributeNames, buildExpressionAttributeValues } from './qpqDynamoOrm';
5
+ export async function getAllItems(tableName, region, filterExpression) {
4
6
  const dynamoDBClient = createAwsClient(DynamoDBClient, { region });
5
7
  let records = [];
6
8
  let lastEvaluatedKey;
7
9
  do {
8
10
  const scanParams = {
9
11
  TableName: tableName,
12
+ FilterExpression: buildDynamoQueryExpression(filterExpression),
13
+ ExpressionAttributeValues: filterExpression && buildExpressionAttributeValues([filterExpression]),
14
+ ExpressionAttributeNames: filterExpression && buildExpressionAttributeNames([filterExpression]),
10
15
  ExclusiveStartKey: lastEvaluatedKey,
11
16
  };
12
17
  try {
13
18
  const result = await dynamoDBClient.send(new ScanCommand(scanParams));
14
- records = records.concat(result.Items);
19
+ records = records.concat((result.Items || []).map((item) => convertDynamoMapToObject(item)));
15
20
  lastEvaluatedKey = result.LastEvaluatedKey;
16
21
  }
17
22
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"getAllItems.js","sourceRoot":"","sources":["../../../../src/logic/dynamo/getAllItems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAoB,MAAM,0BAA0B,CAAC;AAEzF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAiB,EAAE,MAAc;IACjE,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEnE,IAAI,OAAO,GAAU,EAAE,CAAC;IACxB,IAAI,gBAAoD,CAAC;IAEzD,GAAG,CAAC;QACF,MAAM,UAAU,GAAqB;YACnC,SAAS,EAAE,SAAS;YACpB,iBAAiB,EAAE,gBAAgB;SACpC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;YACtE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAc,CAAC,CAAC;YAChD,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,QAAQ,gBAAgB,EAAE;IAE3B,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { DynamoDBClient, ScanCommand, ScanCommandInput } from '@aws-sdk/client-dynamodb';\n\nimport { createAwsClient } from '../createAwsClient';\n\nexport async function getAllItems(tableName: string, region: string): Promise<any[]> {\n const dynamoDBClient = createAwsClient(DynamoDBClient, { region });\n\n let records: any[] = [];\n let lastEvaluatedKey: { [key: string]: any } | undefined;\n\n do {\n const scanParams: ScanCommandInput = {\n TableName: tableName,\n ExclusiveStartKey: lastEvaluatedKey,\n };\n\n try {\n const result = await dynamoDBClient.send(new ScanCommand(scanParams));\n records = records.concat(result.Items as any[]);\n lastEvaluatedKey = result.LastEvaluatedKey;\n } catch (error) {\n console.error('Error scanning DynamoDB table:', error);\n throw error;\n }\n } while (lastEvaluatedKey);\n\n return records;\n}\n"]}
1
+ {"version":3,"file":"getAllItems.js","sourceRoot":"","sources":["../../../../src/logic/dynamo/getAllItems.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAoB,MAAM,0BAA0B,CAAC;AAEzF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAE3H,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,gBAAoC;IACvG,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEnE,IAAI,OAAO,GAAU,EAAE,CAAC;IACxB,IAAI,gBAAoD,CAAC;IAEzD,GAAG,CAAC;QACF,MAAM,UAAU,GAAqB;YACnC,SAAS,EAAE,SAAS;YACpB,gBAAgB,EAAE,0BAA0B,CAAC,gBAAgB,CAAC;YAC9D,yBAAyB,EAAE,gBAAgB,IAAI,8BAA8B,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACjG,wBAAwB,EAAE,gBAAgB,IAAI,6BAA6B,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC/F,iBAAiB,EAAE,gBAAgB;SACpC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;YACtE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7F,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,QAAQ,gBAAgB,EAAE;IAE3B,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { KvsQueryOperation } from 'quidproquo-core';\n\nimport { DynamoDBClient, ScanCommand, ScanCommandInput } from '@aws-sdk/client-dynamodb';\n\nimport { createAwsClient } from '../createAwsClient';\nimport { convertDynamoMapToObject } from './convertObjectToDynamoMap';\nimport { buildDynamoQueryExpression, buildExpressionAttributeNames, buildExpressionAttributeValues } from './qpqDynamoOrm';\n\nexport async function getAllItems(tableName: string, region: string, filterExpression?: KvsQueryOperation): Promise<any[]> {\n const dynamoDBClient = createAwsClient(DynamoDBClient, { region });\n\n let records: any[] = [];\n let lastEvaluatedKey: { [key: string]: any } | undefined;\n\n do {\n const scanParams: ScanCommandInput = {\n TableName: tableName,\n FilterExpression: buildDynamoQueryExpression(filterExpression),\n ExpressionAttributeValues: filterExpression && buildExpressionAttributeValues([filterExpression]),\n ExpressionAttributeNames: filterExpression && buildExpressionAttributeNames([filterExpression]),\n ExclusiveStartKey: lastEvaluatedKey,\n };\n\n try {\n const result = await dynamoDBClient.send(new ScanCommand(scanParams));\n records = records.concat((result.Items || []).map((item) => convertDynamoMapToObject(item)));\n lastEvaluatedKey = result.LastEvaluatedKey;\n } catch (error) {\n console.error('Error scanning DynamoDB table:', error);\n throw error;\n }\n } while (lastEvaluatedKey);\n\n return records;\n}\n"]}