@apipass/schemas 1.0.7 → 1.0.9
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/README.md +33 -33
- 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/{esm2020 → esm2022}/public-api.mjs +17 -17
- 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/esm2022/schema-form/schema-array/schema-array.mjs +219 -0
- 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/{esm2020 → esm2022}/schema-form-render.module.mjs +109 -108
- package/esm2022/schema-validation-field.mjs +18 -0
- package/{esm2020 → esm2022}/struct.utils.mjs +9 -9
- package/esm2022/type-script-compile/type-script-compile.base.mjs +115 -0
- package/{fesm2020 → fesm2022}/apipass-schemas.mjs +1571 -1563
- 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 -14
- 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/esm2020/base-schema.component.mjs +0 -37
- package/esm2020/schema-custom-attributes/schema-custom-attributes.mjs +0 -169
- package/esm2020/schema-fields.service.mjs +0 -80
- package/esm2020/schema-form/schema-array/array-session/array-session.mjs +0 -143
- package/esm2020/schema-form/schema-array/schema-array.mjs +0 -220
- 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-validation-field.mjs +0 -14
- package/esm2020/type-script-compile/type-script-compile.base.mjs +0 -114
- package/fesm2015/apipass-schemas.mjs +0 -1801
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1zY3JpcHQtY29tcGlsZS5iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NoZW1hcy9zcmMvdHlwZS1zY3JpcHQtY29tcGlsZS90eXBlLXNjcmlwdC1jb21waWxlLmJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7O0FBRXhELE1BQ2EscUJBQXFCO0lBRXRCLFlBQVksQ0FBRSxJQUFZO1FBQ2xDLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVTLHVCQUF1QixDQUFFLGNBQW1CLEVBQUUsSUFBUyxFQUFFLEdBQVc7UUFDNUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRTtZQUN4QyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3JFO2FBQU07WUFDTCxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1NBQzlDO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQixDQUFFLEtBQVU7UUFLbEMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUE7UUFDN0IsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFBO1FBQ3pCLElBQUksU0FBUyxHQUFRLEVBQUUsQ0FBQTtRQUN2QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFD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QUMsdUJBQXVCLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQTtTQUN4RDtJQUNILENBQUM7SUFFUyxhQUFhLENBQUUsSUFBUztRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzdFLENBQUM7K0VBdkdVLHFCQUFxQjtnRUFBckIscUJBQXFCLFdBQXJCLHFCQUFxQixtQkFEUixNQUFNOztTQUNuQixxQkFBcUI7dUZBQXJCLHFCQUFxQjtjQURqQyxVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQTRHbEMsTUFBTSxVQUFVLGdEQUFnRCxDQUFFLFVBQWlDO0lBQ2pHLE9BQU8sVUFBVSxJQUFJLElBQUkscUJBQXFCLEVBQUUsQ0FBQTtBQUNsRCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQVE7SUFDM0QsT0FBTyxFQUFFLHFCQUFxQjtJQUM5QixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQy9ELFVBQVUsRUFBRSxnREFBZ0Q7Q0FDN0QsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRDb21waWxlQmFzZSB7XG5cbiAgcHJvdGVjdGVkIGdldFRyYW5zbGF0ZSAodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGV4dFxuICB9XG5cbiAgcHJvdGVjdGVkIGFkZEl0ZW1Ub0Zvcm1Qcm9wZXJ0aWVzIChmb3JtUHJvcGVydGllczogYW55LCBpdGVtOiBhbnksIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2xhdGVQcm9wZXJ0aWVzKGl0ZW0pXG4gICAgaWYgKGl0ZW0ubWluTGVuZ3RoICYmIGl0ZW0ubWluTGVuZ3RoID4gMCkge1xuICAgICAgZm9ybVByb3BlcnRpZXNba2V5XSA9IG5ldyBGb3JtQ29udHJvbChbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSlcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybVByb3BlcnRpZXNba2V5XSA9IG5ldyBGb3JtQ29udHJvbChbbnVsbF0pXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbXBpbGVQcm9wZXJ0aWVzIChpbnB1dDogYW55KToge1xuICAgIGNvbXBpbGVkUHJvcGVydGllczogYW55XG4gICAgZm9ybVByb3BlcnRpZXM6IGFueVxuICAgIGlucHV0RGF0YTogYW55XG4gIH0ge1xuICAgIGNvbnN0IGNvbXBpbGVkUHJvcGVydGllcyA9IFtdXG4gICAgY29uc3QgZm9ybVByb3BlcnRpZXMgPSB7fVxuICAgIGxldCBpbnB1dERhdGE6IGFueSA9IHt9XG4gICAgY29uc3QgaW5wdXRUb0NvbXBpbGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGlucHV0KSlcbiAgICB0aGlzLnRyYW5zbGF0ZVByb3BlcnRpZXMoaW5wdXRUb0NvbXBpbGUpXG5cbiAgICBpZiAoaW5wdXRUb0NvbXBpbGUucHJvcGVydGllcykge1xuICAgICAgaWYgKGlucHV0VG9Db21waWxlLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgaW5wdXREYXRhID0gW11cbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dFRvQ29tcGlsZS50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpbnB1dERhdGEgPSB7fVxuICAgICAgfVxuICAgICAgaW5wdXRUb0NvbXBpbGUuaWQgPSAnaW5wdXREYXRhJ1xuICAgICAgdGhpcy5wcm9jY2Vzc1Byb3BlcnRpZXMoaW5wdXRUb0NvbXBpbGUsIGZvcm1Qcm9wZXJ0aWVzLCAnaW5wdXREYXRhJylcbiAgICAgIHRoaXMudHJhbnNsYXRlUHJvcGVydGllcyhpbnB1dFRvQ29tcGlsZSlcbiAgICAgIGNvbXBpbGVkUHJvcGVydGllcy5wdXNoKGlucHV0VG9Db21waWxlKVxuICAgIH0gZWxzZSBpZiAoaW5wdXRUb0NvbXBpbGUudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgaW5wdXRUb0NvbXBpbGUuaWQgPSAnaW5wdXREYXRhJ1xuICAgICAgaW5wdXREYXRhID0gW11cbiAgICAgIHRoaXMuYWRkSXRlbVRvRm9ybVByb3BlcnRpZXMoZm9ybVByb3BlcnRpZXMsIGlucHV0VG9Db21waWxlLCAnaW5wdXREYXRhJylcbiAgICAgIGNvbXBpbGVkUHJvcGVydGllcy5wdXNoKGlucHV0VG9Db21waWxlKVxuICAgIH0gZWxzZSBpZiAoIWlucHV0VG9Db21waWxlLnR5cGUpIHtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBPYmplY3Qua2V5cyhpbnB1dFRvQ29tcGlsZSkubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGlucHV0VG9Db21waWxlKVtpbmRleF1cbiAgICAgICAgY29uc3QgaXRlbSA9IGlucHV0VG9Db21waWxlW2tleV1cbiAgICAgICAgaXRlbS5pZCA9IGtleVxuXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgICBpbnB1dERhdGFbaXRlbS5pZF0gPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBpbnB1dERhdGFbaXRlbS5pZF0gPSB7fVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvY2Nlc3NQcm9wZXJ0aWVzKGl0ZW0sIGZvcm1Qcm9wZXJ0aWVzLCBrZXkpXG4gICAgICAgIHRoaXMudHJhbnNsYXRlUHJvcGVydGllcyhpdGVtKVxuICAgICAgICBjb21waWxlZFByb3BlcnRpZXMucHVzaChpdGVtKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBpbGVkUHJvcGVydGllcy5zb3J0KChhLCBiKSA9PiBhLnByb3BlcnR5T3JkZXIgLSBiLnByb3BlcnR5T3JkZXIpXG4gICAgcmV0dXJuIHsgY29tcGlsZWRQcm9wZXJ0aWVzLCBmb3JtUHJvcGVydGllcywgaW5wdXREYXRhIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVQcm9wZXJ0aWVzIChpbnB1dDogYW55KTogdm9pZCB7XG4gICAgaWYgKGlucHV0Py50aXRsZSkge1xuICAgICAgaW5wdXQudGl0bGUgPSB0aGlzLmdldFRyYW5zbGF0ZShpbnB1dC50aXRsZSlcbiAgICB9XG4gICAgaWYgKGlucHV0Py5kZXNjcmlwdGlvbikge1xuICAgICAgaW5wdXQuZGVzY3JpcHRpb24gPSB0aGlzLmdldFRyYW5zbGF0ZShpbnB1dC5kZXNjcmlwdGlvbilcbiAgICB9XG4gICAgaWYgKGlucHV0Py5vcHRpb25zIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGlucHV0Py5vcHRpb25zLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICAgIG9wdGlvbi52YWx1ZSA9IHRoaXMuZ2V0VHJhbnNsYXRlKG9wdGlvbi52YWx1ZSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHByb2NjZXNzUHJvcGVydGllcyAoaXRlbTogYW55LCBmb3JtUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogYW55KTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2xhdGVQcm9wZXJ0aWVzKGl0ZW0pXG4gICAgaWYgKHRoaXMuaGFzUHJvcGVydGllcyhpdGVtKSkge1xuICAgICAgY29uc3QgYXJGaWVsZHNDaGlsZCA9IFtdXG4gICAgICBmb3IgKGxldCBpbmRleENoaWxkID0gMDsgaW5kZXhDaGlsZCA8IE9iamVjdC5rZXlzKGl0ZW0ucHJvcGVydGllcykubGVuZ3RoOyBpbmRleENoaWxkKyspIHtcbiAgICAgICAgY29uc3Qga2V5Q2hpbGQgPSBPYmplY3Qua2V5cyhpdGVtLnByb3BlcnRpZXMpW2luZGV4Q2hpbGRdXG4gICAgICAgIGNvbnN0IGl0ZW1DaGlsZCA9IGl0ZW0ucHJvcGVydGllc1trZXlDaGlsZF1cbiAgICAgICAgaXRlbUNoaWxkLmlkID0ga2V5Q2hpbGRcbiAgICAgICAgaWYgKHRoaXMuaGFzUHJvcGVydGllcyhpdGVtQ2hpbGQpKSB7XG4gICAgICAgICAgdGhpcy5wcm9jY2Vzc1Byb3BlcnRpZXMoaXRlbUNoaWxkLCBmb3JtUHJvcGVydGllcywga2V5Q2hpbGQpXG4gICAgICAgICAgYXJGaWVsZHNDaGlsZC5wdXNoKGl0ZW1DaGlsZClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmFkZEl0ZW1Ub0Zvcm1Qcm9wZXJ0aWVzKGZvcm1Qcm9wZXJ0aWVzLCBpdGVtQ2hpbGQsIGtleUNoaWxkKVxuICAgICAgICAgIGFyRmllbGRzQ2hpbGQucHVzaChpdGVtQ2hpbGQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGl0ZW0ucHJvcGVydGllcyA9IGFyRmllbGRzQ2hpbGRcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRJdGVtVG9Gb3JtUHJvcGVydGllcyhmb3JtUHJvcGVydGllcywgaXRlbSwga2V5KVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYXNQcm9wZXJ0aWVzIChpdGVtOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBpdGVtLnR5cGUgPT09ICdvYmplY3QnIHx8IChpdGVtLnR5cGUgPT09ICdhcnJheScgJiYgaXRlbS5wcm9wZXJ0aWVzKVxuICB9XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFQSVBBU1NfVFlQRVNDUklQVF9DT01QSUxFX0JBU0VfUFJPVklERVJfRkFDVE9SWSAocGFyZW50SW50bDogVHlwZVNjcmlwdENvbXBpbGVCYXNlKTogYW55IHtcbiAgcmV0dXJuIHBhcmVudEludGwgfHwgbmV3IFR5cGVTY3JpcHRDb21waWxlQmFzZSgpXG59XG5cbmV4cG9ydCBjb25zdCBBUElQQVNTX1RZUEVTQ1JJUFRfQ09NUElMRV9JTlRMX1BST1ZJREVSOiBhbnkgPSB7XG4gIHByb3ZpZGU6IFR5cGVTY3JpcHRDb21waWxlQmFzZSxcbiAgZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIFR5cGVTY3JpcHRDb21waWxlQmFzZV1dLFxuICB1c2VGYWN0b3J5OiBBUElQQVNTX1RZUEVTQ1JJUFRfQ09NUElMRV9CQVNFX1BST1ZJREVSX0ZBQ1RPUllcbn1cbiJdfQ==
|