@datagrok-libraries/utils 3.3.2 → 4.0.1
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/package.json +1 -1
- package/src/test.d.ts +1 -1
- package/src/test.d.ts.map +1 -1
- package/src/test.js +6 -6
- package/css/file-input.css +0 -32
- package/css/history-input.css +0 -27
- package/css/history-panel.css +0 -57
- package/css/pipeline-view.css +0 -13
- package/css/rich-function-view.css +0 -4
- package/src/computation-view.d.ts +0 -78
- package/src/computation-view.d.ts.map +0 -1
- package/src/computation-view.js +0 -157
- package/src/function-view.d.ts +0 -226
- package/src/function-view.d.ts.map +0 -1
- package/src/function-view.js +0 -384
- package/src/history-utils.d.ts +0 -65
- package/src/history-utils.d.ts.map +0 -1
- package/src/history-utils.js +0 -212
- package/src/pipeline-view.d.ts +0 -40
- package/src/pipeline-view.d.ts.map +0 -1
- package/src/pipeline-view.js +0 -178
- package/src/rich-function-view.d.ts +0 -55
- package/src/rich-function-view.d.ts.map +0 -1
- package/src/rich-function-view.js +0 -571
- package/src/shared-components/file-input.d.ts +0 -23
- package/src/shared-components/file-input.d.ts.map +0 -1
- package/src/shared-components/file-input.js +0 -133
- package/src/shared-components/history-input.d.ts +0 -26
- package/src/shared-components/history-input.d.ts.map +0 -1
- package/src/shared-components/history-input.js +0 -192
- package/src/shared-components/history-panel.d.ts +0 -65
- package/src/shared-components/history-panel.d.ts.map +0 -1
- package/src/shared-components/history-panel.js +0 -502
- package/src/shared-components/ui-utils.d.ts +0 -10
- package/src/shared-components/ui-utils.d.ts.map +0 -1
- package/src/shared-components/ui-utils.js +0 -19
- package/src/validation.d.ts +0 -56
- package/src/validation.d.ts.map +0 -1
- package/src/validation.js +0 -152
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as DG from 'datagrok-api/dg';
|
|
2
|
-
import { FileInput } from './file-input';
|
|
3
|
-
import { HistoryInput } from './history-input';
|
|
4
|
-
import { HistoryPanel } from './history-panel';
|
|
5
|
-
export declare namespace UiUtils {
|
|
6
|
-
function fileInput(initialText?: string, initialValue?: File | null, onValueChanged?: Function | null, fileType?: string): FileInput;
|
|
7
|
-
function historyInput(label: string, _funcName: string, _stringValueFunc: (currentRun: DG.FuncCall) => string, _visibleColumnsForGrid: Record<string, (currentRun: DG.FuncCall) => string>, _visibleColumnsForFilter?: string[]): HistoryInput;
|
|
8
|
-
function historyPanel(objFunc: DG.Func): HistoryPanel;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=ui-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ui-utils.d.ts","sourceRoot":"","sources":["ui-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAkB,SAAS,EAAC,MAAM,cAAc,CAAC;AACxD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,yBAAiB,OAAO,CAAC;IACvB,SAAgB,SAAS,CACvB,WAAW,SAAqB,EAChC,YAAY,GAAE,IAAI,GAAG,IAAW,EAChC,cAAc,GAAE,QAAQ,GAAG,IAAW,EACtC,QAAQ,SAAkB,aAG3B;IAED,SAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,EACrD,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,EAC3E,wBAAwB,GAAE,MAAM,EAAO,gBAGxC;IAED,SAAgB,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,gBAE5C;CACF"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { EXCEL_BLOB_TYPE, FileInput } from './file-input';
|
|
2
|
-
import { HistoryInput } from './history-input';
|
|
3
|
-
import { HistoryPanel } from './history-panel';
|
|
4
|
-
export var UiUtils;
|
|
5
|
-
(function (UiUtils) {
|
|
6
|
-
function fileInput(initialText = 'Drag-n-drop here', initialValue = null, onValueChanged = null, fileType = EXCEL_BLOB_TYPE) {
|
|
7
|
-
return new FileInput(initialText, initialValue, onValueChanged, fileType);
|
|
8
|
-
}
|
|
9
|
-
UiUtils.fileInput = fileInput;
|
|
10
|
-
function historyInput(label, _funcName, _stringValueFunc, _visibleColumnsForGrid, _visibleColumnsForFilter = []) {
|
|
11
|
-
return new HistoryInput(label, _funcName, _stringValueFunc, _visibleColumnsForGrid, _visibleColumnsForFilter);
|
|
12
|
-
}
|
|
13
|
-
UiUtils.historyInput = historyInput;
|
|
14
|
-
function historyPanel(objFunc) {
|
|
15
|
-
return new HistoryPanel(objFunc);
|
|
16
|
-
}
|
|
17
|
-
UiUtils.historyPanel = historyPanel;
|
|
18
|
-
})(UiUtils || (UiUtils = {}));
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1aS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZUFBZSxFQUFFLFNBQVMsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE1BQU0sS0FBVyxPQUFPLENBdUJ2QjtBQXZCRCxXQUFpQixPQUFPO0lBQ3RCLFNBQWdCLFNBQVMsQ0FDdkIsV0FBVyxHQUFHLGtCQUFrQixFQUNoQyxlQUE0QixJQUFJLEVBQ2hDLGlCQUFrQyxJQUFJLEVBQ3RDLFFBQVEsR0FBRyxlQUFlO1FBRTFCLE9BQU8sSUFBSSxTQUFTLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQVBlLGlCQUFTLFlBT3hCLENBQUE7SUFFRCxTQUFnQixZQUFZLENBQzFCLEtBQWEsRUFDYixTQUFpQixFQUNqQixnQkFBcUQsRUFDckQsc0JBQTJFLEVBQzNFLDJCQUFxQyxFQUFFO1FBRXZDLE9BQU8sSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFSZSxvQkFBWSxlQVEzQixDQUFBO0lBRUQsU0FBZ0IsWUFBWSxDQUFDLE9BQWdCO1FBQzNDLE9BQU8sSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUZlLG9CQUFZLGVBRTNCLENBQUE7QUFDSCxDQUFDLEVBdkJnQixPQUFPLEtBQVAsT0FBTyxRQXVCdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHtFWENFTF9CTE9CX1RZUEUsIEZpbGVJbnB1dH0gZnJvbSAnLi9maWxlLWlucHV0JztcbmltcG9ydCB7SGlzdG9yeUlucHV0fSBmcm9tICcuL2hpc3RvcnktaW5wdXQnO1xuaW1wb3J0IHtIaXN0b3J5UGFuZWx9IGZyb20gJy4vaGlzdG9yeS1wYW5lbCc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVWlVdGlscyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBmaWxlSW5wdXQoXG4gICAgaW5pdGlhbFRleHQgPSAnRHJhZy1uLWRyb3AgaGVyZScsXG4gICAgaW5pdGlhbFZhbHVlOiBGaWxlIHwgbnVsbCA9IG51bGwsXG4gICAgb25WYWx1ZUNoYW5nZWQ6IEZ1bmN0aW9uIHwgbnVsbCA9IG51bGwsXG4gICAgZmlsZVR5cGUgPSBFWENFTF9CTE9CX1RZUEVcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBGaWxlSW5wdXQoaW5pdGlhbFRleHQsIGluaXRpYWxWYWx1ZSwgb25WYWx1ZUNoYW5nZWQsIGZpbGVUeXBlKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBoaXN0b3J5SW5wdXQoXG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICBfZnVuY05hbWU6IHN0cmluZyxcbiAgICBfc3RyaW5nVmFsdWVGdW5jOiAoY3VycmVudFJ1bjogREcuRnVuY0NhbGwpID0+IHN0cmluZyxcbiAgICBfdmlzaWJsZUNvbHVtbnNGb3JHcmlkOiBSZWNvcmQ8c3RyaW5nLCAoY3VycmVudFJ1bjogREcuRnVuY0NhbGwpID0+IHN0cmluZz4sXG4gICAgX3Zpc2libGVDb2x1bW5zRm9yRmlsdGVyOiBzdHJpbmdbXSA9IFtdXG4gICkge1xuICAgIHJldHVybiBuZXcgSGlzdG9yeUlucHV0KGxhYmVsLCBfZnVuY05hbWUsIF9zdHJpbmdWYWx1ZUZ1bmMsIF92aXNpYmxlQ29sdW1uc0ZvckdyaWQsIF92aXNpYmxlQ29sdW1uc0ZvckZpbHRlcik7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaGlzdG9yeVBhbmVsKG9iakZ1bmM6IERHLkZ1bmMpIHtcbiAgICByZXR1cm4gbmV3IEhpc3RvcnlQYW5lbChvYmpGdW5jKTtcbiAgfVxufVxuIl19
|
package/src/validation.d.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import ExcelJS from 'exceljs';
|
|
2
|
-
type ValidationSuccess = {
|
|
3
|
-
isValid: true;
|
|
4
|
-
chainedFuncs?: ValidatingFunc[];
|
|
5
|
-
result?: any;
|
|
6
|
-
};
|
|
7
|
-
type ValidationFailure = {
|
|
8
|
-
isValid: false;
|
|
9
|
-
caption: string;
|
|
10
|
-
content: HTMLElement | string;
|
|
11
|
-
};
|
|
12
|
-
type ValidationResult = ValidationSuccess | ValidationFailure;
|
|
13
|
-
export type ValidatingFunc = ((arg: any) => Promise<ValidationResult>);
|
|
14
|
-
type InitialValidatingFunc<InitialArgType> = ((arg: InitialArgType) => Promise<ValidationResult>);
|
|
15
|
-
declare class Validation<InitialArgType> {
|
|
16
|
-
validators: InitialValidatingFunc<InitialArgType>[];
|
|
17
|
-
constructor(validators?: InitialValidatingFunc<InitialArgType>[]);
|
|
18
|
-
validate(initialArg: InitialArgType): Promise<boolean>;
|
|
19
|
-
}
|
|
20
|
-
export declare namespace v8n {
|
|
21
|
-
const isSheetExist: (sheetName: string, chainedFuncs?: ValidatingFunc[]) => (importedWb: ExcelJS.Workbook) => Promise<{
|
|
22
|
-
isValid: boolean;
|
|
23
|
-
caption: string;
|
|
24
|
-
content: string;
|
|
25
|
-
chainedFuncs?: undefined;
|
|
26
|
-
result?: undefined;
|
|
27
|
-
} | {
|
|
28
|
-
isValid: true;
|
|
29
|
-
chainedFuncs: ValidatingFunc[] | undefined;
|
|
30
|
-
result: ExcelJS.Worksheet;
|
|
31
|
-
caption?: undefined;
|
|
32
|
-
content?: undefined;
|
|
33
|
-
}>;
|
|
34
|
-
const isColumnExist: (columnName: string, chainedFuncs?: ValidatingFunc[]) => (sheet: ExcelJS.Worksheet) => Promise<{
|
|
35
|
-
isValid: boolean;
|
|
36
|
-
caption: string;
|
|
37
|
-
content: string;
|
|
38
|
-
chainedFuncs?: undefined;
|
|
39
|
-
} | {
|
|
40
|
-
isValid: true;
|
|
41
|
-
chainedFuncs: ValidatingFunc[] | undefined;
|
|
42
|
-
caption?: undefined;
|
|
43
|
-
content?: undefined;
|
|
44
|
-
}>;
|
|
45
|
-
const isExcelParsed: (chainedFuncs?: ValidatingFunc[]) => (file: File) => Promise<{
|
|
46
|
-
isValid: true;
|
|
47
|
-
chainedFuncs: ValidatingFunc[] | undefined;
|
|
48
|
-
result: ExcelJS.Workbook;
|
|
49
|
-
} | {
|
|
50
|
-
isValid: boolean;
|
|
51
|
-
caption: string;
|
|
52
|
-
content: string;
|
|
53
|
-
}>;
|
|
54
|
-
}
|
|
55
|
-
export default Validation;
|
|
56
|
-
//# sourceMappingURL=validation.d.ts.map
|
package/src/validation.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["validation.ts"],"names":[],"mappings":"AAKA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,KAAK,iBAAiB,GAAG;IAAC,OAAO,EAAE,IAAI,CAAC;IAAC,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CAAC,CAAC;AACxF,KAAK,iBAAiB,GAAG;IAAC,OAAO,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAAA;CAAC,CAAC;AAC1F,KAAK,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACvE,KAAK,qBAAqB,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAElG,cAAM,UAAU,CAAC,cAAc;IAGpB,UAAU,EAAE,qBAAqB,CAAC,cAAc,CAAC,EAAE;gBAAnD,UAAU,GAAE,qBAAqB,CAAC,cAAc,CAAC,EAAO;IAKpD,QAAQ,CAAC,UAAU,EAAE,cAAc;CAkFjD;AAED,yBAAiB,GAAG,CAAC;IACZ,MAAM,YAAY,cAAe,MAAM,iBAAiB,cAAc,EAAE,kBAAwB,QAAQ,QAAQ;;;;;;;;;;;;MAiBtH,CAAC;IAEK,MAAM,aAAa,eAAgB,MAAM,iBAAiB,cAAc,EAAE,aAAmB,QAAQ,SAAS;;;;;;;;;;MAkBpH,CAAC;IAEK,MAAM,aAAa,kBAAmB,cAAc,EAAE,YAAkB,IAAI;;;;;;;;MAmBlF,CAAC;CACH;AAED,eAAe,UAAU,CAAC"}
|
package/src/validation.js
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import * as ui from 'datagrok-api/ui';
|
|
11
|
-
import * as DG from 'datagrok-api/dg';
|
|
12
|
-
import $ from 'cash-dom';
|
|
13
|
-
import ExcelJS from 'exceljs';
|
|
14
|
-
class Validation {
|
|
15
|
-
constructor(
|
|
16
|
-
// Validation functions to be stored and applied
|
|
17
|
-
validators = []) {
|
|
18
|
-
this.validators = validators;
|
|
19
|
-
}
|
|
20
|
-
validate(initialArg) {
|
|
21
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
-
const failedValidations = [];
|
|
23
|
-
const checkCustomValidators = (validators, result) => __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
for (const validator of validators) {
|
|
25
|
-
const validationRes = yield validator(result);
|
|
26
|
-
if (!validationRes.isValid)
|
|
27
|
-
failedValidations.push(validationRes);
|
|
28
|
-
else if (validationRes.chainedFuncs)
|
|
29
|
-
yield checkCustomValidators(validationRes.chainedFuncs, validationRes.result);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
for (const validator of this.validators) {
|
|
33
|
-
const validationRes = yield validator(initialArg);
|
|
34
|
-
if (!validationRes.isValid)
|
|
35
|
-
failedValidations.push(validationRes);
|
|
36
|
-
else if (validationRes.chainedFuncs)
|
|
37
|
-
yield checkCustomValidators(validationRes.chainedFuncs, validationRes.result);
|
|
38
|
-
}
|
|
39
|
-
if (failedValidations.length == 0)
|
|
40
|
-
return true;
|
|
41
|
-
const wizard = new DG.Wizard({ title: 'Data validation failed' });
|
|
42
|
-
failedValidations.forEach((validation) => {
|
|
43
|
-
wizard.page({
|
|
44
|
-
caption: validation.caption,
|
|
45
|
-
root: (validation.content instanceof HTMLElement ? validation.content : ui.markdown(validation.content)),
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
wizard.onOK(() => { });
|
|
49
|
-
const btnCancel = wizard.getButton('CANCEL');
|
|
50
|
-
const btnBack = wizard.getButton('<<');
|
|
51
|
-
const btnNext = wizard.getButton('>>');
|
|
52
|
-
const btnOk = wizard.getButton('OK');
|
|
53
|
-
const pagesLength = wizard.pages.length;
|
|
54
|
-
const stepCounter = ui.divText('1/' + pagesLength);
|
|
55
|
-
stepCounter.style.position = 'absolute';
|
|
56
|
-
stepCounter.style.left = '12px';
|
|
57
|
-
stepCounter.style.color = 'var(--grey-5)';
|
|
58
|
-
wizard.captionHost.style.fontSize = '20px';
|
|
59
|
-
wizard.captionHost.style.fontWeight = '400';
|
|
60
|
-
wizard.captionHost.style.margin = '6px 0';
|
|
61
|
-
$(wizard.root).find('.d4-command-bar').append(stepCounter);
|
|
62
|
-
$(btnBack).html('BACK');
|
|
63
|
-
$(btnNext).html('NEXT');
|
|
64
|
-
$(btnOk).addClass('disabled');
|
|
65
|
-
btnCancel.style.display = 'none';
|
|
66
|
-
btnBack.addEventListener('click', () => {
|
|
67
|
-
const curIndex = wizard.pageIndex + 1;
|
|
68
|
-
const pageIndex = wizard.pages.length;
|
|
69
|
-
wizard.captionHost.style.fontSize = '20px';
|
|
70
|
-
wizard.captionHost.style.fontWeight = '400';
|
|
71
|
-
wizard.captionHost.style.margin = '6px 0';
|
|
72
|
-
if (!wizard.completable)
|
|
73
|
-
$(btnOk).addClass('disabled');
|
|
74
|
-
stepCounter.textContent = curIndex + '/' + pageIndex;
|
|
75
|
-
});
|
|
76
|
-
btnNext.addEventListener('click', () => {
|
|
77
|
-
const curIndex = wizard.pageIndex + 1;
|
|
78
|
-
const pageIndex = wizard.pages.length;
|
|
79
|
-
wizard.captionHost.style.fontSize = '20px';
|
|
80
|
-
wizard.captionHost.style.fontWeight = '400';
|
|
81
|
-
wizard.captionHost.style.margin = '6px 0';
|
|
82
|
-
if (wizard.completable)
|
|
83
|
-
$(btnOk).removeClass('disabled');
|
|
84
|
-
stepCounter.textContent = curIndex + '/' + pageIndex;
|
|
85
|
-
});
|
|
86
|
-
wizard.show();
|
|
87
|
-
return false;
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
export var v8n;
|
|
92
|
-
(function (v8n) {
|
|
93
|
-
v8n.isSheetExist = (sheetName, chainedFuncs) => (importedWb) => __awaiter(this, void 0, void 0, function* () {
|
|
94
|
-
const datasetWs = importedWb.worksheets.find((ws) => ws.name === sheetName);
|
|
95
|
-
if (!datasetWs) {
|
|
96
|
-
return {
|
|
97
|
-
isValid: false,
|
|
98
|
-
caption: `Sheet named '${sheetName}' is not found`,
|
|
99
|
-
content: `Sheet name should be exactly \`${sheetName}\` to be parsed.
|
|
100
|
-
\n
|
|
101
|
-
Please double-check:
|
|
102
|
-
- No extra spaces are in the sheet name
|
|
103
|
-
- Capitalization is the same as in the template
|
|
104
|
-
\n
|
|
105
|
-
${importedWb.worksheets.length > 0 ? `Found sheets: \`${importedWb.worksheets.map((ws) => ws.name).join('`,`')}\`` : `No columns have found.`}
|
|
106
|
-
`
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
return { isValid: true, chainedFuncs, result: datasetWs };
|
|
110
|
-
});
|
|
111
|
-
v8n.isColumnExist = (columnName, chainedFuncs) => (sheet) => __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
const vals = sheet.getRow(1).values;
|
|
113
|
-
if (!vals.includes(columnName)) {
|
|
114
|
-
return {
|
|
115
|
-
isValid: false,
|
|
116
|
-
caption: `No column "${columnName}" in "${sheet.name}" sheet`,
|
|
117
|
-
content: `Column name should be exactly \`${columnName}\` to be parsed.
|
|
118
|
-
\n
|
|
119
|
-
Please double-check:
|
|
120
|
-
- Column names are in the first row of the sheet
|
|
121
|
-
- No extra spaces are in the cell
|
|
122
|
-
- Capitalization is the same as in the template
|
|
123
|
-
\n
|
|
124
|
-
${vals.length > 0 ? `Found columns: \`${vals.filter((val) => val !== '').join('`,`')}\`` : `No columns have found.`}
|
|
125
|
-
`
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
return { isValid: true, chainedFuncs };
|
|
129
|
-
});
|
|
130
|
-
v8n.isExcelParsed = (chainedFuncs) => (file) => __awaiter(this, void 0, void 0, function* () {
|
|
131
|
-
const importedWb = new ExcelJS.Workbook();
|
|
132
|
-
return importedWb.xlsx.load(yield file.arrayBuffer())
|
|
133
|
-
.then((workbook) => __awaiter(this, void 0, void 0, function* () {
|
|
134
|
-
return { isValid: true, chainedFuncs, result: workbook };
|
|
135
|
-
}))
|
|
136
|
-
.catch(() => {
|
|
137
|
-
return {
|
|
138
|
-
isValid: false,
|
|
139
|
-
caption: 'File is failed to parse',
|
|
140
|
-
content: `Please make sure:
|
|
141
|
-
- XLSX format is used (not XLS or XLSM)
|
|
142
|
-
- File should not be corrupted
|
|
143
|
-
\n
|
|
144
|
-
XLS could be converted to XLSX using Excel's export functionality. \n
|
|
145
|
-
If the file is corrupted, it will not open in Excel.
|
|
146
|
-
`,
|
|
147
|
-
};
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
})(v8n || (v8n = {}));
|
|
151
|
-
export default Validation;
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sQ0FBQyxNQUFNLFVBQVUsQ0FBQztBQUN6QixPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFROUIsTUFBTSxVQUFVO0lBQ2Q7SUFDRSxnREFBZ0Q7SUFDekMsYUFBc0QsRUFBRTtRQUF4RCxlQUFVLEdBQVYsVUFBVSxDQUE4QztJQUdqRSxDQUFDO0lBRVksUUFBUSxDQUFDLFVBQTBCOztZQUM5QyxNQUFNLGlCQUFpQixHQUFHLEVBQXlCLENBQUM7WUFDcEQsTUFBTSxxQkFBcUIsR0FBRyxDQUFPLFVBQTRCLEVBQUUsTUFBVyxFQUFFLEVBQUU7Z0JBQ2hGLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO29CQUNsQyxNQUFNLGFBQWEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPO3dCQUN4QixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7eUJBQ25DLElBQUksYUFBYSxDQUFDLFlBQVk7d0JBQUUsTUFBTSxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDcEg7WUFDSCxDQUFDLENBQUEsQ0FBQztZQUVGLEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDdkMsTUFBTSxhQUFhLEdBQUcsTUFBTSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTztvQkFDeEIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FB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b0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyx3QkFBd0I7U0FDekc7YUFDRixDQUFDO1NBQ0g7UUFDRCxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQVksRUFBRSxZQUFZLEVBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUEsQ0FBQztJQUVXLGlCQUFhLEdBQUcsQ0FBQyxZQUErQixFQUFFLEVBQUUsQ0FBQyxDQUFPLElBQVUsRUFBRSxFQUFFO1FBQ3JGLE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDbEQsSUFBSSxDQUFDLENBQU8sUUFBUSxFQUFFLEVBQUU7WUFDdkIsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUEsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE9BQU8sRUFBRSx5QkFBeUI7Z0JBQ2xDLE9BQU8sRUFBRTs7Ozs7O1dBTVI7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUEsQ0FBQztBQUNKLENBQUMsRUE1RGdCLEdBQUcsS0FBSCxHQUFHLFFBNERuQjtBQUVELGVBQWUsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAkIGZyb20gJ2Nhc2gtZG9tJztcbmltcG9ydCBFeGNlbEpTIGZyb20gJ2V4Y2VsanMnO1xuXG50eXBlIFZhbGlkYXRpb25TdWNjZXNzID0ge2lzVmFsaWQ6IHRydWUsIGNoYWluZWRGdW5jcz86IFZhbGlkYXRpbmdGdW5jW10sIHJlc3VsdD86IGFueX07XG50eXBlIFZhbGlkYXRpb25GYWlsdXJlID0ge2lzVmFsaWQ6IGZhbHNlLCBjYXB0aW9uOiBzdHJpbmcsIGNvbnRlbnQ6IEhUTUxFbGVtZW50IHwgc3RyaW5nfTtcbnR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IFZhbGlkYXRpb25TdWNjZXNzIHwgVmFsaWRhdGlvbkZhaWx1cmU7XG5leHBvcnQgdHlwZSBWYWxpZGF0aW5nRnVuYyA9ICgoYXJnOiBhbnkpID0+IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4pO1xudHlwZSBJbml0aWFsVmFsaWRhdGluZ0Z1bmM8SW5pdGlhbEFyZ1R5cGU+ID0gKChhcmc6IEluaXRpYWxBcmdUeXBlKSA9PiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+KTtcblxuY2xhc3MgVmFsaWRhdGlvbjxJbml0aWFsQXJnVHlwZT4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICAvLyBWYWxpZGF0aW9uIGZ1bmN0aW9ucyB0byBiZSBzdG9yZWQgYW5kIGFwcGxpZWRcbiAgICBwdWJsaWMgdmFsaWRhdG9yczogSW5pdGlhbFZhbGlkYXRpbmdGdW5jPEluaXRpYWxBcmdUeXBlPltdID0gW11cbiAgKSB7XG5cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB2YWxpZGF0ZShpbml0aWFsQXJnOiBJbml0aWFsQXJnVHlwZSkge1xuICAgIGNvbnN0IGZhaWxlZFZhbGlkYXRpb25zID0gW10gYXMgVmFsaWRhdGlvbkZhaWx1cmVbXTtcbiAgICBjb25zdCBjaGVja0N1c3RvbVZhbGlkYXRvcnMgPSBhc3luYyAodmFsaWRhdG9yczogVmFsaWRhdGluZ0Z1bmNbXSwgcmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvblJlcyA9IGF3YWl0IHZhbGlkYXRvcihyZXN1bHQpO1xuICAgICAgICBpZiAoIXZhbGlkYXRpb25SZXMuaXNWYWxpZClcbiAgICAgICAgICBmYWlsZWRWYWxpZGF0aW9ucy5wdXNoKHZhbGlkYXRpb25SZXMpO1xuICAgICAgICBlbHNlIGlmICh2YWxpZGF0aW9uUmVzLmNoYWluZWRGdW5jcykgYXdhaXQgY2hlY2tDdXN0b21WYWxpZGF0b3JzKHZhbGlkYXRpb25SZXMuY2hhaW5lZEZ1bmNzLCB2YWxpZGF0aW9uUmVzLnJlc3VsdCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHRoaXMudmFsaWRhdG9ycykge1xuICAgICAgY29uc3QgdmFsaWRhdGlvblJlcyA9IGF3YWl0IHZhbGlkYXRvcihpbml0aWFsQXJnKTtcbiAgICAgIGlmICghdmFsaWRhdGlvblJlcy5pc1ZhbGlkKVxuICAgICAgICBmYWlsZWRWYWxpZGF0aW9ucy5wdXNoKHZhbGlkYXRpb25SZXMpO1xuICAgICAgZWxzZSBpZiAodmFsaWRhdGlvblJlcy5jaGFpbmVkRnVuY3MpIGF3YWl0IGNoZWNrQ3VzdG9tVmFsaWRhdG9ycyh2YWxpZGF0aW9uUmVzLmNoYWluZWRGdW5jcywgdmFsaWRhdGlvblJlcy5yZXN1bHQpO1xuICAgIH1cblxuICAgIGlmIChmYWlsZWRWYWxpZGF0aW9ucy5sZW5ndGggPT0gMCkgcmV0dXJuIHRydWU7XG5cbiAgICBjb25zdCB3aXphcmQgPSBuZXcgREcuV2l6YXJkKHt0aXRsZTogJ0RhdGEgdmFsaWRhdGlvbiBmYWlsZWQnfSk7XG5cbiAgICBmYWlsZWRWYWxpZGF0aW9ucy5mb3JFYWNoKCh2YWxpZGF0aW9uKSA9PiB7XG4gICAgICB3aXphcmQucGFnZSh7XG4gICAgICAgIGNhcHRpb246IHZhbGlkYXRpb24uY2FwdGlvbixcbiAgICAgICAgcm9vdDogKHZhbGlkYXRpb24uY29udGVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gdmFsaWRhdGlvbi5jb250ZW50IDogdWkubWFya2Rvd24odmFsaWRhdGlvbi5jb250ZW50KSkgYXMgSFRNTERpdkVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB3aXphcmQub25PSygoKSA9PiB7fSk7XG5cbiAgICBjb25zdCBidG5DYW5jZWwgPSB3aXphcmQuZ2V0QnV0dG9uKCdDQU5DRUwnKTtcbiAgICBjb25zdCBidG5CYWNrID0gd2l6YXJkLmdldEJ1dHRvbignPDwnKTtcbiAgICBjb25zdCBidG5OZXh0ID0gd2l6YXJkLmdldEJ1dHRvbignPj4nKTtcbiAgICBjb25zdCBidG5PayA9IHdpemFyZC5nZXRCdXR0b24oJ09LJyk7XG5cbiAgICBjb25zdCBwYWdlc0xlbmd0aCA9IHdpemFyZC5wYWdlcy5sZW5ndGg7XG5cbiAgICBjb25zdCBzdGVwQ291bnRlciA9IHVpLmRpdlRleHQoJzEvJytwYWdlc0xlbmd0aCk7XG4gICAgc3RlcENvdW50ZXIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHN0ZXBDb3VudGVyLnN0eWxlLmxlZnQgPSAnMTJweCc7XG4gICAgc3RlcENvdW50ZXIuc3R5bGUuY29sb3IgPSAndmFyKC0tZ3JleS01KSc7XG5cbiAgICB3aXphcmQuY2FwdGlvbkhvc3Quc3R5bGUuZm9udFNpemUgPSAnMjBweCc7XG4gICAgd2l6YXJkLmNhcHRpb25Ib3N0LnN0eWxlLmZvbnRXZWlnaHQgPSAnNDAwJztcbiAgICB3aXphcmQuY2FwdGlvbkhvc3Quc3R5bGUubWFyZ2luID0gJzZweCAwJztcblxuICAgICQod2l6YXJkLnJvb3QpLmZpbmQoJy5kNC1jb21tYW5kLWJhcicpLmFwcGVuZChzdGVwQ291bnRlcik7XG4gICAgJChidG5CYWNrKS5odG1sKCdCQUNLJyk7XG4gICAgJChidG5OZXh0KS5odG1sKCdORVhUJyk7XG4gICAgJChidG5PaykuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XG4gICAgYnRuQ2FuY2VsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cbiAgICBidG5CYWNrLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCk9PntcbiAgICAgIGNvbnN0IGN1ckluZGV4ID0gd2l6YXJkLnBhZ2VJbmRleCsxO1xuICAgICAgY29uc3QgcGFnZUluZGV4ID0gd2l6YXJkLnBhZ2VzLmxlbmd0aDtcblxuICAgICAgd2l6YXJkLmNhcHRpb25Ib3N0LnN0eWxlLmZvbnRTaXplID0gJzIwcHgnO1xuICAgICAgd2l6YXJkLmNhcHRpb25Ib3N0LnN0eWxlLmZvbnRXZWlnaHQgPSAnNDAwJztcbiAgICAgIHdpemFyZC5jYXB0aW9uSG9zdC5zdHlsZS5tYXJnaW4gPSAnNnB4IDAnO1xuXG4gICAgICBpZiAoIXdpemFyZC5jb21wbGV0YWJsZSlcbiAgICAgICAgJChidG5PaykuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XG5cbiAgICAgIHN0ZXBDb3VudGVyLnRleHRDb250ZW50ID0gY3VySW5kZXgrJy8nK3BhZ2VJbmRleDtcbiAgICB9KTtcblxuICAgIGJ0bk5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKT0+e1xuICAgICAgY29uc3QgY3VySW5kZXggPSB3aXphcmQucGFnZUluZGV4KzE7XG4gICAgICBjb25zdCBwYWdlSW5kZXggPSB3aXphcmQucGFnZXMubGVuZ3RoO1xuXG4gICAgICB3aXphcmQuY2FwdGlvbkhvc3Quc3R5bGUuZm9udFNpemUgPSAnMjBweCc7XG4gICAgICB3aXphcmQuY2FwdGlvbkhvc3Quc3R5bGUuZm9udFdlaWdodCA9ICc0MDAnO1xuICAgICAgd2l6YXJkLmNhcHRpb25Ib3N0LnN0eWxlLm1hcmdpbiA9ICc2cHggMCc7XG5cbiAgICAgIGlmICh3aXphcmQuY29tcGxldGFibGUpXG4gICAgICAgICQoYnRuT2spLnJlbW92ZUNsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgc3RlcENvdW50ZXIudGV4dENvbnRlbnQgPSBjdXJJbmRleCsnLycrcGFnZUluZGV4O1xuICAgIH0pO1xuXG4gICAgd2l6YXJkLnNob3coKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSB2OG4ge1xuICBleHBvcnQgY29uc3QgaXNTaGVldEV4aXN0ID0gKHNoZWV0TmFtZTogc3RyaW5nLCBjaGFpbmVkRnVuY3M/OiBWYWxpZGF0aW5nRnVuY1tdKSA9PiBhc3luYyAoaW1wb3J0ZWRXYjogRXhjZWxKUy5Xb3JrYm9vaykgPT4ge1xuICAgIGNvbnN0IGRhdGFzZXRXcyA9IGltcG9ydGVkV2Iud29ya3NoZWV0cy5maW5kKCh3cykgPT4gd3MubmFtZSA9PT0gc2hlZXROYW1lKTtcbiAgICBpZiAoIWRhdGFzZXRXcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgIGNhcHRpb246IGBTaGVldCBuYW1lZCAnJHtzaGVldE5hbWV9JyBpcyBub3QgZm91bmRgLFxuICAgICAgICBjb250ZW50OiBgU2hlZXQgbmFtZSBzaG91bGQgYmUgZXhhY3RseSBcXGAke3NoZWV0TmFtZX1cXGAgdG8gYmUgcGFyc2VkLiBcblxcbiAgIFxuUGxlYXNlIGRvdWJsZS1jaGVjazpcbi0gTm8gZXh0cmEgc3BhY2VzIGFyZSBpbiB0aGUgc2hlZXQgbmFtZVxuLSBDYXBpdGFsaXphdGlvbiBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgdGVtcGxhdGVcblxcblxuJHtpbXBvcnRlZFdiLndvcmtzaGVldHMubGVuZ3RoID4gMCA/IGBGb3VuZCBzaGVldHM6IFxcYCR7aW1wb3J0ZWRXYi53b3Jrc2hlZXRzLm1hcCgod3MpID0+IHdzLm5hbWUpLmpvaW4oJ2AsYCcpfVxcYGA6IGBObyBjb2x1bW5zIGhhdmUgZm91bmQuYH0gXG4gICAgICAgIGBcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7aXNWYWxpZDogdHJ1ZSBhcyB0cnVlLCBjaGFpbmVkRnVuY3MsIHJlc3VsdDogZGF0YXNldFdzfTtcbiAgfTtcblxuICBleHBvcnQgY29uc3QgaXNDb2x1bW5FeGlzdCA9IChjb2x1bW5OYW1lOiBzdHJpbmcsIGNoYWluZWRGdW5jcz86IFZhbGlkYXRpbmdGdW5jW10pID0+IGFzeW5jIChzaGVldDogRXhjZWxKUy5Xb3Jrc2hlZXQpID0+IHtcbiAgICBjb25zdCB2YWxzID0gc2hlZXQuZ2V0Um93KDEpLnZhbHVlcyBhcyBFeGNlbEpTLkNlbGxWYWx1ZVtdO1xuICAgIGlmICghdmFscy5pbmNsdWRlcyhjb2x1bW5OYW1lKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgIGNhcHRpb246IGBObyBjb2x1bW4gXCIke2NvbHVtbk5hbWV9XCIgaW4gXCIke3NoZWV0Lm5hbWV9XCIgc2hlZXRgLFxuICAgICAgICBjb250ZW50OiBgQ29sdW1uIG5hbWUgc2hvdWxkIGJlIGV4YWN0bHkgXFxgJHtjb2x1bW5OYW1lfVxcYCB0byBiZSBwYXJzZWQuIFxuXFxuXG5QbGVhc2UgZG91YmxlLWNoZWNrOlxuLSBDb2x1bW4gbmFtZXMgYXJlIGluIHRoZSBmaXJzdCByb3cgb2YgdGhlIHNoZWV0XG4tIE5vIGV4dHJhIHNwYWNlcyBhcmUgaW4gdGhlIGNlbGxcbi0gQ2FwaXRhbGl6YXRpb24gaXMgdGhlIHNhbWUgYXMgaW4gdGhlIHRlbXBsYXRlXG5cXG5cbiR7dmFscy5sZW5ndGggPiAwID8gYEZvdW5kIGNvbHVtbnM6IFxcYCR7dmFscy5maWx0ZXIoKHZhbCkgPT4gdmFsICE9PSAnJykuam9pbignYCxgJyl9XFxgYDogYE5vIGNvbHVtbnMgaGF2ZSBmb3VuZC5gfSBcbiAgICAgICAgYFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtpc1ZhbGlkOiB0cnVlIGFzIHRydWUsIGNoYWluZWRGdW5jc307XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGlzRXhjZWxQYXJzZWQgPSAoY2hhaW5lZEZ1bmNzPzogVmFsaWRhdGluZ0Z1bmNbXSkgPT4gYXN5bmMgKGZpbGU6IEZpbGUpID0+IHtcbiAgICBjb25zdCBpbXBvcnRlZFdiID0gbmV3IEV4Y2VsSlMuV29ya2Jvb2soKTtcbiAgICByZXR1cm4gaW1wb3J0ZWRXYi54bHN4LmxvYWQoYXdhaXQgZmlsZS5hcnJheUJ1ZmZlcigpKVxuICAgICAgLnRoZW4oYXN5bmMgKHdvcmtib29rKSA9PiB7XG4gICAgICAgIHJldHVybiB7aXNWYWxpZDogdHJ1ZSBhcyB0cnVlLCBjaGFpbmVkRnVuY3MsIHJlc3VsdDogd29ya2Jvb2t9O1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgICAgY2FwdGlvbjogJ0ZpbGUgaXMgZmFpbGVkIHRvIHBhcnNlJyxcbiAgICAgICAgICBjb250ZW50OiBgUGxlYXNlIG1ha2Ugc3VyZTpcbi0gWExTWCBmb3JtYXQgaXMgdXNlZCAobm90IFhMUyBvciBYTFNNKVxuLSBGaWxlIHNob3VsZCBub3QgYmUgY29ycnVwdGVkXG5cXG5cblhMUyBjb3VsZCBiZSBjb252ZXJ0ZWQgdG8gWExTWCB1c2luZyBFeGNlbCdzIGV4cG9ydCBmdW5jdGlvbmFsaXR5LiBcXG5cbklmIHRoZSBmaWxlIGlzIGNvcnJ1cHRlZCwgaXQgd2lsbCBub3Qgb3BlbiBpbiBFeGNlbC4gXG4gICAgICAgICAgYCxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBWYWxpZGF0aW9uO1xuIl19
|