Skip to content

Instantly share code, notes, and snippets.

@eedugon
Created July 20, 2022 09:41
Show Gist options
  • Select an option

  • Save eedugon/66b8f7fce3d059faefe790bc5a7190be to your computer and use it in GitHub Desktop.

Select an option

Save eedugon/66b8f7fce3d059faefe790bc5a7190be to your computer and use it in GitHub Desktop.

Revisions

  1. eedugon created this gist Jul 20, 2022.
    258 changes: 258 additions & 0 deletions component.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,258 @@
    "use strict";

    define("nodes/components/driver-hetzner/component", ["exports", "shared/mixins/node-driver"], function (exports, _nodeDriver) {
    "use strict";

    Object.defineProperty(exports, "__esModule", {
    value: true
    });

    function _toConsumableArray(arr) {
    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
    }

    function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance");
    }

    function _iterableToArray(iter) {
    if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
    }

    function _arrayWithoutHoles(arr) {
    if (Array.isArray(arr)) {
    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
    arr2[i] = arr[i];
    }

    return arr2;
    }
    }

    function ownKeys(object, enumerableOnly) {
    var keys = Object.keys(object);

    if (Object.getOwnPropertySymbols) {
    var symbols = Object.getOwnPropertySymbols(object);
    if (enumerableOnly) symbols = symbols.filter(function (sym) {
    return Object.getOwnPropertyDescriptor(object, sym).enumerable;
    });
    keys.push.apply(keys, symbols);
    }

    return keys;
    }

    function _objectSpread(target) {
    for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i] != null ? arguments[i] : {};

    if (i % 2) {
    ownKeys(Object(source), true).forEach(function (key) {
    _defineProperty(target, key, source[key]);
    });
    } else if (Object.getOwnPropertyDescriptors) {
    Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
    } else {
    ownKeys(Object(source)).forEach(function (key) {
    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
    });
    }
    }

    return target;
    }

    function _defineProperty(obj, key, value) {
    if (key in obj) {
    Object.defineProperty(obj, key, {
    value: value,
    enumerable: true,
    configurable: true,
    writable: true
    });
    } else {
    obj[key] = value;
    }

    return obj;
    }

    var LAYOUT = "PHNlY3Rpb24gY2xhc3M9Imhvcml6b250YWwtZm9ybSI+DQogIHt7I2lmIG5lZWRBUElUb2tlbn19DQogIDxmb3JtPg0KICAgIDxkaXYgY2xhc3M9Im92ZXItaHIgci1tYjIwIj4NCiAgICAgIDxzcGFuPkFjY291bnQgQWNjZXNzPC9zcGFuPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InJvdyBmb3JtLWdyb3VwIj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0yIj4NCiAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wtc3RhdGljIj5BUEkgVG9rZW4qPC9sYWJlbD4NCiAgICAgIDwvZGl2Pg0KICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEwIj4NCiAgICAgICAge3tpbnB1dCB0eXBlPSJwYXNzd29yZCIgdmFsdWU9bW9kZWwuaGV0em5lckNvbmZpZy5hcGlUb2tlbiBjbGFzc05hbWVzPSJmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJZb3VyIEhldHpuZXIgQ2xvdWQgQVBJIFRva2VuIn19DQogICAgICAgIDxwIGNsYXNzPSJoZWxwLWJsb2NrIj5DcmVhdGUgaXQgYnkgc3dpdGNoaW5nIGludG8gdGhlDQogICAgICAgICAgPGEgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJlZj0iaHR0cHM6Ly9jb25zb2xlLmhldHpuZXIuY2xvdWQiPkhldHpuZXIgQ2xvdWQgQ29uc29sZTwvYT4sIGNob29zaW5nIGEgcHJvamVjdCwgZ28gdG8gQWNjZXNzICZyYXJyOyBUb2tlbnMgYW5kIGNyZWF0ZSBhIG5ldyBBUEkgdG9rZW4gdGhlcmUuPC9wPg0KICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogICAge3t0b3AtZXJyb3JzIGVycm9ycz1lcnJvcnN9fQ0KICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1hY3Rpb25zIj4NCiAgICAgIHt7I2lmIGdldHRpbmdEYXRhfX0NCiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBiZy1wcmltYXJ5IGJ0bi1kaXNhYmxlZCI+DQogICAgICAgIDxpIGNsYXNzPSJpY29uIGljb24tc3Bpbm5lciBpY29uLXNwaW4iPjwvaT4ge3t0ICdnZW5lcmljLmxvYWRpbmcnfX08L2J1dHRvbj4NCiAgICAgIHt7ZWxzZX19DQogICAgICA8YnV0dG9uIHt7YWN0aW9uICJnZXREYXRhIiB9fSBjbGFzcz0iYnRuIGJnLXByaW1hcnkiIGRpc2FibGVkPXt7bm90IG1vZGVsLmhldHpuZXJDb25maWcuYXBpVG9rZW59fT5Db25maWd1cmUgU2VydmVyPC9idXR0b24+DQogICAgICB7ey9pZn19DQogICAgICA8YnV0dG9uIHt7YWN0aW9uICJjYW5jZWwifX0gY2xhc3M9ImJ0biBiZy10cmFuc3BhcmVudCI+e3t0ICdnZW5lcmljLmNhbmNlbCd9fTwvYnV0dG9uPg0KICAgIDwvZGl2Pg0KICA8L2Zvcm0+DQogIHt7ZWxzZX19DQogIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCI+DQogICAge3shLS0gVGhpcyBwYXJ0aWFsIGNvbnRhaW5zIHRoZSBxdWFudGl0eSwgbmFtZSwgYW5kIGRlc2NyaXB0aW9uIGZpZWxkcyAtLX19DQogICAgPGRpdiBjbGFzcz0ib3Zlci1ociI+DQogICAgICA8c3Bhbj57e3RlbXBsYXRlT3B0aW9uc1RpdGxlfX08L3NwYW4+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0ib3Zlci1ociByLW10MjAgci1tYjIwIj4NCiAgICAgIDxzcGFuPlNldHRpbmdzPC9zcGFuPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InJvdyBmb3JtLWdyb3VwIj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0yIj4NCiAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wtc3RhdGljIj5SZWdpb248L2xhYmVsPg0KICAgICAgPC9kaXY+DQogICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTAiPg0KICAgICAgICA8c2VsZWN0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG9uY2hhbmdlPXt7YWN0aW9uIChtdXQgbW9kZWwuaGV0em5lckNvbmZpZy5zZXJ2ZXJMb2NhdGlvbikgdmFsdWU9InRhcmdldC52YWx1ZSIgfX0+DQogICAgICAgICAge3sjZWFjaCByZWdpb25DaG9pY2VzIGFzIHxjaG9pY2V8fX0NCiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9e3tjaG9pY2UubmFtZX19IHNlbGVjdGVkPXt7ZXEgbW9kZWwuaGV0em5lckNvbmZpZy5zZXJ2ZXJMb2NhdGlvbiBjaG9pY2UubmFtZX19Pnt7Y2hvaWNlLmNpdHl9fTwvb3B0aW9uPg0KICAgICAgICAgIHt7L2VhY2h9fQ0KICAgICAgICA8L3NlbGVjdD4NCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InJvdyBmb3JtLWdyb3VwIj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0yIj4NCiAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wtc3RhdGljIj5JbWFnZTwvbGFiZWw+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC00Ij4NCiAgICAgICAgPHNlbGVjdCBjbGFzcz0iZm9ybS1jb250cm9sIiBvbmNoYW5nZT17e2FjdGlvbiAobXV0IG1vZGVsLmhldHpuZXJDb25maWcuaW1hZ2VJZCkgdmFsdWU9InRhcmdldC52YWx1ZSIgfX0+DQogICAgICAgICAge3sjZWFjaCBpbWFnZUNob2ljZXMgYXMgfGNob2ljZXx9fQ0KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT17e2Nob2ljZS5pZH19IHNlbGVjdGVkPXt7ZXEgbW9kZWwuaGV0em5lckNvbmZpZy5pbWFnZUlkIGNob2ljZS5pZH19Pnt7Y2hvaWNlLmRlc2NyaXB0aW9ufX08L29wdGlvbj4NCiAgICAgICAgICB7ey9lYWNofX0NCiAgICAgICAgPC9zZWxlY3Q+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0yIj4NCiAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wtc3RhdGljIj5TaXplPC9sYWJlbD4NCiAgICAgIDwvZGl2Pg0KICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTQiPg0KICAgICAgICA8c2VsZWN0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG9uY2hhbmdlPXt7YWN0aW9uIChtdXQgbW9kZWwuaGV0em5lckNvbmZpZy5zZXJ2ZXJUeXBlKSB2YWx1ZT0idGFyZ2V0LnZhbHVlIiB9fT4NCiAgICAgICAgICB7eyNlYWNoIHNpemVDaG9pY2VzIGFzIHxjaG9pY2V8fX0NCiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9e3tjaG9pY2UubmFtZX19IHNlbGVjdGVkPXt7ZXEgbW9kZWwuaGV0em5lckNvbmZpZy5zZXJ2ZXJUeXBlIGNob2ljZS5uYW1lfX0+e3tjaG9pY2UuZGVzY3JpcHRpb259fSAtIHt7Y2hvaWNlLm1lbW9yeX19R0IgTWVtb3J5IC0ge3tjaG9pY2UuZGlza319R0IgRGlzayBzcGFjZTwvb3B0aW9uPg0KICAgICAgICAgIHt7L2VhY2h9fQ0KICAgICAgICA8L3NlbGVjdD4NCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InJvdyBmb3JtLWdyb3VwIj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0yIj4NCiAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wtc3RhdGljIj4NCiAgICAgICAgICA8YSBocmVmPSJodHRwczovL2Nsb3VkaW5pdC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvdG9waWNzL2V4YW1wbGVzLmh0bWwiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPkNsb3VkLWluaXQgQ29uZmlndXJhdGlvbjwvYT4gKG9wdGlvbmFsKQ0KICAgICAgICA8L2xhYmVsPg0KICAgICAgPC9kaXY+DQogICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTAiPg0KICAgICAgICA8dGV4dGFyZWEgdmFsdWU9e3ttb2RlbC5oZXR6bmVyQ29uZmlnLnVzZXJEYXRhfX0gb25jaGFuZ2U9e3thY3Rpb24gKG11dCBtb2RlbC5oZXR6bmVyQ29uZmlnLnVzZXJEYXRhKSB2YWx1ZT0idGFyZ2V0LnZhbHVlIiB9fSByb3dzPSIzIiBzdHlsZT0id2lkdGg6IDEwMCU7IHJlc2l6ZTogdmVydGljYWwiPjwvdGV4dGFyZWE+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0yIj4NCiAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wtc3RhdGljIj5OZXR3b3JrcyAoT3B0aW9uYWwuIFlvdSBoYXZlIHRvIGNyZWF0ZSB0aGVzZSBOZXR3b3JrcyBpbiB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9jb25zb2xlLmhldHpuZXIuY2xvdWQiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPkhldHpuZXIgQ2xvdWQgQ29uc29sZTwvYT4pPC9sYWJlbD4NCiAgICAgIDwvZGl2Pg0KICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTQiPg0KICAgICAgICA8c2VsZWN0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG9uY2hhbmdlPXt7YWN0aW9uICdtb2RpZnlOZXR3b3JrcycgfX0gbXVsdGlwbGU9InRydWUiPg0KICAgICAgICAgIHt7I2VhY2ggbmV0d29ya0Nob2ljZXMgYXMgfG5ldHdvcmt8fX0NCiAgICAgICAgICA8b3B0aW9uIHZhbHVlPXt7bmV0d29yay5pZH19IHNlbGVjdGVkPXt7YXJyYXktaW5jbHVkZXMgbW9kZWwuaGV0em5lckNvbmZpZy5uZXR3b3JrcyBuZXR3b3JrLmlkfX0+e3tuZXR3b3JrLm5hbWV9fSAoe3tuZXR3b3JrLmlwX3JhbmdlfX0pPC9vcHRpb24+DQogICAgICAgICAge3svZWFjaH19DQogICAgICAgIDwvc2VsZWN0Pg0KICAgICAgPC9kaXY+DQogICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMiI+DQogICAgICAgIDxkaXYgY2xhc3M9ImNoZWNrYm94Ij4NCiAgICAgICAgICA8bGFiZWwgY2xhc3M9ImFjYy1sYWJlbCI+e3tpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD1tb2RlbC5oZXR6bmVyQ29uZmlnLnVzZVByaXZhdGVOZXR3b3JrfX0NCiAgICAgICAgICAgIEVFRFVHT046IFVzZSBwcml2YXRlIG5ldHdvcmsgKGZpcnN0IHByaXZhdGUgbmV0d29yayB3aGljaCBpcyBhdHRhY2hlZCB3aWxsIGJlIHVzZWQgZm9yIGNvbW11bmljYXRpb24pDQogICAgICAgICAgPC9sYWJlbD4NCiAgICAgICAgPC9kaXY+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0yIj4NCiAgICAgICAgPGRpdiBjbGFzcz0iY2hlY2tib3giPg0KICAgICAgICAgIDxsYWJlbCBjbGFzcz0iYWNjLWxhYmVsIj57e2lucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPW1vZGVsLmhldHpuZXJDb25maWcuZGlzYWJsZVB1YmxpY319DQogICAgICAgICAgICBFRURVR09OOiBEaXNhYmxlIHB1YmxpYyBJUHY0IGFuZCBJUHY2IGFkZHJlc3Nlcw0KICAgICAgICAgIDwvbGFiZWw+DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC9kaXY+DQogICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTIiPg0KICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tY29udHJvbC1zdGF0aWMiPkZpcmV3YWxscyAoQmV0YSwgb3B0aW9uYWwuIFlvdSBoYXZlIHRvIGNyZWF0ZSB0aGVzZSBGaXJld2FsbHMgaW4gdGhlIDxhIGhyZWY9Imh0dHBzOi8vY29uc29sZS5oZXR6bmVyLmNsb3VkIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj5IZXR6bmVyIENsb3VkIENvbnNvbGU8L2E+KTwvbGFiZWw+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC00Ij4NCiAgICAgICAgPHNlbGVjdCBjbGFzcz0iZm9ybS1jb250cm9sIiBvbmNoYW5nZT17e2FjdGlvbiAnbW9kaWZ5RmlyZXdhbGxzJyB9fSBtdWx0aXBsZT0idHJ1ZSI+DQogICAgICAgICAge3sjZWFjaCBmaXJld2FsbENob2ljZXMgYXMgfGZpcmV3YWxsfH19DQogICAgICAgICAgPG9wdGlvbiB2YWx1ZT17e2ZpcmV3YWxsLmlkfX0gc2VsZWN0ZWQ9e3thcnJheS1pbmNsdWRlcyBtb2RlbC5oZXR6bmVyQ29uZmlnLmZpcmV3YWxscyBmaXJld2FsbC5pZH19Pnt7ZmlyZXdhbGwubmFtZX19PC9vcHRpb24+DQogICAgICAgICAge3svZWFjaH19DQogICAgICAgIDwvc2VsZWN0Pg0KICAgICAgPC9kaXY+DQogICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMiI+DQogICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1jb250cm9sLXN0YXRpYyI+QWRkaXRpb25hbCBTU0ggS2V5czwvbGFiZWw+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC00Ij4NCiAgICAgICAgPHNlbGVjdCBjbGFzcz0iZm9ybS1jb250cm9sIiBvbmNoYW5nZT17e2FjdGlvbiAnbW9kaWZ5S2V5cycgfX0gbXVsdGlwbGU9InRydWUiPg0KICAgICAgICAgIHt7I2VhY2gga2V5Q2hvaWNlcyBhcyB8a2V5fH19DQogICAgICAgICAgPG9wdGlvbiB2YWx1ZT17e2tleS5pZH19IHNlbGVjdGVkPXt7YXJyYXktaW5jbHVkZXMgbW9kZWwuaGV0em5lckNvbmZpZy5hZGRpdGlvbmFsS2V5IGtleS5wdWJsaWNfa2V5fX0+e3trZXkubmFtZX19ICh7e2tleS5maW5nZXJwcmludH19KTwvb3B0aW9uPg0KICAgICAgICAgIHt7L2VhY2h9fQ0KICAgICAgICA8L3NlbGVjdD4NCiAgICAgIDwvZGl2Pg0KICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTIiPg0KICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tY29udHJvbC1zdGF0aWMiPlBsYWNlbWVudCBncm91cDwvbGFiZWw+DQogICAgICAgICAgPHNlbGVjdCBjbGFzcz0iZm9ybS1jb250cm9sIiBvbmNoYW5nZT17e2FjdGlvbiAobXV0IG1vZGVsLmhldHpuZXJDb25maWcucGxhY2VtZW50R3JvdXApIHZhbHVlPSJ0YXJnZXQudmFsdWUiIH19Pg0KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIiBzZWxlY3RlZD0ie3tub3QgbW9kZWwuaGV0em5lckNvbmZpZy5wbGFjZW1lbnRHcm91cH19Ij48L29wdGlvbj4NCiAgICAgICAgICAgIHt7I2VhY2ggcGxhY2VtZW50R3JvdXBDaG9pY2VzIGFzIHxwbGFjZW1lbnRHcm91cHx9fQ0KICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ7e3BsYWNlbWVudEdyb3VwLm5hbWV9fSIgc2VsZWN0ZWQ9e3tlcSBtb2RlbC5oZXR6bmVyQ29uZmlnLnBsYWNlbWVudEdyb3VwIHBsYWNlbWVudEdyb3VwLm5hbWV9fT57e3BsYWNlbWVudEdyb3VwLm5hbWV9fSAoe3twbGFjZW1lbnRHcm91cC50eXBlfX0pPC9vcHRpb24+DQogICAgICAgICAgICB7ey9lYWNofX0NCiAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgICB7eyEtLSBUaGlzIGZvbGxvd2luZyBjb250YWlucyB0aGUgTmFtZSwgTGFiZWxzIGFuZCBFbmdpbmUgT3B0aW9ucyBmaWVsZHMgLS19fQ0KICAgICB7e2Zvcm0tbmFtZS1kZXNjcmlwdGlvbiBtb2RlbD1tb2RlbCBuYW1lUmVxdWlyZWQ9dHJ1ZX19DQogICAgIHt7Zm9ybS11c2VyLWxhYmVscyBpbml0aWFsTGFiZWxzPWxhYmVsUmVzb3VyY2UubGFiZWxzIHNldExhYmVscz0oYWN0aW9uICdzZXRMYWJlbHMnKSBleHBhbmRBbGw9ZXhwYW5kQWxsIGV4cGFuZD0oYWN0aW9uIGV4cGFuZEZuKSB9fQ0KICAgICB7e2Zvcm0tZW5naW5lLW9wdHMgbWFjaGluZT1tb2RlbCBzaG93RW5naW5lVXJsPXNob3dFbmdpbmVVcmwgfX0NCiAgICAge3shLS0gVGhpcyBjb21wb25lbnQgc2hvd3MgZXJyb3JzIHByb2R1Y2VkIGJ5IHZhbGlkYXRlKCkgaW4gdGhlIGNvbXBvbmVudCAtLX19DQogICAgIHt7dG9wLWVycm9ycyBlcnJvcnM9ZXJyb3JzfX0NCiAgICAge3shLS0gVGhpcyBjb21wb25lbnQgc2hvd3MgdGhlIENyZWF0ZSBhbmQgQ2FuY2VsIGJ1dHRvbnMgLS19fQ0KICAgICB7e3NhdmUtY2FuY2VsIHNhdmU9InNhdmUiIGNhbmNlbD0oYWN0aW9uICJjYW5jZWwiKX19DQogIDwvZGl2Pg0KICB7ey9pZn19DQo8L3NlY3Rpb24+DQo=";
    var computed = Ember.computed;
    var get = Ember.get;
    var set = Ember.set;
    var alias = Ember.computed.alias;
    var service = Ember.inject.service;
    exports.default = Ember.Component.extend(_nodeDriver.default, {
    driverName: 'hetzner',
    needAPIToken: true,
    config: alias('model.hetznerConfig'),
    app: service(),
    init: function init() {
    var decodedLayout = window.atob(LAYOUT);
    var template = Ember.HTMLBars.compile(decodedLayout, {
    moduleName: 'nodes/components/driver-hetzner/template'
    });
    set(this, 'layout', template);

    this._super.apply(this, arguments);
    },
    bootstrap: function bootstrap() {
    var config = get(this, 'globalStore').createRecord({
    type: 'hetznerConfig',
    additionalKey: [],
    serverType: 'cx21',
    serverLocation: 'nbg1',
    imageId: "168855",
    userData: '',
    networks: [],
    firewalls: [],
    usePrivateNetwork: false,
    disablePublic: false,
    serverLabel: [''],
    placementGroup: ''
    });
    set(this, 'model.hetznerConfig', config);
    },
    validate: function validate() {
    this._super();

    if (!this.get('model.hetznerConfig.networks')) {
    this.set('model.hetznerConfig.networks', []);
    }

    if (!this.get('model.hetznerConfig.firewalls')) {
    this.set('model.hetznerConfig.firewalls', []);
    }

    if (!this.get('model.hetznerConfig.serverLabel')) {
    this.set('model.hetznerConfig.serverLabel', []);
    }

    if (!this.get('model.hetznerConfig.additionalKey')) {
    this.set('model.hetznerConfig.additionalKey', []);
    }

    var errors = get(this, 'errors') || [];

    if (!get(this, 'model.name')) {
    errors.push('Name is required');
    }

    if (get(errors, 'length')) {
    set(this, 'errors', errors);
    return false;
    } else {
    set(this, 'errors', null);
    return true;
    }
    },
    actions: {
    getData: function getData() {
    this.set('gettingData', true);
    var that = this;
    Promise.all([this.apiRequest('/v1/locations'), this.apiRequest('/v1/images'), this.apiRequest('/v1/server_types'), this.apiRequest('/v1/networks'), this.apiRequest('/v1/ssh_keys'), this.apiRequest('/v1/firewalls'), this.apiRequest('/v1/placement_groups')]).then(function (responses) {
    that.setProperties({
    errors: [],
    needAPIToken: false,
    gettingData: false,
    regionChoices: responses[0].locations,
    imageChoices: responses[1].images.map(function (image) {
    return _objectSpread({}, image, {
    id: image.id.toString()
    });
    }),
    sizeChoices: responses[2].server_types,
    networkChoices: responses[3].networks.map(function (network) {
    return _objectSpread({}, network, {
    id: network.id.toString()
    });
    }),
    keyChoices: responses[4].ssh_keys.map(function (key) {
    return _objectSpread({}, key, {
    id: key.id.toString()
    });
    }),
    firewallChoices: responses[5].firewalls.map(function (firewall) {
    return _objectSpread({}, firewall, {
    id: firewall.id.toString()
    });
    }),
    placementGroupChoices: responses[6].placement_groups
    });
    }).catch(function (err) {
    err.then(function (msg) {
    that.setProperties({
    errors: ['Error received from Hetzner Cloud: ' + msg.error.message],
    gettingData: false
    });
    });
    });
    },
    modifyNetworks: function modifyNetworks(select) {
    var options = _toConsumableArray(select.target.options).filter(function (o) {
    return o.selected;
    }).map(function (o) {
    return o.value;
    });

    this.set('model.hetznerConfig.networks', options);
    },
    modifyFirewalls: function modifyFirewalls(select) {
    var options = _toConsumableArray(select.target.options).filter(function (o) {
    return o.selected;
    }).map(function (o) {
    return o.value;
    });

    this.set('model.hetznerConfig.firewalls', options);
    },
    setLabels: function setLabels(labels) {
    var labels_list = labels.map(function (l) {
    return l.key + "=" + l.value;
    });
    this.set('model.hetznerConfig.serverLabel', labels_list);

    this._super(labels);
    },
    modifyKeys: function modifyKeys(select) {
    var _this = this;

    var options = _toConsumableArray(select.target.options).filter(function (o) {
    return o.selected;
    }).map(function (o) {
    return _this.keyChoices.find(function (keyChoice) {
    return keyChoice.id == o.value;
    })["public_key"];
    });

    this.set('model.hetznerConfig.additionalKey', options);
    }
    },
    apiRequest: function apiRequest(path) {
    return fetch('https://api.hetzner.cloud' + path, {
    headers: {
    'Authorization': 'Bearer ' + this.get('model.hetznerConfig.apiToken')
    }
    }).then(function (res) {
    return res.ok ? res.json() : Promise.reject(res.json());
    });
    }
    });
    });;
    "use strict";

    define("ui/components/driver-hetzner/component", ["exports", "nodes/components/driver-hetzner/component"], function (exports, _component) {
    "use strict";

    Object.defineProperty(exports, "__esModule", {
    value: true
    });
    Object.defineProperty(exports, "default", {
    enumerable: true,
    get: function () {
    return _component.default;
    }
    });
    });