@aws-amplify/graphql-api-construct 1.16.1-ai-next.0 → 1.17.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.jsii +160 -87
- package/API.md +11 -1
- package/CHANGELOG.md +6 -2
- package/lib/amplify-dynamodb-table-wrapper.js +1 -1
- package/lib/amplify-graphql-api.js +14 -2
- package/lib/amplify-graphql-definition.js +1 -1
- package/lib/model-datasource-strategy-types.d.ts +21 -1
- package/lib/model-datasource-strategy-types.js +1 -1
- package/lib/sql-model-datasource-strategy.js +1 -1
- package/lib/types.d.ts +1 -1
- package/lib/types.js +1 -1
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/bedrock_converse_adapter.d.ts +3 -4
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/bedrock_converse_adapter.js +174 -212
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_message_history_retriever.d.ts +10 -0
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_message_history_retriever.js +65 -2
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_turn_executor.d.ts +4 -2
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_turn_executor.js +29 -7
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_turn_response_sender.d.ts +11 -8
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_turn_response_sender.js +33 -25
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/errors.d.ts +10 -0
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/errors.js +17 -0
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/lazy.d.ts +16 -0
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/lazy.js +37 -0
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/types.d.ts +0 -19
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/types.js +1 -1
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/README.md +9 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/amplify_function.d.ts +4 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/amplify_function.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/auth_resources.d.ts +66 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/auth_resources.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/aws_client_provider.d.ts +5 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/aws_client_provider.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_identifier.d.ts +56 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_identifier.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_output.d.ts +6 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_output.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_secret_resolver.d.ts +22 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_secret_resolver.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_stack_creator.d.ts +8 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_stack_creator.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_stack_resolver.d.ts +7 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/backend_stack_resolver.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/construct_container.d.ts +35 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/construct_container.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/construct_factory.d.ts +24 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/construct_factory.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/deep_partial.d.ts +17 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/deep_partial.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/deployment_type.d.ts +8 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/deployment_type.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/function_resources.d.ts +8 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/function_resources.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/import_path_verifier.d.ts +14 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/import_path_verifier.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/index.d.ts +24 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/index.js +40 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/output_retrieval_strategy.d.ts +11 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/output_retrieval_strategy.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/output_storage_strategy.d.ts +10 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/output_storage_strategy.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/package_manager_controller.d.ts +16 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/package_manager_controller.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_access_acceptor.d.ts +27 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_access_acceptor.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_name_validator.d.ts +10 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_name_validator.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_provider.d.ts +10 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/resource_provider.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/ssm_environment_entries_generator.d.ts +5 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/ssm_environment_entries_generator.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/stable_backend_identifiers.d.ts +4 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/stable_backend_identifiers.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/stack_provider.d.ts +5 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/lib/stack_provider.js +3 -0
- package/node_modules/@aws-amplify/ai-constructs/node_modules/@aws-amplify/plugin-types/package.json +24 -0
- package/node_modules/@aws-amplify/ai-constructs/package.json +4 -4
- package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +13 -13
- package/node_modules/@aws-amplify/graphql-conversation-transformer/CHANGELOG.md +6 -2
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/graphql-types/message-model.js +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/graphql-types/message-model.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/templates/assistant-streaming-mutation-resolver-fn.template.js +0 -2
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/transformer-steps/conversation-field-handler.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/transformer-steps/conversation-field-handler.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/transformer-steps/conversation-resolver-generator.d.ts +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/transformer-steps/conversation-resolver-generator.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/transformer-steps/conversation-resolver-generator.js +10 -10
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/transformer-steps/conversation-resolver-generator.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/package.json +11 -11
- package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +8 -8
- package/node_modules/@aws-amplify/graphql-directives/CHANGELOG.md +6 -0
- package/node_modules/@aws-amplify/graphql-directives/LICENSE +201 -0
- package/node_modules/@aws-amplify/graphql-directives/lib/directives/belongs-to.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-directives/lib/directives/belongs-to.js +1 -1
- package/node_modules/@aws-amplify/graphql-directives/lib/directives/belongs-to.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-directives/package.json +3 -2
- package/node_modules/@aws-amplify/graphql-function-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-function-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-generation-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-generation-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-http-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-http-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-index-transformer/package.json +8 -8
- package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/assets/mapping-lambda.zip +0 -0
- package/node_modules/@aws-amplify/graphql-maps-to-transformer/package.json +11 -11
- package/node_modules/@aws-amplify/graphql-model-transformer/CHANGELOG.md +4 -2
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.js +7 -2
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-lambda.zip +0 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-notification-lambda.zip +0 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-patching-lambda.zip +0 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js +12 -3
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.d.ts +2 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.js +4 -2
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.js +6 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/import-table.d.ts +7 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/import-table.d.ts.map +1 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/import-table.js +205 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/import-table.js.map +1 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/node_modules/.package-lock.json +13 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/node_modules/lodash.isequal/LICENSE +47 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/node_modules/lodash.isequal/README.md +18 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/node_modules/lodash.isequal/index.js +1848 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/node_modules/lodash.isequal/package.json +16 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/package-lock.json +21 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/package.json +11 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/package.json +12 -9
- package/node_modules/@aws-amplify/graphql-predictions-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-predictions-transformer/lib/predictionsLambdaFunction.zip +0 -0
- package/node_modules/@aws-amplify/graphql-predictions-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-relational-transformer/CHANGELOG.md +4 -2
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-belongs-to-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-belongs-to-transformer.js +6 -0
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-belongs-to-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/has-many/has-many-directive-ddb-references-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/has-many/has-many-directive-ddb-references-transformer.js +7 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/has-many/has-many-directive-ddb-references-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/has-one/has-one-directive-ddb-references-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/has-one/has-one-directive-ddb-references-transformer.js +7 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/has-one/has-one-directive-ddb-references-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/types.d.ts +1 -0
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/types.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.d.ts +1 -0
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.js +9 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +9 -9
- package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/streaming-lambda.zip +0 -0
- package/node_modules/@aws-amplify/graphql-searchable-transformer/package.json +8 -8
- package/node_modules/@aws-amplify/graphql-sql-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-sql-transformer/package.json +8 -8
- package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-transformer/package.json +18 -18
- package/node_modules/@aws-amplify/graphql-transformer-core/API.md +4 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/CHANGELOG.md +4 -2
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js +3 -2
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.d.ts +2 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.js +9 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/package.json +5 -5
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/API.md +11 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/CHANGELOG.md +6 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/LICENSE +201 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.d.ts +6 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/package.json +3 -2
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/model-datasource/types.ts +15 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/tsconfig.tsbuildinfo +1 -1
- package/node_modules/graphql-transformer-common/CHANGELOG.md +1 -1
- package/node_modules/graphql-transformer-common/package.json +2 -2
- package/package.json +22 -22
- package/src/amplify-graphql-api.ts +16 -1
- package/src/model-datasource-strategy-types.ts +25 -0
- package/src/types.ts +1 -1
@@ -38,6 +38,16 @@ export declare class ConversationMessageHistoryRetriever {
|
|
38
38
|
*/
|
39
39
|
constructor(event: ConversationTurnEvent, graphqlRequestExecutor?: GraphqlRequestExecutor);
|
40
40
|
getMessageHistory: () => Promise<Array<ConversationMessage>>;
|
41
|
+
/**
|
42
|
+
* This function removes tool usage from non-current turns.
|
43
|
+
* The tool usage and result blocks don't matter after a turn is completed,
|
44
|
+
* but do cost extra tokens to process.
|
45
|
+
* The algorithm is as follows:
|
46
|
+
* 1. Find where current turn begins. I.e. last user message that isn't tool block.
|
47
|
+
* 2. Remove toolUse and toolResult blocks before current turn.
|
48
|
+
* 3. Squash continuous sequences of messages that belong to same 'message.role'.
|
49
|
+
*/
|
50
|
+
private squashNonCurrentTurns;
|
41
51
|
private getCurrentMessage;
|
42
52
|
private listMessages;
|
43
53
|
}
|
@@ -86,7 +86,7 @@ class ConversationMessageHistoryRetriever {
|
|
86
86
|
}
|
87
87
|
});
|
88
88
|
// Reconcile history and inject aiContext
|
89
|
-
|
89
|
+
const orderedMessages = messages.reduce((acc, current) => {
|
90
90
|
// Bedrock expects that message history is user->assistant->user->assistant->... and so on.
|
91
91
|
// The chronological order doesn't assure this ordering if there were any concurrent messages sent.
|
92
92
|
// Therefore, conversation is ordered by user's messages only and corresponding assistant messages are inserted
|
@@ -119,6 +119,69 @@ class ConversationMessageHistoryRetriever {
|
|
119
119
|
}
|
120
120
|
return acc;
|
121
121
|
}, []);
|
122
|
+
// Remove tool usage from non-current turn and squash messages.
|
123
|
+
return this.squashNonCurrentTurns(orderedMessages);
|
124
|
+
};
|
125
|
+
/**
|
126
|
+
* This function removes tool usage from non-current turns.
|
127
|
+
* The tool usage and result blocks don't matter after a turn is completed,
|
128
|
+
* but do cost extra tokens to process.
|
129
|
+
* The algorithm is as follows:
|
130
|
+
* 1. Find where current turn begins. I.e. last user message that isn't tool block.
|
131
|
+
* 2. Remove toolUse and toolResult blocks before current turn.
|
132
|
+
* 3. Squash continuous sequences of messages that belong to same 'message.role'.
|
133
|
+
*/
|
134
|
+
this.squashNonCurrentTurns = (messages) => {
|
135
|
+
const isNonToolBlockPredicate = (contentBlock) => !contentBlock.toolUse && !contentBlock.toolResult;
|
136
|
+
// find where current turn begins. I.e. last user message that is not related to tools
|
137
|
+
const lastNonToolUseUserMessageIndex = messages.findLastIndex((message) => {
|
138
|
+
return (message.role === 'user' && message.content.find(isNonToolBlockPredicate));
|
139
|
+
});
|
140
|
+
// No non-current turns, don't transform.
|
141
|
+
if (lastNonToolUseUserMessageIndex <= 0) {
|
142
|
+
return messages;
|
143
|
+
}
|
144
|
+
const squashedMessages = [];
|
145
|
+
// Define a "buffer". I.e. a message we keep around and squash content on.
|
146
|
+
let currentSquashedMessage = undefined;
|
147
|
+
// Process messages before current turn begins
|
148
|
+
// Remove tool usage blocks.
|
149
|
+
// Combine content for consecutive message that have same role.
|
150
|
+
for (let i = 0; i < lastNonToolUseUserMessageIndex; i++) {
|
151
|
+
const currentMessage = messages[i];
|
152
|
+
const currentMessageRole = currentMessage.role;
|
153
|
+
const currentMessageNonToolContent = currentMessage.content.filter(isNonToolBlockPredicate);
|
154
|
+
if (currentMessageNonToolContent.length === 0) {
|
155
|
+
// Tool only message. Nothing to squash, skip;
|
156
|
+
continue;
|
157
|
+
}
|
158
|
+
if (!currentSquashedMessage) {
|
159
|
+
// Nothing squashed yet, initialize the buffer.
|
160
|
+
currentSquashedMessage = {
|
161
|
+
role: currentMessageRole,
|
162
|
+
content: currentMessageNonToolContent,
|
163
|
+
};
|
164
|
+
}
|
165
|
+
else if (currentSquashedMessage.role === currentMessageRole) {
|
166
|
+
// if role is same append content.
|
167
|
+
currentSquashedMessage.content.push(...currentMessageNonToolContent);
|
168
|
+
}
|
169
|
+
else {
|
170
|
+
// if role flips push current squashed message and re-initialize the buffer.
|
171
|
+
squashedMessages.push(currentSquashedMessage);
|
172
|
+
currentSquashedMessage = {
|
173
|
+
role: currentMessageRole,
|
174
|
+
content: currentMessageNonToolContent,
|
175
|
+
};
|
176
|
+
}
|
177
|
+
}
|
178
|
+
// flush the last buffer.
|
179
|
+
if (currentSquashedMessage) {
|
180
|
+
squashedMessages.push(currentSquashedMessage);
|
181
|
+
}
|
182
|
+
// Append current turn as is.
|
183
|
+
squashedMessages.push(...messages.slice(lastNonToolUseUserMessageIndex));
|
184
|
+
return squashedMessages;
|
122
185
|
};
|
123
186
|
this.getCurrentMessage = async () => {
|
124
187
|
const query = `
|
@@ -196,4 +259,4 @@ class ConversationMessageHistoryRetriever {
|
|
196
259
|
}
|
197
260
|
}
|
198
261
|
exports.ConversationMessageHistoryRetriever = ConversationMessageHistoryRetriever;
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX21lc3NhZ2VfaGlzdG9yeV9yZXRyaWV2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udmVyc2F0aW9uL3J1bnRpbWUvY29udmVyc2F0aW9uX21lc3NhZ2VfaGlzdG9yeV9yZXRyaWV2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUVBQW9FO0FBbUNwRTs7OztHQUlHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0QvQixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQWEsbUNBQW1DO0lBQzlDOztPQUVHO0lBQ0gsWUFDbUIsS0FBNEIsRUFDNUIseUJBQXlCLElBQUksaURBQXNCLENBQ2xFLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUNuQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUMxQztRQUxnQixVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUM1QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBSXRDO1FBR0gsc0JBQWlCLEdBQUcsS0FBSyxJQUF5QyxFQUFFO1lBQ2xFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRTNDLElBQUksY0FBYyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQ2hDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQzVDLENBQUM7WUFFRixtRkFBbUY7WUFDbkYseUVBQXlFO1lBQ3pFLCtCQUErQjtZQUMvQixJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNuQixjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDaEQsUUFBUSxD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QUFFO3dCQUNuRCw4REFBOEQ7d0JBQzlELHlCQUF5Qjt3QkFDekIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUNyRTtvQkFDRCxJQUFJLE1BQUEsWUFBWSxDQUFDLFVBQVUsMENBQUUsT0FBTyxFQUFFO3dCQUNwQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFOzRCQUNqRSxJQUFJLE9BQU8sc0JBQXNCLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQ0FDbkQsMEVBQTBFO2dDQUMxRSx5QkFBeUI7Z0NBQ3pCLHNCQUFzQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUN0QyxzQkFBc0IsQ0FBQyxJQUFJLENBQzVCLENBQUM7NkJBQ0g7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7cUJBQ0o7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBbEtDLENBQUM7Q0FtS0w7QUE5S0Qsa0ZBOEtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udmVyc2F0aW9uTWVzc2FnZSwgQ29udmVyc2F0aW9uVHVybkV2ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBHcmFwaHFsUmVxdWVzdEV4ZWN1dG9yIH0gZnJvbSAnLi9ncmFwaHFsX3JlcXVlc3RfZXhlY3V0b3InO1xuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25IaXN0b3J5TWVzc2FnZUl0ZW0gPSBDb252ZXJzYXRpb25NZXNzYWdlICYge1xuICBpZDogc3RyaW5nO1xuICBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICBhc3NvY2lhdGVkVXNlck1lc3NhZ2VJZD86IHN0cmluZztcbiAgYWlDb250ZXh0PzogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIEdldFF1ZXJ5SW5wdXQgPSB7XG4gIGlkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBHZXRRdWVyeU91dHB1dCA9IHtcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgQ29udmVyc2F0aW9uSGlzdG9yeU1lc3NhZ2VJdGVtPjtcbn07XG5cbmV4cG9ydCB0eXBlIExpc3RRdWVyeUlucHV0ID0ge1xuICBmaWx0ZXI6IHtcbiAgICBjb252ZXJzYXRpb25JZDoge1xuICAgICAgZXE6IHN0cmluZztcbiAgICB9O1xuICB9O1xuICBsaW1pdDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTGlzdFF1ZXJ5T3V0cHV0ID0ge1xuICBkYXRhOiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIGl0ZW1zOiBBcnJheTxDb252ZXJzYXRpb25IaXN0b3J5TWVzc2FnZUl0ZW0+O1xuICAgIH1cbiAgPjtcbn07XG5cbi8qKlxuICogVGhlc2UgYXJlIGFsbCBwcm9wZXJ0aWVzIHdlIGhhdmUgdG8gcHVsbC5cbiAqIFVuZm9ydHVuYXRlbHksIEdRTCBkb2Vzbid0IHN1cHBvcnQgd2lsZGNhcmRzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1zcGVjL2lzc3Vlcy8xMjdcbiAqL1xuY29uc3QgbWVzc2FnZUl0ZW1TZWxlY3Rpb25TZXQgPSBgXG4gICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICBjb252ZXJzYXRpb25JZFxuICAgICAgICAgICAgICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkXG4gICAgICAgICAgICAgICAgYWlDb250ZXh0XG4gICAgICAgICAgICAgICAgcm9sZVxuICAgICAgICAgICAgICAgIGNvbnRlbnQge1xuICAgICAgICAgICAgICAgICAgdGV4dFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGltYWdlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSB7XG4gICAgICAgICAgICAgICAgICAgICAgYnl0ZXNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgdG9vbFJlc3VsdCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQge1xuICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaW1hZ2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBqc29uXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICAgICAgICAgICB0b29sVXNlSWRcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRvb2xVc2Uge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dFxuICAgICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICAgIHRvb2xVc2VJZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbmA7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgcmV0cmlldmluZyBtZXNzYWdlIGhpc3RvcnkgdGhhdCBiZWxvbmdzIHRvIGNvbnZlcnNhdGlvbiB0dXJuIGV2ZW50LlxuICogSXQgcXVlcmllcyBBcHBTeW5jIHRvIGxpc3QgbWVzc2FnZXMgdGhhdCBiZWxvbmcgdG8gY29udmVyc2F0aW9uLlxuICogQWRkaXRpb25hbGx5LCBpdCBsb29rcyB1cCBhIGN1cnJlbnQgbWVzc2FnZSBpbiBjYXNlIGl0J3MgbWlzc2luZyBpbiB0aGUgbGlzdCBkdWUgdG8gZXZlbnR1YWwgY29uc2lzdGVuY3kuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb252ZXJzYXRpb25NZXNzYWdlSGlzdG9yeVJldHJpZXZlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGNvbnZlcnNhdGlvbiBtZXNzYWdlIGhpc3RvcnkgcmV0cmlldmVyLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudDogQ29udmVyc2F0aW9uVHVybkV2ZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ3JhcGhxbFJlcXVlc3RFeGVjdXRvciA9IG5ldyBHcmFwaHFsUmVxdWVzdEV4ZWN1dG9yKFxuICAgICAgZXZlbnQuZ3JhcGhxbEFwaUVuZHBvaW50LFxuICAgICAgZXZlbnQucmVxdWVzdC5oZWFkZXJzLmF1dGhvcml6YXRpb24sXG4gICAgICBldmVudC5yZXF1ZXN0LmhlYWRlcnNbJ3gtYW16LXVzZXItYWdlbnQnXVxuICAgIClcbiAgKSB7fVxuXG4gIGdldE1lc3NhZ2VIaXN0b3J5ID0gYXN5bmMgKCk6IFByb21pc2U8QXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZT4+ID0+IHtcbiAgICBjb25zdCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMubGlzdE1lc3NhZ2VzKCk7XG5cbiAgICBsZXQgY3VycmVudE1lc3NhZ2UgPSBtZXNzYWdlcy5maW5kKFxuICAgICAgKG0pID0+IG0uaWQgPT09IHRoaXMuZXZlbnQuY3VycmVudE1lc3NhZ2VJZFxuICAgICk7XG5cbiAgICAvLyBUaGlzIGlzIGEgZmFsbGJhY2sgaW4gY2FzZSBjdXJyZW50IG1lc3NhZ2UgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgbWVzc2FnZSBsaXN0LlxuICAgIC8vIEkuZS4gaW4gYSBzaXR1YXRpb24gd2hlbiBmcmVzaGx5IHdyaXR0ZW4gbWVzc2FnZSBpcyBub3QgeWV0IHZpc2libGUgaW5cbiAgICAvLyBldmVudHVhbGx5IGNvbnNpc3RlbnQgcmVhZHMuXG4gICAgaWYgKCFjdXJyZW50TWVzc2FnZSkge1xuICAgICAgY3VycmVudE1lc3NhZ2UgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRNZXNzYWdlKCk7XG4gICAgICBtZXNzYWdlcy5wdXNoKGN1cnJlbnRNZXNzYWdlKTtcbiAgICB9XG5cbiAgICAvLyBJbmRleCBhc3Npc3RhbnQgbWVzc2FnZXMgYnkgY29ycmVzcG9uZGluZyB1c2VyIG1lc3NhZ2UuXG4gICAgY29uc3QgYXNzaXN0YW50TWVzc2FnZUJ5VXNlck1lc3NhZ2VJZDogTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgQ29udmVyc2F0aW9uSGlzdG9yeU1lc3NhZ2VJdGVtXG4gICAgPiA9IG5ldyBNYXAoKTtcbiAgICBtZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50JyAmJiBtZXNzYWdlLmFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkKSB7XG4gICAgICAgIGFzc2lzdGFudE1lc3NhZ2VCeVVzZXJNZXNzYWdlSWQuc2V0KFxuICAgICAgICAgIG1lc3NhZ2UuYXNzb2NpYXRlZFVzZXJNZXNzYWdlSWQsXG4gICAgICAgICAgbWVzc2FnZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gUmVjb25jaWxlIGhpc3RvcnkgYW5kIGluamVjdCBhaUNvbnRleHRcbiAgICByZXR1cm4gbWVzc2FnZXMucmVkdWNlKChhY2MsIGN1cnJlbnQpID0+IHtcbiAgICAgIC8vIEJlZHJvY2sgZXhwZWN0cyB0aGF0IG1lc3NhZ2UgaGlzdG9yeSBpcyB1c2VyLT5hc3Npc3RhbnQtPnVzZXItPmFzc2lzdGFudC0+Li4uIGFuZCBzbyBvbi5cbiAgICAgIC8vIFRoZSBjaHJvbm9sb2dpY2FsIG9yZGVyIGRvZXNuJ3QgYXNzdXJlIHRoaXMgb3JkZXJpbmcgaWYgdGhlcmUgd2VyZSBhbnkgY29uY3VycmVudCBtZXNzYWdlcyBzZW50LlxuICAgICAgLy8gVGhlcmVmb3JlLCBjb252ZXJzYXRpb24gaXMgb3JkZXJlZCBieSB1c2VyJ3MgbWVzc2FnZXMgb25seSBhbmQgY29ycmVzcG9uZGluZyBhc3Npc3RhbnQgbWVzc2FnZXMgYXJlIGluc2VydGVkXG4gICAgICAvLyBpbnRvIHJpZ2h0IHBsYWNlIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgY3JlYXRlZEF0IHZhbHVlLlxuICAgICAgLy8gVGhpcyBhbGdvcml0aG0gYXNzdW1lcyB0aGF0IEdRTCBxdWVyeSByZXR1cm5zIG1lc3NhZ2VzIHNvcnRlZCBieSBjcmVhdGVkQXQuXG4gICAgICBpZiAoY3VycmVudC5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgICAvLyBJbml0aWFsbHksIHNraXAgYXNzaXN0YW50IG1lc3NhZ2VzLCB0aGVzZSBtaWdodCBiZSBvdXQgb2YgY2hyb25vbG9naWNhbCBvcmRlci5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY3VycmVudC5yb2xlID09PSAndXNlcicgJiZcbiAgICAgICAgIWFzc2lzdGFudE1lc3NhZ2VCeVVzZXJNZXNzYWdlSWQuaGFzKGN1cnJlbnQuaWQpICYmXG4gICAgICAgIGN1cnJlbnQuaWQgIT09IHRoaXMuZXZlbnQuY3VycmVudE1lc3NhZ2VJZFxuICAgICAgKSB7XG4gICAgICAgIC8vIFNraXAgdXNlciBtZXNzYWdlcyB0aGF0IGRpZG4ndCBnZXQgYW5zd2VyIGZyb20gYXNzaXN0YW50IHlldC5cbiAgICAgICAgLy8gVGhlc2UgbWlnaHQgYmUgc3RpbGwgXCJpbi1mbGlnaHRcIiwgaS5lLiBhc3Npc3RhbnQgaXMgc3RpbGwgd29ya2luZyBvbiB0aGVtIGluIHNlcGFyYXRlIGludm9jYXRpb24uXG4gICAgICAgIC8vIEV4Y2VwdCBjdXJyZW50IG1lc3NhZ2UsIHdlIHdhbnQgdG8gcHJvY2VzcyB0aGF0IG9uZS5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFpQ29udGV4dCA9IGN1cnJlbnQuYWlDb250ZXh0O1xuICAgICAgY29uc3QgY29udGVudCA9IGFpQ29udGV4dFxuICAgICAgICA/IFsuLi5jdXJyZW50LmNvbnRlbnQsIHsgdGV4dDogSlNPTi5zdHJpbmdpZnkoYWlDb250ZXh0KSB9XVxuICAgICAgICA6IGN1cnJlbnQuY29udGVudDtcblxuICAgICAgYWNjLnB1c2goeyByb2xlOiBjdXJyZW50LnJvbGUsIGNvbnRlbnQgfSk7XG5cbiAgICAgIC8vIEZpbmQgYW5kIGluc2VydCBjb3JyZXNwb25kaW5nIGFzc2lzdGFudCBtZXNzYWdlLlxuICAgICAgY29uc3QgY29ycmVzcG9uZGluZ0Fzc2lzdGFudE1lc3NhZ2UgPSBhc3Npc3RhbnRNZXNzYWdlQnlVc2VyTWVzc2FnZUlkLmdldChcbiAgICAgICAgY3VycmVudC5pZFxuICAgICAgKTtcbiAgICAgIGlmIChjb3JyZXNwb25kaW5nQXNzaXN0YW50TWVzc2FnZSkge1xuICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgcm9sZTogY29ycmVzcG9uZGluZ0Fzc2lzdGFudE1lc3NhZ2Uucm9sZSxcbiAgICAgICAgICBjb250ZW50OiBjb3JyZXNwb25kaW5nQXNzaXN0YW50TWVzc2FnZS5jb250ZW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgQXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZT4pO1xuICB9O1xuXG4gIHByaXZhdGUgZ2V0Q3VycmVudE1lc3NhZ2UgPVxuICAgIGFzeW5jICgpOiBQcm9taXNlPENvbnZlcnNhdGlvbkhpc3RvcnlNZXNzYWdlSXRlbT4gPT4ge1xuICAgICAgY29uc3QgcXVlcnkgPSBgXG4gICAgICAgIHF1ZXJ5IEdldE1lc3NhZ2UoJGlkOiAke3RoaXMuZXZlbnQubWVzc2FnZUhpc3RvcnlRdWVyeS5nZXRRdWVyeUlucHV0VHlwZU5hbWV9ISkge1xuICAgICAgICAgICAgJHt0aGlzLmV2ZW50Lm1lc3NhZ2VIaXN0b3J5UXVlcnkuZ2V0UXVlcnlOYW1lfShpZDogJGlkKSB7XG4gICAgICAgICAgICAgICR7bWVzc2FnZUl0ZW1TZWxlY3Rpb25TZXR9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBgO1xuICAgICAgY29uc3QgdmFyaWFibGVzOiBHZXRRdWVyeUlucHV0ID0ge1xuICAgICAgICBpZDogdGhpcy5ldmVudC5jdXJyZW50TWVzc2FnZUlkLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdyYXBocWxSZXF1ZXN0RXhlY3V0b3IuZXhlY3V0ZUdyYXBocWw8XG4gICAgICAgIEdldFF1ZXJ5SW5wdXQsXG4gICAgICAgIEdldFF1ZXJ5T3V0cHV0XG4gICAgICA+KHtcbiAgICAgICAgcXVlcnksXG4gICAgICAgIHZhcmlhYmxlcyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YVt0aGlzLmV2ZW50Lm1lc3NhZ2VIaXN0b3J5UXVlcnkuZ2V0UXVlcnlOYW1lXTtcbiAgICB9O1xuXG4gIHByaXZhdGUgbGlzdE1lc3NhZ2VzID0gYXN5bmMgKCk6IFByb21pc2U8XG4gICAgQXJyYXk8Q29udmVyc2F0aW9uSGlzdG9yeU1lc3NhZ2VJdGVtPlxuICA+ID0+IHtcbiAgICBjb25zdCBxdWVyeSA9IGBcbiAgICAgICAgcXVlcnkgTGlzdE1lc3NhZ2VzKCRmaWx0ZXI6ICR7dGhpcy5ldmVudC5tZXNzYWdlSGlzdG9yeVF1ZXJ5Lmxpc3RRdWVyeUlucHV0VHlwZU5hbWV9ISwgJGxpbWl0OiBJbnQpIHtcbiAgICAgICAgICAgICR7dGhpcy5ldmVudC5tZXNzYWdlSGlzdG9yeVF1ZXJ5Lmxpc3RRdWVyeU5hbWV9KGZpbHRlcjogJGZpbHRlciwgbGltaXQ6ICRsaW1pdCkge1xuICAgICAgICAgICAgICBpdGVtcyB7XG4gICAgICAgICAgICAgICAgJHttZXNzYWdlSXRlbVNlbGVjdGlvblNldH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYDtcbiAgICBjb25zdCB2YXJpYWJsZXM6IExpc3RRdWVyeUlucHV0ID0ge1xuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGNvbnZlcnNhdGlvbklkOiB7XG4gICAgICAgICAgZXE6IHRoaXMuZXZlbnQuY29udmVyc2F0aW9uSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbGltaXQ6IHRoaXMuZXZlbnQubWVzc2FnZUhpc3RvcnlRdWVyeS5saXN0UXVlcnlMaW1pdCA/PyAxMDAwLFxuICAgIH07XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3RFeGVjdXRvci5leGVjdXRlR3JhcGhxbDxcbiAgICAgIExpc3RRdWVyeUlucHV0LFxuICAgICAgTGlzdFF1ZXJ5T3V0cHV0XG4gICAgPih7XG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGl0ZW1zID1cbiAgICAgIHJlc3BvbnNlLmRhdGFbdGhpcy5ldmVudC5tZXNzYWdlSGlzdG9yeVF1ZXJ5Lmxpc3RRdWVyeU5hbWVdLml0ZW1zO1xuXG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5jb250ZW50Py5mb3JFYWNoKChjb250ZW50QmxvY2spID0+IHtcbiAgICAgICAgbGV0IHByb3BlcnR5OiBrZXlvZiB0eXBlb2YgY29udGVudEJsb2NrO1xuICAgICAgICBmb3IgKHByb3BlcnR5IGluIGNvbnRlbnRCbG9jaykge1xuICAgICAgICAgIC8vIERlc2VyaWFsaXphdGlvbiBvZiBHcmFwaFFsIHF1ZXJ5IHJlc3VsdCBzZXRzIHRoZXNlIHByb3BlcnRpZXMgdG8gJ251bGwnXG4gICAgICAgICAgLy8gVGhpcyBjYW4gdHJpZ2dlciBCZWRyb2NrIFNESyB2YWxpZGF0aW9uIGFzIGl0IGV4cGVjdHMgJ3VuZGVmaW5lZCcgaWYgcHJvcGVydGllcyBhcmUgbm90IHNldC5cbiAgICAgICAgICAvLyBXZSBjYW4ndCBmaXggaG93IEdyYXBoUWwgcmVzcG9uc2UgaXMgZGVzZXJpYWxpemVkLlxuICAgICAgICAgIC8vIFRoZXJlZm9yZSwgd2UgYXBwbHkgdGhpcyB0cmFuc2Zvcm1hdGlvbiB0byBmaXggdGhlIGRhdGEuXG4gICAgICAgICAgaWYgKGNvbnRlbnRCbG9ja1twcm9wZXJ0eV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRlbnRCbG9ja1twcm9wZXJ0eV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50QmxvY2sudG9vbFVzZT8uaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgLy8gdG9vbFVzZS5pbnB1dCBtYXkgY29tZSBhcyBzZXJpYWxpemVkIEpTT04gZm9yIENsaWVudCBUb29scy5cbiAgICAgICAgICAvLyBQYXJzZSBpdCBpbiB0aGF0IGNhc2UuXG4gICAgICAgICAgY29udGVudEJsb2NrLnRvb2xVc2UuaW5wdXQgPSBKU09OLnBhcnNlKGNvbnRlbnRCbG9jay50b29sVXNlLmlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udGVudEJsb2NrLnRvb2xSZXN1bHQ/LmNvbnRlbnQpIHtcbiAgICAgICAgICBjb250ZW50QmxvY2sudG9vbFJlc3VsdC5jb250ZW50LmZvckVhY2goKHRvb2xSZXN1bHRDb250ZW50QmxvY2spID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdG9vbFJlc3VsdENvbnRlbnRCbG9jay5qc29uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAvLyB0b29sUmVzdWx0LmNvbnRlbnRbXS5qc29uIG1heSBjb21lIGFzIHNlcmlhbGl6ZWQgSlNPTiBmb3IgQ2xpZW50IFRvb2xzLlxuICAgICAgICAgICAgICAvLyBQYXJzZSBpdCBpbiB0aGF0IGNhc2UuXG4gICAgICAgICAgICAgIHRvb2xSZXN1bHRDb250ZW50QmxvY2suanNvbiA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICAgICAgdG9vbFJlc3VsdENvbnRlbnRCbG9jay5qc29uXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9O1xufVxuIl19
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX21lc3NhZ2VfaGlzdG9yeV9yZXRyaWV2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udmVyc2F0aW9uL3J1bnRpbWUvY29udmVyc2F0aW9uX21lc3NhZ2VfaGlzdG9yeV9yZXRyaWV2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EseUVBQW9FO0FBbUNwRTs7OztHQUlHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0QvQixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQWEsbUNBQW1DO0lBQzlDOztPQUVHO0lBQ0gsWUFDbUIsS0FBNEIsRUFDNUIseUJBQXlCLElBQUksaURBQXNCLENBQ2xFLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUNuQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUMxQztRQUxnQixVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUM1QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBSXRDO1FBR0gsc0JBQWlCLEdBQUcsS0FBSyxJQUF5QyxFQUFFO1lBQ2xFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRTNDLElBQUksY0FBYyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQ2hDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQzVDLENBQUM7WUFFRixtRkFBbUY7WUFDbkYseUVBQXlFO1lBQ3pFLCtCQUErQjtZQUMvQixJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNuQixjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDaEQsUUFBUSxD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akUsSUFBSSxPQUFPLHNCQUFzQixDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0NBQ25ELDBFQUEwRTtnQ0FDMUUseUJBQXlCO2dDQUN6QixzQkFBc0IsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDdEMsc0JBQXNCLENBQUMsSUFBSSxDQUM1QixDQUFDOzZCQUNIO3dCQUNILENBQUMsQ0FBQyxDQUFDO3FCQUNKO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztJQTdPQyxDQUFDO0NBOE9MO0FBelBELGtGQXlQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnZlcnNhdGlvbk1lc3NhZ2UsXG4gIENvbnZlcnNhdGlvbk1lc3NhZ2VDb250ZW50QmxvY2ssXG4gIENvbnZlcnNhdGlvblR1cm5FdmVudCxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBHcmFwaHFsUmVxdWVzdEV4ZWN1dG9yIH0gZnJvbSAnLi9ncmFwaHFsX3JlcXVlc3RfZXhlY3V0b3InO1xuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25IaXN0b3J5TWVzc2FnZUl0ZW0gPSBDb252ZXJzYXRpb25NZXNzYWdlICYge1xuICBpZDogc3RyaW5nO1xuICBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICBhc3NvY2lhdGVkVXNlck1lc3NhZ2VJZD86IHN0cmluZztcbiAgYWlDb250ZXh0PzogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIEdldFF1ZXJ5SW5wdXQgPSB7XG4gIGlkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBHZXRRdWVyeU91dHB1dCA9IHtcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgQ29udmVyc2F0aW9uSGlzdG9yeU1lc3NhZ2VJdGVtPjtcbn07XG5cbmV4cG9ydCB0eXBlIExpc3RRdWVyeUlucHV0ID0ge1xuICBmaWx0ZXI6IHtcbiAgICBjb252ZXJzYXRpb25JZDoge1xuICAgICAgZXE6IHN0cmluZztcbiAgICB9O1xuICB9O1xuICBsaW1pdDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTGlzdFF1ZXJ5T3V0cHV0ID0ge1xuICBkYXRhOiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIGl0ZW1zOiBBcnJheTxDb252ZXJzYXRpb25IaXN0b3J5TWVzc2FnZUl0ZW0+O1xuICAgIH1cbiAgPjtcbn07XG5cbi8qKlxuICogVGhlc2UgYXJlIGFsbCBwcm9wZXJ0aWVzIHdlIGhhdmUgdG8gcHVsbC5cbiAqIFVuZm9ydHVuYXRlbHksIEdRTCBkb2Vzbid0IHN1cHBvcnQgd2lsZGNhcmRzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1zcGVjL2lzc3Vlcy8xMjdcbiAqL1xuY29uc3QgbWVzc2FnZUl0ZW1TZWxlY3Rpb25TZXQgPSBgXG4gICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICBjb252ZXJzYXRpb25JZFxuICAgICAgICAgICAgICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkXG4gICAgICAgICAgICAgICAgYWlDb250ZXh0XG4gICAgICAgICAgICAgICAgcm9sZVxuICAgICAgICAgICAgICAgIGNvbnRlbnQge1xuICAgICAgICAgICAgICAgICAgdGV4dFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGltYWdlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSB7XG4gICAgICAgICAgICAgICAgICAgICAgYnl0ZXNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgdG9vbFJlc3VsdCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQge1xuICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaW1hZ2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBqc29uXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICAgICAgICAgICB0b29sVXNlSWRcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRvb2xVc2Uge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dFxuICAgICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICAgIHRvb2xVc2VJZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbmA7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgcmV0cmlldmluZyBtZXNzYWdlIGhpc3RvcnkgdGhhdCBiZWxvbmdzIHRvIGNvbnZlcnNhdGlvbiB0dXJuIGV2ZW50LlxuICogSXQgcXVlcmllcyBBcHBTeW5jIHRvIGxpc3QgbWVzc2FnZXMgdGhhdCBiZWxvbmcgdG8gY29udmVyc2F0aW9uLlxuICogQWRkaXRpb25hbGx5LCBpdCBsb29rcyB1cCBhIGN1cnJlbnQgbWVzc2FnZSBpbiBjYXNlIGl0J3MgbWlzc2luZyBpbiB0aGUgbGlzdCBkdWUgdG8gZXZlbnR1YWwgY29uc2lzdGVuY3kuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb252ZXJzYXRpb25NZXNzYWdlSGlzdG9yeVJldHJpZXZlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGNvbnZlcnNhdGlvbiBtZXNzYWdlIGhpc3RvcnkgcmV0cmlldmVyLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudDogQ29udmVyc2F0aW9uVHVybkV2ZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ3JhcGhxbFJlcXVlc3RFeGVjdXRvciA9IG5ldyBHcmFwaHFsUmVxdWVzdEV4ZWN1dG9yKFxuICAgICAgZXZlbnQuZ3JhcGhxbEFwaUVuZHBvaW50LFxuICAgICAgZXZlbnQucmVxdWVzdC5oZWFkZXJzLmF1dGhvcml6YXRpb24sXG4gICAgICBldmVudC5yZXF1ZXN0LmhlYWRlcnNbJ3gtYW16LXVzZXItYWdlbnQnXVxuICAgIClcbiAgKSB7fVxuXG4gIGdldE1lc3NhZ2VIaXN0b3J5ID0gYXN5bmMgKCk6IFByb21pc2U8QXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZT4+ID0+IHtcbiAgICBjb25zdCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMubGlzdE1lc3NhZ2VzKCk7XG5cbiAgICBsZXQgY3VycmVudE1lc3NhZ2UgPSBtZXNzYWdlcy5maW5kKFxuICAgICAgKG0pID0+IG0uaWQgPT09IHRoaXMuZXZlbnQuY3VycmVudE1lc3NhZ2VJZFxuICAgICk7XG5cbiAgICAvLyBUaGlzIGlzIGEgZmFsbGJhY2sgaW4gY2FzZSBjdXJyZW50IG1lc3NhZ2UgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgbWVzc2FnZSBsaXN0LlxuICAgIC8vIEkuZS4gaW4gYSBzaXR1YXRpb24gd2hlbiBmcmVzaGx5IHdyaXR0ZW4gbWVzc2FnZSBpcyBub3QgeWV0IHZpc2libGUgaW5cbiAgICAvLyBldmVudHVhbGx5IGNvbnNpc3RlbnQgcmVhZHMuXG4gICAgaWYgKCFjdXJyZW50TWVzc2FnZSkge1xuICAgICAgY3VycmVudE1lc3NhZ2UgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRNZXNzYWdlKCk7XG4gICAgICBtZXNzYWdlcy5wdXNoKGN1cnJlbnRNZXNzYWdlKTtcbiAgICB9XG5cbiAgICAvLyBJbmRleCBhc3Npc3RhbnQgbWVzc2FnZXMgYnkgY29ycmVzcG9uZGluZyB1c2VyIG1lc3NhZ2UuXG4gICAgY29uc3QgYXNzaXN0YW50TWVzc2FnZUJ5VXNlck1lc3NhZ2VJZDogTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgQ29udmVyc2F0aW9uSGlzdG9yeU1lc3NhZ2VJdGVtXG4gICAgPiA9IG5ldyBNYXAoKTtcbiAgICBtZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50JyAmJiBtZXNzYWdlLmFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkKSB7XG4gICAgICAgIGFzc2lzdGFudE1lc3NhZ2VCeVVzZXJNZXNzYWdlSWQuc2V0KFxuICAgICAgICAgIG1lc3NhZ2UuYXNzb2NpYXRlZFVzZXJNZXNzYWdlSWQsXG4gICAgICAgICAgbWVzc2FnZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gUmVjb25jaWxlIGhpc3RvcnkgYW5kIGluamVjdCBhaUNvbnRleHRcbiAgICBjb25zdCBvcmRlcmVkTWVzc2FnZXMgPSBtZXNzYWdlcy5yZWR1Y2UoKGFjYywgY3VycmVudCkgPT4ge1xuICAgICAgLy8gQmVkcm9jayBleHBlY3RzIHRoYXQgbWVzc2FnZSBoaXN0b3J5IGlzIHVzZXItPmFzc2lzdGFudC0+dXNlci0+YXNzaXN0YW50LT4uLi4gYW5kIHNvIG9uLlxuICAgICAgLy8gVGhlIGNocm9ub2xvZ2ljYWwgb3JkZXIgZG9lc24ndCBhc3N1cmUgdGhpcyBvcmRlcmluZyBpZiB0aGVyZSB3ZXJlIGFueSBjb25jdXJyZW50IG1lc3NhZ2VzIHNlbnQuXG4gICAgICAvLyBUaGVyZWZvcmUsIGNvbnZlcnNhdGlvbiBpcyBvcmRlcmVkIGJ5IHVzZXIncyBtZXNzYWdlcyBvbmx5IGFuZCBjb3JyZXNwb25kaW5nIGFzc2lzdGFudCBtZXNzYWdlcyBhcmUgaW5zZXJ0ZWRcbiAgICAgIC8vIGludG8gcmlnaHQgcGxhY2UgcmVnYXJkbGVzcyBvZiB0aGVpciBjcmVhdGVkQXQgdmFsdWUuXG4gICAgICAvLyBUaGlzIGFsZ29yaXRobSBhc3N1bWVzIHRoYXQgR1FMIHF1ZXJ5IHJldHVybnMgbWVzc2FnZXMgc29ydGVkIGJ5IGNyZWF0ZWRBdC5cbiAgICAgIGlmIChjdXJyZW50LnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgIC8vIEluaXRpYWxseSwgc2tpcCBhc3Npc3RhbnQgbWVzc2FnZXMsIHRoZXNlIG1pZ2h0IGJlIG91dCBvZiBjaHJvbm9sb2dpY2FsIG9yZGVyLlxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjdXJyZW50LnJvbGUgPT09ICd1c2VyJyAmJlxuICAgICAgICAhYXNzaXN0YW50TWVzc2FnZUJ5VXNlck1lc3NhZ2VJZC5oYXMoY3VycmVudC5pZCkgJiZcbiAgICAgICAgY3VycmVudC5pZCAhPT0gdGhpcy5ldmVudC5jdXJyZW50TWVzc2FnZUlkXG4gICAgICApIHtcbiAgICAgICAgLy8gU2tpcCB1c2VyIG1lc3NhZ2VzIHRoYXQgZGlkbid0IGdldCBhbnN3ZXIgZnJvbSBhc3Npc3RhbnQgeWV0LlxuICAgICAgICAvLyBUaGVzZSBtaWdodCBiZSBzdGlsbCBcImluLWZsaWdodFwiLCBpLmUuIGFzc2lzdGFudCBpcyBzdGlsbCB3b3JraW5nIG9uIHRoZW0gaW4gc2VwYXJhdGUgaW52b2NhdGlvbi5cbiAgICAgICAgLy8gRXhjZXB0IGN1cnJlbnQgbWVzc2FnZSwgd2Ugd2FudCB0byBwcm9jZXNzIHRoYXQgb25lLlxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuICAgICAgY29uc3QgYWlDb250ZXh0ID0gY3VycmVudC5haUNvbnRleHQ7XG4gICAgICBjb25zdCBjb250ZW50ID0gYWlDb250ZXh0XG4gICAgICAgID8gWy4uLmN1cnJlbnQuY29udGVudCwgeyB0ZXh0OiBKU09OLnN0cmluZ2lmeShhaUNvbnRleHQpIH1dXG4gICAgICAgIDogY3VycmVudC5jb250ZW50O1xuXG4gICAgICBhY2MucHVzaCh7IHJvbGU6IGN1cnJlbnQucm9sZSwgY29udGVudCB9KTtcblxuICAgICAgLy8gRmluZCBhbmQgaW5zZXJ0IGNvcnJlc3BvbmRpbmcgYXNzaXN0YW50IG1lc3NhZ2UuXG4gICAgICBjb25zdCBjb3JyZXNwb25kaW5nQXNzaXN0YW50TWVzc2FnZSA9IGFzc2lzdGFudE1lc3NhZ2VCeVVzZXJNZXNzYWdlSWQuZ2V0KFxuICAgICAgICBjdXJyZW50LmlkXG4gICAgICApO1xuICAgICAgaWYgKGNvcnJlc3BvbmRpbmdBc3Npc3RhbnRNZXNzYWdlKSB7XG4gICAgICAgIGFjYy5wdXNoKHtcbiAgICAgICAgICByb2xlOiBjb3JyZXNwb25kaW5nQXNzaXN0YW50TWVzc2FnZS5yb2xlLFxuICAgICAgICAgIGNvbnRlbnQ6IGNvcnJlc3BvbmRpbmdBc3Npc3RhbnRNZXNzYWdlLmNvbnRlbnQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSBhcyBBcnJheTxDb252ZXJzYXRpb25NZXNzYWdlPik7XG5cbiAgICAvLyBSZW1vdmUgdG9vbCB1c2FnZSBmcm9tIG5vbi1jdXJyZW50IHR1cm4gYW5kIHNxdWFzaCBtZXNzYWdlcy5cbiAgICByZXR1cm4gdGhpcy5zcXVhc2hOb25DdXJyZW50VHVybnMob3JkZXJlZE1lc3NhZ2VzKTtcbiAgfTtcblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiByZW1vdmVzIHRvb2wgdXNhZ2UgZnJvbSBub24tY3VycmVudCB0dXJucy5cbiAgICogVGhlIHRvb2wgdXNhZ2UgYW5kIHJlc3VsdCBibG9ja3MgZG9uJ3QgbWF0dGVyIGFmdGVyIGEgdHVybiBpcyBjb21wbGV0ZWQsXG4gICAqIGJ1dCBkbyBjb3N0IGV4dHJhIHRva2VucyB0byBwcm9jZXNzLlxuICAgKiBUaGUgYWxnb3JpdGhtIGlzIGFzIGZvbGxvd3M6XG4gICAqIDEuIEZpbmQgd2hlcmUgY3VycmVudCB0dXJuIGJlZ2lucy4gSS5lLiBsYXN0IHVzZXIgbWVzc2FnZSB0aGF0IGlzbid0IHRvb2wgYmxvY2suXG4gICAqIDIuIFJlbW92ZSB0b29sVXNlIGFuZCB0b29sUmVzdWx0IGJsb2NrcyBiZWZvcmUgY3VycmVudCB0dXJuLlxuICAgKiAzLiBTcXVhc2ggY29udGludW91cyBzZXF1ZW5jZXMgb2YgbWVzc2FnZXMgdGhhdCBiZWxvbmcgdG8gc2FtZSAnbWVzc2FnZS5yb2xlJy5cbiAgICovXG4gIHByaXZhdGUgc3F1YXNoTm9uQ3VycmVudFR1cm5zID0gKG1lc3NhZ2VzOiBBcnJheTxDb252ZXJzYXRpb25NZXNzYWdlPikgPT4ge1xuICAgIGNvbnN0IGlzTm9uVG9vbEJsb2NrUHJlZGljYXRlID0gKFxuICAgICAgY29udGVudEJsb2NrOiBDb252ZXJzYXRpb25NZXNzYWdlQ29udGVudEJsb2NrXG4gICAgKSA9PiAhY29udGVudEJsb2NrLnRvb2xVc2UgJiYgIWNvbnRlbnRCbG9jay50b29sUmVzdWx0O1xuXG4gICAgLy8gZmluZCB3aGVyZSBjdXJyZW50IHR1cm4gYmVnaW5zLiBJLmUuIGxhc3QgdXNlciBtZXNzYWdlIHRoYXQgaXMgbm90IHJlbGF0ZWQgdG8gdG9vbHNcbiAgICBjb25zdCBsYXN0Tm9uVG9vbFVzZVVzZXJNZXNzYWdlSW5kZXggPSBtZXNzYWdlcy5maW5kTGFzdEluZGV4KChtZXNzYWdlKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBtZXNzYWdlLnJvbGUgPT09ICd1c2VyJyAmJiBtZXNzYWdlLmNvbnRlbnQuZmluZChpc05vblRvb2xCbG9ja1ByZWRpY2F0ZSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICAvLyBObyBub24tY3VycmVudCB0dXJucywgZG9uJ3QgdHJhbnNmb3JtLlxuICAgIGlmIChsYXN0Tm9uVG9vbFVzZVVzZXJNZXNzYWdlSW5kZXggPD0gMCkge1xuICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xuICAgIH1cblxuICAgIGNvbnN0IHNxdWFzaGVkTWVzc2FnZXM6IEFycmF5PENvbnZlcnNhdGlvbk1lc3NhZ2U+ID0gW107XG5cbiAgICAvLyBEZWZpbmUgYSBcImJ1ZmZlclwiLiBJLmUuIGEgbWVzc2FnZSB3ZSBrZWVwIGFyb3VuZCBhbmQgc3F1YXNoIGNvbnRlbnQgb24uXG4gICAgbGV0IGN1cnJlbnRTcXVhc2hlZE1lc3NhZ2U6IENvbnZlcnNhdGlvbk1lc3NhZ2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgLy8gUHJvY2VzcyBtZXNzYWdlcyBiZWZvcmUgY3VycmVudCB0dXJuIGJlZ2luc1xuICAgIC8vIFJlbW92ZSB0b29sIHVzYWdlIGJsb2Nrcy5cbiAgICAvLyBDb21iaW5lIGNvbnRlbnQgZm9yIGNvbnNlY3V0aXZlIG1lc3NhZ2UgdGhhdCBoYXZlIHNhbWUgcm9sZS5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhc3ROb25Ub29sVXNlVXNlck1lc3NhZ2VJbmRleDsgaSsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50TWVzc2FnZSA9IG1lc3NhZ2VzW2ldO1xuICAgICAgY29uc3QgY3VycmVudE1lc3NhZ2VSb2xlID0gY3VycmVudE1lc3NhZ2Uucm9sZTtcbiAgICAgIGNvbnN0IGN1cnJlbnRNZXNzYWdlTm9uVG9vbENvbnRlbnQgPSBjdXJyZW50TWVzc2FnZS5jb250ZW50LmZpbHRlcihcbiAgICAgICAgaXNOb25Ub29sQmxvY2tQcmVkaWNhdGVcbiAgICAgICk7XG4gICAgICBpZiAoY3VycmVudE1lc3NhZ2VOb25Ub29sQ29udGVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gVG9vbCBvbmx5IG1lc3NhZ2UuIE5vdGhpbmcgdG8gc3F1YXNoLCBza2lwO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFjdXJyZW50U3F1YXNoZWRNZXNzYWdlKSB7XG4gICAgICAgIC8vIE5vdGhpbmcgc3F1YXNoZWQgeWV0LCBpbml0aWFsaXplIHRoZSBidWZmZXIuXG4gICAgICAgIGN1cnJlbnRTcXVhc2hlZE1lc3NhZ2UgPSB7XG4gICAgICAgICAgcm9sZTogY3VycmVudE1lc3NhZ2VSb2xlLFxuICAgICAgICAgIGNvbnRlbnQ6IGN1cnJlbnRNZXNzYWdlTm9uVG9vbENvbnRlbnQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRTcXVhc2hlZE1lc3NhZ2Uucm9sZSA9PT0gY3VycmVudE1lc3NhZ2VSb2xlKSB7XG4gICAgICAgIC8vIGlmIHJvbGUgaXMgc2FtZSBhcHBlbmQgY29udGVudC5cbiAgICAgICAgY3VycmVudFNxdWFzaGVkTWVzc2FnZS5jb250ZW50LnB1c2goLi4uY3VycmVudE1lc3NhZ2VOb25Ub29sQ29udGVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpZiByb2xlIGZsaXBzIHB1c2ggY3VycmVudCBzcXVhc2hlZCBtZXNzYWdlIGFuZCByZS1pbml0aWFsaXplIHRoZSBidWZmZXIuXG4gICAgICAgIHNxdWFzaGVkTWVzc2FnZXMucHVzaChjdXJyZW50U3F1YXNoZWRNZXNzYWdlKTtcbiAgICAgICAgY3VycmVudFNxdWFzaGVkTWVzc2FnZSA9IHtcbiAgICAgICAgICByb2xlOiBjdXJyZW50TWVzc2FnZVJvbGUsXG4gICAgICAgICAgY29udGVudDogY3VycmVudE1lc3NhZ2VOb25Ub29sQ29udGVudCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZmx1c2ggdGhlIGxhc3QgYnVmZmVyLlxuICAgIGlmIChjdXJyZW50U3F1YXNoZWRNZXNzYWdlKSB7XG4gICAgICBzcXVhc2hlZE1lc3NhZ2VzLnB1c2goY3VycmVudFNxdWFzaGVkTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgLy8gQXBwZW5kIGN1cnJlbnQgdHVybiBhcyBpcy5cbiAgICBzcXVhc2hlZE1lc3NhZ2VzLnB1c2goLi4ubWVzc2FnZXMuc2xpY2UobGFzdE5vblRvb2xVc2VVc2VyTWVzc2FnZUluZGV4KSk7XG4gICAgcmV0dXJuIHNxdWFzaGVkTWVzc2FnZXM7XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50TWVzc2FnZSA9XG4gICAgYXN5bmMgKCk6IFByb21pc2U8Q29udmVyc2F0aW9uSGlzdG9yeU1lc3NhZ2VJdGVtPiA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IGBcbiAgICAgICAgcXVlcnkgR2V0TWVzc2FnZSgkaWQ6ICR7dGhpcy5ldmVudC5tZXNzYWdlSGlzdG9yeVF1ZXJ5LmdldFF1ZXJ5SW5wdXRUeXBlTmFtZX0hKSB7XG4gICAgICAgICAgICAke3RoaXMuZXZlbnQubWVzc2FnZUhpc3RvcnlRdWVyeS5nZXRRdWVyeU5hbWV9KGlkOiAkaWQpIHtcbiAgICAgICAgICAgICAgJHttZXNzYWdlSXRlbVNlbGVjdGlvblNldH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIGA7XG4gICAgICBjb25zdCB2YXJpYWJsZXM6IEdldFF1ZXJ5SW5wdXQgPSB7XG4gICAgICAgIGlkOiB0aGlzLmV2ZW50LmN1cnJlbnRNZXNzYWdlSWQsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3RFeGVjdXRvci5leGVjdXRlR3JhcGhxbDxcbiAgICAgICAgR2V0UXVlcnlJbnB1dCxcbiAgICAgICAgR2V0UXVlcnlPdXRwdXRcbiAgICAgID4oe1xuICAgICAgICBxdWVyeSxcbiAgICAgICAgdmFyaWFibGVzLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhW3RoaXMuZXZlbnQubWVzc2FnZUhpc3RvcnlRdWVyeS5nZXRRdWVyeU5hbWVdO1xuICAgIH07XG5cbiAgcHJpdmF0ZSBsaXN0TWVzc2FnZXMgPSBhc3luYyAoKTogUHJvbWlzZTxcbiAgICBBcnJheTxDb252ZXJzYXRpb25IaXN0b3J5TWVzc2FnZUl0ZW0+XG4gID4gPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gYFxuICAgICAgICBxdWVyeSBMaXN0TWVzc2FnZXMoJGZpbHRlcjogJHt0aGlzLmV2ZW50Lm1lc3NhZ2VIaXN0b3J5UXVlcnkubGlzdFF1ZXJ5SW5wdXRUeXBlTmFtZX0hLCAkbGltaXQ6IEludCkge1xuICAgICAgICAgICAgJHt0aGlzLmV2ZW50Lm1lc3NhZ2VIaXN0b3J5UXVlcnkubGlzdFF1ZXJ5TmFtZX0oZmlsdGVyOiAkZmlsdGVyLCBsaW1pdDogJGxpbWl0KSB7XG4gICAgICAgICAgICAgIGl0ZW1zIHtcbiAgICAgICAgICAgICAgICAke21lc3NhZ2VJdGVtU2VsZWN0aW9uU2V0fVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBgO1xuICAgIGNvbnN0IHZhcmlhYmxlczogTGlzdFF1ZXJ5SW5wdXQgPSB7XG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHtcbiAgICAgICAgICBlcTogdGhpcy5ldmVudC5jb252ZXJzYXRpb25JZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsaW1pdDogdGhpcy5ldmVudC5tZXNzYWdlSGlzdG9yeVF1ZXJ5Lmxpc3RRdWVyeUxpbWl0ID8/IDEwMDAsXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5ncmFwaHFsUmVxdWVzdEV4ZWN1dG9yLmV4ZWN1dGVHcmFwaHFsPFxuICAgICAgTGlzdFF1ZXJ5SW5wdXQsXG4gICAgICBMaXN0UXVlcnlPdXRwdXRcbiAgICA+KHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaXRlbXMgPVxuICAgICAgcmVzcG9uc2UuZGF0YVt0aGlzLmV2ZW50Lm1lc3NhZ2VIaXN0b3J5UXVlcnkubGlzdFF1ZXJ5TmFtZV0uaXRlbXM7XG5cbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLmNvbnRlbnQ/LmZvckVhY2goKGNvbnRlbnRCbG9jaykgPT4ge1xuICAgICAgICBsZXQgcHJvcGVydHk6IGtleW9mIHR5cGVvZiBjb250ZW50QmxvY2s7XG4gICAgICAgIGZvciAocHJvcGVydHkgaW4gY29udGVudEJsb2NrKSB7XG4gICAgICAgICAgLy8gRGVzZXJpYWxpemF0aW9uIG9mIEdyYXBoUWwgcXVlcnkgcmVzdWx0IHNldHMgdGhlc2UgcHJvcGVydGllcyB0byAnbnVsbCdcbiAgICAgICAgICAvLyBUaGlzIGNhbiB0cmlnZ2VyIEJlZHJvY2sgU0RLIHZhbGlkYXRpb24gYXMgaXQgZXhwZWN0cyAndW5kZWZpbmVkJyBpZiBwcm9wZXJ0aWVzIGFyZSBub3Qgc2V0LlxuICAgICAgICAgIC8vIFdlIGNhbid0IGZpeCBob3cgR3JhcGhRbCByZXNwb25zZSBpcyBkZXNlcmlhbGl6ZWQuXG4gICAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBhcHBseSB0aGlzIHRyYW5zZm9ybWF0aW9uIHRvIGZpeCB0aGUgZGF0YS5cbiAgICAgICAgICBpZiAoY29udGVudEJsb2NrW3Byb3BlcnR5XSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgY29udGVudEJsb2NrW3Byb3BlcnR5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnRCbG9jay50b29sVXNlPy5pbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvLyB0b29sVXNlLmlucHV0IG1heSBjb21lIGFzIHNlcmlhbGl6ZWQgSlNPTiBmb3IgQ2xpZW50IFRvb2xzLlxuICAgICAgICAgIC8vIFBhcnNlIGl0IGluIHRoYXQgY2FzZS5cbiAgICAgICAgICBjb250ZW50QmxvY2sudG9vbFVzZS5pbnB1dCA9IEpTT04ucGFyc2UoY29udGVudEJsb2NrLnRvb2xVc2UuaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb250ZW50QmxvY2sudG9vbFJlc3VsdD8uY29udGVudCkge1xuICAgICAgICAgIGNvbnRlbnRCbG9jay50b29sUmVzdWx0LmNvbnRlbnQuZm9yRWFjaCgodG9vbFJlc3VsdENvbnRlbnRCbG9jaykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0b29sUmVzdWx0Q29udGVudEJsb2NrLmpzb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIC8vIHRvb2xSZXN1bHQuY29udGVudFtdLmpzb24gbWF5IGNvbWUgYXMgc2VyaWFsaXplZCBKU09OIGZvciBDbGllbnQgVG9vbHMuXG4gICAgICAgICAgICAgIC8vIFBhcnNlIGl0IGluIHRoYXQgY2FzZS5cbiAgICAgICAgICAgICAgdG9vbFJlc3VsdENvbnRlbnRCbG9jay5qc29uID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgICAgICB0b29sUmVzdWx0Q29udGVudEJsb2NrLmpzb25cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH07XG59XG4iXX0=
|
@@ -2,6 +2,7 @@
|
|
2
2
|
import { ConversationTurnResponseSender } from './conversation_turn_response_sender.js';
|
3
3
|
import { ConversationTurnEvent, ExecutableTool, JSONSchema } from './types.js';
|
4
4
|
import { BedrockConverseAdapter } from './bedrock_converse_adapter.js';
|
5
|
+
import { Lazy } from './lazy';
|
5
6
|
/**
|
6
7
|
* This class is responsible for orchestrating conversation turn execution.
|
7
8
|
* The conversation turn consist of:
|
@@ -11,14 +12,15 @@ import { BedrockConverseAdapter } from './bedrock_converse_adapter.js';
|
|
11
12
|
*/
|
12
13
|
export declare class ConversationTurnExecutor {
|
13
14
|
private readonly event;
|
14
|
-
private readonly bedrockConverseAdapter;
|
15
15
|
private readonly responseSender;
|
16
|
+
private readonly bedrockConverseAdapter;
|
16
17
|
private readonly logger;
|
17
18
|
/**
|
18
19
|
* Creates conversation turn executor.
|
19
20
|
*/
|
20
|
-
constructor(event: ConversationTurnEvent, additionalTools: Array<ExecutableTool>,
|
21
|
+
constructor(event: ConversationTurnEvent, additionalTools: Array<ExecutableTool>, responseSender?: Lazy<ConversationTurnResponseSender>, bedrockConverseAdapter?: Lazy<BedrockConverseAdapter>, logger?: Console);
|
21
22
|
execute: () => Promise<void>;
|
23
|
+
private tryForwardError;
|
22
24
|
}
|
23
25
|
/**
|
24
26
|
* This function handles a conversation turn event that is coming from
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleConversationTurnEvent = exports.ConversationTurnExecutor = void 0;
|
4
4
|
const conversation_turn_response_sender_js_1 = require("./conversation_turn_response_sender.js");
|
5
5
|
const bedrock_converse_adapter_js_1 = require("./bedrock_converse_adapter.js");
|
6
|
+
const lazy_1 = require("./lazy");
|
6
7
|
/**
|
7
8
|
* This class is responsible for orchestrating conversation turn execution.
|
8
9
|
* The conversation turn consist of:
|
@@ -14,33 +15,54 @@ class ConversationTurnExecutor {
|
|
14
15
|
/**
|
15
16
|
* Creates conversation turn executor.
|
16
17
|
*/
|
17
|
-
constructor(event, additionalTools,
|
18
|
+
constructor(event, additionalTools,
|
19
|
+
// We're deferring dependency initialization here so that we can capture all validation errors.
|
20
|
+
responseSender = new lazy_1.Lazy(() => new conversation_turn_response_sender_js_1.ConversationTurnResponseSender(event)), bedrockConverseAdapter = new lazy_1.Lazy(() => new bedrock_converse_adapter_js_1.BedrockConverseAdapter(event, additionalTools)), logger = console) {
|
18
21
|
this.event = event;
|
19
|
-
this.bedrockConverseAdapter = bedrockConverseAdapter;
|
20
22
|
this.responseSender = responseSender;
|
23
|
+
this.bedrockConverseAdapter = bedrockConverseAdapter;
|
21
24
|
this.logger = logger;
|
22
25
|
this.execute = async () => {
|
23
26
|
try {
|
24
27
|
this.logger.log(`Handling conversation turn event, currentMessageId=${this.event.currentMessageId}, conversationId=${this.event.conversationId}`);
|
25
28
|
this.logger.debug('Event received:', this.event);
|
26
29
|
if (this.event.streamResponse) {
|
27
|
-
const chunks = this.bedrockConverseAdapter.askBedrockStreaming();
|
30
|
+
const chunks = this.bedrockConverseAdapter.value.askBedrockStreaming();
|
28
31
|
for await (const chunk of chunks) {
|
29
|
-
await this.responseSender.sendResponseChunk(chunk);
|
32
|
+
await this.responseSender.value.sendResponseChunk(chunk);
|
30
33
|
}
|
31
34
|
}
|
32
35
|
else {
|
33
|
-
const assistantResponse = await this.bedrockConverseAdapter.askBedrock();
|
34
|
-
await this.responseSender.sendResponse(assistantResponse);
|
36
|
+
const assistantResponse = await this.bedrockConverseAdapter.value.askBedrock();
|
37
|
+
await this.responseSender.value.sendResponse(assistantResponse);
|
35
38
|
}
|
36
39
|
this.logger.log(`Conversation turn event handled successfully, currentMessageId=${this.event.currentMessageId}, conversationId=${this.event.conversationId}`);
|
37
40
|
}
|
38
41
|
catch (e) {
|
39
42
|
this.logger.error(`Failed to handle conversation turn event, currentMessageId=${this.event.currentMessageId}, conversationId=${this.event.conversationId}`, e);
|
43
|
+
await this.tryForwardError(e);
|
40
44
|
// Propagate error to mark lambda execution as failed in metrics.
|
41
45
|
throw e;
|
42
46
|
}
|
43
47
|
};
|
48
|
+
this.tryForwardError = async (e) => {
|
49
|
+
try {
|
50
|
+
let errorType = 'UnknownError';
|
51
|
+
let message;
|
52
|
+
if (e instanceof Error) {
|
53
|
+
errorType = e.name;
|
54
|
+
message = e.message;
|
55
|
+
}
|
56
|
+
else {
|
57
|
+
message = JSON.stringify(e);
|
58
|
+
}
|
59
|
+
await this.responseSender.value.sendErrors([{ errorType, message }]);
|
60
|
+
}
|
61
|
+
catch (e) {
|
62
|
+
// Best effort, only log the fact that we tried to send error back to AppSync.
|
63
|
+
this.logger.warn('Failed to send error mutation', e);
|
64
|
+
}
|
65
|
+
};
|
44
66
|
}
|
45
67
|
}
|
46
68
|
exports.ConversationTurnExecutor = ConversationTurnExecutor;
|
@@ -57,4 +79,4 @@ props) => {
|
|
57
79
|
await new ConversationTurnExecutor(event, (_a = props === null || props === void 0 ? void 0 : props.tools) !== null && _a !== void 0 ? _a : []).execute();
|
58
80
|
};
|
59
81
|
exports.handleConversationTurnEvent = handleConversationTurnEvent;
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX3R1cm5fZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udmVyc2F0aW9uL3J1bnRpbWUvY29udmVyc2F0aW9uX3R1cm5fZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUdBQXdGO0FBRXhGLCtFQUF1RTtBQUN2RSxpQ0FBOEI7QUFFOUI7Ozs7OztHQU1HO0FBQ0gsTUFBYSx3QkFBd0I7SUFDbkM7O09BRUc7SUFDSCxZQUNtQixLQUE0QixFQUM3QyxlQUFzQztJQUN0QywrRkFBK0Y7SUFDOUUsaUJBQWlCLElBQUksV0FBSSxDQUN4QyxHQUFHLEVBQUUsQ0FBQyxJQUFJLHFFQUE4QixDQUFDLEtBQUssQ0FBQyxDQUNoRCxFQUNnQix5QkFBeUIsSUFBSSxXQUFJLENBQ2hELEdBQUcsRUFBRSxDQUFDLElBQUksb0RBQXNCLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUN6RCxFQUNnQixTQUFTLE9BQU87UUFUaEIsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFHNUIsbUJBQWMsR0FBZCxjQUFjLENBRTlCO1FBQ2dCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FFdEM7UUFDZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUduQyxZQUFPLEdBQUcsS0FBSyxJQUFtQixFQUFFO1lBQ2xDLElBQUk7Z0JBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ2Isc0RBQXNELElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLG9CQUFvQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUNqSSxDQUFDO2dCQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFakQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtvQkFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO29CQUN2RSxJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7d0JBQ2hDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzFEO2lCQUNGO3FCQUFNO29CQUNMLE1BQU0saUJBQWlCLEdBQ3JCLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDdkQsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztpQkFDakU7Z0JBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ2Isa0VBQWtFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLG9CQUFvQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUM3SSxDQUFDO2FBQ0g7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiw4REFBOEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0Isb0JBQW9CLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQ3hJLENBQUMsQ0FDRixDQUFDO2dCQUNGLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsaUVBQWlFO2dCQUNqRSxNQUFNLENBQUMsQ0FBQzthQUNUO1FBQ0gsQ0FBQyxDQUFDO1FBRU0sb0JBQWUsR0FBRyxLQUFLLEVBQUUsQ0FBVSxFQUFFLEVBQUU7WUFDN0MsSUFBSTtnQkFDRixJQUFJLFNBQVMsR0FBRyxjQUFjLENBQUM7Z0JBQy9CLElBQUksT0FBZSxDQUFDO2dCQUNwQixJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUU7b0JBQ3RCLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNuQixPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztpQkFDckI7cUJBQU07b0JBQ0wsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdCO2dCQUNELE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3RFO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsOEVBQThFO2dCQUM5RSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0RDtRQUNILENBQUMsQ0FBQztJQWpEQyxDQUFDO0NBa0RMO0FBakVELDREQWlFQztBQUVEOzs7R0FHRztBQUNJLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxFQUM5QyxLQUE0QjtBQUM1QiwyRUFBMkU7QUFDM0UsNkRBQTZEO0FBQzdELDhEQUE4RDtBQUM5RCxLQUEwRCxFQUMzQyxFQUFFOztJQUNqQixNQUFNLElBQUksd0JBQXdCLENBQUMsS0FBSyxFQUFFLE1BQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLEtBQUssbUNBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBUlcsUUFBQSwyQkFBMkIsK0JBUXRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udmVyc2F0aW9uVHVyblJlc3BvbnNlU2VuZGVyIH0gZnJvbSAnLi9jb252ZXJzYXRpb25fdHVybl9yZXNwb25zZV9zZW5kZXIuanMnO1xuaW1wb3J0IHsgQ29udmVyc2F0aW9uVHVybkV2ZW50LCBFeGVjdXRhYmxlVG9vbCwgSlNPTlNjaGVtYSB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgQmVkcm9ja0NvbnZlcnNlQWRhcHRlciB9IGZyb20gJy4vYmVkcm9ja19jb252ZXJzZV9hZGFwdGVyLmpzJztcbmltcG9ydCB7IExhenkgfSBmcm9tICcuL2xhenknO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIG9yY2hlc3RyYXRpbmcgY29udmVyc2F0aW9uIHR1cm4gZXhlY3V0aW9uLlxuICogVGhlIGNvbnZlcnNhdGlvbiB0dXJuIGNvbnNpc3Qgb2Y6XG4gKiAxLiBBY2NlcHRpbmcgYW4gZXZlbnQgdGhhdCBpcyBjb21pbmcgZnJvbSBjb252ZXJzYXRpb25hbCByb3V0ZSByZXNvbHZlcnMgaW4gQXBwU3luYy5cbiAqIDIuIEludGVyYWN0aW5nIHdpdGggQVdTIEJlZHJvY2sgdG8gcHJvZHVjZSByZXNwb25zZS5cbiAqIDMuIFNlbmQgcmVzcG9uc2UgYmFjayB0byBBcHBTeW5jIGluIGEgZm9ybSBvZiBtdXRhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvblR1cm5FeGVjdXRvciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGNvbnZlcnNhdGlvbiB0dXJuIGV4ZWN1dG9yLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudDogQ29udmVyc2F0aW9uVHVybkV2ZW50LFxuICAgIGFkZGl0aW9uYWxUb29sczogQXJyYXk8RXhlY3V0YWJsZVRvb2w+LFxuICAgIC8vIFdlJ3JlIGRlZmVycmluZyBkZXBlbmRlbmN5IGluaXRpYWxpemF0aW9uIGhlcmUgc28gdGhhdCB3ZSBjYW4gY2FwdHVyZSBhbGwgdmFsaWRhdGlvbiBlcnJvcnMuXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNwb25zZVNlbmRlciA9IG5ldyBMYXp5KFxuICAgICAgKCkgPT4gbmV3IENvbnZlcnNhdGlvblR1cm5SZXNwb25zZVNlbmRlcihldmVudClcbiAgICApLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYmVkcm9ja0NvbnZlcnNlQWRhcHRlciA9IG5ldyBMYXp5KFxuICAgICAgKCkgPT4gbmV3IEJlZHJvY2tDb252ZXJzZUFkYXB0ZXIoZXZlbnQsIGFkZGl0aW9uYWxUb29scylcbiAgICApLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gY29uc29sZVxuICApIHt9XG5cbiAgZXhlY3V0ZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5sb2dnZXIubG9nKFxuICAgICAgICBgSGFuZGxpbmcgY29udmVyc2F0aW9uIHR1cm4gZXZlbnQsIGN1cnJlbnRNZXNzYWdlSWQ9JHt0aGlzLmV2ZW50LmN1cnJlbnRNZXNzYWdlSWR9LCBjb252ZXJzYXRpb25JZD0ke3RoaXMuZXZlbnQuY29udmVyc2F0aW9uSWR9YFxuICAgICAgKTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdFdmVudCByZWNlaXZlZDonLCB0aGlzLmV2ZW50KTtcblxuICAgICAgaWYgKHRoaXMuZXZlbnQuc3RyZWFtUmVzcG9uc2UpIHtcbiAgICAgICAgY29uc3QgY2h1bmtzID0gdGhpcy5iZWRyb2NrQ29udmVyc2VBZGFwdGVyLnZhbHVlLmFza0JlZHJvY2tTdHJlYW1pbmcoKTtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBjaHVua3MpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJlc3BvbnNlU2VuZGVyLnZhbHVlLnNlbmRSZXNwb25zZUNodW5rKGNodW5rKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYXNzaXN0YW50UmVzcG9uc2UgPVxuICAgICAgICAgIGF3YWl0IHRoaXMuYmVkcm9ja0NvbnZlcnNlQWRhcHRlci52YWx1ZS5hc2tCZWRyb2NrKCk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVzcG9uc2VTZW5kZXIudmFsdWUuc2VuZFJlc3BvbnNlKGFzc2lzdGFudFJlc3BvbnNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2dnZXIubG9nKFxuICAgICAgICBgQ29udmVyc2F0aW9uIHR1cm4gZXZlbnQgaGFuZGxlZCBzdWNjZXNzZnVsbHksIGN1cnJlbnRNZXNzYWdlSWQ9JHt0aGlzLmV2ZW50LmN1cnJlbnRNZXNzYWdlSWR9LCBjb252ZXJzYXRpb25JZD0ke3RoaXMuZXZlbnQuY29udmVyc2F0aW9uSWR9YFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBoYW5kbGUgY29udmVyc2F0aW9uIHR1cm4gZXZlbnQsIGN1cnJlbnRNZXNzYWdlSWQ9JHt0aGlzLmV2ZW50LmN1cnJlbnRNZXNzYWdlSWR9LCBjb252ZXJzYXRpb25JZD0ke3RoaXMuZXZlbnQuY29udmVyc2F0aW9uSWR9YCxcbiAgICAgICAgZVxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMudHJ5Rm9yd2FyZEVycm9yKGUpO1xuICAgICAgLy8gUHJvcGFnYXRlIGVycm9yIHRvIG1hcmsgbGFtYmRhIGV4ZWN1dGlvbiBhcyBmYWlsZWQgaW4gbWV0cmljcy5cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgdHJ5Rm9yd2FyZEVycm9yID0gYXN5bmMgKGU6IHVua25vd24pID0+IHtcbiAgICB0cnkge1xuICAgICAgbGV0IGVycm9yVHlwZSA9ICdVbmtub3duRXJyb3InO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgZXJyb3JUeXBlID0gZS5uYW1lO1xuICAgICAgICBtZXNzYWdlID0gZS5tZXNzYWdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KGUpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5yZXNwb25zZVNlbmRlci52YWx1ZS5zZW5kRXJyb3JzKFt7IGVycm9yVHlwZSwgbWVzc2FnZSB9XSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gQmVzdCBlZmZvcnQsIG9ubHkgbG9nIHRoZSBmYWN0IHRoYXQgd2UgdHJpZWQgdG8gc2VuZCBlcnJvciBiYWNrIHRvIEFwcFN5bmMuXG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdGYWlsZWQgdG8gc2VuZCBlcnJvciBtdXRhdGlvbicsIGUpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgYSBjb252ZXJzYXRpb24gdHVybiBldmVudCB0aGF0IGlzIGNvbWluZyBmcm9tXG4gKiBBcHBTeW5jIGluc3RhbmNlIHdpdGggY29udmVyc2F0aW9uYWwgcm91dGVzIGRlZmluZWQgYW5kIHNlbmRzIHJlc3BvbnNlIGJhY2suXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVDb252ZXJzYXRpb25UdXJuRXZlbnQgPSBhc3luYyAoXG4gIGV2ZW50OiBDb252ZXJzYXRpb25UdXJuRXZlbnQsXG4gIC8vIFRoaXMgaXMgYnkgZGVzaWduLCBzbyB0aGF0IHRvb2xzIHdpdGggZGlmZmVyZW50IGlucHV0IHR5cGVzIGNhbiBiZSBhZGRlZFxuICAvLyB0byBzaW5nbGUgYXJyYXlzLiBEb3duc3RyZWFtIGNvZGUgZG9lc24ndCB1c2UgdGhlc2UgdHlwZXMuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHByb3BzPzogeyB0b29scz86IEFycmF5PEV4ZWN1dGFibGVUb29sPEpTT05TY2hlbWEsIGFueT4+IH1cbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBhd2FpdCBuZXcgQ29udmVyc2F0aW9uVHVybkV4ZWN1dG9yKGV2ZW50LCBwcm9wcz8udG9vbHMgPz8gW10pLmV4ZWN1dGUoKTtcbn07XG4iXX0=
|
@@ -1,23 +1,24 @@
|
|
1
1
|
/// <reference types="node" />
|
2
|
-
import { ConversationTurnError, ConversationTurnEvent,
|
2
|
+
import { ConversationTurnError, ConversationTurnEvent, StreamingResponseChunk } from './types.js';
|
3
3
|
import type { ContentBlock } from '@aws-sdk/client-bedrock-runtime';
|
4
4
|
import { GraphqlRequestExecutor } from './graphql_request_executor';
|
5
5
|
export type MutationResponseInput = {
|
6
6
|
input: {
|
7
|
-
associatedUserMessageId: string;
|
8
7
|
conversationId: string;
|
9
8
|
content: ContentBlock[];
|
10
|
-
errors?: never;
|
11
|
-
} | {
|
12
9
|
associatedUserMessageId: string;
|
13
|
-
conversationId: string;
|
14
|
-
content?: never;
|
15
|
-
errors: ConversationTurnError[];
|
16
10
|
};
|
17
11
|
};
|
18
12
|
export type MutationStreamingResponseInput = {
|
19
13
|
input: StreamingResponseChunk;
|
20
14
|
};
|
15
|
+
export type MutationErrorsResponseInput = {
|
16
|
+
input: {
|
17
|
+
conversationId: string;
|
18
|
+
errors: ConversationTurnError[];
|
19
|
+
associatedUserMessageId: string;
|
20
|
+
};
|
21
|
+
};
|
21
22
|
/**
|
22
23
|
* This class is responsible for sending a response produced by Bedrock back to AppSync
|
23
24
|
* in a form of mutation.
|
@@ -30,8 +31,10 @@ export declare class ConversationTurnResponseSender {
|
|
30
31
|
* Creates conversation turn response sender.
|
31
32
|
*/
|
32
33
|
constructor(event: ConversationTurnEvent, graphqlRequestExecutor?: GraphqlRequestExecutor, logger?: Console);
|
33
|
-
sendResponse: (
|
34
|
+
sendResponse: (message: ContentBlock[]) => Promise<void>;
|
34
35
|
sendResponseChunk: (chunk: StreamingResponseChunk) => Promise<void>;
|
36
|
+
sendErrors: (errors: ConversationTurnError[]) => Promise<void>;
|
37
|
+
private createMutationErrorsRequest;
|
35
38
|
private createMutationRequest;
|
36
39
|
private createStreamingMutationRequest;
|
37
40
|
private serializeContent;
|
@@ -14,8 +14,8 @@ class ConversationTurnResponseSender {
|
|
14
14
|
this.event = event;
|
15
15
|
this.graphqlRequestExecutor = graphqlRequestExecutor;
|
16
16
|
this.logger = logger;
|
17
|
-
this.sendResponse = async (
|
18
|
-
const responseMutationRequest = this.createMutationRequest(
|
17
|
+
this.sendResponse = async (message) => {
|
18
|
+
const responseMutationRequest = this.createMutationRequest(message);
|
19
19
|
this.logger.debug('Sending response mutation:', responseMutationRequest);
|
20
20
|
await this.graphqlRequestExecutor.executeGraphql(responseMutationRequest);
|
21
21
|
};
|
@@ -24,7 +24,12 @@ class ConversationTurnResponseSender {
|
|
24
24
|
this.logger.debug('Sending response mutation:', responseMutationRequest);
|
25
25
|
await this.graphqlRequestExecutor.executeGraphql(responseMutationRequest);
|
26
26
|
};
|
27
|
-
this.
|
27
|
+
this.sendErrors = async (errors) => {
|
28
|
+
const responseMutationRequest = this.createMutationErrorsRequest(errors);
|
29
|
+
this.logger.debug('Sending errors response mutation:', responseMutationRequest);
|
30
|
+
await this.graphqlRequestExecutor.executeGraphql(responseMutationRequest);
|
31
|
+
};
|
32
|
+
this.createMutationErrorsRequest = (errors) => {
|
28
33
|
const query = `
|
29
34
|
mutation PublishModelResponse($input: ${this.event.responseMutation.inputTypeName}!) {
|
30
35
|
${this.event.responseMutation.name}(input: $input) {
|
@@ -32,28 +37,31 @@ class ConversationTurnResponseSender {
|
|
32
37
|
}
|
33
38
|
}
|
34
39
|
`;
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
errors: response.errors,
|
50
|
-
associatedUserMessageId: this.event.currentMessageId,
|
51
|
-
},
|
52
|
-
};
|
53
|
-
}
|
54
|
-
else {
|
55
|
-
throw new Error('Response contains neither content nor error');
|
40
|
+
const variables = {
|
41
|
+
input: {
|
42
|
+
conversationId: this.event.conversationId,
|
43
|
+
errors,
|
44
|
+
associatedUserMessageId: this.event.currentMessageId,
|
45
|
+
},
|
46
|
+
};
|
47
|
+
return { query, variables };
|
48
|
+
};
|
49
|
+
this.createMutationRequest = (content) => {
|
50
|
+
const query = `
|
51
|
+
mutation PublishModelResponse($input: ${this.event.responseMutation.inputTypeName}!) {
|
52
|
+
${this.event.responseMutation.name}(input: $input) {
|
53
|
+
${this.event.responseMutation.selectionSet}
|
56
54
|
}
|
55
|
+
}
|
56
|
+
`;
|
57
|
+
content = this.serializeContent(content);
|
58
|
+
const variables = {
|
59
|
+
input: {
|
60
|
+
conversationId: this.event.conversationId,
|
61
|
+
content,
|
62
|
+
associatedUserMessageId: this.event.currentMessageId,
|
63
|
+
},
|
64
|
+
};
|
57
65
|
return { query, variables };
|
58
66
|
};
|
59
67
|
this.createStreamingMutationRequest = (chunk) => {
|
@@ -88,4 +96,4 @@ class ConversationTurnResponseSender {
|
|
88
96
|
}
|
89
97
|
}
|
90
98
|
exports.ConversationTurnResponseSender = ConversationTurnResponseSender;
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX3R1cm5fcmVzcG9uc2Vfc2VuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9ydW50aW1lL2NvbnZlcnNhdGlvbl90dXJuX3Jlc3BvbnNlX3NlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSx5RUFBb0U7QUFzQnBFOzs7R0FHRztBQUNILE1BQWEsOEJBQThCO0lBQ3pDOztPQUVHO0lBQ0gsWUFDbUIsS0FBNEIsRUFDNUIseUJBQXlCLElBQUksaURBQXNCLENBQ2xFLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUNuQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUMxQyxFQUNnQixTQUFTLE9BQU87UUFOaEIsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFDNUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUl0QztRQUNnQixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBR25DLGlCQUFZLEdBQUcsS0FBSyxFQUFFLFFBQWtDLEVBQUUsRUFBRTtZQUMxRCxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FHOUMsdUJBQXVCLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRixzQkFBaUIsR0FBRyxLQUFLLEVBQUUsS0FBNkIsRUFBRSxFQUFFO1lBQzFELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixFQUFFLHVCQUF1QixDQUFDLENBQUM7WUFDekUsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUc5Qyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQztRQUVNLDBCQUFxQixHQUFHLENBQUMsUUFBa0MsRUFBRSxFQUFFO1lBQ3JFLE1BQU0sS0FBSyxHQUFHO2dEQUM4QixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGFBQWE7Y0FDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJO2tCQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFlBQVk7OztLQUdyRCxDQUFDO1lBQ0YsSUFBSSxTQUFnQyxDQUFDO1lBQ3JDLElBQUksT0FBTyxRQUFRLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtnQkFDM0MsU0FBUyxHQUFHO29CQUNWLEtBQUssRUFBRTt3QkFDTCxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO3dCQUN6QyxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7d0JBQ2hELHVCQUF1QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCO3FCQUNyRDtpQkFDRixDQUFDO2FBQ0g7aUJBQU0sSUFBSSxPQUFPLFFBQVEsQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFO2dCQUNqRCxTQUFTLEdBQUc7b0JBQ1YsS0FBSyxFQUFFO3dCQUNMLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWM7d0JBQ3pDLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTt3QkFDdkIsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7cUJBQ3JEO2lCQUNGLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7YUFDaEU7WUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQztRQUVNLG1DQUE4QixHQUFHLENBQUMsS0FBNkIsRUFBRSxFQUFFO1lBQ3pFLE1BQU0sS0FBSyxHQUFHO2dEQUM4QixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGFBQWE7Y0FDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJO2tCQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFlBQVk7OztLQUdyRCxDQUFDO1lBQ0YsS0FBSyxHQUFHO2dCQUNOLEdBQUcsS0FBSztnQkFDUixzQkFBc0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQzNDLEtBQUssQ0FBQyxzQkFBc0IsQ0FDN0I7YUFDRixDQUFDO1lBQ0YsTUFBTSxTQUFTLEdBQW1DO2dCQUNoRCxLQUFLLEVBQUUsS0FBSzthQUNiLENBQUM7WUFDRixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQztRQUVNLHFCQUFnQixHQUFHLENBQUMsT0FBdUIsRUFBRSxFQUFFO1lBQ3JELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMzQixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7b0JBQ2pCLHVGQUF1RjtvQkFDdkYseUJBQXlCO29CQUN6QiwrRUFBK0U7b0JBQy9FLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO2lCQUNqRDtnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO0lBbEZDLENBQUM7Q0FtRkw7QUEvRkQsd0VBK0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udmVyc2F0aW9uVHVybkVycm9yLFxuICBDb252ZXJzYXRpb25UdXJuRXZlbnQsXG4gIENvbnZlcnNhdGlvblR1cm5SZXNwb25zZSxcbiAgU3RyZWFtaW5nUmVzcG9uc2VDaHVuayxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbnRlbnRCbG9jayB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1iZWRyb2NrLXJ1bnRpbWUnO1xuaW1wb3J0IHsgR3JhcGhxbFJlcXVlc3RFeGVjdXRvciB9IGZyb20gJy4vZ3JhcGhxbF9yZXF1ZXN0X2V4ZWN1dG9yJztcblxuZXhwb3J0IHR5cGUgTXV0YXRpb25SZXNwb25zZUlucHV0ID0ge1xuICBpbnB1dDpcbiAgICB8IHtcbiAgICAgICAgYXNzb2NpYXRlZFVzZXJNZXNzYWdlSWQ6IHN0cmluZztcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgICAgICAgY29udGVudDogQ29udGVudEJsb2NrW107XG4gICAgICAgIGVycm9ycz86IG5ldmVyO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBhc3NvY2lhdGVkVXNlck1lc3NhZ2VJZDogc3RyaW5nO1xuICAgICAgICBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICAgICAgICBjb250ZW50PzogbmV2ZXI7XG4gICAgICAgIGVycm9yczogQ29udmVyc2F0aW9uVHVybkVycm9yW107XG4gICAgICB9O1xufTtcblxuZXhwb3J0IHR5cGUgTXV0YXRpb25TdHJlYW1pbmdSZXNwb25zZUlucHV0ID0ge1xuICBpbnB1dDogU3RyZWFtaW5nUmVzcG9uc2VDaHVuaztcbn07XG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3Igc2VuZGluZyBhIHJlc3BvbnNlIHByb2R1Y2VkIGJ5IEJlZHJvY2sgYmFjayB0byBBcHBTeW5jXG4gKiBpbiBhIGZvcm0gb2YgbXV0YXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDb252ZXJzYXRpb25UdXJuUmVzcG9uc2VTZW5kZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBjb252ZXJzYXRpb24gdHVybiByZXNwb25zZSBzZW5kZXIuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50OiBDb252ZXJzYXRpb25UdXJuRXZlbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBncmFwaHFsUmVxdWVzdEV4ZWN1dG9yID0gbmV3IEdyYXBocWxSZXF1ZXN0RXhlY3V0b3IoXG4gICAgICBldmVudC5ncmFwaHFsQXBpRW5kcG9pbnQsXG4gICAgICBldmVudC5yZXF1ZXN0LmhlYWRlcnMuYXV0aG9yaXphdGlvbixcbiAgICAgIGV2ZW50LnJlcXVlc3QuaGVhZGVyc1sneC1hbXotdXNlci1hZ2VudCddXG4gICAgKSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IGNvbnNvbGVcbiAgKSB7fVxuXG4gIHNlbmRSZXNwb25zZSA9IGFzeW5jIChyZXNwb25zZTogQ29udmVyc2F0aW9uVHVyblJlc3BvbnNlKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2VNdXRhdGlvblJlcXVlc3QgPSB0aGlzLmNyZWF0ZU11dGF0aW9uUmVxdWVzdChyZXNwb25zZSk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ1NlbmRpbmcgcmVzcG9uc2UgbXV0YXRpb246JywgcmVzcG9uc2VNdXRhdGlvblJlcXVlc3QpO1xuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3RFeGVjdXRvci5leGVjdXRlR3JhcGhxbDxcbiAgICAgIE11dGF0aW9uUmVzcG9uc2VJbnB1dCxcbiAgICAgIHZvaWRcbiAgICA+KHJlc3BvbnNlTXV0YXRpb25SZXF1ZXN0KTtcbiAgfTtcblxuICBzZW5kUmVzcG9uc2VDaHVuayA9IGFzeW5jIChjaHVuazogU3RyZWFtaW5nUmVzcG9uc2VDaHVuaykgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlTXV0YXRpb25SZXF1ZXN0ID0gdGhpcy5jcmVhdGVTdHJlYW1pbmdNdXRhdGlvblJlcXVlc3QoY2h1bmspO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTZW5kaW5nIHJlc3BvbnNlIG11dGF0aW9uOicsIHJlc3BvbnNlTXV0YXRpb25SZXF1ZXN0KTtcbiAgICBhd2FpdCB0aGlzLmdyYXBocWxSZXF1ZXN0RXhlY3V0b3IuZXhlY3V0ZUdyYXBocWw8XG4gICAgICBNdXRhdGlvblN0cmVhbWluZ1Jlc3BvbnNlSW5wdXQsXG4gICAgICB2b2lkXG4gICAgPihyZXNwb25zZU11dGF0aW9uUmVxdWVzdCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBjcmVhdGVNdXRhdGlvblJlcXVlc3QgPSAocmVzcG9uc2U6IENvbnZlcnNhdGlvblR1cm5SZXNwb25zZSkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gYFxuICAgICAgICBtdXRhdGlvbiBQdWJsaXNoTW9kZWxSZXNwb25zZSgkaW5wdXQ6ICR7dGhpcy5ldmVudC5yZXNwb25zZU11dGF0aW9uLmlucHV0VHlwZU5hbWV9ISkge1xuICAgICAgICAgICAgJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24ubmFtZX0oaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgICAgICAgICAgICR7dGhpcy5ldmVudC5yZXNwb25zZU11dGF0aW9uLnNlbGVjdGlvblNldH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIGA7XG4gICAgbGV0IHZhcmlhYmxlczogTXV0YXRpb25SZXNwb25zZUlucHV0O1xuICAgIGlmICh0eXBlb2YgcmVzcG9uc2UuY29udGVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhcmlhYmxlcyA9IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBjb252ZXJzYXRpb25JZDogdGhpcy5ldmVudC5jb252ZXJzYXRpb25JZCxcbiAgICAgICAgICBjb250ZW50OiB0aGlzLnNlcmlhbGl6ZUNvbnRlbnQocmVzcG9uc2UuY29udGVudCksXG4gICAgICAgICAgYXNzb2NpYXRlZFVzZXJNZXNzYWdlSWQ6IHRoaXMuZXZlbnQuY3VycmVudE1lc3NhZ2VJZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzcG9uc2UuZXJyb3JzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFyaWFibGVzID0ge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGNvbnZlcnNhdGlvbklkOiB0aGlzLmV2ZW50LmNvbnZlcnNhdGlvbklkLFxuICAgICAgICAgIGVycm9yczogcmVzcG9uc2UuZXJyb3JzLFxuICAgICAgICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkOiB0aGlzLmV2ZW50LmN1cnJlbnRNZXNzYWdlSWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jlc3BvbnNlIGNvbnRhaW5zIG5laXRoZXIgY29udGVudCBub3IgZXJyb3InKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgcXVlcnksIHZhcmlhYmxlcyB9O1xuICB9O1xuXG4gIHByaXZhdGUgY3JlYXRlU3RyZWFtaW5nTXV0YXRpb25SZXF1ZXN0ID0gKGNodW5rOiBTdHJlYW1pbmdSZXNwb25zZUNodW5rKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSBgXG4gICAgICAgIG11dGF0aW9uIFB1Ymxpc2hNb2RlbFJlc3BvbnNlKCRpbnB1dDogJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uaW5wdXRUeXBlTmFtZX0hKSB7XG4gICAgICAgICAgICAke3RoaXMuZXZlbnQucmVzcG9uc2VNdXRhdGlvbi5uYW1lfShpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICAgICAgJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uc2VsZWN0aW9uU2V0fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYDtcbiAgICBjaHVuayA9IHtcbiAgICAgIC4uLmNodW5rLFxuICAgICAgYWNjdW11bGF0ZWRUdXJuQ29udGVudDogdGhpcy5zZXJpYWxpemVDb250ZW50KFxuICAgICAgICBjaHVuay5hY2N1bXVsYXRlZFR1cm5Db250ZW50XG4gICAgICApLFxuICAgIH07XG4gICAgY29uc3QgdmFyaWFibGVzOiBNdXRhdGlvblN0cmVhbWluZ1Jlc3BvbnNlSW5wdXQgPSB7XG4gICAgICBpbnB1dDogY2h1bmssXG4gICAgfTtcbiAgICByZXR1cm4geyBxdWVyeSwgdmFyaWFibGVzIH07XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVDb250ZW50ID0gKGNvbnRlbnQ6IENvbnRlbnRCbG9ja1tdKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRlbnQubWFwKChibG9jaykgPT4ge1xuICAgICAgaWYgKGJsb2NrLnRvb2xVc2UpIHtcbiAgICAgICAgLy8gVGhlIGBpbnB1dGAgZmllbGQgaXMgdHlwZWQgYXMgYEFXUyBKU09OYCBpbiB0aGUgR3JhcGhRTCBBUEkgYmVjYXVzZSBpdCBjYW4gcmVwcmVzZW50XG4gICAgICAgIC8vIGFyYml0cmFyeSBKU09OIHZhbHVlcy5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBzdHJpbmdpZnkgaXQgYmVmb3JlIHNlbmRpbmcgaXQgdG8gQXBwU3luYyB0byBwcmV2ZW50IHR5cGUgZXJyb3JzLlxuICAgICAgICBjb25zdCBpbnB1dCA9IEpTT04uc3RyaW5naWZ5KGJsb2NrLnRvb2xVc2UuaW5wdXQpO1xuICAgICAgICByZXR1cm4geyB0b29sVXNlOiB7IC4uLmJsb2NrLnRvb2xVc2UsIGlucHV0IH0gfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBibG9jaztcbiAgICB9KTtcbiAgfTtcbn1cbiJdfQ==
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX3R1cm5fcmVzcG9uc2Vfc2VuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9ydW50aW1lL2NvbnZlcnNhdGlvbl90dXJuX3Jlc3BvbnNlX3NlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSx5RUFBb0U7QUFzQnBFOzs7R0FHRztBQUNILE1BQWEsOEJBQThCO0lBQ3pDOztPQUVHO0lBQ0gsWUFDbUIsS0FBNEIsRUFDNUIseUJBQXlCLElBQUksaURBQXNCLENBQ2xFLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUNuQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUMxQyxFQUNnQixTQUFTLE9BQU87UUFOaEIsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFDNUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUl0QztRQUNnQixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBR25DLGlCQUFZLEdBQUcsS0FBSyxFQUFFLE9BQXVCLEVBQUUsRUFBRTtZQUMvQyxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FHOUMsdUJBQXVCLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRixzQkFBaUIsR0FBRyxLQUFLLEVBQUUsS0FBNkIsRUFBRSxFQUFFO1lBQzFELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixFQUFFLHVC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TUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7aUJBQ2pEO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7SUFwR0MsQ0FBQztDQXFHTDtBQWpIRCx3RUFpSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb252ZXJzYXRpb25UdXJuRXJyb3IsXG4gIENvbnZlcnNhdGlvblR1cm5FdmVudCxcbiAgU3RyZWFtaW5nUmVzcG9uc2VDaHVuayxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbnRlbnRCbG9jayB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1iZWRyb2NrLXJ1bnRpbWUnO1xuaW1wb3J0IHsgR3JhcGhxbFJlcXVlc3RFeGVjdXRvciB9IGZyb20gJy4vZ3JhcGhxbF9yZXF1ZXN0X2V4ZWN1dG9yJztcblxuZXhwb3J0IHR5cGUgTXV0YXRpb25SZXNwb25zZUlucHV0ID0ge1xuICBpbnB1dDoge1xuICAgIGNvbnZlcnNhdGlvbklkOiBzdHJpbmc7XG4gICAgY29udGVudDogQ29udGVudEJsb2NrW107XG4gICAgYXNzb2NpYXRlZFVzZXJNZXNzYWdlSWQ6IHN0cmluZztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIE11dGF0aW9uU3RyZWFtaW5nUmVzcG9uc2VJbnB1dCA9IHtcbiAgaW5wdXQ6IFN0cmVhbWluZ1Jlc3BvbnNlQ2h1bms7XG59O1xuXG5leHBvcnQgdHlwZSBNdXRhdGlvbkVycm9yc1Jlc3BvbnNlSW5wdXQgPSB7XG4gIGlucHV0OiB7XG4gICAgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgICBlcnJvcnM6IENvbnZlcnNhdGlvblR1cm5FcnJvcltdO1xuICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkOiBzdHJpbmc7XG4gIH07XG59O1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIHNlbmRpbmcgYSByZXNwb25zZSBwcm9kdWNlZCBieSBCZWRyb2NrIGJhY2sgdG8gQXBwU3luY1xuICogaW4gYSBmb3JtIG9mIG11dGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uVHVyblJlc3BvbnNlU2VuZGVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgY29udmVyc2F0aW9uIHR1cm4gcmVzcG9uc2Ugc2VuZGVyLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudDogQ29udmVyc2F0aW9uVHVybkV2ZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ3JhcGhxbFJlcXVlc3RFeGVjdXRvciA9IG5ldyBHcmFwaHFsUmVxdWVzdEV4ZWN1dG9yKFxuICAgICAgZXZlbnQuZ3JhcGhxbEFwaUVuZHBvaW50LFxuICAgICAgZXZlbnQucmVxdWVzdC5oZWFkZXJzLmF1dGhvcml6YXRpb24sXG4gICAgICBldmVudC5yZXF1ZXN0LmhlYWRlcnNbJ3gtYW16LXVzZXItYWdlbnQnXVxuICAgICksXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBjb25zb2xlXG4gICkge31cblxuICBzZW5kUmVzcG9uc2UgPSBhc3luYyAobWVzc2FnZTogQ29udGVudEJsb2NrW10pID0+IHtcbiAgICBjb25zdCByZXNwb25zZU11dGF0aW9uUmVxdWVzdCA9IHRoaXMuY3JlYXRlTXV0YXRpb25SZXF1ZXN0KG1lc3NhZ2UpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTZW5kaW5nIHJlc3BvbnNlIG11dGF0aW9uOicsIHJlc3BvbnNlTXV0YXRpb25SZXF1ZXN0KTtcbiAgICBhd2FpdCB0aGlzLmdyYXBocWxSZXF1ZXN0RXhlY3V0b3IuZXhlY3V0ZUdyYXBocWw8XG4gICAgICBNdXRhdGlvblJlc3BvbnNlSW5wdXQsXG4gICAgICB2b2lkXG4gICAgPihyZXNwb25zZU11dGF0aW9uUmVxdWVzdCk7XG4gIH07XG5cbiAgc2VuZFJlc3BvbnNlQ2h1bmsgPSBhc3luYyAoY2h1bms6IFN0cmVhbWluZ1Jlc3BvbnNlQ2h1bmspID0+IHtcbiAgICBjb25zdCByZXNwb25zZU11dGF0aW9uUmVxdWVzdCA9IHRoaXMuY3JlYXRlU3RyZWFtaW5nTXV0YXRpb25SZXF1ZXN0KGNodW5rKTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU2VuZGluZyByZXNwb25zZSBtdXRhdGlvbjonLCByZXNwb25zZU11dGF0aW9uUmVxdWVzdCk7XG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsUmVxdWVzdEV4ZWN1dG9yLmV4ZWN1dGVHcmFwaHFsPFxuICAgICAgTXV0YXRpb25TdHJlYW1pbmdSZXNwb25zZUlucHV0LFxuICAgICAgdm9pZFxuICAgID4ocmVzcG9uc2VNdXRhdGlvblJlcXVlc3QpO1xuICB9O1xuXG4gIHNlbmRFcnJvcnMgPSBhc3luYyAoZXJyb3JzOiBDb252ZXJzYXRpb25UdXJuRXJyb3JbXSkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlTXV0YXRpb25SZXF1ZXN0ID0gdGhpcy5jcmVhdGVNdXRhdGlvbkVycm9yc1JlcXVlc3QoZXJyb3JzKTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICdTZW5kaW5nIGVycm9ycyByZXNwb25zZSBtdXRhdGlvbjonLFxuICAgICAgcmVzcG9uc2VNdXRhdGlvblJlcXVlc3RcbiAgICApO1xuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3RFeGVjdXRvci5leGVjdXRlR3JhcGhxbDxcbiAgICAgIE11dGF0aW9uRXJyb3JzUmVzcG9uc2VJbnB1dCxcbiAgICAgIHZvaWRcbiAgICA+KHJlc3BvbnNlTXV0YXRpb25SZXF1ZXN0KTtcbiAgfTtcblxuICBwcml2YXRlIGNyZWF0ZU11dGF0aW9uRXJyb3JzUmVxdWVzdCA9IChlcnJvcnM6IENvbnZlcnNhdGlvblR1cm5FcnJvcltdKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSBgXG4gICAgICAgIG11dGF0aW9uIFB1Ymxpc2hNb2RlbFJlc3BvbnNlKCRpbnB1dDogJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uaW5wdXRUeXBlTmFtZX0hKSB7XG4gICAgICAgICAgICAke3RoaXMuZXZlbnQucmVzcG9uc2VNdXRhdGlvbi5uYW1lfShpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICAgICAgJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uc2VsZWN0aW9uU2V0fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYDtcbiAgICBjb25zdCB2YXJpYWJsZXM6IE11dGF0aW9uRXJyb3JzUmVzcG9uc2VJbnB1dCA9IHtcbiAgICAgIGlucHV0OiB7XG4gICAgICAgIGNvbnZlcnNhdGlvbklkOiB0aGlzLmV2ZW50LmNvbnZlcnNhdGlvbklkLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkOiB0aGlzLmV2ZW50LmN1cnJlbnRNZXNzYWdlSWQsXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIHsgcXVlcnksIHZhcmlhYmxlcyB9O1xuICB9O1xuXG4gIHByaXZhdGUgY3JlYXRlTXV0YXRpb25SZXF1ZXN0ID0gKGNvbnRlbnQ6IENvbnRlbnRCbG9ja1tdKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSBgXG4gICAgICAgIG11dGF0aW9uIFB1Ymxpc2hNb2RlbFJlc3BvbnNlKCRpbnB1dDogJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uaW5wdXRUeXBlTmFtZX0hKSB7XG4gICAgICAgICAgICAke3RoaXMuZXZlbnQucmVzcG9uc2VNdXRhdGlvbi5uYW1lfShpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICAgICAgJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uc2VsZWN0aW9uU2V0fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYDtcbiAgICBjb250ZW50ID0gdGhpcy5zZXJpYWxpemVDb250ZW50KGNvbnRlbnQpO1xuICAgIGNvbnN0IHZhcmlhYmxlczogTXV0YXRpb25SZXNwb25zZUlucHV0ID0ge1xuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuZXZlbnQuY29udmVyc2F0aW9uSWQsXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkOiB0aGlzLmV2ZW50LmN1cnJlbnRNZXNzYWdlSWQsXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIHsgcXVlcnksIHZhcmlhYmxlcyB9O1xuICB9O1xuXG4gIHByaXZhdGUgY3JlYXRlU3RyZWFtaW5nTXV0YXRpb25SZXF1ZXN0ID0gKGNodW5rOiBTdHJlYW1pbmdSZXNwb25zZUNodW5rKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSBgXG4gICAgICAgIG11dGF0aW9uIFB1Ymxpc2hNb2RlbFJlc3BvbnNlKCRpbnB1dDogJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uaW5wdXRUeXBlTmFtZX0hKSB7XG4gICAgICAgICAgICAke3RoaXMuZXZlbnQucmVzcG9uc2VNdXRhdGlvbi5uYW1lfShpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICAgICAgJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uc2VsZWN0aW9uU2V0fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYDtcbiAgICBjaHVuayA9IHtcbiAgICAgIC4uLmNodW5rLFxuICAgICAgYWNjdW11bGF0ZWRUdXJuQ29udGVudDogdGhpcy5zZXJpYWxpemVDb250ZW50KFxuICAgICAgICBjaHVuay5hY2N1bXVsYXRlZFR1cm5Db250ZW50XG4gICAgICApLFxuICAgIH07XG4gICAgY29uc3QgdmFyaWFibGVzOiBNdXRhdGlvblN0cmVhbWluZ1Jlc3BvbnNlSW5wdXQgPSB7XG4gICAgICBpbnB1dDogY2h1bmssXG4gICAgfTtcbiAgICByZXR1cm4geyBxdWVyeSwgdmFyaWFibGVzIH07XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVDb250ZW50ID0gKGNvbnRlbnQ6IENvbnRlbnRCbG9ja1tdKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRlbnQubWFwKChibG9jaykgPT4ge1xuICAgICAgaWYgKGJsb2NrLnRvb2xVc2UpIHtcbiAgICAgICAgLy8gVGhlIGBpbnB1dGAgZmllbGQgaXMgdHlwZWQgYXMgYEFXUyBKU09OYCBpbiB0aGUgR3JhcGhRTCBBUEkgYmVjYXVzZSBpdCBjYW4gcmVwcmVzZW50XG4gICAgICAgIC8vIGFyYml0cmFyeSBKU09OIHZhbHVlcy5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBzdHJpbmdpZnkgaXQgYmVmb3JlIHNlbmRpbmcgaXQgdG8gQXBwU3luYyB0byBwcmV2ZW50IHR5cGUgZXJyb3JzLlxuICAgICAgICBjb25zdCBpbnB1dCA9IEpTT04uc3RyaW5naWZ5KGJsb2NrLnRvb2xVc2UuaW5wdXQpO1xuICAgICAgICByZXR1cm4geyB0b29sVXNlOiB7IC4uLmJsb2NrLnRvb2xVc2UsIGlucHV0IH0gfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBibG9jaztcbiAgICB9KTtcbiAgfTtcbn1cbiJdfQ==
|
@@ -0,0 +1,17 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ValidationError = void 0;
|
4
|
+
/**
|
5
|
+
* Represents validation errors.
|
6
|
+
*/
|
7
|
+
class ValidationError extends Error {
|
8
|
+
/**
|
9
|
+
* Creates validation error instance.
|
10
|
+
*/
|
11
|
+
constructor(message) {
|
12
|
+
super(message);
|
13
|
+
this.name = 'ValidationError';
|
14
|
+
}
|
15
|
+
}
|
16
|
+
exports.ValidationError = ValidationError;
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9ydW50aW1lL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxLQUFLO0lBQ3hDOztPQUVHO0lBQ0gsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBUkQsMENBUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcHJlc2VudHMgdmFsaWRhdGlvbiBlcnJvcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIHZhbGlkYXRpb24gZXJyb3IgaW5zdGFuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnVmFsaWRhdGlvbkVycm9yJztcbiAgfVxufVxuIl19
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/**
|
2
|
+
* A class that initializes lazily upon usage.
|
3
|
+
*/
|
4
|
+
export declare class Lazy<T> {
|
5
|
+
#private;
|
6
|
+
private readonly valueFactory;
|
7
|
+
/**
|
8
|
+
* Creates lazy instance.
|
9
|
+
*/
|
10
|
+
constructor(valueFactory: () => T);
|
11
|
+
/**
|
12
|
+
* Gets a value. Value is create at first access.
|
13
|
+
*/
|
14
|
+
get value(): T;
|
15
|
+
}
|
16
|
+
//# sourceMappingURL=lazy.d.ts.map
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
6
|
+
};
|
7
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
8
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
11
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
12
|
+
};
|
13
|
+
var _Lazy_value;
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
exports.Lazy = void 0;
|
16
|
+
/**
|
17
|
+
* A class that initializes lazily upon usage.
|
18
|
+
*/
|
19
|
+
class Lazy {
|
20
|
+
/**
|
21
|
+
* Creates lazy instance.
|
22
|
+
*/
|
23
|
+
constructor(valueFactory) {
|
24
|
+
this.valueFactory = valueFactory;
|
25
|
+
_Lazy_value.set(this, void 0);
|
26
|
+
}
|
27
|
+
/**
|
28
|
+
* Gets a value. Value is create at first access.
|
29
|
+
*/
|
30
|
+
get value() {
|
31
|
+
var _a;
|
32
|
+
return (__classPrivateFieldSet(this, _Lazy_value, (_a = __classPrivateFieldGet(this, _Lazy_value, "f")) !== null && _a !== void 0 ? _a : this.valueFactory(), "f"));
|
33
|
+
}
|
34
|
+
}
|
35
|
+
exports.Lazy = Lazy;
|
36
|
+
_Lazy_value = new WeakMap();
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb252ZXJzYXRpb24vcnVudGltZS9sYXp5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsTUFBYSxJQUFJO0lBR2Y7O09BRUc7SUFDSCxZQUE2QixZQUFxQjtRQUFyQixpQkFBWSxHQUFaLFlBQVksQ0FBUztRQUxsRCw4QkFBVztJQUswQyxDQUFDO0lBQ3REOztPQUVHO0lBQ0gsSUFBVyxLQUFLOztRQUNkLE9BQU8sQ0FBQyxpSUFBZ0IsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFBLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0Y7QUFiRCxvQkFhQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBjbGFzcyB0aGF0IGluaXRpYWxpemVzIGxhemlseSB1cG9uIHVzYWdlLlxuICovXG5leHBvcnQgY2xhc3MgTGF6eTxUPiB7XG4gICN2YWx1ZT86IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbGF6eSBpbnN0YW5jZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdmFsdWVGYWN0b3J5OiAoKSA9PiBUKSB7fVxuICAvKipcbiAgICogR2V0cyBhIHZhbHVlLiBWYWx1ZSBpcyBjcmVhdGUgYXQgZmlyc3QgYWNjZXNzLlxuICAgKi9cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gKHRoaXMuI3ZhbHVlID8/PSB0aGlzLnZhbHVlRmFjdG9yeSgpKTtcbiAgfVxufVxuIl19
|