zephyr-agent 0.0.36 → 0.0.37

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.
package/dist/index.d.ts CHANGED
@@ -6,5 +6,6 @@ export { logFn } from './lib/logging/ze-log-event';
6
6
  export { buildAssetsMap, type ZeBuildAssetsMap, } from './lib/transformers/ze-build-assets-map';
7
7
  export { zeBuildDashData } from './lib/transformers/ze-build-dash-data';
8
8
  export { zeBuildAssets } from './lib/transformers/ze-build-assets';
9
+ export { DEFAULT_AUTH_COMPLETION_TIMEOUT_MS, TOKEN_EXPIRY } from './lib/auth/auth-flags';
9
10
  export { ZephyrEngine, is_zephyr_dependency_pair, type ZeDependencyPair, type ZephyrDependencies, type ZephyrEngineOptions, readPackageJson, } from './zephyr-engine';
10
11
  export type { ZeResolvedDependency } from './zephyr-engine/resolve_remote_dependency';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readPackageJson = exports.is_zephyr_dependency_pair = exports.ZephyrEngine = exports.zeBuildAssets = exports.zeBuildDashData = exports.buildAssetsMap = exports.logFn = exports.ze_log = exports.ZeErrors = exports.ZephyrError = exports.savePartialAssetMap = exports.removePartialAssetMap = exports.getPartialAssetMap = exports.resolveIndexHtml = exports.onIndexHtmlResolved = void 0;
3
+ exports.readPackageJson = exports.is_zephyr_dependency_pair = exports.ZephyrEngine = exports.TOKEN_EXPIRY = exports.DEFAULT_AUTH_COMPLETION_TIMEOUT_MS = exports.zeBuildAssets = exports.zeBuildDashData = exports.buildAssetsMap = exports.logFn = exports.ze_log = exports.ZeErrors = exports.ZephyrError = exports.savePartialAssetMap = exports.removePartialAssetMap = exports.getPartialAssetMap = exports.resolveIndexHtml = exports.onIndexHtmlResolved = void 0;
4
4
  // hack for angular
5
5
  var resolve_index_html_1 = require("./lib/hacks/resolve-index-html");
6
6
  Object.defineProperty(exports, "onIndexHtmlResolved", { enumerable: true, get: function () { return resolve_index_html_1.onIndexHtmlResolved; } });
@@ -26,6 +26,10 @@ var ze_build_dash_data_1 = require("./lib/transformers/ze-build-dash-data");
26
26
  Object.defineProperty(exports, "zeBuildDashData", { enumerable: true, get: function () { return ze_build_dash_data_1.zeBuildDashData; } });
27
27
  var ze_build_assets_1 = require("./lib/transformers/ze-build-assets");
28
28
  Object.defineProperty(exports, "zeBuildAssets", { enumerable: true, get: function () { return ze_build_assets_1.zeBuildAssets; } });
29
+ // Auth related exports
30
+ var auth_flags_1 = require("./lib/auth/auth-flags");
31
+ Object.defineProperty(exports, "DEFAULT_AUTH_COMPLETION_TIMEOUT_MS", { enumerable: true, get: function () { return auth_flags_1.DEFAULT_AUTH_COMPLETION_TIMEOUT_MS; } });
32
+ Object.defineProperty(exports, "TOKEN_EXPIRY", { enumerable: true, get: function () { return auth_flags_1.TOKEN_EXPIRY; } });
29
33
  // Zephyr Edge is the main class which should be used
30
34
  var zephyr_engine_1 = require("./zephyr-engine");
