@framers/agentos-ext-github 0.3.1 → 0.4.1

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.
@@ -3,7 +3,8 @@
3
3
  * carries, the pages of a listing followed through its `Link` header, and the small readers that turn an answer into
4
4
  * typed fields. An answer outside 2xx throws {@link GitHubApiError}, whose message names the status and nothing of
5
5
  * the answer's body and which says whether GitHub refused for a rate limit and when to try again; a call that gets no
6
- * answer throws {@link GitHubNoAnswer}. An answer's body is read under a byte cap.
6
+ * answer by its deadline throws {@link GitHubNoAnswer}, whatever the fetch does with the signal it is handed. An
7
+ * answer's body is read under a byte cap.
7
8
  * @module agentos-ext-github/app/http
8
9
  */
9
10
  /** The REST API version every call pins (`X-GitHub-Api-Version`). */
@@ -90,6 +91,17 @@ export interface CallDeadline {
90
91
  * @param timeoutMs How long the call may take; {@link GITHUB_TIMEOUT_MS} when absent.
91
92
  */
92
93
  export declare function callDeadline(signal: AbortSignal | undefined, timeoutMs?: number): CallDeadline;
94
+ /**
95
+ * Settles as `work` does, or throws the call's {@link GitHubNoAnswer} once its deadline passes or its caller cancels,
96
+ * whichever comes first. A fetch ends its request and its answer's body when the signal it was handed aborts; this
97
+ * holds a call to its deadline also through a fetch that does not. Work still under way at the deadline is left to
98
+ * settle unobserved, and `release` is handed what it answers after, such as a response whose body is to be let go.
99
+ *
100
+ * @param work The request or the body read under way.
101
+ * @param deadline The call's deadline.
102
+ * @param release Takes what `work` answers once the deadline has ended the call.
103
+ */
104
+ export declare function untilDeadline<T>(work: Promise<T>, deadline: CallDeadline, release?: (late: T) => void): Promise<T>;
93
105
  /** A 2xx answer, and its body read under the call's deadline. */
94
106
  export interface GitHubAnswer {
95
107
  readonly response: Response;
@@ -102,7 +114,8 @@ export interface GitHubAnswer {
102
114
  /**
103
115
  * Sends one call under its deadline and the caller's signal. An answer outside 2xx is read only as far as telling a
104
116
  * rate limit needs and thrown as {@link GitHubApiError}; a call that gets no answer, or whose refusal's body stops
105
- * while it is read, throws {@link GitHubNoAnswer}.
117
+ * while it is read, throws {@link GitHubNoAnswer}. The request and every read of its answer's body end at the
118
+ * deadline or the caller's cancel, even through a fetch that leaves them open past its signal.
106
119
  */
107
120
  export declare function githubSend(fetchImpl: typeof fetch, url: string, request: GitHubRequest): Promise<GitHubAnswer>;
108
121
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/app/http.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,yBAAyB;AACzB,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAExC,kGAAkG;AAClG,eAAO,MAAM,uBAAuB,WAAa,CAAC;AAQlD,qGAAqG;AACrG,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sGAAsG;IACtG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+HAA+H;AAC/H,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qGAAqG;IACrG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+EAA+E;AAC/E,MAAM,WAAW,mBAAmB;IAClC,2HAA2H;IAC3H,WAAW,EAAE,OAAO,CAAC;IACrB,gHAAgH;IAChH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,KAAK;IAWrC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAVzB,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,gHAAgH;IAChH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;;OAGG;gBAEQ,MAAM,EAAE,MAAM,EACvB,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM;CAO5C;AAED,wGAAwG;AACxG,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAEvE,uHAAuH;AACvH,qBAAa,cAAe,SAAQ,KAAK;IAE3B,QAAQ,CAAC,MAAM,EAAE,oBAAoB;IADjD,gDAAgD;gBAC3B,MAAM,EAAE,oBAAoB;CAIlD;AAED,2GAA2G;AAC3G,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAgC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO3G;AAED,wCAAwC;AACxC,wBAAsB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnE;AAED,0GAA0G;AAC1G,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,iHAAiH;IACjH,QAAQ,IAAI,cAAc,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,SAAS,GAAE,MAA0B,GAAG,YAAY,CAMjH;AAED,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC9C;AA8DD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAuBpH;AAoBD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAEhH;AAED,kEAAkE;AAClE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAI3D;AAED;;;GAGG;AACH,wBAAuB,WAAW,CAAC,SAAS,EAAE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAUzI;AAED,mGAAmG;AACnG,wBAAsB,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAIjJ;AAED,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAG9E;AAED,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAG/D;AAED,4CAA4C;AAC5C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI3F;AAED,4CAA4C;AAC5C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI3F"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/app/http.ts"],"names":[],"mappings":"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"}
package/dist/app/http.js CHANGED
@@ -3,7 +3,8 @@
3
3
  * carries, the pages of a listing followed through its `Link` header, and the small readers that turn an answer into
4
4
  * typed fields. An answer outside 2xx throws {@link GitHubApiError}, whose message names the status and nothing of
5
5
  * the answer's body and which says whether GitHub refused for a rate limit and when to try again; a call that gets no
6
- * answer throws {@link GitHubNoAnswer}. An answer's body is read under a byte cap.
6
+ * answer by its deadline throws {@link GitHubNoAnswer}, whatever the fetch does with the signal it is handed. An
7
+ * answer's body is read under a byte cap.
7
8
  * @module agentos-ext-github/app/http
8
9
  */
9
10
  import { readCapped, ReadCapExceeded } from '@framers/agentos-ext-account-sources';
@@ -89,6 +90,40 @@ export function callDeadline(signal, timeoutMs = GITHUB_TIMEOUT_MS) {
89
90
  noAnswer: () => new GitHubNoAnswer(signal?.aborted === true ? 'cancelled' : timeout.aborted ? 'timeout' : 'network'),
90
91
  };
91
92
  }
