@mikarinneoracle/oci-cdk-code-only-preview 0.0.1 → 0.0.3

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.
Files changed (47) hide show
  1. package/README.md +29 -6
  2. package/package.json +1 -1
  3. package/lib/.gen/providers/oci/identity-dynamic-group/index.d.ts +0 -166
  4. package/lib/.gen/providers/oci/identity-dynamic-group/index.js +0 -408
  5. package/lib/bin/deploy-with-build.js +0 -132
  6. package/lib/test/java-function/aws-cdk/bin/app.d.ts +0 -2
  7. package/lib/test/java-function/aws-cdk/bin/app.js +0 -51
  8. package/lib/test/java-function/aws-cdk/lib/function-stack.d.ts +0 -11
  9. package/lib/test/java-function/aws-cdk/lib/function-stack.js +0 -159
  10. package/lib/test/java-function/aws-cdk/lib/test-function-stack.d.ts +0 -5
  11. package/lib/test/java-function/aws-cdk/lib/test-function-stack.js +0 -94
  12. package/lib/test/java-function/oci-cdk/.gen/providers/oci/apigateway-deployment/index.d.ts +0 -5356
  13. package/lib/test/java-function/oci-cdk/.gen/providers/oci/apigateway-deployment/index.js +0 -14972
  14. package/lib/test/java-function/oci-cdk/.gen/providers/oci/apigateway-gateway/index.d.ts +0 -449
  15. package/lib/test/java-function/oci-cdk/.gen/providers/oci/apigateway-gateway/index.js +0 -1149
  16. package/lib/test/java-function/oci-cdk/.gen/providers/oci/artifacts-container-repository/index.d.ts +0 -217
  17. package/lib/test/java-function/oci-cdk/.gen/providers/oci/artifacts-container-repository/index.js +0 -563
  18. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-internet-gateway/index.d.ts +0 -176
  19. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-internet-gateway/index.js +0 -431
  20. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-route-table/index.d.ts +0 -255
  21. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-route-table/index.js +0 -644
  22. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-security-list/index.d.ts +0 -752
  23. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-security-list/index.js +0 -2091
  24. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-service-gateway/index.d.ts +0 -220
  25. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-service-gateway/index.js +0 -543
  26. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-subnet/index.d.ts +0 -251
  27. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-subnet/index.js +0 -612
  28. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-vcn/index.d.ts +0 -270
  29. package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-vcn/index.js +0 -672
  30. package/lib/test/java-function/oci-cdk/.gen/providers/oci/data-oci-core-services/index.d.ts +0 -150
  31. package/lib/test/java-function/oci-cdk/.gen/providers/oci/data-oci-core-services/index.js +0 -386
  32. package/lib/test/java-function/oci-cdk/.gen/providers/oci/functions-application/index.d.ts +0 -330
  33. package/lib/test/java-function/oci-cdk/.gen/providers/oci/functions-application/index.js +0 -821
  34. package/lib/test/java-function/oci-cdk/.gen/providers/oci/functions-function/index.d.ts +0 -322
  35. package/lib/test/java-function/oci-cdk/.gen/providers/oci/functions-function/index.js +0 -820
  36. package/lib/test/java-function/oci-cdk/.gen/providers/oci/provider/index.d.ts +0 -190
  37. package/lib/test/java-function/oci-cdk/.gen/providers/oci/provider/index.js +0 -391
  38. package/lib/test/java-function/oci-cdk/.gen/providers/oci/vault-secret/index.d.ts +0 -439
  39. package/lib/test/java-function/oci-cdk/.gen/providers/oci/vault-secret/index.js +0 -1146
  40. package/lib/test/java-function/oci-cdk/bin/app.d.ts +0 -2
  41. package/lib/test/java-function/oci-cdk/bin/app.js +0 -34
  42. package/lib/test/java-function/oci-cdk/config/oci-config.d.ts +0 -68
  43. package/lib/test/java-function/oci-cdk/config/oci-config.js +0 -202
  44. package/lib/test/java-function/oci-cdk/lib/function-stack.d.ts +0 -31
  45. package/lib/test/java-function/oci-cdk/lib/function-stack.js +0 -549
  46. package/lib/test/java-function/oci-cdk/lib/test-function-stack.d.ts +0 -17
  47. package/lib/test/java-function/oci-cdk/lib/test-function-stack.js +0 -99
