cdd-cli 3.1.4 → 3.1.6

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.
Files changed (140) hide show
  1. package/.eslintrc.json +30 -0
  2. package/.github/workflows/docs.yml +35 -0
  3. package/CHANGELOG.md +37 -4
  4. package/README.md +26 -0
  5. package/_config.yml +13 -0
  6. package/dist/App.js +20 -3
  7. package/dist/components/ContainerCreationPrompt.js +27 -1
  8. package/dist/components/ContainerList.js +11 -15
  9. package/dist/components/ContainerRow.js +73 -14
  10. package/dist/components/ContainerSection.js +16 -2
  11. package/dist/components/Footer.js +7 -1
  12. package/dist/components/Header.js +27 -3
  13. package/dist/components/LogViewer.js +21 -3
  14. package/dist/components/MessageFeedback.js +15 -1
  15. package/dist/components/PromptField.js +31 -1
  16. package/dist/components/StatsBar.js +47 -8
  17. package/dist/components/UsageMenu.js +30 -1
  18. package/dist/helpers/actionHelpers.js +17 -6
  19. package/dist/helpers/appInfo.js +21 -0
  20. package/dist/helpers/constants.js +30 -0
  21. package/dist/helpers/dockerService/dockerService.js +19 -0
  22. package/dist/helpers/dockerService/serviceComponents/containerActions.js +194 -35
  23. package/dist/helpers/dockerService/serviceComponents/containerList.js +45 -8
  24. package/dist/helpers/dockerService/serviceComponents/containerLogs.js +16 -6
  25. package/dist/helpers/dockerService/serviceComponents/containerStats.js +28 -9
  26. package/dist/helpers/exitWithMessage.js +2 -1
  27. package/dist/helpers/logger.js +126 -0
  28. package/dist/helpers/safeCall.js +21 -0
  29. package/dist/helpers/validationHelpers.js +20 -1
  30. package/dist/hooks/creation/useContainerActions.js +2 -1
  31. package/dist/hooks/creation/useContainerCreation.js +5 -4
  32. package/dist/hooks/creation/useLogsViewer.js +3 -2
  33. package/dist/hooks/useContainers.js +6 -3
  34. package/dist/hooks/useControls.js +253 -122
  35. package/dist/hooks/useLogsStream.js +3 -2
  36. package/dist/index.js +1 -0
  37. package/docs/_config.yml +13 -0
  38. package/docs/components_ContainerCreationPrompt.jsx.html +114 -0
  39. package/docs/components_ContainerRow.jsx.html +151 -0
  40. package/docs/components_ContainerSection.jsx.html +75 -0
  41. package/docs/components_Footer.jsx.html +66 -0
  42. package/docs/components_Header.jsx.html +84 -0
  43. package/docs/components_LogViewer.jsx.html +91 -0
  44. package/docs/components_MessageFeedback.jsx.html +76 -0
  45. package/docs/components_PromptField.jsx.html +99 -0
  46. package/docs/components_StatsBar.jsx.html +105 -0
  47. package/docs/components_UsageMenu.jsx.html +73 -0
  48. package/docs/fonts/OpenSans-Bold-webfont.eot +0 -0
  49. package/docs/fonts/OpenSans-Bold-webfont.svg +1830 -0
  50. package/docs/fonts/OpenSans-Bold-webfont.woff +0 -0
  51. package/docs/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  52. package/docs/fonts/OpenSans-BoldItalic-webfont.svg +1830 -0
  53. package/docs/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  54. package/docs/fonts/OpenSans-Italic-webfont.eot +0 -0
  55. package/docs/fonts/OpenSans-Italic-webfont.svg +1830 -0
  56. package/docs/fonts/OpenSans-Italic-webfont.woff +0 -0
  57. package/docs/fonts/OpenSans-Light-webfont.eot +0 -0
  58. package/docs/fonts/OpenSans-Light-webfont.svg +1831 -0
  59. package/docs/fonts/OpenSans-Light-webfont.woff +0 -0
  60. package/docs/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  61. package/docs/fonts/OpenSans-LightItalic-webfont.svg +1835 -0
  62. package/docs/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  63. package/docs/fonts/OpenSans-Regular-webfont.eot +0 -0
  64. package/docs/fonts/OpenSans-Regular-webfont.svg +1831 -0
  65. package/docs/fonts/OpenSans-Regular-webfont.woff +0 -0
  66. package/docs/global.html +6145 -0
  67. package/docs/helpers_actionHelpers.js.html +94 -0
  68. package/docs/helpers_constants.js.html +81 -0
  69. package/docs/helpers_dockerService_dockerService.js.html +79 -0
  70. package/docs/helpers_dockerService_serviceComponents_containerActions.js.html +153 -0
  71. package/docs/helpers_dockerService_serviceComponents_containerList.js.html +81 -0
  72. package/docs/helpers_dockerService_serviceComponents_containerLogs.js.html +85 -0
  73. package/docs/helpers_dockerService_serviceComponents_containerStats.js.html +107 -0
  74. package/docs/helpers_dockerService_serviceComponents_imageUtils.js.html +82 -0
  75. package/docs/helpers_exitWithMessage.js.html +77 -0
  76. package/docs/helpers_safeCall.js.html +68 -0
  77. package/docs/helpers_validationHelpers.js.html +96 -0
  78. package/docs/hooks_creation_useContainerActions.js.html +120 -0
  79. package/docs/hooks_creation_useContainerCreation.js.html +152 -0
  80. package/docs/hooks_creation_useLogsViewer.js.html +102 -0
  81. package/docs/hooks_useControls.js.html +298 -0
  82. package/docs/hooks_useLogsStream.js.html +82 -0
  83. package/docs/index.html +65 -0
  84. package/docs/index.js.html +65 -0
  85. package/docs/module-index.html +171 -0
  86. package/docs/scripts/linenumber.js +25 -0
  87. package/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
  88. package/docs/scripts/prettify/lang-css.js +2 -0
  89. package/docs/scripts/prettify/prettify.js +28 -0
  90. package/docs/styles/jsdoc-default.css +358 -0
  91. package/docs/styles/prettify-jsdoc.css +111 -0
  92. package/docs/styles/prettify-tomorrow.css +132 -0
  93. package/fix-imports.cjs +33 -6
  94. package/jest.config.cjs +2 -1
  95. package/package.json +19 -9
  96. package/src/App.jsx +16 -2
  97. package/src/components/ContainerCreationPrompt.jsx +26 -0
  98. package/src/components/ContainerList.jsx +12 -13
  99. package/src/components/ContainerRow.jsx +55 -20
  100. package/src/components/ContainerSection.jsx +15 -1
  101. package/src/components/Footer.jsx +6 -1
  102. package/src/components/Header.jsx +27 -3
  103. package/src/components/LogViewer.jsx +19 -2
  104. package/src/components/MessageFeedback.jsx +14 -0
  105. package/src/components/PromptField.jsx +30 -0
  106. package/src/components/StatsBar.jsx +47 -8
  107. package/src/components/UsageMenu.jsx +38 -8
  108. package/src/helpers/actionHelpers.js +16 -7
  109. package/src/helpers/appInfo.js +23 -0
  110. package/src/helpers/constants.js +30 -0
  111. package/src/helpers/dockerService/dockerService.js +19 -0
  112. package/src/helpers/dockerService/serviceComponents/containerActions.js +123 -12
  113. package/src/helpers/dockerService/serviceComponents/containerList.js +61 -23
  114. package/src/helpers/dockerService/serviceComponents/containerLogs.js +20 -6
  115. package/src/helpers/dockerService/serviceComponents/containerStats.js +24 -5
  116. package/src/helpers/dockerService/serviceComponents/imageUtils.js +1 -1
  117. package/src/helpers/exitWithMessage.js +2 -1
  118. package/src/helpers/logger.js +113 -0
  119. package/src/helpers/safeCall.js +18 -0
  120. package/src/helpers/validationHelpers.js +21 -3
  121. package/src/hooks/creation/useContainerActions.js +4 -3
  122. package/src/hooks/creation/useContainerCreation.js +5 -4
  123. package/src/hooks/creation/useLogsViewer.js +2 -1
  124. package/src/hooks/useContainers.js +6 -3
  125. package/src/hooks/useControls.js +244 -91
  126. package/src/hooks/useLogsStream.js +2 -1
  127. package/src/index.js +1 -0
  128. package/test/actionHelpers.test.js +106 -0
  129. package/test/containerActions.test.js +138 -0
  130. package/test/containerList.test.js +79 -0
  131. package/test/jest.setup.js +7 -0
  132. package/test/safeCall.test.js +25 -0
  133. package/test/useContainerCreation.dom.test.js +97 -0
  134. package/test/validationHelpers.test.js +2 -2
  135. package/dist/cdd.bundle.js +0 -8
  136. package/dist/components/ContainerCreator.js +0 -81
  137. package/dist/components/StatsViewer.js +0 -0
  138. package/dist/helpers/dockerActions.js +0 -64
  139. package/dist/helpers/dockerService.js +0 -284
  140. package/dist/hooks/useStatsPolling.js +0 -54
