@aws-amplify/graphql-api-construct 1.14.0 → 1.15.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.jsii +91 -34
- package/CHANGELOG.md +11 -0
- package/lib/amplify-dynamodb-table-wrapper.js +1 -1
- package/lib/amplify-graphql-api.js +1 -1
- package/lib/amplify-graphql-definition.js +1 -1
- package/lib/internal/authorization-modes.js +3 -3
- package/lib/sql-model-datasource-strategy.js +1 -1
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/bedrock_converse_adapter.d.ts +3 -1
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/bedrock_converse_adapter.js +8 -5
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_message_history_retriever.d.ts +44 -0
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_message_history_retriever.js +173 -0
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_turn_response_sender.d.ts +10 -3
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_turn_response_sender.js +10 -23
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/event-tools-provider/graphql_tool.d.ts +5 -5
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/event-tools-provider/graphql_tool.js +9 -24
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/graphql_request_executor.d.ts +21 -0
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/graphql_request_executor.js +45 -0
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/types.d.ts +11 -1
- package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/types.js +1 -1
- package/node_modules/@aws-amplify/ai-constructs/package.json +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/API.md +2 -0
- package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +6 -0
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts +1 -0
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js +18 -0
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +13 -13
- package/node_modules/@aws-amplify/graphql-conversation-transformer/API.md +2 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/CHANGELOG.md +11 -0
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/graphql-types/message-model.js +2 -2
- 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/grapqhl-conversation-transformer.d.ts +2 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/grapqhl-conversation-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/grapqhl-conversation-transformer.js +2 -2
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/grapqhl-conversation-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/assistant-mutation-resolver-fn.template.js +16 -33
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/assistant-mutation-resolver.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/assistant-mutation-resolver.js +10 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/assistant-mutation-resolver.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/init-resolver-fn.template.js +1 -0
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/init-resolver.d.ts +2 -3
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/init-resolver.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/init-resolver.js +10 -4
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/init-resolver.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/invoke-lambda-resolver-fn.template.js +14 -4
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/invoke-lambda-resolver.d.ts +2 -2
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/invoke-lambda-resolver.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/invoke-lambda-resolver.js +15 -4
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/invoke-lambda-resolver.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/list-messages-init-resolver-fn.template.js +8 -0
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/list-messages-init-resolver.d.ts +4 -0
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/list-messages-init-resolver.d.ts.map +1 -0
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/{message-history-resolver.js → list-messages-init-resolver.js} +6 -6
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/list-messages-init-resolver.js.map +1 -0
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/verify-session-owner-resolver-fn.template.js +2 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/verify-session-owner-resolver.d.ts +2 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/verify-session-owner-resolver.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/verify-session-owner-resolver.js +23 -5
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/verify-session-owner-resolver.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/write-message-to-table-resolver.d.ts +2 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/write-message-to-table-resolver.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/write-message-to-table-resolver.js +4 -2
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/write-message-to-table-resolver.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/transformer-steps/conversation-resolver-generator.d.ts +4 -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 +50 -30
- 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 +12 -11
- package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +6 -0
- package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.js +19 -7
- package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +9 -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/default.js +1 -1
- package/node_modules/@aws-amplify/graphql-directives/package.json +3 -2
- package/node_modules/@aws-amplify/graphql-function-transformer/CHANGELOG.md +4 -0
- package/node_modules/@aws-amplify/graphql-function-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-generation-transformer/CHANGELOG.md +7 -0
- package/node_modules/@aws-amplify/graphql-generation-transformer/lib/resolvers/invoke-bedrock-resolver-fn.template.js +24 -9
- package/node_modules/@aws-amplify/graphql-generation-transformer/lib/resolvers/invoke-bedrock.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-generation-transformer/lib/resolvers/invoke-bedrock.js +11 -1
- package/node_modules/@aws-amplify/graphql-generation-transformer/lib/resolvers/invoke-bedrock.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-generation-transformer/lib/utils/tools.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-generation-transformer/lib/utils/tools.js +2 -1
- package/node_modules/@aws-amplify/graphql-generation-transformer/lib/utils/tools.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-generation-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-http-transformer/CHANGELOG.md +4 -0
- package/node_modules/@aws-amplify/graphql-http-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +4 -0
- package/node_modules/@aws-amplify/graphql-index-transformer/package.json +8 -8
- package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +4 -0
- 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 -0
- 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/resolvers/dynamodb/query.js +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/dynamodb/query.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-predictions-transformer/CHANGELOG.md +4 -0
- 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 -0
- package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +9 -9
- package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +4 -0
- 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 +4 -0
- package/node_modules/@aws-amplify/graphql-sql-transformer/package.json +8 -8
- package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +6 -0
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js +1 -1
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer/package.json +19 -19
- package/node_modules/@aws-amplify/graphql-transformer/src/graphql-transformer.ts +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/API.md +13 -7
- package/node_modules/@aws-amplify/graphql-transformer-core/CHANGELOG.md +10 -0
- 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 +4 -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/graphql-utils.d.ts +9 -9
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.d.ts +2 -0
- 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 +13 -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/CHANGELOG.md +4 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/package.json +3 -3
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/tsconfig.tsbuildinfo +1 -1
- package/package.json +23 -23
- package/src/internal/authorization-modes.ts +2 -2
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/message-history-resolver-fn.template.js +0 -40
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/message-history-resolver.d.ts +0 -4
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/message-history-resolver.d.ts.map +0 -1
- package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/message-history-resolver.js.map +0 -1
@@ -0,0 +1,173 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ConversationMessageHistoryRetriever = void 0;
|
4
|
+
const graphql_request_executor_1 = require("./graphql_request_executor");
|
5
|
+
/**
|
6
|
+
* These are all properties we have to pull.
|
7
|
+
* Unfortunately, GQL doesn't support wildcards.
|
8
|
+
* https://github.com/graphql/graphql-spec/issues/127
|
9
|
+
*/
|
10
|
+
const messageItemSelectionSet = `
|
11
|
+
id
|
12
|
+
conversationId
|
13
|
+
associatedUserMessageId
|
14
|
+
aiContext
|
15
|
+
role
|
16
|
+
content {
|
17
|
+
text
|
18
|
+
document {
|
19
|
+
source {
|
20
|
+
bytes
|
21
|
+
}
|
22
|
+
format
|
23
|
+
name
|
24
|
+
}
|
25
|
+
image {
|
26
|
+
format
|
27
|
+
source {
|
28
|
+
bytes
|
29
|
+
}
|
30
|
+
}
|
31
|
+
toolResult {
|
32
|
+
content {
|
33
|
+
document {
|
34
|
+
format
|
35
|
+
name
|
36
|
+
source {
|
37
|
+
bytes
|
38
|
+
}
|
39
|
+
}
|
40
|
+
image {
|
41
|
+
format
|
42
|
+
source {
|
43
|
+
bytes
|
44
|
+
}
|
45
|
+
}
|
46
|
+
json
|
47
|
+
text
|
48
|
+
}
|
49
|
+
status
|
50
|
+
toolUseId
|
51
|
+
}
|
52
|
+
toolUse {
|
53
|
+
input
|
54
|
+
name
|
55
|
+
toolUseId
|
56
|
+
}
|
57
|
+
}
|
58
|
+
`;
|
59
|
+
/**
|
60
|
+
* This class is responsible for retrieving message history that belongs to conversation turn event.
|
61
|
+
* It queries AppSync to list messages that belong to conversation.
|
62
|
+
* Additionally, it looks up a current message in case it's missing in the list due to eventual consistency.
|
63
|
+
*/
|
64
|
+
class ConversationMessageHistoryRetriever {
|
65
|
+
/**
|
66
|
+
* Creates conversation message history retriever.
|
67
|
+
*/
|
68
|
+
constructor(event, graphqlRequestExecutor = new graphql_request_executor_1.GraphqlRequestExecutor(event.graphqlApiEndpoint, event.request.headers.authorization)) {
|
69
|
+
this.event = event;
|
70
|
+
this.graphqlRequestExecutor = graphqlRequestExecutor;
|
71
|
+
this.getMessageHistory = async () => {
|
72
|
+
var _a;
|
73
|
+
if ((_a = this.event.messages) === null || _a === void 0 ? void 0 : _a.length) {
|
74
|
+
// This is for backwards compatibility and should be removed with messages property.
|
75
|
+
return this.event.messages;
|
76
|
+
}
|
77
|
+
const messages = await this.listMessages();
|
78
|
+
let currentMessage = messages.find((m) => m.id === this.event.currentMessageId);
|
79
|
+
// This is a fallback in case current message is not available in the message list.
|
80
|
+
// I.e. in a situation when freshly written message is not yet visible in
|
81
|
+
// eventually consistent reads.
|
82
|
+
if (!currentMessage) {
|
83
|
+
currentMessage = await this.getCurrentMessage();
|
84
|
+
messages.push(currentMessage);
|
85
|
+
}
|
86
|
+
// Index assistant messages by corresponding user message.
|
87
|
+
const assistantMessageByUserMessageId = new Map();
|
88
|
+
messages.forEach((message) => {
|
89
|
+
if (message.role === 'assistant' && message.associatedUserMessageId) {
|
90
|
+
assistantMessageByUserMessageId.set(message.associatedUserMessageId, message);
|
91
|
+
}
|
92
|
+
});
|
93
|
+
// Reconcile history and inject aiContext
|
94
|
+
return messages.reduce((acc, current) => {
|
95
|
+
// Bedrock expects that message history is user->assistant->user->assistant->... and so on.
|
96
|
+
// The chronological order doesn't assure this ordering if there were any concurrent messages sent.
|
97
|
+
// Therefore, conversation is ordered by user's messages only and corresponding assistant messages are inserted
|
98
|
+
// into right place regardless of their createdAt value.
|
99
|
+
// This algorithm assumes that GQL query returns messages sorted by createdAt.
|
100
|
+
if (current.role === 'assistant') {
|
101
|
+
// Initially, skip assistant messages, these might be out of chronological order.
|
102
|
+
return acc;
|
103
|
+
}
|
104
|
+
if (current.role === 'user' &&
|
105
|
+
!assistantMessageByUserMessageId.has(current.id) &&
|
106
|
+
current.id !== this.event.currentMessageId) {
|
107
|
+
// Skip user messages that didn't get answer from assistant yet.
|
108
|
+
// These might be still "in-flight", i.e. assistant is still working on them in separate invocation.
|
109
|
+
// Except current message, we want to process that one.
|
110
|
+
return acc;
|
111
|
+
}
|
112
|
+
const aiContext = current.aiContext;
|
113
|
+
const content = aiContext
|
114
|
+
? [...current.content, { text: JSON.stringify(aiContext) }]
|
115
|
+
: current.content;
|
116
|
+
acc.push({ role: current.role, content });
|
117
|
+
// Find and insert corresponding assistant message.
|
118
|
+
const correspondingAssistantMessage = assistantMessageByUserMessageId.get(current.id);
|
119
|
+
if (correspondingAssistantMessage) {
|
120
|
+
acc.push({
|
121
|
+
role: correspondingAssistantMessage.role,
|
122
|
+
content: correspondingAssistantMessage.content,
|
123
|
+
});
|
124
|
+
}
|
125
|
+
return acc;
|
126
|
+
}, []);
|
127
|
+
};
|
128
|
+
this.getCurrentMessage = async () => {
|
129
|
+
const query = `
|
130
|
+
query GetMessage($id: ${this.event.messageHistoryQuery.getQueryInputTypeName}!) {
|
131
|
+
${this.event.messageHistoryQuery.getQueryName}(id: $id) {
|
132
|
+
${messageItemSelectionSet}
|
133
|
+
}
|
134
|
+
}
|
135
|
+
`;
|
136
|
+
const variables = {
|
137
|
+
id: this.event.currentMessageId,
|
138
|
+
};
|
139
|
+
const response = await this.graphqlRequestExecutor.executeGraphql({
|
140
|
+
query,
|
141
|
+
variables,
|
142
|
+
});
|
143
|
+
return response.data[this.event.messageHistoryQuery.getQueryName];
|
144
|
+
};
|
145
|
+
this.listMessages = async () => {
|
146
|
+
var _a;
|
147
|
+
const query = `
|
148
|
+
query ListMessages($filter: ${this.event.messageHistoryQuery.listQueryInputTypeName}!, $limit: Int) {
|
149
|
+
${this.event.messageHistoryQuery.listQueryName}(filter: $filter, limit: $limit) {
|
150
|
+
items {
|
151
|
+
${messageItemSelectionSet}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
}
|
155
|
+
`;
|
156
|
+
const variables = {
|
157
|
+
filter: {
|
158
|
+
conversationId: {
|
159
|
+
eq: this.event.conversationId,
|
160
|
+
},
|
161
|
+
},
|
162
|
+
limit: (_a = this.event.messageHistoryQuery.listQueryLimit) !== null && _a !== void 0 ? _a : 1000,
|
163
|
+
};
|
164
|
+
const response = await this.graphqlRequestExecutor.executeGraphql({
|
165
|
+
query,
|
166
|
+
variables,
|
167
|
+
});
|
168
|
+
return response.data[this.event.messageHistoryQuery.listQueryName].items;
|
169
|
+
};
|
170
|
+
}
|
171
|
+
}
|
172
|
+
exports.ConversationMessageHistoryRetriever = ConversationMessageHistoryRetriever;
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX21lc3NhZ2VfaGlzdG9yeV9yZXRyaWV2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udmVyc2F0aW9uL3J1bnRpbWUvY29udmVyc2F0aW9uX21lc3NhZ2VfaGlzdG9yeV9yZXRyaWV2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUVBQW9FO0FBbUNwRTs7OztHQUlHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0QvQixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQWEsbUNBQW1DO0lBQzlDOztPQUVHO0lBQ0gsWUFDbUIsS0FBNEIsRUFDNUIseUJBQXlCLElBQUksaURBQXNCLENBQ2xFLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUNwQztRQUpnQixVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUM1QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBR3RDO1FBR0gsc0JBQWlCLEdBQUcsS0FBSyxJQUF5QyxFQUFFOztZQUNsRSxJQUFJLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLDBDQUFFLE1BQU0sRUFBRTtnQkFDL0Isb0ZBQW9GO2dCQUNwRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2FBQzVCO1lBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFM0MsSUFBSSxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FDaEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDNUMsQ0FBQztZQUVGLG1GQUFtRjtZQUNuRix5RUFBeUU7WUFDekUsK0JBQStCO1lBQy9CLElBQUksQ0FBQyxj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WSxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDO1FBRUksaUJBQVksR0FBRyxLQUFLLElBRTFCLEVBQUU7O1lBQ0YsTUFBTSxLQUFLLEdBQUc7c0NBQ29CLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCO2NBQzdFLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsYUFBYTs7a0JBRXhDLHVCQUF1Qjs7OztLQUlwQyxDQUFDO1lBQ0YsTUFBTSxTQUFTLEdBQW1CO2dCQUNoQyxNQUFNLEVBQUU7b0JBQ04sY0FBYyxFQUFFO3dCQUNkLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWM7cUJBQzlCO2lCQUNGO2dCQUNELEtBQUssRUFBRSxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsY0FBYyxtQ0FBSSxJQUFJO2FBQzdELENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBRy9EO2dCQUNBLEtBQUs7Z0JBQ0wsU0FBUzthQUNWLENBQUMsQ0FBQztZQUVILE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzRSxDQUFDLENBQUM7SUFuSUMsQ0FBQztDQW9JTDtBQTlJRCxrRkE4SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb252ZXJzYXRpb25NZXNzYWdlLCBDb252ZXJzYXRpb25UdXJuRXZlbnQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEdyYXBocWxSZXF1ZXN0RXhlY3V0b3IgfSBmcm9tICcuL2dyYXBocWxfcmVxdWVzdF9leGVjdXRvcic7XG5cbmV4cG9ydCB0eXBlIENvbnZlcnNhdGlvbkhpc3RvcnlNZXNzYWdlSXRlbSA9IENvbnZlcnNhdGlvbk1lc3NhZ2UgJiB7XG4gIGlkOiBzdHJpbmc7XG4gIGNvbnZlcnNhdGlvbklkOiBzdHJpbmc7XG4gIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkPzogc3RyaW5nO1xuICBhaUNvbnRleHQ/OiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0UXVlcnlJbnB1dCA9IHtcbiAgaWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdldFF1ZXJ5T3V0cHV0ID0ge1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBDb252ZXJzYXRpb25IaXN0b3J5TWVzc2FnZUl0ZW0+O1xufTtcblxuZXhwb3J0IHR5cGUgTGlzdFF1ZXJ5SW5wdXQgPSB7XG4gIGZpbHRlcjoge1xuICAgIGNvbnZlcnNhdGlvbklkOiB7XG4gICAgICBlcTogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIGxpbWl0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBMaXN0UXVlcnlPdXRwdXQgPSB7XG4gIGRhdGE6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgaXRlbXM6IEFycmF5PENvbnZlcnNhdGlvbkhpc3RvcnlNZXNzYWdlSXRlbT47XG4gICAgfVxuICA+O1xufTtcblxuLyoqXG4gKiBUaGVzZSBhcmUgYWxsIHByb3BlcnRpZXMgd2UgaGF2ZSB0byBwdWxsLlxuICogVW5mb3J0dW5hdGVseSwgR1FMIGRvZXNuJ3Qgc3VwcG9ydCB3aWxkY2FyZHMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLXNwZWMvaXNzdWVzLzEyN1xuICovXG5jb25zdCBtZXNzYWdlSXRlbVNlbGVjdGlvblNldCA9IGBcbiAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgIGNvbnZlcnNhdGlvbklkXG4gICAgICAgICAgICAgICAgYXNzb2NpYXRlZFVzZXJNZXNzYWdlSWRcbiAgICAgICAgICAgICAgICBhaUNvbnRleHRcbiAgICAgICAgICAgICAgICByb2xlXG4gICAgICAgICAgICAgICAgY29udGVudCB7XG4gICAgICAgICAgICAgICAgICB0ZXh0XG4gICAgICAgICAgICAgICAgICBkb2N1bWVudCB7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSB7XG4gICAgICAgICAgICAgICAgICAgICAgYnl0ZXNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaW1hZ2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgc291cmNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBieXRlc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB0b29sUmVzdWx0IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCB7XG4gICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGpzb25cbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgIHRvb2xVc2VJZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgdG9vbFVzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0XG4gICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgICAgdG9vbFVzZUlkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuYDtcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciByZXRyaWV2aW5nIG1lc3NhZ2UgaGlzdG9yeSB0aGF0IGJlbG9uZ3MgdG8gY29udmVyc2F0aW9uIHR1cm4gZXZlbnQuXG4gKiBJdCBxdWVyaWVzIEFwcFN5bmMgdG8gbGlzdCBtZXNzYWdlcyB0aGF0IGJlbG9uZyB0byBjb252ZXJzYXRpb24uXG4gKiBBZGRpdGlvbmFsbHksIGl0IGxvb2tzIHVwIGEgY3VycmVudCBtZXNzYWdlIGluIGNhc2UgaXQncyBtaXNzaW5nIGluIHRoZSBsaXN0IGR1ZSB0byBldmVudHVhbCBjb25zaXN0ZW5jeS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvbk1lc3NhZ2VIaXN0b3J5UmV0cmlldmVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgY29udmVyc2F0aW9uIG1lc3NhZ2UgaGlzdG9yeSByZXRyaWV2ZXIuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50OiBDb252ZXJzYXRpb25UdXJuRXZlbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBncmFwaHFsUmVxdWVzdEV4ZWN1dG9yID0gbmV3IEdyYXBocWxSZXF1ZXN0RXhlY3V0b3IoXG4gICAgICBldmVudC5ncmFwaHFsQXBpRW5kcG9pbnQsXG4gICAgICBldmVudC5yZXF1ZXN0LmhlYWRlcnMuYXV0aG9yaXphdGlvblxuICAgIClcbiAgKSB7fVxuXG4gIGdldE1lc3NhZ2VIaXN0b3J5ID0gYXN5bmMgKCk6IFByb21pc2U8QXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZT4+ID0+IHtcbiAgICBpZiAodGhpcy5ldmVudC5tZXNzYWdlcz8ubGVuZ3RoKSB7XG4gICAgICAvLyBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgd2l0aCBtZXNzYWdlcyBwcm9wZXJ0eS5cbiAgICAgIHJldHVybiB0aGlzLmV2ZW50Lm1lc3NhZ2VzO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMubGlzdE1lc3NhZ2VzKCk7XG5cbiAgICBsZXQgY3VycmVudE1lc3NhZ2UgPSBtZXNzYWdlcy5maW5kKFxuICAgICAgKG0pID0+IG0uaWQgPT09IHRoaXMuZXZlbnQuY3VycmVudE1lc3NhZ2VJZFxuICAgICk7XG5cbiAgICAvLyBUaGlzIGlzIGEgZmFsbGJhY2sgaW4gY2FzZSBjdXJyZW50IG1lc3NhZ2UgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgbWVzc2FnZSBsaXN0LlxuICAgIC8vIEkuZS4gaW4gYSBzaXR1YXRpb24gd2hlbiBmcmVzaGx5IHdyaXR0ZW4gbWVzc2FnZSBpcyBub3QgeWV0IHZpc2libGUgaW5cbiAgICAvLyBldmVudHVhbGx5IGNvbnNpc3RlbnQgcmVhZHMuXG4gICAgaWYgKCFjdXJyZW50TWVzc2FnZSkge1xuICAgICAgY3VycmVudE1lc3NhZ2UgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRNZXNzYWdlKCk7XG4gICAgICBtZXNzYWdlcy5wdXNoKGN1cnJlbnRNZXNzYWdlKTtcbiAgICB9XG5cbiAgICAvLyBJbmRleCBhc3Npc3RhbnQgbWVzc2FnZXMgYnkgY29ycmVzcG9uZGluZyB1c2VyIG1lc3NhZ2UuXG4gICAgY29uc3QgYXNzaXN0YW50TWVzc2FnZUJ5VXNlck1lc3NhZ2VJZDogTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgQ29udmVyc2F0aW9uSGlzdG9yeU1lc3NhZ2VJdGVtXG4gICAgPiA9IG5ldyBNYXAoKTtcbiAgICBtZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50JyAmJiBtZXNzYWdlLmFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkKSB7XG4gICAgICAgIGFzc2lzdGFudE1lc3NhZ2VCeVVzZXJNZXNzYWdlSWQuc2V0KFxuICAgICAgICAgIG1lc3NhZ2UuYXNzb2NpYXRlZFVzZXJNZXNzYWdlSWQsXG4gICAgICAgICAgbWVzc2FnZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gUmVjb25jaWxlIGhpc3RvcnkgYW5kIGluamVjdCBhaUNvbnRleHRcbiAgICByZXR1cm4gbWVzc2FnZXMucmVkdWNlKChhY2MsIGN1cnJlbnQpID0+IHtcbiAgICAgIC8vIEJlZHJvY2sgZXhwZWN0cyB0aGF0IG1lc3NhZ2UgaGlzdG9yeSBpcyB1c2VyLT5hc3Npc3RhbnQtPnVzZXItPmFzc2lzdGFudC0+Li4uIGFuZCBzbyBvbi5cbiAgICAgIC8vIFRoZSBjaHJvbm9sb2dpY2FsIG9yZGVyIGRvZXNuJ3QgYXNzdXJlIHRoaXMgb3JkZXJpbmcgaWYgdGhlcmUgd2VyZSBhbnkgY29uY3VycmVudCBtZXNzYWdlcyBzZW50LlxuICAgICAgLy8gVGhlcmVmb3JlLCBjb252ZXJzYXRpb24gaXMgb3JkZXJlZCBieSB1c2VyJ3MgbWVzc2FnZXMgb25seSBhbmQgY29ycmVzcG9uZGluZyBhc3Npc3RhbnQgbWVzc2FnZXMgYXJlIGluc2VydGVkXG4gICAgICAvLyBpbnRvIHJpZ2h0IHBsYWNlIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgY3JlYXRlZEF0IHZhbHVlLlxuICAgICAgLy8gVGhpcyBhbGdvcml0aG0gYXNzdW1lcyB0aGF0IEdRTCBxdWVyeSByZXR1cm5zIG1lc3NhZ2VzIHNvcnRlZCBieSBjcmVhdGVkQXQuXG4gICAgICBpZiAoY3VycmVudC5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgICAvLyBJbml0aWFsbHksIHNraXAgYXNzaXN0YW50IG1lc3NhZ2VzLCB0aGVzZSBtaWdodCBiZSBvdXQgb2YgY2hyb25vbG9naWNhbCBvcmRlci5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY3VycmVudC5yb2xlID09PSAndXNlcicgJiZcbiAgICAgICAgIWFzc2lzdGFudE1lc3NhZ2VCeVVzZXJNZXNzYWdlSWQuaGFzKGN1cnJlbnQuaWQpICYmXG4gICAgICAgIGN1cnJlbnQuaWQgIT09IHRoaXMuZXZlbnQuY3VycmVudE1lc3NhZ2VJZFxuICAgICAgKSB7XG4gICAgICAgIC8vIFNraXAgdXNlciBtZXNzYWdlcyB0aGF0IGRpZG4ndCBnZXQgYW5zd2VyIGZyb20gYXNzaXN0YW50IHlldC5cbiAgICAgICAgLy8gVGhlc2UgbWlnaHQgYmUgc3RpbGwgXCJpbi1mbGlnaHRcIiwgaS5lLiBhc3Npc3RhbnQgaXMgc3RpbGwgd29ya2luZyBvbiB0aGVtIGluIHNlcGFyYXRlIGludm9jYXRpb24uXG4gICAgICAgIC8vIEV4Y2VwdCBjdXJyZW50IG1lc3NhZ2UsIHdlIHdhbnQgdG8gcHJvY2VzcyB0aGF0IG9uZS5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFpQ29udGV4dCA9IGN1cnJlbnQuYWlDb250ZXh0O1xuICAgICAgY29uc3QgY29udGVudCA9IGFpQ29udGV4dFxuICAgICAgICA/IFsuLi5jdXJyZW50LmNvbnRlbnQsIHsgdGV4dDogSlNPTi5zdHJpbmdpZnkoYWlDb250ZXh0KSB9XVxuICAgICAgICA6IGN1cnJlbnQuY29udGVudDtcblxuICAgICAgYWNjLnB1c2goeyByb2xlOiBjdXJyZW50LnJvbGUsIGNvbnRlbnQgfSk7XG5cbiAgICAgIC8vIEZpbmQgYW5kIGluc2VydCBjb3JyZXNwb25kaW5nIGFzc2lzdGFudCBtZXNzYWdlLlxuICAgICAgY29uc3QgY29ycmVzcG9uZGluZ0Fzc2lzdGFudE1lc3NhZ2UgPSBhc3Npc3RhbnRNZXNzYWdlQnlVc2VyTWVzc2FnZUlkLmdldChcbiAgICAgICAgY3VycmVudC5pZFxuICAgICAgKTtcbiAgICAgIGlmIChjb3JyZXNwb25kaW5nQXNzaXN0YW50TWVzc2FnZSkge1xuICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgcm9sZTogY29ycmVzcG9uZGluZ0Fzc2lzdGFudE1lc3NhZ2Uucm9sZSxcbiAgICAgICAgICBjb250ZW50OiBjb3JyZXNwb25kaW5nQXNzaXN0YW50TWVzc2FnZS5jb250ZW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgQXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZT4pO1xuICB9O1xuXG4gIHByaXZhdGUgZ2V0Q3VycmVudE1lc3NhZ2UgPVxuICAgIGFzeW5jICgpOiBQcm9taXNlPENvbnZlcnNhdGlvbkhpc3RvcnlNZXNzYWdlSXRlbT4gPT4ge1xuICAgICAgY29uc3QgcXVlcnkgPSBgXG4gICAgICAgIHF1ZXJ5IEdldE1lc3NhZ2UoJGlkOiAke3RoaXMuZXZlbnQubWVzc2FnZUhpc3RvcnlRdWVyeS5nZXRRdWVyeUlucHV0VHlwZU5hbWV9ISkge1xuICAgICAgICAgICAgJHt0aGlzLmV2ZW50Lm1lc3NhZ2VIaXN0b3J5UXVlcnkuZ2V0UXVlcnlOYW1lfShpZDogJGlkKSB7XG4gICAgICAgICAgICAgICR7bWVzc2FnZUl0ZW1TZWxlY3Rpb25TZXR9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBgO1xuICAgICAgY29uc3QgdmFyaWFibGVzOiBHZXRRdWVyeUlucHV0ID0ge1xuICAgICAgICBpZDogdGhpcy5ldmVudC5jdXJyZW50TWVzc2FnZUlkLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdyYXBocWxSZXF1ZXN0RXhlY3V0b3IuZXhlY3V0ZUdyYXBocWw8XG4gICAgICAgIEdldFF1ZXJ5SW5wdXQsXG4gICAgICAgIEdldFF1ZXJ5T3V0cHV0XG4gICAgICA+KHtcbiAgICAgICAgcXVlcnksXG4gICAgICAgIHZhcmlhYmxlcyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YVt0aGlzLmV2ZW50Lm1lc3NhZ2VIaXN0b3J5UXVlcnkuZ2V0UXVlcnlOYW1lXTtcbiAgICB9O1xuXG4gIHByaXZhdGUgbGlzdE1lc3NhZ2VzID0gYXN5bmMgKCk6IFByb21pc2U8XG4gICAgQXJyYXk8Q29udmVyc2F0aW9uSGlzdG9yeU1lc3NhZ2VJdGVtPlxuICA+ID0+IHtcbiAgICBjb25zdCBxdWVyeSA9IGBcbiAgICAgICAgcXVlcnkgTGlzdE1lc3NhZ2VzKCRmaWx0ZXI6ICR7dGhpcy5ldmVudC5tZXNzYWdlSGlzdG9yeVF1ZXJ5Lmxpc3RRdWVyeUlucHV0VHlwZU5hbWV9ISwgJGxpbWl0OiBJbnQpIHtcbiAgICAgICAgICAgICR7dGhpcy5ldmVudC5tZXNzYWdlSGlzdG9yeVF1ZXJ5Lmxpc3RRdWVyeU5hbWV9KGZpbHRlcjogJGZpbHRlciwgbGltaXQ6ICRsaW1pdCkge1xuICAgICAgICAgICAgICBpdGVtcyB7XG4gICAgICAgICAgICAgICAgJHttZXNzYWdlSXRlbVNlbGVjdGlvblNldH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYDtcbiAgICBjb25zdCB2YXJpYWJsZXM6IExpc3RRdWVyeUlucHV0ID0ge1xuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGNvbnZlcnNhdGlvbklkOiB7XG4gICAgICAgICAgZXE6IHRoaXMuZXZlbnQuY29udmVyc2F0aW9uSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbGltaXQ6IHRoaXMuZXZlbnQubWVzc2FnZUhpc3RvcnlRdWVyeS5saXN0UXVlcnlMaW1pdCA/PyAxMDAwLFxuICAgIH07XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3RFeGVjdXRvci5leGVjdXRlR3JhcGhxbDxcbiAgICAgIExpc3RRdWVyeUlucHV0LFxuICAgICAgTGlzdFF1ZXJ5T3V0cHV0XG4gICAgPih7XG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXNwb25zZS5kYXRhW3RoaXMuZXZlbnQubWVzc2FnZUhpc3RvcnlRdWVyeS5saXN0UXVlcnlOYW1lXS5pdGVtcztcbiAgfTtcbn1cbiJdfQ==
|
@@ -1,17 +1,24 @@
|
|
1
|
-
/// <reference types="node" />
|
2
1
|
import { ConversationTurnEvent } from './types.js';
|
3
2
|
import type { ContentBlock } from '@aws-sdk/client-bedrock-runtime';
|
3
|
+
import { GraphqlRequestExecutor } from './graphql_request_executor';
|
4
|
+
export type MutationResponseInput = {
|
5
|
+
input: {
|
6
|
+
conversationId: string;
|
7
|
+
content: ContentBlock[];
|
8
|
+
associatedUserMessageId: string;
|
9
|
+
};
|
10
|
+
};
|
4
11
|
/**
|
5
12
|
* This class is responsible for sending a response produced by Bedrock back to AppSync
|
6
13
|
* in a form of mutation.
|
7
14
|
*/
|
8
15
|
export declare class ConversationTurnResponseSender {
|
9
16
|
private readonly event;
|
10
|
-
private readonly
|
17
|
+
private readonly graphqlRequestExecutor;
|
11
18
|
/**
|
12
19
|
* Creates conversation turn response sender.
|
13
20
|
*/
|
14
|
-
constructor(event: ConversationTurnEvent,
|
21
|
+
constructor(event: ConversationTurnEvent, graphqlRequestExecutor?: GraphqlRequestExecutor);
|
15
22
|
sendResponse: (message: ContentBlock[]) => Promise<void>;
|
16
23
|
private createMutationRequest;
|
17
24
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.ConversationTurnResponseSender = void 0;
|
4
|
+
const graphql_request_executor_1 = require("./graphql_request_executor");
|
4
5
|
/**
|
5
6
|
* This class is responsible for sending a response produced by Bedrock back to AppSync
|
6
7
|
* in a form of mutation.
|
@@ -9,22 +10,15 @@ class ConversationTurnResponseSender {
|
|
9
10
|
/**
|
10
11
|
* Creates conversation turn response sender.
|
11
12
|
*/
|
12
|
-
constructor(event,
|
13
|
+
constructor(event, graphqlRequestExecutor = new graphql_request_executor_1.GraphqlRequestExecutor(event.graphqlApiEndpoint, event.request.headers.authorization)) {
|
13
14
|
this.event = event;
|
14
|
-
this.
|
15
|
+
this.graphqlRequestExecutor = graphqlRequestExecutor;
|
15
16
|
this.sendResponse = async (message) => {
|
16
|
-
const
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
const body = await res.text();
|
22
|
-
throw new Error(`Assistant response mutation request was not successful, response headers=${JSON.stringify(responseHeaders)}, body=${body}`);
|
23
|
-
}
|
24
|
-
const body = await res.json();
|
25
|
-
if (body && typeof body === 'object' && 'errors' in body) {
|
26
|
-
throw new Error(`Assistant response mutation request was not successful, response headers=${JSON.stringify(responseHeaders)}, body=${JSON.stringify(body)}`);
|
27
|
-
}
|
17
|
+
const { query, variables } = this.createMutationRequest(message);
|
18
|
+
await this.graphqlRequestExecutor.executeGraphql({
|
19
|
+
query,
|
20
|
+
variables,
|
21
|
+
});
|
28
22
|
};
|
29
23
|
this.createMutationRequest = (content) => {
|
30
24
|
const query = `
|
@@ -51,16 +45,9 @@ class ConversationTurnResponseSender {
|
|
51
45
|
associatedUserMessageId: this.event.currentMessageId,
|
52
46
|
},
|
53
47
|
};
|
54
|
-
return
|
55
|
-
method: 'POST',
|
56
|
-
headers: {
|
57
|
-
'Content-Type': 'application/graphql',
|
58
|
-
Authorization: this.event.request.headers.authorization,
|
59
|
-
},
|
60
|
-
body: JSON.stringify({ query, variables }),
|
61
|
-
});
|
48
|
+
return { query, variables };
|
62
49
|
};
|
63
50
|
}
|
64
51
|
}
|
65
52
|
exports.ConversationTurnResponseSender = ConversationTurnResponseSender;
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX3R1cm5fcmVzcG9uc2Vfc2VuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9ydW50aW1lL2NvbnZlcnNhdGlvbl90dXJuX3Jlc3BvbnNlX3NlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx5RUFBb0U7QUFVcEU7OztHQUdHO0FBQ0gsTUFBYSw4QkFBOEI7SUFDekM7O09BRUc7SUFDSCxZQUNtQixLQUE0QixFQUM1Qix5QkFBeUIsSUFBSSxpREFBc0IsQ0FDbEUsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQ3BDO1FBSmdCLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBQzVCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FHdEM7UUFHSCxpQkFBWSxHQUFHLEtBQUssRUFBRSxPQUF1QixFQUFFLEVBQUU7WUFDL0MsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakUsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUc5QztnQkFDQSxLQUFLO2dCQUNMLFNBQVM7YUFDVixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFTSwwQkFBcUIsR0FBRyxDQUFDLE9BQXVCLEVBQUUsRUFBRTtZQUMxRCxNQUFNLEtBQUssR0FBRztnREFDOEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhO2NBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSTtrQkFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZOzs7S0FHckQsQ0FBQztZQUNGLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtvQkFDakIsdUZBQXVGO29CQUN2Rix5QkFBeUI7b0JBQ3pCLCtFQUErRTtvQkFDL0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7aUJBQ2pEO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLFNBQVMsR0FBMEI7Z0JBQ3ZDLEtBQUssRUFBRTtvQkFDTCxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO29CQUN6QyxPQUFPO29CQUNQLHVCQUF1QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCO2lCQUNyRDthQUNGLENBQUM7WUFDRixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQztJQXZDQyxDQUFDO0NBd0NMO0FBbERELHdFQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnZlcnNhdGlvblR1cm5FdmVudCB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBDb250ZW50QmxvY2sgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtYmVkcm9jay1ydW50aW1lJztcbmltcG9ydCB7IEdyYXBocWxSZXF1ZXN0RXhlY3V0b3IgfSBmcm9tICcuL2dyYXBocWxfcmVxdWVzdF9leGVjdXRvcic7XG5cbmV4cG9ydCB0eXBlIE11dGF0aW9uUmVzcG9uc2VJbnB1dCA9IHtcbiAgaW5wdXQ6IHtcbiAgICBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICAgIGNvbnRlbnQ6IENvbnRlbnRCbG9ja1tdO1xuICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkOiBzdHJpbmc7XG4gIH07XG59O1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIHNlbmRpbmcgYSByZXNwb25zZSBwcm9kdWNlZCBieSBCZWRyb2NrIGJhY2sgdG8gQXBwU3luY1xuICogaW4gYSBmb3JtIG9mIG11dGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uVHVyblJlc3BvbnNlU2VuZGVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgY29udmVyc2F0aW9uIHR1cm4gcmVzcG9uc2Ugc2VuZGVyLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudDogQ29udmVyc2F0aW9uVHVybkV2ZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ3JhcGhxbFJlcXVlc3RFeGVjdXRvciA9IG5ldyBHcmFwaHFsUmVxdWVzdEV4ZWN1dG9yKFxuICAgICAgZXZlbnQuZ3JhcGhxbEFwaUVuZHBvaW50LFxuICAgICAgZXZlbnQucmVxdWVzdC5oZWFkZXJzLmF1dGhvcml6YXRpb25cbiAgICApXG4gICkge31cblxuICBzZW5kUmVzcG9uc2UgPSBhc3luYyAobWVzc2FnZTogQ29udGVudEJsb2NrW10pID0+IHtcbiAgICBjb25zdCB7IHF1ZXJ5LCB2YXJpYWJsZXMgfSA9IHRoaXMuY3JlYXRlTXV0YXRpb25SZXF1ZXN0KG1lc3NhZ2UpO1xuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3RFeGVjdXRvci5leGVjdXRlR3JhcGhxbDxcbiAgICAgIE11dGF0aW9uUmVzcG9uc2VJbnB1dCxcbiAgICAgIHZvaWRcbiAgICA+KHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzLFxuICAgIH0pO1xuICB9O1xuXG4gIHByaXZhdGUgY3JlYXRlTXV0YXRpb25SZXF1ZXN0ID0gKGNvbnRlbnQ6IENvbnRlbnRCbG9ja1tdKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSBgXG4gICAgICAgIG11dGF0aW9uIFB1Ymxpc2hNb2RlbFJlc3BvbnNlKCRpbnB1dDogJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uaW5wdXRUeXBlTmFtZX0hKSB7XG4gICAgICAgICAgICAke3RoaXMuZXZlbnQucmVzcG9uc2VNdXRhdGlvbi5uYW1lfShpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICAgICAgJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uc2VsZWN0aW9uU2V0fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYDtcbiAgICBjb250ZW50ID0gY29udGVudC5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICBpZiAoYmxvY2sudG9vbFVzZSkge1xuICAgICAgICAvLyBUaGUgYGlucHV0YCBmaWVsZCBpcyB0eXBlZCBhcyBgQVdTIEpTT05gIGluIHRoZSBHcmFwaFFMIEFQSSBiZWNhdXNlIGl0IGNhbiByZXByZXNlbnRcbiAgICAgICAgLy8gYXJiaXRyYXJ5IEpTT04gdmFsdWVzLlxuICAgICAgICAvLyBXZSBuZWVkIHRvIHN0cmluZ2lmeSBpdCBiZWZvcmUgc2VuZGluZyBpdCB0byBBcHBTeW5jIHRvIHByZXZlbnQgdHlwZSBlcnJvcnMuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gSlNPTi5zdHJpbmdpZnkoYmxvY2sudG9vbFVzZS5pbnB1dCk7XG4gICAgICAgIHJldHVybiB7IHRvb2xVc2U6IHsgLi4uYmxvY2sudG9vbFVzZSwgaW5wdXQgfSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJsb2NrO1xuICAgIH0pO1xuICAgIGNvbnN0IHZhcmlhYmxlczogTXV0YXRpb25SZXNwb25zZUlucHV0ID0ge1xuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuZXZlbnQuY29udmVyc2F0aW9uSWQsXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkOiB0aGlzLmV2ZW50LmN1cnJlbnRNZXNzYWdlSWQsXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIHsgcXVlcnksIHZhcmlhYmxlcyB9O1xuICB9O1xufVxuIl19
|
@@ -1,7 +1,7 @@
|
|
1
|
-
/// <reference types="node" />
|
2
1
|
import { ExecutableTool } from '../types';
|
3
2
|
import type { ToolInputSchema, ToolResultContentBlock } from '@aws-sdk/client-bedrock-runtime';
|
4
3
|
import { DocumentType } from '@smithy/types';
|
4
|
+
import { GraphqlRequestExecutor } from '../graphql_request_executor';
|
5
5
|
/**
|
6
6
|
* A tool that use GraphQl queries.
|
7
7
|
*/
|
@@ -9,14 +9,14 @@ export declare class GraphQlTool implements ExecutableTool {
|
|
9
9
|
name: string;
|
10
10
|
description: string;
|
11
11
|
inputSchema: ToolInputSchema;
|
12
|
-
|
12
|
+
readonly graphQlEndpoint: string;
|
13
13
|
private readonly query;
|
14
|
-
|
15
|
-
private readonly
|
14
|
+
readonly accessToken: string;
|
15
|
+
private readonly graphqlRequestExecutor;
|
16
16
|
/**
|
17
17
|
* Creates GraphQl Tool
|
18
18
|
*/
|
19
|
-
constructor(name: string, description: string, inputSchema: ToolInputSchema, graphQlEndpoint: string, query: string, accessToken: string,
|
19
|
+
constructor(name: string, description: string, inputSchema: ToolInputSchema, graphQlEndpoint: string, query: string, accessToken: string, graphqlRequestExecutor?: GraphqlRequestExecutor);
|
20
20
|
execute: (input: DocumentType | undefined) => Promise<ToolResultContentBlock>;
|
21
21
|
}
|
22
22
|
//# sourceMappingURL=graphql_tool.d.ts.map
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.GraphQlTool = void 0;
|
4
|
+
const graphql_request_executor_1 = require("../graphql_request_executor");
|
4
5
|
/**
|
5
6
|
* A tool that use GraphQl queries.
|
6
7
|
*/
|
@@ -8,41 +9,25 @@ class GraphQlTool {
|
|
8
9
|
/**
|
9
10
|
* Creates GraphQl Tool
|
10
11
|
*/
|
11
|
-
constructor(name, description, inputSchema, graphQlEndpoint, query, accessToken,
|
12
|
+
constructor(name, description, inputSchema, graphQlEndpoint, query, accessToken, graphqlRequestExecutor = new graphql_request_executor_1.GraphqlRequestExecutor(graphQlEndpoint, accessToken)) {
|
12
13
|
this.name = name;
|
13
14
|
this.description = description;
|
14
15
|
this.inputSchema = inputSchema;
|
15
16
|
this.graphQlEndpoint = graphQlEndpoint;
|
16
17
|
this.query = query;
|
17
18
|
this.accessToken = accessToken;
|
18
|
-
this.
|
19
|
+
this.graphqlRequestExecutor = graphqlRequestExecutor;
|
19
20
|
this.execute = async (input) => {
|
20
21
|
if (!input) {
|
21
22
|
throw Error(`GraphQl tool '${this.name}' requires input to execute.`);
|
22
23
|
}
|
23
|
-
const
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
},
|
29
|
-
body: JSON.stringify({ query: this.query, variables: input }),
|
30
|
-
};
|
31
|
-
const req = new Request(this.graphQlEndpoint, options);
|
32
|
-
const res = await this._fetch(req);
|
33
|
-
const responseHeaders = {};
|
34
|
-
res.headers.forEach((value, key) => (responseHeaders[key] = value));
|
35
|
-
if (!res.ok) {
|
36
|
-
const body = await res.text();
|
37
|
-
throw new Error(`GraphQl tool '${this.name}' failed, response headers=${JSON.stringify(responseHeaders)}, body=${body}`);
|
38
|
-
}
|
39
|
-
const body = await res.json();
|
40
|
-
if (body && typeof body === 'object' && 'errors' in body) {
|
41
|
-
throw new Error(`GraphQl tool '${this.name}' failed, response headers=${JSON.stringify(responseHeaders)}, body=${JSON.stringify(body)}`);
|
42
|
-
}
|
43
|
-
return { json: body };
|
24
|
+
const response = await this.graphqlRequestExecutor.executeGraphql({
|
25
|
+
query: this.query,
|
26
|
+
variables: input,
|
27
|
+
});
|
28
|
+
return { json: response };
|
44
29
|
};
|
45
30
|
}
|
46
31
|
}
|
47
32
|
exports.GraphQlTool = GraphQlTool;
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbF90b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9ydW50aW1lL2V2ZW50LXRvb2xzLXByb3ZpZGVyL2dyYXBocWxfdG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSwwRUFBcUU7QUFFckU7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFDdEI7O09BRUc7SUFDSCxZQUNTLElBQVksRUFDWixXQUFtQixFQUNuQixXQUE0QixFQUMxQixlQUF1QixFQUNmLEtBQWEsRUFDckIsV0FBbUIsRUFDWCx5QkFBeUIsSUFBSSxpREFBc0IsQ0FDbEUsZUFBZSxFQUNmLFdBQVcsQ0FDWjtRQVRNLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDMUIsb0JBQWUsR0FBZixlQUFlLENBQVE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ1gsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUd0QztRQUdILFlBQU8sR0FBRyxLQUFLLEVBQ2IsS0FBK0IsRUFDRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsTUFBTSxLQUFLLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLDhCQUE4QixDQUFDLENBQUM7YUFDdkU7WUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBRy9EO2dCQUNBLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsU0FBUyxFQUFFLEtBQUs7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxFQUFFLElBQUksRUFBRSxRQUF3QixFQUFFLENBQUM7UUFDNUMsQ0FBQyxDQUFDO0lBakJDLENBQUM7Q0FrQkw7QUFqQ0Qsa0NBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXhlY3V0YWJsZVRvb2wgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7XG4gIFRvb2xJbnB1dFNjaGVtYSxcbiAgVG9vbFJlc3VsdENvbnRlbnRCbG9jayxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWJlZHJvY2stcnVudGltZSc7XG5pbXBvcnQgeyBEb2N1bWVudFR5cGUgfSBmcm9tICdAc21pdGh5L3R5cGVzJztcbmltcG9ydCB7IEdyYXBocWxSZXF1ZXN0RXhlY3V0b3IgfSBmcm9tICcuLi9ncmFwaHFsX3JlcXVlc3RfZXhlY3V0b3InO1xuXG4vKipcbiAqIEEgdG9vbCB0aGF0IHVzZSBHcmFwaFFsIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFFsVG9vbCBpbXBsZW1lbnRzIEV4ZWN1dGFibGVUb29sIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgR3JhcGhRbCBUb29sXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIHB1YmxpYyBpbnB1dFNjaGVtYTogVG9vbElucHV0U2NoZW1hLFxuICAgIHJlYWRvbmx5IGdyYXBoUWxFbmRwb2ludDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcXVlcnk6IHN0cmluZyxcbiAgICByZWFkb25seSBhY2Nlc3NUb2tlbjogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ3JhcGhxbFJlcXVlc3RFeGVjdXRvciA9IG5ldyBHcmFwaHFsUmVxdWVzdEV4ZWN1dG9yKFxuICAgICAgZ3JhcGhRbEVuZHBvaW50LFxuICAgICAgYWNjZXNzVG9rZW5cbiAgICApXG4gICkge31cblxuICBleGVjdXRlID0gYXN5bmMgKFxuICAgIGlucHV0OiBEb2N1bWVudFR5cGUgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxUb29sUmVzdWx0Q29udGVudEJsb2NrPiA9PiB7XG4gICAgaWYgKCFpbnB1dCkge1xuICAgICAgdGhyb3cgRXJyb3IoYEdyYXBoUWwgdG9vbCAnJHt0aGlzLm5hbWV9JyByZXF1aXJlcyBpbnB1dCB0byBleGVjdXRlLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5ncmFwaHFsUmVxdWVzdEV4ZWN1dG9yLmV4ZWN1dGVHcmFwaHFsPFxuICAgICAgRG9jdW1lbnRUeXBlLFxuICAgICAgRG9jdW1lbnRUeXBlXG4gICAgPih7XG4gICAgICBxdWVyeTogdGhpcy5xdWVyeSxcbiAgICAgIHZhcmlhYmxlczogaW5wdXQsXG4gICAgfSk7XG4gICAgcmV0dXJuIHsganNvbjogcmVzcG9uc2UgYXMgRG9jdW1lbnRUeXBlIH07XG4gIH07XG59XG4iXX0=
|
@@ -0,0 +1,21 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
export type GraphqlRequest<TVariables> = {
|
3
|
+
query: string;
|
4
|
+
variables: TVariables;
|
5
|
+
};
|
6
|
+
/**
|
7
|
+
* This class is responsible for executing GraphQL requests.
|
8
|
+
* Serializing query and it's inputs, adding authorization headers,
|
9
|
+
* inspecting response for errors and de-serializing output.
|
10
|
+
*/
|
11
|
+
export declare class GraphqlRequestExecutor {
|
12
|
+
private readonly graphQlEndpoint;
|
13
|
+
private readonly accessToken;
|
14
|
+
private readonly _fetch;
|
15
|
+
/**
|
16
|
+
* Creates GraphQL request executor.
|
17
|
+
*/
|
18
|
+
constructor(graphQlEndpoint: string, accessToken: string, _fetch?: typeof fetch);
|
19
|
+
executeGraphql: <TVariables, TReturn>(request: GraphqlRequest<TVariables>) => Promise<TReturn>;
|
20
|
+
}
|
21
|
+
//# sourceMappingURL=graphql_request_executor.d.ts.map
|
package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/graphql_request_executor.js
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.GraphqlRequestExecutor = void 0;
|
4
|
+
/**
|
5
|
+
* This class is responsible for executing GraphQL requests.
|
6
|
+
* Serializing query and it's inputs, adding authorization headers,
|
7
|
+
* inspecting response for errors and de-serializing output.
|
8
|
+
*/
|
9
|
+
class GraphqlRequestExecutor {
|
10
|
+
/**
|
11
|
+
* Creates GraphQL request executor.
|
12
|
+
*/
|
13
|
+
constructor(graphQlEndpoint, accessToken, _fetch = fetch) {
|
14
|
+
this.graphQlEndpoint = graphQlEndpoint;
|
15
|
+
this.accessToken = accessToken;
|
16
|
+
this._fetch = _fetch;
|
17
|
+
this.executeGraphql = async (request) => {
|
18
|
+
const httpRequest = new Request(this.graphQlEndpoint, {
|
19
|
+
method: 'POST',
|
20
|
+
headers: {
|
21
|
+
'Content-Type': 'application/graphql',
|
22
|
+
Authorization: this.accessToken,
|
23
|
+
},
|
24
|
+
body: JSON.stringify({
|
25
|
+
query: request.query,
|
26
|
+
variables: request.variables,
|
27
|
+
}),
|
28
|
+
});
|
29
|
+
const res = await this._fetch(httpRequest);
|
30
|
+
const responseHeaders = {};
|
31
|
+
res.headers.forEach((value, key) => (responseHeaders[key] = value));
|
32
|
+
if (!res.ok) {
|
33
|
+
const body = await res.text();
|
34
|
+
throw new Error(`GraphQL request failed, response headers=${JSON.stringify(responseHeaders)}, body=${body}`);
|
35
|
+
}
|
36
|
+
const body = await res.json();
|
37
|
+
if (body && typeof body === 'object' && 'errors' in body) {
|
38
|
+
throw new Error(`GraphQL request failed, response headers=${JSON.stringify(responseHeaders)}, body=${JSON.stringify(body)}`);
|
39
|
+
}
|
40
|
+
return body;
|
41
|
+
};
|
42
|
+
}
|
43
|
+
}
|
44
|
+
exports.GraphqlRequestExecutor = GraphqlRequestExecutor;
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbF9yZXF1ZXN0X2V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9ydW50aW1lL2dyYXBocWxfcmVxdWVzdF9leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQTs7OztHQUlHO0FBQ0gsTUFBYSxzQkFBc0I7SUFDakM7O09BRUc7SUFDSCxZQUNtQixlQUF1QixFQUN2QixXQUFtQixFQUNuQixTQUFTLEtBQUs7UUFGZCxvQkFBZSxHQUFmLGVBQWUsQ0FBUTtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBR2pDLG1CQUFjLEdBQUcsS0FBSyxFQUNwQixPQUFtQyxFQUNqQixFQUFFO1lBQ3BCLE1BQU0sV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3BELE1BQU0sRUFBRSxNQUFNO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxjQUFjLEVBQUUscUJBQXFCO29CQUNyQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVc7aUJBQ2hDO2dCQUNELElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO29CQUNuQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3BCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztpQkFDN0IsQ0FBQzthQUNILENBQUMsQ0FBQztZQUVILE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzQyxNQUFNLGVBQWUsR0FBMkIsRUFBRSxDQUFDO1lBQ25ELEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtnQkFDWCxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxJQUFJLEtBQUssQ0FDYiw0Q0FBNEMsSUFBSSxDQUFDLFNBQVMsQ0FDeEQsZUFBZSxDQUNoQixVQUFVLElBQUksRUFBRSxDQUNsQixDQUFDO2FBQ0g7WUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QixJQUFJLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtnQkFDeEQsTUFBTSxJQUFJLEtBQUssQ0FDYiw0Q0FBNEMsSUFBSSxDQUFDLFNBQVMsQ0FDeEQsZUFBZSxDQUNoQixVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbEMsQ0FBQzthQUNIO1lBQ0QsT0FBTyxJQUFlLENBQUM7UUFDekIsQ0FBQyxDQUFDO0lBckNDLENBQUM7Q0FzQ0w7QUE5Q0Qsd0RBOENDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgR3JhcGhxbFJlcXVlc3Q8VFZhcmlhYmxlcz4gPSB7XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIHZhcmlhYmxlczogVFZhcmlhYmxlcztcbn07XG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgZXhlY3V0aW5nIEdyYXBoUUwgcmVxdWVzdHMuXG4gKiBTZXJpYWxpemluZyBxdWVyeSBhbmQgaXQncyBpbnB1dHMsIGFkZGluZyBhdXRob3JpemF0aW9uIGhlYWRlcnMsXG4gKiBpbnNwZWN0aW5nIHJlc3BvbnNlIGZvciBlcnJvcnMgYW5kIGRlLXNlcmlhbGl6aW5nIG91dHB1dC5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBocWxSZXF1ZXN0RXhlY3V0b3Ige1xuICAvKipcbiAgICogQ3JlYXRlcyBHcmFwaFFMIHJlcXVlc3QgZXhlY3V0b3IuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdyYXBoUWxFbmRwb2ludDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXNzVG9rZW46IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mZXRjaCA9IGZldGNoXG4gICkge31cblxuICBleGVjdXRlR3JhcGhxbCA9IGFzeW5jIDxUVmFyaWFibGVzLCBUUmV0dXJuPihcbiAgICByZXF1ZXN0OiBHcmFwaHFsUmVxdWVzdDxUVmFyaWFibGVzPlxuICApOiBQcm9taXNlPFRSZXR1cm4+ID0+IHtcbiAgICBjb25zdCBodHRwUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHRoaXMuZ3JhcGhRbEVuZHBvaW50LCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9ncmFwaHFsJyxcbiAgICAgICAgQXV0aG9yaXphdGlvbjogdGhpcy5hY2Nlc3NUb2tlbixcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5LFxuICAgICAgICB2YXJpYWJsZXM6IHJlcXVlc3QudmFyaWFibGVzLFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLl9mZXRjaChodHRwUmVxdWVzdCk7XG4gICAgY29uc3QgcmVzcG9uc2VIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgcmVzLmhlYWRlcnMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gKHJlc3BvbnNlSGVhZGVyc1trZXldID0gdmFsdWUpKTtcbiAgICBpZiAoIXJlcy5vaykge1xuICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHJlcy50ZXh0KCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBHcmFwaFFMIHJlcXVlc3QgZmFpbGVkLCByZXNwb25zZSBoZWFkZXJzPSR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcmVzcG9uc2VIZWFkZXJzXG4gICAgICAgICl9LCBib2R5PSR7Ym9keX1gXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICBpZiAoYm9keSAmJiB0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgJiYgJ2Vycm9ycycgaW4gYm9keSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgR3JhcGhRTCByZXF1ZXN0IGZhaWxlZCwgcmVzcG9uc2UgaGVhZGVycz0ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1xuICAgICAgICApfSwgYm9keT0ke0pTT04uc3RyaW5naWZ5KGJvZHkpfWBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBib2R5IGFzIFRSZXR1cm47XG4gIH07XG59XG4iXX0=
|
@@ -43,7 +43,17 @@ export type ConversationTurnEvent = {
|
|
43
43
|
authorization: string;
|
44
44
|
};
|
45
45
|
};
|
46
|
-
|
46
|
+
/**
|
47
|
+
* @deprecated This field is going to be removed in upcoming releases.
|
48
|
+
*/
|
49
|
+
messages?: Array<ConversationMessage>;
|
50
|
+
messageHistoryQuery: {
|
51
|
+
getQueryName: string;
|
52
|
+
getQueryInputTypeName: string;
|
53
|
+
listQueryName: string;
|
54
|
+
listQueryInputTypeName: string;
|
55
|
+
listQueryLimit?: number;
|
56
|
+
};
|
47
57
|
toolsConfiguration?: {
|
48
58
|
dataTools?: Array<ToolDefinition & {
|
49
59
|
graphqlRequestInputDescriptor: {
|
@@ -1,3 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udmVyc2F0aW9uL3J1bnRpbWUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJlZHJvY2sgZnJvbSAnQGF3cy1zZGsvY2xpZW50LWJlZHJvY2stcnVudGltZSc7XG5pbXBvcnQgKiBhcyBzbWl0aHkgZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5cbi8qXG4gIE5vdGljZTogVGhpcyBmaWxlIGNvbnRhaW5zIHR5cGVzIHRoYXQgYXJlIGV4cG9zZWQgcHVibGljbHkuXG4gIFRoZXJlZm9yZSwgd2UgYXZvaWQgZWFnZXIgaW50cm9kdWN0aW9uIG9mIHR5cGVzIHRoYXQgd291bGRuJ3QgYmUgdXNlZnVsIGZvclxuICBwdWJsaWMgQVBJIGNvbnN1bWVyIGFuZCBwb3RlbnRpYWxseSBwb2xsdXRlIHN5bnRheCBhc3Npc3QgaW4gSURFcy5cbiAqL1xuXG5leHBvcnQgdHlwZSBUb29sSW5wdXRTY2hlbWEgPSBiZWRyb2NrLlRvb2xJbnB1dFNjaGVtYTtcbmV4cG9ydCB0eXBlIFRvb2xSZXN1bHRDb250ZW50QmxvY2sgPSBiZWRyb2NrLlRvb2xSZXN1bHRDb250ZW50QmxvY2s7XG5leHBvcnQgdHlwZSBUb29sRXhlY3V0aW9uSW5wdXQgPSBzbWl0aHkuRG9jdW1lbnRUeXBlO1xuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25NZXNzYWdlID0ge1xuICByb2xlOiAndXNlcicgfCAnYXNzaXN0YW50JztcbiAgY29udGVudDogQXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZUNvbnRlbnRCbG9jaz47XG59O1xuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25NZXNzYWdlQ29udGVudEJsb2NrID1cbiAgfCBiZWRyb2NrLkNvbnRlbnRCbG9ja1xuICB8IHtcbiAgICAgIGltYWdlOiBPbWl0PGJlZHJvY2suSW1hZ2VCbG9jaywgJ3NvdXJjZSc+ICYge1xuICAgICAgICAvLyBVcHN0cmVhbSAoQXBwc3luYykgbWF5IHNlbmQgaW1hZ2VzIGluIGEgZm9ybSBvZiBCYXNlNjQgZW5jb2RlZCBzdHJpbmdzXG4gICAgICAgIHNvdXJjZTogeyBieXRlczogc3RyaW5nIH07XG4gICAgICB9O1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFRvb2xEZWZpbml0aW9uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGlucHV0U2NoZW1hOiBUb29sSW5wdXRTY2hlbWE7XG59O1xuXG4vLyBDdXN0b21lcnMgYXJlIG5vdCBleHBlY3RlZCB0byBjcmVhdGUgZXZlbnRzIHRoZW1zZWx2ZXMsIHRoZXJlZm9yZVxuLy8gZGVmaW5pdGlvbiBvZiBuZXN0ZWQgcHJvcGVydGllcyBpcyBpbmxpbmUuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25UdXJuRXZlbnQgPSB7XG4gIGNvbnZlcnNhdGlvbklkOiBzdHJpbmc7XG4gIGN1cnJlbnRNZXNzYWdlSWQ6IHN0cmluZztcbiAgcmVzcG9uc2VNdXRhdGlvbjoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpbnB1dFR5cGVOYW1lOiBzdHJpbmc7XG4gICAgc2VsZWN0aW9uU2V0OiBzdHJpbmc7XG4gIH07XG4gIGdyYXBocWxBcGlFbmRwb2ludDogc3RyaW5nO1xuICBtb2RlbENvbmZpZ3VyYXRpb246IHtcbiAgICBtb2RlbElkOiBzdHJpbmc7XG4gICAgc3lzdGVtUHJvbXB0OiBzdHJpbmc7XG4gICAgcmVnaW9uPzogc3RyaW5nO1xuICAgIGluZmVyZW5jZUNvbmZpZ3VyYXRpb24/OiB7XG4gICAgICBtYXhUb2tlbnM/OiBudW1iZXI7XG4gICAgICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgICAgIHRvcFA/
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udmVyc2F0aW9uL3J1bnRpbWUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJlZHJvY2sgZnJvbSAnQGF3cy1zZGsvY2xpZW50LWJlZHJvY2stcnVudGltZSc7XG5pbXBvcnQgKiBhcyBzbWl0aHkgZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5cbi8qXG4gIE5vdGljZTogVGhpcyBmaWxlIGNvbnRhaW5zIHR5cGVzIHRoYXQgYXJlIGV4cG9zZWQgcHVibGljbHkuXG4gIFRoZXJlZm9yZSwgd2UgYXZvaWQgZWFnZXIgaW50cm9kdWN0aW9uIG9mIHR5cGVzIHRoYXQgd291bGRuJ3QgYmUgdXNlZnVsIGZvclxuICBwdWJsaWMgQVBJIGNvbnN1bWVyIGFuZCBwb3RlbnRpYWxseSBwb2xsdXRlIHN5bnRheCBhc3Npc3QgaW4gSURFcy5cbiAqL1xuXG5leHBvcnQgdHlwZSBUb29sSW5wdXRTY2hlbWEgPSBiZWRyb2NrLlRvb2xJbnB1dFNjaGVtYTtcbmV4cG9ydCB0eXBlIFRvb2xSZXN1bHRDb250ZW50QmxvY2sgPSBiZWRyb2NrLlRvb2xSZXN1bHRDb250ZW50QmxvY2s7XG5leHBvcnQgdHlwZSBUb29sRXhlY3V0aW9uSW5wdXQgPSBzbWl0aHkuRG9jdW1lbnRUeXBlO1xuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25NZXNzYWdlID0ge1xuICByb2xlOiAndXNlcicgfCAnYXNzaXN0YW50JztcbiAgY29udGVudDogQXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZUNvbnRlbnRCbG9jaz47XG59O1xuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25NZXNzYWdlQ29udGVudEJsb2NrID1cbiAgfCBiZWRyb2NrLkNvbnRlbnRCbG9ja1xuICB8IHtcbiAgICAgIGltYWdlOiBPbWl0PGJlZHJvY2suSW1hZ2VCbG9jaywgJ3NvdXJjZSc+ICYge1xuICAgICAgICAvLyBVcHN0cmVhbSAoQXBwc3luYykgbWF5IHNlbmQgaW1hZ2VzIGluIGEgZm9ybSBvZiBCYXNlNjQgZW5jb2RlZCBzdHJpbmdzXG4gICAgICAgIHNvdXJjZTogeyBieXRlczogc3RyaW5nIH07XG4gICAgICB9O1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFRvb2xEZWZpbml0aW9uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGlucHV0U2NoZW1hOiBUb29sSW5wdXRTY2hlbWE7XG59O1xuXG4vLyBDdXN0b21lcnMgYXJlIG5vdCBleHBlY3RlZCB0byBjcmVhdGUgZXZlbnRzIHRoZW1zZWx2ZXMsIHRoZXJlZm9yZVxuLy8gZGVmaW5pdGlvbiBvZiBuZXN0ZWQgcHJvcGVydGllcyBpcyBpbmxpbmUuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25UdXJuRXZlbnQgPSB7XG4gIGNvbnZlcnNhdGlvbklkOiBzdHJpbmc7XG4gIGN1cnJlbnRNZXNzYWdlSWQ6IHN0cmluZztcbiAgcmVzcG9uc2VNdXRhdGlvbjoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpbnB1dFR5cGVOYW1lOiBzdHJpbmc7XG4gICAgc2VsZWN0aW9uU2V0OiBzdHJpbmc7XG4gIH07XG4gIGdyYXBocWxBcGlFbmRwb2ludDogc3RyaW5nO1xuICBtb2RlbENvbmZpZ3VyYXRpb246IHtcbiAgICBtb2RlbElkOiBzdHJpbmc7XG4gICAgc3lzdGVtUHJvbXB0OiBzdHJpbmc7XG4gICAgcmVnaW9uPzogc3RyaW5nO1xuICAgIGluZmVyZW5jZUNvbmZpZ3VyYXRpb24/OiB7XG4gICAgICBtYXhUb2tlbnM/OiBudW1iZXI7XG4gICAgICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgICAgIHRvcFA/OiBudW1iZXI7XG4gICAgfTtcbiAgfTtcbiAgcmVxdWVzdDoge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIGF1dGhvcml6YXRpb246IHN0cmluZztcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBmaWVsZCBpcyBnb2luZyB0byBiZSByZW1vdmVkIGluIHVwY29taW5nIHJlbGVhc2VzLlxuICAgKi9cbiAgbWVzc2FnZXM/OiBBcnJheTxDb252ZXJzYXRpb25NZXNzYWdlPjtcbiAgbWVzc2FnZUhpc3RvcnlRdWVyeToge1xuICAgIGdldFF1ZXJ5TmFtZTogc3RyaW5nO1xuICAgIGdldFF1ZXJ5SW5wdXRUeXBlTmFtZTogc3RyaW5nO1xuICAgIGxpc3RRdWVyeU5hbWU6IHN0cmluZztcbiAgICBsaXN0UXVlcnlJbnB1dFR5cGVOYW1lOiBzdHJpbmc7XG4gICAgbGlzdFF1ZXJ5TGltaXQ/OiBudW1iZXI7XG4gIH07XG4gIHRvb2xzQ29uZmlndXJhdGlvbj86IHtcbiAgICBkYXRhVG9vbHM/OiBBcnJheTxcbiAgICAgIFRvb2xEZWZpbml0aW9uICYge1xuICAgICAgICBncmFwaHFsUmVxdWVzdElucHV0RGVzY3JpcHRvcjoge1xuICAgICAgICAgIHF1ZXJ5TmFtZTogc3RyaW5nO1xuICAgICAgICAgIHNlbGVjdGlvblNldDogc3RyaW5nO1xuICAgICAgICAgIHByb3BlcnR5VHlwZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgPjtcbiAgICBjbGllbnRUb29scz86IEFycmF5PFRvb2xEZWZpbml0aW9uPjtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEV4ZWN1dGFibGVUb29sID0gVG9vbERlZmluaXRpb24gJiB7XG4gIGV4ZWN1dGU6IChcbiAgICBpbnB1dDogVG9vbEV4ZWN1dGlvbklucHV0IHwgdW5kZWZpbmVkXG4gICkgPT4gUHJvbWlzZTxUb29sUmVzdWx0Q29udGVudEJsb2NrPjtcbn07XG4iXX0=
|
@@ -110,6 +110,8 @@ export class AuthTransformer extends TransformerAuthBase implements TransformerA
|
|
110
110
|
// (undocumented)
|
111
111
|
addAutoGeneratedRelationalFields: (ctx: TransformerContextProvider, def: ObjectTypeDefinitionNode, allowedFields: Set<string>, fields: readonly string[]) => void;
|
112
112
|
// (undocumented)
|
113
|
+
addCustomOperationFieldsToAuthNonModelConfig: (ctx: TransformerTransformSchemaStepContextProvider) => void;
|
114
|
+
// (undocumented)
|
113
115
|
addFieldResolverForDynamicAuth: (ctx: TransformerContextProvider, def: ObjectTypeDefinitionNode, typeName: string, fieldName: string) => void;
|
114
116
|
// (undocumented)
|
115
117
|
addFieldsToObject: (ctx: TransformerTransformSchemaStepContextProvider, modelName: string, ownerFields: Array<string>) => void;
|
@@ -3,6 +3,12 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
5
|
|
6
|
+
## [4.1.3](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-auth-transformer@4.1.2...@aws-amplify/graphql-auth-transformer@4.1.3) (2024-10-10)
|
7
|
+
|
8
|
+
### Bug Fixes
|
9
|
+
|
10
|
+
- add aws_iam to custom operations when enableIamAuthorization is enabled; fix graphql type utils ([#2921](https://github.com/aws-amplify/amplify-category-api/issues/2921)) ([5cb5a2b](https://github.com/aws-amplify/amplify-category-api/commit/5cb5a2bcacf30ca9ff0f29fe32be57d1ffb6c1cf))
|
11
|
+
|
6
12
|
## [4.1.2](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-auth-transformer@4.1.1...@aws-amplify/graphql-auth-transformer@4.1.2) (2024-10-01)
|
7
13
|
|
8
14
|
**Note:** Version bump only for package @aws-amplify/graphql-auth-transformer
|
package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts
CHANGED
@@ -21,6 +21,7 @@ export declare class AuthTransformer extends TransformerAuthBase implements Tran
|
|
21
21
|
object: (def: ObjectTypeDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
|
22
22
|
after: (context: TransformerContextProvider) => void;
|
23
23
|
field: (parent: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode, field: FieldDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
|
24
|
+
addCustomOperationFieldsToAuthNonModelConfig: (ctx: TransformerTransformSchemaStepContextProvider) => void;
|
24
25
|
transformSchema: (context: TransformerTransformSchemaStepContextProvider) => void;
|
25
26
|
generateResolvers: (context: TransformerContextProvider) => void;
|
26
27
|
removeAuthFieldsFromSubscriptionFilter: (context: TransformerTransformSchemaStepContextProvider) => void;
|
package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"graphql-auth-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-auth-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"graphql-auth-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-auth-transformer.ts"],"names":[],"mappings":"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"}
|
@@ -165,7 +165,25 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
|
|
165
165
|
this.authNonModelConfig.set(typeFieldName, acm);
|
166
166
|
}
|
167
167
|
};
|
168
|
+
this.addCustomOperationFieldsToAuthNonModelConfig = (ctx) => {
|
169
|
+
if (!ctx.transformParameters.sandboxModeEnabled && !ctx.synthParameters.enableIamAccess) {
|
170
|
+
return;
|
171
|
+
}
|
172
|
+
const hasAwsIamDirective = (field) => {
|
173
|
+
var _a;
|
174
|
+
return (_a = field.directives) === null || _a === void 0 ? void 0 : _a.some((dir) => dir.name.value === 'aws_iam');
|
175
|
+
};
|
176
|
+
const allObjects = ctx.inputDocument.definitions.filter(graphql_transformer_core_1.isBuiltInGraphqlNode);
|
177
|
+
allObjects.forEach((object) => {
|
178
|
+
const typeName = object.name.value;
|
179
|
+
const fieldsWithoutIamDirective = object.fields.filter((field) => !hasAwsIamDirective(field));
|
180
|
+
fieldsWithoutIamDirective.forEach((field) => {
|
181
|
+
(0, utils_1.addDirectivesToField)(ctx, typeName, field.name.value, [(0, graphql_transformer_common_1.makeDirective)('aws_iam', [])]);
|
182
|
+
});
|
183
|
+
});
|
184
|
+
};
|
168
185
|
this.transformSchema = (context) => {
|
186
|
+
this.addCustomOperationFieldsToAuthNonModelConfig(context);
|
169
187
|
const searchableAggregateServiceDirectives = new Set();
|
170
188
|
const getOwnerFields = (acm) => acm.getRoles().reduce((prev, role) => {
|
171
189
|
if (this.roleMap.get(role).strategy === 'owner')
|