bdy 1.8.3-dev → 1.8.4-dev

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 (112) hide show
  1. package/distTs/bin/cli.js +5 -0
  2. package/distTs/src/agent/linux.js +119 -0
  3. package/distTs/src/agent/manager.js +395 -0
  4. package/distTs/src/agent/osx.js +139 -0
  5. package/distTs/src/agent/socket/tunnel.js +212 -0
  6. package/distTs/src/agent/socket.js +220 -0
  7. package/distTs/src/agent/system.js +177 -0
  8. package/distTs/src/agent/wait.js +23 -0
  9. package/distTs/src/agent/windows.js +159 -0
  10. package/distTs/src/agent.js +237 -0
  11. package/distTs/src/api/agent.js +84 -0
  12. package/distTs/src/api/buddy.js +117 -0
  13. package/distTs/src/api/socket.js +133 -0
  14. package/distTs/src/cfg.js +238 -0
  15. package/distTs/src/command/agent/install.js +106 -0
  16. package/distTs/src/command/agent/restart.js +27 -0
  17. package/distTs/src/command/agent/run.js +19 -0
  18. package/distTs/src/command/agent/start.js +28 -0
  19. package/distTs/src/command/agent/status.js +35 -0
  20. package/distTs/src/command/agent/stop.js +28 -0
  21. package/distTs/src/command/agent/tunnel/http.js +44 -0
  22. package/distTs/src/command/agent/tunnel/list.js +27 -0
  23. package/distTs/src/command/agent/tunnel/remove.js +28 -0
  24. package/distTs/src/command/agent/tunnel/start.js +34 -0
  25. package/distTs/src/command/agent/tunnel/status.js +31 -0
  26. package/distTs/src/command/agent/tunnel/tcp.js +43 -0
  27. package/distTs/src/command/agent/tunnel/tls.js +43 -0
  28. package/distTs/src/command/agent/tunnel.js +23 -0
  29. package/distTs/src/command/agent/uninstall.js +38 -0
  30. package/distTs/src/command/agent/update.js +38 -0
  31. package/distTs/src/command/agent/version.js +21 -0
  32. package/distTs/src/command/agent.js +29 -0
  33. package/distTs/src/command/config/add/http.js +25 -0
  34. package/distTs/src/command/config/add/tcp.js +25 -0
  35. package/distTs/src/command/config/add/tls.js +25 -0
  36. package/distTs/src/command/config/add.js +15 -0
  37. package/distTs/src/command/config/get/region.js +15 -0
  38. package/distTs/src/command/config/get/timeout.js +15 -0
  39. package/distTs/src/command/config/get/token.js +15 -0
  40. package/distTs/src/command/config/get/tunnel.js +19 -0
  41. package/distTs/src/command/config/get/tunnels.js +15 -0
  42. package/distTs/src/command/config/get/whitelist.js +15 -0
  43. package/distTs/src/command/config/get.js +21 -0
  44. package/distTs/src/command/config/remove/tunnel.js +19 -0
  45. package/distTs/src/command/config/remove.js +11 -0
  46. package/distTs/src/command/config/set/region.js +17 -0
  47. package/distTs/src/command/config/set/timeout.js +17 -0
  48. package/distTs/src/command/config/set/token.js +16 -0
  49. package/distTs/src/command/config/set/whitelist.js +17 -0
  50. package/distTs/src/command/config/set.js +17 -0
  51. package/distTs/src/command/config.js +17 -0
  52. package/distTs/src/command/http.js +30 -0
  53. package/distTs/src/command/pre.js +49 -0
  54. package/distTs/src/command/start.js +28 -0
  55. package/distTs/src/command/tcp.js +30 -0
  56. package/distTs/src/command/tls.js +30 -0
  57. package/distTs/src/command/version.js +13 -0
  58. package/distTs/src/command/vt/close.js +28 -0
  59. package/distTs/src/command/vt/exec.js +79 -0
  60. package/distTs/src/command/vt/storybook.js +90 -0
  61. package/distTs/src/command/vt.js +15 -0
  62. package/distTs/src/format.js +172 -0
  63. package/distTs/src/index.js +40 -0
  64. package/distTs/src/input.js +286 -0
  65. package/distTs/src/logger.js +93 -0
  66. package/distTs/src/output/interactive/tunnel.js +860 -0
  67. package/distTs/src/output/noninteractive/agent/tunnels.js +43 -0
  68. package/distTs/src/output/noninteractive/config/tunnel.js +67 -0
  69. package/distTs/src/output/noninteractive/config/tunnels.js +18 -0
  70. package/distTs/src/output/noninteractive/tunnel.js +59 -0
  71. package/distTs/src/output.js +138 -0
  72. package/distTs/src/server/cert.js +52 -0
  73. package/distTs/src/server/http1.js +74 -0
  74. package/distTs/src/server/http2.js +74 -0
  75. package/distTs/src/server/sftp.js +487 -0
  76. package/distTs/src/server/ssh.js +112 -0
  77. package/distTs/src/server/tls.js +41 -0
  78. package/distTs/src/ssh/client.js +191 -0
  79. package/distTs/src/texts.js +345 -0
  80. package/distTs/src/tunnel/agent.js +100 -0
  81. package/distTs/src/tunnel/compression.js +41 -0
  82. package/distTs/src/tunnel/dns.js +54 -0
  83. package/distTs/src/tunnel/html.js +30 -0
  84. package/distTs/src/tunnel/http/log.js +196 -0
  85. package/distTs/src/tunnel/http/serve.js +132 -0
  86. package/distTs/src/tunnel/http/stream.js +45 -0
  87. package/distTs/src/tunnel/http.js +405 -0
  88. package/distTs/src/tunnel/identification.js +96 -0
  89. package/distTs/src/tunnel/latency.js +71 -0
  90. package/distTs/src/tunnel/tcp.js +92 -0
  91. package/distTs/src/tunnel.js +647 -0
  92. package/distTs/src/types/ciInfo.js +10 -0
  93. package/distTs/src/types/options.js +2 -0
  94. package/distTs/src/types/plugin.js +2 -0
  95. package/distTs/src/types/queue.js +2 -0
  96. package/distTs/src/types/requests.js +2 -0
  97. package/distTs/src/types/resources.js +2 -0
  98. package/distTs/src/types/snapshots.js +2 -0
  99. package/distTs/src/types/storybook.js +2 -0
  100. package/distTs/src/utils.js +437 -0
  101. package/distTs/src/visualTest/browser.js +32 -0
  102. package/distTs/src/visualTest/ci.js +206 -0
  103. package/distTs/src/visualTest/context.js +44 -0
  104. package/distTs/src/visualTest/exec.js +51 -0
  105. package/distTs/src/visualTest/queue.js +43 -0
  106. package/distTs/src/visualTest/requests.js +197 -0
  107. package/distTs/src/visualTest/resources.js +195 -0
  108. package/distTs/src/visualTest/server.js +33 -0
  109. package/distTs/src/visualTest/snapshots.js +109 -0
  110. package/distTs/src/visualTest/utils/parseDom.js +238 -0
  111. package/distTs/src/visualTest/validation.js +18 -0
  112. package/package.json +1 -1
