UNPKG

angular-odata

Version:

Client side OData typescript library for Angular

95 lines 14.4 kB
import { HttpHeaders, HttpParams } from '@angular/common/http'; import { BOUNDARY_PREFIX_SUFFIX } from '../constants'; import { Types } from './types'; export const Http = { //Merge Headers mergeHttpHeaders(...values) { let headers = new HttpHeaders(); values.forEach((value) => { if (value instanceof HttpHeaders) { value.keys().forEach((key) => { headers = (value.getAll(key) || []).reduce((acc, v) => acc.append(key, v), headers); }); } else if (Types.isPlainObject(value)) { Object.entries(value).forEach(([key, value]) => { headers = (Array.isArray(value) ? value : [value]).reduce((acc, v) => acc.append(key, v), headers); }); } }); return headers; }, // Merge Params mergeHttpParams(...values) { let params = new HttpParams(); values.forEach((value) => { if (value instanceof HttpParams) { value.keys().forEach((key) => { params = (value.getAll(key) || []).reduce((acc, v) => acc.append(key, v), params); }); } else if (Types.isPlainObject(value)) { Object.entries(value).forEach(([key, value]) => { params = (Array.isArray(value) ? value : [value]).reduce((acc, v) => acc.append(key, v), params); }); } }); return params; }, // Split Params splitHttpParams(params, keys) { let other = new HttpParams(); params.keys().forEach((key) => { if (keys.includes(key)) { other = (params.getAll(key) || []).reduce((acc, v) => acc.append(key, v), other); params = params.delete(key); } }); return [params, other]; }, // Without Params withoutHttpParams(params, keys) { return keys.reduce((acc, key) => acc.delete(key), params); }, resolveHeaderKey(headers, options) { if (headers instanceof HttpHeaders) { return headers.keys().find((k) => options.indexOf(k) !== -1); } else if (Types.isPlainObject(headers)) { return Object.keys(headers).find((k) => options.indexOf(k) !== -1); } return undefined; }, headerValue(header) { let res = header.split(';')[0].trim(); res = res.split(':')[1].trim(); return res; }, parseResponseStatus(line) { const chunks = line.split(' '); return { status: chunks[0], code: parseInt(chunks[1], 10), message: chunks.slice(2).join(' '), }; }, boundaryDelimiter(contentType) { const contentTypeParts = contentType.split(';'); if (contentTypeParts.length === 2) { const boundary = contentType.split(';')[1].trim(); const boundaryDelimiter = BOUNDARY_PREFIX_SUFFIX + boundary.split('=')[1]; return boundaryDelimiter; } else { return ''; } }, boundaryEnd(boundaryDelimiter) { if (!boundaryDelimiter.length) { return ''; } const boundaryEnd = boundaryDelimiter + BOUNDARY_PREFIX_SUFFIX; return boundaryEnd; }, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi91dGlscy9odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFaEMsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHO0lBQ2xCLGVBQWU7SUFDZixnQkFBZ0IsQ0FDZCxHQUFHLE1BQWlFO1FBRXBFLElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLElBQUksS0FBSyxZQUFZLFdBQVcsRUFBRSxDQUFDO2dCQUNqQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQzNCLE9BQU8sR0FBRyxDQUFFLEtBQXFCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDekQsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFDOUIsT0FBTyxDQUNSLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7b0JBQzdDLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDdkQsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFDOUIsT0FBTyxDQUNSLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsZUFBZTtJQUNmLGVBQWUsQ0FDYixHQUFHLE1BU0E7UUFFSCxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2QixJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUMzQixNQUFNLEdBQUcsQ0FBRSxLQUFvQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ3ZELENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQzlCLE1BQU0sQ0FDUCxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO29CQUM3QyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQ3RELENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQzlCLE1BQU0sQ0FDUCxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGVBQWU7SUFDZixlQUFlLENBQ2IsTUFBa0IsRUFDbEIsSUFBYztRQUVkLElBQUksS0FBSyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDN0IsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QixLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDdkMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFDOUIsS0FBSyxDQUNOLENBQUM7Z0JBQ0YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLGlCQUFpQixDQUFDLE1BQWtCLEVBQUUsSUFBYztRQUNsRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxPQUE2RCxFQUM3RCxPQUFpQjtRQUVqQixJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNuQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsSUFBSSxHQUFHLEdBQVcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFZO1FBSzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsT0FBTztZQUNMLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QixPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ25DLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsV0FBbUI7UUFDbkMsTUFBTSxnQkFBZ0IsR0FBYSxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFELElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sUUFBUSxHQUFXLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUQsTUFBTSxpQkFBaUIsR0FDckIsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRCxPQUFPLGlCQUFpQixDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxpQkFBeUI7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFXLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDO1FBQ3ZFLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IEJPVU5EQVJZX1BSRUZJWF9TVUZGSVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IEh0dHAgPSB7XG4gIC8vTWVyZ2UgSGVhZGVyc1xuICBtZXJnZUh0dHBIZWFkZXJzKFxuICAgIC4uLnZhbHVlczogKEh0dHBIZWFkZXJzIHwgeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9KVtdXG4gICk6IEh0dHBIZWFkZXJzIHtcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgSHR0cEhlYWRlcnMpIHtcbiAgICAgICAgdmFsdWUua2V5cygpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGhlYWRlcnMgPSAoKHZhbHVlIGFzIEh0dHBIZWFkZXJzKS5nZXRBbGwoa2V5KSB8fCBbXSkucmVkdWNlKFxuICAgICAgICAgICAgKGFjYywgdikgPT4gYWNjLmFwcGVuZChrZXksIHYpLFxuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFsdWUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGhlYWRlcnMgPSAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0pLnJlZHVjZShcbiAgICAgICAgICAgIChhY2MsIHYpID0+IGFjYy5hcHBlbmQoa2V5LCB2KSxcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH0sXG5cbiAgLy8gTWVyZ2UgUGFyYW1zXG4gIG1lcmdlSHR0cFBhcmFtcyhcbiAgICAuLi52YWx1ZXM6IChcbiAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgfCB7XG4gICAgICAgICAgW3BhcmFtOiBzdHJpbmddOlxuICAgICAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgICAgIHwgbnVtYmVyXG4gICAgICAgICAgICB8IGJvb2xlYW5cbiAgICAgICAgICAgIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICAgICAgfVxuICAgIClbXVxuICApOiBIdHRwUGFyYW1zIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEh0dHBQYXJhbXMpIHtcbiAgICAgICAgdmFsdWUua2V5cygpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIHBhcmFtcyA9ICgodmFsdWUgYXMgSHR0cFBhcmFtcykuZ2V0QWxsKGtleSkgfHwgW10pLnJlZHVjZShcbiAgICAgICAgICAgIChhY2MsIHYpID0+IGFjYy5hcHBlbmQoa2V5LCB2KSxcbiAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFsdWUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIHBhcmFtcyA9IChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSkucmVkdWNlKFxuICAgICAgICAgICAgKGFjYywgdikgPT4gYWNjLmFwcGVuZChrZXksIHYpLFxuICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH0sXG5cbiAgLy8gU3BsaXQgUGFyYW1zXG4gIHNwbGl0SHR0cFBhcmFtcyhcbiAgICBwYXJhbXM6IEh0dHBQYXJhbXMsXG4gICAga2V5czogc3RyaW5nW10sXG4gICk6IFtIdHRwUGFyYW1zLCBIdHRwUGFyYW1zXSB7XG4gICAgbGV0IG90aGVyID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMua2V5cygpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICBvdGhlciA9IChwYXJhbXMuZ2V0QWxsKGtleSkgfHwgW10pLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCB2KSA9PiBhY2MuYXBwZW5kKGtleSwgdiksXG4gICAgICAgICAgb3RoZXIsXG4gICAgICAgICk7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gW3BhcmFtcywgb3RoZXJdO1xuICB9LFxuXG4gIC8vIFdpdGhvdXQgUGFyYW1zXG4gIHdpdGhvdXRIdHRwUGFyYW1zKHBhcmFtczogSHR0cFBhcmFtcywga2V5czogc3RyaW5nW10pOiBIdHRwUGFyYW1zIHtcbiAgICByZXR1cm4ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiBhY2MuZGVsZXRlKGtleSksIHBhcmFtcyk7XG4gIH0sXG5cbiAgcmVzb2x2ZUhlYWRlcktleShcbiAgICBoZWFkZXJzOiBIdHRwSGVhZGVycyB8IHsgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9LFxuICAgIG9wdGlvbnM6IHN0cmluZ1tdLFxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSHR0cEhlYWRlcnMpIHtcbiAgICAgIHJldHVybiBoZWFkZXJzLmtleXMoKS5maW5kKChrKSA9PiBvcHRpb25zLmluZGV4T2YoaykgIT09IC0xKTtcbiAgICB9IGVsc2UgaWYgKFR5cGVzLmlzUGxhaW5PYmplY3QoaGVhZGVycykpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhoZWFkZXJzKS5maW5kKChrKSA9PiBvcHRpb25zLmluZGV4T2YoaykgIT09IC0xKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSxcblxuICBoZWFkZXJWYWx1ZShoZWFkZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHJlczogc3RyaW5nID0gaGVhZGVyLnNwbGl0KCc7JylbMF0udHJpbSgpO1xuICAgIHJlcyA9IHJlcy5zcGxpdCgnOicpWzFdLnRyaW0oKTtcbiAgICByZXR1cm4gcmVzO1xuICB9LFxuXG4gIHBhcnNlUmVzcG9uc2VTdGF0dXMobGluZTogc3RyaW5nKToge1xuICAgIHN0YXR1czogc3RyaW5nO1xuICAgIGNvZGU6IG51bWJlcjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IGNodW5rcyA9IGxpbmUuc3BsaXQoJyAnKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiBjaHVua3NbMF0sXG4gICAgICBjb2RlOiBwYXJzZUludChjaHVua3NbMV0sIDEwKSxcbiAgICAgIG1lc3NhZ2U6IGNodW5rcy5zbGljZSgyKS5qb2luKCcgJyksXG4gICAgfTtcbiAgfSxcblxuICBib3VuZGFyeURlbGltaXRlcihjb250ZW50VHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb250ZW50VHlwZVBhcnRzOiBzdHJpbmdbXSA9IGNvbnRlbnRUeXBlLnNwbGl0KCc7Jyk7XG4gICAgaWYgKGNvbnRlbnRUeXBlUGFydHMubGVuZ3RoID09PSAyKSB7XG4gICAgICBjb25zdCBib3VuZGFyeTogc3RyaW5nID0gY29udGVudFR5cGUuc3BsaXQoJzsnKVsxXS50cmltKCk7XG4gICAgICBjb25zdCBib3VuZGFyeURlbGltaXRlcjogc3RyaW5nID1cbiAgICAgICAgQk9VTkRBUllfUFJFRklYX1NVRkZJWCArIGJvdW5kYXJ5LnNwbGl0KCc9JylbMV07XG4gICAgICByZXR1cm4gYm91bmRhcnlEZWxpbWl0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH0sXG5cbiAgYm91bmRhcnlFbmQoYm91bmRhcnlEZWxpbWl0ZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFib3VuZGFyeURlbGltaXRlci5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgYm91bmRhcnlFbmQ6IHN0cmluZyA9IGJvdW5kYXJ5RGVsaW1pdGVyICsgQk9VTkRBUllfUFJFRklYX1NVRkZJWDtcbiAgICByZXR1cm4gYm91bmRhcnlFbmQ7XG4gIH0sXG59O1xuIl19