@@ -1,17 +0,0 @@
1
- import { Construct } from 'constructs';
2
- import { TerraformStack } from 'cdktf';
3
- import { OciBackendConfig } from '../config/oci-config';
4
- export interface OciStackConfig {
5
- compartmentId: string;
6
- ocirCompartmentId?: string;
7
- tenancyId: string;
8
- region: string;
9
- namespace: string;
10
- functionAppName: string;
11
- functionName: string;
12
- ocirRepositoryName?: string;
13
- backend?: OciBackendConfig;
14
- }
15
- export declare class TestFunctionStack extends TerraformStack {
16
- constructor(scope: Construct, id: string, config: OciStackConfig);
17
- }
@@ -1,99 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TestFunctionStack = void 0;
4
- const cdktf_1 = require("cdktf");
5
- const provider_1 = require("../.gen/providers/oci/provider");
6
- const artifacts_container_repository_1 = require("../.gen/providers/oci/artifacts-container-repository");
7
- class TestFunctionStack extends cdktf_1.TerraformStack {
8
- constructor(scope, id, config) {
9
- super(scope, id);
10
- // Configure Terraform backend (if not local)
11
- if (config.backend && config.backend.type !== 'local') {
12
- if (config.backend.type === 'oci') {
13
- this.addOverride('terraform.backend', {
14
- oci: {
15
- bucket: config.backend.bucket,
16
- namespace: config.namespace,
17
- key: config.backend.key || `${id}/terraform.tfstate`,
18
- region: config.region,
19
- },
20
- });
21
- }
22
- else if (config.backend.type === 'http') {
23
- const httpBackend = {
24
- address: config.backend.address,
25
- update_method: config.backend.updateMethod || 'PUT',
26
- };
27
- if (config.backend.lockAddress) {
28
- httpBackend.lock_address = config.backend.lockAddress;
29
- }
30
- if (config.backend.unlockAddress) {
31
- httpBackend.unlock_address = config.backend.unlockAddress;
32
- }
33
- this.addOverride('terraform.backend', {
34
- http: httpBackend,
35
- });
36
- }
37
- }
38
- // OCI Provider
39
- new provider_1.OciProvider(this, 'oci', {
40
- region: config.region,
41
- tenancyOcid: config.tenancyId,
42
- });
43
- // OCIR Container Repository
44
- const ocirCompartmentId = config.ocirCompartmentId || config.compartmentId;
45
- const ocirRepoName = config.ocirRepositoryName || config.functionName;
46
- // Validate that we're not using root compartment
47
- if (ocirCompartmentId.includes('root')) {
48
- throw new Error('OCIR repository cannot be created in root compartment. ' +
49
- 'Please set OCI_OCIR_COMPARTMENT_ID to your home compartment OCID.');
50
- }
51
- const ocirRepository = new artifacts_container_repository_1.ArtifactsContainerRepository(this, 'OcirRepository', {
52
- compartmentId: ocirCompartmentId,
53
- displayName: ocirRepoName,
54
- isPublic: false,
55
- isImmutable: false,
56
- });
57
- // Note: OCI Function and API Gateway resources would be added here
58
- // These require additional provider resources that may need to be configured
59
- // after running `cdktf get` to generate the provider types
60
- // Example structure (commented out until provider types are generated):
61
- /*
62
- // OCI Function Application
63
- const functionApp = new FunctionsApplication(this, 'FunctionApp', {
64
- compartmentId: config.compartmentId,
65
- displayName: config.functionAppName,
66
- });
67
-
68
- // OCI Function
69
- const ociFunction = new Function(this, 'Function', {
70
- applicationId: functionApp.id,
71
- displayName: config.functionName,
72
- image: `${config.region}.ocir.io/${config.namespace}/${ocirRepoName}:latest`,
73
- memoryInMbs: 1024,
74
- timeoutInSeconds: 30,
75
- });
76
-
77
- // API Gateway
78
- const apiGateway = new ApigatewayGateway(this, 'ApiGateway', {
79
- compartmentId: config.compartmentId,
80
- endpointType: 'PUBLIC',
81
- displayName: 'test-function-api-gateway',
82
- });
83
-
84
- // API Gateway Deployment
85
- const apiDeployment = new ApigatewayDeployment(this, 'ApiDeployment', {
86
- compartmentId: config.compartmentId,
87
- gatewayId: apiGateway.id,
88
- pathPrefix: '/test',
89
- displayName: 'test-function-deployment',
90
- // Route configuration would go here
91
- });
92
- */
93
- // Output OCIR repository URL
94
- // This will be used to push Docker images
95
- // Format: <region>.ocir.io/<namespace>/<repository-name>
96
- }
97
- }
98
- exports.TestFunctionStack = TestFunctionStack;
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1mdW5jdGlvbi1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvamF2YS1mdW5jdGlvbi9vY2ktb2Nkay9saWIvdGVzdC1mdW5jdGlvbi1zdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBdUM7QUFDdkMsNkRBQTZEO0FBQzdELHlHQUFvRztBQWVwRyxNQUFhLGlCQUFrQixTQUFRLHNCQUFjO0lBQ25ELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsTUFBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQiw2Q0FBNkM7UUFDN0MsSUFBSSxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3RELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUU7b0JBQ3BDLEdBQUcsRUFBRTt3QkFDSCxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNO3dCQUM3QixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7d0JBQzNCLEdBQUcsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsb0JBQW9CO3dCQUNwRCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07cUJBQ3RCO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxXQUFXLEdBQVE7b0JBQ3ZCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU87b0JBQy9CLGFBQWEsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxLQUFLO2lCQUNwRCxDQUFDO2dCQUNGLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDL0IsV0FBVyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztnQkFDeEQsQ0FBQztnQkFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ2pDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7Z0JBQzVELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRTtvQkFDcEMsSUFBSSxFQUFFLFdBQVc7aUJBQ2xCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBRUQsZUFBZTtRQUNmLElBQUksc0JBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixXQUFXLEVBQUUsTUFBTSxDQUFDLFNBQVM7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsNEJBQTRCO1FBQzVCLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDM0UsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFFdEUsaURBQWlEO1FBQ2pELElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FDYix5REFBeUQ7Z0JBQ3pELG1FQUFtRSxDQUNwRSxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksNkRBQTRCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQzlFLGFBQWEsRUFBRSxpQkFBaUI7WUFDaEMsV0FBVyxFQUFFLFlBQVk7WUFDekIsUUFBUSxFQUFFLEtBQUs7WUFDZixXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDLENBQUM7UUFFSCxtRUFBbUU7UUFDbkUsNkVBQTZFO1FBQzdFLDJEQUEyRDtRQUUzRCx3RUFBd0U7UUFDeEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUErQkU7UUFFRiw2QkFBNkI7UUFDN0IsMENBQTBDO1FBQzFDLHlEQUF5RDtJQUMzRCxDQUFDO0NBQ0Y7QUFuR0QsOENBbUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjayB9IGZyb20gJ2Nka3RmJztcbmltcG9ydCB7IE9jaVByb3ZpZGVyIH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvb2NpL3Byb3ZpZGVyJztcbmltcG9ydCB7IEFydGlmYWN0c0NvbnRhaW5lclJlcG9zaXRvcnkgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9vY2kvYXJ0aWZhY3RzLWNvbnRhaW5lci1yZXBvc2l0b3J5JztcbmltcG9ydCB7IE9jaUJhY2tlbmRDb25maWcgfSBmcm9tICcuLi9jb25maWcvb2NpLWNvbmZpZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2NpU3RhY2tDb25maWcge1xuICBjb21wYXJ0bWVudElkOiBzdHJpbmc7XG4gIG9jaXJDb21wYXJ0bWVudElkPzogc3RyaW5nO1xuICB0ZW5hbmN5SWQ6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBmdW5jdGlvbkFwcE5hbWU6IHN0cmluZztcbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG4gIG9jaXJSZXBvc2l0b3J5TmFtZT86IHN0cmluZztcbiAgYmFja2VuZD86IE9jaUJhY2tlbmRDb25maWc7XG59XG5cbmV4cG9ydCBjbGFzcyBUZXN0RnVuY3Rpb25TdGFjayBleHRlbmRzIFRlcnJhZm9ybVN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29uZmlnOiBPY2lTdGFja0NvbmZpZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBDb25maWd1cmUgVGVycmFmb3JtIGJhY2tlbmQgKGlmIG5vdCBsb2NhbClcbiAgICBpZiAoY29uZmlnLmJhY2tlbmQgJiYgY29uZmlnLmJhY2tlbmQudHlwZSAhPT0gJ2xvY2FsJykge1xuICAgICAgaWYgKGNvbmZpZy5iYWNrZW5kLnR5cGUgPT09ICdvY2knKSB7XG4gICAgICAgIHRoaXMuYWRkT3ZlcnJpZGUoJ3RlcnJhZm9ybS5iYWNrZW5kJywge1xuICAgICAgICAgIG9jaToge1xuICAgICAgICAgICAgYnVja2V0OiBjb25maWcuYmFja2VuZC5idWNrZXQsXG4gICAgICAgICAgICBuYW1lc3BhY2U6IGNvbmZpZy5uYW1lc3BhY2UsXG4gICAgICAgICAgICBrZXk6IGNvbmZpZy5iYWNrZW5kLmtleSB8fCBgJHtpZH0vdGVycmFmb3JtLnRmc3RhdGVgLFxuICAgICAgICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcuYmFja2VuZC50eXBlID09PSAnaHR0cCcpIHtcbiAgICAgICAgY29uc3QgaHR0cEJhY2tlbmQ6IGFueSA9IHtcbiAgICAgICAgICBhZGRyZXNzOiBjb25maWcuYmFja2VuZC5hZGRyZXNzLFxuICAgICAgICAgIHVwZGF0ZV9tZXRob2Q6IGNvbmZpZy5iYWNrZW5kLnVwZGF0ZU1ldGhvZCB8fCAnUFVUJyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGNvbmZpZy5iYWNrZW5kLmxvY2tBZGRyZXNzKSB7XG4gICAgICAgICAgaHR0cEJhY2tlbmQubG9ja19hZGRyZXNzID0gY29uZmlnLmJhY2tlbmQubG9ja0FkZHJlc3M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZy5iYWNrZW5kLnVubG9ja0FkZHJlc3MpIHtcbiAgICAgICAgICBodHRwQmFja2VuZC51bmxvY2tfYWRkcmVzcyA9IGNvbmZpZy5iYWNrZW5kLnVubG9ja0FkZHJlc3M7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRPdmVycmlkZSgndGVycmFmb3JtLmJhY2tlbmQnLCB7XG4gICAgICAgICAgaHR0cDogaHR0cEJhY2tlbmQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE9DSSBQcm92aWRlclxuICAgIG5ldyBPY2lQcm92aWRlcih0aGlzLCAnb2NpJywge1xuICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uLFxuICAgICAgdGVuYW5jeU9jaWQ6IGNvbmZpZy50ZW5hbmN5SWQsXG4gICAgfSk7XG5cbiAgICAvLyBPQ0lSIENvbnRhaW5lciBSZXBvc2l0b3J5XG4gICAgY29uc3Qgb2NpckNvbXBhcnRtZW50SWQgPSBjb25maWcub2NpckNvbXBhcnRtZW50SWQgfHwgY29uZmlnLmNvbXBhcnRtZW50SWQ7XG4gICAgY29uc3Qgb2NpclJlcG9OYW1lID0gY29uZmlnLm9jaXJSZXBvc2l0b3J5TmFtZSB8fCBjb25maWcuZnVuY3Rpb25OYW1lO1xuICAgIFxuICAgIC8vIFZhbGlkYXRlIHRoYXQgd2UncmUgbm90IHVzaW5nIHJvb3QgY29tcGFydG1lbnRcbiAgICBpZiAob2NpckNvbXBhcnRtZW50SWQuaW5jbHVkZXMoJ3Jvb3QnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnT0NJUiByZXBvc2l0b3J5IGNhbm5vdCBiZSBjcmVhdGVkIGluIHJvb3QgY29tcGFydG1lbnQuICcgK1xuICAgICAgICAnUGxlYXNlIHNldCBPQ0lfT0NJUl9DT01QQVJUTUVOVF9JRCB0byB5b3VyIGhvbWUgY29tcGFydG1lbnQgT0NJRC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IG9jaXJSZXBvc2l0b3J5ID0gbmV3IEFydGlmYWN0c0NvbnRhaW5lclJlcG9zaXRvcnkodGhpcywgJ09jaXJSZXBvc2l0b3J5Jywge1xuICAgICAgY29tcGFydG1lbnRJZDogb2NpckNvbXBhcnRtZW50SWQsXG4gICAgICBkaXNwbGF5TmFtZTogb2NpclJlcG9OYW1lLFxuICAgICAgaXNQdWJsaWM6IGZhbHNlLFxuICAgICAgaXNJbW11dGFibGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gTm90ZTogT0NJIEZ1bmN0aW9uIGFuZCBBUEkgR2F0ZXdheSByZXNvdXJjZXMgd291bGQgYmUgYWRkZWQgaGVyZVxuICAgIC8vIFRoZXNlIHJlcXVpcmUgYWRkaXRpb25hbCBwcm92aWRlciByZXNvdXJjZXMgdGhhdCBtYXkgbmVlZCB0byBiZSBjb25maWd1cmVkXG4gICAgLy8gYWZ0ZXIgcnVubmluZyBgY2RrdGYgZ2V0YCB0byBnZW5lcmF0ZSB0aGUgcHJvdmlkZXIgdHlwZXNcbiAgICBcbiAgICAvLyBFeGFtcGxlIHN0cnVjdHVyZSAoY29tbWVudGVkIG91dCB1bnRpbCBwcm92aWRlciB0eXBlcyBhcmUgZ2VuZXJhdGVkKTpcbiAgICAvKlxuICAgIC8vIE9DSSBGdW5jdGlvbiBBcHBsaWNhdGlvblxuICAgIGNvbnN0IGZ1bmN0aW9uQXBwID0gbmV3IEZ1bmN0aW9uc0FwcGxpY2F0aW9uKHRoaXMsICdGdW5jdGlvbkFwcCcsIHtcbiAgICAgIGNvbXBhcnRtZW50SWQ6IGNvbmZpZy5jb21wYXJ0bWVudElkLFxuICAgICAgZGlzcGxheU5hbWU6IGNvbmZpZy5mdW5jdGlvbkFwcE5hbWUsXG4gICAgfSk7XG5cbiAgICAvLyBPQ0kgRnVuY3Rpb25cbiAgICBjb25zdCBvY2lGdW5jdGlvbiA9IG5ldyBGdW5jdGlvbih0aGlzLCAnRnVuY3Rpb24nLCB7XG4gICAgICBhcHBsaWNhdGlvbklkOiBmdW5jdGlvbkFwcC5pZCxcbiAgICAgIGRpc3BsYXlOYW1lOiBjb25maWcuZnVuY3Rpb25OYW1lLFxuICAgICAgaW1hZ2U6IGAke2NvbmZpZy5yZWdpb259Lm9jaXIuaW8vJHtjb25maWcubmFtZXNwYWNlfS8ke29jaXJSZXBvTmFtZX06bGF0ZXN0YCxcbiAgICAgIG1lbW9yeUluTWJzOiAxMDI0LFxuICAgICAgdGltZW91dEluU2Vjb25kczogMzAsXG4gICAgfSk7XG5cbiAgICAvLyBBUEkgR2F0ZXdheVxuICAgIGNvbnN0IGFwaUdhdGV3YXkgPSBuZXcgQXBpZ2F0ZXdheUdhdGV3YXkodGhpcywgJ0FwaUdhdGV3YXknLCB7XG4gICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgIGVuZHBvaW50VHlwZTogJ1BVQkxJQycsXG4gICAgICBkaXNwbGF5TmFtZTogJ3Rlc3QtZnVuY3Rpb24tYXBpLWdhdGV3YXknLFxuICAgIH0pO1xuXG4gICAgLy8gQVBJIEdhdGV3YXkgRGVwbG95bWVudFxuICAgIGNvbnN0IGFwaURlcGxveW1lbnQgPSBuZXcgQXBpZ2F0ZXdheURlcGxveW1lbnQodGhpcywgJ0FwaURlcGxveW1lbnQnLCB7XG4gICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgIGdhdGV3YXlJZDogYXBpR2F0ZXdheS5pZCxcbiAgICAgIHBhdGhQcmVmaXg6ICcvdGVzdCcsXG4gICAgICBkaXNwbGF5TmFtZTogJ3Rlc3QtZnVuY3Rpb24tZGVwbG95bWVudCcsXG4gICAgICAvLyBSb3V0ZSBjb25maWd1cmF0aW9uIHdvdWxkIGdvIGhlcmVcbiAgICB9KTtcbiAgICAqL1xuXG4gICAgLy8gT3V0cHV0IE9DSVIgcmVwb3NpdG9yeSBVUkxcbiAgICAvLyBUaGlzIHdpbGwgYmUgdXNlZCB0byBwdXNoIERvY2tlciBpbWFnZXNcbiAgICAvLyBGb3JtYXQ6IDxyZWdpb24+Lm9jaXIuaW8vPG5hbWVzcGFjZT4vPHJlcG9zaXRvcnktbmFtZT5cbiAgfVxufVxuIl19