@hooklink/cli 0.1.16 → 0.1.19

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.
@@ -5,6 +5,7 @@ export declare class HttpForwarder {
5
5
  forward(request: WSRequestMessage): Promise<WSResponseMessage>;
6
6
  private filterHeaders;
7
7
  private sanitizeHeaders;
8
+ private rewriteCookieDomains;
8
9
  private getLocalOrigins;
9
10
  private rewriteUrls;
10
11
  private rewriteUrl;
@@ -1 +1 @@
1
- {"version":3,"file":"http-forwarder.d.ts","sourceRoot":"","sources":["../../src/core/http-forwarder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAyC/D,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,EAAE,MAAM;IAIvB,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+FpE,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,UAAU;IAUlB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAGhC"}
1
+ {"version":3,"file":"http-forwarder.d.ts","sourceRoot":"","sources":["../../src/core/http-forwarder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAyC/D,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,EAAE,MAAM;IAIvB,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuGpE,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,UAAU;IAiBlB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAGhC"}
@@ -91,9 +91,13 @@ class HttpForwarder {
91
91
  }
92
92
  // Rewrite Location header for redirects
93
93
  const sanitizedHeaders = this.sanitizeHeaders(response.headers);
94
- if (remoteOrigin && sanitizedHeaders['location']) {
94
+ if (remoteOrigin && typeof sanitizedHeaders['location'] === 'string') {
95
95
  sanitizedHeaders['location'] = this.rewriteUrl(sanitizedHeaders['location'], remoteOrigin);
96
96
  }
97
+ // Rewrite Set-Cookie domain attributes to match the tunnel host
98
+ if (remoteHost && sanitizedHeaders['set-cookie']) {
99
+ sanitizedHeaders['set-cookie'] = this.rewriteCookieDomains(sanitizedHeaders['set-cookie'], remoteHost);
100
+ }
97
101
  // Return response with appropriate encoding
98
102
  return {
99
103
  type: 'response',
@@ -148,11 +152,38 @@ class HttpForwarder {
148
152
  sanitized[key] = value;
149
153
  }
150
154
  else if (Array.isArray(value)) {
151
- sanitized[key] = value.join(', ');
155
+ // Keep set-cookie as array — joining with ", " breaks cookies
156
+ if (key.toLowerCase() === 'set-cookie') {
157
+ sanitized[key] = value.map(String);
158
+ }
159
+ else {
160
+ sanitized[key] = value.join(', ');
161
+ }
152
162
  }
153
163
  }
154
164
  return sanitized;
155
165
  }
166
+ rewriteCookieDomains(cookies, remoteHost) {
167
+ const cookieArray = Array.isArray(cookies) ? cookies : [cookies];
168
+ const localHost = new URL(this.targetUrl).hostname;
169
+ // Remote host without port (cookie domain must not have port)
170
+ const remoteDomain = remoteHost.split(':')[0];
171
+ return cookieArray.map((cookie) => {
172
+ // Replace domain=localhost (or the local hostname) with the tunnel domain
173
+ let rewritten = cookie.replace(/domain=([^;,\s]+)/gi, (_match, domain) => {
174
+ const d = domain.toLowerCase();
175
+ if (d === localHost || d === `.${localHost}` || d === 'localhost' || d === '.localhost') {
176
+ return `domain=${remoteDomain}`;
177
+ }
178
+ return _match;
179
+ });
180
+ // If cookie has no domain attribute, it defaults to the request host — which is
181
+ // already the tunnel host on the browser side, so no change needed.
182
+ // Remove Secure flag if tunnel is not HTTPS (rare but safe)
183
+ // Keep Secure flag if it was set — the tunnel typically uses HTTPS.
184
+ return rewritten;
185
+ });
186
+ }
156
187
  getLocalOrigins() {
157
188
  const parsed = new URL(this.targetUrl);
158
189
  const origins = [parsed.origin];
@@ -165,15 +196,18 @@ class HttpForwarder {
165
196
  }
166
197
  rewriteUrls(body, remoteOrigin) {
167
198
  const origins = this.getLocalOrigins();
168
- // JSON-escaped version of remote origin (e.g., https:\/\/app-user.hooklink.net)
169
199
  const escapedRemoteOrigin = remoteOrigin.replace(/\//g, '\\/');
200
+ const encodedRemoteOrigin = encodeURIComponent(remoteOrigin);
170
201
  let result = body;
171
202
  for (const origin of origins) {
172
- // Replace plain URLs: https://localhost:9001
203
+ // Replace plain URLs: http://localhost:9001
173
204
  result = result.split(origin).join(remoteOrigin);
174
- // Replace JSON-escaped URLs: https:\/\/localhost:9001
205
+ // Replace JSON-escaped URLs: http:\/\/localhost:9001
175
206
  const escapedOrigin = origin.replace(/\//g, '\\/');
176
207
  result = result.split(escapedOrigin).join(escapedRemoteOrigin);
208
+ // Replace URL-encoded URLs: http%3A%2F%2Flocalhost%3A9001
209
+ const encodedOrigin = encodeURIComponent(origin);
210
+ result = result.split(encodedOrigin).join(encodedRemoteOrigin);
177
211
  }
178
212
  return result;
179
213
  }
@@ -184,7 +218,14 @@ class HttpForwarder {
184
218
  return remoteOrigin + url.slice(origin.length);
185
219
  }
186
220
  }
187
- return url;
221
+ // Also rewrite URL-encoded origins inside query strings
222
+ const encodedRemoteOrigin = encodeURIComponent(remoteOrigin);
223
+ let result = url;
224
+ for (const origin of origins) {
225
+ const encodedOrigin = encodeURIComponent(origin);
226
+ result = result.split(encodedOrigin).join(encodedRemoteOrigin);
227
+ }
228
+ return result;
188
229
  }
189
230
  setTargetUrl(url) {
190
231
  this.targetUrl = url;
@@ -1 +1 @@
1
- {"version":3,"file":"http-forwarder.js","sourceRoot":"","sources":["../../src/core/http-forwarder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-forwarder.js","sourceRoot":"","sources":["../../src/core/http-forwarder.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA6C;AAE7C,4CAAyC;AACzC,4CAAmD;AAEnD,MAAM,4BAA4B,GAAG;IACnC,UAAU;IACV,UAAU;IACV,UAAU;IACV,SAAS;IACT,4BAA4B;IAC5B,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;CACtB,CAAC;AAEF,MAAM,0BAA0B,GAAG;IACjC,SAAS;IACT,oBAAoB;IACpB,0BAA0B;IAC1B,4BAA4B;IAC5B,mBAAmB;IACnB,0BAA0B;IAC1B,8BAA8B;CAC/B,CAAC;AAEF,SAAS,mBAAmB,CAAC,WAA+B;IAC1D,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,OAAO,4BAA4B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,iBAAiB,CAAC,WAA+B;IACxD,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAa,aAAa;IAGxB,YAAY,SAAiB;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAyB;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,mCAAmC;YACnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACrD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,wCAAwC;YACxC,IAAI,WAAW,GAAgC,OAAO,CAAC,IAAI,CAAC;YAC5D,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACtD,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC;YAED,kDAAkD;YAClD,MAAM,QAAQ,GAA0B,MAAM,IAAA,eAAK,EAAC;gBAClD,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACnB,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC5C,IAAI,EAAE,WAAW;gBACjB,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,yBAAyB;gBACrD,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,aAAa;aAC5B,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAExC,kBAAkB;YAClB,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9D,eAAM,CAAC,KAAK,CAAC,kBAAkB,QAAQ,IAAI,CAAC,CAAC;YAE7C,kCAAkC;YAClC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAE9C,CAAC;YACd,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnD,CAAC,CAAC,QAAQ,CAAC,IAAI;gBACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;YAExD,2DAA2D;YAC3D,MAAM,UAAU,GACd,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAC7E,MAAM,WAAW,GACf,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC;YAC1F,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW,MAAM,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAE1E,sDAAsD;YACtD,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,IAAI,YAAY,IAAI,iBAAiB,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACtE,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACpD,CAAC;YAED,wCAAwC;YACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,YAAY,IAAI,OAAO,gBAAgB,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACrE,gBAAgB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAC5C,gBAAgB,CAAC,UAAU,CAAC,EAC5B,YAAY,CACb,CAAC;YACJ,CAAC;YAED,gEAAgE;YAChE,IAAI,UAAU,IAAI,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjD,gBAAgB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,oBAAoB,CACxD,gBAAgB,CAAC,YAAY,CAAC,EAC9B,UAAU,CACX,CAAC;YACJ,CAAC;YAED,4CAA4C;YAC5C,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,UAAU,EAAE,QAAQ,CAAC,MAAM;gBAC3B,OAAO,EAAE,gBAAgB;gBACzB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO;gBAC1D,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;aACzC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAA,yBAAgB,EAAC,KAAK,CAAC,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,eAAM,CAAC,KAAK,CACV,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,KAAK,QAAQ,KAAK,CACzG,CAAC;YAEF,wBAAwB;YACxB,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE,8CAA8C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;iBAClH,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,aAAa,CACnB,OAA+B;QAE/B,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG;YAClB,MAAM;YACN,YAAY;YACZ,SAAS;YACT,iBAAiB;YACjB,mBAAmB;YACnB,uBAAuB;YACvB,0BAA0B;SAC3B,CAAC;QAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC7C,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,eAAe,CAAC,OAAgB;QACtC,MAAM,SAAS,GAAsC,EAAE,CAAC;QACxD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QAEtE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAkC,CAAC,EAAE,CAAC;YAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACzB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,8DAA8D;gBAC9D,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,YAAY,EAAE,CAAC;oBACvC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,oBAAoB,CAC1B,OAA0B,EAC1B,UAAkB;QAElB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC;QACnD,8DAA8D;QAC9D,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9C,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAChC,0EAA0E;YAC1E,IAAI,SAAS,GAAG,MAAM,CAAC,OAAO,CAC5B,qBAAqB,EACrB,CAAC,MAAM,EAAE,MAAc,EAAE,EAAE;gBACzB,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC/B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;oBACxF,OAAO,UAAU,YAAY,EAAE,CAAC;gBAClC,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,CACF,CAAC;YAEF,gFAAgF;YAChF,oEAAoE;YAEpE,4DAA4D;YAC5D,oEAAoE;YAEpE,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe;QACrB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEhC,wDAAwD;QACxD,0EAA0E;QAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,MAAM,SAAS,GAAG,GAAG,WAAW,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAExB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,YAAoB;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC7D,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,4CAA4C;YAC5C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjD,qDAAqD;YACrD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC/D,0DAA0D;YAC1D,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,UAAU,CAAC,GAAW,EAAE,YAAoB;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,OAAO,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,wDAAwD;QACxD,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC7D,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,GAAW;QACtB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACvB,CAAC;CACF;AA5OD,sCA4OC"}
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ process.on('uncaughtException', async (error) => {
14
14
  await (0, sentry_1.flushSentry)();
15
15
  process.exit(1);
16
16
  });
17
+ const child_process_1 = require("child_process");
17
18
  const commander_1 = require("commander");
18
19
  const chalk_1 = __importDefault(require("chalk"));
19
20
  const login_1 = require("./commands/login");
@@ -23,38 +24,57 @@ const status_1 = require("./commands/status");
23
24
  const endpoints_1 = require("./commands/endpoints");
24
25
  const logs_1 = require("./commands/logs");
25
26
  const config_1 = require("./commands/config");
27
+ const auto_update_1 = require("./utils/auto-update");
26
28
  const package_json_1 = __importDefault(require("../package.json"));
27
- const program = new commander_1.Command();
28
- program
29
- .name('hooklink')
30
- .description('HookLink CLI - Forward webhooks to your local development machine')
31
- .version(package_json_1.default.version)
32
- .exitOverride();
33
- // ASCII art banner
34
- const banner = `
29
+ async function main() {
30
+ // Auto-update check (skip for --version and --help)
31
+ const args = process.argv.slice(2);
32
+ const skipUpdate = args.includes('--version') || args.includes('-V') ||
33
+ args.includes('--help') || args.includes('-h') || args.length === 0;
34
+ if (!skipUpdate && !process.env.HOOKLINK_SKIP_UPDATE) {
35
+ const updated = await (0, auto_update_1.checkForUpdates)(package_json_1.default.version);
36
+ if (updated) {
37
+ // Re-exec with the updated binary
38
+ (0, child_process_1.execFileSync)(process.argv[0], process.argv.slice(1), {
39
+ stdio: 'inherit',
40
+ env: { ...process.env, HOOKLINK_SKIP_UPDATE: '1' },
41
+ });
42
+ return;
43
+ }
44
+ }
45
+ const program = new commander_1.Command();
46
+ program
47
+ .name('hooklink')
48
+ .description('HookLink CLI - Forward webhooks to your local development machine')
49
+ .version(package_json_1.default.version)
50
+ .exitOverride();
51
+ // ASCII art banner
52
+ const banner = `
35
53
  ${chalk_1.default.cyan('╦ ╦╔═╗╔═╗╦╔═╦ ╦╔╗╔╦╔═')}
36
54
  ${chalk_1.default.cyan('╠═╣║ ║║ ║╠╩╗║ ║║║║╠╩╗')}
37
55
  ${chalk_1.default.cyan('╩ ╩╚═╝╚═╝╩ ╩╩═╝╩╝╚╝╩ ╩')}
38
56
  ${chalk_1.default.gray(`Forward webhooks to localhost v${package_json_1.default.version}`)}
39
57
  `;
40
- program.addHelpText('beforeAll', banner);
41
- // Register commands
42
- program.addCommand(login_1.loginCommand);
43
- program.addCommand(logout_1.logoutCommand);
44
- program.addCommand(connect_1.connectCommand);
45
- program.addCommand(status_1.statusCommand);
46
- program.addCommand(endpoints_1.endpointsCommand);
47
- program.addCommand(logs_1.logsCommand);
48
- program.addCommand(config_1.configCommand);
49
- // Parse arguments
50
- try {
51
- program.parse(process.argv);
52
- // Show help if no command provided
53
- if (!process.argv.slice(2).length) {
54
- program.outputHelp();
58
+ program.addHelpText('beforeAll', banner);
59
+ // Register commands
60
+ program.addCommand(login_1.loginCommand);
61
+ program.addCommand(logout_1.logoutCommand);
62
+ program.addCommand(connect_1.connectCommand);
63
+ program.addCommand(status_1.statusCommand);
64
+ program.addCommand(endpoints_1.endpointsCommand);
65
+ program.addCommand(logs_1.logsCommand);
66
+ program.addCommand(config_1.configCommand);
67
+ // Parse arguments
68
+ try {
69
+ program.parse(process.argv);
70
+ // Show help if no command provided
71
+ if (!process.argv.slice(2).length) {
72
+ program.outputHelp();
73
+ }
74
+ }
75
+ catch {
76
+ // exitOverride throws on --help / --version — ignore
55
77
  }
56
78
  }
57
- catch {
58
- // exitOverride throws on --help / --version — ignore
59
- }
79
+ main();
60
80
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,2CAA2E;AAE3E,IAAA,mBAAU,GAAE,CAAC;AAEb,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,IAAA,yBAAgB,EAAC,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC9C,IAAA,yBAAgB,EAAC,KAAK,CAAC,CAAC;IACxB,MAAM,IAAA,oBAAW,GAAE,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,yCAAoC;AACpC,kDAA0B;AAC1B,4CAAgD;AAChD,8CAAkD;AAClD,gDAAoD;AACpD,8CAAkD;AAClD,oDAAwD;AACxD,0CAA8C;AAC9C,8CAAkD;AAClD,mEAAkC;AAElC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,mEAAmE,CAAC;KAChF,OAAO,CAAC,sBAAG,CAAC,OAAO,CAAC;KACpB,YAAY,EAAE,CAAC;AAElB,mBAAmB;AACnB,MAAM,MAAM,GAAG;EACb,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC;EACpC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC;EACpC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC;EACpC,eAAK,CAAC,IAAI,CAAC,mCAAmC,sBAAG,CAAC,OAAO,EAAE,CAAC;CAC7D,CAAC;AAEF,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEzC,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,4BAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAElC,kBAAkB;AAClB,IAAI,CAAC;IACH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,mCAAmC;IACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAAC,MAAM,CAAC;IACP,qDAAqD;AACvD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ export interface WSResponseMessage {
28
28
  type: 'response';
29
29
  requestId: string;
30
30
  statusCode: number;
31
- headers: Record<string, string>;
31
+ headers: Record<string, string | string[]>;
32
32
  body?: string;
33
33
  bodyEncoding?: 'utf8' | 'base64';
34
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAGD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,CAAC;AAGnB,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,SAAS,GAAG,QAAQ,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAGD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,CAAC;AAGnB,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,SAAS,GAAG,QAAQ,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export declare function checkForUpdates(currentVersion: string): Promise<boolean>;
2
+ //# sourceMappingURL=auto-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../../src/utils/auto-update.ts"],"names":[],"mappings":"AA2BA,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAqB9E"}
@@ -0,0 +1,51 @@
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.checkForUpdates = checkForUpdates;
7
+ const child_process_1 = require("child_process");
8
+ const https_1 = __importDefault(require("https"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const PACKAGE_NAME = '@hooklink/cli';
11
+ const REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
12
+ const TIMEOUT_MS = 5000;
13
+ function fetchLatestVersion() {
14
+ return new Promise((resolve) => {
15
+ const req = https_1.default.get(REGISTRY_URL, { timeout: TIMEOUT_MS }, (res) => {
16
+ let data = '';
17
+ res.on('data', (chunk) => (data += chunk));
18
+ res.on('end', () => {
19
+ try {
20
+ const json = JSON.parse(data);
21
+ resolve(json.version || null);
22
+ }
23
+ catch {
24
+ resolve(null);
25
+ }
26
+ });
27
+ });
28
+ req.on('error', () => resolve(null));
29
+ req.on('timeout', () => { req.destroy(); resolve(null); });
30
+ });
31
+ }
32
+ async function checkForUpdates(currentVersion) {
33
+ try {
34
+ const latest = await fetchLatestVersion();
35
+ if (!latest || latest === currentVersion)
36
+ return false;
37
+ console.log(chalk_1.default.yellow(`\n Update available: v${currentVersion} → v${latest}`));
38
+ console.log(chalk_1.default.gray(' Updating...'));
39
+ (0, child_process_1.execSync)(`npm install -g ${PACKAGE_NAME}@${latest}`, {
40
+ stdio: 'pipe',
41
+ timeout: 60000,
42
+ });
43
+ console.log(chalk_1.default.green(` Updated to v${latest}\n`));
44
+ return true;
45
+ }
46
+ catch {
47
+ // Update failed — continue with current version
48
+ return false;
49
+ }
50
+ }
51
+ //# sourceMappingURL=auto-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../../src/utils/auto-update.ts"],"names":[],"mappings":";;;;;AA2BA,0CAqBC;AAhDD,iDAAyC;AACzC,kDAA0B;AAC1B,kDAA0B;AAE1B,MAAM,YAAY,GAAG,eAAe,CAAC;AACrC,MAAM,YAAY,GAAG,8BAA8B,YAAY,SAAS,CAAC;AACzE,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,SAAS,kBAAkB;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YACnE,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;YAC3C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,cAAsB;IAC1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,cAAc;YAAE,OAAO,KAAK,CAAC;QAEvD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CAAC,0BAA0B,cAAc,OAAO,MAAM,EAAE,CAAC,CACtE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAEzC,IAAA,wBAAQ,EAAC,kBAAkB,YAAY,IAAI,MAAM,EAAE,EAAE;YACnD,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iBAAiB,MAAM,IAAI,CAAC,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hooklink/cli",
3
- "version": "0.1.16",
3
+ "version": "0.1.19",
4
4
  "description": "HookLink CLI - Forward webhooks to your local development machine",
5
5
  "main": "dist/index.js",
6
6
  "bin": {