quidproquo-actionprocessor-awslambda 0.0.263 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/awsNamingUtils.d.ts +1 -0
- package/lib/commonjs/awsNamingUtils.js +12 -1
- package/lib/commonjs/getActionProcessor/core/ai/aiModelMap.js +9 -9
- package/lib/commonjs/getActionProcessor/core/ai/getAiPromptActionProcessor.js +8 -41
- package/lib/commonjs/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js +14 -50
- package/lib/commonjs/getActionProcessor/core/ai/logic/aiStreamPartMappers.d.ts +6 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/aiStreamPartMappers.js +57 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/index.d.ts +32 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/index.js +48 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamAbort.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamAbort.js +9 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamCustom.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamCustom.js +9 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamError.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamError.js +10 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFilePart.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFilePart.js +12 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinish.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinish.js +11 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.js +11 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamPart.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamPart.js +9 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamRaw.d.ts +2 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamRaw.js +8 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.js +10 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.js +9 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.js +12 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.js +9 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.js +16 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStart.d.ts +2 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStart.js +8 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStartStep.d.ts +2 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStartStep.js +8 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.js +10 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.js +9 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextStart.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextStart.js +9 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.js +12 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.js +13 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolCall.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolCall.js +11 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolError.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolError.js +13 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.js +10 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.js +9 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.js +10 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.js +10 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolResult.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolResult.js +12 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/prepareAiPromptCall.d.ts +19 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/prepareAiPromptCall.js +53 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/toAiStreamUsage.d.ts +6 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/toAiStreamUsage.js +9 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/toErrorMessage.d.ts +1 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/toErrorMessage.js +11 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/toSdkMessages.d.ts +3 -0
- package/lib/commonjs/getActionProcessor/core/ai/logic/toSdkMessages.js +82 -0
- package/lib/commonjs/getActionProcessor/core/ai/types/aiSdkStreamPart.d.ts +5 -0
- package/lib/commonjs/getActionProcessor/core/ai/types/aiSdkStreamPart.js +2 -0
- package/lib/commonjs/getActionProcessor/core/ai/types/index.d.ts +1 -0
- package/lib/commonjs/{logic/textract → getActionProcessor/core/ai/types}/index.js +1 -2
- package/lib/commonjs/getActionProcessor/core/apiKeyValidation/getApiKeyValidationValidateActionProcessor.js +13 -2
- package/lib/commonjs/getActionProcessor/core/config/getConfigGetSecretActionProcessor.js +10 -2
- package/lib/commonjs/getActionProcessor/core/config/getConfigSetParameterActionProcessor.js +10 -2
- package/lib/commonjs/getActionProcessor/core/config/index.js +1 -2
- package/lib/commonjs/getActionProcessor/core/eventBus/getEventBusSendMessagesActionProcessor.js +15 -5
- package/lib/commonjs/getActionProcessor/core/file/getFileDeleteActionProcessor.js +17 -9
- package/lib/commonjs/getActionProcessor/core/file/getFileExistsActionProcessor.js +9 -1
- package/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.js +5 -0
- package/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +5 -0
- package/lib/commonjs/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.js +13 -2
- package/lib/commonjs/getActionProcessor/core/file/getFileListDirectoryActionProcessor.js +16 -7
- package/lib/commonjs/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.js +11 -2
- package/lib/commonjs/getActionProcessor/core/file/getFileStreamOpenActionProcessor.js +7 -2
- package/lib/commonjs/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.js +11 -2
- package/lib/commonjs/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.js +11 -2
- package/lib/commonjs/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.js +11 -2
- package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.js +10 -2
- package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.js +10 -2
- package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.js +10 -2
- package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.js +10 -2
- package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.js +12 -3
- package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.js +10 -2
- package/lib/commonjs/getActionProcessor/core/queue/getQueueSendMessageActionProcessor.js +16 -6
- package/lib/commonjs/getActionProcessor/core/system/getSystemExecuteStoryActionProcessor.js +5 -4
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.d.ts +2 -0
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.js +28 -0
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryChangePasswordActionProcessor.js +11 -2
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryConfirmEmailVerificationActionProcessor.js +11 -2
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryConfirmForgotPasswordActionProcessor.js +12 -2
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryCreateUserActionProcessor.js +12 -3
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryDecodeAccessTokenActionProcessor.js +1 -1
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryForgotPasswordActionProcessor.js +10 -2
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryGetUserAttributesByUserIdActionProcessor.js +9 -2
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersActionProcessor.js +10 -2
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersByAttributeActionProcessor.js +10 -2
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryRefreshTokenActionProcessor.js +17 -3
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.js +11 -2
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryRespondToAuthChallengeActionProcessor.js +34 -2
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectorySetPasswordActionProcessor.js +12 -2
- package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectorySetUserAttributesActionProcessor.js +13 -2
- package/lib/commonjs/getActionProcessor/core/userDirectory/index.js +2 -1
- package/lib/commonjs/getActionProcessor/webserver/index.d.ts +0 -1
- package/lib/commonjs/getActionProcessor/webserver/index.js +1 -3
- package/lib/commonjs/getActionProcessor/webserver/serviceFunction/getServiceFunctionExecuteActionProcessor.js +1 -1
- package/lib/commonjs/index.d.ts +1 -0
- package/lib/commonjs/index.js +3 -0
- package/lib/commonjs/lambdaExtensions/getLogExtensionLayerPath.d.ts +10 -0
- package/lib/commonjs/lambdaExtensions/getLogExtensionLayerPath.js +20 -0
- package/lib/commonjs/lambdaExtensions/logExtensionPort.d.ts +1 -0
- package/lib/commonjs/lambdaExtensions/logExtensionPort.js +7 -0
- package/lib/commonjs/lambdaHandlers/getApiGatewayEventHandler.js +4 -8
- package/lib/commonjs/lambdaHandlers/getApiGatewayEventHandler_redirect.js +0 -2
- package/lib/commonjs/lambdaHandlers/helpers/getQpqLambdaRuntimeForEvent.js +2 -2
- package/lib/commonjs/lambdaHandlers/helpers/logger.d.ts +4 -1
- package/lib/commonjs/lambdaHandlers/helpers/logger.js +94 -36
- package/lib/commonjs/logic/cognito/associateSoftwareToken.d.ts +2 -0
- package/lib/commonjs/logic/cognito/associateSoftwareToken.js +28 -0
- package/lib/commonjs/logic/cognito/decodeValidJwt.js +2 -1
- package/lib/commonjs/logic/cognito/getUserAttributesBySub.d.ts +4 -0
- package/lib/commonjs/logic/cognito/getUserAttributesBySub.js +12 -2
- package/lib/commonjs/logic/cognito/utils/transformCognitoResponse.js +2 -0
- package/lib/commonjs/logic/cognito/verifySoftwareToken.d.ts +1 -0
- package/lib/commonjs/logic/cognito/verifySoftwareToken.js +28 -0
- package/lib/commonjs/logic/dynamo/qpqDynamoOrm/getDynamoTableIndexByConfigAndQuery.js +8 -2
- package/lib/commonjs/logic/s3/generatePresignedUploadUrl.js +8 -1
- package/lib/commonjs/logic/s3/objectExists.js +9 -3
- package/lib/esm/awsNamingUtils.d.ts +1 -0
- package/lib/esm/awsNamingUtils.js +10 -0
- package/lib/esm/getActionProcessor/core/ai/aiModelMap.js +9 -9
- package/lib/esm/getActionProcessor/core/ai/getAiPromptActionProcessor.js +12 -39
- package/lib/esm/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js +18 -47
- package/lib/esm/getActionProcessor/core/ai/logic/aiStreamPartMappers.d.ts +6 -0
- package/lib/esm/getActionProcessor/core/ai/logic/aiStreamPartMappers.js +54 -0
- package/lib/esm/getActionProcessor/core/ai/logic/index.d.ts +32 -0
- package/lib/esm/getActionProcessor/core/ai/logic/index.js +32 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamAbort.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamAbort.js +5 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamCustom.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamCustom.js +5 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamError.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamError.js +6 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFilePart.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFilePart.js +8 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinish.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinish.js +7 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.js +7 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamPart.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamPart.js +5 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamRaw.d.ts +2 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamRaw.js +4 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.js +6 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.js +5 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.js +8 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.js +5 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.js +12 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStart.d.ts +2 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStart.js +4 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStartStep.d.ts +2 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStartStep.js +4 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.js +6 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.js +5 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextStart.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextStart.js +5 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.js +8 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.js +9 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolCall.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolCall.js +7 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolError.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolError.js +9 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.js +6 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.js +5 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.js +6 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.js +6 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolResult.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolResult.js +8 -0
- package/lib/esm/getActionProcessor/core/ai/logic/prepareAiPromptCall.d.ts +19 -0
- package/lib/esm/getActionProcessor/core/ai/logic/prepareAiPromptCall.js +40 -0
- package/lib/esm/getActionProcessor/core/ai/logic/toAiStreamUsage.d.ts +6 -0
- package/lib/esm/getActionProcessor/core/ai/logic/toAiStreamUsage.js +5 -0
- package/lib/esm/getActionProcessor/core/ai/logic/toErrorMessage.d.ts +1 -0
- package/lib/esm/getActionProcessor/core/ai/logic/toErrorMessage.js +7 -0
- package/lib/esm/getActionProcessor/core/ai/logic/toSdkMessages.d.ts +3 -0
- package/lib/esm/getActionProcessor/core/ai/logic/toSdkMessages.js +78 -0
- package/lib/esm/getActionProcessor/core/ai/types/aiSdkStreamPart.d.ts +5 -0
- package/lib/esm/getActionProcessor/core/ai/types/aiSdkStreamPart.js +1 -0
- package/lib/esm/getActionProcessor/core/ai/types/index.d.ts +1 -0
- package/lib/esm/getActionProcessor/core/ai/types/index.js +1 -0
- package/lib/esm/getActionProcessor/core/apiKeyValidation/getApiKeyValidationValidateActionProcessor.js +13 -2
- package/lib/esm/getActionProcessor/core/config/getConfigGetSecretActionProcessor.js +11 -3
- package/lib/esm/getActionProcessor/core/config/getConfigSetParameterActionProcessor.js +11 -3
- package/lib/esm/getActionProcessor/core/config/index.js +0 -2
- package/lib/esm/getActionProcessor/core/eventBus/getEventBusSendMessagesActionProcessor.js +19 -9
- package/lib/esm/getActionProcessor/core/file/getFileDeleteActionProcessor.js +18 -10
- package/lib/esm/getActionProcessor/core/file/getFileExistsActionProcessor.js +10 -2
- package/lib/esm/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.js +6 -1
- package/lib/esm/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +6 -1
- package/lib/esm/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.js +14 -3
- package/lib/esm/getActionProcessor/core/file/getFileListDirectoryActionProcessor.js +20 -11
- package/lib/esm/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.js +12 -3
- package/lib/esm/getActionProcessor/core/file/getFileStreamOpenActionProcessor.js +8 -3
- package/lib/esm/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.js +12 -3
- package/lib/esm/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.js +12 -3
- package/lib/esm/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.js +12 -3
- package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.js +11 -3
- package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.js +11 -3
- package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.js +11 -3
- package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.js +12 -4
- package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.js +12 -3
- package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.js +11 -3
- package/lib/esm/getActionProcessor/core/queue/getQueueSendMessageActionProcessor.js +20 -10
- package/lib/esm/getActionProcessor/core/system/getSystemExecuteStoryActionProcessor.js +1 -0
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.d.ts +2 -0
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.js +13 -0
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryChangePasswordActionProcessor.js +12 -3
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryConfirmEmailVerificationActionProcessor.js +12 -3
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryConfirmForgotPasswordActionProcessor.js +13 -3
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryCreateUserActionProcessor.js +13 -4
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryDecodeAccessTokenActionProcessor.js +2 -2
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryForgotPasswordActionProcessor.js +11 -3
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryGetUserAttributesByUserIdActionProcessor.js +10 -3
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersActionProcessor.js +11 -3
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersByAttributeActionProcessor.js +11 -3
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryRefreshTokenActionProcessor.js +18 -4
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.js +12 -3
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryRespondToAuthChallengeActionProcessor.js +35 -3
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectorySetPasswordActionProcessor.js +13 -3
- package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectorySetUserAttributesActionProcessor.js +14 -3
- package/lib/esm/getActionProcessor/core/userDirectory/index.js +2 -0
- package/lib/esm/getActionProcessor/webserver/index.d.ts +0 -1
- package/lib/esm/getActionProcessor/webserver/index.js +0 -3
- package/lib/esm/getActionProcessor/webserver/serviceFunction/getServiceFunctionExecuteActionProcessor.js +2 -2
- package/lib/esm/index.d.ts +1 -0
- package/lib/esm/index.js +3 -0
- package/lib/esm/lambdaExtensions/getLogExtensionLayerPath.d.ts +10 -0
- package/lib/esm/lambdaExtensions/getLogExtensionLayerPath.js +13 -0
- package/lib/esm/lambdaExtensions/logExtensionPort.d.ts +1 -0
- package/lib/esm/lambdaExtensions/logExtensionPort.js +4 -0
- package/lib/esm/lambdaHandlers/getApiGatewayEventHandler.js +4 -8
- package/lib/esm/lambdaHandlers/getApiGatewayEventHandler_redirect.js +0 -2
- package/lib/esm/lambdaHandlers/helpers/getQpqLambdaRuntimeForEvent.js +1 -1
- package/lib/esm/lambdaHandlers/helpers/logger.d.ts +4 -1
- package/lib/esm/lambdaHandlers/helpers/logger.js +94 -38
- package/lib/esm/logic/cognito/associateSoftwareToken.d.ts +2 -0
- package/lib/esm/logic/cognito/associateSoftwareToken.js +15 -0
- package/lib/esm/logic/cognito/decodeValidJwt.js +2 -1
- package/lib/esm/logic/cognito/getUserAttributesBySub.d.ts +4 -0
- package/lib/esm/logic/cognito/getUserAttributesBySub.js +10 -1
- package/lib/esm/logic/cognito/utils/transformCognitoResponse.js +2 -0
- package/lib/esm/logic/cognito/verifySoftwareToken.d.ts +1 -0
- package/lib/esm/logic/cognito/verifySoftwareToken.js +15 -0
- package/lib/esm/logic/dynamo/qpqDynamoOrm/getDynamoTableIndexByConfigAndQuery.js +7 -2
- package/lib/esm/logic/s3/generatePresignedUploadUrl.js +8 -1
- package/lib/esm/logic/s3/objectExists.js +8 -3
- package/lib/extension-layer/extensions/qpq-log-extension +2 -0
- package/lib/extension-layer/qpq-log-extension/index.js +58 -0
- package/package.json +10 -8
- package/lib/commonjs/getActionProcessor/core/config/getConfigGetGlobalActionProcessor.d.ts +0 -2
- package/lib/commonjs/getActionProcessor/core/config/getConfigGetGlobalActionProcessor.js +0 -25
- package/lib/commonjs/getActionProcessor/webserver/extract/getExtractExpenseActionProcessor.d.ts +0 -2
- package/lib/commonjs/getActionProcessor/webserver/extract/getExtractExpenseActionProcessor.js +0 -56
- package/lib/commonjs/getActionProcessor/webserver/extract/index.d.ts +0 -2
- package/lib/commonjs/getActionProcessor/webserver/extract/index.js +0 -17
- package/lib/commonjs/logic/textract/analyzeExpense.d.ts +0 -51
- package/lib/commonjs/logic/textract/analyzeExpense.js +0 -31
- package/lib/commonjs/logic/textract/index.d.ts +0 -2
- package/lib/commonjs/logic/textract/transformExpenseResponse.d.ts +0 -29
- package/lib/commonjs/logic/textract/transformExpenseResponse.js +0 -180
- package/lib/esm/getActionProcessor/core/config/getConfigGetGlobalActionProcessor.d.ts +0 -2
- package/lib/esm/getActionProcessor/core/config/getConfigGetGlobalActionProcessor.js +0 -10
- package/lib/esm/getActionProcessor/webserver/extract/getExtractExpenseActionProcessor.d.ts +0 -2
- package/lib/esm/getActionProcessor/webserver/extract/getExtractExpenseActionProcessor.js +0 -40
- package/lib/esm/getActionProcessor/webserver/extract/index.d.ts +0 -2
- package/lib/esm/getActionProcessor/webserver/extract/index.js +0 -4
- package/lib/esm/logic/textract/analyzeExpense.d.ts +0 -51
- package/lib/esm/logic/textract/analyzeExpense.js +0 -18
- package/lib/esm/logic/textract/index.d.ts +0 -2
- package/lib/esm/logic/textract/index.js +0 -2
- package/lib/esm/logic/textract/transformExpenseResponse.d.ts +0 -29
- package/lib/esm/logic/textract/transformExpenseResponse.js +0 -173
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quidproquo-actionprocessor-awslambda",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./lib/commonjs/index.js",
|
|
6
6
|
"module": "./lib/esm/index.js",
|
|
@@ -12,10 +12,11 @@
|
|
|
12
12
|
"scripts": {
|
|
13
13
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
14
14
|
"clean": "npx rimraf lib && npx rimraf node_modules",
|
|
15
|
-
"build": "npm run clean && npm run build:esm && npm run build:cjs",
|
|
15
|
+
"build": "npm run clean && npm run build:esm && npm run build:cjs && npm run build:extension",
|
|
16
16
|
"watch": "tsc -p tsconfig.esm.json -w",
|
|
17
17
|
"build:cjs": "tsc -p tsconfig.commonjs.json",
|
|
18
18
|
"build:esm": "tsc -p tsconfig.esm.json",
|
|
19
|
+
"build:extension": "node scripts/buildLogExtensionLayer.mjs",
|
|
19
20
|
"lint": "npx eslint .",
|
|
20
21
|
"lint:fix": "npx eslint . --fix",
|
|
21
22
|
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,scss,md}\""
|
|
@@ -47,11 +48,10 @@
|
|
|
47
48
|
"@aws-sdk/client-sns": "^3.744.0",
|
|
48
49
|
"@aws-sdk/client-sqs": "^3.744.0",
|
|
49
50
|
"@aws-sdk/client-ssm": "^3.744.0",
|
|
50
|
-
"@aws-sdk/client-textract": "^3.883.0",
|
|
51
51
|
"@aws-sdk/s3-presigned-post": "^3.744.0",
|
|
52
52
|
"@aws-sdk/s3-request-presigner": "^3.744.0",
|
|
53
53
|
"@types/aws-lambda": "^8.10.109",
|
|
54
|
-
"ai": "^
|
|
54
|
+
"ai": "^7.0.4",
|
|
55
55
|
"aws-jwt-verify": "^3.4.0",
|
|
56
56
|
"busboy": "^1.6.0",
|
|
57
57
|
"jsonwebtoken": "^9.0.0",
|
|
@@ -59,16 +59,18 @@
|
|
|
59
59
|
"lodash": "^4.17.21",
|
|
60
60
|
"node-cache": "^5.1.2",
|
|
61
61
|
"node-match-path": "^0.6.3",
|
|
62
|
-
"quidproquo-
|
|
63
|
-
"quidproquo-
|
|
64
|
-
"quidproquo-
|
|
62
|
+
"quidproquo-actionprocessor-js": "0.1.1",
|
|
63
|
+
"quidproquo-config-aws": "0.1.1",
|
|
64
|
+
"quidproquo-core": "0.1.1",
|
|
65
|
+
"quidproquo-webserver": "0.1.1"
|
|
65
66
|
},
|
|
66
67
|
"devDependencies": {
|
|
67
68
|
"@types/busboy": "^1.5.0",
|
|
68
69
|
"@types/jsonwebtoken": "^9.0.2",
|
|
69
70
|
"@types/lodash": "^4.14.194",
|
|
70
71
|
"@types/node": "^22.13.13",
|
|
71
|
-
"
|
|
72
|
+
"esbuild": "^0.25.8",
|
|
73
|
+
"quidproquo-tsconfig": "0.1.1",
|
|
72
74
|
"typescript": "^5.8.2"
|
|
73
75
|
}
|
|
74
76
|
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.getConfigGetGlobalActionProcessor = void 0;
|
|
13
|
-
const quidproquo_core_1 = require("quidproquo-core");
|
|
14
|
-
const getProcessConfigGetGlobal = (qpqConfig) => {
|
|
15
|
-
return (_a) => __awaiter(void 0, [_a], void 0, function* ({ globalName }) {
|
|
16
|
-
const globalValue = quidproquo_core_1.qpqCoreUtils.getGlobalConfigValue(qpqConfig, globalName);
|
|
17
|
-
return (0, quidproquo_core_1.actionResult)(globalValue);
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
const getConfigGetGlobalActionProcessor = (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
-
return ({
|
|
22
|
-
[quidproquo_core_1.ConfigActionType.GetGlobal]: getProcessConfigGetGlobal(qpqConfig),
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
exports.getConfigGetGlobalActionProcessor = getConfigGetGlobalActionProcessor;
|
package/lib/commonjs/getActionProcessor/webserver/extract/getExtractExpenseActionProcessor.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.getExtractExpenseActionProcessor = void 0;
|
|
13
|
-
const quidproquo_config_aws_1 = require("quidproquo-config-aws");
|
|
14
|
-
const quidproquo_core_1 = require("quidproquo-core");
|
|
15
|
-
const quidproquo_webserver_1 = require("quidproquo-webserver");
|
|
16
|
-
const awsNamingUtils_1 = require("../../../awsNamingUtils");
|
|
17
|
-
const textract_1 = require("../../../logic/textract");
|
|
18
|
-
const resolveStorageDriveBucketName = (drive, qpqConfig) => {
|
|
19
|
-
var _a, _b;
|
|
20
|
-
const storageDriveConfig = quidproquo_core_1.qpqCoreUtils.getStorageDriveByName(drive, qpqConfig);
|
|
21
|
-
if (!storageDriveConfig) {
|
|
22
|
-
throw new Error(`Could not find storage drive config for [${drive}]`);
|
|
23
|
-
}
|
|
24
|
-
return (0, awsNamingUtils_1.getConfigRuntimeResourceNameFromConfigWithServiceOverride)(((_a = storageDriveConfig.owner) === null || _a === void 0 ? void 0 : _a.resourceNameOverride) || drive, qpqConfig, (_b = storageDriveConfig.owner) === null || _b === void 0 ? void 0 : _b.module);
|
|
25
|
-
};
|
|
26
|
-
const getProcessExtractExpense = (qpqConfig) => {
|
|
27
|
-
return (_a) => __awaiter(void 0, [_a], void 0, function* ({ storageDriveName, filePath }) {
|
|
28
|
-
try {
|
|
29
|
-
const bucketName = resolveStorageDriveBucketName(storageDriveName, qpqConfig);
|
|
30
|
-
const region = quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
|
|
31
|
-
// Call Textract to analyze the expense document
|
|
32
|
-
const textractResponse = yield (0, textract_1.analyzeExpenseDocument)(bucketName, filePath, region);
|
|
33
|
-
// Transform the response to our format
|
|
34
|
-
const extractedDocument = (0, textract_1.transformTextractExpenseResponse)(textractResponse, storageDriveName, filePath, true);
|
|
35
|
-
return (0, quidproquo_core_1.actionResult)(extractedDocument);
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
// Handle specific AWS errors with proper error mapping
|
|
39
|
-
return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, {
|
|
40
|
-
InvalidS3ObjectException: () => (0, quidproquo_core_1.actionResultError)(quidproquo_webserver_1.ExtractExpenseErrorTypeEnum.FileNotFound, 'The specified file could not be found or accessed'),
|
|
41
|
-
NoSuchKey: () => (0, quidproquo_core_1.actionResultError)(quidproquo_webserver_1.ExtractExpenseErrorTypeEnum.FileNotFound, 'The specified file does not exist'),
|
|
42
|
-
UnsupportedDocumentException: () => (0, quidproquo_core_1.actionResultError)(quidproquo_webserver_1.ExtractExpenseErrorTypeEnum.UnsupportedFormat, 'The document format is not supported for expense analysis'),
|
|
43
|
-
InvalidParameterException: () => (0, quidproquo_core_1.actionResultError)(quidproquo_webserver_1.ExtractExpenseErrorTypeEnum.InvalidParameter, 'Invalid parameters provided to the extraction service'),
|
|
44
|
-
ThrottlingException: () => (0, quidproquo_core_1.actionResultError)(quidproquo_webserver_1.ExtractExpenseErrorTypeEnum.RateLimited, 'Too many requests, please try again later'),
|
|
45
|
-
InvalidObjectState: () => (0, quidproquo_core_1.actionResultError)(quidproquo_webserver_1.ExtractExpenseErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),
|
|
46
|
-
AccessDenied: () => (0, quidproquo_core_1.actionResultError)(quidproquo_webserver_1.ExtractExpenseErrorTypeEnum.AccessDenied, 'Access denied to the specified file'),
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
const getExtractExpenseActionProcessor = (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
|
|
52
|
-
return ({
|
|
53
|
-
[quidproquo_webserver_1.ExtractActionType.Expense]: getProcessExtractExpense(qpqConfig),
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
exports.getExtractExpenseActionProcessor = getExtractExpenseActionProcessor;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.getExtractActionProcessor = void 0;
|
|
13
|
-
const getExtractExpenseActionProcessor_1 = require("./getExtractExpenseActionProcessor");
|
|
14
|
-
const getExtractActionProcessor = (qpqConfig, dynamicModuleLoader) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
-
return (Object.assign({}, (yield (0, getExtractExpenseActionProcessor_1.getExtractExpenseActionProcessor)(qpqConfig, dynamicModuleLoader))));
|
|
16
|
-
});
|
|
17
|
-
exports.getExtractActionProcessor = getExtractActionProcessor;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
export interface TextractExpenseAnalysis {
|
|
2
|
-
DocumentMetadata?: {
|
|
3
|
-
Pages?: number;
|
|
4
|
-
};
|
|
5
|
-
ExpenseDocuments?: Array<{
|
|
6
|
-
ExpenseIndex?: number;
|
|
7
|
-
SummaryFields?: Array<{
|
|
8
|
-
Type?: {
|
|
9
|
-
Text?: string;
|
|
10
|
-
Confidence?: number;
|
|
11
|
-
};
|
|
12
|
-
ValueDetection?: {
|
|
13
|
-
Text?: string;
|
|
14
|
-
Confidence?: number;
|
|
15
|
-
};
|
|
16
|
-
LabelDetection?: {
|
|
17
|
-
Text?: string;
|
|
18
|
-
Confidence?: number;
|
|
19
|
-
};
|
|
20
|
-
PageNumber?: number;
|
|
21
|
-
}>;
|
|
22
|
-
LineItemGroups?: Array<{
|
|
23
|
-
LineItemGroupIndex?: number;
|
|
24
|
-
LineItems?: Array<{
|
|
25
|
-
LineItemExpenseFields?: Array<{
|
|
26
|
-
Type?: {
|
|
27
|
-
Text?: string;
|
|
28
|
-
Confidence?: number;
|
|
29
|
-
};
|
|
30
|
-
ValueDetection?: {
|
|
31
|
-
Text?: string;
|
|
32
|
-
Confidence?: number;
|
|
33
|
-
};
|
|
34
|
-
LabelDetection?: {
|
|
35
|
-
Text?: string;
|
|
36
|
-
Confidence?: number;
|
|
37
|
-
};
|
|
38
|
-
PageNumber?: number;
|
|
39
|
-
}>;
|
|
40
|
-
}>;
|
|
41
|
-
}>;
|
|
42
|
-
Blocks?: Array<{
|
|
43
|
-
BlockType?: string;
|
|
44
|
-
Text?: string;
|
|
45
|
-
Confidence?: number;
|
|
46
|
-
Page?: number;
|
|
47
|
-
Id?: string;
|
|
48
|
-
}>;
|
|
49
|
-
}>;
|
|
50
|
-
}
|
|
51
|
-
export declare const analyzeExpenseDocument: (bucketName: string, documentKey: string, region: string) => Promise<TextractExpenseAnalysis>;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.analyzeExpenseDocument = void 0;
|
|
13
|
-
const client_textract_1 = require("@aws-sdk/client-textract");
|
|
14
|
-
const createAwsClient_1 = require("../createAwsClient");
|
|
15
|
-
const analyzeExpenseDocument = (bucketName, documentKey, region) => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
-
const textractClient = (0, createAwsClient_1.createAwsClient)(client_textract_1.TextractClient, { region });
|
|
17
|
-
const command = new client_textract_1.AnalyzeExpenseCommand({
|
|
18
|
-
Document: {
|
|
19
|
-
S3Object: {
|
|
20
|
-
Bucket: bucketName,
|
|
21
|
-
Name: documentKey,
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
const response = yield textractClient.send(command);
|
|
26
|
-
return {
|
|
27
|
-
DocumentMetadata: response.DocumentMetadata,
|
|
28
|
-
ExpenseDocuments: response.ExpenseDocuments,
|
|
29
|
-
};
|
|
30
|
-
});
|
|
31
|
-
exports.analyzeExpenseDocument = analyzeExpenseDocument;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { TextractExpenseAnalysis } from './analyzeExpense';
|
|
2
|
-
export interface ExtractedExpenseDocument {
|
|
3
|
-
metadata: {
|
|
4
|
-
merchantName?: string;
|
|
5
|
-
merchantAddress?: string;
|
|
6
|
-
date?: string;
|
|
7
|
-
currency?: string;
|
|
8
|
-
paymentMethod?: string;
|
|
9
|
-
subtotal?: number;
|
|
10
|
-
tax?: number;
|
|
11
|
-
total?: number;
|
|
12
|
-
[key: string]: any;
|
|
13
|
-
};
|
|
14
|
-
lineItems?: Array<{
|
|
15
|
-
description: string;
|
|
16
|
-
quantity?: number;
|
|
17
|
-
unitPrice?: number;
|
|
18
|
-
total?: number;
|
|
19
|
-
[key: string]: any;
|
|
20
|
-
}>;
|
|
21
|
-
rawText?: string;
|
|
22
|
-
source: {
|
|
23
|
-
storageDrive: string;
|
|
24
|
-
filePath: string;
|
|
25
|
-
textractJobId?: string;
|
|
26
|
-
};
|
|
27
|
-
_raw?: any;
|
|
28
|
-
}
|
|
29
|
-
export declare function transformTextractExpenseResponse(textractResponse: TextractExpenseAnalysis, storageDrive: string, filePath: string, includeRaw?: boolean): ExtractedExpenseDocument;
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.transformTextractExpenseResponse = transformTextractExpenseResponse;
|
|
4
|
-
const FIELD_TYPE_MAPPINGS = {
|
|
5
|
-
'VENDOR_NAME': 'merchantName',
|
|
6
|
-
'NAME': 'merchantName',
|
|
7
|
-
'MERCHANT_NAME': 'merchantName',
|
|
8
|
-
'VENDOR_ADDRESS': 'merchantAddress',
|
|
9
|
-
'ADDRESS': 'merchantAddress',
|
|
10
|
-
'MERCHANT_ADDRESS': 'merchantAddress',
|
|
11
|
-
'INVOICE_RECEIPT_DATE': 'date',
|
|
12
|
-
'DATE': 'date',
|
|
13
|
-
'CURRENCY_CODE': 'currency',
|
|
14
|
-
'PAYMENT_METHOD': 'paymentMethod',
|
|
15
|
-
'SUBTOTAL': 'subtotal',
|
|
16
|
-
'TAX': 'tax',
|
|
17
|
-
'TOTAL': 'total',
|
|
18
|
-
'AMOUNT_DUE': 'total',
|
|
19
|
-
'AMOUNT_PAID': 'amountPaid',
|
|
20
|
-
'INVOICE_RECEIPT_ID': 'receiptNumber',
|
|
21
|
-
'INVOICE_ID': 'invoiceNumber',
|
|
22
|
-
'RECEIPT_ID': 'receiptNumber',
|
|
23
|
-
'TAX_PAYER_ID': 'taxId',
|
|
24
|
-
'VENDOR_ABN_NUMBER': 'vendorAbn',
|
|
25
|
-
'VENDOR_PHONE': 'vendorPhone',
|
|
26
|
-
'VENDOR_URL': 'vendorUrl',
|
|
27
|
-
};
|
|
28
|
-
const LINE_ITEM_FIELD_MAPPINGS = {
|
|
29
|
-
'ITEM': 'description',
|
|
30
|
-
'DESCRIPTION': 'description',
|
|
31
|
-
'PRODUCT_NAME': 'description',
|
|
32
|
-
'QUANTITY': 'quantity',
|
|
33
|
-
'UNIT_PRICE': 'unitPrice',
|
|
34
|
-
'PRICE': 'total',
|
|
35
|
-
'AMOUNT': 'total',
|
|
36
|
-
};
|
|
37
|
-
function extractFieldValue(field, forceString = false) {
|
|
38
|
-
var _a, _b;
|
|
39
|
-
const text = ((_a = field === null || field === void 0 ? void 0 : field.ValueDetection) === null || _a === void 0 ? void 0 : _a.Text) || ((_b = field === null || field === void 0 ? void 0 : field.Type) === null || _b === void 0 ? void 0 : _b.Text);
|
|
40
|
-
if (!text)
|
|
41
|
-
return undefined;
|
|
42
|
-
// For certain fields, always return as string (dates, IDs, etc.)
|
|
43
|
-
if (forceString)
|
|
44
|
-
return text;
|
|
45
|
-
// Only try to parse as number if it looks like a price/amount (has $ or is purely numeric)
|
|
46
|
-
const cleanedText = text.replace(/[$,]/g, '').trim();
|
|
47
|
-
// Check if it's a pure number or price
|
|
48
|
-
if (/^\d+\.?\d*$/.test(cleanedText) && !text.includes('/') && !text.includes('-')) {
|
|
49
|
-
const numericValue = parseFloat(cleanedText);
|
|
50
|
-
if (!isNaN(numericValue))
|
|
51
|
-
return numericValue;
|
|
52
|
-
}
|
|
53
|
-
return text;
|
|
54
|
-
}
|
|
55
|
-
function extractSummaryFields(summaryFields) {
|
|
56
|
-
var _a, _b, _c;
|
|
57
|
-
const metadata = {};
|
|
58
|
-
if (!summaryFields)
|
|
59
|
-
return metadata;
|
|
60
|
-
// Fields that should always be strings
|
|
61
|
-
const stringFields = new Set([
|
|
62
|
-
'DATE', 'INVOICE_RECEIPT_DATE', 'CURRENCY_CODE', 'PAYMENT_METHOD',
|
|
63
|
-
'INVOICE_RECEIPT_ID', 'INVOICE_ID', 'RECEIPT_ID', 'TAX_PAYER_ID',
|
|
64
|
-
'VENDOR_ABN_NUMBER', 'VENDOR_PHONE', 'VENDOR_URL'
|
|
65
|
-
]);
|
|
66
|
-
// Track confidence scores for duplicate fields
|
|
67
|
-
const fieldConfidence = {};
|
|
68
|
-
for (const field of summaryFields) {
|
|
69
|
-
const fieldType = (_b = (_a = field === null || field === void 0 ? void 0 : field.Type) === null || _a === void 0 ? void 0 : _a.Text) === null || _b === void 0 ? void 0 : _b.toUpperCase();
|
|
70
|
-
if (!fieldType)
|
|
71
|
-
continue;
|
|
72
|
-
const confidence = ((_c = field === null || field === void 0 ? void 0 : field.Type) === null || _c === void 0 ? void 0 : _c.Confidence) || 0;
|
|
73
|
-
const forceString = stringFields.has(fieldType) || fieldType.includes('DATE') || fieldType.includes('ID') || fieldType.includes('NUMBER') || fieldType.includes('PHONE') || fieldType.includes('URL');
|
|
74
|
-
if (FIELD_TYPE_MAPPINGS[fieldType]) {
|
|
75
|
-
const mappedKey = FIELD_TYPE_MAPPINGS[fieldType];
|
|
76
|
-
const value = extractFieldValue(field, forceString);
|
|
77
|
-
// Only update if value exists and has higher confidence than existing
|
|
78
|
-
if (value !== undefined) {
|
|
79
|
-
const existingConfidence = fieldConfidence[mappedKey] || 0;
|
|
80
|
-
if (confidence > existingConfidence) {
|
|
81
|
-
metadata[mappedKey] = value;
|
|
82
|
-
fieldConfidence[mappedKey] = confidence;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
// Skip fields that are clearly not useful
|
|
88
|
-
const fieldKey = fieldType.toLowerCase().replace(/_/g, '');
|
|
89
|
-
// Skip certain field types that aren't useful in our structure
|
|
90
|
-
if (['street', 'city', 'addressblock', 'expenserow', 'other'].includes(fieldKey)) {
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
// Store other unmapped fields for extensibility
|
|
94
|
-
const value = extractFieldValue(field, forceString);
|
|
95
|
-
if (value !== undefined && !fieldKey.startsWith('vendor_') && !fieldKey.startsWith('amount_')) {
|
|
96
|
-
// Use more readable field names
|
|
97
|
-
const cleanKey = fieldType.toLowerCase().replace(/_/g, '');
|
|
98
|
-
metadata[cleanKey] = value;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// Clean up merchant name - take the first line if multiline
|
|
103
|
-
if (metadata.merchantName && metadata.merchantName.includes('\n')) {
|
|
104
|
-
metadata.merchantName = metadata.merchantName.split('\n')[0].trim();
|
|
105
|
-
}
|
|
106
|
-
return metadata;
|
|
107
|
-
}
|
|
108
|
-
function extractLineItems(lineItemGroups) {
|
|
109
|
-
var _a, _b;
|
|
110
|
-
if (!lineItemGroups || lineItemGroups.length === 0)
|
|
111
|
-
return undefined;
|
|
112
|
-
const items = [];
|
|
113
|
-
for (const group of lineItemGroups) {
|
|
114
|
-
if (!group.LineItems)
|
|
115
|
-
continue;
|
|
116
|
-
for (const lineItem of group.LineItems) {
|
|
117
|
-
if (!lineItem.LineItemExpenseFields)
|
|
118
|
-
continue;
|
|
119
|
-
const item = { description: '' };
|
|
120
|
-
for (const field of lineItem.LineItemExpenseFields) {
|
|
121
|
-
const fieldType = (_b = (_a = field === null || field === void 0 ? void 0 : field.Type) === null || _a === void 0 ? void 0 : _a.Text) === null || _b === void 0 ? void 0 : _b.toUpperCase();
|
|
122
|
-
if (!fieldType)
|
|
123
|
-
continue;
|
|
124
|
-
// Determine if this field should be a string
|
|
125
|
-
const forceString = fieldType === 'ITEM' || fieldType === 'DESCRIPTION' || fieldType === 'PRODUCT_NAME';
|
|
126
|
-
if (LINE_ITEM_FIELD_MAPPINGS[fieldType]) {
|
|
127
|
-
const mappedKey = LINE_ITEM_FIELD_MAPPINGS[fieldType];
|
|
128
|
-
const value = extractFieldValue(field, forceString);
|
|
129
|
-
if (value !== undefined) {
|
|
130
|
-
item[mappedKey] = value;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
else if (fieldType !== 'EXPENSE_ROW') {
|
|
134
|
-
// Store unmapped fields except expense_row which is just raw text
|
|
135
|
-
const value = extractFieldValue(field, forceString);
|
|
136
|
-
if (value !== undefined) {
|
|
137
|
-
const cleanKey = fieldType.toLowerCase().replace(/_/g, '');
|
|
138
|
-
item[cleanKey] = value;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
// Only add if we have at least a description or some meaningful data
|
|
143
|
-
if (item.description || (Object.keys(item).length > 1 && (item.total || item.quantity))) {
|
|
144
|
-
items.push(item);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
return items.length > 0 ? items : undefined;
|
|
149
|
-
}
|
|
150
|
-
function extractRawText(blocks) {
|
|
151
|
-
if (!blocks)
|
|
152
|
-
return undefined;
|
|
153
|
-
const textBlocks = blocks
|
|
154
|
-
.filter(block => block.BlockType === 'LINE' && block.Text)
|
|
155
|
-
.map(block => block.Text)
|
|
156
|
-
.join('\n');
|
|
157
|
-
return textBlocks || undefined;
|
|
158
|
-
}
|
|
159
|
-
function transformTextractExpenseResponse(textractResponse, storageDrive, filePath, includeRaw = true) {
|
|
160
|
-
var _a;
|
|
161
|
-
// Process the first expense document (most receipts/invoices have just one)
|
|
162
|
-
const expenseDoc = (_a = textractResponse.ExpenseDocuments) === null || _a === void 0 ? void 0 : _a[0];
|
|
163
|
-
const metadata = extractSummaryFields(expenseDoc === null || expenseDoc === void 0 ? void 0 : expenseDoc.SummaryFields);
|
|
164
|
-
const lineItems = extractLineItems(expenseDoc === null || expenseDoc === void 0 ? void 0 : expenseDoc.LineItemGroups);
|
|
165
|
-
const rawText = extractRawText(expenseDoc === null || expenseDoc === void 0 ? void 0 : expenseDoc.Blocks);
|
|
166
|
-
const result = {
|
|
167
|
-
metadata,
|
|
168
|
-
lineItems,
|
|
169
|
-
rawText,
|
|
170
|
-
source: {
|
|
171
|
-
storageDrive: storageDrive,
|
|
172
|
-
filePath: filePath,
|
|
173
|
-
},
|
|
174
|
-
};
|
|
175
|
-
// Include raw response for debugging (can be disabled in production)
|
|
176
|
-
if (includeRaw) {
|
|
177
|
-
result._raw = textractResponse;
|
|
178
|
-
}
|
|
179
|
-
return result;
|
|
180
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { actionResult, ConfigActionType, qpqCoreUtils, } from 'quidproquo-core';
|
|
2
|
-
const getProcessConfigGetGlobal = (qpqConfig) => {
|
|
3
|
-
return async ({ globalName }) => {
|
|
4
|
-
const globalValue = qpqCoreUtils.getGlobalConfigValue(qpqConfig, globalName);
|
|
5
|
-
return actionResult(globalValue);
|
|
6
|
-
};
|
|
7
|
-
};
|
|
8
|
-
export const getConfigGetGlobalActionProcessor = async (qpqConfig) => ({
|
|
9
|
-
[ConfigActionType.GetGlobal]: getProcessConfigGetGlobal(qpqConfig),
|
|
10
|
-
});
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
|
|
2
|
-
import { actionResult, actionResultError, actionResultErrorFromCaughtError, qpqCoreUtils, } from 'quidproquo-core';
|
|
3
|
-
import { ExtractActionType, ExtractExpenseErrorTypeEnum } from 'quidproquo-webserver';
|
|
4
|
-
import { getConfigRuntimeResourceNameFromConfigWithServiceOverride } from '../../../awsNamingUtils';
|
|
5
|
-
import { analyzeExpenseDocument, transformTextractExpenseResponse } from '../../../logic/textract';
|
|
6
|
-
const resolveStorageDriveBucketName = (drive, qpqConfig) => {
|
|
7
|
-
const storageDriveConfig = qpqCoreUtils.getStorageDriveByName(drive, qpqConfig);
|
|
8
|
-
if (!storageDriveConfig) {
|
|
9
|
-
throw new Error(`Could not find storage drive config for [${drive}]`);
|
|
10
|
-
}
|
|
11
|
-
return getConfigRuntimeResourceNameFromConfigWithServiceOverride(storageDriveConfig.owner?.resourceNameOverride || drive, qpqConfig, storageDriveConfig.owner?.module);
|
|
12
|
-
};
|
|
13
|
-
const getProcessExtractExpense = (qpqConfig) => {
|
|
14
|
-
return async ({ storageDriveName, filePath }) => {
|
|
15
|
-
try {
|
|
16
|
-
const bucketName = resolveStorageDriveBucketName(storageDriveName, qpqConfig);
|
|
17
|
-
const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
|
|
18
|
-
// Call Textract to analyze the expense document
|
|
19
|
-
const textractResponse = await analyzeExpenseDocument(bucketName, filePath, region);
|
|
20
|
-
// Transform the response to our format
|
|
21
|
-
const extractedDocument = transformTextractExpenseResponse(textractResponse, storageDriveName, filePath, true);
|
|
22
|
-
return actionResult(extractedDocument);
|
|
23
|
-
}
|
|
24
|
-
catch (error) {
|
|
25
|
-
// Handle specific AWS errors with proper error mapping
|
|
26
|
-
return actionResultErrorFromCaughtError(error, {
|
|
27
|
-
InvalidS3ObjectException: () => actionResultError(ExtractExpenseErrorTypeEnum.FileNotFound, 'The specified file could not be found or accessed'),
|
|
28
|
-
NoSuchKey: () => actionResultError(ExtractExpenseErrorTypeEnum.FileNotFound, 'The specified file does not exist'),
|
|
29
|
-
UnsupportedDocumentException: () => actionResultError(ExtractExpenseErrorTypeEnum.UnsupportedFormat, 'The document format is not supported for expense analysis'),
|
|
30
|
-
InvalidParameterException: () => actionResultError(ExtractExpenseErrorTypeEnum.InvalidParameter, 'Invalid parameters provided to the extraction service'),
|
|
31
|
-
ThrottlingException: () => actionResultError(ExtractExpenseErrorTypeEnum.RateLimited, 'Too many requests, please try again later'),
|
|
32
|
-
InvalidObjectState: () => actionResultError(ExtractExpenseErrorTypeEnum.InvalidStorageClass, 'File is in the wrong storage class'),
|
|
33
|
-
AccessDenied: () => actionResultError(ExtractExpenseErrorTypeEnum.AccessDenied, 'Access denied to the specified file'),
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
export const getExtractExpenseActionProcessor = async (qpqConfig) => ({
|
|
39
|
-
[ExtractActionType.Expense]: getProcessExtractExpense(qpqConfig),
|
|
40
|
-
});
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
export interface TextractExpenseAnalysis {
|
|
2
|
-
DocumentMetadata?: {
|
|
3
|
-
Pages?: number;
|
|
4
|
-
};
|
|
5
|
-
ExpenseDocuments?: Array<{
|
|
6
|
-
ExpenseIndex?: number;
|
|
7
|
-
SummaryFields?: Array<{
|
|
8
|
-
Type?: {
|
|
9
|
-
Text?: string;
|
|
10
|
-
Confidence?: number;
|
|
11
|
-
};
|
|
12
|
-
ValueDetection?: {
|
|
13
|
-
Text?: string;
|
|
14
|
-
Confidence?: number;
|
|
15
|
-
};
|
|
16
|
-
LabelDetection?: {
|
|
17
|
-
Text?: string;
|
|
18
|
-
Confidence?: number;
|
|
19
|
-
};
|
|
20
|
-
PageNumber?: number;
|
|
21
|
-
}>;
|
|
22
|
-
LineItemGroups?: Array<{
|
|
23
|
-
LineItemGroupIndex?: number;
|
|
24
|
-
LineItems?: Array<{
|
|
25
|
-
LineItemExpenseFields?: Array<{
|
|
26
|
-
Type?: {
|
|
27
|
-
Text?: string;
|
|
28
|
-
Confidence?: number;
|
|
29
|
-
};
|
|
30
|
-
ValueDetection?: {
|
|
31
|
-
Text?: string;
|
|
32
|
-
Confidence?: number;
|
|
33
|
-
};
|
|
34
|
-
LabelDetection?: {
|
|
35
|
-
Text?: string;
|
|
36
|
-
Confidence?: number;
|
|
37
|
-
};
|
|
38
|
-
PageNumber?: number;
|
|
39
|
-
}>;
|
|
40
|
-
}>;
|
|
41
|
-
}>;
|
|
42
|
-
Blocks?: Array<{
|
|
43
|
-
BlockType?: string;
|
|
44
|
-
Text?: string;
|
|
45
|
-
Confidence?: number;
|
|
46
|
-
Page?: number;
|
|
47
|
-
Id?: string;
|
|
48
|
-
}>;
|
|
49
|
-
}>;
|
|
50
|
-
}
|
|
51
|
-
export declare const analyzeExpenseDocument: (bucketName: string, documentKey: string, region: string) => Promise<TextractExpenseAnalysis>;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { AnalyzeExpenseCommand, TextractClient } from '@aws-sdk/client-textract';
|
|
2
|
-
import { createAwsClient } from '../createAwsClient';
|
|
3
|
-
export const analyzeExpenseDocument = async (bucketName, documentKey, region) => {
|
|
4
|
-
const textractClient = createAwsClient(TextractClient, { region });
|
|
5
|
-
const command = new AnalyzeExpenseCommand({
|
|
6
|
-
Document: {
|
|
7
|
-
S3Object: {
|
|
8
|
-
Bucket: bucketName,
|
|
9
|
-
Name: documentKey,
|
|
10
|
-
},
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
const response = await textractClient.send(command);
|
|
14
|
-
return {
|
|
15
|
-
DocumentMetadata: response.DocumentMetadata,
|
|
16
|
-
ExpenseDocuments: response.ExpenseDocuments,
|
|
17
|
-
};
|
|
18
|
-
};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { TextractExpenseAnalysis } from './analyzeExpense';
|
|
2
|
-
export interface ExtractedExpenseDocument {
|
|
3
|
-
metadata: {
|
|
4
|
-
merchantName?: string;
|
|
5
|
-
merchantAddress?: string;
|
|
6
|
-
date?: string;
|
|
7
|
-
currency?: string;
|
|
8
|
-
paymentMethod?: string;
|
|
9
|
-
subtotal?: number;
|
|
10
|
-
tax?: number;
|
|
11
|
-
total?: number;
|
|
12
|
-
[key: string]: any;
|
|
13
|
-
};
|
|
14
|
-
lineItems?: Array<{
|
|
15
|
-
description: string;
|
|
16
|
-
quantity?: number;
|
|
17
|
-
unitPrice?: number;
|
|
18
|
-
total?: number;
|
|
19
|
-
[key: string]: any;
|
|
20
|
-
}>;
|
|
21
|
-
rawText?: string;
|
|
22
|
-
source: {
|
|
23
|
-
storageDrive: string;
|
|
24
|
-
filePath: string;
|
|
25
|
-
textractJobId?: string;
|
|
26
|
-
};
|
|
27
|
-
_raw?: any;
|
|
28
|
-
}
|
|
29
|
-
export declare function transformTextractExpenseResponse(textractResponse: TextractExpenseAnalysis, storageDrive: string, filePath: string, includeRaw?: boolean): ExtractedExpenseDocument;
|