@beesolve/lambda-bun-runtime 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ import { Function, LayerVersion, LayerVersionProps } from "aws-cdk-lib/aws-lambda";
2
+ import { type NodejsFunctionProps } from "aws-cdk-lib/aws-lambda-nodejs";
3
+ import { Construct } from "constructs";
4
+ export interface BunFunctionProps {
5
+ /**
6
+ * Example: `${__dirname}/dist/index.js`
7
+ */
8
+ readonly entrypoint: `${string}.js`;
9
+ /**
10
+ * Bun layer needs to be set.
11
+ */
12
+ readonly bunLayer: BunLambdaLayer;
13
+ }
14
+ export interface BunFunctionProps extends Omit<NodejsFunctionProps, "entry" | "runtime" | "architecture" | "handler" | "code" | "bundling"> {
15
+ }
16
+ export declare class BunFunction extends Function {
17
+ constructor(scope: Construct, id: string, props: BunFunctionProps);
18
+ }
19
+ export interface BunLambdaLayerProps {
20
+ }
21
+ export interface BunLambdaLayerProps extends Omit<LayerVersionProps, "description" | "removalPolicy" | "code" | "compatibleArchitectures" | "compatibleRuntimes" | "layerVersionName"> {
22
+ }
23
+ export declare class BunLambdaLayer extends LayerVersion {
24
+ constructor(scope: Construct, id: string, props?: BunLambdaLayerProps);
25
+ }
package/lib/index.js ADDED
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BunLambdaLayer = exports.BunFunction = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
8
+ const bunVersion = "1.3.3";
9
+ class BunFunction extends aws_lambda_1.Function {
10
+ constructor(scope, id, props) {
11
+ const { entrypoint, ...rest } = props;
12
+ super(scope, id, {
13
+ ...rest,
14
+ code: aws_lambda_1.Code.fromAsset(`${__dirname}/${entrypoint}`),
15
+ handler: `${toEntry(entrypoint)}.fetch`,
16
+ runtime: aws_lambda_1.Runtime.PROVIDED_AL2,
17
+ architecture: aws_lambda_1.Architecture.ARM_64,
18
+ layers: [rest.bunLayer, ...(rest.layers ?? [])],
19
+ });
20
+ }
21
+ }
22
+ exports.BunFunction = BunFunction;
23
+ _a = JSII_RTTI_SYMBOL_1;
24
+ BunFunction[_a] = { fqn: "@beesolve/lambda-bun-runtime.BunFunction", version: "1.2.0" };
25
+ class BunLambdaLayer extends aws_lambda_1.LayerVersion {
26
+ constructor(scope, id, props) {
27
+ super(scope, id, {
28
+ ...(props ?? {}),
29
+ description: "A custom Lambda layer for Bun.",
30
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
31
+ code: aws_lambda_1.Code.fromAsset(`${__dirname}/bun-lambda-layer-${bunVersion}.zip`),
32
+ compatibleArchitectures: [aws_lambda_1.Architecture.ARM_64],
33
+ compatibleRuntimes: [aws_lambda_1.Runtime.PROVIDED_AL2],
34
+ layerVersionName: "BunRuntime",
35
+ });
36
+ }
37
+ }
38
+ exports.BunLambdaLayer = BunLambdaLayer;
39
+ _b = JSII_RTTI_SYMBOL_1;
40
+ BunLambdaLayer[_b] = { fqn: "@beesolve/lambda-bun-runtime.BunLambdaLayer", version: "1.2.0" };
41
+ function toEntry(entrypoint) {
42
+ const entry = entrypoint.split("/").pop()?.split(".").shift();
43
+ if (entry == null)
44
+ throw Error(`Cannot parse entry from entrypoint.`);
45
+ return entry;
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBNEM7QUFDNUMsdURBT2dDO0FBSWhDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztBQWtCM0IsTUFBYSxXQUFZLFNBQVEscUJBQVE7SUFDdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXRDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxJQUFJO1lBQ1AsSUFBSSxFQUFFLGlCQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2xELE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUTtZQUN2QyxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxZQUFZO1lBQzdCLFlBQVksRUFBRSx5QkFBWSxDQUFDLE1BQU07WUFDakMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztTQUNoRCxDQUFDLENBQUM7SUFDTCxDQUFDOztBQVpILGtDQWFDOzs7QUFhRCxNQUFhLGNBQWUsU0FBUSx5QkFBWTtJQUM5QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDaEIsV0FBVyxFQUFFLGdDQUFnQztZQUM3QyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1lBQ3BDLElBQUksRUFBRSxpQkFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMscUJBQXFCLFVBQVUsTUFBTSxDQUFDO1lBQ3ZFLHVCQUF1QixFQUFFLENBQUMseUJBQVksQ0FBQyxNQUFNLENBQUM7WUFDOUMsa0JBQWtCLEVBQUUsQ0FBQyxvQkFBTyxDQUFDLFlBQVksQ0FBQztZQUMxQyxnQkFBZ0IsRUFBRSxZQUFZO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBWEgsd0NBWUM7OztBQUVELFNBQVMsT0FBTyxDQUFDLFVBQWtCO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzlELElBQUksS0FBSyxJQUFJLElBQUk7UUFBRSxNQUFNLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBRXRFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEFyY2hpdGVjdHVyZSxcbiAgQ29kZSxcbiAgRnVuY3Rpb24sXG4gIExheWVyVmVyc2lvbixcbiAgUnVudGltZSxcbiAgTGF5ZXJWZXJzaW9uUHJvcHMsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyB0eXBlIE5vZGVqc0Z1bmN0aW9uUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmNvbnN0IGJ1blZlcnNpb24gPSBcIjEuMy4zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVuRnVuY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBFeGFtcGxlOiBgJHtfX2Rpcm5hbWV9L2Rpc3QvaW5kZXguanNgXG4gICAqL1xuICByZWFkb25seSBlbnRyeXBvaW50OiBgJHtzdHJpbmd9LmpzYDtcblxuICAvKipcbiAgICogQnVuIGxheWVyIG5lZWRzIHRvIGJlIHNldC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1bkxheWVyOiBCdW5MYW1iZGFMYXllcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQnVuRnVuY3Rpb25Qcm9wcyBleHRlbmRzIE9taXQ8XG4gIE5vZGVqc0Z1bmN0aW9uUHJvcHMsXG4gIFwiZW50cnlcIiB8IFwicnVudGltZVwiIHwgXCJhcmNoaXRlY3R1cmVcIiB8IFwiaGFuZGxlclwiIHwgXCJjb2RlXCIgfCBcImJ1bmRsaW5nXCJcbj4ge31cblxuZXhwb3J0IGNsYXNzIEJ1bkZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQnVuRnVuY3Rpb25Qcm9wcykge1xuICAgIGNvbnN0IHsgZW50cnlwb2ludCwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnJlc3QsXG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChgJHtfX2Rpcm5hbWV9LyR7ZW50cnlwb2ludH1gKSxcbiAgICAgIGhhbmRsZXI6IGAke3RvRW50cnkoZW50cnlwb2ludCl9LmZldGNoYCxcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuUFJPVklERURfQUwyLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgbGF5ZXJzOiBbcmVzdC5idW5MYXllciwgLi4uKHJlc3QubGF5ZXJzID8/IFtdKV0sXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdW5MYW1iZGFMYXllclByb3BzIHt9XG5leHBvcnQgaW50ZXJmYWNlIEJ1bkxhbWJkYUxheWVyUHJvcHMgZXh0ZW5kcyBPbWl0PFxuICBMYXllclZlcnNpb25Qcm9wcyxcbiAgfCBcImRlc2NyaXB0aW9uXCJcbiAgfCBcInJlbW92YWxQb2xpY3lcIlxuICB8IFwiY29kZVwiXG4gIHwgXCJjb21wYXRpYmxlQXJjaGl0ZWN0dXJlc1wiXG4gIHwgXCJjb21wYXRpYmxlUnVudGltZXNcIlxuICB8IFwibGF5ZXJWZXJzaW9uTmFtZVwiXG4+IHt9XG5cbmV4cG9ydCBjbGFzcyBCdW5MYW1iZGFMYXllciBleHRlbmRzIExheWVyVmVyc2lvbiB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogQnVuTGFtYmRhTGF5ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uKHByb3BzID8/IHt9KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkEgY3VzdG9tIExhbWJkYSBsYXllciBmb3IgQnVuLlwiLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoYCR7X19kaXJuYW1lfS9idW4tbGFtYmRhLWxheWVyLSR7YnVuVmVyc2lvbn0uemlwYCksXG4gICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW0FyY2hpdGVjdHVyZS5BUk1fNjRdLFxuICAgICAgY29tcGF0aWJsZVJ1bnRpbWVzOiBbUnVudGltZS5QUk9WSURFRF9BTDJdLFxuICAgICAgbGF5ZXJWZXJzaW9uTmFtZTogXCJCdW5SdW50aW1lXCIsXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9FbnRyeShlbnRyeXBvaW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBlbnRyeSA9IGVudHJ5cG9pbnQuc3BsaXQoXCIvXCIpLnBvcCgpPy5zcGxpdChcIi5cIikuc2hpZnQoKTtcbiAgaWYgKGVudHJ5ID09IG51bGwpIHRocm93IEVycm9yKGBDYW5ub3QgcGFyc2UgZW50cnkgZnJvbSBlbnRyeXBvaW50LmApO1xuXG4gIHJldHVybiBlbnRyeTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,39 +1,88 @@
1
1
  {
2
2
  "name": "@beesolve/lambda-bun-runtime",
3
- "version": "1.1.0",
4
- "type": "module",
5
- "keywords": [
6
- "awscdk"
7
- ],
8
- "scripts": {
9
- "buildLayer": "bun run command/buildBunLayer.ts",
10
- "prepublishOnly": "bun run build.ts"
3
+ "description": "AWS Lambda bun runtime layer and construct",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/beesolve/lambda-bun-runtime"
11
7
  },
12
- "dependencies": {
13
- "aws-cdk": "^2.1033.0",
14
- "aws-cdk-lib": "^2.231.0",
15
- "constructs": "^10.4.3"
8
+ "scripts": {
9
+ "build": "npx projen build",
10
+ "build-layer": "npx projen build-layer",
11
+ "bump": "npx projen bump",
12
+ "compat": "npx projen compat",
13
+ "compile": "npx projen compile",
14
+ "default": "npx projen default",
15
+ "docgen": "npx projen docgen",
16
+ "eject": "npx projen eject",
17
+ "eslint": "npx projen eslint",
18
+ "package": "npx projen package",
19
+ "package-all": "npx projen package-all",
20
+ "package:js": "npx projen package:js",
21
+ "post-compile": "npx projen post-compile",
22
+ "post-upgrade": "npx projen post-upgrade",
23
+ "pre-compile": "npx projen pre-compile",
24
+ "publish:git": "npx projen publish:git",
25
+ "release": "npx projen release",
26
+ "test": "npx projen test",
27
+ "unbump": "npx projen unbump",
28
+ "upgrade": "npx projen upgrade",
29
+ "watch": "npx projen watch",
30
+ "projen": "npx projen"
16
31
  },
17
- "peerDependencies": {
18
- "typescript": "^5.9.3"
32
+ "author": {
33
+ "name": "BeeSolve s.r.o.",
34
+ "email": "support@beesolve.com",
35
+ "organization": true
19
36
  },
20
37
  "devDependencies": {
21
- "@types/aws-lambda": "^8.10.159",
22
- "@types/bun": "^1.3.3",
23
38
  "@types/node": "^24.10.1",
24
- "bun-plugin-dts": "^0.3.0"
39
+ "@typescript-eslint/eslint-plugin": "^8",
40
+ "@typescript-eslint/parser": "^8",
41
+ "aws-cdk-lib": "2.231.0",
42
+ "commit-and-tag-version": "^12",
43
+ "constructs": "10.4.3",
44
+ "eslint": "^9",
45
+ "eslint-config-prettier": "^10.1.8",
46
+ "eslint-import-resolver-typescript": "^4.4.4",
47
+ "eslint-plugin-import": "^2.32.0",
48
+ "eslint-plugin-prettier": "^5.5.4",
49
+ "jsii": "~5.9.0",
50
+ "jsii-diff": "^1.120.0",
51
+ "jsii-docgen": "^10.5.0",
52
+ "jsii-pacmak": "^1.120.0",
53
+ "jsii-rosetta": "~5.9.0",
54
+ "prettier": "^3.7.4",
55
+ "projen": "^0.98.28",
56
+ "ts-node": "^10.9.2",
57
+ "typescript": "^5.9.3",
58
+ "yaml": "^2.8.1"
25
59
  },
26
- "exports": {
27
- ".": {
28
- "types": "./dist/cdk.d.ts",
29
- "import": "./dist/cdk.js"
30
- }
60
+ "peerDependencies": {
61
+ "aws-cdk-lib": "^2.231.0",
62
+ "constructs": "^10.4.3"
31
63
  },
32
- "files": [
33
- "dist",
34
- "bun-lambda-layer.zip"
64
+ "keywords": [
65
+ "aws",
66
+ "bun",
67
+ "cdk",
68
+ "lambda",
69
+ "runtime"
35
70
  ],
36
- "volta": {
37
- "node": "24.11.1"
38
- }
71
+ "main": "lib/index.js",
72
+ "license": "MIT",
73
+ "publishConfig": {
74
+ "access": "public"
75
+ },
76
+ "version": "1.2.0",
77
+ "types": "lib/index.d.ts",
78
+ "stability": "stable",
79
+ "jsii": {
80
+ "outdir": "dist",
81
+ "targets": {},
82
+ "tsc": {
83
+ "outDir": "lib",
84
+ "rootDir": "src"
85
+ }
86
+ },
87
+ "//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\"."
39
88
  }
Binary file
package/dist/cdk.d.ts DELETED
@@ -1,25 +0,0 @@
1
- // Generated by dts-bundle-generator v9.5.1
2
-
3
- import { aws_lambda } from 'aws-cdk-lib';
4
- import { LayerVersion, LayerVersionProps } from 'aws-cdk-lib/aws-lambda';
5
- import { NodejsFunctionProps } from 'aws-cdk-lib/aws-lambda-nodejs';
6
- import { Construct } from 'constructs';
7
-
8
- export type BunFunctionProps = Omit<NodejsFunctionProps, "entry" | "runtime" | "architecture" | "handler" | "code" | "bundling"> & {
9
- /**
10
- * Example: `${__dirname}/dist/index.js`
11
- */
12
- entrypoint: `${string}.js`;
13
- /**
14
- * Bun layer needs to be set.
15
- */
16
- bunLayer: BunLambdaLayer;
17
- };
18
- export declare class BunFunction extends aws_lambda.Function {
19
- constructor(scope: Construct, id: string, { entrypoint, ...props }: BunFunctionProps);
20
- }
21
- export declare class BunLambdaLayer extends LayerVersion {
22
- constructor(scope: Construct, id: string, props?: Omit<LayerVersionProps, "description" | "removalPolicy" | "code" | "compatibleArchitectures" | "compatibleRuntimes" | "layerVersionName">);
23
- }
24
-
25
- export {};
package/dist/cdk.js DELETED
@@ -1,4 +0,0 @@
1
- import{aws_lambda as H,RemovalPolicy as I}from"aws-cdk-lib";import{Architecture as z,Code as D,LayerVersion as J,Runtime as F}from"aws-cdk-lib/aws-lambda";import{dirname as G}from"node:path";import{fileURLToPath as K}from"node:url";var M=K(import.meta.url),N=G(M);class O extends H.Function{constructor(j,g,{entrypoint:q,...x}){super(j,g,{...x,code:D.fromAsset(G(q)),handler:`${S(q)}.fetch`,runtime:F.PROVIDED_AL2,architecture:z.ARM_64,layers:[x.bunLayer,...x.layers??[]]})}}class Q extends J{constructor(j,g,q){super(j,g,{...q??{},description:"A custom Lambda layer for Bun.",removalPolicy:I.DESTROY,code:D.fromAsset(`${N}/../bun-lambda-layer.zip`),compatibleArchitectures:[z.ARM_64],compatibleRuntimes:[F.PROVIDED_AL2],layerVersionName:"BunRuntime"})}}function S(j){let g=j.split("/").pop()?.split(".").shift();if(g==null)throw Error("Cannot parse entry from entrypoint.");return g}export{Q as BunLambdaLayer,O as BunFunction};
2
-
3
- //# debugId=6556BE5EF04E89D364756E2164756E21
4
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vY2RrLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgImltcG9ydCB7IGF3c19sYW1iZGEsIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEFyY2hpdGVjdHVyZSxcbiAgQ29kZSxcbiAgTGF5ZXJWZXJzaW9uLFxuICBSdW50aW1lLFxuICB0eXBlIExheWVyVmVyc2lvblByb3BzLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgdHlwZSBOb2RlanNGdW5jdGlvblByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIjtcblxuY29uc3QgX19maWxlbmFtZSA9IGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKTtcbmNvbnN0IF9fZGlybmFtZSA9IGRpcm5hbWUoX19maWxlbmFtZSk7XG5cbnR5cGUgQnVuRnVuY3Rpb25Qcm9wcyA9IE9taXQ8XG4gIE5vZGVqc0Z1bmN0aW9uUHJvcHMsXG4gIFwiZW50cnlcIiB8IFwicnVudGltZVwiIHwgXCJhcmNoaXRlY3R1cmVcIiB8IFwiaGFuZGxlclwiIHwgXCJjb2RlXCIgfCBcImJ1bmRsaW5nXCJcbj4gJiB7XG4gIC8qKlxuICAgKiBFeGFtcGxlOiBgJHtfX2Rpcm5hbWV9L2Rpc3QvaW5kZXguanNgXG4gICAqL1xuICBlbnRyeXBvaW50OiBgJHtzdHJpbmd9LmpzYDtcblxuICAvKipcbiAgICogQnVuIGxheWVyIG5lZWRzIHRvIGJlIHNldC5cbiAgICovXG4gIGJ1bkxheWVyOiBCdW5MYW1iZGFMYXllcjtcbn07XG5cbmV4cG9ydCBjbGFzcyBCdW5GdW5jdGlvbiBleHRlbmRzIGF3c19sYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgeyBlbnRyeXBvaW50LCAuLi5wcm9wcyB9OiBCdW5GdW5jdGlvblByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoZGlybmFtZShlbnRyeXBvaW50KSksXG4gICAgICBoYW5kbGVyOiBgJHt0b0VudHJ5KGVudHJ5cG9pbnQpfS5mZXRjaGAsXG4gICAgICBydW50aW1lOiBSdW50aW1lLlBST1ZJREVEX0FMMixcbiAgICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIGxheWVyczogW3Byb3BzLmJ1bkxheWVyLCAuLi4ocHJvcHMubGF5ZXJzID8/IFtdKV0sXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1bkxhbWJkYUxheWVyIGV4dGVuZHMgTGF5ZXJWZXJzaW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzPzogT21pdDxcbiAgICAgIExheWVyVmVyc2lvblByb3BzLFxuICAgICAgfCBcImRlc2NyaXB0aW9uXCJcbiAgICAgIHwgXCJyZW1vdmFsUG9saWN5XCJcbiAgICAgIHwgXCJjb2RlXCJcbiAgICAgIHwgXCJjb21wYXRpYmxlQXJjaGl0ZWN0dXJlc1wiXG4gICAgICB8IFwiY29tcGF0aWJsZVJ1bnRpbWVzXCJcbiAgICAgIHwgXCJsYXllclZlcnNpb25OYW1lXCJcbiAgICA+LFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLihwcm9wcyA/PyB7fSksXG4gICAgICBkZXNjcmlwdGlvbjogXCJBIGN1c3RvbSBMYW1iZGEgbGF5ZXIgZm9yIEJ1bi5cIixcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KGAke19fZGlybmFtZX0vLi4vYnVuLWxhbWJkYS1sYXllci56aXBgKSxcbiAgICAgIGNvbXBhdGlibGVBcmNoaXRlY3R1cmVzOiBbQXJjaGl0ZWN0dXJlLkFSTV82NF0sXG4gICAgICBjb21wYXRpYmxlUnVudGltZXM6IFtSdW50aW1lLlBST1ZJREVEX0FMMl0sXG4gICAgICBsYXllclZlcnNpb25OYW1lOiBcIkJ1blJ1bnRpbWVcIixcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b0VudHJ5KGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGVudHJ5ID0gZW50cnlwb2ludC5zcGxpdChcIi9cIikucG9wKCk/LnNwbGl0KFwiLlwiKS5zaGlmdCgpO1xuICBpZiAoZW50cnkgPT0gbnVsbCkgdGhyb3cgRXJyb3IoYENhbm5vdCBwYXJzZSBlbnRyeSBmcm9tIGVudHJ5cG9pbnQuYCk7XG5cbiAgcmV0dXJuIGVudHJ5O1xufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIkFBQUEscUJBQVMsbUJBQVksb0JBQ3JCLHVCQUNFLFVBQ0Esa0JBQ0EsYUFDQSwrQkFLRixrQkFBUyxrQkFDVCx3QkFBUyxpQkFFVCxJQUFNLEVBQWEsRUFBYyxZQUFZLEdBQUcsRUFDMUMsRUFBWSxFQUFRLENBQVUsRUFpQjdCLE1BQU0sVUFBb0IsRUFBVyxRQUFTLENBQ25ELFdBQVcsQ0FDVCxFQUNBLEdBQ0UsZ0JBQWUsR0FDakIsQ0FDQSxNQUFNLEVBQU8sRUFBSSxJQUNaLEVBQ0gsS0FBTSxFQUFLLFVBQVUsRUFBUSxDQUFVLENBQUMsRUFDeEMsUUFBUyxHQUFHLEVBQVEsQ0FBVSxVQUM5QixRQUFTLEVBQVEsYUFDakIsYUFBYyxFQUFhLE9BQzNCLE9BQVEsQ0FBQyxFQUFNLFNBQVUsR0FBSSxFQUFNLFFBQVUsQ0FBQyxDQUFFLENBQ2xELENBQUMsRUFFTCxDQUVPLE1BQU0sVUFBdUIsQ0FBYSxDQUMvQyxXQUFXLENBQ1QsRUFDQSxFQUNBLEVBU0EsQ0FDQSxNQUFNLEVBQU8sRUFBSSxJQUNYLEdBQVMsQ0FBQyxFQUNkLFlBQWEsaUNBQ2IsY0FBZSxFQUFjLFFBQzdCLEtBQU0sRUFBSyxVQUFVLEdBQUcsMkJBQW1DLEVBQzNELHdCQUF5QixDQUFDLEVBQWEsTUFBTSxFQUM3QyxtQkFBb0IsQ0FBQyxFQUFRLFlBQVksRUFDekMsaUJBQWtCLFlBQ3BCLENBQUMsRUFFTCxDQUVBLFNBQVMsQ0FBTyxDQUFDLEVBQTRCLENBQzNDLElBQU0sRUFBUSxFQUFXLE1BQU0sR0FBRyxFQUFFLElBQUksR0FBRyxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQzVELEdBQUksR0FBUyxLQUFNLE1BQU0sTUFBTSxxQ0FBcUMsRUFFcEUsT0FBTyIsCiAgImRlYnVnSWQiOiAiNjU1NkJFNUVGMDRFODlEMzY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=