93
+ /**
94
+ * Settles as `work` does, or throws the call's {@link GitHubNoAnswer} once its deadline passes or its caller cancels,
95
+ * whichever comes first. A fetch ends its request and its answer's body when the signal it was handed aborts; this
96
+ * holds a call to its deadline also through a fetch that does not. Work still under way at the deadline is left to
97
+ * settle unobserved, and `release` is handed what it answers after, such as a response whose body is to be let go.
98
+ *
99
+ * @param work The request or the body read under way.
100
+ * @param deadline The call's deadline.
101
+ * @param release Takes what `work` answers once the deadline has ended the call.
102
+ */
103
+ export function untilDeadline(work, deadline, release) {
104
+ const { signal } = deadline;
105
+ return new Promise((resolve, reject) => {
106
+ let ended = false;
107
+ const end = () => {
108
+ ended = true;
109
+ reject(deadline.noAnswer());
110
+ };
111
+ if (signal.aborted)
112
+ end();
113
+ else
114
+ signal.addEventListener('abort', end, { once: true });
115
+ work.then((value) => {
116
+ signal.removeEventListener('abort', end);
117
+ if (ended)
118
+ release?.(value);
119
+ else
120
+ resolve(value);
121
+ }, (error) => {
122
+ signal.removeEventListener('abort', end);
123
+ reject(error);
124
+ });
125
+ });
126
+ }
92
127
  /**
93
128
  * True when a refused call's body names a rate limit, read up to {@link REFUSAL_READ_BYTES}; the body is never kept. A
94
129
  * body that stops before its end (the deadline, the caller's cancel or the connection) throws the call's
@@ -97,7 +132,7 @@ export function callDeadline(signal, timeoutMs = GITHUB_TIMEOUT_MS) {
97
132
  async function bodyNamesRateLimit(response, deadline) {
98
133
  let bytes;
99
134
  try {
100
- bytes = await readCapped(response, REFUSAL_READ_BYTES);
135
+ bytes = await untilDeadline(readCapped(response, REFUSAL_READ_BYTES), deadline);
101
136
  }
102
137
  catch (error) {
103
138
  // An oversized refusal is told by its status and headers alone.
@@ -155,7 +190,8 @@ async function refusalOf(response, deadline) {
155
190
  /**
156
191
  * Sends one call under its deadline and the caller's signal. An answer outside 2xx is read only as far as telling a
157
192
  * rate limit needs and thrown as {@link GitHubApiError}; a call that gets no answer, or whose refusal's body stops
158
- * while it is read, throws {@link GitHubNoAnswer}.
193
+ * while it is read, throws {@link GitHubNoAnswer}. The request and every read of its answer's body end at the
194
+ * deadline or the caller's cancel, even through a fetch that leaves them open past its signal.
159
195
  */
