@aws-amplify/graphql-api-construct 1.4.1 → 1.4.3
Sign up to get free protection for your applications and to get access to all the features.
- package/.jsii +384 -253
- package/API.md +16 -4
- package/CHANGELOG.md +12 -0
- package/lib/amplify-dynamodb-table-wrapper.js +1 -1
- package/lib/amplify-graphql-api.d.ts +1 -1
- package/lib/amplify-graphql-api.js +16 -5
- package/lib/amplify-graphql-definition.d.ts +4 -3
- package/lib/amplify-graphql-definition.js +8 -16
- package/lib/index.d.ts +3 -1
- package/lib/index.js +19 -2
- package/lib/internal/data-source-config.d.ts +21 -2
- package/lib/internal/data-source-config.js +72 -33
- package/lib/internal/model-type-name.d.ts +2 -2
- package/lib/internal/model-type-name.js +4 -4
- package/lib/model-datasource-strategy.d.ts +116 -0
- package/lib/model-datasource-strategy.js +10 -0
- package/lib/sql-model-datasource-strategy.d.ts +1 -1
- package/lib/sql-model-datasource-strategy.js +5 -1
- package/lib/types.d.ts +16 -124
- package/lib/types.js +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +10 -10
- package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-function-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-function-transformer/package.json +6 -6
- package/node_modules/@aws-amplify/graphql-http-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-http-transformer/package.json +6 -6
- package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-index-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +8 -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 +10 -10
- package/node_modules/@aws-amplify/graphql-model-transformer/API.md +16 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/CHANGELOG.md +12 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.d.ts +1 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.js +3 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.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/resolvers/rds/resolver.d.ts +4 -2
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.js +30 -86
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.d.ts +2 -3
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.js +36 -18
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/package.json +6 -6
- package/node_modules/@aws-amplify/graphql-predictions-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-predictions-transformer/lib/predictionsLambdaFunction.zip +0 -0
- package/node_modules/@aws-amplify/graphql-predictions-transformer/package.json +6 -6
- package/node_modules/@aws-amplify/graphql-relational-transformer/CHANGELOG.md +10 -0
- package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +8 -8
- package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +8 -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 +7 -7
- package/node_modules/@aws-amplify/graphql-sql-transformer/CHANGELOG.md +10 -0
- package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.js +15 -1
- package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-sql-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-transformer/API.md +3 -1
- package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +10 -0
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts +2 -1
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js +2 -1
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer/package.json +15 -15
- package/node_modules/@aws-amplify/graphql-transformer/src/graphql-transformer.ts +4 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/API.md +35 -5
- package/node_modules/@aws-amplify/graphql-transformer-core/CHANGELOG.md +12 -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 +19 -13
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.js +20 -2
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/types.d.ts +2 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/types.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.d.ts +24 -6
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.js +16 -14
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/stack-manager.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/stack-manager.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.d.ts +14 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.d.ts.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.js +23 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.js.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.d.ts +2 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.js +16 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.d.ts +11 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.d.ts.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.js +84 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.js.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/package.json +4 -4
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/API.md +89 -5
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/CHANGELOG.md +6 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts +0 -17
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.d.ts +2 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.js +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.d.ts +2 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.d.ts.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.js +18 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.js.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.d.ts +55 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.d.ts.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.js +3 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.js.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transform-host-provider.d.ts +2 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transform-host-provider.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.d.ts +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-context-provider.d.ts +6 -4
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-context-provider.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/package.json +3 -2
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/graphql-api-provider.ts +1 -41
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/index.ts +1 -4
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/model-datasource/index.ts +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/model-datasource/types.ts +163 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transform-host-provider.ts +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/index.ts +4 -3
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transformer-context-provider.ts +6 -7
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transformer-datasource-provider.ts +2 -2
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/tsconfig.tsbuildinfo +1 -1
- package/node_modules/graphql-transformer-common/API.md +11 -4
- package/node_modules/graphql-transformer-common/CHANGELOG.md +6 -0
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts +11 -4
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts.map +1 -1
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.js +11 -4
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.js.map +1 -1
- package/node_modules/graphql-transformer-common/package.json +2 -3
- package/package.json +17 -17
- package/src/amplify-graphql-api.ts +20 -5
- package/src/amplify-graphql-definition.ts +8 -15
- package/src/index.ts +3 -11
- package/src/internal/data-source-config.ts +89 -35
- package/src/internal/model-type-name.ts +3 -3
- package/src/model-datasource-strategy.ts +149 -0
- package/src/sql-model-datasource-strategy.ts +1 -1
- package/src/types.ts +17 -151
- /package/node_modules/{graphql-transformer-common → @aws-amplify/graphql-transformer-interfaces}/LICENSE +0 -0
package/API.md
CHANGED
@@ -196,6 +196,16 @@ export interface CustomConflictResolutionStrategy extends ConflictResolutionStra
|
|
196
196
|
readonly handlerType: 'LAMBDA';
|
197
197
|
}
|
198
198
|
|
199
|
+
// @public (undocumented)
|
200
|
+
export interface CustomSqlDataSourceStrategy {
|
201
|
+
// (undocumented)
|
202
|
+
readonly fieldName: string;
|
203
|
+
// (undocumented)
|
204
|
+
readonly strategy: SQLLambdaModelDataSourceStrategy;
|
205
|
+
// (undocumented)
|
206
|
+
readonly typeName: 'Query' | 'Mutation';
|
207
|
+
}
|
208
|
+
|
199
209
|
// @public
|
200
210
|
export interface DefaultDynamoDbModelDataSourceStrategy {
|
201
211
|
// (undocumented)
|
@@ -230,6 +240,7 @@ export interface IAMAuthorizationConfig {
|
|
230
240
|
|
231
241
|
// @public
|
232
242
|
export interface IAmplifyGraphqlDefinition {
|
243
|
+
readonly customSqlDataSourceStrategies?: CustomSqlDataSourceStrategy[];
|
233
244
|
readonly dataSourceStrategies: Record<string, ModelDataSourceStrategy>;
|
234
245
|
readonly functionSlots: FunctionSlot[];
|
235
246
|
readonly referencedLambdaFunctions?: Record<string, IFunction>;
|
@@ -313,20 +324,21 @@ export interface QueryFunctionSlot extends FunctionSlotBase {
|
|
313
324
|
readonly typeName: 'Query';
|
314
325
|
}
|
315
326
|
|
316
|
-
// @public
|
317
|
-
export type SQLLambdaLayerMapping = Record<string, string>;
|
318
|
-
|
319
327
|
// @public
|
320
328
|
export interface SQLLambdaModelDataSourceStrategy {
|
321
329
|
readonly customSqlStatements?: Record<string, string>;
|
322
330
|
readonly dbConnectionConfig: SqlModelDataSourceDbConnectionConfig;
|
323
331
|
readonly dbType: 'MYSQL' | 'POSTGRES';
|
324
332
|
readonly name: string;
|
325
|
-
readonly sqlLambdaLayerMapping?: SQLLambdaLayerMapping;
|
326
333
|
readonly sqlLambdaProvisionedConcurrencyConfig?: ProvisionedConcurrencyConfig;
|
327
334
|
readonly vpcConfiguration?: VpcConfig;
|
328
335
|
}
|
329
336
|
|
337
|
+
// @public
|
338
|
+
export class SQLLambdaModelDataSourceStrategyFactory {
|
339
|
+
static fromCustomSqlFiles(sqlFiles: string[], options: Exclude<SQLLambdaModelDataSourceStrategy, 'customSqlStatements'>): SQLLambdaModelDataSourceStrategy;
|
340
|
+
}
|
341
|
+
|
330
342
|
// @public
|
331
343
|
export interface SqlModelDataSourceDbConnectionConfig {
|
332
344
|
readonly databaseNameSsmPath: string;
|
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,18 @@
|
|
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
|
+
## [1.4.3](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-api-construct@1.4.2...@aws-amplify/graphql-api-construct@1.4.3) (2023-11-22)
|
7
|
+
|
8
|
+
### Bug Fixes
|
9
|
+
|
10
|
+
- Allow custom SQL statements without model declarations ([#2087](https://github.com/aws-amplify/amplify-category-api/issues/2087)) ([ea5b26c](https://github.com/aws-amplify/amplify-category-api/commit/ea5b26cd554f5c74b6431cbad6ccf60ab556478f))
|
11
|
+
|
12
|
+
## [1.4.2](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-api-construct@1.4.1...@aws-amplify/graphql-api-construct@1.4.2) (2023-11-18)
|
13
|
+
|
14
|
+
### Bug Fixes
|
15
|
+
|
16
|
+
- regionalize lambda layer patching SNS topics ([#2079](https://github.com/aws-amplify/amplify-category-api/issues/2079)) ([6006c86](https://github.com/aws-amplify/amplify-category-api/commit/6006c86cd4ee624b24c184fab523fcdcdb38be63))
|
17
|
+
|
6
18
|
## [1.4.1](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-api-construct@1.4.0...@aws-amplify/graphql-api-construct@1.4.1) (2023-11-16)
|
7
19
|
|
8
20
|
### Bug Fixes
|
@@ -98,5 +98,5 @@ class AmplifyDynamoDbTableWrapper {
|
|
98
98
|
}
|
99
99
|
exports.AmplifyDynamoDbTableWrapper = AmplifyDynamoDbTableWrapper;
|
100
100
|
_a = JSII_RTTI_SYMBOL_1;
|
101
|
-
AmplifyDynamoDbTableWrapper[_a] = { fqn: "@aws-amplify/graphql-api-construct.AmplifyDynamoDbTableWrapper", version: "1.4.
|
101
|
+
AmplifyDynamoDbTableWrapper[_a] = { fqn: "@aws-amplify/graphql-api-construct.AmplifyDynamoDbTableWrapper", version: "1.4.3" };
|
102
102
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1keW5hbW9kYi10YWJsZS13cmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FtcGxpZnktZHluYW1vZGItdGFibGUtd3JhcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUEwQztBQUcxQyxNQUFNLG9DQUFvQyxHQUFHLDhCQUE4QixDQUFDO0FBZ0M1RTs7O0dBR0c7QUFDSCxJQUFZLE9BRVg7QUFGRCxXQUFZLE9BQU87SUFDakIsc0JBQVcsQ0FBQTtBQUNiLENBQUMsRUFGVyxPQUFPLHVCQUFQLE9BQU8sUUFFbEI7QUEyQ0Q7Ozs7Ozs7R0FPRztBQUNILE1BQWEsMkJBQTJCO0lBQ3RDOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBTTtRQUMxQyxPQUFPLENBQUMsWUFBWSx5QkFBVyxJQUFJLENBQUMsQ0FBQyxlQUFlLEtBQUssb0NBQW9DLENBQUM7SUFDaEcsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQTZCLFFBQXFCO1FBQXJCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDaEQsSUFBSSxRQUFRLENBQUMsZUFBZSxLQUFLLG9DQUFvQyxFQUFFO1lBQ3JFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLG9DQUFvQyxzQ0FBc0MsQ0FBQyxDQUFDO1NBQzNIO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxXQUFXLENBQUMsV0FBd0I7UUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxtQkFBbUIsQ0FBQyx1QkFBZ0Q7UUFDdEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyx5QkFBeUIsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksMEJBQTBCLENBQUMsMEJBQW1DO1FBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsa0NBQWtDLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxxQkFBcUIsQ0FBQyxxQkFBNEM7UUFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsNENBQTRDLENBQUMsU0FBaUIsRUFBRSxxQkFBNEM7UUFDMUcsTUFBTSxJQUFJLEdBQTJDLE1BQU0sQ0FBQyxPQUFPLENBQ2hFLElBQUksQ0FBQyxRQUFnQixDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsc0JBQXNCLElBQUksRUFBRSxDQUM5RSxDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ILElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsU0FBUyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQy9FO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQywwQkFBMEIsU0FBUyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksbUJBQW1CLENBQUMsbUJBQXdDO1FBQzlELElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGdCQUFnQixDQUFDLGdCQUFrQztRQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSx5QkFBeUIsQ0FBQyx5QkFBa0M7UUFDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQywyQkFBMkIsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0lBQzVGLENBQUM7O0FBbkZILGtFQW9GQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmblJlc291cmNlIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQmlsbGluZ01vZGUsIFN0cmVhbVZpZXdUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiJztcblxuY29uc3QgQU1QTElGWV9EWU5BTU9EQl9UQUJMRV9SRVNPVVJDRV9UWVBFID0gJ0N1c3RvbTo6QW1wbGlmeUR5bmFtb0RCVGFibGUnO1xuXG4vKipcbiAqIFNoYXBlIGZvciBUVEwgY29uZmlnLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVUb0xpdmVTcGVjaWZpY2F0aW9uIHtcbiAgLyoqXG4gICAqIEJvb2xlYW4gZGV0ZXJtaW5pbmcgaWYgdGhlIHR0bCBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBuYW1lIHRvIGFwcGx5IHRvIHRoZSB0dGwgc3BlYy5cbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogV3JhcHBlciBmb3IgcHJvdmlzaW9uZWQgdGhyb3VnaHB1dCBjb25maWcgaW4gRERCLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3Zpc2lvbmVkVGhyb3VnaHB1dCB7XG4gIC8qKlxuICAgKiBUaGUgcmVhZCBjYXBhY2l0eSB1bml0cyBvbiB0aGUgdGFibGUgb3IgaW5kZXguXG4gICAqL1xuICByZWFkb25seSByZWFkQ2FwYWNpdHlVbml0czogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgd3JpdGUgY2FwYWNpdHkgdW5pdHMgb24gdGhlIHRhYmxlIG9yIGluZGV4LlxuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVDYXBhY2l0eVVuaXRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogU2VydmVyIFNpZGUgRW5jcnlwdGlvbiBUeXBlIFZhbHVlc1xuICogLSBgS01TYCAtIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gdGhhdCB1c2VzIEFXUyBLTVMuIFRoZSBrZXkgaXMgc3RvcmVkIGluIHlvdXIgYWNjb3VudCBhbmQgaXMgbWFuYWdlZCBieSBLTVMgKEFXUyBLTVMgY2hhcmdlcyBhcHBseSkuXG4gKi9cbmV4cG9ydCBlbnVtIFNTRVR5cGUge1xuICBLTVMgPSAnS01TJyxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBzZXR0aW5ncyB1c2VkIHRvIGVuYWJsZSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTRVNwZWNpZmljYXRpb24ge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiBpcyBkb25lIHVzaW5nIGFuIEFXUyBtYW5hZ2VkIGtleSBvciBhbiBBV1Mgb3duZWQga2V5LlxuICAgKiBJZiBlbmFibGVkICh0cnVlKSwgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB0eXBlIGlzIHNldCB0byBgS01TYCBhbmQgYW4gQVdTIG1hbmFnZWQga2V5IGlzIHVzZWQgKCBBV1MgS01TIGNoYXJnZXMgYXBwbHkpLlxuICAgKiBJZiBkaXNhYmxlZCAoZmFsc2UpIG9yIG5vdCBzcGVjaWZpZWQsIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gaXMgc2V0IHRvIEFXUyBvd25lZCBrZXkuXG4gICAqL1xuICByZWFkb25seSBzc2VFbmFibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIEtNUyBrZXkgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIEFXUyBLTVMgZW5jcnlwdGlvbi5cbiAgICogVG8gc3BlY2lmeSBhIGtleSwgdXNlIGl0cyBrZXkgSUQsIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pLCBhbGlhcyBuYW1lLCBvciBhbGlhcyBBUk4uIE5vdGUgdGhhdCB5b3Ugc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgKiB0aGlzIHBhcmFtZXRlciBpZiB0aGUga2V5IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IER5bmFtb0RCIGtleSBgYWxpYXMvYXdzL2R5bmFtb2RiYCAuXG4gICAqL1xuICByZWFkb25seSBrbXNNYXN0ZXJLZXlJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiB0eXBlLiBUaGUgb25seSBzdXBwb3J0ZWQgdmFsdWUgaXM6XG4gICAqIGBLTVNgIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gdGhhdCB1c2VzIEFXUyBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlLlxuICAgKiAgIFRoZSBrZXkgaXMgc3RvcmVkIGluIHlvdXIgYWNjb3VudCBhbmQgaXMgbWFuYWdlZCBieSBBV1MgS01TICggQVdTIEtNUyBjaGFyZ2VzIGFwcGx5KS5cbiAgICovXG4gIHJlYWRvbmx5IHNzZVR5cGU/OiBTU0VUeXBlO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIER5bmFtb0RCIFN0cmVhbXMgY29uZmlndXJhdGlvbiBmb3IgYSB0YWJsZSBpbiBEeW5hbW9EQi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1TcGVjaWZpY2F0aW9uIHtcbiAgLyoqXG4gICAqIFdoZW4gYW4gaXRlbSBpbiB0aGUgdGFibGUgaXMgbW9kaWZpZWQsIGBTdHJlYW1WaWV3VHlwZWAgZGV0ZXJtaW5lcyB3aGF0IGluZm9ybWF0aW9uIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbSBmb3IgdGhpcyB0YWJsZS5cbiAgICogVmFsaWQgdmFsdWVzIGZvciBgU3RyZWFtVmlld1R5cGVgIGFyZTpcbiAgICogLSBgS0VZU19PTkxZYCAtIE9ubHkgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIHRoZSBtb2RpZmllZCBpdGVtIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gICAqIC0gYE5FV19JTUFHRWAgLSBUaGUgZW50aXJlIGl0ZW0sIGFzIGl0IGFwcGVhcnMgYWZ0ZXIgaXQgd2FzIG1vZGlmaWVkLCBpcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gICAqIC0gYE9MRF9JTUFHRWAgLSBUaGUgZW50aXJlIGl0ZW0sIGFzIGl0IGFwcGVhcmVkIGJlZm9yZSBpdCB3YXMgbW9kaWZpZWQsIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS5cbiAgICogLSBgTkVXX0FORF9PTERfSU1BR0VTYCAtIEJvdGggdGhlIG5ldyBhbmQgdGhlIG9sZCBpdGVtIGltYWdlcyBvZiB0aGUgaXRlbSBhcmUgd3JpdHRlbiB0byB0aGUgc3RyZWFtLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RyZWFtVmlld1R5cGU6IFN0cmVhbVZpZXdUeXBlO1xufVxuXG4vKipcbiAqIFdyYXBwZXIgY2xhc3MgYXJvdW5kIEN1c3RvbTo6QW1wbGlmeUR5bmFtb0RCVGFibGUgY3VzdG9tIHJlc291cmNlLCB0byBzaW1wbGlmeVxuICogdGhlIG92ZXJyaWRlIGV4cGVyaWVuY2UgYSBiaXQuIFRoaXMgaXMgTk9UIGEgY29uc3RydWN0LCBqdXN0IGFuIGVhc2llciB3YXkgdG8gYWNjZXNzXG4gKiB0aGUgZ2VuZXJhdGVkIGNvbnN0cnVjdC5cbiAqIFRoaXMgaXMgYSB3cmFwcGVyIGludGVuZGVkIHRvIG1pbWljIHRoZSBgYXdzX2Nka19saWIuYXdzX2R5bmFtb2RiLlRhYmxlYCBmdW5jdGlvbmFsaXR5IG1vcmUtb3ItbGVzcy5cbiAqIE5vdGFibGUgZGlmZmVyZW5jZXMgaXMgdGhlIGFkZGl0aW9uIG9mIFRLVEsgcHJvcGVydGllcywgdG8gYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCB0aGV5J3JlIGNvbnN0cnVjdG9yIHByb3BzXG4gKiBpbiB0aGUgQ0RLIGNvbnN0cnVjdCwgYXMgd2VsbCBhcyB0aGUgcmVtb3ZhbCBvZiBhbGwgZnJvbSosIGdyYW50KiwgYW5kIG1ldHJpYyogbWV0aG9kcyBpbXBsZW1lbnRlZCBieSBUYWJsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFtcGxpZnlEeW5hbW9EYlRhYmxlV3JhcHBlciB7XG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBhbmQgcGVyZm9ybSB0eXBlIG5hcnJvd2luZyBpZiBhIGdpdmVuIGlucHV0IGFwcGVhcnMgdG8gYmUgY2FwYWJsZSBvZlxuICAgKiBAcGFyYW0geCB0aGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgcmVzb3VyY2UgaXMgYW4gdW5kZXJseWluZyBhbXBsaWZ5IGR5bmFtb2RiIHRhYmxlIHJlc291cmNlLlxuICAgKi9cbiAgc3RhdGljIGlzQW1wbGlmeUR5bmFtb0RiVGFibGVSZXNvdXJjZSh4OiBhbnkpOiB4IGlzIENmblJlc291cmNlIHtcbiAgICByZXR1cm4geCBpbnN0YW5jZW9mIENmblJlc291cmNlICYmIHguY2ZuUmVzb3VyY2VUeXBlID09PSBBTVBMSUZZX0RZTkFNT0RCX1RBQkxFX1JFU09VUkNFX1RZUEU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSB3cmFwcGVyIGdpdmVuIGFuIHVuZGVybHlpbmcgQ2ZuUmVzb3VyY2UgdGhhdCBpcyBhbiBpbnN0YW5jZSBvZiBDdXN0b206OkFtcGxpZnlEeW5hbW9EQlRhYmxlLlxuICAgKiBAcGFyYW0gcmVzb3VyY2UgdGhlIENmbiByZXNvdXJjZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IENmblJlc291cmNlKSB7XG4gICAgaWYgKHJlc291cmNlLmNmblJlc291cmNlVHlwZSAhPT0gQU1QTElGWV9EWU5BTU9EQl9UQUJMRV9SRVNPVVJDRV9UWVBFKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE9ubHkgQ2ZuUmVzb3VyY2Ugd2l0aCB0eXBlICR7QU1QTElGWV9EWU5BTU9EQl9UQUJMRV9SRVNPVVJDRV9UWVBFfSBjYW4gYmUgdXNlZCBpbiBBbXBsaWZ5RHluYW1vRGJUYWJsZWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGhvdyB5b3UgYXJlIGNoYXJnZWQgZm9yIHJlYWQgYW5kIHdyaXRlIHRocm91Z2hwdXQgYW5kIGhvdyB5b3UgbWFuYWdlIGNhcGFjaXR5LlxuICAgKi9cbiAgc2V0IGJpbGxpbmdNb2RlKGJpbGxpbmdNb2RlOiBCaWxsaW5nTW9kZSkge1xuICAgIHRoaXMucmVzb3VyY2UuYWRkUHJvcGVydHlPdmVycmlkZSgnYmlsbGluZ01vZGUnLCBiaWxsaW5nTW9kZSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgVFRMIGF0dHJpYnV0ZS5cbiAgICovXG4gIHNldCB0aW1lVG9MaXZlQXR0cmlidXRlKHRpbWVUb0xpdmVTcGVjaWZpY2F0aW9uOiBUaW1lVG9MaXZlU3BlY2lmaWNhdGlvbikge1xuICAgIHRoaXMucmVzb3VyY2UuYWRkUHJvcGVydHlPdmVycmlkZSgndGltZVRvTGl2ZVNwZWNpZmljYXRpb24nLCB0aW1lVG9MaXZlU3BlY2lmaWNhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBwb2ludC1pbi10aW1lIHJlY292ZXJ5IGlzIGVuYWJsZWQuXG4gICAqL1xuICBzZXQgcG9pbnRJblRpbWVSZWNvdmVyeUVuYWJsZWQocG9pbnRJblRpbWVSZWNvdmVyeUVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnJlc291cmNlLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ3BvaW50SW5UaW1lUmVjb3ZlcnlTcGVjaWZpY2F0aW9uJywgeyBwb2ludEluVGltZVJlY292ZXJ5RW5hYmxlZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgZm9yIHRoZSBiYXNlIHRhYmxlLlxuICAgKi9cbiAgc2V0IHByb3Zpc2lvbmVkVGhyb3VnaHB1dChwcm92aXNpb25lZFRocm91Z2hwdXQ6IFByb3Zpc2lvbmVkVGhyb3VnaHB1dCkge1xuICAgIHRoaXMucmVzb3VyY2UuYWRkUHJvcGVydHlPdmVycmlkZSgncHJvdmlzaW9uZWRUaHJvdWdocHV0JywgcHJvdmlzaW9uZWRUaHJvdWdocHV0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHByb3Zpc2lvbmVkVGhyb3VnaHRwdXQgZm9yIGEgc3BlY2lmaWVkIEdTSSBieSBuYW1lLlxuICAgKiBAcGFyYW0gaW5kZXhOYW1lIHRoZSBpbmRleCB0byBzcGVjaWZ5IGEgcHJvdmlzaW9uZWRUaHJvdWdocHV0IGNvbmZpZyBmb3JcbiAgICogQHBhcmFtIHByb3Zpc2lvbmVkVGhyb3VnaHB1dCB0aGUgY29uZmlnIHRvIHNldFxuICAgKi9cbiAgc2V0R2xvYmFsU2Vjb25kYXJ5SW5kZXhQcm92aXNpb25lZFRocm91Z2hwdXQoaW5kZXhOYW1lOiBzdHJpbmcsIHByb3Zpc2lvbmVkVGhyb3VnaHB1dDogUHJvdmlzaW9uZWRUaHJvdWdocHV0KTogdm9pZCB7XG4gICAgY29uc3QgZ3NpczogQXJyYXk8W3N0cmluZywgeyBpbmRleE5hbWU6IHN0cmluZyB9XT4gPSBPYmplY3QuZW50cmllcyhcbiAgICAgICh0aGlzLnJlc291cmNlIGFzIGFueSkucmF3T3ZlcnJpZGVzPy5Qcm9wZXJ0aWVzPy5nbG9iYWxTZWNvbmRhcnlJbmRleGVzID8/IHt9LFxuICAgICk7XG4gICAgY29uc3QgZm91bmRHc2lzID0gZ3Npcy5maWx0ZXIoKFtfLCBnc2lDb25maWddKSA9PiBpbmRleE5hbWUgPT09IGdzaUNvbmZpZy5pbmRleE5hbWUpLm1hcCgoW2dzaUluZGV4XSkgPT4gZ3NpSW5kZXgpO1xuICAgIGlmIChmb3VuZEdzaXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEluZGV4IHdpdGggbmFtZSAke2luZGV4TmFtZX0gbm90IGZvdW5kIGluIHRhYmxlIGRlZmluaXRpb25gKTtcbiAgICB9XG4gICAgdGhpcy5yZXNvdXJjZS5hZGRQcm9wZXJ0eU92ZXJyaWRlKGBnbG9iYWxTZWNvbmRhcnlJbmRleGVzLiR7Zm91bmRHc2lzWzBdfS5wcm92aXNpb25lZFRocm91Z2hwdXRgLCBwcm92aXNpb25lZFRocm91Z2hwdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGRiIHN0cmVhbSBzcGVjaWZpY2F0aW9uIG9uIHRoZSB0YWJsZS5cbiAgICovXG4gIHNldCBzdHJlYW1TcGVjaWZpY2F0aW9uKHN0cmVhbVNwZWNpZmljYXRpb246IFN0cmVhbVNwZWNpZmljYXRpb24pIHtcbiAgICB0aGlzLnJlc291cmNlLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ3N0cmVhbVNwZWNpZmljYXRpb24nLCBzdHJlYW1TcGVjaWZpY2F0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRkYiBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHNwZWNpZmljYXRpb24gb24gdGhlIHRhYmxlLlxuICAgKi9cbiAgc2V0IHNzZVNwZWNpZmljYXRpb24oc3NlU3BlY2lmaWNhdGlvbjogU1NFU3BlY2lmaWNhdGlvbikge1xuICAgIHRoaXMucmVzb3VyY2UuYWRkUHJvcGVydHlPdmVycmlkZSgnc3NlU3BlY2lmaWNhdGlvbicsIHNzZVNwZWNpZmljYXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0YWJsZSBkZWxldGlvbiBwcm90ZWN0aW9uLlxuICAgKi9cbiAgc2V0IGRlbGV0aW9uUHJvdGVjdGlvbkVuYWJsZWQoZGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMucmVzb3VyY2UuYWRkUHJvcGVydHlPdmVycmlkZSgnZGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCcsIGRlbGV0aW9uUHJvdGVjdGlvbkVuYWJsZWQpO1xuICB9XG59XG4iXX0=
|
@@ -87,7 +87,7 @@ export declare class AmplifyGraphqlApi extends Construct {
|
|
87
87
|
/**
|
88
88
|
* Extends executeTransformConfig with fields for provisioning a SQL Lambda
|
89
89
|
* @param executeTransformConfig the executeTransformConfig to extend
|
90
|
-
* @param
|
90
|
+
* @param strategy the SQLLambdaModelDataSourceStrategy containing the SQL connection values to add to the transform config
|
91
91
|
* @returns the extended configuration that includes SQL DB connection information
|
92
92
|
*/
|
93
93
|
private extendTransformConfig;
|
@@ -14,9 +14,9 @@ const aws_appsync_1 = require("aws-cdk-lib/aws-appsync");
|
|
14
14
|
const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
|
15
15
|
const user_defined_slots_1 = require("./internal/user-defined-slots");
|
16
16
|
const internal_1 = require("./internal");
|
17
|
-
const sql_model_datasource_strategy_1 = require("./sql-model-datasource-strategy");
|
18
17
|
const data_source_config_1 = require("./internal/data-source-config");
|
19
18
|
const construct_tree_1 = require("./internal/construct-tree");
|
19
|
+
const sql_model_datasource_strategy_1 = require("./sql-model-datasource-strategy");
|
20
20
|
/**
|
21
21
|
* L3 Construct which invokes the Amplify Transformer Pattern over an input Graphql Schema.
|
22
22
|
*
|
@@ -108,8 +108,19 @@ class AmplifyGraphqlApi extends constructs_1.Construct {
|
|
108
108
|
// Adds a modelToDataSourceMap field/value
|
109
109
|
...(0, data_source_config_1.parseDataSourceConfig)(definition.dataSourceStrategies),
|
110
110
|
};
|
111
|
+
// TODO: Normalize all of this once we start using strategies internally. Right now the data source configuration (VPC, connection info,
|
112
|
+
// etc) is separate from the DataSourceType, and singular
|
113
|
+
const customSqlDataSourceStrategies = (0, data_source_config_1.mapInterfaceCustomSqlStrategiesToImplementationStrategies)(definition.customSqlDataSourceStrategies);
|
114
|
+
if (customSqlDataSourceStrategies.length > 0) {
|
115
|
+
executeTransformConfig = {
|
116
|
+
...executeTransformConfig,
|
117
|
+
customSqlDataSourceStrategies,
|
118
|
+
};
|
119
|
+
}
|
111
120
|
// TODO: Update this to support multiple definitions; right now we assume only one SQL data source type
|
112
|
-
|
121
|
+
const modelStrategies = Object.values(definition.dataSourceStrategies).filter(sql_model_datasource_strategy_1.isSQLLambdaModelDataSourceStrategy);
|
122
|
+
const customSqlStrategies = definition.customSqlDataSourceStrategies?.map((css) => css.strategy) ?? [];
|
123
|
+
for (const strategy of [...modelStrategies, ...customSqlStrategies]) {
|
113
124
|
if ((0, sql_model_datasource_strategy_1.isSQLLambdaModelDataSourceStrategy)(strategy)) {
|
114
125
|
executeTransformConfig = this.extendTransformConfig(executeTransformConfig, strategy);
|
115
126
|
break;
|
@@ -129,7 +140,7 @@ class AmplifyGraphqlApi extends constructs_1.Construct {
|
|
129
140
|
/**
|
130
141
|
* Extends executeTransformConfig with fields for provisioning a SQL Lambda
|
131
142
|
* @param executeTransformConfig the executeTransformConfig to extend
|
132
|
-
* @param
|
143
|
+
* @param strategy the SQLLambdaModelDataSourceStrategy containing the SQL connection values to add to the transform config
|
133
144
|
* @returns the extended configuration that includes SQL DB connection information
|
134
145
|
*/
|
135
146
|
extendTransformConfig(executeTransformConfig, strategy) {
|
@@ -312,7 +323,7 @@ class AmplifyGraphqlApi extends constructs_1.Construct {
|
|
312
323
|
}
|
313
324
|
exports.AmplifyGraphqlApi = AmplifyGraphqlApi;
|
314
325
|
_a = JSII_RTTI_SYMBOL_1;
|
315
|
-
AmplifyGraphqlApi[_a] = { fqn: "@aws-amplify/graphql-api-construct.AmplifyGraphqlApi", version: "1.4.
|
326
|
+
AmplifyGraphqlApi[_a] = { fqn: "@aws-amplify/graphql-api-construct.AmplifyGraphqlApi", version: "1.4.3" };
|
316
327
|
/**
|
317
328
|
* Given the provided scope, walk the node tree, and throw an exception if any other AmplifyGraphqlApi constructs
|
318
329
|
* are found in the stack.
|
@@ -330,4 +341,4 @@ const validateNoOtherAmplifyGraphqlApiInStack = (scope) => {
|
|
330
341
|
throw new Error('Only one AmplifyGraphqlApi is expected in a stack');
|
331
342
|
}
|
332
343
|
};
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1ncmFwaHFsLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hbXBsaWZ5LWdyYXBocWwtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDJDQUF1QztBQUN2QywwRUFBNEY7QUFDNUYsNkNBQWlEO0FBQ2pELDZEQUFrRDtBQUVsRCxnRkFBNEg7QUFDNUgsZ0ZBQXVFO0FBRXZFLHlEQWNpQztBQVFqQyxvRkFBOEc7QUFDOUcsc0VBQTRHO0FBVTVHLHlDQVNvQjtBQUNwQixtRkFBcUY7QUFDckYsc0VBQXNFO0FBQ3RFLDhEQUFrRjtBQUVsRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLHNCQUFTO0lBK0M5Qzs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFibkI7O1dBRUc7UUFDYyxjQUFTLEdBQUcsYUFBYSxDQUFDO1FBWXpDLHVDQUF1QyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlDLE1BQU0sRUFDSixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixxQkFBcUIsR0FDdEIsR0FBRyxLQUFLLENBQUM7UUFFVixJQUFJLG1EQUEwQixFQUFFLENBQUMsd0JBQXdCLENBQUMsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUV2SSxNQUFNLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsSUFBQSwy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QUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVO1lBQzlCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7O0FBM1dILDhDQTRXQzs7O0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sdUNBQXVDLEdBQUcsQ0FBQyxLQUFnQixFQUFRLEVBQUU7SUFDekUsTUFBTSxTQUFTLEdBQUcsSUFBQSxpQ0FBZ0IsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFaEQsSUFBSSw2QkFBNkIsR0FBRyxLQUFLLENBQUM7SUFDMUMsSUFBQSxvQ0FBbUIsRUFBQyxTQUFTLEVBQUUsQ0FBQyxJQUFlLEVBQUUsRUFBRTtRQUNqRCxJQUFJLElBQUksWUFBWSxpQkFBaUIsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3ZELDZCQUE2QixHQUFHLElBQUksQ0FBQztTQUN0QztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSw2QkFBNkIsRUFBRTtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBFeGVjdXRlVHJhbnNmb3JtQ29uZmlnLCBleGVjdXRlVHJhbnNmb3JtIH0gZnJvbSAnQGF3cy1hbXBsaWZ5L2dyYXBocWwtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgTmVzdGVkU3RhY2ssIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQXNzZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB7IEFzc2V0UHJvcHMgfSBmcm9tICdAYXdzLWFtcGxpZnkvZ3JhcGhxbC10cmFuc2Zvcm1lci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IEF0dHJpYnV0aW9uTWV0YWRhdGFTdG9yYWdlLCBTdGFja01ldGFkYXRhQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9iYWNrZW5kLW91dHB1dC1zdG9yYWdlJztcbmltcG9ydCB7IGdyYXBocWxPdXRwdXRLZXkgfSBmcm9tICdAYXdzLWFtcGxpZnkvYmFja2VuZC1vdXRwdXQtc2NoZW1hcyc7XG5pbXBvcnQgdHlwZSB7IEdyYXBocWxPdXRwdXQsIEF3c0FwcHN5bmNBdXRoZW50aWNhdGlvblR5cGUgfSBmcm9tICdAYXdzLWFtcGxpZnkvYmFja2VuZC1vdXRwdXQtc2NoZW1hcyc7XG5pbXBvcnQge1xuICBBcHBzeW5jRnVuY3Rpb24sXG4gIERhdGFTb3VyY2VPcHRpb25zLFxuICBEeW5hbW9EYkRhdGFTb3VyY2UsXG4gIEVsYXN0aWNzZWFyY2hEYXRhU291cmNlLFxuICBFdmVudEJyaWRnZURhdGFTb3VyY2UsXG4gIEV4dGVuZGVkUmVzb2x2ZXJQcm9wcyxcbiAgSHR0cERhdGFTb3VyY2UsXG4gIEh0dHBEYXRhU291cmNlT3B0aW9ucyxcbiAgTGFtYmRhRGF0YVNvdXJjZSxcbiAgTm9uZURhdGFTb3VyY2UsXG4gIE9wZW5TZWFyY2hEYXRhU291cmNlLFxuICBSZHNEYXRhU291cmNlLFxuICBSZXNvbHZlcixcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwcHN5bmMnO1xuaW1wb3J0IHsgSVRhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiJztcbmltcG9ydCB7IElEb21haW4gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY3NlYXJjaCc7XG5pbXBvcnQgeyBJRG9tYWluIGFzIElPcGVuU2VhcmNoRG9tYWluIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLW9wZW5zZWFyY2hzZXJ2aWNlJztcbmltcG9ydCB7IElFdmVudEJ1cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgSUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBJU2VydmVybGVzc0NsdXN0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB7IElTZWNyZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHsgTVlTUUxfREJfVFlQRSwgUE9TVEdSRVNfREJfVFlQRSwgUkRTQ29ubmVjdGlvblNlY3JldHMgfSBmcm9tICdAYXdzLWFtcGxpZnkvZ3JhcGhxbC10cmFuc2Zvcm1lci1jb3JlJztcbmltcG9ydCB7IHBhcnNlVXNlckRlZmluZWRTbG90cywgdmFsaWRhdGVGdW5jdGlvblNsb3RzLCBzZXBhcmF0ZVNsb3RzIH0gZnJvbSAnLi9pbnRlcm5hbC91c2VyLWRlZmluZWQtc2xvdHMnO1xuaW1wb3J0IHR5cGUge1xuICBBbXBsaWZ5R3JhcGhxbEFwaVJlc291cmNlcyxcbiAgQW1wbGlmeUdyYXBocWxBcGlQcm9wcyxcbiAgRnVuY3Rpb25TbG90LFxuICBJQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSxcbiAgQWRkRnVuY3Rpb25Qcm9wcyxcbiAgQ29uZmxpY3RSZXNvbHV0aW9uLFxuICBTUUxMYW1iZGFNb2RlbERhdGFTb3VyY2VTdHJhdGVneSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBjb252ZXJ0QXV0aG9yaXphdGlvbk1vZGVzVG9UcmFuc2Zvcm1lckF1dGhDb25maWcsXG4gIGNvbnZlcnRUb1Jlc29sdmVyQ29uZmlnLFxuICBkZWZhdWx0VHJhbnNsYXRpb25CZWhhdmlvcixcbiAgQXNzZXRNYW5hZ2VyLFxuICBnZXRHZW5lcmF0ZWRSZXNvdXJjZXMsXG4gIGdldEdlbmVyYXRlZEZ1bmN0aW9uU2xvdHMsXG4gIENvZGVnZW5Bc3NldHMsXG4gIGdldEFkZGl0aW9uYWxBdXRoZW50aWNhdGlvblR5cGVzLFxufSBmcm9tICcuL2ludGVybmFsJztcbmltcG9ydCB7IGlzU1FMTGFtYmRhTW9kZWxEYXRhU291cmNlU3RyYXRlZ3kgfSBmcm9tICcuL3NxbC1tb2RlbC1kYXRhc291cmNlLXN0cmF0ZWd5JztcbmltcG9ydCB7IHBhcnNlRGF0YVNvdXJjZUNvbmZpZyB9IGZyb20gJy4vaW50ZXJuYWwvZGF0YS1zb3VyY2UtY29uZmlnJztcbmltcG9ydCB7IGdldFN0YWNrRm9yU2NvcGUsIHdhbGtBbmRQcm9jZXNzTm9kZXMgfSBmcm9tICcuL2ludGVybmFsL2NvbnN0cnVjdC10cmVlJztcblxuLyoqXG4gKiBMMyBDb25zdHJ1Y3Qgd2hpY2ggaW52b2tlcyB0aGUgQW1wbGlmeSBUcmFuc2Zvcm1lciBQYXR0ZXJuIG92ZXIgYW4gaW5wdXQgR3JhcGhxbCBTY2hlbWEuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBxdWlja2x5IGRlZmluZSBhcHBzeW5jIGFwaXMgd2hpY2ggc3VwcG9ydCBmdWxsIENSVUQrTGlzdCBhbmQgU3Vic2NyaXB0aW9ucywgcmVsYXRpb25zaGlwcyxcbiAqIGF1dGgsIHNlYXJjaCBvdmVyIGRhdGEsIHRoZSBhYmlsaXR5IHRvIGluamVjdCBjdXN0b20gYnVzaW5lc3MgbG9naWMgYW5kIHF1ZXJ5L211dGF0aW9uIG9wZXJhdGlvbnMsIGFuZCBjb25uZWN0IHRvIE1MIHNlcnZpY2VzLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWZlciB0byB0aGUgZG9jcyBsaW5rcyBiZWxvdzpcbiAqIERhdGEgTW9kZWxpbmcgLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvZGF0YS1tb2RlbGluZy9cbiAqIEF1dGhvcml6YXRpb24gLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvYXV0aG9yaXphdGlvbi1ydWxlcy9cbiAqIEN1c3RvbSBCdXNpbmVzcyBMb2dpYyAtIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9jdXN0b20tYnVzaW5lc3MtbG9naWMvXG4gKiBTZWFyY2ggLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvc2VhcmNoLWFuZC1yZXN1bHQtYWdncmVnYXRpb25zL1xuICogTUwgU2VydmljZXMgLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY29ubmVjdC10by1tYWNoaW5lLWxlYXJuaW5nLXNlcnZpY2VzL1xuICpcbiAqIEZvciBhIGZ1bGwgcmVmZXJlbmNlIG9mIHRoZSBzdXBwb3J0ZWQgY3VzdG9tIGdyYXBocWwgZGlyZWN0aXZlcyAtIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9kaXJlY3RpdmVzLXJlZmVyZW5jZS9cbiAqXG4gKiBUaGUgb3V0cHV0IG9mIHRoaXMgY29uc3RydWN0IGlzIGEgbWFwcGluZyBvZiBMMiBvciBMMSByZXNvdXJjZXMgZ2VuZXJhdGVkIGJ5IHRoZSB0cmFuc2Zvcm1lciwgd2hpY2ggZ2VuZXJhbGx5IGZvbGxvdyB0aGUgYWNjZXNzIHBhdHRlcm5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgIGNvbnN0IGFwaSA9IG5ldyBBbXBsaWZ5R3JhcGhRbEFwaSh0aGlzLCAnYXBpJywgeyA8cGFyYW1zPiB9KTtcbiAqICAgLy8gQWNjZXNzIEwyIHJlc291cmNlcyB1bmRlciBgLnJlc291cmNlc2BcbiAqICAgYXBpLnJlc291cmNlcy50YWJsZXNbXCJUb2RvXCJdLnRhYmxlQXJuO1xuICpcbiAqICAgLy8gQWNjZXNzIEwxIHJlc291cmNlcyB1bmRlciBgLnJlc291cmNlcy5jZm5SZXNvdXJjZXNgXG4gKiAgIGFwaS5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkueHJheUVuYWJsZWQgPSB0cnVlO1xuICogICBPYmplY3QudmFsdWVzKGFwaS5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmblRhYmxlcykuZm9yRWFjaCh0YWJsZSA9PiB7XG4gKiAgICAgdGFibGUucG9pbnRJblRpbWVSZWNvdmVyeVNwZWNpZmljYXRpb24gPSB7IHBvaW50SW5UaW1lUmVjb3ZlcnlFbmFibGVkOiBmYWxzZSB9O1xuICogICB9KTtcbiAqIGBgYFxuICogYHJlc291cmNlcy48UmVzb3VyY2VUeXBlPi48UmVzb3VyY2VOYW1lPmAgLSB5b3UgY2FuIHRoZW4gcGVyZm9ybSBhbnkgQ0RLIGFjdGlvbiBvbiB0aGVzZSByZXN1bHRpbmcgcmVzb3VyZWNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFtcGxpZnlHcmFwaHFsQXBpIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlZCBMMSBhbmQgTDIgQ0RLIHJlc291cmNlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZXM6IEFtcGxpZnlHcmFwaHFsQXBpUmVzb3VyY2VzO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZWQgYXNzZXRzIHJlcXVpcmVkIGZvciBjb2RlZ2VuIHN0ZXBzLiBQZXJzaXN0ZWQgaW4gb3JkZXIgdG8gcmVuZGVyIGFzIHBhcnQgb2YgdGhlIG91dHB1dCBzdHJhdGVneS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY29kZWdlbkFzc2V0czogQ29kZWdlbkFzc2V0cztcblxuICAvKipcbiAgICogUmVzb2x2ZXJzIGdlbmVyYXRlZCBieSB0aGUgdHJhbnNmb3JtIHByb2Nlc3MsIHBlcnNpc3RlZCBvbiB0aGUgc2lkZSBpbiBvcmRlciB0byBmYWNpbGl0YXRlIHB1bGxpbmcgYSBtYW5pZmVzdFxuICAgKiBmb3IgdGhlIHB1cnBvc2VzIG9mIGluc3BlY3RpbmcgYW5kIHByb2R1Y2luZyBvdmVycmlkZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2VuZXJhdGVkRnVuY3Rpb25TbG90czogRnVuY3Rpb25TbG90W107XG5cbiAgLyoqXG4gICAqIEdyYXBocWwgVVJMIEZvciB0aGUgZ2VuZXJhdGVkIEFQSS4gTWF5IGJlIGEgQ0RLIFRva2VuLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdyYXBocWxVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogUmVhbHRpbWUgVVJMIEZvciB0aGUgZ2VuZXJhdGVkIEFQSS4gTWF5IGJlIGEgQ0RLIFRva2VuLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlYWx0aW1lVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlZCBBcGkgS2V5IGlmIGdlbmVyYXRlZC4gTWF5IGJlIGEgQ0RLIFRva2VuLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZWQgQXBpIElkLiBNYXkgYmUgYSBDREsgVG9rZW4uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ29uZmxpY3QgcmVzb2x1dGlvbiBzZXR0aW5nXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZsaWN0UmVzb2x1dGlvbjogQ29uZmxpY3RSZXNvbHV0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBCZSB2ZXJ5IGNhcmVmdWwgZWRpdGluZyB0aGlzIHZhbHVlLiBUaGlzIGlzIHRoZSBzdHJpbmcgdGhhdCBpcyB1c2VkIHRvIGlkZW50aWZ5IGdyYXBocWwgc3RhY2tzIGluIEJJIG1ldHJpY3NcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhY2tUeXBlID0gJ2FwaS1BcHBTeW5jJztcblxuICAvKipcbiAgICogTmV3IEFtcGxpZnlHcmFwaHFsQXBpIGNvbnN0cnVjdCwgdGhpcyB3aWxsIGNyZWF0ZSBhbiBhcHBzeW5jIGFwaSB3aXRoIGF1dGhvcml6YXRpb24sIGEgc2NoZW1hLCBhbmQgYWxsIG5lY2Vzc2FyeSByZXNvbHZlcnMsIGZ1bmN0aW9ucyxcbiAgICogYW5kIGRhdGFzb3VyY2VzLlxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIHRvIGNyZWF0ZSB0aGlzIGNvbnN0cnVjdCB3aXRoaW4uXG4gICAqIEBwYXJhbSBpZCB0aGUgaWQgdG8gdXNlIGZvciB0aGlzIGFwaS5cbiAgICogQHBhcmFtIHByb3BzIHRoZSBwcm9wZXJ0aWVzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBnZW5lcmF0ZWQgYXBpLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFtcGxpZnlHcmFwaHFsQXBpUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdmFsaWRhdGVOb090aGVyQW1wbGlmeUdyYXBocWxBcGlJblN0YWNrKHRoaXMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgZGVmaW5pdGlvbixcbiAgICAgIGF1dGhvcml6YXRpb25Nb2RlcyxcbiAgICAgIGNvbmZsaWN0UmVzb2x1dGlvbixcbiAgICAgIGZ1bmN0aW9uU2xvdHMsXG4gICAgICB0cmFuc2Zvcm1lclBsdWdpbnMsXG4gICAgICBwcmVkaWN0aW9uc0J1Y2tldCxcbiAgICAgIHN0YWNrTWFwcGluZ3MsXG4gICAgICB0cmFuc2xhdGlvbkJlaGF2aW9yLFxuICAgICAgZnVuY3Rpb25OYW1lTWFwLFxuICAgICAgb3V0cHV0U3RvcmFnZVN0cmF0ZWd5LFxuICAgIH0gPSBwcm9wcztcblxuICAgIG5ldyBBdHRyaWJ1dGlvbk1ldGFkYXRhU3RvcmFnZSgpLnN0b3JlQXR0cmlidXRpb25NZXRhZGF0YShTdGFjay5vZihzY29wZSksIHRoaXMuc3RhY2tUeXBlLCBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAncGFja2FnZS5qc29uJykpO1xuXG4gICAgY29uc3QgeyBhdXRoQ29uZmlnLCBhdXRoU3ludGhQYXJhbWV0ZXJzIH0gPSBjb252ZXJ0QXV0aG9yaXphdGlvbk1vZGVzVG9UcmFuc2Zvcm1lckF1dGhDb25maWcoYXV0aG9yaXphdGlvbk1vZGVzKTtcblxuICAgIHZhbGlkYXRlRnVuY3Rpb25TbG90cyhmdW5jdGlvblNsb3RzID8/IFtdKTtcbiAgICBjb25zdCBzZXBhcmF0ZWRGdW5jdGlvblNsb3RzID0gc2VwYXJhdGVTbG90cyhbLi4uKGZ1bmN0aW9uU2xvdHMgPz8gW10pLCAuLi5kZWZpbml0aW9uLmZ1bmN0aW9uU2xvdHNdKTtcblxuICAgIC8vIEFsbG93IGFtcGxpZnlFbnZpcm9ubWVudE5hbWUgdG8gYmUgcmV0cmlldmUgZnJvbSBjb250ZXh0LCBhbmQgdXNlIHZhbHVlICdOT05FJyBpZiBubyB2YWx1ZSBjYW4gYmUgZm91bmQuXG4gICAgLy8gYW1wbGlmeUVudmlyb25tZW50TmFtZSBpcyByZXF1aXJlZCBmb3IgbG9naWNhbCBpZCBzdWZmaXhpbmcsIGFzIHdlbGwgYXMgRXhwb3J0cyBmcm9tIHRoZSBuZXN0ZWQgc3RhY2tzLlxuICAgIC8vIEFsbG93IGV4cG9ydCBzbyBjdXN0b21lcnMgY2FuIHJldXNlIHRoZSBlbnYgaW4gdGhlaXIgb3duIHJlZmVyZW5jZXMgZG93bnN0cmVhbS5cbiAgICBjb25zdCBhbXBsaWZ5RW52aXJvbm1lbnROYW1lID0gdGhpcy5ub2RlLnRyeUdldENvbnRleHQoJ2FtcGxpZnlFbnZpcm9ubWVudE5hbWUnKSA/PyAnTk9ORSc7XG4gICAgaWYgKGFtcGxpZnlFbnZpcm9ubWVudE5hbWUubGVuZ3RoID4gOCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBvciBjZGsgLS1jb250ZXh0IGVudiBtdXN0IGhhdmUgYSBsZW5ndGggPD0gOCwgZm91bmQgJHthbXBsaWZ5RW52aXJvbm1lbnROYW1lfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0TWFuYWdlciA9IG5ldyBBc3NldE1hbmFnZXIoKTtcblxuICAgIGxldCBleGVjdXRlVHJhbnNmb3JtQ29uZmlnOiBFeGVjdXRlVHJhbnNmb3JtQ29uZmlnID0ge1xuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICBuZXN0ZWRTdGFja1Byb3ZpZGVyOiB7XG4gICAgICAgIHByb3ZpZGU6IChuZXN0ZWRTdGFja1Njb3BlOiBDb25zdHJ1Y3QsIG5hbWU6IHN0cmluZykgPT4gbmV3IE5lc3RlZFN0YWNrKG5lc3RlZFN0YWNrU2NvcGUsIG5hbWUpLFxuICAgICAgfSxcbiAgICAgIGFzc2V0UHJvdmlkZXI6IHtcbiAgICAgICAgcHJvdmlkZTogKGFzc2V0U2NvcGU6IENvbnN0cnVjdCwgYXNzZXRJZDogc3RyaW5nLCBhc3NldFByb3BzOiBBc3NldFByb3BzKSA9PlxuICAgICAgICAgIG5ldyBBc3NldChhc3NldFNjb3BlLCBhc3NldElkLCB7IHBhdGg6IGFzc2V0TWFuYWdlci5hZGRBc3NldChhc3NldFByb3BzLmZpbGVOYW1lLCBhc3NldFByb3BzLmZpbGVDb250ZW50KSB9KSxcbiAgICAgIH0sXG4gICAgICBzeW50aFBhcmFtZXRlcnM6IHtcbiAgICAgICAgYW1wbGlmeUVudmlyb25tZW50TmFtZTogYW1wbGlmeUVudmlyb25tZW50TmFtZSxcbiAgICAgICAgYXBpTmFtZTogcHJvcHMuYXBpTmFtZSA/PyBpZCxcbiAgICAgICAgLi4uYXV0aFN5bnRoUGFyYW1ldGVycyxcbiAgICAgIH0sXG4gICAgICBzY2hlbWE6IGRlZmluaXRpb24uc2NoZW1hLFxuICAgICAgdXNlckRlZmluZWRTbG90czogcGFyc2VVc2VyRGVmaW5lZFNsb3RzKHNlcGFyYXRlZEZ1bmN0aW9uU2xvdHMpLFxuICAgICAgdHJhbnNmb3JtZXJzRmFjdG9yeUFyZ3M6IHtcbiAgICAgICAgY3VzdG9tVHJhbnNmb3JtZXJzOiB0cmFuc2Zvcm1lclBsdWdpbnMgPz8gW10sXG4gICAgICAgIC4uLihwcmVkaWN0aW9uc0J1Y2tldCA/IHsgc3RvcmFnZUNvbmZpZzogeyBidWNrZXROYW1lOiBwcmVkaWN0aW9uc0J1Y2tldC5idWNrZXROYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgZnVuY3Rpb25OYW1lTWFwOiB7XG4gICAgICAgICAgLi4uZGVmaW5pdGlvbi5yZWZlcmVuY2VkTGFtYmRhRnVuY3Rpb25zLFxuICAgICAgICAgIC4uLmZ1bmN0aW9uTmFtZU1hcCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhdXRoQ29uZmlnLFxuICAgICAgc3RhY2tNYXBwaW5nOiBzdGFja01hcHBpbmdzID8/IHt9LFxuICAgICAgcmVzb2x2ZXJDb25maWc6IGNvbmZsaWN0UmVzb2x1dGlvbiA/IGNvbnZlcnRUb1Jlc29sdmVyQ29uZmlnKGNvbmZsaWN0UmVzb2x1dGlvbikgOiB1bmRlZmluZWQsXG4gICAgICB0cmFuc2Zvcm1QYXJhbWV0ZXJzOiB7XG4gICAgICAgIC4uLmRlZmF1bHRUcmFuc2xhdGlvbkJlaGF2aW9yLFxuICAgICAgICAuLi4odHJhbnNsYXRpb25CZWhhdmlvciA/PyB7fSksXG4gICAgICB9LFxuXG4gICAgICAvLyBBZGRzIGEgbW9kZWxUb0RhdGFTb3VyY2VNYXAgZmllbGQvdmFsdWVcbiAgICAgIC4uLnBhcnNlRGF0YVNvdXJjZUNvbmZpZyhkZWZpbml0aW9uLmRhdGFTb3VyY2VTdHJhdGVnaWVzKSxcbiAgICB9O1xuXG4gICAgLy8gVE9ETzogVXBkYXRlIHRoaXMgdG8gc3VwcG9ydCBtdWx0aXBsZSBkZWZpbml0aW9uczsgcmlnaHQgbm93IHdlIGFzc3VtZSBvbmx5IG9uZSBTUUwgZGF0YSBzb3VyY2UgdHlwZVxuICAgIGZvciAoY29uc3Qgc3RyYXRlZ3kgb2YgT2JqZWN0LnZhbHVlcyhkZWZpbml0aW9uLmRhdGFTb3VyY2VTdHJhdGVnaWVzKSkge1xuICAgICAgaWYgKGlzU1FMTGFtYmRhTW9kZWxEYXRhU291cmNlU3RyYXRlZ3koc3RyYXRlZ3kpKSB7XG4gICAgICAgIGV4ZWN1dGVUcmFuc2Zvcm1Db25maWcgPSB0aGlzLmV4dGVuZFRyYW5zZm9ybUNvbmZpZyhleGVjdXRlVHJhbnNmb3JtQ29uZmlnLCBzdHJhdGVneSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGV4ZWN1dGVUcmFuc2Zvcm0oZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyk7XG5cbiAgICB0aGlzLmNvZGVnZW5Bc3NldHMgPSBuZXcgQ29kZWdlbkFzc2V0cyh0aGlzLCAnQW1wbGlmeUNvZGVnZW5Bc3NldHMnLCB7IG1vZGVsU2NoZW1hOiBkZWZpbml0aW9uLnNjaGVtYSB9KTtcblxuICAgIHRoaXMucmVzb3VyY2VzID0gZ2V0R2VuZXJhdGVkUmVzb3VyY2VzKHRoaXMpO1xuICAgIHRoaXMuY29uZmxpY3RSZXNvbHV0aW9uID0gY29uZmxpY3RSZXNvbHV0aW9uO1xuICAgIHRoaXMuZ2VuZXJhdGVkRnVuY3Rpb25TbG90cyA9IGdldEdlbmVyYXRlZEZ1bmN0aW9uU2xvdHMoYXNzZXRNYW5hZ2VyLnJlc29sdmVyQXNzZXRzKTtcbiAgICB0aGlzLnN0b3JlT3V0cHV0KG91dHB1dFN0b3JhZ2VTdHJhdGVneSk7XG5cbiAgICB0aGlzLmFwaUlkID0gdGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkuYXR0ckFwaUlkO1xuICAgIHRoaXMuZ3JhcGhxbFVybCA9IHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5HcmFwaHFsQXBpLmF0dHJHcmFwaFFsVXJsO1xuICAgIHRoaXMucmVhbHRpbWVVcmwgPSB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuR3JhcGhxbEFwaS5hdHRyUmVhbHRpbWVVcmw7XG4gICAgdGhpcy5hcGlLZXkgPSB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuQXBpS2V5Py5hdHRyQXBpS2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZHMgZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyB3aXRoIGZpZWxkcyBmb3IgcHJvdmlzaW9uaW5nIGEgU1FMIExhbWJkYVxuICAgKiBAcGFyYW0gZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyB0aGUgZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyB0byBleHRlbmRcbiAgICogQHBhcmFtIGRhdGFTb3VyY2VEZWZpbml0aW9uIHRoZSBTUUxMYW1iZGFNb2RlbERhdGFTb3VyY2VTdHJhdGVneSBjb250YWluaW5nIHRoZSBTUUwgY29ubmVjdGlvbiB2YWx1ZXMgdG8gYWRkIHRvIHRoZSB0cmFuc2Zvcm0gY29uZmlnXG4gICAqIEByZXR1cm5zIHRoZSBleHRlbmRlZCBjb25maWd1cmF0aW9uIHRoYXQgaW5jbHVkZXMgU1FMIERCIGNvbm5lY3Rpb24gaW5mb3JtYXRpb25cbiAgICovXG4gIHByaXZhdGUgZXh0ZW5kVHJhbnNmb3JtQ29uZmlnKFxuICAgIGV4ZWN1dGVUcmFuc2Zvcm1Db25maWc6IEV4ZWN1dGVUcmFuc2Zvcm1Db25maWcsXG4gICAgc3RyYXRlZ3k6IFNRTExhbWJkYU1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5LFxuICApOiBFeGVjdXRlVHJhbnNmb3JtQ29uZmlnIHtcbiAgICBjb25zdCBleHRlbmRlZENvbmZpZyA9IHsgLi4uZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyB9O1xuICAgIGlmIChzdHJhdGVneS5jdXN0b21TcWxTdGF0ZW1lbnRzKSB7XG4gICAgICBleHRlbmRlZENvbmZpZy5jdXN0b21RdWVyaWVzID0gbmV3IE1hcChPYmplY3QuZW50cmllcyhzdHJhdGVneS5jdXN0b21TcWxTdGF0ZW1lbnRzKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGJTZWNyZXRzOiBNYXA8c3RyaW5nLCBSRFNDb25uZWN0aW9uU2VjcmV0cz4gPSBuZXcgTWFwKCk7XG4gICAgbGV0IGRiU2VjcmV0RGJUeXBlS2V5OiBzdHJpbmc7XG4gICAgc3dpdGNoIChzdHJhdGVneS5kYlR5cGUpIHtcbiAgICAgIGNhc2UgJ01ZU1FMJzpcbiAgICAgICAgZGJTZWNyZXREYlR5cGVLZXkgPSBNWVNRTF9EQl9UWVBFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1BPU1RHUkVTJzpcbiAgICAgICAgZGJTZWNyZXREYlR5cGVLZXkgPSBQT1NUR1JFU19EQl9UWVBFO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgYmluZGluZyB0eXBlICR7c3RyYXRlZ3kuZGJUeXBlfWApO1xuICAgIH1cbiAgICBkYlNlY3JldHMuc2V0KGRiU2VjcmV0RGJUeXBlS2V5LCB7XG4gICAgICB1c2VybmFtZTogc3RyYXRlZ3kuZGJDb25uZWN0aW9uQ29uZmlnLnVzZXJuYW1lU3NtUGF0aCxcbiAgICAgIHBhc3N3b3JkOiBzdHJhdGVneS5kYkNvbm5lY3Rpb25Db25maWcucGFzc3dvcmRTc21QYXRoLFxuICAgICAgaG9zdDogc3RyYXRlZ3kuZGJDb25uZWN0aW9uQ29uZmlnLmhvc3RuYW1lU3NtUGF0aCxcbiAgICAgIC8vIENhc3QgdGhyb3VnaCBgYW55YCB0byBhbGxvdyB0aGUgU1NNIFBhdGggc3RyaW5nIHRvIGJlIHVzZWQgb24gYSB0eXBlIGV4cGVjdGluZyBhIG51bWJlci4gVGhpcyBmbG93IGV4cGVjdHMgdGhlIGluY29taW5nIHZhbHVlIHRvIGJlXG4gICAgICAvLyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBTU00gcGF0aC5cbiAgICAgIHBvcnQ6IHN0cmF0ZWd5LmRiQ29ubmVjdGlvbkNvbmZpZy5wb3J0U3NtUGF0aCBhcyBhbnksXG4gICAgICBkYXRhYmFzZTogc3RyYXRlZ3kuZGJDb25uZWN0aW9uQ29uZmlnLmRhdGFiYXNlTmFtZVNzbVBhdGgsXG4gICAgfSk7XG4gICAgZXh0ZW5kZWRDb25maWcuZGF0YXNvdXJjZVNlY3JldFBhcmFtZXRlckxvY2F0aW9ucyA9IGRiU2VjcmV0cztcblxuICAgIGlmIChzdHJhdGVneS52cGNDb25maWd1cmF0aW9uKSB7XG4gICAgICBjb25zdCBzdWJuZXRBdmFpbGFiaWxpdHlab25lQ29uZmlnID0gc3RyYXRlZ3kudnBjQ29uZmlndXJhdGlvbi5zdWJuZXRBdmFpbGFiaWxpdHlab25lQ29uZmlnLm1hcChcbiAgICAgICAgKHNheik6IHsgc3VibmV0SWQ6IHN0cmluZzsgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nIH0gPT4gKHtcbiAgICAgICAgICBzdWJuZXRJZDogc2F6LnN1Ym5ldElkLFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IHNhei5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgICBleHRlbmRlZENvbmZpZy5zcWxMYW1iZGFWcGNDb25maWcgPSB7XG4gICAgICAgIHZwY0lkOiBzdHJhdGVneS52cGNDb25maWd1cmF0aW9uLnZwY0lkLFxuICAgICAgICBzZWN1cml0eUdyb3VwSWRzOiBzdHJhdGVneS52cGNDb25maWd1cmF0aW9uLnNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICAgIHN1Ym5ldEF2YWlsYWJpbGl0eVpvbmVDb25maWcsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChzdHJhdGVneS5zcWxMYW1iZGFQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnKSB7XG4gICAgICBleHRlbmRlZENvbmZpZy5zcWxMYW1iZGFQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnID0gc3RyYXRlZ3kuc3FsTGFtYmRhUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZztcbiAgICB9XG5cbiAgICByZXR1cm4gZXh0ZW5kZWRDb25maWc7XG4gIH1cblxuICAvKipcbiAgICogU3RvcmVzIGdyYXBocWwgYXBpIG91dHB1dCB0byBiZSB1c2VkIGZvciBjbGllbnQgY29uZmlnIGdlbmVyYXRpb25cbiAgICogQHBhcmFtIG91dHB1dFN0b3JhZ2VTdHJhdGVneSBTdHJhdGVneSB0byBzdG9yZSBjb25zdHJ1Y3Qgb3V0cHV0cy4gSWYgbm8gc3RyYXRlZ3kgaXMgcHJvdmlkZWQgYSBkZWZhdWx0IHN0cmF0ZWd5IHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHByaXZhdGUgc3RvcmVPdXRwdXQoXG4gICAgb3V0cHV0U3RvcmFnZVN0cmF0ZWd5OiBJQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSA9IG5ldyBTdGFja01ldGFkYXRhQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneShTdGFjay5vZih0aGlzKSksXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3Qgb3V0cHV0OiBHcmFwaHFsT3V0cHV0ID0ge1xuICAgICAgdmVyc2lvbjogJzEnLFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICBhd3NBcHBzeW5jQXBpSWQ6IHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5HcmFwaHFsQXBpLmF0dHJBcGlJZCxcbiAgICAgICAgYXdzQXBwc3luY0FwaUVuZHBvaW50OiB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuR3JhcGhxbEFwaS5hdHRyR3JhcGhRbFVybCxcbiAgICAgICAgYXdzQXBwc3luY0F1dGhlbnRpY2F0aW9uVHlwZTogdGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkuYXV0aGVudGljYXRpb25UeXBlIGFzIEF3c0FwcHN5bmNBdXRoZW50aWNhdGlvblR5cGUsXG4gICAgICAgIGF3c0FwcHN5bmNSZWdpb246IHN0YWNrLnJlZ2lvbixcbiAgICAgICAgYW1wbGlmeUFwaU1vZGVsU2NoZW1hUzNVcmk6IHRoaXMuY29kZWdlbkFzc2V0cy5tb2RlbFNjaGVtYVMzVXJpLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5BcGlLZXkpIHtcbiAgICAgIG91dHB1dC5wYXlsb2FkLmF3c0FwcHN5bmNBcGlLZXkgPSB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuQXBpS2V5LmF0dHJBcGlLZXk7XG4gICAgfVxuXG4gICAgY29uc3QgYWRkaXRpb25hbEF1dGhUeXBlcyA9IGdldEFkZGl0aW9uYWxBdXRoZW50aWNhdGlvblR5cGVzKHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5HcmFwaHFsQXBpKTtcbiAgICBpZiAoYWRkaXRpb25hbEF1dGhUeXBlcykge1xuICAgICAgb3V0cHV0LnBheWxvYWQuYXdzQXBwc3luY0FkZGl0aW9uYWxBdXRoZW50aWNhdGlvblR5cGVzID0gYWRkaXRpb25hbEF1dGhUeXBlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25mbGljdFJlc29sdXRpb24/LnByb2plY3Q/LmhhbmRsZXJUeXBlKSB7XG4gICAgICBvdXRwdXQucGF5bG9hZC5hd3NBcHBzeW5jQ29uZmxpY3RSZXNvbHV0aW9uTW9kZSA9IHRoaXMuY29uZmxpY3RSZXNvbHV0aW9uPy5wcm9qZWN0Py5oYW5kbGVyVHlwZTtcbiAgICB9XG5cbiAgICBvdXRwdXRTdG9yYWdlU3RyYXRlZ3kuYWRkQmFja2VuZE91dHB1dEVudHJ5KGdyYXBocWxPdXRwdXRLZXksIG91dHB1dCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZvbGxvd2luZyBhcmUgcHJveHkgbWV0aG9kcyB0byB0aGUgTDIgSUdyYXBocWxBcGkgaW50ZXJmYWNlLCB0byBmYWNpbGl0YXRlIGVhc2llciB1c2Ugb2YgdGhlIEwzIHdpdGhvdXQgbmVlZGluZ1xuICAgKiB0byBhY2Nlc3MgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2VzLlxuICAgKi9cblxuICAvKipcbiAgICogQWRkIGEgbmV3IER5bmFtb0RCIGRhdGEgc291cmNlIHRvIHRoaXMgQVBJLiBUaGlzIGlzIGEgcHJveHkgbWV0aG9kIHRvIHRoZSBMMiBHcmFwaHFsQXBpIENvbnN0cnVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBkYXRhIHNvdXJjZSdzIGlkLlxuICAgKiBAcGFyYW0gdGFibGUgVGhlIER5bmFtb0RCIHRhYmxlIGJhY2tpbmcgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEByZXR1cm5zIHRoZSBnZW5lcmF0ZWQgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkRHluYW1vRGJEYXRhU291cmNlKGlkOiBzdHJpbmcsIHRhYmxlOiBJVGFibGUsIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IER5bmFtb0RiRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkRHluYW1vRGJEYXRhU291cmNlKGlkLCB0YWJsZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IGVsYXN0aWNzZWFyY2ggZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGFkZE9wZW5TZWFyY2hEYXRhU291cmNlYFxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBkb21haW4gVGhlIGVsYXN0aWNzZWFyY2ggZG9tYWluIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGRFbGFzdGljc2VhcmNoRGF0YVNvdXJjZShpZDogc3RyaW5nLCBkb21haW46IElEb21haW4sIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IEVsYXN0aWNzZWFyY2hEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGRFbGFzdGljc2VhcmNoRGF0YVNvdXJjZShpZCwgZG9tYWluLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gRXZlbnRCcmlkZ2UgZGF0YSBzb3VyY2UgdG8gdGhpcyBhcGkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBldmVudEJ1cyBUaGUgRXZlbnRCcmlkZ2UgRXZlbnRCdXMgb24gd2hpY2ggdG8gcHV0IGV2ZW50cy5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkRXZlbnRCcmlkZ2VEYXRhU291cmNlKGlkOiBzdHJpbmcsIGV2ZW50QnVzOiBJRXZlbnRCdXMsIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IEV2ZW50QnJpZGdlRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkRXZlbnRCcmlkZ2VEYXRhU291cmNlKGlkLCBldmVudEJ1cywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IGh0dHAgZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBlbmRwb2ludCBUaGUgaHR0cCBlbmRwb2ludC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEByZXR1cm5zIHRoZSBnZW5lcmF0ZWQgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkSHR0cERhdGFTb3VyY2UoaWQ6IHN0cmluZywgZW5kcG9pbnQ6IHN0cmluZywgb3B0aW9ucz86IEh0dHBEYXRhU291cmNlT3B0aW9ucyk6IEh0dHBEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGRIdHRwRGF0YVNvdXJjZShpZCwgZW5kcG9pbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBMYW1iZGEgZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBsYW1iZGFGdW5jdGlvbiBUaGUgTGFtYmRhIGZ1bmN0aW9uIHRvIGNhbGwgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGRMYW1iZGFEYXRhU291cmNlKGlkOiBzdHJpbmcsIGxhbWJkYUZ1bmN0aW9uOiBJRnVuY3Rpb24sIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IExhbWJkYURhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLmFkZExhbWJkYURhdGFTb3VyY2UoaWQsIGxhbWJkYUZ1bmN0aW9uLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZHVtbXkgZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBVc2VmdWwgZm9yIHBpcGVsaW5lIHJlc29sdmVycyBhbmQgZm9yIGJhY2tlbmQgY2hhbmdlcyB0aGF0IGRvbid0IHJlcXVpcmUgYSBkYXRhIHNvdXJjZS5cbiAgICogQHBhcmFtIGlkIFRoZSBkYXRhIHNvdXJjZSdzIGlkLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGROb25lRGF0YVNvdXJjZShpZDogc3RyaW5nLCBvcHRpb25zPzogRGF0YVNvdXJjZU9wdGlvbnMpOiBOb25lRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkTm9uZURhdGFTb3VyY2UoaWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIGRkIGEgbmV3IE9wZW5TZWFyY2ggZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBkb21haW4gVGhlIE9wZW5TZWFyY2ggZG9tYWluIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGRPcGVuU2VhcmNoRGF0YVNvdXJjZShpZDogc3RyaW5nLCBkb21haW46IElPcGVuU2VhcmNoRG9tYWluLCBvcHRpb25zPzogRGF0YVNvdXJjZU9wdGlvbnMpOiBPcGVuU2VhcmNoRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkT3BlblNlYXJjaERhdGFTb3VyY2UoaWQsIGRvbWFpbiwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IFJkcyBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIHNlcnZlcmxlc3NDbHVzdGVyIFRoZSBzZXJ2ZXJsZXNzIGNsdXN0ZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gc2VjcmV0U3RvcmUgVGhlIHNlY3JldCBzdG9yZSB0aGF0IGNvbnRhaW5zIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZm9yIHRoZSBzZXJ2ZXJsZXNzIGNsdXN0ZXIuXG4gICAqIEBwYXJhbSBkYXRhYmFzZU5hbWUgVGhlIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGRhdGFiYXNlIHRvIHVzZSB3aXRoaW4gdGhlIGNsdXN0ZXIuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGFkZFJkc0RhdGFTb3VyY2UoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBzZXJ2ZXJsZXNzQ2x1c3RlcjogSVNlcnZlcmxlc3NDbHVzdGVyLFxuICAgIHNlY3JldFN0b3JlOiBJU2VjcmV0LFxuICAgIGRhdGFiYXNlTmFtZT86IHN0cmluZyxcbiAgICBvcHRpb25zPzogRGF0YVNvdXJjZU9wdGlvbnMsXG4gICk6IFJkc0RhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLmFkZFJkc0RhdGFTb3VyY2UoaWQsIHNlcnZlcmxlc3NDbHVzdGVyLCBzZWNyZXRTdG9yZSwgZGF0YWJhc2VOYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSByZXNvbHZlciB0byB0aGUgYXBpLiBUaGlzIGlzIGEgcHJveHkgbWV0aG9kIHRvIHRoZSBMMiBHcmFwaHFsQXBpIENvbnN0cnVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSByZXNvbHZlcidzIGlkLlxuICAgKiBAcGFyYW0gcHJvcHMgdGhlIHJlc29sdmVyIHByb3BlcnRpZXMuXG4gICAqIEByZXR1cm5zIHRoZSBnZW5lcmF0ZWQgcmVzb2x2ZXIuXG4gICAqL1xuICBwdWJsaWMgYWRkUmVzb2x2ZXIoaWQ6IHN0cmluZywgcHJvcHM6IEV4dGVuZGVkUmVzb2x2ZXJQcm9wcyk6IFJlc29sdmVyIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5jcmVhdGVSZXNvbHZlcihpZCwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBhcHBzeW5jIGZ1bmN0aW9uIHRvIHRoZSBhcGkuXG4gICAqIEBwYXJhbSBpZCB0aGUgZnVuY3Rpb24ncyBpZC5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBhcHBzeW5jIGZ1bmN0aW9uLlxuICAgKi9cbiAgcHVibGljIGFkZEZ1bmN0aW9uKGlkOiBzdHJpbmcsIHByb3BzOiBBZGRGdW5jdGlvblByb3BzKTogQXBwc3luY0Z1bmN0aW9uIHtcbiAgICByZXR1cm4gbmV3IEFwcHN5bmNGdW5jdGlvbih0aGlzLCBpZCwge1xuICAgICAgYXBpOiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiB0aGUgcHJvdmlkZWQgc2NvcGUsIHdhbGsgdGhlIG5vZGUgdHJlZSwgYW5kIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbnkgb3RoZXIgQW1wbGlmeUdyYXBocWxBcGkgY29uc3RydWN0c1xuICogYXJlIGZvdW5kIGluIHRoZSBzdGFjay5cbiAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgdGhpcyBjb25zdHJ1Y3QgaXMgY3JlYXRlZCBpbi5cbiAqL1xuY29uc3QgdmFsaWRhdGVOb090aGVyQW1wbGlmeUdyYXBocWxBcGlJblN0YWNrID0gKHNjb3BlOiBDb25zdHJ1Y3QpOiB2b2lkID0+IHtcbiAgY29uc3Qgcm9vdFN0YWNrID0gZ2V0U3RhY2tGb3JTY29wZShzY29wZSwgdHJ1ZSk7XG5cbiAgbGV0IHdhc090aGVyQW1wbGlmeUdyYXBobEFwaUZvdW5kID0gZmFsc2U7XG4gIHdhbGtBbmRQcm9jZXNzTm9kZXMocm9vdFN0YWNrLCAobm9kZTogQ29uc3RydWN0KSA9PiB7XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBBbXBsaWZ5R3JhcGhxbEFwaSAmJiBzY29wZSAhPT0gbm9kZSkge1xuICAgICAgd2FzT3RoZXJBbXBsaWZ5R3JhcGhsQXBpRm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHdhc090aGVyQW1wbGlmeUdyYXBobEFwaUZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdPbmx5IG9uZSBBbXBsaWZ5R3JhcGhxbEFwaSBpcyBleHBlY3RlZCBpbiBhIHN0YWNrJyk7XG4gIH1cbn07XG4iXX0=
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1ncmFwaHFsLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hbXBsaWZ5LWdyYXBocWwtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDJDQUF1QztBQUN2QywwRUFBNEY7QUFDNUYsNkNBQWlEO0FBQ2pELDZEQUFrRDtBQUVsRCxnRkFBNEg7QUFDNUgsZ0ZBQXVFO0FBRXZFLHlEQWNpQztBQVFqQyxvRkFBOEc7QUFDOUcsc0VBQTRHO0FBUzVHLHlDQVNvQjtBQUNwQixzRUFBaUk7QUFDakksOERBQWtGO0FBRWxGLG1GQUFxRjtBQUVyRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLHNCQUFTO0lBK0M5Qzs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFibkI7O1dBRUc7UUFDYyxjQUFTLEdBQUcsYUFBYSxDQUFDO1FBWXpDLHVDQUF1QyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlDLE1BQU0sRUFDSixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixxQkFBcUIsR0FDdEIsR0FBRyxLQUFLLENBQUM7UUFFVixJQUFJLG1EQUEwQixFQUFFLENBQUMsd0JBQXdCLENBQUMsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUV2SSxNQUFNLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsSUFBQSwy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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBFeGVjdXRlVHJhbnNmb3JtQ29uZmlnLCBleGVjdXRlVHJhbnNmb3JtIH0gZnJvbSAnQGF3cy1hbXBsaWZ5L2dyYXBocWwtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgTmVzdGVkU3RhY2ssIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQXNzZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB7IEFzc2V0UHJvcHMgfSBmcm9tICdAYXdzLWFtcGxpZnkvZ3JhcGhxbC10cmFuc2Zvcm1lci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IEF0dHJpYnV0aW9uTWV0YWRhdGFTdG9yYWdlLCBTdGFja01ldGFkYXRhQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9iYWNrZW5kLW91dHB1dC1zdG9yYWdlJztcbmltcG9ydCB7IGdyYXBocWxPdXRwdXRLZXkgfSBmcm9tICdAYXdzLWFtcGxpZnkvYmFja2VuZC1vdXRwdXQtc2NoZW1hcyc7XG5pbXBvcnQgdHlwZSB7IEdyYXBocWxPdXRwdXQsIEF3c0FwcHN5bmNBdXRoZW50aWNhdGlvblR5cGUgfSBmcm9tICdAYXdzLWFtcGxpZnkvYmFja2VuZC1vdXRwdXQtc2NoZW1hcyc7XG5pbXBvcnQge1xuICBBcHBzeW5jRnVuY3Rpb24sXG4gIERhdGFTb3VyY2VPcHRpb25zLFxuICBEeW5hbW9EYkRhdGFTb3VyY2UsXG4gIEVsYXN0aWNzZWFyY2hEYXRhU291cmNlLFxuICBFdmVudEJyaWRnZURhdGFTb3VyY2UsXG4gIEV4dGVuZGVkUmVzb2x2ZXJQcm9wcyxcbiAgSHR0cERhdGFTb3VyY2UsXG4gIEh0dHBEYXRhU291cmNlT3B0aW9ucyxcbiAgTGFtYmRhRGF0YVNvdXJjZSxcbiAgTm9uZURhdGFTb3VyY2UsXG4gIE9wZW5TZWFyY2hEYXRhU291cmNlLFxuICBSZHNEYXRhU291cmNlLFxuICBSZXNvbHZlcixcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwcHN5bmMnO1xuaW1wb3J0IHsgSVRhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiJztcbmltcG9ydCB7IElEb21haW4gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY3NlYXJjaCc7XG5pbXBvcnQgeyBJRG9tYWluIGFzIElPcGVuU2VhcmNoRG9tYWluIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLW9wZW5zZWFyY2hzZXJ2aWNlJztcbmltcG9ydCB7IElFdmVudEJ1cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgSUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBJU2VydmVybGVzc0NsdXN0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB7IElTZWNyZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHsgTVlTUUxfREJfVFlQRSwgUE9TVEdSRVNfREJfVFlQRSwgUkRTQ29ubmVjdGlvblNlY3JldHMgfSBmcm9tICdAYXdzLWFtcGxpZnkvZ3JhcGhxbC10cmFuc2Zvcm1lci1jb3JlJztcbmltcG9ydCB7IHBhcnNlVXNlckRlZmluZWRTbG90cywgdmFsaWRhdGVGdW5jdGlvblNsb3RzLCBzZXBhcmF0ZVNsb3RzIH0gZnJvbSAnLi9pbnRlcm5hbC91c2VyLWRlZmluZWQtc2xvdHMnO1xuaW1wb3J0IHR5cGUge1xuICBBbXBsaWZ5R3JhcGhxbEFwaVJlc291cmNlcyxcbiAgQW1wbGlmeUdyYXBocWxBcGlQcm9wcyxcbiAgRnVuY3Rpb25TbG90LFxuICBJQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSxcbiAgQWRkRnVuY3Rpb25Qcm9wcyxcbiAgQ29uZmxpY3RSZXNvbHV0aW9uLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIGNvbnZlcnRBdXRob3JpemF0aW9uTW9kZXNUb1RyYW5zZm9ybWVyQXV0aENvbmZpZyxcbiAgY29udmVydFRvUmVzb2x2ZXJDb25maWcsXG4gIGRlZmF1bHRUcmFuc2xhdGlvbkJlaGF2aW9yLFxuICBBc3NldE1hbmFnZXIsXG4gIGdldEdlbmVyYXRlZFJlc291cmNlcyxcbiAgZ2V0R2VuZXJhdGVkRnVuY3Rpb25TbG90cyxcbiAgQ29kZWdlbkFzc2V0cyxcbiAgZ2V0QWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uVHlwZXMsXG59IGZyb20gJy4vaW50ZXJuYWwnO1xuaW1wb3J0IHsgbWFwSW50ZXJmYWNlQ3VzdG9tU3FsU3RyYXRlZ2llc1RvSW1wbGVtZW50YXRpb25TdHJhdGVnaWVzLCBwYXJzZURhdGFTb3VyY2VDb25maWcgfSBmcm9tICcuL2ludGVybmFsL2RhdGEtc291cmNlLWNvbmZpZyc7XG5pbXBvcnQgeyBnZXRTdGFja0ZvclNjb3BlLCB3YWxrQW5kUHJvY2Vzc05vZGVzIH0gZnJvbSAnLi9pbnRlcm5hbC9jb25zdHJ1Y3QtdHJlZSc7XG5pbXBvcnQgeyBTUUxMYW1iZGFNb2RlbERhdGFTb3VyY2VTdHJhdGVneSB9IGZyb20gJy4vbW9kZWwtZGF0YXNvdXJjZS1zdHJhdGVneSc7XG5pbXBvcnQgeyBpc1NRTExhbWJkYU1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5IH0gZnJvbSAnLi9zcWwtbW9kZWwtZGF0YXNvdXJjZS1zdHJhdGVneSc7XG5cbi8qKlxuICogTDMgQ29uc3RydWN0IHdoaWNoIGludm9rZXMgdGhlIEFtcGxpZnkgVHJhbnNmb3JtZXIgUGF0dGVybiBvdmVyIGFuIGlucHV0IEdyYXBocWwgU2NoZW1hLlxuICpcbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcXVpY2tseSBkZWZpbmUgYXBwc3luYyBhcGlzIHdoaWNoIHN1cHBvcnQgZnVsbCBDUlVEK0xpc3QgYW5kIFN1YnNjcmlwdGlvbnMsIHJlbGF0aW9uc2hpcHMsXG4gKiBhdXRoLCBzZWFyY2ggb3ZlciBkYXRhLCB0aGUgYWJpbGl0eSB0byBpbmplY3QgY3VzdG9tIGJ1c2luZXNzIGxvZ2ljIGFuZCBxdWVyeS9tdXRhdGlvbiBvcGVyYXRpb25zLCBhbmQgY29ubmVjdCB0byBNTCBzZXJ2aWNlcy5cbiAqXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8gdGhlIGRvY3MgbGlua3MgYmVsb3c6XG4gKiBEYXRhIE1vZGVsaW5nIC0gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9ncmFwaHFsL2RhdGEtbW9kZWxpbmcvXG4gKiBBdXRob3JpemF0aW9uIC0gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9ncmFwaHFsL2F1dGhvcml6YXRpb24tcnVsZXMvXG4gKiBDdXN0b20gQnVzaW5lc3MgTG9naWMgLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY3VzdG9tLWJ1c2luZXNzLWxvZ2ljL1xuICogU2VhcmNoIC0gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9ncmFwaHFsL3NlYXJjaC1hbmQtcmVzdWx0LWFnZ3JlZ2F0aW9ucy9cbiAqIE1MIFNlcnZpY2VzIC0gaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2NsaS9ncmFwaHFsL2Nvbm5lY3QtdG8tbWFjaGluZS1sZWFybmluZy1zZXJ2aWNlcy9cbiAqXG4gKiBGb3IgYSBmdWxsIHJlZmVyZW5jZSBvZiB0aGUgc3VwcG9ydGVkIGN1c3RvbSBncmFwaHFsIGRpcmVjdGl2ZXMgLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvZGlyZWN0aXZlcy1yZWZlcmVuY2UvXG4gKlxuICogVGhlIG91dHB1dCBvZiB0aGlzIGNvbnN0cnVjdCBpcyBhIG1hcHBpbmcgb2YgTDIgb3IgTDEgcmVzb3VyY2VzIGdlbmVyYXRlZCBieSB0aGUgdHJhbnNmb3JtZXIsIHdoaWNoIGdlbmVyYWxseSBmb2xsb3cgdGhlIGFjY2VzcyBwYXR0ZXJuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogICBjb25zdCBhcGkgPSBuZXcgQW1wbGlmeUdyYXBoUWxBcGkodGhpcywgJ2FwaScsIHsgPHBhcmFtcz4gfSk7XG4gKiAgIC8vIEFjY2VzcyBMMiByZXNvdXJjZXMgdW5kZXIgYC5yZXNvdXJjZXNgXG4gKiAgIGFwaS5yZXNvdXJjZXMudGFibGVzW1wiVG9kb1wiXS50YWJsZUFybjtcbiAqXG4gKiAgIC8vIEFjY2VzcyBMMSByZXNvdXJjZXMgdW5kZXIgYC5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzYFxuICogICBhcGkucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5HcmFwaHFsQXBpLnhyYXlFbmFibGVkID0gdHJ1ZTtcbiAqICAgT2JqZWN0LnZhbHVlcyhhcGkucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5UYWJsZXMpLmZvckVhY2godGFibGUgPT4ge1xuICogICAgIHRhYmxlLnBvaW50SW5UaW1lUmVjb3ZlcnlTcGVjaWZpY2F0aW9uID0geyBwb2ludEluVGltZVJlY292ZXJ5RW5hYmxlZDogZmFsc2UgfTtcbiAqICAgfSk7XG4gKiBgYGBcbiAqIGByZXNvdXJjZXMuPFJlc291cmNlVHlwZT4uPFJlc291cmNlTmFtZT5gIC0geW91IGNhbiB0aGVuIHBlcmZvcm0gYW55IENESyBhY3Rpb24gb24gdGhlc2UgcmVzdWx0aW5nIHJlc291cmVjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBbXBsaWZ5R3JhcGhxbEFwaSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZWQgTDEgYW5kIEwyIENESyByZXNvdXJjZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VzOiBBbXBsaWZ5R3JhcGhxbEFwaVJlc291cmNlcztcblxuICAvKipcbiAgICogR2VuZXJhdGVkIGFzc2V0cyByZXF1aXJlZCBmb3IgY29kZWdlbiBzdGVwcy4gUGVyc2lzdGVkIGluIG9yZGVyIHRvIHJlbmRlciBhcyBwYXJ0IG9mIHRoZSBvdXRwdXQgc3RyYXRlZ3kuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNvZGVnZW5Bc3NldHM6IENvZGVnZW5Bc3NldHM7XG5cbiAgLyoqXG4gICAqIFJlc29sdmVycyBnZW5lcmF0ZWQgYnkgdGhlIHRyYW5zZm9ybSBwcm9jZXNzLCBwZXJzaXN0ZWQgb24gdGhlIHNpZGUgaW4gb3JkZXIgdG8gZmFjaWxpdGF0ZSBwdWxsaW5nIGEgbWFuaWZlc3RcbiAgICogZm9yIHRoZSBwdXJwb3NlcyBvZiBpbnNwZWN0aW5nIGFuZCBwcm9kdWNpbmcgb3ZlcnJpZGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdlbmVyYXRlZEZ1bmN0aW9uU2xvdHM6IEZ1bmN0aW9uU2xvdFtdO1xuXG4gIC8qKlxuICAgKiBHcmFwaHFsIFVSTCBGb3IgdGhlIGdlbmVyYXRlZCBBUEkuIE1heSBiZSBhIENESyBUb2tlbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBncmFwaHFsVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlYWx0aW1lIFVSTCBGb3IgdGhlIGdlbmVyYXRlZCBBUEkuIE1heSBiZSBhIENESyBUb2tlbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWFsdGltZVVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZWQgQXBpIEtleSBpZiBnZW5lcmF0ZWQuIE1heSBiZSBhIENESyBUb2tlbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhcGlLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogR2VuZXJhdGVkIEFwaSBJZC4gTWF5IGJlIGEgQ0RLIFRva2VuLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwaUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbmZsaWN0IHJlc29sdXRpb24gc2V0dGluZ1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBjb25mbGljdFJlc29sdXRpb246IENvbmZsaWN0UmVzb2x1dGlvbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQmUgdmVyeSBjYXJlZnVsIGVkaXRpbmcgdGhpcyB2YWx1ZS4gVGhpcyBpcyB0aGUgc3RyaW5nIHRoYXQgaXMgdXNlZCB0byBpZGVudGlmeSBncmFwaHFsIHN0YWNrcyBpbiBCSSBtZXRyaWNzXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YWNrVHlwZSA9ICdhcGktQXBwU3luYyc7XG5cbiAgLyoqXG4gICAqIE5ldyBBbXBsaWZ5R3JhcGhxbEFwaSBjb25zdHJ1Y3QsIHRoaXMgd2lsbCBjcmVhdGUgYW4gYXBwc3luYyBhcGkgd2l0aCBhdXRob3JpemF0aW9uLCBhIHNjaGVtYSwgYW5kIGFsbCBuZWNlc3NhcnkgcmVzb2x2ZXJzLCBmdW5jdGlvbnMsXG4gICAqIGFuZCBkYXRhc291cmNlcy5cbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSB0byBjcmVhdGUgdGhpcyBjb25zdHJ1Y3Qgd2l0aGluLlxuICAgKiBAcGFyYW0gaWQgdGhlIGlkIHRvIHVzZSBmb3IgdGhpcyBhcGkuXG4gICAqIEBwYXJhbSBwcm9wcyB0aGUgcHJvcGVydGllcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgZ2VuZXJhdGVkIGFwaS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBbXBsaWZ5R3JhcGhxbEFwaVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHZhbGlkYXRlTm9PdGhlckFtcGxpZnlHcmFwaHFsQXBpSW5TdGFjayh0aGlzKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGRlZmluaXRpb24sXG4gICAgICBhdXRob3JpemF0aW9uTW9kZXMsXG4gICAgICBjb25mbGljdFJlc29sdXRpb24sXG4gICAgICBmdW5jdGlvblNsb3RzLFxuICAgICAgdHJhbnNmb3JtZXJQbHVnaW5zLFxuICAgICAgcHJlZGljdGlvbnNCdWNrZXQsXG4gICAgICBzdGFja01hcHBpbmdzLFxuICAgICAgdHJhbnNsYXRpb25CZWhhdmlvcixcbiAgICAgIGZ1bmN0aW9uTmFtZU1hcCxcbiAgICAgIG91dHB1dFN0b3JhZ2VTdHJhdGVneSxcbiAgICB9ID0gcHJvcHM7XG5cbiAgICBuZXcgQXR0cmlidXRpb25NZXRhZGF0YVN0b3JhZ2UoKS5zdG9yZUF0dHJpYnV0aW9uTWV0YWRhdGEoU3RhY2sub2Yoc2NvcGUpLCB0aGlzLnN0YWNrVHlwZSwgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ3BhY2thZ2UuanNvbicpKTtcblxuICAgIGNvbnN0IHsgYXV0aENvbmZpZywgYXV0aFN5bnRoUGFyYW1ldGVycyB9ID0gY29udmVydEF1dGhvcml6YXRpb25Nb2Rlc1RvVHJhbnNmb3JtZXJBdXRoQ29uZmlnKGF1dGhvcml6YXRpb25Nb2Rlcyk7XG5cbiAgICB2YWxpZGF0ZUZ1bmN0aW9uU2xvdHMoZnVuY3Rpb25TbG90cyA/PyBbXSk7XG4gICAgY29uc3Qgc2VwYXJhdGVkRnVuY3Rpb25TbG90cyA9IHNlcGFyYXRlU2xvdHMoWy4uLihmdW5jdGlvblNsb3RzID8/IFtdKSwgLi4uZGVmaW5pdGlvbi5mdW5jdGlvblNsb3RzXSk7XG5cbiAgICAvLyBBbGxvdyBhbXBsaWZ5RW52aXJvbm1lbnROYW1lIHRvIGJlIHJldHJpZXZlIGZyb20gY29udGV4dCwgYW5kIHVzZSB2YWx1ZSAnTk9ORScgaWYgbm8gdmFsdWUgY2FuIGJlIGZvdW5kLlxuICAgIC8vIGFtcGxpZnlFbnZpcm9ubWVudE5hbWUgaXMgcmVxdWlyZWQgZm9yIGxvZ2ljYWwgaWQgc3VmZml4aW5nLCBhcyB3ZWxsIGFzIEV4cG9ydHMgZnJvbSB0aGUgbmVzdGVkIHN0YWNrcy5cbiAgICAvLyBBbGxvdyBleHBvcnQgc28gY3VzdG9tZXJzIGNhbiByZXVzZSB0aGUgZW52IGluIHRoZWlyIG93biByZWZlcmVuY2VzIGRvd25zdHJlYW0uXG4gICAgY29uc3QgYW1wbGlmeUVudmlyb25tZW50TmFtZSA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KCdhbXBsaWZ5RW52aXJvbm1lbnROYW1lJykgPz8gJ05PTkUnO1xuICAgIGlmIChhbXBsaWZ5RW52aXJvbm1lbnROYW1lLmxlbmd0aCA+IDgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgb3IgY2RrIC0tY29udGV4dCBlbnYgbXVzdCBoYXZlIGEgbGVuZ3RoIDw9IDgsIGZvdW5kICR7YW1wbGlmeUVudmlyb25tZW50TmFtZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc3NldE1hbmFnZXIgPSBuZXcgQXNzZXRNYW5hZ2VyKCk7XG5cbiAgICBsZXQgZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZzogRXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyA9IHtcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgbmVzdGVkU3RhY2tQcm92aWRlcjoge1xuICAgICAgICBwcm92aWRlOiAobmVzdGVkU3RhY2tTY29wZTogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcpID0+IG5ldyBOZXN0ZWRTdGFjayhuZXN0ZWRTdGFja1Njb3BlLCBuYW1lKSxcbiAgICAgIH0sXG4gICAgICBhc3NldFByb3ZpZGVyOiB7XG4gICAgICAgIHByb3ZpZGU6IChhc3NldFNjb3BlOiBDb25zdHJ1Y3QsIGFzc2V0SWQ6IHN0cmluZywgYXNzZXRQcm9wczogQXNzZXRQcm9wcykgPT5cbiAgICAgICAgICBuZXcgQXNzZXQoYXNzZXRTY29wZSwgYXNzZXRJZCwgeyBwYXRoOiBhc3NldE1hbmFnZXIuYWRkQXNzZXQoYXNzZXRQcm9wcy5maWxlTmFtZSwgYXNzZXRQcm9wcy5maWxlQ29udGVudCkgfSksXG4gICAgICB9LFxuICAgICAgc3ludGhQYXJhbWV0ZXJzOiB7XG4gICAgICAgIGFtcGxpZnlFbnZpcm9ubWVudE5hbWU6IGFtcGxpZnlFbnZpcm9ubWVudE5hbWUsXG4gICAgICAgIGFwaU5hbWU6IHByb3BzLmFwaU5hbWUgPz8gaWQsXG4gICAgICAgIC4uLmF1dGhTeW50aFBhcmFtZXRlcnMsXG4gICAgICB9LFxuICAgICAgc2NoZW1hOiBkZWZpbml0aW9uLnNjaGVtYSxcbiAgICAgIHVzZXJEZWZpbmVkU2xvdHM6IHBhcnNlVXNlckRlZmluZWRTbG90cyhzZXBhcmF0ZWRGdW5jdGlvblNsb3RzKSxcbiAgICAgIHRyYW5zZm9ybWVyc0ZhY3RvcnlBcmdzOiB7XG4gICAgICAgIGN1c3RvbVRyYW5zZm9ybWVyczogdHJhbnNmb3JtZXJQbHVnaW5zID8/IFtdLFxuICAgICAgICAuLi4ocHJlZGljdGlvbnNCdWNrZXQgPyB7IHN0b3JhZ2VDb25maWc6IHsgYnVja2V0TmFtZTogcHJlZGljdGlvbnNCdWNrZXQuYnVja2V0TmFtZSB9IH0gOiB7fSksXG4gICAgICAgIGZ1bmN0aW9uTmFtZU1hcDoge1xuICAgICAgICAgIC4uLmRlZmluaXRpb24ucmVmZXJlbmNlZExhbWJkYUZ1bmN0aW9ucyxcbiAgICAgICAgICAuLi5mdW5jdGlvbk5hbWVNYXAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYXV0aENvbmZpZyxcbiAgICAgIHN0YWNrTWFwcGluZzogc3RhY2tNYXBwaW5ncyA/PyB7fSxcbiAgICAgIHJlc29sdmVyQ29uZmlnOiBjb25mbGljdFJlc29sdXRpb24gPyBjb252ZXJ0VG9SZXNvbHZlckNvbmZpZyhjb25mbGljdFJlc29sdXRpb24pIDogdW5kZWZpbmVkLFxuICAgICAgdHJhbnNmb3JtUGFyYW1ldGVyczoge1xuICAgICAgICAuLi5kZWZhdWx0VHJhbnNsYXRpb25CZWhhdmlvcixcbiAgICAgICAgLi4uKHRyYW5zbGF0aW9uQmVoYXZpb3IgPz8ge30pLFxuICAgICAgfSxcblxuICAgICAgLy8gQWRkcyBhIG1vZGVsVG9EYXRhU291cmNlTWFwIGZpZWxkL3ZhbHVlXG4gICAgICAuLi5wYXJzZURhdGFTb3VyY2VDb25maWcoZGVmaW5pdGlvbi5kYXRhU291cmNlU3RyYXRlZ2llcyksXG4gICAgfTtcblxuICAgIC8vIFRPRE86IE5vcm1hbGl6ZSBhbGwgb2YgdGhpcyBvbmNlIHdlIHN0YXJ0IHVzaW5nIHN0cmF0ZWdpZXMgaW50ZXJuYWxseS4gUmlnaHQgbm93IHRoZSBkYXRhIHNvdXJjZSBjb25maWd1cmF0aW9uIChWUEMsIGNvbm5lY3Rpb24gaW5mbyxcbiAgICAvLyBldGMpIGlzIHNlcGFyYXRlIGZyb20gdGhlIERhdGFTb3VyY2VUeXBlLCBhbmQgc2luZ3VsYXJcbiAgICBjb25zdCBjdXN0b21TcWxEYXRhU291cmNlU3RyYXRlZ2llcyA9IG1hcEludGVyZmFjZUN1c3RvbVNxbFN0cmF0ZWdpZXNUb0ltcGxlbWVudGF0aW9uU3RyYXRlZ2llcyhcbiAgICAgIGRlZmluaXRpb24uY3VzdG9tU3FsRGF0YVNvdXJjZVN0cmF0ZWdpZXMsXG4gICAgKTtcbiAgICBpZiAoY3VzdG9tU3FsRGF0YVNvdXJjZVN0cmF0ZWdpZXMubGVuZ3RoID4gMCkge1xuICAgICAgZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyA9IHtcbiAgICAgICAgLi4uZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyxcbiAgICAgICAgY3VzdG9tU3FsRGF0YVNvdXJjZVN0cmF0ZWdpZXMsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFRPRE86IFVwZGF0ZSB0aGlzIHRvIHN1cHBvcnQgbXVsdGlwbGUgZGVmaW5pdGlvbnM7IHJpZ2h0IG5vdyB3ZSBhc3N1bWUgb25seSBvbmUgU1FMIGRhdGEgc291cmNlIHR5cGVcbiAgICBjb25zdCBtb2RlbFN0cmF0ZWdpZXMgPSBPYmplY3QudmFsdWVzKGRlZmluaXRpb24uZGF0YVNvdXJjZVN0cmF0ZWdpZXMpLmZpbHRlcihpc1NRTExhbWJkYU1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5KTtcbiAgICBjb25zdCBjdXN0b21TcWxTdHJhdGVnaWVzID0gZGVmaW5pdGlvbi5jdXN0b21TcWxEYXRhU291cmNlU3RyYXRlZ2llcz8ubWFwKChjc3MpID0+IGNzcy5zdHJhdGVneSkgPz8gW107XG4gICAgZm9yIChjb25zdCBzdHJhdGVneSBvZiBbLi4ubW9kZWxTdHJhdGVnaWVzLCAuLi5jdXN0b21TcWxTdHJhdGVnaWVzXSkge1xuICAgICAgaWYgKGlzU1FMTGFtYmRhTW9kZWxEYXRhU291cmNlU3RyYXRlZ3koc3RyYXRlZ3kpKSB7XG4gICAgICAgIGV4ZWN1dGVUcmFuc2Zvcm1Db25maWcgPSB0aGlzLmV4dGVuZFRyYW5zZm9ybUNvbmZpZyhleGVjdXRlVHJhbnNmb3JtQ29uZmlnLCBzdHJhdGVneSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGV4ZWN1dGVUcmFuc2Zvcm0oZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyk7XG5cbiAgICB0aGlzLmNvZGVnZW5Bc3NldHMgPSBuZXcgQ29kZWdlbkFzc2V0cyh0aGlzLCAnQW1wbGlmeUNvZGVnZW5Bc3NldHMnLCB7IG1vZGVsU2NoZW1hOiBkZWZpbml0aW9uLnNjaGVtYSB9KTtcblxuICAgIHRoaXMucmVzb3VyY2VzID0gZ2V0R2VuZXJhdGVkUmVzb3VyY2VzKHRoaXMpO1xuICAgIHRoaXMuY29uZmxpY3RSZXNvbHV0aW9uID0gY29uZmxpY3RSZXNvbHV0aW9uO1xuICAgIHRoaXMuZ2VuZXJhdGVkRnVuY3Rpb25TbG90cyA9IGdldEdlbmVyYXRlZEZ1bmN0aW9uU2xvdHMoYXNzZXRNYW5hZ2VyLnJlc29sdmVyQXNzZXRzKTtcbiAgICB0aGlzLnN0b3JlT3V0cHV0KG91dHB1dFN0b3JhZ2VTdHJhdGVneSk7XG5cbiAgICB0aGlzLmFwaUlkID0gdGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkuYXR0ckFwaUlkO1xuICAgIHRoaXMuZ3JhcGhxbFVybCA9IHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5HcmFwaHFsQXBpLmF0dHJHcmFwaFFsVXJsO1xuICAgIHRoaXMucmVhbHRpbWVVcmwgPSB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuR3JhcGhxbEFwaS5hdHRyUmVhbHRpbWVVcmw7XG4gICAgdGhpcy5hcGlLZXkgPSB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuQXBpS2V5Py5hdHRyQXBpS2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZHMgZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyB3aXRoIGZpZWxkcyBmb3IgcHJvdmlzaW9uaW5nIGEgU1FMIExhbWJkYVxuICAgKiBAcGFyYW0gZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyB0aGUgZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyB0byBleHRlbmRcbiAgICogQHBhcmFtIHN0cmF0ZWd5IHRoZSBTUUxMYW1iZGFNb2RlbERhdGFTb3VyY2VTdHJhdGVneSBjb250YWluaW5nIHRoZSBTUUwgY29ubmVjdGlvbiB2YWx1ZXMgdG8gYWRkIHRvIHRoZSB0cmFuc2Zvcm0gY29uZmlnXG4gICAqIEByZXR1cm5zIHRoZSBleHRlbmRlZCBjb25maWd1cmF0aW9uIHRoYXQgaW5jbHVkZXMgU1FMIERCIGNvbm5lY3Rpb24gaW5mb3JtYXRpb25cbiAgICovXG4gIHByaXZhdGUgZXh0ZW5kVHJhbnNmb3JtQ29uZmlnKFxuICAgIGV4ZWN1dGVUcmFuc2Zvcm1Db25maWc6IEV4ZWN1dGVUcmFuc2Zvcm1Db25maWcsXG4gICAgc3RyYXRlZ3k6IFNRTExhbWJkYU1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5LFxuICApOiBFeGVjdXRlVHJhbnNmb3JtQ29uZmlnIHtcbiAgICBjb25zdCBleHRlbmRlZENvbmZpZyA9IHsgLi4uZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyB9O1xuXG4gICAgaWYgKHN0cmF0ZWd5LmN1c3RvbVNxbFN0YXRlbWVudHMpIHtcbiAgICAgIGV4dGVuZGVkQ29uZmlnLmN1c3RvbVF1ZXJpZXMgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHN0cmF0ZWd5LmN1c3RvbVNxbFN0YXRlbWVudHMpKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYlNlY3JldHM6IE1hcDxzdHJpbmcsIFJEU0Nvbm5lY3Rpb25TZWNyZXRzPiA9IG5ldyBNYXAoKTtcbiAgICBsZXQgZGJTZWNyZXREYlR5cGVLZXk6IHN0cmluZztcbiAgICBzd2l0Y2ggKHN0cmF0ZWd5LmRiVHlwZSkge1xuICAgICAgY2FzZSAnTVlTUUwnOlxuICAgICAgICBkYlNlY3JldERiVHlwZUtleSA9IE1ZU1FMX0RCX1RZUEU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUE9TVEdSRVMnOlxuICAgICAgICBkYlNlY3JldERiVHlwZUtleSA9IFBPU1RHUkVTX0RCX1RZUEU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBiaW5kaW5nIHR5cGUgJHtzdHJhdGVneS5kYlR5cGV9YCk7XG4gICAgfVxuICAgIGRiU2VjcmV0cy5zZXQoZGJTZWNyZXREYlR5cGVLZXksIHtcbiAgICAgIHVzZXJuYW1lOiBzdHJhdGVneS5kYkNvbm5lY3Rpb25Db25maWcudXNlcm5hbWVTc21QYXRoLFxuICAgICAgcGFzc3dvcmQ6IHN0cmF0ZWd5LmRiQ29ubmVjdGlvbkNvbmZpZy5wYXNzd29yZFNzbVBhdGgsXG4gICAgICBob3N0OiBzdHJhdGVneS5kYkNvbm5lY3Rpb25Db25maWcuaG9zdG5hbWVTc21QYXRoLFxuICAgICAgLy8gQ2FzdCB0aHJvdWdoIGBhbnlgIHRvIGFsbG93IHRoZSBTU00gUGF0aCBzdHJpbmcgdG8gYmUgdXNlZCBvbiBhIHR5cGUgZXhwZWN0aW5nIGEgbnVtYmVyLiBUaGlzIGZsb3cgZXhwZWN0cyB0aGUgaW5jb21pbmcgdmFsdWUgdG8gYmVcbiAgICAgIC8vIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFNTTSBwYXRoLlxuICAgICAgcG9ydDogc3RyYXRlZ3kuZGJDb25uZWN0aW9uQ29uZmlnLnBvcnRTc21QYXRoIGFzIGFueSxcbiAgICAgIGRhdGFiYXNlOiBzdHJhdGVneS5kYkNvbm5lY3Rpb25Db25maWcuZGF0YWJhc2VOYW1lU3NtUGF0aCxcbiAgICB9KTtcbiAgICBleHRlbmRlZENvbmZpZy5kYXRhc291cmNlU2VjcmV0UGFyYW1ldGVyTG9jYXRpb25zID0gZGJTZWNyZXRzO1xuXG4gICAgaWYgKHN0cmF0ZWd5LnZwY0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIGNvbnN0IHN1Ym5ldEF2YWlsYWJpbGl0eVpvbmVDb25maWcgPSBzdHJhdGVneS52cGNDb25maWd1cmF0aW9uLnN1Ym5ldEF2YWlsYWJpbGl0eVpvbmVDb25maWcubWFwKFxuICAgICAgICAoc2F6KTogeyBzdWJuZXRJZDogc3RyaW5nOyBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcgfSA9PiAoe1xuICAgICAgICAgIHN1Ym5ldElkOiBzYXouc3VibmV0SWQsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogc2F6LmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIGV4dGVuZGVkQ29uZmlnLnNxbExhbWJkYVZwY0NvbmZpZyA9IHtcbiAgICAgICAgdnBjSWQ6IHN0cmF0ZWd5LnZwY0NvbmZpZ3VyYXRpb24udnBjSWQsXG4gICAgICAgIHNlY3VyaXR5R3JvdXBJZHM6IHN0cmF0ZWd5LnZwY0NvbmZpZ3VyYXRpb24uc2VjdXJpdHlHcm91cElkcyxcbiAgICAgICAgc3VibmV0QXZhaWxhYmlsaXR5Wm9uZUNvbmZpZyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHN0cmF0ZWd5LnNxbExhbWJkYVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWcpIHtcbiAgICAgIGV4dGVuZGVkQ29uZmlnLnNxbExhbWJkYVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWcgPSBzdHJhdGVneS5zcWxMYW1iZGFQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnO1xuICAgIH1cblxuICAgIHJldHVybiBleHRlbmRlZENvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZXMgZ3JhcGhxbCBhcGkgb3V0cHV0IHRvIGJlIHVzZWQgZm9yIGNsaWVudCBjb25maWcgZ2VuZXJhdGlvblxuICAgKiBAcGFyYW0gb3V0cHV0U3RvcmFnZVN0cmF0ZWd5IFN0cmF0ZWd5IHRvIHN0b3JlIGNvbnN0cnVjdCBvdXRwdXRzLiBJZiBubyBzdHJhdGVneSBpcyBwcm92aWRlZCBhIGRlZmF1bHQgc3RyYXRlZ3kgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBzdG9yZU91dHB1dChcbiAgICBvdXRwdXRTdG9yYWdlU3RyYXRlZ3k6IElCYWNrZW5kT3V0cHV0U3RvcmFnZVN0cmF0ZWd5ID0gbmV3IFN0YWNrTWV0YWRhdGFCYWNrZW5kT3V0cHV0U3RvcmFnZVN0cmF0ZWd5KFN0YWNrLm9mKHRoaXMpKSxcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcbiAgICBjb25zdCBvdXRwdXQ6IEdyYXBocWxPdXRwdXQgPSB7XG4gICAgICB2ZXJzaW9uOiAnMScsXG4gICAgICBwYXlsb2FkOiB7XG4gICAgICAgIGF3c0FwcHN5bmNBcGlJZDogdGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkuYXR0ckFwaUlkLFxuICAgICAgICBhd3NBcHBzeW5jQXBpRW5kcG9pbnQ6IHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5HcmFwaHFsQXBpLmF0dHJHcmFwaFFsVXJsLFxuICAgICAgICBhd3NBcHBzeW5jQXV0aGVudGljYXRpb25UeXBlOiB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuR3JhcGhxbEFwaS5hdXRoZW50aWNhdGlvblR5cGUgYXMgQXdzQXBwc3luY0F1dGhlbnRpY2F0aW9uVHlwZSxcbiAgICAgICAgYXdzQXBwc3luY1JlZ2lvbjogc3RhY2sucmVnaW9uLFxuICAgICAgICBhbXBsaWZ5QXBpTW9kZWxTY2hlbWFTM1VyaTogdGhpcy5jb2RlZ2VuQXNzZXRzLm1vZGVsU2NoZW1hUzNVcmksXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkFwaUtleSkge1xuICAgICAgb3V0cHV0LnBheWxvYWQuYXdzQXBwc3luY0FwaUtleSA9IHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5BcGlLZXkuYXR0ckFwaUtleTtcbiAgICB9XG5cbiAgICBjb25zdCBhZGRpdGlvbmFsQXV0aFR5cGVzID0gZ2V0QWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uVHlwZXModGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkpO1xuICAgIGlmIChhZGRpdGlvbmFsQXV0aFR5cGVzKSB7XG4gICAgICBvdXRwdXQucGF5bG9hZC5hd3NBcHBzeW5jQWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uVHlwZXMgPSBhZGRpdGlvbmFsQXV0aFR5cGVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZsaWN0UmVzb2x1dGlvbj8ucHJvamVjdD8uaGFuZGxlclR5cGUpIHtcbiAgICAgIG91dHB1dC5wYXlsb2FkLmF3c0FwcHN5bmNDb25mbGljdFJlc29sdXRpb25Nb2RlID0gdGhpcy5jb25mbGljdFJlc29sdXRpb24/LnByb2plY3Q/LmhhbmRsZXJUeXBlO1xuICAgIH1cblxuICAgIG91dHB1dFN0b3JhZ2VTdHJhdGVneS5hZGRCYWNrZW5kT3V0cHV0RW50cnkoZ3JhcGhxbE91dHB1dEtleSwgb3V0cHV0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9sbG93aW5nIGFyZSBwcm94eSBtZXRob2RzIHRvIHRoZSBMMiBJR3JhcGhxbEFwaSBpbnRlcmZhY2UsIHRvIGZhY2lsaXRhdGUgZWFzaWVyIHVzZSBvZiB0aGUgTDMgd2l0aG91dCBuZWVkaW5nXG4gICAqIHRvIGFjY2VzcyB0aGUgdW5kZXJseWluZyByZXNvdXJjZXMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgRHluYW1vREIgZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSB0YWJsZSBUaGUgRHluYW1vREIgdGFibGUgYmFja2luZyB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGREeW5hbW9EYkRhdGFTb3VyY2UoaWQ6IHN0cmluZywgdGFibGU6IElUYWJsZSwgb3B0aW9ucz86IERhdGFTb3VyY2VPcHRpb25zKTogRHluYW1vRGJEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGREeW5hbW9EYkRhdGFTb3VyY2UoaWQsIHRhYmxlLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZWxhc3RpY3NlYXJjaCBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgYWRkT3BlblNlYXJjaERhdGFTb3VyY2VgXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIGRvbWFpbiBUaGUgZWxhc3RpY3NlYXJjaCBkb21haW4gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGFkZEVsYXN0aWNzZWFyY2hEYXRhU291cmNlKGlkOiBzdHJpbmcsIGRvbWFpbjogSURvbWFpbiwgb3B0aW9ucz86IERhdGFTb3VyY2VPcHRpb25zKTogRWxhc3RpY3NlYXJjaERhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLmFkZEVsYXN0aWNzZWFyY2hEYXRhU291cmNlKGlkLCBkb21haW4sIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBFdmVudEJyaWRnZSBkYXRhIHNvdXJjZSB0byB0aGlzIGFwaS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIGV2ZW50QnVzIFRoZSBFdmVudEJyaWRnZSBFdmVudEJ1cyBvbiB3aGljaCB0byBwdXQgZXZlbnRzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGRFdmVudEJyaWRnZURhdGFTb3VyY2UoaWQ6IHN0cmluZywgZXZlbnRCdXM6IElFdmVudEJ1cywgb3B0aW9ucz86IERhdGFTb3VyY2VPcHRpb25zKTogRXZlbnRCcmlkZ2VEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGRFdmVudEJyaWRnZURhdGFTb3VyY2UoaWQsIGV2ZW50QnVzLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgaHR0cCBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIGVuZHBvaW50IFRoZSBodHRwIGVuZHBvaW50LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGRIdHRwRGF0YVNvdXJjZShpZDogc3RyaW5nLCBlbmRwb2ludDogc3RyaW5nLCBvcHRpb25zPzogSHR0cERhdGFTb3VyY2VPcHRpb25zKTogSHR0cERhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLmFkZEh0dHBEYXRhU291cmNlKGlkLCBlbmRwb2ludCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IExhbWJkYSBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIGxhbWJkYUZ1bmN0aW9uIFRoZSBMYW1iZGEgZnVuY3Rpb24gdG8gY2FsbCB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGFkZExhbWJkYURhdGFTb3VyY2UoaWQ6IHN0cmluZywgbGFtYmRhRnVuY3Rpb246IElGdW5jdGlvbiwgb3B0aW9ucz86IERhdGFTb3VyY2VPcHRpb25zKTogTGFtYmRhRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkTGFtYmRhRGF0YVNvdXJjZShpZCwgbGFtYmRhRnVuY3Rpb24sIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBkdW1teSBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIFVzZWZ1bCBmb3IgcGlwZWxpbmUgcmVzb2x2ZXJzIGFuZCBmb3IgYmFja2VuZCBjaGFuZ2VzIHRoYXQgZG9uJ3QgcmVxdWlyZSBhIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE5vbmVEYXRhU291cmNlKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IE5vbmVEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGROb25lRGF0YVNvdXJjZShpZCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogZGQgYSBuZXcgT3BlblNlYXJjaCBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIGRvbWFpbiBUaGUgT3BlblNlYXJjaCBkb21haW4gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE9wZW5TZWFyY2hEYXRhU291cmNlKGlkOiBzdHJpbmcsIGRvbWFpbjogSU9wZW5TZWFyY2hEb21haW4sIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IE9wZW5TZWFyY2hEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGRPcGVuU2VhcmNoRGF0YVNvdXJjZShpZCwgZG9tYWluLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgUmRzIGRhdGEgc291cmNlIHRvIHRoaXMgQVBJLiBUaGlzIGlzIGEgcHJveHkgbWV0aG9kIHRvIHRoZSBMMiBHcmFwaHFsQXBpIENvbnN0cnVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBkYXRhIHNvdXJjZSdzIGlkLlxuICAgKiBAcGFyYW0gc2VydmVybGVzc0NsdXN0ZXIgVGhlIHNlcnZlcmxlc3MgY2x1c3RlciB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEBwYXJhbSBzZWNyZXRTdG9yZSBUaGUgc2VjcmV0IHN0b3JlIHRoYXQgY29udGFpbnMgdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmb3IgdGhlIHNlcnZlcmxlc3MgY2x1c3Rlci5cbiAgICogQHBhcmFtIGRhdGFiYXNlTmFtZSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZGF0YWJhc2UgdG8gdXNlIHdpdGhpbiB0aGUgY2x1c3Rlci5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEByZXR1cm5zIHRoZSBnZW5lcmF0ZWQgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkUmRzRGF0YVNvdXJjZShcbiAgICBpZDogc3RyaW5nLFxuICAgIHNlcnZlcmxlc3NDbHVzdGVyOiBJU2VydmVybGVzc0NsdXN0ZXIsXG4gICAgc2VjcmV0U3RvcmU6IElTZWNyZXQsXG4gICAgZGF0YWJhc2VOYW1lPzogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyxcbiAgKTogUmRzRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkUmRzRGF0YVNvdXJjZShpZCwgc2VydmVybGVzc0NsdXN0ZXIsIHNlY3JldFN0b3JlLCBkYXRhYmFzZU5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHJlc29sdmVyIHRvIHRoZSBhcGkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIHJlc29sdmVyJ3MgaWQuXG4gICAqIEBwYXJhbSBwcm9wcyB0aGUgcmVzb2x2ZXIgcHJvcGVydGllcy5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCByZXNvbHZlci5cbiAgICovXG4gIHB1YmxpYyBhZGRSZXNvbHZlcihpZDogc3RyaW5nLCBwcm9wczogRXh0ZW5kZWRSZXNvbHZlclByb3BzKTogUmVzb2x2ZXIge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLmNyZWF0ZVJlc29sdmVyKGlkLCBwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGFwcHN5bmMgZnVuY3Rpb24gdG8gdGhlIGFwaS5cbiAgICogQHBhcmFtIGlkIHRoZSBmdW5jdGlvbidzIGlkLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGFwcHN5bmMgZnVuY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgYWRkRnVuY3Rpb24oaWQ6IHN0cmluZywgcHJvcHM6IEFkZEZ1bmN0aW9uUHJvcHMpOiBBcHBzeW5jRnVuY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQXBwc3luY0Z1bmN0aW9uKHRoaXMsIGlkLCB7XG4gICAgICBhcGk6IHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEdpdmVuIHRoZSBwcm92aWRlZCBzY29wZSwgd2FsayB0aGUgbm9kZSB0cmVlLCBhbmQgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFueSBvdGhlciBBbXBsaWZ5R3JhcGhxbEFwaSBjb25zdHJ1Y3RzXG4gKiBhcmUgZm91bmQgaW4gdGhlIHN0YWNrLlxuICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSB0aGlzIGNvbnN0cnVjdCBpcyBjcmVhdGVkIGluLlxuICovXG5jb25zdCB2YWxpZGF0ZU5vT3RoZXJBbXBsaWZ5R3JhcGhxbEFwaUluU3RhY2sgPSAoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQgPT4ge1xuICBjb25zdCByb290U3RhY2sgPSBnZXRTdGFja0ZvclNjb3BlKHNjb3BlLCB0cnVlKTtcblxuICBsZXQgd2FzT3RoZXJBbXBsaWZ5R3JhcGhsQXBpRm91bmQgPSBmYWxzZTtcbiAgd2Fsa0FuZFByb2Nlc3NOb2Rlcyhyb290U3RhY2ssIChub2RlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEFtcGxpZnlHcmFwaHFsQXBpICYmIHNjb3BlICE9PSBub2RlKSB7XG4gICAgICB3YXNPdGhlckFtcGxpZnlHcmFwaGxBcGlGb3VuZCA9IHRydWU7XG4gICAgfVxuICB9KTtcblxuICBpZiAod2FzT3RoZXJBbXBsaWZ5R3JhcGhsQXBpRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ09ubHkgb25lIEFtcGxpZnlHcmFwaHFsQXBpIGlzIGV4cGVjdGVkIGluIGEgc3RhY2snKTtcbiAgfVxufTtcbiJdfQ==
|
@@ -1,4 +1,5 @@
|
|
1
|
-
import { IAmplifyGraphqlDefinition
|
1
|
+
import { IAmplifyGraphqlDefinition } from './types';
|
2
|
+
import { ModelDataSourceStrategy } from './model-datasource-strategy';
|
2
3
|
export declare const DEFAULT_MODEL_DATA_SOURCE_STRATEGY: ModelDataSourceStrategy;
|
3
4
|
/**
|
4
5
|
* Class exposing utilities to produce IAmplifyGraphqlDefinition objects given various inputs.
|
@@ -10,8 +11,8 @@ export declare class AmplifyGraphqlDefinition {
|
|
10
11
|
* **NOTE** The 'dataSourceStrategy' configuration option is in preview and is not recommended to use with production systems.
|
11
12
|
*
|
12
13
|
* @param schema the graphql input as a string
|
13
|
-
* @param dataSourceStrategy the provisioning definition for datasources that resolve `@model`s in this schema.
|
14
|
-
* CloudFormation will be used by default.
|
14
|
+
* @param dataSourceStrategy the provisioning definition for datasources that resolve `@model`s and custom SQL statements in this schema.
|
15
|
+
* The DynamoDB from CloudFormation will be used by default.
|
15
16
|
* @experimental dataSourceStrategy
|
16
17
|
* @returns a fully formed amplify graphql definition
|
17
18
|
*/
|
@@ -6,6 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
6
|
const os = require("os");
|
7
7
|
const aws_appsync_1 = require("aws-cdk-lib/aws-appsync");
|
8
8
|
const internal_1 = require("./internal");
|
9
|
+
const data_source_config_1 = require("./internal/data-source-config");
|
9
10
|
exports.DEFAULT_MODEL_DATA_SOURCE_STRATEGY = {
|
10
11
|
dbType: 'DYNAMODB',
|
11
12
|
provisionStrategy: 'DEFAULT',
|
@@ -20,8 +21,8 @@ class AmplifyGraphqlDefinition {
|
|
20
21
|
* **NOTE** The 'dataSourceStrategy' configuration option is in preview and is not recommended to use with production systems.
|
21
22
|
*
|
22
23
|
* @param schema the graphql input as a string
|
23
|
-
* @param dataSourceStrategy the provisioning definition for datasources that resolve `@model`s in this schema.
|
24
|
-
* CloudFormation will be used by default.
|
24
|
+
* @param dataSourceStrategy the provisioning definition for datasources that resolve `@model`s and custom SQL statements in this schema.
|
25
|
+
* The DynamoDB from CloudFormation will be used by default.
|
25
26
|
* @experimental dataSourceStrategy
|
26
27
|
* @returns a fully formed amplify graphql definition
|
27
28
|
*/
|
@@ -31,6 +32,7 @@ class AmplifyGraphqlDefinition {
|
|
31
32
|
functionSlots: [],
|
32
33
|
referencedLambdaFunctions: {},
|
33
34
|
dataSourceStrategies: (0, internal_1.constructDataSourceStrategyMap)(schema, dataSourceStrategy),
|
35
|
+
customSqlDataSourceStrategies: (0, data_source_config_1.constructCustomSqlDataSourceStrategies)(schema, dataSourceStrategy),
|
34
36
|
};
|
35
37
|
}
|
36
38
|
/**
|
@@ -43,12 +45,7 @@ class AmplifyGraphqlDefinition {
|
|
43
45
|
filePaths = [filePaths];
|
44
46
|
}
|
45
47
|
const schema = filePaths.map((filePath) => new aws_appsync_1.SchemaFile({ filePath }).definition).join(os.EOL);
|
46
|
-
return
|
47
|
-
schema,
|
48
|
-
functionSlots: [],
|
49
|
-
referencedLambdaFunctions: {},
|
50
|
-
dataSourceStrategies: (0, internal_1.constructDataSourceStrategyMap)(schema, exports.DEFAULT_MODEL_DATA_SOURCE_STRATEGY),
|
51
|
-
};
|
48
|
+
return AmplifyGraphqlDefinition.fromString(schema, exports.DEFAULT_MODEL_DATA_SOURCE_STRATEGY);
|
52
49
|
}
|
53
50
|
/**
|
54
51
|
* Convert one or more appsync SchemaFile objects into an Amplify Graphql Schema
|
@@ -66,12 +63,7 @@ class AmplifyGraphqlDefinition {
|
|
66
63
|
filePaths = [filePaths];
|
67
64
|
}
|
68
65
|
const schema = filePaths.map((filePath) => new aws_appsync_1.SchemaFile({ filePath }).definition).join(os.EOL);
|
69
|
-
return
|
70
|
-
schema,
|
71
|
-
functionSlots: [],
|
72
|
-
referencedLambdaFunctions: {},
|
73
|
-
dataSourceStrategies: (0, internal_1.constructDataSourceStrategyMap)(schema, dataSourceStrategy),
|
74
|
-
};
|
66
|
+
return AmplifyGraphqlDefinition.fromString(schema, dataSourceStrategy);
|
75
67
|
}
|
76
68
|
/**
|
77
69
|
* Combines multiple IAmplifyGraphqlDefinitions into a single definition.
|
@@ -98,5 +90,5 @@ class AmplifyGraphqlDefinition {
|
|
98
90
|
}
|
99
91
|
exports.AmplifyGraphqlDefinition = AmplifyGraphqlDefinition;
|
100
92
|
_a = JSII_RTTI_SYMBOL_1;
|
101
|
-
AmplifyGraphqlDefinition[_a] = { fqn: "@aws-amplify/graphql-api-construct.AmplifyGraphqlDefinition", version: "1.4.
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
93
|
+
AmplifyGraphqlDefinition[_a] = { fqn: "@aws-amplify/graphql-api-construct.AmplifyGraphqlDefinition", version: "1.4.3" };
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1ncmFwaHFsLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYW1wbGlmeS1ncmFwaHFsLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIseURBQXFEO0FBRXJELHlDQUE0RDtBQUU1RCxzRUFBdUY7QUFFMUUsUUFBQSxrQ0FBa0MsR0FBNEI7SUFDekUsTUFBTSxFQUFFLFVBQVU7SUFDbEIsaUJBQWlCLEVBQUUsU0FBUztDQUM3QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFhLHdCQUF3QjtJQUNuQzs7Ozs7Ozs7OztPQVVHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixNQUFjLEVBQ2QscUJBQThDLDBDQUFrQztRQUVoRixPQUFPO1lBQ0wsTUFBTTtZQUNOLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLHlCQUF5QixFQUFFLEVBQUU7WUFDN0Isb0JBQW9CLEVBQUUsSUFBQSx5Q0FBOEIsRUFBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUM7WUFDaEYsNkJBQTZCLEVBQUUsSUFBQSwyREFBc0MsRUFBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUM7U0FDbEcsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQW1CO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdCLFNBQVMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSx3QkFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pHLE9BQU8sd0JBQXdCLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSwwQ0FBa0MsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsTUFBTSxDQUFDLG9CQUFvQixDQUN6QixTQUE0QixFQUM1QixxQkFBOEMsMENBQWtDO1FBRWhGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdCLFNBQVMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSx3QkFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pHLE9BQU8sd0JBQXdCLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUF3QztRQUNyRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztTQUN4RTtRQUNELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkI7UUFDRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztZQUN6RCxhQUFhLEVBQUUsRUFBRTtZQUNqQix5QkFBeUIsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLHlCQUF5QixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDL0csb0JBQW9CLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQ3RHLENBQUM7SUFDSixDQUFDOztBQWpGSCw0REFrRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgeyBTY2hlbWFGaWxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwcHN5bmMnO1xuaW1wb3J0IHsgSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgY29uc3RydWN0RGF0YVNvdXJjZVN0cmF0ZWd5TWFwIH0gZnJvbSAnLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyBNb2RlbERhdGFTb3VyY2VTdHJhdGVneSB9IGZyb20gJy4vbW9kZWwtZGF0YXNvdXJjZS1zdHJhdGVneSc7XG5pbXBvcnQgeyBjb25zdHJ1Y3RDdXN0b21TcWxEYXRhU291cmNlU3RyYXRlZ2llcyB9IGZyb20gJy4vaW50ZXJuYWwvZGF0YS1zb3VyY2UtY29uZmlnJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTU9ERUxfREFUQV9TT1VSQ0VfU1RSQVRFR1k6IE1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5ID0ge1xuICBkYlR5cGU6ICdEWU5BTU9EQicsXG4gIHByb3Zpc2lvblN0cmF0ZWd5OiAnREVGQVVMVCcsXG59O1xuXG4vKipcbiAqIENsYXNzIGV4cG9zaW5nIHV0aWxpdGllcyB0byBwcm9kdWNlIElBbXBsaWZ5R3JhcGhxbERlZmluaXRpb24gb2JqZWN0cyBnaXZlbiB2YXJpb3VzIGlucHV0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBQcm9kdWNlIGEgc2NoZW1hIGRlZmluaXRpb24gZnJvbSBhIHN0cmluZyBpbnB1dC5cbiAgICpcbiAgICogKipOT1RFKiogVGhlICdkYXRhU291cmNlU3RyYXRlZ3knIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGluIHByZXZpZXcgYW5kIGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2Ugd2l0aCBwcm9kdWN0aW9uIHN5c3RlbXMuXG4gICAqXG4gICAqIEBwYXJhbSBzY2hlbWEgdGhlIGdyYXBocWwgaW5wdXQgYXMgYSBzdHJpbmdcbiAgICogQHBhcmFtIGRhdGFTb3VyY2VTdHJhdGVneSB0aGUgcHJvdmlzaW9uaW5nIGRlZmluaXRpb24gZm9yIGRhdGFzb3VyY2VzIHRoYXQgcmVzb2x2ZSBgQG1vZGVsYHMgYW5kIGN1c3RvbSBTUUwgc3RhdGVtZW50cyBpbiB0aGlzIHNjaGVtYS5cbiAgICogVGhlIER5bmFtb0RCIGZyb20gQ2xvdWRGb3JtYXRpb24gd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqIEBleHBlcmltZW50YWwgZGF0YVNvdXJjZVN0cmF0ZWd5XG4gICAqIEByZXR1cm5zIGEgZnVsbHkgZm9ybWVkIGFtcGxpZnkgZ3JhcGhxbCBkZWZpbml0aW9uXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0cmluZyhcbiAgICBzY2hlbWE6IHN0cmluZyxcbiAgICBkYXRhU291cmNlU3RyYXRlZ3k6IE1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5ID0gREVGQVVMVF9NT0RFTF9EQVRBX1NPVVJDRV9TVFJBVEVHWSxcbiAgKTogSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVtYSxcbiAgICAgIGZ1bmN0aW9uU2xvdHM6IFtdLFxuICAgICAgcmVmZXJlbmNlZExhbWJkYUZ1bmN0aW9uczoge30sXG4gICAgICBkYXRhU291cmNlU3RyYXRlZ2llczogY29uc3RydWN0RGF0YVNvdXJjZVN0cmF0ZWd5TWFwKHNjaGVtYSwgZGF0YVNvdXJjZVN0cmF0ZWd5KSxcbiAgICAgIGN1c3RvbVNxbERhdGFTb3VyY2VTdHJhdGVnaWVzOiBjb25zdHJ1Y3RDdXN0b21TcWxEYXRhU291cmNlU3RyYXRlZ2llcyhzY2hlbWEsIGRhdGFTb3VyY2VTdHJhdGVneSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IG9uZSBvciBtb3JlIGFwcHN5bmMgU2NoZW1hRmlsZSBvYmplY3RzIGludG8gYW4gQW1wbGlmeSBHcmFwaHFsIFNjaGVtYSwgYmluZGluZyB0aGVtIHRvIGEgRHluYW1vREIgZGF0YSBzb3VyY2UuXG4gICAqIEBwYXJhbSBmaWxlUGF0aHMgb25lIG9yIG1vcmUgcGF0aHMgdG8gdGhlIGdyYXBocWwgZmlsZXMgdG8gcHJvY2Vzc1xuICAgKiBAcmV0dXJucyBhIGZ1bGx5IGZvcm1lZCBhbXBsaWZ5IGdyYXBocWwgZGVmaW5pdGlvbiwgd2hvc2UgbW9kZWxzIHdpbGwgYmUgcmVzb2x2ZWQgYnkgRHluYW1vREIgdGFibGVzIGNyZWF0ZWQgZHVyaW5nIGRlcGxveW1lbnQuXG4gICAqL1xuICBzdGF0aWMgZnJvbUZpbGVzKC4uLmZpbGVQYXRoczogc3RyaW5nW10pOiBJQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsZVBhdGhzKSkge1xuICAgICAgZmlsZVBhdGhzID0gW2ZpbGVQYXRoc107XG4gICAgfVxuICAgIGNvbnN0IHNjaGVtYSA9IGZpbGVQYXRocy5tYXAoKGZpbGVQYXRoKSA9PiBuZXcgU2NoZW1hRmlsZSh7IGZpbGVQYXRoIH0pLmRlZmluaXRpb24pLmpvaW4ob3MuRU9MKTtcbiAgICByZXR1cm4gQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uLmZyb21TdHJpbmcoc2NoZW1hLCBERUZBVUxUX01PREVMX0RBVEFfU09VUkNFX1NUUkFURUdZKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IG9uZSBvciBtb3JlIGFwcHN5bmMgU2NoZW1hRmlsZSBvYmplY3RzIGludG8gYW4gQW1wbGlmeSBHcmFwaHFsIFNjaGVtYVxuICAgKlxuICAgKiAqKk5PVEUqKiBUaGlzIEFQSSBpcyBpbiBwcmV2aWV3IGFuZCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIHdpdGggcHJvZHVjdGlvbiBzeXN0ZW1zLlxuICAgKlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqIEBwYXJhbSBmaWxlUGF0aHMgb25lIG9yIG1vcmUgcGF0aHMgdG8gdGhlIGdyYXBocWwgZmlsZXMgdG8gcHJvY2Vzc1xuICAgKiBAcGFyYW0gZGF0YVNvdXJjZVN0cmF0ZWd5IHRoZSBwcm92aXNpb25pbmcgZGVmaW5pdGlvbiBmb3IgZGF0YXNvdXJjZXMgdGhhdCByZXNvbHZlIGBAbW9kZWxgcyBpbiB0aGlzIHNjaGVtYS4gVGhlIER5bmFtb0RCIGZyb21cbiAgICogQ2xvdWRGb3JtYXRpb24gd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqIEByZXR1cm5zIGEgZnVsbHkgZm9ybWVkIGFtcGxpZnkgZ3JhcGhxbCBkZWZpbml0aW9uXG4gICAqL1xuICBzdGF0aWMgZnJvbUZpbGVzQW5kU3RyYXRlZ3koXG4gICAgZmlsZVBhdGhzOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBkYXRhU291cmNlU3RyYXRlZ3k6IE1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5ID0gREVGQVVMVF9NT0RFTF9EQVRBX1NPVVJDRV9TVFJBVEVHWSxcbiAgKTogSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbGVQYXRocykpIHtcbiAgICAgIGZpbGVQYXRocyA9IFtmaWxlUGF0aHNdO1xuICAgIH1cbiAgICBjb25zdCBzY2hlbWEgPSBmaWxlUGF0aHMubWFwKChmaWxlUGF0aCkgPT4gbmV3IFNjaGVtYUZpbGUoeyBmaWxlUGF0aCB9KS5kZWZpbml0aW9uKS5qb2luKG9zLkVPTCk7XG4gICAgcmV0dXJuIEFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbi5mcm9tU3RyaW5nKHNjaGVtYSwgZGF0YVNvdXJjZVN0cmF0ZWd5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21iaW5lcyBtdWx0aXBsZSBJQW1wbGlmeUdyYXBocWxEZWZpbml0aW9ucyBpbnRvIGEgc2luZ2xlIGRlZmluaXRpb24uXG4gICAqXG4gICAqICoqTk9URSoqIFRoaXMgQVBJIGlzIGluIHByZXZpZXcgYW5kIGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2Ugd2l0aCBwcm9kdWN0aW9uIHN5c3RlbXMuXG4gICAqXG4gICAqIEBleHBlcmltZW50YWxcbiAgICogQHBhcmFtIGRlZmluaXRpb25zIHRoZSBkZWZpbml0aW9ucyB0byBjb21iaW5lXG4gICAqL1xuICBzdGF0aWMgY29tYmluZShkZWZpbml0aW9uczogSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbltdKTogSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiB7XG4gICAgaWYgKGRlZmluaXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGVmaW5pdGlvbnMgb2YgYW1wbGlmeSBHcmFwaFFMIGNhbm5vdCBiZSBlbXB0eS4nKTtcbiAgICB9XG4gICAgaWYgKGRlZmluaXRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGRlZmluaXRpb25zWzBdO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1hOiBkZWZpbml0aW9ucy5tYXAoKGRlZikgPT4gZGVmLnNjaGVtYSkuam9pbihvcy5FT0wpLFxuICAgICAgZnVuY3Rpb25TbG90czogW10sXG4gICAgICByZWZlcmVuY2VkTGFtYmRhRnVuY3Rpb25zOiBkZWZpbml0aW9ucy5yZWR1Y2UoKGFjYywgY3VyKSA9PiAoeyAuLi5hY2MsIC4uLmN1ci5yZWZlcmVuY2VkTGFtYmRhRnVuY3Rpb25zIH0pLCB7fSksXG4gICAgICBkYXRhU291cmNlU3RyYXRlZ2llczogZGVmaW5pdGlvbnMucmVkdWNlKChhY2MsIGN1cikgPT4gKHsgLi4uYWNjLCAuLi5jdXIuZGF0YVNvdXJjZVN0cmF0ZWdpZXMgfSksIHt9KSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
package/lib/index.d.ts
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
export type { IAMAuthorizationConfig, UserPoolAuthorizationConfig, OIDCAuthorizationConfig, ApiKeyAuthorizationConfig, LambdaAuthorizationConfig, AuthorizationModes, PartialTranslationBehavior, AmplifyGraphqlApiProps, AmplifyGraphqlApiResources, AmplifyGraphqlApiCfnResources, FunctionSlotBase, MutationFunctionSlot, QueryFunctionSlot, SubscriptionFunctionSlot, FunctionSlot, FunctionSlotOverride, ConflictResolution, ConflictDetectionType, OptimisticConflictResolutionStrategy, CustomConflictResolutionStrategy, AutomergeConflictResolutionStrategy, ConflictResolutionStrategyBase, ConflictResolutionStrategy, TranslationBehavior, IAmplifyGraphqlDefinition, IBackendOutputStorageStrategy, IBackendOutputEntry, AddFunctionProps,
|
1
|
+
export type { IAMAuthorizationConfig, UserPoolAuthorizationConfig, OIDCAuthorizationConfig, ApiKeyAuthorizationConfig, LambdaAuthorizationConfig, AuthorizationModes, PartialTranslationBehavior, AmplifyGraphqlApiProps, AmplifyGraphqlApiResources, AmplifyGraphqlApiCfnResources, FunctionSlotBase, MutationFunctionSlot, QueryFunctionSlot, SubscriptionFunctionSlot, FunctionSlot, FunctionSlotOverride, ConflictResolution, ConflictDetectionType, OptimisticConflictResolutionStrategy, CustomConflictResolutionStrategy, AutomergeConflictResolutionStrategy, ConflictResolutionStrategyBase, ConflictResolutionStrategy, TranslationBehavior, IAmplifyGraphqlDefinition, IBackendOutputStorageStrategy, IBackendOutputEntry, AddFunctionProps, } from './types';
|
2
2
|
export { AmplifyGraphqlApi } from './amplify-graphql-api';
|
3
3
|
export { AmplifyGraphqlDefinition } from './amplify-graphql-definition';
|
4
4
|
export { AmplifyDynamoDbTableWrapper, TimeToLiveSpecification, ProvisionedThroughput, SSESpecification, SSEType, StreamSpecification, } from './amplify-dynamodb-table-wrapper';
|
5
|
+
export { SQLLambdaModelDataSourceStrategyFactory } from './sql-model-datasource-strategy';
|
6
|
+
export * from './model-datasource-strategy';
|
package/lib/index.js
CHANGED
@@ -1,6 +1,20 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.SSEType = exports.AmplifyDynamoDbTableWrapper = exports.AmplifyGraphqlDefinition = exports.AmplifyGraphqlApi = void 0;
|
17
|
+
exports.SQLLambdaModelDataSourceStrategyFactory = exports.SSEType = exports.AmplifyDynamoDbTableWrapper = exports.AmplifyGraphqlDefinition = exports.AmplifyGraphqlApi = void 0;
|
4
18
|
var amplify_graphql_api_1 = require("./amplify-graphql-api");
|
5
19
|
Object.defineProperty(exports, "AmplifyGraphqlApi", { enumerable: true, get: function () { return amplify_graphql_api_1.AmplifyGraphqlApi; } });
|
6
20
|
var amplify_graphql_definition_1 = require("./amplify-graphql-definition");
|
@@ -8,4 +22,7 @@ Object.defineProperty(exports, "AmplifyGraphqlDefinition", { enumerable: true, g
|
|
8
22
|
var amplify_dynamodb_table_wrapper_1 = require("./amplify-dynamodb-table-wrapper");
|
9
23
|
Object.defineProperty(exports, "AmplifyDynamoDbTableWrapper", { enumerable: true, get: function () { return amplify_dynamodb_table_wrapper_1.AmplifyDynamoDbTableWrapper; } });
|
10
24
|
Object.defineProperty(exports, "SSEType", { enumerable: true, get: function () { return amplify_dynamodb_table_wrapper_1.SSEType; } });
|
11
|
-
|
25
|
+
var sql_model_datasource_strategy_1 = require("./sql-model-datasource-strategy");
|
26
|
+
Object.defineProperty(exports, "SQLLambdaModelDataSourceStrategyFactory", { enumerable: true, get: function () { return sql_model_datasource_strategy_1.SQLLambdaModelDataSourceStrategyFactory; } });
|
27
|
+
__exportStar(require("./model-datasource-strategy"), exports);
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQ0EsNkRBQTBEO0FBQWpELHdIQUFBLGlCQUFpQixPQUFBO0FBQzFCLDJFQUF3RTtBQUEvRCxzSUFBQSx3QkFBd0IsT0FBQTtBQUNqQyxtRkFPMEM7QUFOeEMsNklBQUEsMkJBQTJCLE9BQUE7QUFJM0IseUhBQUEsT0FBTyxPQUFBO0FBR1QsaUZBQTBGO0FBQWpGLHdKQUFBLHVDQUF1QyxPQUFBO0FBQ2hELDhEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEFUVEVOVElPTlxuICpcbiAqIElmIHlvdSBtb2RpZnkgdGhpcyBmaWxlIHlvdSBtdXN0IGFsc28gbW9kaWZ5IHBhY2thZ2VzL2FtcGxpZnktZGF0YS1jb25zdHJ1Y3Qvc3JjL2luZGV4LnRzIHRvIGhhdmUgdGhlIHNhbWUgZXhwb3J0c1xuICovXG5leHBvcnQgdHlwZSB7XG4gIElBTUF1dGhvcml6YXRpb25Db25maWcsXG4gIFVzZXJQb29sQXV0aG9yaXphdGlvbkNvbmZpZyxcbiAgT0lEQ0F1dGhvcml6YXRpb25Db25maWcsXG4gIEFwaUtleUF1dGhvcml6YXRpb25Db25maWcsXG4gIExhbWJkYUF1dGhvcml6YXRpb25Db25maWcsXG4gIEF1dGhvcml6YXRpb25Nb2RlcyxcbiAgUGFydGlhbFRyYW5zbGF0aW9uQmVoYXZpb3IsXG4gIEFtcGxpZnlHcmFwaHFsQXBpUHJvcHMsXG4gIEFtcGxpZnlHcmFwaHFsQXBpUmVzb3VyY2VzLFxuICBBbXBsaWZ5R3JhcGhxbEFwaUNmblJlc291cmNlcyxcbiAgRnVuY3Rpb25TbG90QmFzZSxcbiAgTXV0YXRpb25GdW5jdGlvblNsb3QsXG4gIFF1ZXJ5RnVuY3Rpb25TbG90LFxuICBTdWJzY3JpcHRpb25GdW5jdGlvblNsb3QsXG4gIEZ1bmN0aW9uU2xvdCxcbiAgRnVuY3Rpb25TbG90T3ZlcnJpZGUsXG4gIENvbmZsaWN0UmVzb2x1dGlvbixcbiAgQ29uZmxpY3REZXRlY3Rpb25UeXBlLFxuICBPcHRpbWlzdGljQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3ksXG4gIEN1c3RvbUNvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5LFxuICBBdXRvbWVyZ2VDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSxcbiAgQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lCYXNlLFxuICBDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSxcbiAgVHJhbnNsYXRpb25CZWhhdmlvcixcbiAgSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbixcbiAgSUJhY2tlbmRPdXRwdXRTdG9yYWdlU3RyYXRlZ3ksXG4gIElCYWNrZW5kT3V0cHV0RW50cnksXG4gIEFkZEZ1bmN0aW9uUHJvcHMsXG59IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IHsgQW1wbGlmeUdyYXBocWxBcGkgfSBmcm9tICcuL2FtcGxpZnktZ3JhcGhxbC1hcGknO1xuZXhwb3J0IHsgQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uIH0gZnJvbSAnLi9hbXBsaWZ5LWdyYXBocWwtZGVmaW5pdGlvbic7XG5leHBvcnQge1xuICBBbXBsaWZ5RHluYW1vRGJUYWJsZVdyYXBwZXIsXG4gIFRpbWVUb0xpdmVTcGVjaWZpY2F0aW9uLFxuICBQcm92aXNpb25lZFRocm91Z2hwdXQsXG4gIFNTRVNwZWNpZmljYXRpb24sXG4gIFNTRVR5cGUsXG4gIFN0cmVhbVNwZWNpZmljYXRpb24sXG59IGZyb20gJy4vYW1wbGlmeS1keW5hbW9kYi10YWJsZS13cmFwcGVyJztcbmV4cG9ydCB7IFNRTExhbWJkYU1vZGVsRGF0YVNvdXJjZVN0cmF0ZWd5RmFjdG9yeSB9IGZyb20gJy4vc3FsLW1vZGVsLWRhdGFzb3VyY2Utc3RyYXRlZ3knO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC1kYXRhc291cmNlLXN0cmF0ZWd5JztcbiJdfQ==
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { DataSourceType } from '@aws-amplify/graphql-transformer-interfaces';
|
2
|
-
import { ModelDataSourceStrategy } from '../
|
1
|
+
import { CustomSqlDataSourceStrategy as ImplementationCustomSqlDataSourceStrategy, DataSourceType } from '@aws-amplify/graphql-transformer-interfaces';
|
2
|
+
import { CustomSqlDataSourceStrategy as InterfaceCustomSqlDataSourceStrategy, ModelDataSourceStrategy } from '../model-datasource-strategy';
|
3
3
|
type DataSourceConfig = {
|
4
4
|
modelToDatasourceMap: Map<string, DataSourceType>;
|
5
5
|
};
|
@@ -8,4 +8,23 @@ type DataSourceConfig = {
|
|
8
8
|
* transform processing requires. TODO: We can remove this once we refactor the internals to use ModelDataSourceStrategies natively.
|
9
9
|
*/
|
10
10
|
export declare const parseDataSourceConfig: (dataSourceDefinitionMap: Record<string, ModelDataSourceStrategy>) => DataSourceConfig;
|
11
|
+
/**
|
12
|
+
* Creates an interface flavor of customSqlDataSourceStrategies from a factory method's schema and data source. Internally, this function
|
13
|
+
* scans the fields of `Query` and `Mutation` looking for fields annotated with the `@sql` directive and designates the specified
|
14
|
+
* dataSourceStrategy to fulfill those custom queries.
|
15
|
+
*
|
16
|
+
* Note that we do not scan for `Subscription` fields: `@sql` directives are not allowed on those, and it wouldn't make sense to do so
|
17
|
+
* anyway, since subscriptions are processed from an incoming Mutation, not as the result of a direct datasource access.
|
18
|
+
*
|
19
|
+
* TODO: Reword this when we refactor to use Strategies throughout the implementation rather than DataSources.
|
20
|
+
*/
|
21
|
+
export declare const constructCustomSqlDataSourceStrategies: (schema: string, dataSourceStrategy: ModelDataSourceStrategy) => InterfaceCustomSqlDataSourceStrategy[];
|
22
|
+
/**
|
23
|
+
* We currently use a different type structure to model strategies in the interface than we do in the implementation. This maps the
|
24
|
+
* interface CustomSqlDataSourceStrategy (which uses SQLLambdaModelDataSourceStrategy) to the implementation flavor (which uses
|
25
|
+
* DataSourceType).
|
26
|
+
*
|
27
|
+
* TODO: Remove this once we refactor the internals to use strategies rather than DataSourceTypes
|
28
|
+
*/
|
29
|
+
export declare const mapInterfaceCustomSqlStrategiesToImplementationStrategies: (strategies?: InterfaceCustomSqlDataSourceStrategy[]) => ImplementationCustomSqlDataSourceStrategy[];
|
11
30
|
export {};
|