31
35
  Object.defineProperty(exports, "ZephyrEngine", { enumerable: true, get: function () { return zephyr_engine_1.ZephyrEngine; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mBAAmB;AACnB,qEAAuF;AAA9E,yHAAA,mBAAmB,OAAA;AAAE,sHAAA,gBAAgB,OAAA;AAC9C,sBAAsB;AACtB,4EAI+C;AAH7C,wHAAA,kBAAkB,OAAA;AAClB,2HAAA,qBAAqB,OAAA;AACrB,yHAAA,mBAAmB,OAAA;AAGrB,SAAS;AACT,uCAAqD;AAA5C,qGAAA,WAAW,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAE9B,SAAS;AACT,yCAAuC;AAA9B,iGAAA,MAAM,OAAA;AACf,2DAAmD;AAA1C,qGAAA,KAAK,OAAA;AAEd,uBAAuB;AACvB,8EAGgD;AAF9C,qHAAA,cAAc,OAAA;AAGhB,4EAAwE;AAA/D,qHAAA,eAAe,OAAA;AACxB,sEAAmE;AAA1D,gHAAA,aAAa,OAAA;AAEtB,qDAAqD;AACrD,iDAOyB;AANvB,6GAAA,YAAY,OAAA;AACZ,0HAAA,yBAAyB,OAAA;AAIzB,gHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mBAAmB;AACnB,qEAAuF;AAA9E,yHAAA,mBAAmB,OAAA;AAAE,sHAAA,gBAAgB,OAAA;AAC9C,sBAAsB;AACtB,4EAI+C;AAH7C,wHAAA,kBAAkB,OAAA;AAClB,2HAAA,qBAAqB,OAAA;AACrB,yHAAA,mBAAmB,OAAA;AAGrB,SAAS;AACT,uCAAqD;AAA5C,qGAAA,WAAW,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAE9B,SAAS;AACT,yCAAuC;AAA9B,iGAAA,MAAM,OAAA;AACf,2DAAmD;AAA1C,qGAAA,KAAK,OAAA;AAEd,uBAAuB;AACvB,8EAGgD;AAF9C,qHAAA,cAAc,OAAA;AAGhB,4EAAwE;AAA/D,qHAAA,eAAe,OAAA;AACxB,sEAAmE;AAA1D,gHAAA,aAAa,OAAA;AAEtB,uBAAuB;AACvB,oDAAyF;AAAhF,gIAAA,kCAAkC,OAAA;AAAE,0GAAA,YAAY,OAAA;AAEzD,qDAAqD;AACrD,iDAOyB;AANvB,6GAAA,YAAY,OAAA;AACZ,0HAAA,yBAAyB,OAAA;AAIzB,gHAAA,eAAe,OAAA"}
@@ -0,0 +1,18 @@
1
+ /** Constants and helpers for authentication configuration */
2
+ /** Default timeout for authentication prompt in milliseconds */
3
+ export declare const DEFAULT_AUTH_PROMPT_TIMEOUT_MS = 10000;
4
+ /** Default timeout for authentication completion in milliseconds */
5
+ export declare const DEFAULT_AUTH_COMPLETION_TIMEOUT_MS = 60000;
6
+ /** Token expiration thresholds */
7
+ export declare const TOKEN_EXPIRY: {
8
+ /**
9
+ * Short validity check (in seconds) Used to determine if a token is still valid for
10
+ * immediate use
11
+ */
12
+ SHORT_VALIDITY_CHECK_SEC: number;
13
+ /**
14
+ * Proactive refresh threshold (in seconds) If token will expire within this time,
15
+ * proactively refresh it
16
+ */
17
+ PROACTIVE_REFRESH_THRESHOLD_SEC: number;
18
+ };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /** Constants and helpers for authentication configuration */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TOKEN_EXPIRY = exports.DEFAULT_AUTH_COMPLETION_TIMEOUT_MS = exports.DEFAULT_AUTH_PROMPT_TIMEOUT_MS = void 0;
5
+ /** Default timeout for authentication prompt in milliseconds */
6
+ exports.DEFAULT_AUTH_PROMPT_TIMEOUT_MS = 10000; // 10 seconds
7
+ /** Default timeout for authentication completion in milliseconds */
8
+ exports.DEFAULT_AUTH_COMPLETION_TIMEOUT_MS = 60000; // 1 minute
9
+ /** Token expiration thresholds */
10
+ exports.TOKEN_EXPIRY = {
11
+ /**
12
+ * Short validity check (in seconds) Used to determine if a token is still valid for
13
+ * immediate use
14
+ */
15
+ SHORT_VALIDITY_CHECK_SEC: 60, // 1 minute buffer
16
+ /**
17
+ * Proactive refresh threshold (in seconds) If token will expire within this time,
18
+ * proactively refresh it
19
+ */
20
+ PROACTIVE_REFRESH_THRESHOLD_SEC: 24 * 60 * 60, // 24 hours
21
+ };
22
+ //# sourceMappingURL=auth-flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-flags.js","sourceRoot":"","sources":["../../../src/lib/auth/auth-flags.ts"],"names":[],"mappings":";AAAA,6DAA6D;;;AAE7D,gEAAgE;AACnD,QAAA,8BAA8B,GAAG,KAAK,CAAC,CAAC,aAAa;AAElE,oEAAoE;AACvD,QAAA,kCAAkC,GAAG,KAAK,CAAC,CAAC,WAAW;AAEpE,kCAAkC;AACrB,QAAA,YAAY,GAAG;IAC1B;;;OAGG;IACH,wBAAwB,EAAE,EAAE,EAAE,kBAAkB;IAEhD;;;OAGG;IACH,+BAA+B,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,WAAW;CAC3D,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Check if the user is already authenticated. If not, open a browser window to
3
- * authenticate. Display a message to the console.
2
+ * Check if the user is already authenticated. If not, ask if they want to open a browser
3
+ * to authenticate. Display a message to the console.
4
4
  *
5
5
  * @returns The token as a string.
6
6
  */
@@ -13,3 +13,9 @@ export declare function checkAuth(): Promise<string>;
13
13
  * @returns Boolean indicating if the token is still valid.
14
14
  */
15
15
  export declare function isTokenStillValid(token: string, gap?: number): boolean;
16
+ /**
17
+ * Initiates user authentication and handles token storage.
18
+ *
19
+ * @returns The new token as a string.
20
+ */
21
+ export declare function authenticateUser(): Promise<string>;
@@ -2,8 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.checkAuth = checkAuth;
4
4
  exports.isTokenStillValid = isTokenStillValid;
5
+ exports.authenticateUser = authenticateUser;
5
6
  const tslib_1 = require("tslib");
6
7
  const jose = tslib_1.__importStar(require("jose"));
8
+ const readline = tslib_1.__importStar(require("readline"));
7
9
  const zephyr_edge_contract_1 = require("zephyr-edge-contract");
8
10
  const ze_log_event_1 = require("../logging/ze-log-event");
9
11
  const websocket_1 = require("./websocket");
@@ -13,9 +15,11 @@ const logging_1 = require("../logging");
13
15
  const picocolor_1 = require("../logging/picocolor");
14
16
  const ze_http_request_1 = require("../http/ze-http-request");
15
17
  const errors_1 = require("../errors");
18
+ const auth_flags_1 = require("./auth-flags");
19
+ const debug_1 = require("../logging/debug");
16
20
  /**
17
- * Check if the user is already authenticated. If not, open a browser window to
18
- * authenticate. Display a message to the console.
21
+ * Check if the user is already authenticated. If not, ask if they want to open a browser
22
+ * to authenticate. Display a message to the console.
19
23
  *
20
24
  * @returns The token as a string.
21
25
  */
@@ -25,18 +29,35 @@ async function checkAuth() {
25
29
  (0, ze_log_event_1.logFn)('debug', 'Token found in environment. Using secret token for authentication.');
26
30
  return secret_token;
27
31
  }
28
- const token = await (0, token_1.getToken)();
29
- if (token) {
32
+ const existingToken = await (0, token_1.getToken)();
33
+ if (existingToken) {
30
34
  // Check if the token has a valid expiration date.
31
- if (isTokenStillValid(token, 60)) {
35
+ if (isTokenStillValid(existingToken, auth_flags_1.TOKEN_EXPIRY.SHORT_VALIDITY_CHECK_SEC)) {
32
36
  (0, logging_1.ze_log)('You are already logged in');
33
- return token;
37
+ return existingToken;
34
38
  }
35
39
  await (0, token_1.removeToken)();
36
40
  }
37
41
  // No valid token found; initiate authentication.
38
- const newToken = await authenticateUser();
39
- (0, logging_1.ze_log)('You are logged in');
42
+ (0, ze_log_event_1.logFn)('', `${(0, picocolor_1.yellow)('Authentication required')} - You need to log in to Zephyr Cloud`);
43
+ // Get authentication URL first
44
+ const sessionKey = generateSessionKey();
45
+ const authUrl = await getAuthenticationURL(sessionKey);
46
+ // Prompt user to continue
47
+ await promptForAuthAction(authUrl);
48
+ // Handle browser opening
49
+ try {
50
+ await openUrl(authUrl);
51
+ (0, ze_log_event_1.logFn)('', `${(0, picocolor_1.blue)('⏳')} Waiting for authentication...\n`);
52
+ }
53
+ catch (error) {
54
+ // If browser failed to open, fall back to manual
55
+ fallbackManualLogin(authUrl);
56
+ }
57
+ // Wait for token regardless of method
58
+ const newToken = await waitForAccessToken(sessionKey);
59
+ await (0, token_1.saveToken)(newToken);
60
+ (0, ze_log_event_1.logFn)('', `${(0, picocolor_1.green)('✓')} You are now logged in to Zephyr Cloud`);
40
61
  return newToken;
41
62
  }
42
63
  /**
@@ -61,6 +82,33 @@ function isTokenStillValid(token, gap = 0) {
61
82
  return false;
62
83
  }
63
84
  }
85
+ /**
86
+ * Prompts the user to choose an authentication action
87
+ */
88
+ async function promptForAuthAction(authUrl) {
89
+ const rl = readline.createInterface({
90
+ input: process.stdin,
91
+ output: process.stdout,
92
+ });
93
+ return new Promise((resolve) => {
94
+ rl.question(`${debug_1.brightBlueBgName} This is the authentication URL:
95
+ ${debug_1.brightBlueBgName}
96
+ ${debug_1.brightBlueBgName} ${authUrl}
97
+ ${debug_1.brightBlueBgName}
98
+ ${debug_1.brightBlueBgName} Please hit ${(0, picocolor_1.bold)((0, picocolor_1.white)('Enter'))} to open it up on your browser: `, () => {
99
+ rl.close();
100
+ resolve();
101
+ });
102
+ });
103
+ }
104
+ /** Helper to display manual login instructions with highlighted URL */
105
+ function fallbackManualLogin(url) {
106
+ (0, ze_log_event_1.logFn)('', '');
107
+ (0, ze_log_event_1.logFn)('', `An unexpected error happened when opening the browser.`);
108
+ (0, ze_log_event_1.logFn)('', `${(0, picocolor_1.yellow)('Please open this URL in your browser to log in:')}`);
109
+ (0, ze_log_event_1.logFn)('', url);
110
+ (0, ze_log_event_1.logFn)('', `${(0, picocolor_1.blue)('⏳')} Waiting for you to complete authentication in browser...`);
111
+ }
64
112
  /** Opens the given URL in the default browser. */
65
113
  async function openUrl(url) {
66
114
  // Lazy loads `open` module
@@ -72,21 +120,6 @@ function generateSessionKey() {
72
120
  return encodeURIComponent(Math.random().toString(36).substring(2, 15) +
73
121
  Math.random().toString(36).substring(2, 15));
74
122
  }
75
- /** Tries to log in the user and get back the websocket reply containing the access token. */
76
- async function getPersonalAccessTokenFromWebsocket() {
77
- const sessionKey = generateSessionKey();
78
- // Attempts to open the browser to authenticate the user.
79
- const authUrl = await getAuthenticationURL(sessionKey);
80
- try {
81
- await openUrl(authUrl);
82
- (0, ze_log_event_1.logFn)('debug', 'Opening browser for authentication...');
83
- }
84
- catch (error) {
85
- (0, logging_1.ze_log)(error);
86
- (0, ze_log_event_1.logFn)('debug', `Could not open browser to authenticate with ZephyrCloud. Please open the link below to authenticate:\n\n${(0, picocolor_1.white)(authUrl)}\n`);
87
- }
88
- return await waitForAccessToken(sessionKey);
89
- }
90
123
  /** Generates the URL to authenticate the user. */
91
124
  async function getAuthenticationURL(state) {
92
125
  const [ok, cause, data] = await ze_http_request_1.ZeHttpRequest.from({
@@ -108,35 +141,60 @@ async function getAuthenticationURL(state) {
108
141
  * @returns The new token as a string.
109
142
  */
110
143
  async function authenticateUser() {
111
- const token = await getPersonalAccessTokenFromWebsocket();
112
- await (0, token_1.saveToken)(token);
113
- return token;
144
+ return await checkAuth();
114
145
  }
115
146
  /** Waits for the access token to be received from the websocket. */
116
147
  async function waitForAccessToken(sessionKey) {
117
148
  const { promise, resolve, reject } = (0, zephyr_edge_contract_1.PromiseWithResolvers)();
118
149
  const socket = (0, websocket_1.createSocket)((0, zephyr_edge_contract_1.ZEPHYR_API_ENDPOINT)());
150
+ let timeoutHandle = null;
151
+ // Helper to properly cleanup socket
152
+ const cleanupSocket = () => {
153
+ if (timeoutHandle) {
154
+ clearTimeout(timeoutHandle);
155
+ timeoutHandle = null;
156
+ }
157
+ socket.removeAllListeners();
158
+ socket.disconnect();
159
+ socket.close();
160
+ };
119
161
  try {
120
- socket.once('access-token', resolve);
162
+ socket.once('access-token', (token) => {
163
+ cleanupSocket();
164
+ resolve(token);
165
+ });
121
166
  // Creating errors outside of the listener closure makes the stack trace point
122
167
  // to waitForAccessToken fn instead of socket.io internals event emitter code.
123
- socket.once('access-token-error', (cause) => reject(new errors_1.ZephyrError(errors_1.ZeErrors.ERR_AUTH_ERROR, {
124
- cause,
125
- message: 'Error getting access token',
126
- })));
127
- socket.once('connect_error', (cause) => reject(new errors_1.ZephyrError(errors_1.ZeErrors.ERR_AUTH_ERROR, {
128
- message: 'Could not connect to socket.',
129
- cause,
130
- })));
168
+ socket.once('access-token-error', (cause) => {
169
+ cleanupSocket();
170
+ reject(new errors_1.ZephyrError(errors_1.ZeErrors.ERR_AUTH_ERROR, {
171
+ cause,
172
+ message: 'Error getting access token',
173
+ }));
174
+ });
175
+ socket.once('connect_error', (cause) => {
176
+ cleanupSocket();
177
+ reject(new errors_1.ZephyrError(errors_1.ZeErrors.ERR_AUTH_ERROR, {
178
+ message: 'Could not connect to socket.',
179
+ cause,
180
+ }));
181
+ });
131
182
  socket.emit('joinAccessTokenRoom', { state: sessionKey });
132
- // The user has 60 seconds to log in through the browser.
133
- setTimeout(reject, 60000, new errors_1.ZephyrError(errors_1.ZeErrors.ERR_AUTH_ERROR, {
134
- message: "Couldn't receive access token in 1 minute.",
135
- }));
183
+ // The user has a specified amount of time to log in through the browser.
184
+ timeoutHandle = setTimeout(() => {
185
+ cleanupSocket();
186
+ reject(new errors_1.ZephyrError(errors_1.ZeErrors.ERR_AUTH_ERROR, {
187
+ message: `Authentication timed out. Couldn't receive access token in ${auth_flags_1.DEFAULT_AUTH_COMPLETION_TIMEOUT_MS / 1000} seconds. Please try again.`,
188
+ }));
189
+ }, auth_flags_1.DEFAULT_AUTH_COMPLETION_TIMEOUT_MS);
136
190
  return await promise;
137
191
  }
192
+ catch (error) {
193
+ cleanupSocket();
194
+ throw error;
195
+ }
138
196
  finally {
139
- socket.close();
197
+ cleanupSocket();
140
198
  }
141
199
  }
142
200
  //# sourceMappingURL=login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/lib/auth/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/lib/auth/login.ts"],"names":[],"mappings":"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"}
@@ -8,5 +8,11 @@ interface ServerToClientEvents {
8
8
  'access-token': (token: string) => void;
9
9
  'access-token-error': (msg: string) => void;
10
10
  }
11
+ /**
12
+ * Creates a new socket.io connection to the specified endpoint
13
+ *
14
+ * @param endpoint The endpoint to connect to
15
+ * @returns A socket.io Socket instance
16
+ */
11
17
  export declare function createSocket(endpoint: string): Socket<ServerToClientEvents, ClientToServerEvents>;
12
18
  export {};
@@ -2,7 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createSocket = createSocket;
4
4
  const socket_io_client_1 = require("socket.io-client");
5
+ /**
6
+ * Creates a new socket.io connection to the specified endpoint
7
+ *
8
+ * @param endpoint The endpoint to connect to
9
+ * @returns A socket.io Socket instance
10
+ */
5
11
  function createSocket(endpoint) {
6
- return (0, socket_io_client_1.io)(endpoint);
12
+ // Set forceNew to ensure a clean connection
13
+ return (0, socket_io_client_1.io)(endpoint, {
14
+ forceNew: true,
15
+ reconnection: false,
16
+ });
7
17
  }
8
18
  //# sourceMappingURL=websocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/lib/auth/websocket.ts"],"names":[],"mappings":";;AAWA,oCAIC;AAfD,uDAA+D;AAW/D,SAAgB,YAAY,CAC1B,QAAgB;IAEhB,OAAO,IAAA,qBAAQ,EAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/lib/auth/websocket.ts"],"names":[],"mappings":";;AAiBA,oCAQC;AAzBD,uDAA+D;AAW/D;;;;;GAKG;AACH,SAAgB,YAAY,CAC1B,QAAgB;IAEhB,4CAA4C;IAC5C,OAAO,IAAA,qBAAQ,EAAC,QAAQ,EAAE;QACxB,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;AACL,CAAC"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zephyr-agent",
3
- "version": "0.0.36",
3
+ "version": "0.0.37",
4
4
  "license": "Apache-2.0",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zephyr-agent",
3
- "version": "0.0.36",
3
+ "version": "0.0.37",
4
4
  "license": "Apache-2.0",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",
@@ -28,7 +28,7 @@
28
28
  "uuid": "^8.3.2",
29
29
  "node-persist": "^4.0.1",
30
30
  "debug": "^4.3.4",
31
- "zephyr-edge-contract": "0.0.36"
31
+ "zephyr-edge-contract": "0.0.37"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/git-url-parse": "^9.0.3",