160
196
  export async function githubSend(fetchImpl, url, request) {
161
197
  const headers = githubHeaders(request.token, request.accept);
@@ -164,7 +200,7 @@ export async function githubSend(fetchImpl, url, request) {
164
200
  const deadline = callDeadline(request.signal, request.timeoutMs);
165
201
  let response;
166
202
  try {
167
- response = await fetchImpl(url, { method: request.method ?? 'GET', headers, body: request.body, signal: deadline.signal });
203
+ response = await untilDeadline(fetchImpl(url, { method: request.method ?? 'GET', headers, body: request.body, signal: deadline.signal }), deadline, (late) => void discardBody(late));
168
204
  }
169
205
  catch {
170
206
  // The fetch's own error would name the address or its cause; the reason is all a caller acts on.
@@ -176,7 +212,7 @@ export async function githubSend(fetchImpl, url, request) {
176
212
  response,
177
213
  async bytes(maxBytes) {
178
214
  try {
179
- return await readCapped(response, maxBytes);
215
+ return await untilDeadline(readCapped(response, maxBytes), deadline);
180
216
  }
181
217
  catch (error) {
182
218
  if (error instanceof ReadCapExceeded)
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/app/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/app/http.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
  * @fileoverview A GitHub App's user authorization on a web server: GitHub's authorize address with `state` and PKCE,
3
3
  * and the code exchanged for a user access token, on the auth module's `RedirectOAuthFlow`. The token proves who the
4
4
  * person is and which installations and repositories they can reach; it is used once, then revoked at GitHub and
5
- * dropped, so the flow has no store. The exchange and the revocation run under a deadline, and each answer is read
6
- * whole under a cap before it is read.
5
+ * dropped, so the flow has no store. The exchange and the revocation end at their deadline; the token answer is read
6
+ * whole under a cap before it is parsed, and a revocation's answer is told by its status alone.
7
7
  * @module agentos-ext-github/app/userFlow
8
8
  */
9
9
  import { RedirectOAuthFlow, type RedirectBegin, type RedirectOAuthConfig } from '@framers/agentos/auth';
@@ -41,6 +41,10 @@ export declare class GitHubAppUserFlow extends RedirectOAuthFlow {
41
41
  readonly providerId = "github";
42
42
  /** GitHub's REST API, where `revoke` deletes a token. */
43
43
  private readonly apiBase;
44
+ /** The fetch a revocation is sent with, as given: its answer is told by its status, its body never read. */
45
+ private readonly revocationFetch;
46
+ /** How long a revocation may take; {@link GITHUB_TIMEOUT_MS} when absent. */
47
+ private readonly revocationTimeoutMs;
44
48
  /**
45
49
  * @param client The app's client id and client secret.
46
50
  * @param fetchImpl The fetch the code is exchanged and a token revoked with.
@@ -56,8 +60,9 @@ export declare class GitHubAppUserFlow extends RedirectOAuthFlow {
56
60
  * Deletes a user access token at GitHub, so a token the caller is done with stops working at once instead of at its
57
61
  * expiry: GitHub's "Delete an app token" (`DELETE /applications/{client_id}/token` with the token in a JSON body),
58
62
  * authenticated as the app with Basic authentication, its client id and client secret
59
- * (https://docs.github.com/en/rest/apps/oauth-applications#delete-an-app-token). GitHub answers 204. Any other answer
60
- * throws `OAuthGrantRefused` (reason `revoke`, its status) without its body, a redirect is refused rather than
63
+ * (https://docs.github.com/en/rest/apps/oauth-applications#delete-an-app-token). GitHub answers 204, and 204 alone
64
+ * resolves: any other answer, another 2xx included, throws `OAuthGrantRefused` (reason `revoke`, its status), told
65
+ * by its status alone with its body released unread, however large or slow. A redirect is refused rather than
61
66
  * followed so the client secret reaches GitHub's API alone, and a call that gets no answer by the flow's deadline
62
67
  * throws `GitHubNoAnswer`.
63
68
  *
@@ -1 +1 @@
1
- {"version":3,"file":"userFlow.d.ts","sourceRoot":"","sources":["../../src/app/userFlow.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAqB,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG3H,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oEAAoE;AACpE,MAAM,WAAW,wBAAwB;IACvC,uHAAuH;IACvH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6HAA6H;IAC7H,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,EAAE,oBAGpC,CAAC;AAoCF;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,iBAAiB;IAcpD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAf5B,yBAAyB;IACzB,QAAQ,CAAC,UAAU,YAAY;IAE/B,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC;;;;;OAKG;gBAEgB,MAAM,EAAE,eAAe,EACxC,SAAS,GAAE,OAAO,KAAa,EACd,SAAS,GAAE,oBAA6C,EACzE,OAAO,GAAE,wBAA6B;IAMxC,+DAA+D;IAC/D,SAAS,CAAC,SAAS,IAAI,mBAAmB;IAU1C,sHAAsH;IAC7G,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa;IAO/E;;;;;;;;;;OAUG;IACY,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAepD"}
1
+ {"version":3,"file":"userFlow.d.ts","sourceRoot":"","sources":["../../src/app/userFlow.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAqB,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG3H,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oEAAoE;AACpE,MAAM,WAAW,wBAAwB;IACvC,uHAAuH;IACvH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6HAA6H;IAC7H,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,EAAE,oBAGpC,CAAC;AAqCF;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,iBAAiB;IAoBpD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IArB5B,yBAAyB;IACzB,QAAQ,CAAC,UAAU,YAAY;IAE/B,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,4GAA4G;IAC5G,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAe;IAE/C,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IAEzD;;;;;OAKG;gBAEgB,MAAM,EAAE,eAAe,EACxC,SAAS,GAAE,OAAO,KAAa,EACd,SAAS,GAAE,oBAA6C,EACzE,OAAO,GAAE,wBAA6B;IAQxC,+DAA+D;IAC/D,SAAS,CAAC,SAAS,IAAI,mBAAmB;IAU1C,sHAAsH;IAC7G,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa;IAO/E;;;;;;;;;;;OAWG;IACY,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA+BpD"}
@@ -2,13 +2,13 @@
2
2
  * @fileoverview A GitHub App's user authorization on a web server: GitHub's authorize address with `state` and PKCE,
3
3
  * and the code exchanged for a user access token, on the auth module's `RedirectOAuthFlow`. The token proves who the
4
4
  * person is and which installations and repositories they can reach; it is used once, then revoked at GitHub and
5
- * dropped, so the flow has no store. The exchange and the revocation run under a deadline, and each answer is read
6
- * whole under a cap before it is read.
5
+ * dropped, so the flow has no store. The exchange and the revocation end at their deadline; the token answer is read
6
+ * whole under a cap before it is parsed, and a revocation's answer is told by its status alone.
7
7
  * @module agentos-ext-github/app/userFlow
8
8
  */
9
9
  import { readCapped, ReadCapExceeded } from '@framers/agentos-ext-account-sources';
10
10
  import { OAuthGrantRefused, RedirectOAuthFlow } from '@framers/agentos/auth';
11
- import { callDeadline, GITHUB_API_BASE, GITHUB_API_VERSION } from './http.js';
11
+ import { callDeadline, discardBody, GITHUB_API_BASE, GITHUB_API_VERSION, untilDeadline } from './http.js';
12
12
  /** github.com's own authorize and token addresses. */
13
13
  export const GITHUB_OAUTH_ENDPOINTS = {
14
14
  authorize: 'https://github.com/login/oauth/authorize',
@@ -18,24 +18,25 @@ export const GITHUB_OAUTH_ENDPOINTS = {
18
18
  const TOKEN_ANSWER_BYTES = 65_536;
19
19
  /**
20
20
  * A fetch that ends each call at its deadline and hands on the answer only once its whole body is read under
21
- * {@link TOKEN_ANSWER_BYTES}, so the auth module never waits on GitHub past the deadline. A redirect is answered as
22
- * it came and never followed: a 307 or 308 would send the code and the client secret on to its target, and the auth
23
- * module refuses the redirect's status. A call that gets no answer, or whose body stops before its end, throws
24
- * `GitHubNoAnswer`; a body past the cap throws an error that names the cap.
21
+ * {@link TOKEN_ANSWER_BYTES}, so the auth module never waits on GitHub past the deadline, even through a fetch that
22
+ * leaves the request or the body open past its signal. A redirect is answered as it came and never followed: a 307 or
23
+ * 308 would send the code and the client secret on to its target, and the auth module refuses the redirect's status. A
24
+ * call that gets no answer, or whose body stops before its end, throws `GitHubNoAnswer`; a body past the cap throws an
25
+ * error that names the cap.
25
26
  */
26
27
  function boundedFetch(fetchImpl, timeoutMs) {
27
28
  return async (input, init) => {
28
29
  const deadline = callDeadline(init?.signal ?? undefined, timeoutMs);
29
30
  let response;
30
31
  try {
31
- response = await fetchImpl(input, { ...init, redirect: 'manual', signal: deadline.signal });
32
+ response = await untilDeadline(fetchImpl(input, { ...init, redirect: 'manual', signal: deadline.signal }), deadline, (late) => void discardBody(late));
32
33
  }
33
34
  catch {
34
35
  throw deadline.noAnswer();
35
36
  }
36
37
  let bytes;
37
38
  try {
38
- bytes = await readCapped(response, TOKEN_ANSWER_BYTES);
39
+ bytes = await untilDeadline(readCapped(response, TOKEN_ANSWER_BYTES), deadline);
39
40
  }
40
41
  catch (error) {
41
42
  if (error instanceof ReadCapExceeded)
@@ -64,6 +65,10 @@ export class GitHubAppUserFlow extends RedirectOAuthFlow {
64
65
  providerId = 'github';
65
66
  /** GitHub's REST API, where `revoke` deletes a token. */
66
67
  apiBase;
68
+ /** The fetch a revocation is sent with, as given: its answer is told by its status, its body never read. */
69
+ revocationFetch;
70
+ /** How long a revocation may take; {@link GITHUB_TIMEOUT_MS} when absent. */
71
+ revocationTimeoutMs;
67
72
  /**
68
73
  * @param client The app's client id and client secret.
69
74
  * @param fetchImpl The fetch the code is exchanged and a token revoked with.
@@ -75,6 +80,8 @@ export class GitHubAppUserFlow extends RedirectOAuthFlow {
75
80
  this.client = client;
76
81
  this.endpoints = endpoints;
77
82
  this.apiBase = options.apiBase ?? GITHUB_API_BASE;
83
+ this.revocationFetch = fetchImpl;
84
+ this.revocationTimeoutMs = options.timeoutMs;
78
85
  }
79
86
  /** GitHub's addresses and the app's client, with no scopes. */
80
87
  getConfig() {
@@ -98,8 +105,9 @@ export class GitHubAppUserFlow extends RedirectOAuthFlow {
98
105
  * Deletes a user access token at GitHub, so a token the caller is done with stops working at once instead of at its
99
106
  * expiry: GitHub's "Delete an app token" (`DELETE /applications/{client_id}/token` with the token in a JSON body),
100
107
  * authenticated as the app with Basic authentication, its client id and client secret
101
- * (https://docs.github.com/en/rest/apps/oauth-applications#delete-an-app-token). GitHub answers 204. Any other answer
102
- * throws `OAuthGrantRefused` (reason `revoke`, its status) without its body, a redirect is refused rather than
108
+ * (https://docs.github.com/en/rest/apps/oauth-applications#delete-an-app-token). GitHub answers 204, and 204 alone
109
+ * resolves: any other answer, another 2xx included, throws `OAuthGrantRefused` (reason `revoke`, its status), told
110
+ * by its status alone with its body released unread, however large or slow. A redirect is refused rather than
103
111
  * followed so the client secret reaches GitHub's API alone, and a call that gets no answer by the flow's deadline
104
112
  * throws `GitHubNoAnswer`.
105
113
  *
@@ -107,18 +115,31 @@ export class GitHubAppUserFlow extends RedirectOAuthFlow {
107
115
  */
108
116
  async revoke(token) {
109
117
  const credentials = Buffer.from(`${this.client.clientId}:${this.client.clientSecret}`).toString('base64');
110
- const response = await this.fetchImpl(`${this.apiBase}/applications/${encodeURIComponent(this.client.clientId)}/token`, {
111
- method: 'DELETE',
112
- headers: {
113
- authorization: `Basic ${credentials}`,
114
- accept: 'application/vnd.github+json',
115
- 'content-type': 'application/json',
116
- 'x-github-api-version': GITHUB_API_VERSION,
117
- 'user-agent': 'agentos-ext-github',
118
- },
119
- body: JSON.stringify({ access_token: token }),
120
- });
121
- if (!response.ok)
118
+ // Called as a plain function, as the fetch is everywhere else in the pack: a runtime's own fetch may refuse another receiver.
119
+ const send = this.revocationFetch;
120
+ const deadline = callDeadline(undefined, this.revocationTimeoutMs);
121
+ let response;
122
+ try {
123
+ response = await untilDeadline(send(`${this.apiBase}/applications/${encodeURIComponent(this.client.clientId)}/token`, {
124
+ method: 'DELETE',
125
+ headers: {
126
+ authorization: `Basic ${credentials}`,
127
+ accept: 'application/vnd.github+json',
128
+ 'content-type': 'application/json',
129
+ 'x-github-api-version': GITHUB_API_VERSION,
130
+ 'user-agent': 'agentos-ext-github',
131
+ },
132
+ body: JSON.stringify({ access_token: token }),
133
+ redirect: 'manual',
134
+ signal: deadline.signal,
135
+ }), deadline, (late) => void discardBody(late));
136
+ }
137
+ catch {
138
+ throw deadline.noAnswer();
139
+ }
140
+ // The status is the whole answer: the body is let go unread, and the revocation never waits on it.
141
+ void discardBody(response);
142
+ if (response.status !== 204)
122
143
  throw new OAuthGrantRefused('revoke', response.status);
123
144
  }
124
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"userFlow.js","sourceRoot":"","sources":["../../src/app/userFlow.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAgD,MAAM,uBAAuB,CAAC;AAC3H,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAqB,MAAM,WAAW,CAAC;AAsBjG,sDAAsD;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAyB;IAC1D,SAAS,EAAE,0CAA0C;IACrD,KAAK,EAAE,6CAA6C;CACrD,CAAC;AAEF,mFAAmF;AACnF,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,SAAuB,EAAE,SAA6B;IAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,SAAS,EAAE,SAAS,CAAC,CAAC;QACpE,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9F,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,KAAiB,CAAC;QACtB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,eAAe;gBAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAClG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACnF,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IAcnC;IAEA;IAfnB,yBAAyB;IAChB,UAAU,GAAG,QAAQ,CAAC;IAE/B,yDAAyD;IACxC,OAAO,CAAS;IAEjC;;;;;OAKG;IACH,YACmB,MAAuB,EACxC,YAA0B,KAAK,EACd,YAAkC,sBAAsB,EACzE,UAAoC,EAAE;QAEtC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QALvC,WAAM,GAAN,MAAM,CAAiB;QAEvB,cAAS,GAAT,SAAS,CAA+C;QAIzE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;IACpD,CAAC;IAED,+DAA+D;IACrD,SAAS;QACjB,OAAO;YACL,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;YAC/C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;YACnC,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SACvC,CAAC;IACJ,CAAC;IAED,sHAAsH;IAC7G,KAAK,CAAC,KAAgD;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE;YAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnF,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;OAUG;IACM,KAAK,CAAC,MAAM,CAAC,KAAa;QACjC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1G,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACtH,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE;gBACP,aAAa,EAAE,SAAS,WAAW,EAAE;gBACrC,MAAM,EAAE,6BAA6B;gBACrC,cAAc,EAAE,kBAAkB;gBAClC,sBAAsB,EAAE,kBAAkB;gBAC1C,YAAY,EAAE,oBAAoB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC;CACF"}
1
+ {"version":3,"file":"userFlow.js","sourceRoot":"","sources":["../../src/app/userFlow.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * @fileoverview A repository's documentation as account sources, read through a GitHub App's installation: each
3
3
  * repository's tree read once a commit within a request budget, the documentation kept by a filter, each file read as
4
- * raw bytes under a cap, and a push compared by the tree at its `after` commit.
4
+ * raw bytes under a cap, and a push compared by the tree at its `after` commit. A selection, an item or a call it
5
+ * cannot answer whole is refused before any request.
5
6
  * @module agentos-ext-github/documents/GitHubDocumentsConnector
6
7
  */
7
8
  import { type AccountSourceConnector, type SourceChanges, type SourceGone, type SourceItem, type SourceRead, type SourceSelection } from '@framers/agentos-ext-account-sources';
@@ -14,7 +15,7 @@ export interface LinkedRepository {
14
15
  defaultBranch: string;
15
16
  }
16
17
  /**
17
- * What `changesSince` compares: the repository (its id, first of `ids`), and from a push its `after` commit and its
18
+ * What `changesSince` compares: one repository (`ids` holds its id alone), and from a push its `after` commit and its
18
19
  * `ref`, with the listing at `after` when the caller holds it.
19
20
  */
20
21
  export interface GitHubChangesSelection extends SourceSelection {
@@ -22,13 +23,17 @@ export interface GitHubChangesSelection extends SourceSelection {
22
23
  after?: string;
23
24
  /** The push's ref, such as `refs/heads/main`; a push to another branch than the default changes nothing. */
24
25
  ref?: string;
25
- /** The documentation's listing at `after`, which spares the tree's read. */
26
+ /** The documentation's listing at `after`, which spares the tree's read; taken only with the `after` it was read at. */
26
27
  listing?: readonly TreeBlob[];
27
28
  }
28
29
  /**
29
30
  * A repository's documentation as account sources: an item's id is `<repositoryId>:<path>`, its version
30
31
  * `<blob>@<commit>`, and the cursor of `changesSince` the JSON of each documentation path's blob at the commit last
31
- * read. An installation is removed by the app's own call (`uninstallInstallation`), never by a link's connector.
32
+ * read. A repository id is a positive integer in decimal. A call whose signal is already aborted throws
33
+ * `GitHubNoAnswer` (`cancelled`) before it checks anything else. What a call cannot answer whole then throws before any
34
+ * request: a `TypeError` for an id that is not a repository id, a repository named twice, an item id that names no
35
+ * file or a change set of other than one repository, and an `Error` for a repository outside the link. An
36
+ * installation is removed by the app's own call (`uninstallInstallation`), never by a link's connector.
32
37
  */
33
38
  export declare class GitHubDocumentsConnector implements AccountSourceConnector {
34
39
  private readonly credential;
@@ -47,6 +52,7 @@ export declare class GitHubDocumentsConnector implements AccountSourceConnector
47
52
  * @param apiBase GitHub's REST API, or a stand-in's address in tests.
48
53
  */
49
54
  constructor(credential: GitHubAppCredential, installationId: number, repositories: readonly LinkedRepository[], filter?: TreeFilter, fetchImpl?: typeof fetch, apiBase?: string);
55
+ /** The linked repository of an id; one outside the link throws. */
50
56
  private repository;
51
57
  /** An installation token narrowed to one repository, its request ended by the caller's signal. */
52
58
  private token;
@@ -54,29 +60,39 @@ export declare class GitHubDocumentsConnector implements AccountSourceConnector
54
60
  head(repositoryId: number, signal?: AbortSignal): Promise<string>;
55
61
  /**
56
62
  * The documentation files of a repository at a commit: its tree read once within the request budget, never walking
57
- * a skipped folder, then filtered. A caller keeps it for that commit and hands it to `changesSince`.
63
+ * a skipped folder, then filtered. A caller keeps it for that commit and hands it to `changesSince` with that commit
64
+ * as `after`.
58
65
  */
59
66
  listing(repositoryId: number, commit: string, signal?: AbortSignal): Promise<TreeBlob[]>;
60
- /** The documentation of each selected repository (its id in `ids`) at its default branch's head. */
67
+ /**
68
+ * The documentation of each selected repository (its id in `ids`) at its default branch's head. Every id is checked
69
+ * before any repository is read, so a selection is listed whole or not at all: an id that is not a repository id, or
70
+ * a repository named twice, throws a `TypeError`, and a repository outside the link an `Error`.
71
+ */
61
72
  list(selection: SourceSelection, signal?: AbortSignal): Promise<{
62
73
  items: SourceItem[];
63
74
  gone: SourceGone[];
64
75
  }>;
65
76
  /**
66
- * A file's raw bytes at the commit of its version, read as a stream under the call's deadline and cut at
77
+ * A file's raw bytes at the commit of its version (the default branch when the version names no commit, and then
78
+ * the reference names the branch), read as a stream under the call's deadline and cut at
67
79
  * `maxFileBytes`: PDF, Word and HTML as bytes with their media type, the rest as UTF-8 text, each with a `github`
68
80
  * attribution linking the file at that commit. A file GitHub no longer has (the contents read answers 404), or one
69
81
  * past the cap, is answered gone with reason `removed`; any other refusal throws `GitHubApiError`, a rate limit with
70
82
  * its `retryAt`, so a read GitHub held back is never taken for a file gone. So does a refusal of the installation
71
- * token (404 for an installation GitHub no longer has): a lost installation never reads as every file gone.
83
+ * token (404 for an installation GitHub no longer has): a lost installation never reads as every file gone. An item
84
+ * id that names no file (no path, or a path with an empty, `.` or `..` segment) throws a `TypeError` before any
85
+ * request.
72
86
  */
73
87
  read(item: SourceItem, signal?: AbortSignal): Promise<SourceRead | SourceGone>;
74
88
  /**
75
- * What a push to `after` changed, from the listing at `after` (read here when the caller holds none) against the
76
- * blobs read before (`cursor`: the JSON of each path's blob). A push's own commit lists are never read, so a force
77
- * push, or a push of more commits than its event lists, is read like any other. A cursor this connector did not
78
- * answer throws a `TypeError` before any request, whatever the push's branch. A push to another branch than the
79
- * default answers no change and the cursor it was given.
89
+ * What a push to `after` changed in one repository, from the listing at `after` (read here when the caller holds
90
+ * none) against the blobs read before (`cursor`: the JSON of each path's blob). A push's own commit lists are never
91
+ * read, so a force push, or a push of more commits than its event lists, is read like any other. A cursor this
92
+ * connector did not answer throws a `TypeError` before any request, whatever the push's branch, and so does a
93
+ * selection of other than one repository, or a `listing` without the `after` commit it was read at: call it once
94
+ * per repository, each with that repository's cursor. A push to another branch than the default answers no change
95
+ * and the cursor it was given.
80
96
  */
81
97
  changesSince(cursor: string | null, selection: GitHubChangesSelection, signal?: AbortSignal): Promise<SourceChanges>;
82
98
  /** Nothing to end here: an installation is removed by the app's own call (`uninstallInstallation`). */
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubDocumentsConnector.d.ts","sourceRoot":"","sources":["../../src/documents/GitHubDocumentsConnector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EAEf,KAAK,eAAe,EACrB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAA8E,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvI,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC7D,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4GAA4G;IAC5G,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC/B;AAkCD;;;;GAIG;AACH,qBAAa,wBAAyB,YAAW,sBAAsB;IAYnE,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhB1B,QAAQ,CAAC,IAAI,YAAY;IAEzB;;;;;;;OAOG;gBAEgB,UAAU,EAAE,mBAAmB,EAC/B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,MAAM,GAAE,UAAe,EACvB,SAAS,GAAE,OAAO,KAAa,EAC/B,OAAO,SAAkB;IAG5C,OAAO,CAAC,UAAU;IAMlB,kGAAkG;IAClG,OAAO,CAAC,KAAK;IAIb,wDAAwD;IAClD,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvE;;;OAGG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAS9F,oGAAoG;IAC9F,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,IAAI,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAWlH;;;;;;;OAOG;IACG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;IAkCpF;;;;;;OAMG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAiB1H,uGAAuG;IACjG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
1
+ {"version":3,"file":"GitHubDocumentsConnector.d.ts","sourceRoot":"","sources":["../../src/documents/GitHubDocumentsConnector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EAEf,KAAK,eAAe,EACrB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAA8E,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvI,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC7D,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4GAA4G;IAC5G,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wHAAwH;IACxH,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC/B;AAoED;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,YAAW,sBAAsB;IAYnE,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhB1B,QAAQ,CAAC,IAAI,YAAY;IAEzB;;;;;;;OAOG;gBAEgB,UAAU,EAAE,mBAAmB,EAC/B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,MAAM,GAAE,UAAe,EACvB,SAAS,GAAE,OAAO,KAAa,EAC/B,OAAO,SAAkB;IAG5C,mEAAmE;IACnE,OAAO,CAAC,UAAU;IAMlB,kGAAkG;IAClG,OAAO,CAAC,KAAK;IAIb,wDAAwD;IAClD,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAQvE;;;;OAIG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAW9F;;;;OAIG;IACG,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,IAAI,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAelH;;;;;;;;;;OAUG;IACG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;IAmCpF;;;;;;;;OAQG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAuB1H,uGAAuG;IACjG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}