UNPKG

ness

Version:

✪ No-effort static sites deployed to your AWS account.

102 lines 15.6 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Settings = void 0; const react_1 = __importStar(require("react")); const fs = __importStar(require("fs-extra")); const ink_1 = require("ink"); const Task_1 = require("./Task"); const utils_1 = require("../utils"); const context_1 = require("../context"); const Settings = ({ children }) => { const context = (0, react_1.useContext)(context_1.NessContext); const { command, setContext } = context; const [initialized, setInitialized] = (0, react_1.useState)(false); const [settings, setSettings] = (0, react_1.useState)({}); const [needsGitIgnore, setNeedsGitIgnore] = (0, react_1.useState)(); const [error, setError] = (0, react_1.useState)(); const gather = async () => { const isGitIgnored = await (0, utils_1.isIgnoringNessDirectory)(); setNeedsGitIgnore(!isGitIgnored); const fromFile = await (0, utils_1.getSettingsFromFile)(); const fromArgs = await (0, utils_1.getSettingsFromArgs)(command); const framework = await (0, utils_1.detectFramework)(); const domain = (fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.domain) || (fromFile === null || fromFile === void 0 ? void 0 : fromFile.domain); const dir = (fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.dir) || (fromFile === null || fromFile === void 0 ? void 0 : fromFile.dir) || (framework === null || framework === void 0 ? void 0 : framework.dist); const merged = { prod: (fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.prod) !== undefined ? fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.prod : (fromFile === null || fromFile === void 0 ? void 0 : fromFile.prod) !== undefined ? fromFile === null || fromFile === void 0 ? void 0 : fromFile.prod : undefined, redirectWww: (fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.redirectWww) !== undefined ? fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.redirectWww : (fromFile === null || fromFile === void 0 ? void 0 : fromFile.redirectWww) !== undefined ? fromFile === null || fromFile === void 0 ? void 0 : fromFile.redirectWww : undefined, spa: (fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.spa) !== undefined ? fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.spa : (fromFile === null || fromFile === void 0 ? void 0 : fromFile.spa) !== undefined ? fromFile === null || fromFile === void 0 ? void 0 : fromFile.spa : undefined, dir, domain, csp: (fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.csp) || (fromFile === null || fromFile === void 0 ? void 0 : fromFile.csp), indexDocument: (fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.indexDocument) || (fromFile === null || fromFile === void 0 ? void 0 : fromFile.indexDocument), errorDocument: (fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.errorDocument) || (fromFile === null || fromFile === void 0 ? void 0 : fromFile.errorDocument), verbose: fromArgs === null || fromArgs === void 0 ? void 0 : fromArgs.verbose, }; if (!dir) { setError('Unable to detect framework and no publish directory was specified.\nPlease specify a directory to publish with --dir (e.g., ness deploy --dir dist).'); return Task_1.TaskState.Failure; } const dirExists = await fs.pathExists(dir); if (!dirExists) { setError(`Publish directory (${dir}) doesn't exist. Did you forget to build your project?`); return Task_1.TaskState.Failure; } setSettings(merged); if (setContext) { setContext({ ...context, settings: merged, framework, }); } await (0, utils_1.saveSettings)(merged); return Task_1.TaskState.Success; }; const updateGitIgnore = async () => { const updated = await (0, utils_1.gitIgnoreNessDirectory)(); return updated ? Task_1.TaskState.Success : Task_1.TaskState.Skipped; }; const onLoadComplete = (state) => { setInitialized(state === Task_1.TaskState.Success); }; return (react_1.default.createElement(ink_1.Box, { flexDirection: 'column' }, react_1.default.createElement(Task_1.Task, { name: 'Initializing', action: gather, onComplete: onLoadComplete, persist: false }), needsGitIgnore && (react_1.default.createElement(Task_1.Task, { name: 'Updating .gitignore to ignore .ness directory', action: updateGitIgnore })), error && (react_1.default.createElement(ink_1.Box, { paddingTop: 1 }, react_1.default.createElement(ink_1.Text, { color: 'red' }, error))), initialized && settings && children)); }; exports.Settings = Settings; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9TZXR0aW5ncy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpRDtBQUNqRCw2Q0FBOEI7QUFDOUIsNkJBQTZCO0FBQzdCLGlDQUFzQztBQUV0QyxvQ0FRaUI7QUFDakIsd0NBQXNDO0FBRS9CLE1BQU0sUUFBUSxHQUE0QixDQUFDLEVBQUMsUUFBUSxFQUErQixFQUFFLEVBQUU7SUFDNUYsTUFBTSxPQUFPLEdBQUcsSUFBQSxrQkFBVSxFQUFDLHFCQUFXLENBQUMsQ0FBQTtJQUN2QyxNQUFNLEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBQyxHQUFHLE9BQU8sQ0FBQTtJQUNyQyxNQUFNLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxLQUFLLENBQUMsQ0FBQTtJQUNyRCxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxHQUFHLElBQUEsZ0JBQVEsRUFBZSxFQUFFLENBQUMsQ0FBQTtJQUMxRCxNQUFNLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLEdBQUcsSUFBQSxnQkFBUSxHQUFXLENBQUE7SUFFL0QsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxJQUFBLGdCQUFRLEdBQVUsQ0FBQTtJQUU1QyxNQUFNLE1BQU0sR0FBRyxLQUFLLElBQXdCLEVBQUU7UUFDNUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLCtCQUF1QixHQUFFLENBQUE7UUFDcEQsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUVoQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsMkJBQW1CLEdBQUUsQ0FBQTtRQUM1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsMkJBQW1CLEVBQUMsT0FBUSxDQUFDLENBQUE7UUFDcEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFBLHVCQUFlLEdBQUUsQ0FBQTtRQUV6QyxNQUFNLE1BQU0sR0FBRyxDQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxNQUFNLE1BQUksUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLE1BQU0sQ0FBQSxDQUFBO1FBQ25ELE1BQU0sR0FBRyxHQUFHLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLEdBQUcsTUFBSSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsR0FBRyxDQUFBLEtBQUksU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLElBQUksQ0FBQSxDQUFBO1FBRTdELE1BQU0sTUFBTSxHQUFHO1lBQ2IsSUFBSSxFQUNGLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLElBQUksTUFBSyxTQUFTO2dCQUMxQixDQUFDLENBQUMsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLElBQUk7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLE1BQUssU0FBUztvQkFDOUIsQ0FBQyxDQUFDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJO29CQUNoQixDQUFDLENBQUMsU0FBUztZQUNmLFdBQVcsRUFDVCxDQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxXQUFXLE1BQUssU0FBUztnQkFDakMsQ0FBQyxDQUFDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxXQUFXO2dCQUN2QixDQUFDLENBQUMsQ0FBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsV0FBVyxNQUFLLFNBQVM7b0JBQ3JDLENBQUMsQ0FBQyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsV0FBVztvQkFDdkIsQ0FBQyxDQUFDLFNBQVM7WUFDZixHQUFHLEVBQ0QsQ0FBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsR0FBRyxNQUFLLFNBQVM7Z0JBQ3pCLENBQUMsQ0FBQyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsR0FBRztnQkFDZixDQUFDLENBQUMsQ0FBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsR0FBRyxNQUFLLFNBQVM7b0JBQzdCLENBQUMsQ0FBQyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsR0FBRztvQkFDZixDQUFDLENBQUMsU0FBUztZQUNmLEdBQUc7WUFDSCxNQUFNO1lBQ04sR0FBRyxFQUFFLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLEdBQUcsTUFBSSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsR0FBRyxDQUFBO1lBQ25DLGFBQWEsRUFBRSxDQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxhQUFhLE1BQUksUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLGFBQWEsQ0FBQTtZQUNqRSxhQUFhLEVBQUUsQ0FBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsYUFBYSxNQUFJLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxhQUFhLENBQUE7WUFDakUsT0FBTyxFQUFFLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxPQUFPO1NBQzNCLENBQUE7UUFFRCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1IsUUFBUSxDQUNOLHNKQUFzSixDQUN2SixDQUFBO1lBQ0QsT0FBTyxnQkFBUyxDQUFDLE9BQU8sQ0FBQTtTQUN6QjtRQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMxQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsUUFBUSxDQUFDLHNCQUFzQixHQUFHLHdEQUF3RCxDQUFDLENBQUE7WUFDM0YsT0FBTyxnQkFBUyxDQUFDLE9BQU8sQ0FBQTtTQUN6QjtRQUVELFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVuQixJQUFJLFVBQVUsRUFBRTtZQUNkLFVBQVUsQ0FBQztnQkFDVCxHQUFHLE9BQU87Z0JBQ1YsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFNBQVM7YUFDVixDQUFDLENBQUE7U0FDSDtRQUVELE1BQU0sSUFBQSxvQkFBWSxFQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRTFCLE9BQU8sZ0JBQVMsQ0FBQyxPQUFPLENBQUE7SUFDMUIsQ0FBQyxDQUFBO0lBRUQsTUFBTSxlQUFlLEdBQTZCLEtBQUssSUFBSSxFQUFFO1FBQzNELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSw4QkFBc0IsR0FBRSxDQUFBO1FBQzlDLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxPQUFPLENBQUE7SUFDeEQsQ0FBQyxDQUFBO0lBRUQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQUU7UUFDMUMsY0FBYyxDQUFDLEtBQUssS0FBSyxnQkFBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzdDLENBQUMsQ0FBQTtJQUVELE9BQU8sQ0FDTCw4QkFBQyxTQUFHLElBQUMsYUFBYSxFQUFDLFFBQVE7UUFDekIsOEJBQUMsV0FBSSxJQUFDLElBQUksRUFBQyxjQUFjLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxLQUFLLEdBQUk7UUFDdkYsY0FBYyxJQUFJLENBQ2pCLDhCQUFDLFdBQUksSUFBQyxJQUFJLEVBQUMsK0NBQStDLEVBQUMsTUFBTSxFQUFFLGVBQWUsR0FBSSxDQUN2RjtRQUNBLEtBQUssSUFBSSxDQUNSLDhCQUFDLFNBQUcsSUFBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQiw4QkFBQyxVQUFJLElBQUMsS0FBSyxFQUFDLEtBQUssSUFBRSxLQUFLLENBQVEsQ0FDNUIsQ0FDUDtRQUNBLFdBQVcsSUFBSSxRQUFRLElBQUksUUFBUSxDQUNoQyxDQUNQLENBQUE7QUFDSCxDQUFDLENBQUE7QUFsR1ksUUFBQSxRQUFRLFlBa0dwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZVN0YXRlLCB1c2VDb250ZXh0fSBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJ1xuaW1wb3J0IHtCb3gsIFRleHR9IGZyb20gJ2luaydcbmltcG9ydCB7VGFza1N0YXRlLCBUYXNrfSBmcm9tICcuL1Rhc2snXG5cbmltcG9ydCB7XG4gIGRldGVjdEZyYW1ld29yayxcbiAgZ2V0U2V0dGluZ3NGcm9tQXJncyxcbiAgZ2V0U2V0dGluZ3NGcm9tRmlsZSxcbiAgZ2l0SWdub3JlTmVzc0RpcmVjdG9yeSxcbiAgaXNJZ25vcmluZ05lc3NEaXJlY3RvcnksXG4gIE5lc3NTZXR0aW5ncyxcbiAgc2F2ZVNldHRpbmdzLFxufSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7TmVzc0NvbnRleHR9IGZyb20gJy4uL2NvbnRleHQnXG5cbmV4cG9ydCBjb25zdCBTZXR0aW5nczogUmVhY3QuRnVuY3Rpb25Db21wb25lbnQgPSAoe2NoaWxkcmVufTogUmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW48YW55PikgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChOZXNzQ29udGV4dClcbiAgY29uc3Qge2NvbW1hbmQsIHNldENvbnRleHR9ID0gY29udGV4dFxuICBjb25zdCBbaW5pdGlhbGl6ZWQsIHNldEluaXRpYWxpemVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2V0dGluZ3MsIHNldFNldHRpbmdzXSA9IHVzZVN0YXRlPE5lc3NTZXR0aW5ncz4oe30pXG4gIGNvbnN0IFtuZWVkc0dpdElnbm9yZSwgc2V0TmVlZHNHaXRJZ25vcmVdID0gdXNlU3RhdGU8Ym9vbGVhbj4oKVxuXG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8c3RyaW5nPigpXG5cbiAgY29uc3QgZ2F0aGVyID0gYXN5bmMgKCk6IFByb21pc2U8VGFza1N0YXRlPiA9PiB7XG4gICAgY29uc3QgaXNHaXRJZ25vcmVkID0gYXdhaXQgaXNJZ25vcmluZ05lc3NEaXJlY3RvcnkoKVxuICAgIHNldE5lZWRzR2l0SWdub3JlKCFpc0dpdElnbm9yZWQpXG5cbiAgICBjb25zdCBmcm9tRmlsZSA9IGF3YWl0IGdldFNldHRpbmdzRnJvbUZpbGUoKVxuICAgIGNvbnN0IGZyb21BcmdzID0gYXdhaXQgZ2V0U2V0dGluZ3NGcm9tQXJncyhjb21tYW5kISlcbiAgICBjb25zdCBmcmFtZXdvcmsgPSBhd2FpdCBkZXRlY3RGcmFtZXdvcmsoKVxuXG4gICAgY29uc3QgZG9tYWluID0gZnJvbUFyZ3M/LmRvbWFpbiB8fCBmcm9tRmlsZT8uZG9tYWluXG4gICAgY29uc3QgZGlyID0gZnJvbUFyZ3M/LmRpciB8fCBmcm9tRmlsZT8uZGlyIHx8IGZyYW1ld29yaz8uZGlzdFxuXG4gICAgY29uc3QgbWVyZ2VkID0ge1xuICAgICAgcHJvZDpcbiAgICAgICAgZnJvbUFyZ3M/LnByb2QgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gZnJvbUFyZ3M/LnByb2RcbiAgICAgICAgICA6IGZyb21GaWxlPy5wcm9kICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IGZyb21GaWxlPy5wcm9kXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICByZWRpcmVjdFd3dzpcbiAgICAgICAgZnJvbUFyZ3M/LnJlZGlyZWN0V3d3ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IGZyb21BcmdzPy5yZWRpcmVjdFd3d1xuICAgICAgICAgIDogZnJvbUZpbGU/LnJlZGlyZWN0V3d3ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IGZyb21GaWxlPy5yZWRpcmVjdFd3d1xuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgc3BhOlxuICAgICAgICBmcm9tQXJncz8uc3BhICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IGZyb21BcmdzPy5zcGFcbiAgICAgICAgICA6IGZyb21GaWxlPy5zcGEgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gZnJvbUZpbGU/LnNwYVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGlyLFxuICAgICAgZG9tYWluLFxuICAgICAgY3NwOiBmcm9tQXJncz8uY3NwIHx8IGZyb21GaWxlPy5jc3AsXG4gICAgICBpbmRleERvY3VtZW50OiBmcm9tQXJncz8uaW5kZXhEb2N1bWVudCB8fCBmcm9tRmlsZT8uaW5kZXhEb2N1bWVudCxcbiAgICAgIGVycm9yRG9jdW1lbnQ6IGZyb21BcmdzPy5lcnJvckRvY3VtZW50IHx8IGZyb21GaWxlPy5lcnJvckRvY3VtZW50LFxuICAgICAgdmVyYm9zZTogZnJvbUFyZ3M/LnZlcmJvc2UsXG4gICAgfVxuXG4gICAgaWYgKCFkaXIpIHtcbiAgICAgIHNldEVycm9yKFxuICAgICAgICAnVW5hYmxlIHRvIGRldGVjdCBmcmFtZXdvcmsgYW5kIG5vIHB1Ymxpc2ggZGlyZWN0b3J5IHdhcyBzcGVjaWZpZWQuXFxuUGxlYXNlIHNwZWNpZnkgYSBkaXJlY3RvcnkgdG8gcHVibGlzaCB3aXRoIC0tZGlyIChlLmcuLCBuZXNzIGRlcGxveSAtLWRpciBkaXN0KS4nLFxuICAgICAgKVxuICAgICAgcmV0dXJuIFRhc2tTdGF0ZS5GYWlsdXJlXG4gICAgfVxuXG4gICAgY29uc3QgZGlyRXhpc3RzID0gYXdhaXQgZnMucGF0aEV4aXN0cyhkaXIpXG4gICAgaWYgKCFkaXJFeGlzdHMpIHtcbiAgICAgIHNldEVycm9yKGBQdWJsaXNoIGRpcmVjdG9yeSAoJHtkaXJ9KSBkb2Vzbid0IGV4aXN0LiBEaWQgeW91IGZvcmdldCB0byBidWlsZCB5b3VyIHByb2plY3Q/YClcbiAgICAgIHJldHVybiBUYXNrU3RhdGUuRmFpbHVyZVxuICAgIH1cblxuICAgIHNldFNldHRpbmdzKG1lcmdlZClcblxuICAgIGlmIChzZXRDb250ZXh0KSB7XG4gICAgICBzZXRDb250ZXh0KHtcbiAgICAgICAgLi4uY29udGV4dCxcbiAgICAgICAgc2V0dGluZ3M6IG1lcmdlZCxcbiAgICAgICAgZnJhbWV3b3JrLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBhd2FpdCBzYXZlU2V0dGluZ3MobWVyZ2VkKVxuXG4gICAgcmV0dXJuIFRhc2tTdGF0ZS5TdWNjZXNzXG4gIH1cblxuICBjb25zdCB1cGRhdGVHaXRJZ25vcmU6ICgpID0+IFByb21pc2U8VGFza1N0YXRlPiA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgZ2l0SWdub3JlTmVzc0RpcmVjdG9yeSgpXG4gICAgcmV0dXJuIHVwZGF0ZWQgPyBUYXNrU3RhdGUuU3VjY2VzcyA6IFRhc2tTdGF0ZS5Ta2lwcGVkXG4gIH1cblxuICBjb25zdCBvbkxvYWRDb21wbGV0ZSA9IChzdGF0ZTogVGFza1N0YXRlKSA9PiB7XG4gICAgc2V0SW5pdGlhbGl6ZWQoc3RhdGUgPT09IFRhc2tTdGF0ZS5TdWNjZXNzKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGZsZXhEaXJlY3Rpb249J2NvbHVtbic+XG4gICAgICA8VGFzayBuYW1lPSdJbml0aWFsaXppbmcnIGFjdGlvbj17Z2F0aGVyfSBvbkNvbXBsZXRlPXtvbkxvYWRDb21wbGV0ZX0gcGVyc2lzdD17ZmFsc2V9IC8+XG4gICAgICB7bmVlZHNHaXRJZ25vcmUgJiYgKFxuICAgICAgICA8VGFzayBuYW1lPSdVcGRhdGluZyAuZ2l0aWdub3JlIHRvIGlnbm9yZSAubmVzcyBkaXJlY3RvcnknIGFjdGlvbj17dXBkYXRlR2l0SWdub3JlfSAvPlxuICAgICAgKX1cbiAgICAgIHtlcnJvciAmJiAoXG4gICAgICAgIDxCb3ggcGFkZGluZ1RvcD17MX0+XG4gICAgICAgICAgPFRleHQgY29sb3I9J3JlZCc+e2Vycm9yfTwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgICAge2luaXRpYWxpemVkICYmIHNldHRpbmdzICYmIGNoaWxkcmVufVxuICAgIDwvQm94PlxuICApXG59XG4iXX0=