@@ -1,284 +0,0 @@
1
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
8
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
10
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
11
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
12
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
13
- function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
14
- function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
15
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
16
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
17
- /**
18
- * Utility to interact with Docker CLI.
19
- * Utilidad para interactuar con el CLI de Docker.
20
- *
21
- * @param {string} cmd - Docker command / Comando Docker
22
- * @returns {Promise<string>} Output from Docker / Salida de Docker
23
- * @throws {Error} If command fails / Si el comando falla
24
- * @example
25
- * // EN: Run a Docker command
26
- * // ES: Ejecutar un comando Docker
27
- * await dockerService('ps -a');
28
- */
29
-
30
- import Docker from "dockerode";
31
- var docker = new Docker({
32
- socketPath: "/var/run/docker.sock"
33
- });
34
- export function getLogsStream(containerId, onData, onEnd, onError) {
35
- var container = docker.getContainer(containerId);
36
- container.logs({
37
- follow: true,
38
- stdout: true,
39
- stderr: true,
40
- tail: 100
41
- }, function (err, stream) {
42
- if (err) {
43
- onError === null || onError === void 0 || onError(err);
44
- return;
45
- }
46
- stream.on('data', function (chunk) {
47
- return onData === null || onData === void 0 ? void 0 : onData(chunk.toString());
48
- });
49
- stream.on('end', function () {
50
- return onEnd === null || onEnd === void 0 ? void 0 : onEnd();
51
- });
52
- stream.on('error', function (err) {
53
- return onError === null || onError === void 0 ? void 0 : onError(err);
54
- });
55
- });
56
- }
57
- export function startContainer(_x) {
58
- return _startContainer.apply(this, arguments);
59
- }
60
- function _startContainer() {
61
- _startContainer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(containerId) {
62
- var container;
63
- return _regenerator().w(function (_context) {
64
- while (1) switch (_context.n) {
65
- case 0:
66
- container = docker.getContainer(containerId);
67
- _context.n = 1;
68
- return container.start();
69
- case 1:
70
- return _context.a(2);
71
- }
72
- }, _callee);
73
- }));
74
- return _startContainer.apply(this, arguments);
75
- }
76
- export function stopContainer(_x2) {
77
- return _stopContainer.apply(this, arguments);
78
- }
79
- function _stopContainer() {
80
- _stopContainer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(containerId) {
81
- var container;
82
- return _regenerator().w(function (_context2) {
83
- while (1) switch (_context2.n) {
84
- case 0:
85
- container = docker.getContainer(containerId);
86
- _context2.n = 1;
87
- return container.stop();
88
- case 1:
89
- return _context2.a(2);
90
- }
91
- }, _callee2);
92
- }));
93
- return _stopContainer.apply(this, arguments);
94
- }
95
- export function restartContainer(_x3) {
96
- return _restartContainer.apply(this, arguments);
97
- }
98
- function _restartContainer() {
99
- _restartContainer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(containerId) {
100
- var container;
101
- return _regenerator().w(function (_context3) {
102
- while (1) switch (_context3.n) {
103
- case 0:
104
- container = docker.getContainer(containerId);
105
- _context3.n = 1;
106
- return container.restart();
107
- case 1:
108
- return _context3.a(2);
109
- }
110
- }, _callee3);
111
- }));
112
- return _restartContainer.apply(this, arguments);
113
- }
114
- export function getContainers() {
115
- return _getContainers.apply(this, arguments);
116
- }
117
- function _getContainers() {
118
- _getContainers = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
119
- var containers;
120
- return _regenerator().w(function (_context4) {
121
- while (1) switch (_context4.n) {
122
- case 0:
123
- _context4.n = 1;
124
- return docker.listContainers({
125
- all: true
126
- });
127
- case 1:
128
- containers = _context4.v;
129
- return _context4.a(2, containers.map(function (container) {
130
- return {
131
- id: container.Id,
132
- name: container.Names[0].replace("/", ""),
133
- image: container.Image,
134
- state: container.State,
135
- status: container.Status,
136
- ports: _toConsumableArray(new Set(container.Ports.filter(function (port) {
137
- return port.PublicPort;
138
- }).map(function (port) {
139
- return "".concat(port.PublicPort, ":").concat(port.PrivatePort);
140
- })))
141
- };
142
- }));
143
- }
144
- }, _callee4);
145
- }));
146
- return _getContainers.apply(this, arguments);
147
- }
148
- export function getStats(_x4) {
149
- return _getStats.apply(this, arguments);
150
- }
151
-
152
- /**
153
- * Crea un contenedor Docker de forma robusta.
154
- * - Valida si la imagen existe localmente, si no, la descarga (pull).
155
- * - Permite opciones adicionales para el contenedor.
156
- *
157
- * @param {string} imageName - Nombre de la imagen Docker
158
- * @param {object} [options] - Opciones adicionales para el contenedor
159
- * @returns {Promise<string>} ID del contenedor creado
160
- * @throws {Error} Si falla la creación o el pull de la imagen
161
- */
162
- function _getStats() {
163
- _getStats = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(containerId) {
164
- var container, stream, cpuDelta, systemDelta, cpuPercent, memUsage, memLimit, memPercent, rx, tx;
165
- return _regenerator().w(function (_context5) {
166
- while (1) switch (_context5.n) {
167
- case 0:
168
- container = docker.getContainer(containerId);
169
- _context5.n = 1;
170
- return container.stats({
171
- stream: false
172
- });
173
- case 1:
174
- stream = _context5.v;
175
- cpuDelta = stream.cpu_stats.cpu_usage.total_usage - stream.precpu_stats.cpu_usage.total_usage;
176
- systemDelta = stream.cpu_stats.system_cpu_usage - stream.precpu_stats.system_cpu_usage;
177
- cpuPercent = systemDelta > 0 ? cpuDelta / systemDelta * 100 : 0;
178
- memUsage = stream.memory_stats.usage || 0;
179
- memLimit = stream.memory_stats.limit || 1;
180
- memPercent = memUsage / memLimit * 100;
181
- rx = stream.networks ? Object.values(stream.networks).map(function (n) {
182
- return n.rx_bytes;
183
- }).reduce(function (a, b) {
184
- return a + b;
185
- }, 0) : 0;
186
- tx = stream.networks ? Object.values(stream.networks).map(function (n) {
187
- return n.tx_bytes;
188
- }).reduce(function (a, b) {
189
- return a + b;
190
- }, 0) : 0;
191
- return _context5.a(2, {
192
- cpuPercent: cpuPercent.toFixed(1),
193
- memPercent: memPercent.toFixed(1),
194
- netIO: {
195
- rx: rx,
196
- tx: tx
197
- }
198
- });
199
- }
200
- }, _callee5);
201
- }));
202
- return _getStats.apply(this, arguments);
203
- }
204
- export function createContainer(_x5) {
205
- return _createContainer.apply(this, arguments);
206
- }
207
- function _createContainer() {
208
- _createContainer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(imageName) {
209
- var options,
210
- imageExists,
211
- images,
212
- createOpts,
213
- container,
214
- _args6 = arguments,
215
- _t,
216
- _t2,
217
- _t3;
218
- return _regenerator().w(function (_context6) {
219
- while (1) switch (_context6.p = _context6.n) {
220
- case 0:
221
- options = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
222
- // Verifica si la imagen existe localmente
223
- imageExists = false;
224
- _context6.p = 1;
225
- _context6.n = 2;
226
- return docker.listImages();
227
- case 2:
228
- images = _context6.v;
229
- imageExists = images.some(function (img) {
230
- return (img.RepoTags || []).includes(imageName) || (img.RepoDigests || []).some(function (d) {
231
- return d.includes(imageName);
232
- });
233
- });
234
- _context6.n = 4;
235
- break;
236
- case 3:
237
- _context6.p = 3;
238
- _t = _context6.v;
239
- throw new Error('Error al listar imágenes locales: ' + _t.message);
240
- case 4:
241
- if (imageExists) {
242
- _context6.n = 8;
243
- break;
244
- }
245
- _context6.p = 5;
246
- _context6.n = 6;
247
- return new Promise(function (resolve, reject) {
248
- docker.pull(imageName, function (err, stream) {
249
- if (err) return reject(new Error('Error al hacer pull de la imagen: ' + err.message));
250
- docker.modem.followProgress(stream, function (pullErr) {
251
- if (pullErr) reject(new Error('Error durante el pull: ' + pullErr.message));else resolve();
252
- });
253
- });
254
- });
255
- case 6:
256
- _context6.n = 8;
257
- break;
258
- case 7:
259
- _context6.p = 7;
260
- _t2 = _context6.v;
261
- throw new Error('No se pudo descargar la imagen: ' + _t2.message);
262
- case 8:
263
- // Opciones por defecto y merge con las recibidas
264
- createOpts = _objectSpread({
265
- Image: imageName,
266
- Tty: true
267
- }, options);
268
- _context6.p = 9;
269
- _context6.n = 10;
270
- return docker.createContainer(createOpts);
271
- case 10:
272
- container = _context6.v;
273
- return _context6.a(2, container.id || container.Id);
274
- case 11:
275
- _context6.p = 11;
276
- _t3 = _context6.v;
277
- throw new Error('Error al crear el contenedor: ' + _t3.message);
278
- case 12:
279
- return _context6.a(2);
280
- }
281
- }, _callee6, null, [[9, 11], [5, 7], [1, 3]]);
282
- }));
283
- return _createContainer.apply(this, arguments);
284
- }
@@ -1,54 +0,0 @@
1
- function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
2
- function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
3
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
4
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
5
- import React, { useEffect } from "react";
6
- export function useStatsPolling(_ref) {
7
- var showStats = _ref.showStats,
8
- selected = _ref.selected,
9
- containers = _ref.containers,
10
- setStats = _ref.setStats;
11
- useEffect(function () {
12
- var intervalId;
13
- var mounted = true;
14
- function fetchStats() {
15
- return _fetchStats.apply(this, arguments);
16
- }
17
- function _fetchStats() {
18
- _fetchStats = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
19
- var _yield$import, getStats, statsData;
20
- return _regenerator().w(function (_context) {
21
- while (1) switch (_context.n) {
22
- case 0:
23
- if (!(showStats && containers[selected])) {
24
- _context.n = 3;
25
- break;
26
- }
27
- _context.n = 1;
28
- return import("../helpers/dockerService.js");
29
- case 1:
30
- _yield$import = _context.v;
31
- getStats = _yield$import.getStats;
32
- _context.n = 2;
33
- return getStats(containers[selected].id);
34
- case 2:
35
- statsData = _context.v;
36
- if (mounted) setStats(statsData);
37
- case 3:
38
- return _context.a(2);
39
- }
40
- }, _callee);
41
- }));
42
- return _fetchStats.apply(this, arguments);
43
- }
44
- if (showStats && containers[selected]) {
45
- setStats(null);
46
- fetchStats();
47
- intervalId = setInterval(fetchStats, 2000);
48
- }
49
- return function () {
50
- mounted = false;
51
- if (intervalId) clearInterval(intervalId);
52
- };
53
- }, [showStats, selected, containers, setStats]);
54
- }