@apipass/schemas 1.0.0 → 1.0.8
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/base-schema.component.d.ts +12 -12
- package/{esm2020 → esm2022}/apipass-schemas.mjs +4 -4
- package/esm2022/base-schema.component.mjs +38 -0
- package/esm2022/public-api.mjs +17 -0
- package/esm2022/schema-custom-attributes/schema-custom-attributes.mjs +169 -0
- package/esm2022/schema-fields.service.mjs +81 -0
- package/esm2022/schema-form/schema-array/array-session/array-session.mjs +141 -0
- package/{esm2020 → esm2022}/schema-form/schema-array/schema-array.mjs +219 -220
- package/esm2022/schema-form/schema-form.mjs +107 -0
- package/esm2022/schema-form/schema-input/field-render/field-render.mjs +76 -0
- package/esm2022/schema-form/schema-input/input-render/boolean-input/boolean-input.component.mjs +51 -0
- package/esm2022/schema-form/schema-input/input-render/input-render.mjs +193 -0
- package/esm2022/schema-form/schema-input/input-render/number-input/number-input.component.mjs +49 -0
- package/esm2022/schema-form/schema-input/schema-input.mjs +95 -0
- package/esm2022/schema-form/schema-object/schema-object.mjs +125 -0
- package/esm2022/schema-form-render.mjs +126 -0
- package/esm2022/schema-form-render.module.mjs +109 -0
- package/esm2022/schema-validation-field.mjs +18 -0
- package/esm2022/struct.utils.mjs +9 -0
- package/esm2022/type-script-compile/type-script-compile.base.mjs +115 -0
- package/{fesm2020 → fesm2022}/apipass-schemas.mjs +1572 -1566
- package/fesm2022/apipass-schemas.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/package.json +15 -21
- package/public-api.d.ts +16 -16
- package/schema-custom-attributes/schema-custom-attributes.d.ts +21 -21
- package/schema-fields.service.d.ts +14 -15
- package/schema-form/schema-array/array-session/array-session.d.ts +19 -19
- package/schema-form/schema-array/schema-array.d.ts +31 -32
- package/schema-form/schema-form.d.ts +31 -31
- package/schema-form/schema-input/field-render/field-render.d.ts +16 -16
- package/schema-form/schema-input/input-render/boolean-input/boolean-input.component.d.ts +15 -15
- package/schema-form/schema-input/input-render/input-render.d.ts +29 -29
- package/schema-form/schema-input/input-render/number-input/number-input.component.d.ts +15 -15
- package/schema-form/schema-input/schema-input.d.ts +18 -19
- package/schema-form/schema-object/schema-object.d.ts +34 -34
- package/schema-form-render.d.ts +31 -31
- package/schema-form-render.module.d.ts +23 -23
- package/schema-validation-field.d.ts +23 -23
- package/struct.utils.d.ts +1 -1
- package/type-script-compile/type-script-compile.base.d.ts +17 -17
- package/assets/css/buttons.scss +0 -118
- package/assets/css/colors.scss +0 -34
- package/assets/css/fonts.scss +0 -24
- package/assets/css/inputs.scss +0 -197
- package/assets/css/pt_sans.scss +0 -144
- package/assets/css/spacing.scss +0 -28
- package/assets/css/texts.scss +0 -18
- package/esm2020/base-schema.component.mjs +0 -38
- package/esm2020/public-api.mjs +0 -17
- package/esm2020/schema-custom-attributes/schema-custom-attributes.mjs +0 -169
- package/esm2020/schema-fields.service.mjs +0 -82
- package/esm2020/schema-form/schema-array/array-session/array-session.mjs +0 -143
- package/esm2020/schema-form/schema-form.mjs +0 -107
- package/esm2020/schema-form/schema-input/field-render/field-render.mjs +0 -69
- package/esm2020/schema-form/schema-input/input-render/boolean-input/boolean-input.component.mjs +0 -46
- package/esm2020/schema-form/schema-input/input-render/input-render.mjs +0 -192
- package/esm2020/schema-form/schema-input/input-render/number-input/number-input.component.mjs +0 -44
- package/esm2020/schema-form/schema-input/schema-input.mjs +0 -96
- package/esm2020/schema-form/schema-object/schema-object.mjs +0 -123
- package/esm2020/schema-form-render.mjs +0 -126
- package/esm2020/schema-form-render.module.mjs +0 -108
- package/esm2020/schema-validation-field.mjs +0 -14
- package/esm2020/struct.utils.mjs +0 -9
- package/esm2020/type-script-compile/type-script-compile.base.mjs +0 -112
- package/fesm2015/apipass-schemas.mjs +0 -1803
- package/fesm2015/apipass-schemas.mjs.map +0 -1
- package/fesm2020/apipass-schemas.mjs.map +0 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Injectable, Optional, SkipSelf } from '@angular/core';
|
|
2
|
+
import { FormControl, Validators } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
class TypeScriptCompileBase {
|
|
5
|
+
getTranslate(text) {
|
|
6
|
+
return text;
|
|
7
|
+
}
|
|
8
|
+
addItemToFormProperties(formProperties, item, key) {
|
|
9
|
+
this.translateProperties(item);
|
|
10
|
+
if (item.minLength && item.minLength > 0) {
|
|
11
|
+
formProperties[key] = new FormControl([null, [Validators.required]]);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
formProperties[key] = new FormControl([null]);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
compileProperties(input) {
|
|
18
|
+
const compiledProperties = [];
|
|
19
|
+
const formProperties = {};
|
|
20
|
+
let inputData = {};
|
|
21
|
+
const inputToCompile = JSON.parse(JSON.stringify(input));
|
|
22
|
+
this.translateProperties(inputToCompile);
|
|
23
|
+
if (inputToCompile.properties) {
|
|
24
|
+
if (inputToCompile.type === 'array') {
|
|
25
|
+
inputData = [];
|
|
26
|
+
}
|
|
27
|
+
if (inputToCompile.type === 'object') {
|
|
28
|
+
inputData = {};
|
|
29
|
+
}
|
|
30
|
+
inputToCompile.id = 'inputData';
|
|
31
|
+
this.proccessProperties(inputToCompile, formProperties, 'inputData');
|
|
32
|
+
this.translateProperties(inputToCompile);
|
|
33
|
+
compiledProperties.push(inputToCompile);
|
|
34
|
+
}
|
|
35
|
+
else if (inputToCompile.type === 'array') {
|
|
36
|
+
inputToCompile.id = 'inputData';
|
|
37
|
+
inputData = [];
|
|
38
|
+
this.addItemToFormProperties(formProperties, inputToCompile, 'inputData');
|
|
39
|
+
compiledProperties.push(inputToCompile);
|
|
40
|
+
}
|
|
41
|
+
else if (!inputToCompile.type) {
|
|
42
|
+
for (let index = 0; index < Object.keys(inputToCompile).length; index++) {
|
|
43
|
+
const key = Object.keys(inputToCompile)[index];
|
|
44
|
+
const item = inputToCompile[key];
|
|
45
|
+
item.id = key;
|
|
46
|
+
if (item.type === 'array') {
|
|
47
|
+
inputData[item.id] = [];
|
|
48
|
+
}
|
|
49
|
+
if (item.type === 'object') {
|
|
50
|
+
inputData[item.id] = {};
|
|
51
|
+
}
|
|
52
|
+
this.proccessProperties(item, formProperties, key);
|
|
53
|
+
this.translateProperties(item);
|
|
54
|
+
compiledProperties.push(item);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
compiledProperties.sort((a, b) => a.propertyOrder - b.propertyOrder);
|
|
58
|
+
return { compiledProperties, formProperties, inputData };
|
|
59
|
+
}
|
|
60
|
+
translateProperties(input) {
|
|
61
|
+
if (input?.title) {
|
|
62
|
+
input.title = this.getTranslate(input.title);
|
|
63
|
+
}
|
|
64
|
+
if (input?.description) {
|
|
65
|
+
input.description = this.getTranslate(input.description);
|
|
66
|
+
}
|
|
67
|
+
if (input?.options instanceof Array) {
|
|
68
|
+
input?.options.forEach((option) => {
|
|
69
|
+
option.value = this.getTranslate(option.value);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
proccessProperties(item, formProperties, key) {
|
|
74
|
+
this.translateProperties(item);
|
|
75
|
+
if (this.hasProperties(item)) {
|
|
76
|
+
const arFieldsChild = [];
|
|
77
|
+
for (let indexChild = 0; indexChild < Object.keys(item.properties).length; indexChild++) {
|
|
78
|
+
const keyChild = Object.keys(item.properties)[indexChild];
|
|
79
|
+
const itemChild = item.properties[keyChild];
|
|
80
|
+
itemChild.id = keyChild;
|
|
81
|
+
if (this.hasProperties(itemChild)) {
|
|
82
|
+
this.proccessProperties(itemChild, formProperties, keyChild);
|
|
83
|
+
arFieldsChild.push(itemChild);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.addItemToFormProperties(formProperties, itemChild, keyChild);
|
|
87
|
+
arFieldsChild.push(itemChild);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
item.properties = arFieldsChild;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.addItemToFormProperties(formProperties, item, key);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
hasProperties(item) {
|
|
97
|
+
return item.type === 'object' || (item.type === 'array' && item.properties);
|
|
98
|
+
}
|
|
99
|
+
static ɵfac = function TypeScriptCompileBase_Factory(t) { return new (t || TypeScriptCompileBase)(); };
|
|
100
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TypeScriptCompileBase, factory: TypeScriptCompileBase.ɵfac, providedIn: 'root' });
|
|
101
|
+
}
|
|
102
|
+
export { TypeScriptCompileBase };
|
|
103
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TypeScriptCompileBase, [{
|
|
104
|
+
type: Injectable,
|
|
105
|
+
args: [{ providedIn: 'root' }]
|
|
106
|
+
}], null, null); })();
|
|
107
|
+
export function APIPASS_TYPESCRIPT_COMPILE_BASE_PROVIDER_FACTORY(parentIntl) {
|
|
108
|
+
return parentIntl || new TypeScriptCompileBase();
|
|
109
|
+
}
|
|
110
|
+
export const APIPASS_TYPESCRIPT_COMPILE_INTL_PROVIDER = {
|
|
111
|
+
provide: TypeScriptCompileBase,
|
|
112
|
+
deps: [[new Optional(), new SkipSelf(), TypeScriptCompileBase]],
|
|
113
|
+
useFactory: APIPASS_TYPESCRIPT_COMPILE_BASE_PROVIDER_FACTORY
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1zY3JpcHQtY29tcGlsZS5iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NoZW1hcy9zcmMvdHlwZS1zY3JpcHQtY29tcGlsZS90eXBlLXNjcmlwdC1jb21waWxlLmJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7O0FBRXhELE1BQ2EscUJBQXFCO0lBQ3RCLFlBQVksQ0FBRSxJQUFZO1FBQ2xDLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVTLHVCQUF1QixDQUFFLGNBQW1CLEVBQUUsSUFBUyxFQUFFLEdBQVc7UUFDNUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRTtZQUN4QyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3JFO2FBQU07WUFDTCxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1NBQzlDO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQixDQUFFLEtBQVU7UUFLbEMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUE7UUFDN0IsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFBO1FBQ3pCLElBQUksU0FBUyxHQUFRLEVBQUUsQ0FBQTtRQUN2QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFD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QUMsdUJBQXVCLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQTtTQUN4RDtJQUNILENBQUM7SUFFUyxhQUFhLENBQUUsSUFBUztRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzdFLENBQUM7K0VBdEdVLHFCQUFxQjtnRUFBckIscUJBQXFCLFdBQXJCLHFCQUFxQixtQkFEUixNQUFNOztTQUNuQixxQkFBcUI7dUZBQXJCLHFCQUFxQjtjQURqQyxVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQTBHbEMsTUFBTSxVQUFVLGdEQUFnRCxDQUFFLFVBQWlDO0lBQ2pHLE9BQU8sVUFBVSxJQUFJLElBQUkscUJBQXFCLEVBQUUsQ0FBQTtBQUNsRCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQVE7SUFDM0QsT0FBTyxFQUFFLHFCQUFxQjtJQUM5QixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQy9ELFVBQVUsRUFBRSxnREFBZ0Q7Q0FDN0QsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVHlwZVNjcmlwdENvbXBpbGVCYXNlIHtcclxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNsYXRlICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRleHRcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhZGRJdGVtVG9Gb3JtUHJvcGVydGllcyAoZm9ybVByb3BlcnRpZXM6IGFueSwgaXRlbTogYW55LCBrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGVQcm9wZXJ0aWVzKGl0ZW0pXHJcbiAgICBpZiAoaXRlbS5taW5MZW5ndGggJiYgaXRlbS5taW5MZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcm1Qcm9wZXJ0aWVzW2tleV0gPSBuZXcgRm9ybUNvbnRyb2woW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtUHJvcGVydGllc1trZXldID0gbmV3IEZvcm1Db250cm9sKFtudWxsXSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb21waWxlUHJvcGVydGllcyAoaW5wdXQ6IGFueSk6IHtcclxuICAgIGNvbXBpbGVkUHJvcGVydGllczogYW55XHJcbiAgICBmb3JtUHJvcGVydGllczogYW55XHJcbiAgICBpbnB1dERhdGE6IGFueVxyXG4gIH0ge1xyXG4gICAgY29uc3QgY29tcGlsZWRQcm9wZXJ0aWVzID0gW11cclxuICAgIGNvbnN0IGZvcm1Qcm9wZXJ0aWVzID0ge31cclxuICAgIGxldCBpbnB1dERhdGE6IGFueSA9IHt9XHJcbiAgICBjb25zdCBpbnB1dFRvQ29tcGlsZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaW5wdXQpKVxyXG4gICAgdGhpcy50cmFuc2xhdGVQcm9wZXJ0aWVzKGlucHV0VG9Db21waWxlKVxyXG5cclxuICAgIGlmIChpbnB1dFRvQ29tcGlsZS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgIGlmIChpbnB1dFRvQ29tcGlsZS50eXBlID09PSAnYXJyYXknKSB7XHJcbiAgICAgICAgaW5wdXREYXRhID0gW11cclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5wdXRUb0NvbXBpbGUudHlwZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBpbnB1dERhdGEgPSB7fVxyXG4gICAgICB9XHJcbiAgICAgIGlucHV0VG9Db21waWxlLmlkID0gJ2lucHV0RGF0YSdcclxuICAgICAgdGhpcy5wcm9jY2Vzc1Byb3BlcnRpZXMoaW5wdXRUb0NvbXBpbGUsIGZvcm1Qcm9wZXJ0aWVzLCAnaW5wdXREYXRhJylcclxuICAgICAgdGhpcy50cmFuc2xhdGVQcm9wZXJ0aWVzKGlucHV0VG9Db21waWxlKVxyXG4gICAgICBjb21waWxlZFByb3BlcnRpZXMucHVzaChpbnB1dFRvQ29tcGlsZSlcclxuICAgIH0gZWxzZSBpZiAoaW5wdXRUb0NvbXBpbGUudHlwZSA9PT0gJ2FycmF5Jykge1xyXG4gICAgICBpbnB1dFRvQ29tcGlsZS5pZCA9ICdpbnB1dERhdGEnXHJcbiAgICAgIGlucHV0RGF0YSA9IFtdXHJcbiAgICAgIHRoaXMuYWRkSXRlbVRvRm9ybVByb3BlcnRpZXMoZm9ybVByb3BlcnRpZXMsIGlucHV0VG9Db21waWxlLCAnaW5wdXREYXRhJylcclxuICAgICAgY29tcGlsZWRQcm9wZXJ0aWVzLnB1c2goaW5wdXRUb0NvbXBpbGUpXHJcbiAgICB9IGVsc2UgaWYgKCFpbnB1dFRvQ29tcGlsZS50eXBlKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBPYmplY3Qua2V5cyhpbnB1dFRvQ29tcGlsZSkubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoaW5wdXRUb0NvbXBpbGUpW2luZGV4XVxyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpbnB1dFRvQ29tcGlsZVtrZXldXHJcbiAgICAgICAgaXRlbS5pZCA9IGtleVxyXG5cclxuICAgICAgICBpZiAoaXRlbS50eXBlID09PSAnYXJyYXknKSB7XHJcbiAgICAgICAgICBpbnB1dERhdGFbaXRlbS5pZF0gPSBbXVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGlucHV0RGF0YVtpdGVtLmlkXSA9IHt9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucHJvY2Nlc3NQcm9wZXJ0aWVzKGl0ZW0sIGZvcm1Qcm9wZXJ0aWVzLCBrZXkpXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVQcm9wZXJ0aWVzKGl0ZW0pXHJcbiAgICAgICAgY29tcGlsZWRQcm9wZXJ0aWVzLnB1c2goaXRlbSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbXBpbGVkUHJvcGVydGllcy5zb3J0KChhLCBiKSA9PiBhLnByb3BlcnR5T3JkZXIgLSBiLnByb3BlcnR5T3JkZXIpXHJcbiAgICByZXR1cm4geyBjb21waWxlZFByb3BlcnRpZXMsIGZvcm1Qcm9wZXJ0aWVzLCBpbnB1dERhdGEgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVByb3BlcnRpZXMgKGlucHV0OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChpbnB1dD8udGl0bGUpIHtcclxuICAgICAgaW5wdXQudGl0bGUgPSB0aGlzLmdldFRyYW5zbGF0ZShpbnB1dC50aXRsZSlcclxuICAgIH1cclxuICAgIGlmIChpbnB1dD8uZGVzY3JpcHRpb24pIHtcclxuICAgICAgaW5wdXQuZGVzY3JpcHRpb24gPSB0aGlzLmdldFRyYW5zbGF0ZShpbnB1dC5kZXNjcmlwdGlvbilcclxuICAgIH1cclxuICAgIGlmIChpbnB1dD8ub3B0aW9ucyBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgIGlucHV0Py5vcHRpb25zLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgb3B0aW9uLnZhbHVlID0gdGhpcy5nZXRUcmFuc2xhdGUob3B0aW9uLnZhbHVlKVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHByb2NjZXNzUHJvcGVydGllcyAoaXRlbTogYW55LCBmb3JtUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVByb3BlcnRpZXMoaXRlbSlcclxuICAgIGlmICh0aGlzLmhhc1Byb3BlcnRpZXMoaXRlbSkpIHtcclxuICAgICAgY29uc3QgYXJGaWVsZHNDaGlsZCA9IFtdXHJcbiAgICAgIGZvciAobGV0IGluZGV4Q2hpbGQgPSAwOyBpbmRleENoaWxkIDwgT2JqZWN0LmtleXMoaXRlbS5wcm9wZXJ0aWVzKS5sZW5ndGg7IGluZGV4Q2hpbGQrKykge1xyXG4gICAgICAgIGNvbnN0IGtleUNoaWxkID0gT2JqZWN0LmtleXMoaXRlbS5wcm9wZXJ0aWVzKVtpbmRleENoaWxkXVxyXG4gICAgICAgIGNvbnN0IGl0ZW1DaGlsZCA9IGl0ZW0ucHJvcGVydGllc1trZXlDaGlsZF1cclxuICAgICAgICBpdGVtQ2hpbGQuaWQgPSBrZXlDaGlsZFxyXG4gICAgICAgIGlmICh0aGlzLmhhc1Byb3BlcnRpZXMoaXRlbUNoaWxkKSkge1xyXG4gICAgICAgICAgdGhpcy5wcm9jY2Vzc1Byb3BlcnRpZXMoaXRlbUNoaWxkLCBmb3JtUHJvcGVydGllcywga2V5Q2hpbGQpXHJcbiAgICAgICAgICBhckZpZWxkc0NoaWxkLnB1c2goaXRlbUNoaWxkKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFkZEl0ZW1Ub0Zvcm1Qcm9wZXJ0aWVzKGZvcm1Qcm9wZXJ0aWVzLCBpdGVtQ2hpbGQsIGtleUNoaWxkKVxyXG4gICAgICAgICAgYXJGaWVsZHNDaGlsZC5wdXNoKGl0ZW1DaGlsZClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaXRlbS5wcm9wZXJ0aWVzID0gYXJGaWVsZHNDaGlsZFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hZGRJdGVtVG9Gb3JtUHJvcGVydGllcyhmb3JtUHJvcGVydGllcywgaXRlbSwga2V5KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGhhc1Byb3BlcnRpZXMgKGl0ZW06IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gaXRlbS50eXBlID09PSAnb2JqZWN0JyB8fCAoaXRlbS50eXBlID09PSAnYXJyYXknICYmIGl0ZW0ucHJvcGVydGllcylcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBBUElQQVNTX1RZUEVTQ1JJUFRfQ09NUElMRV9CQVNFX1BST1ZJREVSX0ZBQ1RPUlkgKHBhcmVudEludGw6IFR5cGVTY3JpcHRDb21waWxlQmFzZSk6IGFueSB7XHJcbiAgcmV0dXJuIHBhcmVudEludGwgfHwgbmV3IFR5cGVTY3JpcHRDb21waWxlQmFzZSgpXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBUElQQVNTX1RZUEVTQ1JJUFRfQ09NUElMRV9JTlRMX1BST1ZJREVSOiBhbnkgPSB7XHJcbiAgcHJvdmlkZTogVHlwZVNjcmlwdENvbXBpbGVCYXNlLFxyXG4gIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBUeXBlU2NyaXB0Q29tcGlsZUJhc2VdXSxcclxuICB1c2VGYWN0b3J5OiBBUElQQVNTX1RZUEVTQ1JJUFRfQ09NUElMRV9CQVNFX1BST1ZJREVSX0ZBQ1RPUllcclxufVxyXG4iXX0=
|