1 | ;
|
2 | var _a;
|
3 | Object.defineProperty(exports, "__esModule", { value: true });
|
4 | exports.FunctionUrl = exports.HttpMethod = exports.FunctionUrlAuthType = void 0;
|
5 | const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
6 | const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
7 | const iam = require("@aws-cdk/aws-iam");
|
8 | const core_1 = require("@aws-cdk/core");
|
9 | const lambda_generated_1 = require("./lambda.generated");
|
10 | /**
|
11 | * The auth types for a function url
|
12 | */
|
13 | var FunctionUrlAuthType;
|
14 | (function (FunctionUrlAuthType) {
|
15 | /**
|
16 | * Restrict access to authenticated IAM users only
|
17 | */
|
18 | FunctionUrlAuthType["AWS_IAM"] = "AWS_IAM";
|
19 | /**
|
20 | * Bypass IAM authentication to create a public endpoint
|
21 | */
|
22 | FunctionUrlAuthType["NONE"] = "NONE";
|
23 | })(FunctionUrlAuthType = exports.FunctionUrlAuthType || (exports.FunctionUrlAuthType = {}));
|
24 | /**
|
25 | * All http request methods
|
26 | */
|
27 | var HttpMethod;
|
28 | (function (HttpMethod) {
|
29 | /**
|
30 | * The GET method requests a representation of the specified resource.
|
31 | */
|
32 | HttpMethod["GET"] = "GET";
|
33 | /**
|
34 | * The PUT method replaces all current representations of the target resource with the request payload.
|
35 | */
|
36 | HttpMethod["PUT"] = "PUT";
|
37 | /**
|
38 | * The HEAD method asks for a response identical to that of a GET request, but without the response body.
|
39 | */
|
40 | HttpMethod["HEAD"] = "HEAD";
|
41 | /**
|
42 | * The POST method is used to submit an entity to the specified resource, often causing a change in state or side effects on the server.
|
43 | */
|
44 | HttpMethod["POST"] = "POST";
|
45 | /**
|
46 | * The DELETE method deletes the specified resource.
|
47 | */
|
48 | HttpMethod["DELETE"] = "DELETE";
|
49 | /**
|
50 | * The PATCH method applies partial modifications to a resource.
|
51 | */
|
52 | HttpMethod["PATCH"] = "PATCH";
|
53 | /**
|
54 | * The OPTIONS method describes the communication options for the target resource.
|
55 | */
|
56 | HttpMethod["OPTIONS"] = "OPTIONS";
|
57 | /**
|
58 | * The wildcard entry to allow all methods.
|
59 | */
|
60 | HttpMethod["ALL"] = "*";
|
61 | })(HttpMethod = exports.HttpMethod || (exports.HttpMethod = {}));
|
62 | /**
|
63 | * Defines a Lambda function url
|
64 | *
|
65 | * @resource AWS::Lambda::Url
|
66 | */
|
67 | class FunctionUrl extends core_1.Resource {
|
68 | constructor(scope, id, props) {
|
69 | var _b;
|
70 | super(scope, id);
|
71 | try {
|
72 | jsiiDeprecationWarnings._aws_cdk_aws_lambda_FunctionUrlProps(props);
|
73 | }
|
74 | catch (error) {
|
75 | if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
76 | Error.captureStackTrace(error, this.constructor);
|
77 | }
|
78 | throw error;
|
79 | }
|
80 | if (this.instanceOfVersion(props.function)) {
|
81 | throw new Error('FunctionUrl cannot be used with a Version');
|
82 | }
|
83 | const resource = new lambda_generated_1.CfnUrl(this, 'Resource', {
|
84 | authType: (_b = props.authType) !== null && _b !== void 0 ? _b : FunctionUrlAuthType.AWS_IAM,
|
85 | targetFunctionArn: props.function.functionArn,
|
86 | cors: props.cors ? this.renderCors(props.cors) : undefined,
|
87 | });
|
88 | this.url = resource.attrFunctionUrl;
|
89 | this.functionArn = resource.attrFunctionArn;
|
90 | this.function = props.function;
|
91 | if (props.authType === FunctionUrlAuthType.NONE) {
|
92 | props.function.addPermission('invoke-function-url', {
|
93 | principal: new iam.AnyPrincipal(),
|
94 | action: 'lambda:InvokeFunctionUrl',
|
95 | functionUrlAuthType: props.authType,
|
96 | });
|
97 | }
|
98 | }
|
99 | grantInvokeUrl(grantee) {
|
100 | return this.function.grantInvokeUrl(grantee);
|
101 | }
|
102 | instanceOfVersion(fn) {
|
103 | return 'version' in fn && !this.instanceOfAlias(fn);
|
104 | }
|
105 | instanceOfAlias(fn) {
|
106 | return 'aliasName' in fn;
|
107 | }
|
108 | renderCors(cors) {
|
109 | var _b, _c;
|
110 | return {
|
111 | allowCredentials: cors.allowCredentials,
|
112 | allowHeaders: cors.allowedHeaders,
|
113 | allowMethods: (_b = cors.allowedMethods) !== null && _b !== void 0 ? _b : [HttpMethod.ALL],
|
114 | allowOrigins: cors.allowedOrigins,
|
115 | exposeHeaders: cors.exposedHeaders,
|
116 | maxAge: (_c = cors.maxAge) === null || _c === void 0 ? void 0 : _c.toSeconds(),
|
117 | };
|
118 | }
|
119 | }
|
120 | exports.FunctionUrl = FunctionUrl;
|
121 | _a = JSII_RTTI_SYMBOL_1;
|
122 | FunctionUrl[_a] = { fqn: "@aws-cdk/aws-lambda.FunctionUrl", version: "1.154.0" };
|
123 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZnVuY3Rpb24tdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdDQUF3QztBQUN4Qyx3Q0FBOEQ7QUFLOUQseURBQTRDO0FBRTVDOztHQUVHO0FBQ0gsSUFBWSxtQkFVWDtBQVZELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsMENBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxvQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQVZXLG1CQUFtQixHQUFuQiwyQkFBbUIsS0FBbkIsMkJBQW1CLFFBVTlCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFVBaUNYO0FBakNELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILHlCQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILHlCQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILDJCQUFhLENBQUE7SUFDYjs7T0FFRztJQUNILDJCQUFhLENBQUE7SUFDYjs7T0FFRztJQUNILCtCQUFpQixDQUFBO0lBQ2pCOztPQUVHO0lBQ0gsNkJBQWUsQ0FBQTtJQUNmOztPQUVHO0lBQ0gsaUNBQW1CLENBQUE7SUFDbkI7O09BRUc7SUFDSCx1QkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQWpDVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQWlDckI7QUF1R0Q7Ozs7R0FJRztBQUNILE1BQWEsV0FBWSxTQUFRLGVBQVE7SUFhdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1Qjs7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7Ozs7OztRQUVqQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsTUFBTSxRQUFRLEdBQVcsSUFBSSx5QkFBTSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDcEQsUUFBUSxRQUFFLEtBQUssQ0FBQyxRQUFRLG1DQUFJLG1CQUFtQixDQUFDLE9BQU87WUFDdkQsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQzdDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUMzRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUUvQixJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssbUJBQW1CLENBQUMsSUFBSSxFQUFFO1lBQy9DLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFO2dCQUNsRCxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxFQUFFO2dCQUNqQyxNQUFNLEVBQUUsMEJBQTBCO2dCQUNsQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsUUFBUTthQUNwQyxDQUFDLENBQUM7U0FDSjtLQUNGO0lBRU0sY0FBYyxDQUFDLE9BQXVCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDOUM7SUFFTyxpQkFBaUIsQ0FBQyxFQUFhO1FBQ3JDLE9BQU8sU0FBUyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDckQ7SUFFTyxlQUFlLENBQUMsRUFBYTtRQUNuQyxPQUFPLFdBQVcsSUFBSSxFQUFFLENBQUM7S0FDMUI7SUFFTyxVQUFVLENBQUMsSUFBNEI7O1FBQzdDLE9BQU87WUFDTCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYztZQUNqQyxZQUFZLFFBQUUsSUFBSSxDQUFDLGNBQWMsbUNBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQ3JELFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYztZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbEMsTUFBTSxRQUFFLElBQUksQ0FBQyxNQUFNLDBDQUFFLFNBQVMsRUFBRTtTQUNqQyxDQUFDO0tBQ0g7O0FBNURILGtDQTZEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGlhbSBmcm9tICdAYXdzLWNkay9hd3MtaWFtJztcbmltcG9ydCB7IER1cmF0aW9uLCBJUmVzb3VyY2UsIFJlc291cmNlIH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElBbGlhcyB9IGZyb20gJy4vYWxpYXMnO1xuaW1wb3J0IHsgSUZ1bmN0aW9uIH0gZnJvbSAnLi9mdW5jdGlvbi1iYXNlJztcbmltcG9ydCB7IElWZXJzaW9uIH0gZnJvbSAnLi9sYW1iZGEtdmVyc2lvbic7XG5pbXBvcnQgeyBDZm5VcmwgfSBmcm9tICcuL2xhbWJkYS5nZW5lcmF0ZWQnO1xuXG4vKipcbiAqIFRoZSBhdXRoIHR5cGVzIGZvciBhIGZ1bmN0aW9uIHVybFxuICovXG5leHBvcnQgZW51bSBGdW5jdGlvblVybEF1dGhUeXBlIHtcbiAgLyoqXG4gICAqIFJlc3RyaWN0IGFjY2VzcyB0byBhdXRoZW50aWNhdGVkIElBTSB1c2VycyBvbmx5XG4gICAqL1xuICBBV1NfSUFNID0gJ0FXU19JQU0nLFxuXG4gIC8qKlxuICAgKiBCeXBhc3MgSUFNIGF1dGhlbnRpY2F0aW9uIHRvIGNyZWF0ZSBhIHB1YmxpYyBlbmRwb2ludFxuICAgKi9cbiAgTk9ORSA9ICdOT05FJyxcbn1cblxuLyoqXG4gKiBBbGwgaHR0cCByZXF1ZXN0IG1ldGhvZHNcbiAqL1xuZXhwb3J0IGVudW0gSHR0cE1ldGhvZCB7XG4gIC8qKlxuICAgKiBUaGUgR0VUIG1ldGhvZCByZXF1ZXN0cyBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UuXG4gICAqL1xuICBHRVQgPSAnR0VUJyxcbiAgLyoqXG4gICAqIFRoZSBQVVQgbWV0aG9kIHJlcGxhY2VzIGFsbCBjdXJyZW50IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgdGFyZ2V0IHJlc291cmNlIHdpdGggdGhlIHJlcXVlc3QgcGF5bG9hZC5cbiAgICovXG4gIFBVVCA9ICdQVVQnLFxuICAvKipcbiAgICogVGhlIEhFQUQgbWV0aG9kIGFza3MgZm9yIGEgcmVzcG9uc2UgaWRlbnRpY2FsIHRvIHRoYXQgb2YgYSBHRVQgcmVxdWVzdCwgYnV0IHdpdGhvdXQgdGhlIHJlc3BvbnNlIGJvZHkuXG4gICAqL1xuICBIRUFEID0gJ0hFQUQnLFxuICAvKipcbiAgICogVGhlIFBPU1QgbWV0aG9kIGlzIHVzZWQgdG8gc3VibWl0IGFuIGVudGl0eSB0byB0aGUgc3BlY2lmaWVkIHJlc291cmNlLCBvZnRlbiBjYXVzaW5nIGEgY2hhbmdlIGluIHN0YXRlIG9yIHNpZGUgZWZmZWN0cyBvbiB0aGUgc2VydmVyLlxuICAgKi9cbiAgUE9TVCA9ICdQT1NUJyxcbiAgLyoqXG4gICAqIFRoZSBERUxFVEUgbWV0aG9kIGRlbGV0ZXMgdGhlIHNwZWNpZmllZCByZXNvdXJjZS5cbiAgICovXG4gIERFTEVURSA9ICdERUxFVEUnLFxuICAvKipcbiAgICogVGhlIFBBVENIIG1ldGhvZCBhcHBsaWVzIHBhcnRpYWwgbW9kaWZpY2F0aW9ucyB0byBhIHJlc291cmNlLlxuICAgKi9cbiAgUEFUQ0ggPSAnUEFUQ0gnLFxuICAvKipcbiAgICogVGhlIE9QVElPTlMgbWV0aG9kIGRlc2NyaWJlcyB0aGUgY29tbXVuaWNhdGlvbiBvcHRpb25zIGZvciB0aGUgdGFyZ2V0IHJlc291cmNlLlxuICAgKi9cbiAgT1BUSU9OUyA9ICdPUFRJT05TJyxcbiAgLyoqXG4gICAqIFRoZSB3aWxkY2FyZCBlbnRyeSB0byBhbGxvdyBhbGwgbWV0aG9kcy5cbiAgICovXG4gIEFMTCA9ICcqJyxcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgYSBjcm9zcy1vcmlnaW4gYWNjZXNzIHByb3BlcnR5IGZvciBhIGZ1bmN0aW9uIFVSTFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uVXJsQ29yc09wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyBjb29raWVzIG9yIG90aGVyIGNyZWRlbnRpYWxzIGluIHJlcXVlc3RzIHRvIHlvdXIgZnVuY3Rpb24gVVJMLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dDcmVkZW50aWFscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhlYWRlcnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnMgaGVhZGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGhlYWRlcnMgYWxsb3dlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRIZWFkZXJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIEhUVFAgbWV0aG9kIHRoYXQgeW91IGFsbG93IHRoZSBvcmlnaW4gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBbSHR0cE1ldGhvZC5BTExdXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkTWV0aG9kcz86IEh0dHBNZXRob2RbXTtcblxuICAvKipcbiAgICogT25lIG9yIG1vcmUgb3JpZ2lucyB5b3Ugd2FudCBjdXN0b21lcnMgdG8gYmUgYWJsZSB0byBhY2Nlc3MgdGhlIGJ1Y2tldCBmcm9tLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG9yaWdpbnMgYWxsb3dlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRPcmlnaW5zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9uZSBvciBtb3JlIGhlYWRlcnMgaW4gdGhlIHJlc3BvbnNlIHRoYXQgeW91IHdhbnQgY3VzdG9tZXJzIHRvIGJlIGFibGUgdG8gYWNjZXNzIGZyb20gdGhlaXIgYXBwbGljYXRpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGhlYWRlcnMgZXhwb3NlZC5cbiAgICovXG4gIHJlYWRvbmx5IGV4cG9zZWRIZWFkZXJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIHNlY29uZHMgdGhhdCB5b3VyIGJyb3dzZXIgaXMgdG8gY2FjaGUgdGhlIHByZWZsaWdodCByZXNwb25zZSBmb3IgdGhlIHNwZWNpZmllZCByZXNvdXJjZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBCcm93c2VyIGRlZmF1bHQgb2YgNSBzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4QWdlPzogRHVyYXRpb247XG59XG5cbi8qKlxuICogQSBMYW1iZGEgZnVuY3Rpb24gVXJsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZ1bmN0aW9uVXJsIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSB1cmwgb2YgdGhlIExhbWJkYSBmdW5jdGlvbi5cbiAgICpcbiAgICogQGF0dHJpYnV0ZSBGdW5jdGlvblVybFxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGZ1bmN0aW9uIHRoaXMgVVJMIHJlZmVycyB0b1xuICAgKlxuICAgKiBAYXR0cmlidXRlIEZ1bmN0aW9uQXJuXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbkFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gaW52b2tlIHRoaXMgTGFtYmRhIEZ1bmN0aW9uIFVSTFxuICAgKi9cbiAgZ3JhbnRJbnZva2VVcmwoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gYWRkIGEgdXJsIHRvIGEgTGFtYmRhIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25VcmxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGF1dGhlbnRpY2F0aW9uIHRoYXQgeW91ciBmdW5jdGlvbiBVUkwgdXNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgRnVuY3Rpb25VcmxBdXRoVHlwZS5BV1NfSUFNXG4gICAqL1xuICByZWFkb25seSBhdXRoVHlwZT86IEZ1bmN0aW9uVXJsQXV0aFR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBjcm9zcy1vcmlnaW4gcmVzb3VyY2Ugc2hhcmluZyAoQ09SUykgc2V0dGluZ3MgZm9yIHlvdXIgZnVuY3Rpb24gVVJMLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIENPUlMgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNvcnM/OiBGdW5jdGlvblVybENvcnNPcHRpb25zO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgRnVuY3Rpb25VcmxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvblVybFByb3BzIGV4dGVuZHMgRnVuY3Rpb25VcmxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0byB3aGljaCB0aGlzIHVybCByZWZlcnMuXG4gICAqIEl0IGNhbiBhbHNvIGJlIGFuIGBBbGlhc2AgYnV0IG5vdCBhIGBWZXJzaW9uYC5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uOiBJRnVuY3Rpb247XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIExhbWJkYSBmdW5jdGlvbiB1cmxcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpMYW1iZGE6OlVybFxuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25VcmwgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElGdW5jdGlvblVybCB7XG4gIC8qKlxuICAgKiBUaGUgdXJsIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGZ1bmN0aW9uIHRoaXMgVVJMIHJlZmVycyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uQXJuOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBmdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGdW5jdGlvblVybFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmICh0aGlzLmluc3RhbmNlT2ZWZXJzaW9uKHByb3BzLmZ1bmN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGdW5jdGlvblVybCBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgVmVyc2lvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlOiBDZm5VcmwgPSBuZXcgQ2ZuVXJsKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGF1dGhUeXBlOiBwcm9wcy5hdXRoVHlwZSA/PyBGdW5jdGlvblVybEF1dGhUeXBlLkFXU19JQU0sXG4gICAgICB0YXJnZXRGdW5jdGlvbkFybjogcHJvcHMuZnVuY3Rpb24uZnVuY3Rpb25Bcm4sXG4gICAgICBjb3JzOiBwcm9wcy5jb3JzID8gdGhpcy5yZW5kZXJDb3JzKHByb3BzLmNvcnMpIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgdGhpcy51cmwgPSByZXNvdXJjZS5hdHRyRnVuY3Rpb25Vcmw7XG4gICAgdGhpcy5mdW5jdGlvbkFybiA9IHJlc291cmNlLmF0dHJGdW5jdGlvbkFybjtcbiAgICB0aGlzLmZ1bmN0aW9uID0gcHJvcHMuZnVuY3Rpb247XG5cbiAgICBpZiAocHJvcHMuYXV0aFR5cGUgPT09IEZ1bmN0aW9uVXJsQXV0aFR5cGUuTk9ORSkge1xuICAgICAgcHJvcHMuZnVuY3Rpb24uYWRkUGVybWlzc2lvbignaW52b2tlLWZ1bmN0aW9uLXVybCcsIHtcbiAgICAgICAgcHJpbmNpcGFsOiBuZXcgaWFtLkFueVByaW5jaXBhbCgpLFxuICAgICAgICBhY3Rpb246ICdsYW1iZGE6SW52b2tlRnVuY3Rpb25VcmwnLFxuICAgICAgICBmdW5jdGlvblVybEF1dGhUeXBlOiBwcm9wcy5hdXRoVHlwZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBncmFudEludm9rZVVybChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb24uZ3JhbnRJbnZva2VVcmwoZ3JhbnRlZSk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbmNlT2ZWZXJzaW9uKGZuOiBJRnVuY3Rpb24pOiBmbiBpcyBJVmVyc2lvbiB7XG4gICAgcmV0dXJuICd2ZXJzaW9uJyBpbiBmbiAmJiAhdGhpcy5pbnN0YW5jZU9mQWxpYXMoZm4pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YW5jZU9mQWxpYXMoZm46IElGdW5jdGlvbik6IGZuIGlzIElBbGlhcyB7XG4gICAgcmV0dXJuICdhbGlhc05hbWUnIGluIGZuO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDb3JzKGNvcnM6IEZ1bmN0aW9uVXJsQ29yc09wdGlvbnMpOiBDZm5VcmwuQ29yc1Byb3BlcnR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWxsb3dDcmVkZW50aWFsczogY29ycy5hbGxvd0NyZWRlbnRpYWxzLFxuICAgICAgYWxsb3dIZWFkZXJzOiBjb3JzLmFsbG93ZWRIZWFkZXJzLFxuICAgICAgYWxsb3dNZXRob2RzOiBjb3JzLmFsbG93ZWRNZXRob2RzID8/IFtIdHRwTWV0aG9kLkFMTF0sXG4gICAgICBhbGxvd09yaWdpbnM6IGNvcnMuYWxsb3dlZE9yaWdpbnMsXG4gICAgICBleHBvc2VIZWFkZXJzOiBjb3JzLmV4cG9zZWRIZWFkZXJzLFxuICAgICAgbWF4QWdlOiBjb3JzLm1heEFnZT8udG9TZWNvbmRzKCksXG4gICAgfTtcbiAgfVxufVxuIl19 |
\ | No newline at end of file |