@@ -0,0 +1,437 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.TUNNEL_EVENT_HTTP_CLOSED = exports.TUNNEL_EVENT_HTTP_OPEN = exports.TUNNEL_EVENT_TLS_CLOSED = exports.TUNNEL_EVENT_TLS_OPEN = exports.TUNNEL_EVENT_TCP_CLOSED = exports.TUNNEL_EVENT_TCP_OPEN = exports.TUNNEL_EVENT_CLOSED = exports.TUNNEL_EVENT_OPEN = exports.EVENT_TUNNEL_HTTP_NEW_RESPONSE_END = exports.EVENT_TUNNEL_HTTP_NEW_RESPONSE = exports.EVENT_TUNNEL_HTTP_NEW_REQUEST_END = exports.EVENT_TUNNEL_HTTP_NEW_REQUEST = exports.TUNNEL_HTTP_CB_MIN_REQUESTS = exports.TUNNEL_HTTP_CB_WINDOW = exports.TUNNEL_MAX_REQUEST_SIZE_TO_SYNC = exports.TUNNEL_HTTP_LOG_MAX_REQUESTS = exports.TUNNEL_HTTP_LOG_MAX_BODY = exports.TUNNEL_HTTP_RATE_WINDOW = exports.TUNNEL_HTTP_RATE_LIMIT = exports.SOCKET_TYPE_SSH = exports.SOCKET_TYPE_HTTP2 = exports.SOCKET_TYPE_HTTP1 = exports.SOCKET_TYPE_TLS = exports.SOCKET_TYPE_TCP = exports.SSH_CLIENT_EVENT_STREAM_HTTP2 = exports.SSH_CLIENT_EVENT_STREAM_HTTP1 = exports.SSH_CLIENT_EVENT_STREAM_TLS = exports.SSH_CLIENT_EVENT_STREAM_TCP = exports.SSH_CLIENT_EVENT_STREAM_SSH = exports.SSH_CLIENT_EVENT_DISCONNECTED = exports.SSH_CLIENT_EVENT_CONNECTED = exports.TLS_SOCKET = exports.HTTP2_REQUEST = exports.HTTP2_SESSION_CLOSED = exports.HTTP2_SESSION_OPEN = exports.HTTP1_REQUEST = exports.HTTP1_SOCKET_CLOSED = exports.HTTP1_SOCKET_OPEN = exports.TUNNEL_IDENTIFIED_HTTP2 = exports.TUNNEL_IDENTIFIED_HTTP1 = exports.EVENT_TUNNEL_IDENTIFIED = exports.TUNNEL_SSH = exports.TUNNEL_TLS = exports.TUNNEL_TCP = exports.TUNNEL_HTTP = exports.TLS_TERMINATE_AT_REGION = exports.TLS_TERMINATE_AT_AGENT = exports.TLS_TERMINATE_AT_TARGET = exports.REGION_EU = exports.REGION_US = void 0;
30
+ exports.TUNNEL_LATENCY_EVENT_RECONNECTED = exports.TUNNEL_COMPRESSION_METHOD_DEFLATE = exports.TUNNEL_COMPRESSION_METHOD_GZIP = exports.TUNNEL_COMPRESSION_METHOD_BR = exports.TUNNEL_COMPRESSION_METHOD_IDENTITY = exports.TARGET_ONLY_PORT_REGEX = exports.TARGET_HTTP_REGEX = exports.TARGET_TCP_TLS_REGEX = exports.ApiErrorTunnelsDisabled = exports.ApiErrorTunnelLimitReached = exports.ApiErrorAgentLimitReached = exports.ApiErrorSubdomainTaken = exports.ApiErrorWrongToken = exports.ApiErrorFailedToConnect = exports.ApiErrorAgentNotFound = exports.SOCKET_IO_EVENT_TUNNEL = exports.SOCKET_IO_EVENT_AGENT = exports.SOCKET_IO_EVENT_FETCH_FAILED = exports.SOCKET_IO_EVENT_FETCH_SUCCESS = exports.SOCKET_IO_EVENT_DISCONNECTED = exports.SOCKET_IO_EVENT_CONNECTED = exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_RETRY = exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_RESPONSE = exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_REQUEST = exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_REQUESTS = exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_IDENTIFIED = exports.AGENT_SOCKET_MESSAGE_TUNNEL_TLS_CLOSED = exports.AGENT_SOCKET_MESSAGE_TUNNEL_TLS_OPEN = exports.AGENT_SOCKET_MESSAGE_TUNNEL_TCP_CLOSED = exports.AGENT_SOCKET_MESSAGE_TUNNEL_TCP_OPEN = exports.AGENT_SOCKET_MESSAGE_TUNNEL_CLOSED = exports.AGENT_SOCKET_MESSAGE_TUNNEL_OPEN = exports.AGENT_SOCKET_MESSAGE_TUNNEL_STOPPED = exports.AGENT_SOCKET_MESSAGE_TUNNEL = exports.AGENT_SOCKET_MESSAGE_READY = exports.AGENT_ACTION_DELETE = exports.AGENT_ACTION_RESTART = exports.AGENT_ACTION_START = exports.AGENT_ACTION_STOP = exports.AGENT_STATUS_ENABLED = exports.AGENT_STATUS_FETCH_FAILED = exports.AGENT_STATUS_INITIALIZING = exports.AGENT_STATUS_DISABLED = exports.DEFAULT_TIMEOUT = exports.TUNNEL_CLOSED = exports.TUNNEL_OPEN = exports.TUNNEL_EVENT_STOPPED = exports.TUNNEL_EVENT_HTTP_RESPONSE = exports.TUNNEL_EVENT_HTTP_REQUEST = exports.TUNNEL_EVENT_HTTP_IDENTIFIED = void 0;
31
+ exports.getBasicCommandTls = exports.getBasicCommandHttp = exports.getBasicCommandTcp = exports.createSshHostKey = exports.getRealTargetHost = exports.isWindows = exports.isLinux = exports.isOsx = exports.isDocker = exports.sleep = exports.getLatestVersion = exports.getVersionEnv = exports.getVersionWithoutEnv = exports.getVersion = exports.getHomeDirectory = exports.newCommand = exports.formatHelp = exports.getPlatform = exports.getHostname = exports.isStringRegExp = exports.getRootDir = exports.TCP_EVENT_CLOSED = void 0;
32
+ exports.apiErrorCodeToClass = apiErrorCodeToClass;
33
+ const node_path_1 = __importStar(require("node:path"));
34
+ const node_fs_1 = require("node:fs");
35
+ const texts_1 = require("./texts");
36
+ const ssh2_1 = __importDefault(require("ssh2"));
37
+ const node_sea_1 = require("node:sea");
38
+ const commander_1 = require("commander");
39
+ const texts_js_1 = require("./texts.js");
40
+ const node_os_1 = __importStar(require("node:os"));
41
+ exports.REGION_US = 'US';
42
+ exports.REGION_EU = 'EU';
43
+ exports.TLS_TERMINATE_AT_TARGET = 'TARGET';
44
+ exports.TLS_TERMINATE_AT_AGENT = 'AGENT';
45
+ exports.TLS_TERMINATE_AT_REGION = 'REGION';
46
+ exports.TUNNEL_HTTP = 'HTTP';
47
+ exports.TUNNEL_TCP = 'TCP';
48
+ exports.TUNNEL_TLS = 'TLS';
49
+ exports.TUNNEL_SSH = 'SSH';
50
+ exports.EVENT_TUNNEL_IDENTIFIED = 'tunnel identified';
51
+ exports.TUNNEL_IDENTIFIED_HTTP1 = '1.1';
52
+ exports.TUNNEL_IDENTIFIED_HTTP2 = '2.0';
53
+ exports.HTTP1_SOCKET_OPEN = 'http socket open';
54
+ exports.HTTP1_SOCKET_CLOSED = 'http socket closed';
55
+ exports.HTTP1_REQUEST = 'http request';
56
+ exports.HTTP2_SESSION_OPEN = 'http session open';
57
+ exports.HTTP2_SESSION_CLOSED = 'http session closed';
58
+ exports.HTTP2_REQUEST = 'http request';
59
+ exports.TLS_SOCKET = 'tls socket';
60
+ exports.SSH_CLIENT_EVENT_CONNECTED = 'connected';
61
+ exports.SSH_CLIENT_EVENT_DISCONNECTED = 'disconnected';
62
+ exports.SSH_CLIENT_EVENT_STREAM_SSH = 'stream ssh';
63
+ exports.SSH_CLIENT_EVENT_STREAM_TCP = 'stream tcp';
64
+ exports.SSH_CLIENT_EVENT_STREAM_TLS = 'stream tls';
65
+ exports.SSH_CLIENT_EVENT_STREAM_HTTP1 = 'stream http1';
66
+ exports.SSH_CLIENT_EVENT_STREAM_HTTP2 = 'stream http2';
67
+ exports.SOCKET_TYPE_TCP = 0;
68
+ exports.SOCKET_TYPE_TLS = 1;
69
+ exports.SOCKET_TYPE_HTTP1 = 2;
70
+ exports.SOCKET_TYPE_HTTP2 = 3;
71
+ exports.SOCKET_TYPE_SSH = 4;
72
+ exports.TUNNEL_HTTP_RATE_LIMIT = 2000;
73
+ exports.TUNNEL_HTTP_RATE_WINDOW = 60000;
74
+ exports.TUNNEL_HTTP_LOG_MAX_BODY = 5242880; // 5MB
75
+ exports.TUNNEL_HTTP_LOG_MAX_REQUESTS = 20;
76
+ exports.TUNNEL_MAX_REQUEST_SIZE_TO_SYNC = 25600; // 25kB (1 request do frontu moze miec max 1MB, 20 requestow po req i res body)
77
+ exports.TUNNEL_HTTP_CB_WINDOW = 10000;
78
+ exports.TUNNEL_HTTP_CB_MIN_REQUESTS = 20;
79
+ exports.EVENT_TUNNEL_HTTP_NEW_REQUEST = 'new request';
80
+ exports.EVENT_TUNNEL_HTTP_NEW_REQUEST_END = 'new request end';
81
+ exports.EVENT_TUNNEL_HTTP_NEW_RESPONSE = 'new response';
82
+ exports.EVENT_TUNNEL_HTTP_NEW_RESPONSE_END = 'new response end';
83
+ exports.TUNNEL_EVENT_OPEN = 'open';
84
+ exports.TUNNEL_EVENT_CLOSED = 'closed';
85
+ exports.TUNNEL_EVENT_TCP_OPEN = 'tcp open';
86
+ exports.TUNNEL_EVENT_TCP_CLOSED = 'tcp closed';
87
+ exports.TUNNEL_EVENT_TLS_OPEN = 'tls open';
88
+ exports.TUNNEL_EVENT_TLS_CLOSED = 'tls closed';
89
+ exports.TUNNEL_EVENT_HTTP_OPEN = 'http open';
90
+ exports.TUNNEL_EVENT_HTTP_CLOSED = 'http closed';
91
+ exports.TUNNEL_EVENT_HTTP_IDENTIFIED = 'http identified';
92
+ exports.TUNNEL_EVENT_HTTP_REQUEST = 'http request';
93
+ exports.TUNNEL_EVENT_HTTP_RESPONSE = 'http response';
94
+ exports.TUNNEL_EVENT_STOPPED = 'stopped';
95
+ exports.TUNNEL_OPEN = 'OPEN';
96
+ exports.TUNNEL_CLOSED = 'CLOSED';
97
+ exports.DEFAULT_TIMEOUT = 30;
98
+ exports.AGENT_STATUS_DISABLED = 'disabled';
99
+ exports.AGENT_STATUS_INITIALIZING = 'initializing';
100
+ exports.AGENT_STATUS_FETCH_FAILED = 'fetch agent failed, retrying';
101
+ exports.AGENT_STATUS_ENABLED = 'enabled';
102
+ exports.AGENT_ACTION_STOP = 'STOP';
103
+ exports.AGENT_ACTION_START = 'START';
104
+ exports.AGENT_ACTION_RESTART = 'RESTART';
105
+ exports.AGENT_ACTION_DELETE = 'DELETE';
106
+ exports.AGENT_SOCKET_MESSAGE_READY = 'ready';
107
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL = 'tunnel';
108
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_STOPPED = 'tunnel stopped';
109
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_OPEN = 'tunnel open';
110
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_CLOSED = 'tunnel closed';
111
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_TCP_OPEN = 'tunnel tcp open';
112
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_TCP_CLOSED = 'tunnel tcp closed';
113
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_TLS_OPEN = 'tunnel tls open';
114
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_TLS_CLOSED = 'tunnel tls closed';
115
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_IDENTIFIED = 'tunnel http identified';
116
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_REQUESTS = 'tunnel http requests';
117
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_REQUEST = 'tunnel http request';
118
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_RESPONSE = 'tunnel http response';
119
+ exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_RETRY = 'tunnel http retry';
120
+ exports.SOCKET_IO_EVENT_CONNECTED = 'socket connected';
121
+ exports.SOCKET_IO_EVENT_DISCONNECTED = 'socket disconnected';
122
+ exports.SOCKET_IO_EVENT_FETCH_SUCCESS = 'fetch success';
123
+ exports.SOCKET_IO_EVENT_FETCH_FAILED = 'fetch failed';
124
+ exports.SOCKET_IO_EVENT_AGENT = 'agent';
125
+ exports.SOCKET_IO_EVENT_TUNNEL = 'tunnel';
126
+ function apiErrorCodeToClass(code, host) {
127
+ if (code === 234000) {
128
+ return new ApiErrorAgentNotFound();
129
+ }
130
+ if (code === 234020) {
131
+ return new ApiErrorWrongToken();
132
+ }
133
+ if (code === 234003) {
134
+ return new ApiErrorSubdomainTaken();
135
+ }
136
+ if (code === 234500) {
137
+ return new ApiErrorTunnelsDisabled();
138
+ }
139
+ if (code === 234502) {
140
+ return new ApiErrorAgentLimitReached();
141
+ }
142
+ if (code === 234501) {
143
+ return new ApiErrorTunnelLimitReached();
144
+ }
145
+ return new ApiErrorFailedToConnect(host);
146
+ }
147
+ class ApiErrorAgentNotFound extends Error {
148
+ constructor() {
149
+ super(texts_1.ERR_AGENT_REMOVED);
150
+ }
151
+ }
152
+ exports.ApiErrorAgentNotFound = ApiErrorAgentNotFound;
153
+ class ApiErrorFailedToConnect extends Error {
154
+ constructor(host) {
155
+ super((0, texts_1.ERR_FAILED_TO_CONNECT)(host));
156
+ }
157
+ }
158
+ exports.ApiErrorFailedToConnect = ApiErrorFailedToConnect;
159
+ class ApiErrorWrongToken extends Error {
160
+ constructor() {
161
+ super(texts_1.ERR_WRONG_TOKEN);
162
+ }
163
+ }
164
+ exports.ApiErrorWrongToken = ApiErrorWrongToken;
165
+ class ApiErrorSubdomainTaken extends Error {
166
+ constructor() {
167
+ super(texts_1.ERR_SUBDOMAIN_TAKEN);
168
+ }
169
+ }
170
+ exports.ApiErrorSubdomainTaken = ApiErrorSubdomainTaken;
171
+ class ApiErrorAgentLimitReached extends Error {
172
+ constructor() {
173
+ super(texts_1.ERR_AGENT_LIMIT_REACHED);
174
+ }
175
+ }
176
+ exports.ApiErrorAgentLimitReached = ApiErrorAgentLimitReached;
177
+ class ApiErrorTunnelLimitReached extends Error {
178
+ constructor() {
179
+ super(texts_1.ERR_TUNNEL_LIMIT_REACHED);
180
+ }
181
+ }
182
+ exports.ApiErrorTunnelLimitReached = ApiErrorTunnelLimitReached;
183
+ class ApiErrorTunnelsDisabled extends Error {
184
+ constructor() {
185
+ super(texts_1.ERR_TUNNELS_DISABLED);
186
+ }
187
+ }
188
+ exports.ApiErrorTunnelsDisabled = ApiErrorTunnelsDisabled;
189
+ exports.TARGET_TCP_TLS_REGEX = /^(([^:]+):)?(\d+)$/i;
190
+ exports.TARGET_HTTP_REGEX = /^((https?):\/\/)?([^:/]+:[^@:]+@)?([^:]+)(:(\d+))?$/i;
191
+ exports.TARGET_ONLY_PORT_REGEX = /^\d+$/i;
192
+ exports.TUNNEL_COMPRESSION_METHOD_IDENTITY = 'identity';
193
+ exports.TUNNEL_COMPRESSION_METHOD_BR = 'br';
194
+ exports.TUNNEL_COMPRESSION_METHOD_GZIP = 'gzip';
195
+ exports.TUNNEL_COMPRESSION_METHOD_DEFLATE = 'deflate';
196
+ exports.TUNNEL_LATENCY_EVENT_RECONNECTED = 'reconnected';
197
+ exports.TCP_EVENT_CLOSED = 'closed';
198
+ let cachedVersion;
199
+ let cachedRoot;
200
+ const getRootDir = () => {
201
+ if (!cachedRoot) {
202
+ cachedRoot = node_path_1.default.resolve(__dirname, '..');
203
+ }
204
+ return cachedRoot;
205
+ };
206
+ exports.getRootDir = getRootDir;
207
+ const isStringRegExp = (str) => /^\/.*\/$/.test(str);
208
+ exports.isStringRegExp = isStringRegExp;
209
+ const getHostname = () => {
210
+ return node_os_1.default.hostname();
211
+ };
212
+ exports.getHostname = getHostname;
213
+ const getPlatform = () => {
214
+ return node_os_1.default.platform();
215
+ };
216
+ exports.getPlatform = getPlatform;
217
+ const formatHelp = (cmd, helper) => {
218
+ const termWidth = helper.padWidth(cmd, helper);
219
+ const helpWidth = helper.helpWidth || 80;
220
+ const itemIndentWidth = 2;
221
+ const itemSeparatorWidth = 2; // between term and description
222
+ function formatItem(term, description) {
223
+ if (description) {
224
+ const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;
225
+ return helper.wrap(fullText, helpWidth - itemIndentWidth, termWidth + itemSeparatorWidth);
226
+ }
227
+ return term;
228
+ }
229
+ function formatList(textArray) {
230
+ return textArray.join('\n').replace(/^/gm, ' '.repeat(itemIndentWidth));
231
+ }
232
+ // Usage
233
+ let output = ['USAGE:', ` ${helper.commandUsage(cmd)}`, ''];
234
+ // Description
235
+ const commandDescription = helper.commandDescription(cmd);
236
+ if (commandDescription.length > 0) {
237
+ output = output.concat([
238
+ 'DESCRIPTION:',
239
+ ` ${helper.wrap(commandDescription, helpWidth, itemIndentWidth)}`,
240
+ '',
241
+ ]);
242
+ }
243
+ // Arguments
244
+ const argumentList = helper
245
+ .visibleArguments(cmd)
246
+ .map((argument) => {
247
+ return formatItem(helper.argumentTerm(argument), helper.argumentDescription(argument));
248
+ });
249
+ if (argumentList.length > 0) {
250
+ output = output.concat(['ARGUMENTS:', formatList(argumentList), '']);
251
+ }
252
+ // Options
253
+ const optionList = helper.visibleOptions(cmd).map((option) => {
254
+ return formatItem(helper.optionTerm(option), helper.optionDescription(option));
255
+ });
256
+ if (optionList.length > 0) {
257
+ output = output.concat(['OPTIONS:', formatList(optionList), '']);
258
+ }
259
+ // Commands
260
+ const commandList = helper.visibleCommands(cmd).map((cmd) => {
261
+ return formatItem(helper.subcommandTerm(cmd), helper.subcommandDescription(cmd));
262
+ });
263
+ if (commandList.length > 0) {
264
+ output = output.concat(['COMMANDS:', formatList(commandList), '']);
265
+ }
266
+ return output.join('\n');
267
+ };
268
+ exports.formatHelp = formatHelp;
269
+ const newCommand = (name, desc) => {
270
+ const cmd = new commander_1.Command(name);
271
+ if (desc)
272
+ cmd.description(desc);
273
+ cmd.configureHelp({
274
+ formatHelp: exports.formatHelp,
275
+ });
276
+ return cmd;
277
+ };
278
+ exports.newCommand = newCommand;
279
+ const getHomeDirectory = () => {
280
+ if ((0, exports.isDocker)())
281
+ return '/buddy';
282
+ const r = (0, node_os_1.homedir)();
283
+ const p = node_path_1.default.join(r, '.bdy');
284
+ if (!(0, node_fs_1.existsSync)(p)) {
285
+ (0, node_fs_1.mkdirSync)(p, { recursive: true });
286
+ try {
287
+ (0, node_fs_1.chmodSync)(p, 0o777);
288
+ }
289
+ catch {
290
+ // do nothing
291
+ }
292
+ }
293
+ return p;
294
+ };
295
+ exports.getHomeDirectory = getHomeDirectory;
296
+ const getVersion = () => {
297
+ if (!cachedVersion) {
298
+ let packageJson;
299
+ if ((0, node_sea_1.isSea)()) {
300
+ packageJson = JSON.parse((0, node_sea_1.getAsset)('package.json', 'utf8'));
301
+ }
302
+ else {
303
+ const root = (0, exports.getRootDir)();
304
+ packageJson = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.resolve)(root, 'package.json'), 'utf8'));
305
+ }
306
+ cachedVersion = packageJson.version;
307
+ }
308
+ return cachedVersion;
309
+ };
310
+ exports.getVersion = getVersion;
311
+ const getVersionWithoutEnv = () => {
312
+ const v = (0, exports.getVersion)();
313
+ const m = v.match(/^\d+\.\d+\.\d+/);
314
+ if (m)
315
+ return m[0];
316
+ return '0.0.0';
317
+ };
318
+ exports.getVersionWithoutEnv = getVersionWithoutEnv;
319
+ const getVersionEnv = () => {
320
+ const v = (0, exports.getVersion)();
321
+ if (/dev/.test(v))
322
+ return 'dev';
323
+ if (/beta/.test(v))
324
+ return 'beta';
325
+ if (/stage/.test(v))
326
+ return 'stage';
327
+ if (/master/.test(v))
328
+ return 'master';
329
+ return 'prod';
330
+ };
331
+ exports.getVersionEnv = getVersionEnv;
332
+ const getLatestVersion = async () => {
333
+ try {
334
+ const env = (0, exports.getVersionEnv)();
335
+ const c = new AbortController();
336
+ setTimeout(() => {
337
+ c.abort();
338
+ }, 10000);
339
+ const response = await fetch(`https://es.buddy.works/bdy/${env}/latest`, {
340
+ method: 'GET',
341
+ signal: c.signal,
342
+ });
343
+ if (response.status === 200) {
344
+ const data = await response.text();
345
+ const v = data.trim();
346
+ if (env === 'prod')
347
+ return v;
348
+ return `${v}-${env}`;
349
+ }
350
+ else {
351
+ return '0.0.0';
352
+ }
353
+ }
354
+ catch {
355
+ throw new Error(texts_js_1.ERR_FETCH_VERSION);
356
+ }
357
+ };
358
+ exports.getLatestVersion = getLatestVersion;
359
+ const sleep = (ms) => {
360
+ return new Promise((resolve) => {
361
+ setTimeout(resolve, ms);
362
+ });
363
+ };
364
+ exports.sleep = sleep;
365
+ const isDocker = () => {
366
+ return process.env['IS_IN_DOCKER'] === '1';
367
+ };
368
+ exports.isDocker = isDocker;
369
+ const isOsx = () => {
370
+ return node_os_1.default.platform() === 'darwin';
371
+ };
372
+ exports.isOsx = isOsx;
373
+ const isLinux = () => {
374
+ return node_os_1.default.platform() === 'linux';
375
+ };
376
+ exports.isLinux = isLinux;
377
+ const isWindows = () => {
378
+ return node_os_1.default.platform() === 'win32';
379
+ };
380
+ exports.isWindows = isWindows;
381
+ const getRealTargetHost = (target) => {
382
+ return target;
383
+ };
384
+ exports.getRealTargetHost = getRealTargetHost;
385
+ const createSshHostKey = () => {
386
+ const keys = ssh2_1.default.utils.generateKeyPairSync('ed25519', {});
387
+ return keys.private;
388
+ };
389
+ exports.createSshHostKey = createSshHostKey;
390
+ const getBasicCommandTcp = () => {
391
+ const commandTcp = (0, exports.newCommand)('tcp');
392
+ commandTcp.alias('TCP');
393
+ commandTcp.option('-r, --region <region>', texts_1.OPTION_REGION);
394
+ commandTcp.option('-w, --whitelist <cidrs...>', texts_1.OPTION_WHITELIST);
395
+ commandTcp.option('-b, --subdomain <subdomain>', texts_1.OPTION_SUBDOMAIN);
396
+ commandTcp.option('-d, --domain <domain>', texts_1.OPTION_DOMAIN);
397
+ commandTcp.option('-t, --timeout <seconds>', texts_1.OPTION_TIMEOUT);
398
+ return commandTcp;
399
+ };
400
+ exports.getBasicCommandTcp = getBasicCommandTcp;
401
+ const getBasicCommandHttp = () => {
402
+ const commandHttp = (0, exports.newCommand)('http');
403
+ commandHttp.alias('HTTP');
404
+ commandHttp.option('-r, --region <region>', texts_1.OPTION_REGION);
405
+ commandHttp.option('-w, --whitelist <cidrs...>', texts_1.OPTION_WHITELIST);
406
+ commandHttp.option('-b, --subdomain <subdomain>', texts_1.OPTION_SUBDOMAIN);
407
+ commandHttp.option('-d, --domain <domain>', texts_1.OPTION_DOMAIN);
408
+ commandHttp.option('-t, --timeout <seconds>', texts_1.OPTION_TIMEOUT);
409
+ commandHttp.option('-h, --host <host>', texts_1.OPTION_HTTP_HOST);
410
+ commandHttp.option('--header <headers...>', texts_1.OPTION_HEADER);
411
+ commandHttp.option('--response-header <headers...>', texts_1.OPTION_RESPONSE_HEADER);
412
+ commandHttp.option('--useragent <useragent...>', texts_1.OPTION_HEADER_USER_AGENT);
413
+ commandHttp.option('-a, --auth <user:pass>', texts_1.OPTION_HTTP_AUTH);
414
+ commandHttp.option('-l, --log', texts_1.OPTION_HTTP_LOG);
415
+ commandHttp.option('-v, --verify', texts_1.OPTION_HTTP_VERIFY);
416
+ commandHttp.option('-2, --http2', texts_1.OPTION_HTTP_2);
417
+ commandHttp.option('-c, --compression', texts_1.OPTION_HTTP_COMPRESSION);
418
+ commandHttp.option('--ca <ca>', texts_1.OPTION_TLS_CA);
419
+ commandHttp.option('--circuit-breaker <threshold>', texts_1.OPTION_HTTP_CIRCUIT_BREAKER);
420
+ return commandHttp;
421
+ };
422
+ exports.getBasicCommandHttp = getBasicCommandHttp;
423
+ const getBasicCommandTls = () => {
424
+ const commandTls = (0, exports.newCommand)('tls');
425
+ commandTls.alias('TLS');
426
+ commandTls.option('-r, --region <region>', texts_1.OPTION_REGION);
427
+ commandTls.option('-w, --whitelist <cidrs...>', texts_1.OPTION_WHITELIST);
428
+ commandTls.option('-b, --subdomain <subdomain>', texts_1.OPTION_SUBDOMAIN);
429
+ commandTls.option('-d, --domain <domain>', texts_1.OPTION_DOMAIN);
430
+ commandTls.option('-t, --timeout <seconds>', texts_1.OPTION_TIMEOUT);
431
+ commandTls.option('-k, --key <key>', texts_1.OPTION_TLS_KEY);
432
+ commandTls.option('-c, --cert <cert>', texts_1.OPTION_TLS_CERT);
433
+ commandTls.option('--ca <ca>', texts_1.OPTION_TLS_CA);
434
+ commandTls.option('-i, --terminate <at>', texts_1.OPTION_TLS_TERMINATE);
435
+ return commandTls;
436
+ };
437
+ exports.getBasicCommandTls = getBasicCommandTls;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getBrowserPath = getBrowserPath;
7
+ const browsers_1 = require("@puppeteer/browsers");
8
+ const node_path_1 = require("node:path");
9
+ const node_os_1 = require("node:os");
10
+ const output_1 = __importDefault(require("../output"));
11
+ const texts_1 = require("../texts");
12
+ const customBrowserPath = process.env.SNAPSHOTS_BROWSER_PATH;
13
+ const cacheDir = (0, node_path_1.join)((0, node_os_1.homedir)(), '.cache', 'puppeteer');
14
+ const installOptions = {
15
+ cacheDir,
16
+ browser: browsers_1.Browser.CHROMEHEADLESSSHELL,
17
+ buildId: '130.0.6723.69',
18
+ };
19
+ async function getBrowserPath() {
20
+ const installedBrowsers = await (0, browsers_1.getInstalledBrowsers)({ cacheDir });
21
+ const browserFromCache = installedBrowsers.find((browser) => browser.browser === installOptions.browser &&
22
+ browser.buildId === installOptions.buildId);
23
+ if (customBrowserPath || browserFromCache) {
24
+ return customBrowserPath || browserFromCache?.executablePath;
25
+ }
26
+ else {
27
+ await (0, browsers_1.canDownload)(installOptions);
28
+ const installedBrowser = await (0, browsers_1.install)(installOptions);
29
+ output_1.default.normal(texts_1.LOG_INSTALLED_BROWSER);
30
+ return installedBrowser.executablePath;
31
+ }
32
+ }
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getCiAndGitInfo = getCiAndGitInfo;
7
+ exports.logCiInfo = logCiInfo;
8
+ const promises_1 = __importDefault(require("node:fs/promises"));
9
+ const exec_js_1 = require("./exec.js");
10
+ const ciInfo_js_1 = require("../types/ciInfo.js");
11
+ const output_1 = __importDefault(require("../output"));
12
+ const texts_1 = require("../texts");
13
+ async function getGithubPullRequestCommit() {
14
+ const payloadPath = process.env.GITHUB_EVENT_PATH;
15
+ if (!payloadPath) {
16
+ output_1.default.warning(texts_1.ERR_GITHUB_EVENT_PATH_NOT_FOUND);
17
+ return process.env.GITHUB_SHA;
18
+ }
19
+ try {
20
+ await promises_1.default.access(payloadPath);
21
+ }
22
+ catch (error) {
23
+ output_1.default.warning((0, texts_1.ERR_MISSING_FILE_WITH_HEAD_COMMIT)(payloadPath, JSON.stringify(error)));
24
+ return process.env.GITHUB_SHA;
25
+ }
26
+ let payload;
27
+ try {
28
+ const payloadFile = await promises_1.default.readFile(payloadPath);
29
+ payload = JSON.parse(payloadFile.toString());
30
+ }
31
+ catch (error) {
32
+ output_1.default.warning((0, texts_1.ERR_READING_FILE_WITH_HEAD_COMMIT)(payloadPath, JSON.stringify(error)));
33
+ return process.env.GITHUB_SHA;
34
+ }
35
+ if (!payload?.pull_request) {
36
+ output_1.default.warning(texts_1.ERR_MISSING_HEAD_COMMIT_IN_FILE);
37
+ return process.env.GITHUB_SHA;
38
+ }
39
+ return payload.pull_request.head.sha;
40
+ }
41
+ async function getBranchName() {
42
+ let branch = '';
43
+ try {
44
+ branch = await (0, exec_js_1.gitExec)(['rev-parse', '--abbrev-ref', 'HEAD']);
45
+ }
46
+ catch (error) {
47
+ output_1.default.warning((0, texts_1.ERR_GETTING_BRANCH_NAME)(JSON.stringify(error)));
48
+ }
49
+ branch = branch.trim();
50
+ if (!branch) {
51
+ output_1.default.warning(texts_1.ERR_INVALID_BRANCH_NAME);
52
+ return;
53
+ }
54
+ return branch?.trim();
55
+ }
56
+ async function getCommitHash() {
57
+ let commit = '';
58
+ try {
59
+ commit = await (0, exec_js_1.gitExec)(['rev-parse', '--verify', 'HEAD']);
60
+ }
61
+ catch (error) {
62
+ output_1.default.warning((0, texts_1.ERR_GETTING_COMMIT_HASH)(JSON.stringify(error)));
63
+ }
64
+ commit = commit.trim();
65
+ if (!commit || commit.length !== 40) {
66
+ output_1.default.warning((0, texts_1.ERR_INVALID_COMMIT_HASH)(commit));
67
+ return;
68
+ }
69
+ return commit;
70
+ }
71
+ async function getBaseCommit(baseBranch, headBranch, requiredOriginPrefix) {
72
+ if (!baseBranch) {
73
+ output_1.default.warning(texts_1.ERR_BASE_BRANCH_NOT_DEFINED);
74
+ return;
75
+ }
76
+ if (!headBranch) {
77
+ output_1.default.warning(texts_1.ERR_HEAD_BRANCH_NOT_DEFINED);
78
+ return;
79
+ }
80
+ let commit = '';
81
+ try {
82
+ const preparedBranch = requiredOriginPrefix && !headBranch.includes('origin/')
83
+ ? `origin/${headBranch}`
84
+ : headBranch;
85
+ const preparedBaseBranch = requiredOriginPrefix && !baseBranch.includes('origin/')
86
+ ? `origin/${baseBranch}`
87
+ : baseBranch;
88
+ commit = await (0, exec_js_1.gitExec)(['merge-base', preparedBranch, preparedBaseBranch]);
89
+ }
90
+ catch (error) {
91
+ output_1.default.warning((0, texts_1.ERR_GETTING_BASE_COMMIT)(baseBranch, headBranch, JSON.stringify(error)));
92
+ }
93
+ commit = commit.trim();
94
+ if (!commit || commit.length !== 40) {
95
+ output_1.default.warning((0, texts_1.ERR_INVALID_COMMIT_HASH)(commit));
96
+ return;
97
+ }
98
+ return commit;
99
+ }
100
+ async function getCommitDetails(commitHash) {
101
+ if (commitHash) {
102
+ try {
103
+ const commitDetails = await (0, exec_js_1.gitExec)([
104
+ 'show',
105
+ '--no-patch',
106
+ '--pretty=%an%n%ae%n%ct%n%B',
107
+ commitHash,
108
+ ]);
109
+ const [authorName, authorEmail, authorDate, message] = commitDetails.split('\n');
110
+ const authorDateNumber = Number(authorDate);
111
+ return {
112
+ authorName,
113
+ authorEmail,
114
+ authorDate: Number.isNaN(authorDateNumber)
115
+ ? undefined
116
+ : authorDateNumber,
117
+ message,
118
+ };
119
+ }
120
+ catch (error) {
121
+ output_1.default.warning((0, texts_1.ERR_GETTING_COMMIT_DETAILS)(JSON.stringify(error)));
122
+ }
123
+ }
124
+ }
125
+ async function getCiAndGitInfo(baseBranch) {
126
+ const isBuddy = process.env.BUDDY === 'true';
127
+ const isGithubAction = process.env.GITHUB_ACTIONS === 'true';
128
+ const isCircleCI = process.env.CIRCLECI === 'true';
129
+ const forceBranch = process.env.SNAPSHOTS_BRANCH;
130
+ const forceCommit = process.env.SNAPSHOTS_COMMIT;
131
+ const forceBaseCommit = process.env.SNAPSHOTS_BASE_COMMIT;
132
+ if (isBuddy) {
133
+ const isPR = process.env.BUDDY_EXECUTION_PULL_REQUEST_ID;
134
+ const branch = forceBranch || isPR
135
+ ? process.env.BUDDY_EXECUTION_PULL_REQUEST_HEAD_BRANCH
136
+ : process.env.BUDDY_EXECUTION_BRANCH;
137
+ const commit = forceCommit || process.env.BUDDY_EXECUTION_REVISION;
138
+ const baseCommit = forceBaseCommit || isPR
139
+ ? await getBaseCommit(baseBranch, branch, true)
140
+ : undefined;
141
+ const invokerId = Number(process.env.BUDDY_INVOKER_ID);
142
+ const pipelineId = Number(process.env.BUDDY_PIPELINE_ID);
143
+ const actionId = Number(process.env.BUDDY_ACTION_ID);
144
+ const executionId = Number(process.env.BUDDY_EXECUTION_ID);
145
+ return {
146
+ ci: ciInfo_js_1.CI.BUDDY,
147
+ branch,
148
+ commit,
149
+ baseCommit,
150
+ pipelineName: process.env.BUDDY_PIPELINE_NAME,
151
+ pipelineId: Number.isNaN(pipelineId) ? undefined : pipelineId,
152
+ actionId: Number.isNaN(actionId) ? undefined : actionId,
153
+ executionId: Number.isNaN(executionId) ? undefined : executionId,
154
+ invokerId: Number.isNaN(invokerId) ? undefined : invokerId,
155
+ commitDetails: await getCommitDetails(commit),
156
+ };
157
+ }
158
+ if (isGithubAction) {
159
+ const isPR = process.env.GITHUB_EVENT_NAME === 'pull_request';
160
+ const branch = forceBranch || isPR
161
+ ? process.env.GITHUB_HEAD_REF
162
+ : process.env.GITHUB_REF_NAME;
163
+ const commit = forceCommit || isPR
164
+ ? await getGithubPullRequestCommit()
165
+ : process.env.GITHUB_SHA;
166
+ const baseCommit = forceBaseCommit || isPR
167
+ ? await getBaseCommit(baseBranch, branch, true)
168
+ : undefined;
169
+ return {
170
+ ci: ciInfo_js_1.CI.GITHUB_ACTION,
171
+ branch,
172
+ commit,
173
+ baseCommit,
174
+ commitDetails: await getCommitDetails(commit),
175
+ };
176
+ }
177
+ if (isCircleCI) {
178
+ const isPR = process.env.CIRCLE_PULL_REQUEST;
179
+ const branch = forceBranch || process.env.CIRCLE_BRANCH;
180
+ const commit = forceCommit || process.env.CIRCLE_SHA1;
181
+ const baseCommit = forceBaseCommit || isPR
182
+ ? await getBaseCommit(baseBranch, branch)
183
+ : undefined;
184
+ return {
185
+ ci: ciInfo_js_1.CI.CIRCLE_CI,
186
+ branch: process.env.CIRCLE_BRANCH,
187
+ commit,
188
+ baseCommit,
189
+ commitDetails: await getCommitDetails(commit),
190
+ };
191
+ }
192
+ const branch = forceBranch || (await getBranchName());
193
+ const commit = forceCommit || (await getCommitHash());
194
+ return {
195
+ ci: ciInfo_js_1.CI.NONE,
196
+ branch,
197
+ commit,
198
+ baseCommit: branch && branch !== baseBranch
199
+ ? forceBaseCommit || (await getBaseCommit(baseBranch, branch))
200
+ : undefined,
201
+ commitDetails: await getCommitDetails(commit),
202
+ };
203
+ }
204
+ function logCiInfo(ciInfo) {
205
+ output_1.default.normal((0, texts_1.TXT_CI_INFO)(ciInfo));
206
+ }