@alpacakit/integrations 0.1.0-beta.21 → 0.1.0-beta.25

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 (53) hide show
  1. package/README.md +7 -0
  2. package/dist/catalog.d.ts +12 -0
  3. package/dist/catalog.d.ts.map +1 -0
  4. package/dist/catalog.js +82 -0
  5. package/dist/code-hosts/account.d.ts.map +1 -1
  6. package/dist/code-hosts/account.js +4 -1
  7. package/dist/code-hosts/facets.d.ts +2 -1
  8. package/dist/code-hosts/facets.d.ts.map +1 -1
  9. package/dist/code-hosts/facets.js +65 -12
  10. package/dist/code-hosts/gitea-pull-request-snapshot.d.ts +22 -0
  11. package/dist/code-hosts/gitea-pull-request-snapshot.d.ts.map +1 -0
  12. package/dist/code-hosts/gitea-pull-request-snapshot.js +226 -0
  13. package/dist/code-hosts/gitea.d.ts.map +1 -1
  14. package/dist/code-hosts/gitea.js +50 -49
  15. package/dist/code-hosts/github.d.ts.map +1 -1
  16. package/dist/code-hosts/github.js +34 -6
  17. package/dist/code-hosts/gitlab.d.ts.map +1 -1
  18. package/dist/code-hosts/gitlab.js +32 -8
  19. package/dist/code-hosts/helpers.js +4 -4
  20. package/dist/code-hosts/normalize.d.ts +1 -0
  21. package/dist/code-hosts/normalize.d.ts.map +1 -1
  22. package/dist/code-hosts/normalize.js +1 -1
  23. package/dist/code-hosts/schemas.d.ts +134 -0
  24. package/dist/code-hosts/schemas.d.ts.map +1 -1
  25. package/dist/code-hosts/schemas.js +31 -2
  26. package/dist/code-hosts/strategy.d.ts +9 -2
  27. package/dist/code-hosts/strategy.d.ts.map +1 -1
  28. package/dist/config/index.d.ts +1 -1
  29. package/dist/config/index.d.ts.map +1 -1
  30. package/dist/config/store.d.ts +2 -2
  31. package/dist/config/store.d.ts.map +1 -1
  32. package/dist/config/store.js +79 -1
  33. package/dist/definition.d.ts +34 -1
  34. package/dist/definition.d.ts.map +1 -1
  35. package/dist/index.d.ts +3 -2
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +2 -1
  38. package/dist/keyring/index.d.ts +1 -1
  39. package/dist/keyring/index.d.ts.map +1 -1
  40. package/dist/keyring/resolver.d.ts +1 -0
  41. package/dist/keyring/resolver.d.ts.map +1 -1
  42. package/dist/keyring/resolver.js +14 -18
  43. package/dist/model.d.ts +48 -8
  44. package/dist/model.d.ts.map +1 -1
  45. package/dist/runtime.d.ts +6 -4
  46. package/dist/runtime.d.ts.map +1 -1
  47. package/dist/runtime.js +3 -0
  48. package/dist/testing/contracts.d.ts.map +1 -1
  49. package/dist/testing/contracts.js +0 -1
  50. package/dist/values.d.ts +29 -0
  51. package/dist/values.d.ts.map +1 -1
  52. package/dist/values.js +29 -0
  53. package/package.json +2 -2
@@ -8,21 +8,18 @@ import { integrationId } from "../ids.js";
8
8
  import { collectPaginated } from "../transport/collect.js";
9
9
  import { HttpTransport } from "../transport/http-transport.js";
10
10
  import { LinkHeaderPager } from "../transport/pager.js";
11
- import { AUTHORIZATION_SCHEME, GIT_PROTOCOL, HTTP_METHOD, MERGE_METHOD, MERGE_STATE_STATUS, MERGEABILITY, OWNER_KIND, PULL_REQUEST_STATE, REVIEW_DECISION, WORK_ITEM_KIND, WORK_ITEM_QUERY_STATE, WORK_ITEM_STATE, } from "../values.js";
12
- import { createCodeHostAccount, createCodeHostRepository, createCodeHostWorkItems, probeCodeHostDoctor, } from "./facets.js";
11
+ import { AUTHORIZATION_SCHEME, GIT_PROTOCOL, HTTP_METHOD, MERGE_METHOD, OWNER_KIND, PULL_REQUEST_STATE, REPOSITORY_SETTINGS_UPDATE_KIND, WORK_ITEM_KIND, WORK_ITEM_QUERY_STATE, WORK_ITEM_STATE, } from "../values.js";
12
+ import { createCodeHostAccount, createCodeHostRepository, createCodeHostRepositoryHost, createCodeHostWorkItems, probeCodeHostDoctor, } from "./facets.js";
13
+ import { projectGiteaPullRequestStatus, readGiteaPullRequest, readGiteaPullRequestReviews, readGiteaPullRequestSnapshot, } from "./gitea-pull-request-snapshot.js";
13
14
  import { ambientToken, matchesRemote, orgOrUserRepositoryRequest, } from "./helpers.js";
14
15
  import { normalizeDependencyIssue } from "./normalize.js";
15
- import { rawGiteaDependencyListCodec, rawGiteaLabelCodec, rawGiteaLabelListCodec, rawGiteaReviewListCodec, rawPullRequestCodec, } from "./schemas.js";
16
+ import { rawGiteaDependencyListCodec, rawGiteaLabelCodec, rawGiteaLabelListCodec, } from "./schemas.js";
16
17
  import { CODE_HOST_CHANGE_FEED_KIND, refNumber } from "./strategy.js";
17
18
  import { createTimestampChangeFeedCursorCodec } from "./timestamp-change-feed.js";
18
19
  import { CODE_HOST_LABEL_KIND, CODE_HOST_RESOURCE, GITHUB_STYLE_REACTIONS, } from "./values.js";
19
20
  export const GITEA_INTEGRATION_ID = integrationId("gitea");
20
21
  const GITEA_PAGER = new LinkHeaderPager();
21
22
  const MAX_PAGE_SIZE = 50;
22
- const GITEA_REVIEW_STATE = {
23
- approved: "APPROVED",
24
- changesRequested: "REQUEST_CHANGES",
25
- };
26
23
  const GITEA_WORK_ITEM_TYPE = {
27
24
  issues: "issues",
28
25
  pullRequests: "pulls",
@@ -37,8 +34,14 @@ export const GITEA_GIT_CREDENTIAL_SCHEME = {
37
34
  };
38
35
  const settingsSchema = z
39
36
  .object({
40
- owner: z.string().min(1),
41
- repository: z.string().min(1),
37
+ owner: z
38
+ .string()
39
+ .min(1)
40
+ .regex(/^[^/]+$/),
41
+ repository: z
42
+ .string()
43
+ .min(1)
44
+ .regex(/^[^/]+$/),
42
45
  baseUrl: z.string().url(),
43
46
  })
44
47
  .strict()
@@ -52,6 +55,27 @@ export function gitea() {
52
55
  id: GITEA_INTEGRATION_ID,
53
56
  settingsCodec: createSchemaRuntimeCodec(settingsSchema),
54
57
  remoteMatch: (remoteUrl, settings) => matchesRemote(remoteUrl, new URL(settings.baseUrl).hostname, `${settings.owner}/${settings.repository}`),
58
+ repositoryScope: {
59
+ applySettings: (input) => {
60
+ if (input.kind === REPOSITORY_SETTINGS_UPDATE_KIND.baseUrl) {
61
+ return {
62
+ owner: input.current.owner,
63
+ repository: input.current.repository,
64
+ baseUrl: input.baseUrl,
65
+ };
66
+ }
67
+ const baseUrl = input.baseUrl ?? input.current?.baseUrl;
68
+ return {
69
+ owner: input.repository.owner,
70
+ repository: input.repository.name,
71
+ ...(baseUrl === undefined ? {} : { baseUrl }),
72
+ };
73
+ },
74
+ projectRepository: (settings) => ({
75
+ owner: settings.owner,
76
+ name: settings.repository,
77
+ }),
78
+ },
55
79
  auth: {
56
80
  materials: bearerMaterialHandlers(),
57
81
  ambient: async (env, exec) => await ambientToken({
@@ -68,6 +92,7 @@ export function gitea() {
68
92
  connect: async ({ settings, authorization, ports, connectionId }) => createGiteaSession(settings, authorization, ports, connectionId),
69
93
  workItems: createCodeHostWorkItems,
70
94
  repository: createCodeHostRepository,
95
+ repositoryHost: createCodeHostRepositoryHost,
71
96
  account: createCodeHostAccount,
72
97
  });
73
98
  }
@@ -111,48 +136,24 @@ function giteaStrategy(settings) {
111
136
  create: (transport) => createGiteaLabels(transport, repositoryPath),
112
137
  },
113
138
  pullRequestStatus: async (transport, number) => {
114
- const pullRequest = await transport.requestOptional({
115
- method: HTTP_METHOD.get,
116
- path: `${repositoryPath}/pulls/${number}`,
117
- resource: CODE_HOST_RESOURCE.pullRequest,
118
- }, rawPullRequestCodec);
139
+ const pullRequest = await readGiteaPullRequest(transport, repositoryPath, number);
119
140
  if (pullRequest === null) {
120
141
  return null;
121
142
  }
122
- const reviews = await collectPaginated(transport, {
123
- method: HTTP_METHOD.get,
124
- path: `${repositoryPath}/pulls/${number}/reviews`,
125
- query: { limit: MAX_PAGE_SIZE },
126
- resource: CODE_HOST_RESOURCE.pullRequestReviews,
127
- }, rawGiteaReviewListCodec, GITEA_PAGER);
128
- // Gitea returns reviews in ascending (creation) order, so scan newest
129
- // first to honor the most recent decisive verdict.
130
- const recentFirst = [...reviews].reverse();
131
- const latestDecision = recentFirst.find((review) => review.state === GITEA_REVIEW_STATE.changesRequested ||
132
- review.state === GITEA_REVIEW_STATE.approved);
133
- const approved = recentFirst.find((review) => review.state === GITEA_REVIEW_STATE.approved);
134
- const headSha = pullRequest.headSha;
135
- return {
136
- reviewDecision: latestDecision?.state === GITEA_REVIEW_STATE.approved
137
- ? REVIEW_DECISION.approved
138
- : latestDecision?.state === GITEA_REVIEW_STATE.changesRequested
139
- ? REVIEW_DECISION.changesRequested
140
- : REVIEW_DECISION.reviewRequired,
141
- mergeability: pullRequest.mergeable === true
142
- ? MERGEABILITY.mergeable
143
- : pullRequest.mergeable === false
144
- ? MERGEABILITY.conflicting
145
- : MERGEABILITY.unknown,
146
- mergeStateStatus: pullRequest.mergeable === true
147
- ? MERGE_STATE_STATUS.clean
148
- : pullRequest.mergeable === false
149
- ? MERGE_STATE_STATUS.dirty
150
- : MERGE_STATE_STATUS.unknown,
151
- isDraft: pullRequest.isDraft,
152
- headSha,
153
- latestApprovedReviewSha: approved?.commit_id ?? null,
154
- };
143
+ const reviews = await readGiteaPullRequestReviews({
144
+ transport,
145
+ repositoryPath,
146
+ number,
147
+ pager: GITEA_PAGER,
148
+ });
149
+ return projectGiteaPullRequestStatus(pullRequest, reviews);
155
150
  },
151
+ pullRequestSnapshot: (transport, number) => readGiteaPullRequestSnapshot({
152
+ transport,
153
+ repositoryPath,
154
+ number,
155
+ pager: GITEA_PAGER,
156
+ }),
156
157
  provisionRequest: orgOrUserRepositoryRequest,
157
158
  workItemRelations: (transport) => createGiteaRelations(transport, repositoryPath, settings),
158
159
  workItemCreateRequest: async (transport, input) => ({
@@ -190,9 +191,9 @@ function giteaStrategy(settings) {
190
191
  });
191
192
  },
192
193
  paths: {
193
- repository: () => ({
194
+ repository: (ref) => ({
194
195
  method: HTTP_METHOD.get,
195
- path: repositoryPath,
196
+ path: `/repos/${encodeURIComponent(ref.owner)}/${encodeURIComponent(ref.name)}`,
196
197
  resource: CODE_HOST_RESOURCE.repository,
197
198
  }),
198
199
  workItemWebUrl: (number) => `${webBaseUrl}/issues/${number}`,
@@ -1 +1 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/code-hosts/github.ts"],"names":[],"mappings":"AAiCA,OAAO,EACL,KAAK,eAAe,EAKrB,MAAM,aAAa,CAAC;AAuBrB,eAAO,MAAM,qBAAqB,4DAA0B,CAAC;AA8B7D,eAAO,MAAM,qBAAqB,qCAAsC,CAAC;AACzE,eAAO,MAAM,4BAA4B;;;CAGD,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAoIF,wBAAgB,MAAM,kJA4CrB"}
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/code-hosts/github.ts"],"names":[],"mappings":"AAkCA,OAAO,EACL,KAAK,eAAe,EAMrB,MAAM,aAAa,CAAC;AAuBrB,eAAO,MAAM,qBAAqB,4DAA0B,CAAC;AA8B7D,eAAO,MAAM,qBAAqB,qCAAsC,CAAC;AACzE,eAAO,MAAM,4BAA4B;;;CAGD,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AA0IF,wBAAgB,MAAM,kJAkErB"}
@@ -8,8 +8,8 @@ import { integrationId } from "../ids.js";
8
8
  import { collectPaginated } from "../transport/collect.js";
9
9
  import { HttpTransport } from "../transport/http-transport.js";
10
10
  import { LinkHeaderPager } from "../transport/pager.js";
11
- import { AUTHORIZATION_SCHEME, COMMENT_KIND, GIT_PROTOCOL, HTTP_METHOD, MERGE_METHOD, MERGE_STATE_STATUS, MERGEABILITY, OWNER_KIND, PULL_REQUEST_STATE, REVIEW_DECISION, WORK_ITEM_QUERY_STATE, WORK_ITEM_STATE, } from "../values.js";
12
- import { createCodeHostAccount, createCodeHostRepository, createCodeHostWorkItems, probeCodeHostDoctor, } from "./facets.js";
11
+ import { AUTHORIZATION_SCHEME, COMMENT_KIND, GIT_PROTOCOL, HTTP_METHOD, MERGE_METHOD, MERGE_STATE_STATUS, MERGEABILITY, OWNER_KIND, PULL_REQUEST_STATE, REPOSITORY_SETTINGS_UPDATE_KIND, REVIEW_DECISION, WORK_ITEM_QUERY_STATE, WORK_ITEM_STATE, } from "../values.js";
12
+ import { createCodeHostAccount, createCodeHostRepository, createCodeHostRepositoryHost, createCodeHostWorkItems, probeCodeHostDoctor, } from "./facets.js";
13
13
  import { githubDeviceLogin } from "./github-login.js";
14
14
  import { ambientToken, matchesRemote, orgOrUserRepositoryRequest, } from "./helpers.js";
15
15
  import { normalizeDependencyIssue } from "./normalize.js";
@@ -51,8 +51,14 @@ export const GITHUB_GIT_CREDENTIAL_SCHEME = {
51
51
  };
52
52
  const githubSettingsSchema = z
53
53
  .object({
54
- owner: z.string().min(1),
55
- repository: z.string().min(1),
54
+ owner: z
55
+ .string()
56
+ .min(1)
57
+ .regex(/^[^/]+$/),
58
+ repository: z
59
+ .string()
60
+ .min(1)
61
+ .regex(/^[^/]+$/),
56
62
  baseUrl: z.string().url().optional(),
57
63
  })
58
64
  .strict()
@@ -170,6 +176,27 @@ export function github() {
170
176
  : base.hostname.replace(/^api\./, "");
171
177
  return matchesRemote(remoteUrl, host, `${settings.owner}/${settings.repository}`);
172
178
  },
179
+ repositoryScope: {
180
+ applySettings: (input) => {
181
+ if (input.kind === REPOSITORY_SETTINGS_UPDATE_KIND.baseUrl) {
182
+ return {
183
+ owner: input.current.owner,
184
+ repository: input.current.repository,
185
+ baseUrl: input.baseUrl,
186
+ };
187
+ }
188
+ const baseUrl = input.baseUrl ?? input.current?.baseUrl;
189
+ return {
190
+ owner: input.repository.owner,
191
+ repository: input.repository.name,
192
+ ...(baseUrl === undefined ? {} : { baseUrl }),
193
+ };
194
+ },
195
+ projectRepository: (settings) => ({
196
+ owner: settings.owner,
197
+ name: settings.repository,
198
+ }),
199
+ },
173
200
  auth: {
174
201
  materials: bearerMaterialHandlers(),
175
202
  ambient: async (env, exec) => await ambientToken({
@@ -191,6 +218,7 @@ export function github() {
191
218
  connect: async ({ settings, authorization, ports, connectionId }) => createGitHubSession(settings, authorization, ports, connectionId),
192
219
  workItems: createCodeHostWorkItems,
193
220
  repository: createCodeHostRepository,
221
+ repositoryHost: createCodeHostRepositoryHost,
194
222
  account: createCodeHostAccount,
195
223
  });
196
224
  }
@@ -426,9 +454,9 @@ function githubStrategy(settings) {
426
454
  });
427
455
  },
428
456
  paths: {
429
- repository: () => ({
457
+ repository: (ref) => ({
430
458
  method: HTTP_METHOD.get,
431
- path: repositoryPath,
459
+ path: `/repos/${encodeURIComponent(ref.owner)}/${encodeURIComponent(ref.name)}`,
432
460
  resource: CODE_HOST_RESOURCE.repository,
433
461
  }),
434
462
  workItemWebUrl: (number) => `${webBaseUrl}/issues/${number}`,
@@ -1 +1 @@
1
- {"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../src/code-hosts/gitlab.ts"],"names":[],"mappings":"AA2CA,OAAO,EACL,KAAK,eAAe,EAKrB,MAAM,aAAa,CAAC;AA4BrB,eAAO,MAAM,qBAAqB,4DAA0B,CAAC;AA8B7D,eAAO,MAAM,qBAAqB,sCAAuC,CAAC;AAC1E,eAAO,MAAM,4BAA4B;;;CAGD,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AA2BF,wBAAgB,MAAM,kJA0CrB"}
1
+ {"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../src/code-hosts/gitlab.ts"],"names":[],"mappings":"AA4CA,OAAO,EACL,KAAK,eAAe,EAMrB,MAAM,aAAa,CAAC;AA4BrB,eAAO,MAAM,qBAAqB,4DAA0B,CAAC;AA8B7D,eAAO,MAAM,qBAAqB,sCAAuC,CAAC;AAC1E,eAAO,MAAM,4BAA4B;;;CAGD,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AA2BF,wBAAgB,MAAM,kJAkErB"}
@@ -1,4 +1,4 @@
1
- // biome-ignore-all lint/style/useNamingConvention: Provider request fields intentionally mirror GitLab's API.
1
+ // biome-ignore-all lint/style/useNamingConvention lint/nursery/noExcessiveLinesPerFile: Provider request fields and endpoint strategy intentionally stay provider-shaped.
2
2
  import { createSchemaRuntimeCodec } from "@alpacakit/core";
3
3
  import { z } from "zod";
4
4
  import { bearerMaterialHandlers } from "../auth.js";
@@ -9,8 +9,8 @@ import { collectPaginated } from "../transport/collect.js";
9
9
  import { createOpaqueCursorCodec } from "../transport/cursor.js";
10
10
  import { HttpTransport } from "../transport/http-transport.js";
11
11
  import { PageParamPager } from "../transport/pager.js";
12
- import { AUTHORIZATION_SCHEME, GIT_PROTOCOL, HTTP_METHOD, MERGE_METHOD, MERGE_STATE_STATUS, MERGEABILITY, OWNER_KIND, PULL_REQUEST_STATE, REVIEW_DECISION, WORK_ITEM_KIND, WORK_ITEM_QUERY_STATE, WORK_ITEM_STATE, } from "../values.js";
13
- import { createCodeHostAccount, createCodeHostRepository, createCodeHostWorkItems, probeCodeHostDoctor, } from "./facets.js";
12
+ import { AUTHORIZATION_SCHEME, GIT_PROTOCOL, HTTP_METHOD, MERGE_METHOD, MERGE_STATE_STATUS, MERGEABILITY, OWNER_KIND, PULL_REQUEST_STATE, REPOSITORY_SETTINGS_UPDATE_KIND, REVIEW_DECISION, WORK_ITEM_KIND, WORK_ITEM_QUERY_STATE, WORK_ITEM_STATE, } from "../values.js";
13
+ import { createCodeHostAccount, createCodeHostRepository, createCodeHostRepositoryHost, createCodeHostWorkItems, probeCodeHostDoctor, } from "./facets.js";
14
14
  import { createGitLabIssueLabelChangeRequests, createGitLabLabelCreateRequest, } from "./gitlab-label-requests.js";
15
15
  import { gitLabDeviceLogin } from "./gitlab-login.js";
16
16
  import { ambientToken, matchesRemote } from "./helpers.js";
@@ -76,6 +76,29 @@ export function gitlab() {
76
76
  id: GITLAB_INTEGRATION_ID,
77
77
  settingsCodec: createSchemaRuntimeCodec(settingsSchema),
78
78
  remoteMatch: (remoteUrl, settings) => matchesRemote(remoteUrl, new URL(settings.baseUrl).hostname, settings.project),
79
+ repositoryScope: {
80
+ applySettings: (input) => {
81
+ if (input.kind === REPOSITORY_SETTINGS_UPDATE_KIND.baseUrl) {
82
+ return {
83
+ project: input.current.project,
84
+ baseUrl: input.baseUrl,
85
+ };
86
+ }
87
+ const project = `${input.repository.owner}/${input.repository.name}`;
88
+ const baseUrl = input.baseUrl ?? input.current?.baseUrl;
89
+ return {
90
+ project,
91
+ ...(baseUrl === undefined ? {} : { baseUrl }),
92
+ };
93
+ },
94
+ projectRepository: (settings) => {
95
+ const parts = settings.project.split("/");
96
+ return {
97
+ owner: parts.slice(0, -1).join("/"),
98
+ name: parts.at(-1) ?? settings.project,
99
+ };
100
+ },
101
+ },
79
102
  auth: {
80
103
  materials: bearerMaterialHandlers(),
81
104
  ambient: async (env, exec) => await ambientToken({
@@ -97,6 +120,7 @@ export function gitlab() {
97
120
  connect: async ({ settings, authorization, ports, connectionId }) => createGitLabSession(settings, authorization, ports, connectionId),
98
121
  workItems: createCodeHostWorkItems,
99
122
  repository: createCodeHostRepository,
123
+ repositoryHost: createCodeHostRepositoryHost,
100
124
  account: createCodeHostAccount,
101
125
  });
102
126
  }
@@ -285,16 +309,16 @@ function gitLabStrategy(settings) {
285
309
  provisionRequest: async (transport, input) => {
286
310
  const namespace = await transport.request({
287
311
  method: HTTP_METHOD.get,
288
- path: `/namespaces/${encodeURIComponent(input.owner)}`,
312
+ path: `/namespaces/${encodeURIComponent(input.ref.owner)}`,
289
313
  resource: CODE_HOST_RESOURCE.namespace,
290
314
  }, rawGitLabNamespaceCodec);
291
315
  return {
292
316
  method: HTTP_METHOD.post,
293
317
  path: "/projects",
294
318
  body: {
295
- name: input.name,
319
+ name: input.ref.name,
296
320
  namespace_id: namespace.id,
297
- visibility: input.private === false
321
+ visibility: input.isPrivate === false
298
322
  ? GITLAB_VISIBILITY.public
299
323
  : GITLAB_VISIBILITY.private,
300
324
  description: input.description ?? "",
@@ -345,9 +369,9 @@ function gitLabStrategy(settings) {
345
369
  });
346
370
  },
347
371
  paths: {
348
- repository: () => ({
372
+ repository: (ref) => ({
349
373
  method: HTTP_METHOD.get,
350
- path: projectPath,
374
+ path: `/projects/${encodeURIComponent(`${ref.owner}/${ref.name}`)}`,
351
375
  resource: CODE_HOST_RESOURCE.repository,
352
376
  }),
353
377
  workItemWebUrl: (number) => `${webBaseUrl}/-/issues/${number}`,
@@ -61,12 +61,12 @@ export async function orgOrUserRepositoryRequest(transport, input) {
61
61
  }, rawViewerCodec);
62
62
  return {
63
63
  method: HTTP_METHOD.post,
64
- path: viewer.login === input.owner
64
+ path: viewer.login === input.ref.owner
65
65
  ? "/user/repos"
66
- : `/orgs/${encodeURIComponent(input.owner)}/repos`,
66
+ : `/orgs/${encodeURIComponent(input.ref.owner)}/repos`,
67
67
  body: {
68
- name: input.name,
69
- private: input.private ?? false,
68
+ name: input.ref.name,
69
+ private: input.isPrivate,
70
70
  description: input.description ?? "",
71
71
  },
72
72
  resource: CODE_HOST_RESOURCE.repository,
@@ -12,4 +12,5 @@ export declare function normalizePullRequest(raw: RawPullRequest, repository: Re
12
12
  export declare function normalizeCommit(raw: RawCommit): PullRequestCommit;
13
13
  export declare function normalizeDependencyIssue(raw: RawDependencyIssue, repository: RepositoryRef): WorkItemDependency;
14
14
  export declare function normalizeUser(raw: RawUser): UserRef;
15
+ export declare function isBot(raw: RawUser): boolean;
15
16
  //# sourceMappingURL=normalize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/code-hosts/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EAEjB,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,cAAc,EAEf,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,WAAW,EACZ,MAAM,cAAc,CAAC;AAOtB,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,uBAAuB,GAClC,cAAc,CAqBhB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAEzE;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,YAAY,GACvB,aAAa,CA8Bf;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,uBAAuB,GAClC,iBAAiB,CAkCnB;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,iBAAiB,CASjE;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,kBAAkB,EACvB,UAAU,EAAE,aAAa,GACxB,kBAAkB,CAapB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMnD"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/code-hosts/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EAEjB,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,cAAc,EAEf,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,WAAW,EACZ,MAAM,cAAc,CAAC;AAOtB,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,uBAAuB,GAClC,cAAc,CAqBhB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAEzE;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,YAAY,GACvB,aAAa,CA8Bf;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,uBAAuB,GAClC,iBAAiB,CAkCnB;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,iBAAiB,CASjE;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,kBAAkB,EACvB,UAAU,EAAE,aAAa,GACxB,kBAAkB,CAapB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMnD;AAiDD,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAI3C"}
@@ -155,7 +155,7 @@ function repositoryFromPath(value) {
155
155
  ? null
156
156
  : { owner: value.slice(0, separator), name: value.slice(separator + 1) };
157
157
  }
158
- function isBot(raw) {
158
+ export function isBot(raw) {
159
159
  return (raw.type?.toLowerCase() === BOT_TYPE || raw.login.endsWith(BOT_LOGIN_SUFFIX));
160
160
  }
161
161
  function repositoryKey(repository) {
@@ -921,9 +921,141 @@ export declare const rawGitLabApprovalsCodec: import("@alpacakit/core").RuntimeC
921
921
  approved?: boolean | undefined;
922
922
  approvals_left?: number | undefined;
923
923
  }>;
924
+ declare const rawGiteaReviewSchema: z.ZodObject<{
925
+ id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
926
+ state: z.ZodString;
927
+ body: z.ZodOptional<z.ZodString>;
928
+ html_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
929
+ user: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodObject<{
930
+ login: z.ZodOptional<z.ZodString>;
931
+ username: z.ZodOptional<z.ZodString>;
932
+ name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
933
+ full_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
934
+ html_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
935
+ web_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
936
+ type: z.ZodOptional<z.ZodString>;
937
+ }, z.core.$strip>, z.ZodTransform<{
938
+ login: string;
939
+ displayName: string | null;
940
+ url: string | null;
941
+ type: string | null;
942
+ }, {
943
+ login?: string | undefined;
944
+ username?: string | undefined;
945
+ name?: string | null | undefined;
946
+ full_name?: string | null | undefined;
947
+ html_url?: string | null | undefined;
948
+ web_url?: string | null | undefined;
949
+ type?: string | undefined;
950
+ }>>>>;
951
+ commit_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
952
+ stale: z.ZodOptional<z.ZodBoolean>;
953
+ dismissed: z.ZodOptional<z.ZodBoolean>;
954
+ comments_count: z.ZodOptional<z.ZodNumber>;
955
+ submitted_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
956
+ updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
957
+ }, z.core.$strip>;
924
958
  export declare const rawGiteaReviewListCodec: import("@alpacakit/core").RuntimeCodec<{
959
+ id: string | number;
925
960
  state: string;
961
+ body?: string | undefined;
962
+ html_url?: string | null | undefined;
963
+ user?: {
964
+ login: string;
965
+ displayName: string | null;
966
+ url: string | null;
967
+ type: string | null;
968
+ } | null | undefined;
926
969
  commit_id?: string | null | undefined;
970
+ stale?: boolean | undefined;
971
+ dismissed?: boolean | undefined;
972
+ comments_count?: number | undefined;
973
+ submitted_at?: string | null | undefined;
974
+ updated_at?: string | null | undefined;
975
+ }[]>;
976
+ declare const rawGiteaReviewCommentSchema: z.ZodObject<{
977
+ id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
978
+ body: z.ZodOptional<z.ZodString>;
979
+ html_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
980
+ user: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodObject<{
981
+ login: z.ZodOptional<z.ZodString>;
982
+ username: z.ZodOptional<z.ZodString>;
983
+ name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
984
+ full_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
985
+ html_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
986
+ web_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
987
+ type: z.ZodOptional<z.ZodString>;
988
+ }, z.core.$strip>, z.ZodTransform<{
989
+ login: string;
990
+ displayName: string | null;
991
+ url: string | null;
992
+ type: string | null;
993
+ }, {
994
+ login?: string | undefined;
995
+ username?: string | undefined;
996
+ name?: string | null | undefined;
997
+ full_name?: string | null | undefined;
998
+ html_url?: string | null | undefined;
999
+ web_url?: string | null | undefined;
1000
+ type?: string | undefined;
1001
+ }>>>>;
1002
+ resolver: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodObject<{
1003
+ login: z.ZodOptional<z.ZodString>;
1004
+ username: z.ZodOptional<z.ZodString>;
1005
+ name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1006
+ full_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1007
+ html_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1008
+ web_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1009
+ type: z.ZodOptional<z.ZodString>;
1010
+ }, z.core.$strip>, z.ZodTransform<{
1011
+ login: string;
1012
+ displayName: string | null;
1013
+ url: string | null;
1014
+ type: string | null;
1015
+ }, {
1016
+ login?: string | undefined;
1017
+ username?: string | undefined;
1018
+ name?: string | null | undefined;
1019
+ full_name?: string | null | undefined;
1020
+ html_url?: string | null | undefined;
1021
+ web_url?: string | null | undefined;
1022
+ type?: string | undefined;
1023
+ }>>>>;
1024
+ pull_request_review_id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
1025
+ created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1026
+ updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1027
+ path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1028
+ commit_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1029
+ original_commit_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1030
+ position: z.ZodOptional<z.ZodNumber>;
1031
+ original_position: z.ZodOptional<z.ZodNumber>;
1032
+ in_reply_to_id: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
1033
+ }, z.core.$strip>;
1034
+ export declare const rawGiteaReviewCommentListCodec: import("@alpacakit/core").RuntimeCodec<{
1035
+ id: string | number;
1036
+ pull_request_review_id: string | number;
1037
+ body?: string | undefined;
1038
+ html_url?: string | null | undefined;
1039
+ user?: {
1040
+ login: string;
1041
+ displayName: string | null;
1042
+ url: string | null;
1043
+ type: string | null;
1044
+ } | null | undefined;
1045
+ resolver?: {
1046
+ login: string;
1047
+ displayName: string | null;
1048
+ url: string | null;
1049
+ type: string | null;
1050
+ } | null | undefined;
1051
+ created_at?: string | null | undefined;
1052
+ updated_at?: string | null | undefined;
1053
+ path?: string | null | undefined;
1054
+ commit_id?: string | null | undefined;
1055
+ original_commit_id?: string | null | undefined;
1056
+ position?: number | undefined;
1057
+ original_position?: number | undefined;
1058
+ in_reply_to_id?: string | number | null | undefined;
927
1059
  }[]>;
928
1060
  declare const rawDependencyIssueSchema: z.ZodPipe<z.ZodObject<{
929
1061
  id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
@@ -993,5 +1125,7 @@ export type RawRepository = z.infer<typeof rawRepositorySchema>;
993
1125
  export type RawCommit = z.infer<typeof rawCommitSchema>;
994
1126
  export type RawUser = z.infer<typeof rawUserSchema>;
995
1127
  export type RawDependencyIssue = z.infer<typeof rawDependencyIssueSchema>;
1128
+ export type RawGiteaReview = z.infer<typeof rawGiteaReviewSchema>;
1129
+ export type RawGiteaReviewComment = z.infer<typeof rawGiteaReviewCommentSchema>;
996
1130
  export {};
997
1131
  //# sourceMappingURL=schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/code-hosts/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/code-hosts/schemas.ts"],"names":[],"mappings":"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"}
@@ -560,12 +560,41 @@ export const rawGitLabApprovalsCodec = createSchemaRuntimeCodec(z
560
560
  approvals_left: z.number().optional(),
561
561
  })
562
562
  .strip());
563
- export const rawGiteaReviewListCodec = createSchemaRuntimeCodec(z.array(z
563
+ const rawGiteaReviewSchema = z
564
564
  .object({
565
+ id: z.union([z.string(), z.number()]),
565
566
  state: z.string(),
567
+ body: z.string().optional(),
568
+ html_url: z.string().nullable().optional(),
569
+ user: rawUserSchema.nullable().optional(),
566
570
  commit_id: z.string().nullable().optional(),
571
+ stale: z.boolean().optional(),
572
+ dismissed: z.boolean().optional(),
573
+ comments_count: z.number().int().nonnegative().optional(),
574
+ submitted_at: z.string().nullable().optional(),
575
+ updated_at: z.string().nullable().optional(),
567
576
  })
568
- .strip()));
577
+ .strip();
578
+ export const rawGiteaReviewListCodec = createSchemaRuntimeCodec(z.array(rawGiteaReviewSchema));
579
+ const rawGiteaReviewCommentSchema = z
580
+ .object({
581
+ id: z.union([z.string(), z.number()]),
582
+ body: z.string().optional(),
583
+ html_url: z.string().nullable().optional(),
584
+ user: rawUserSchema.nullable().optional(),
585
+ resolver: rawUserSchema.nullable().optional(),
586
+ pull_request_review_id: z.union([z.string(), z.number()]),
587
+ created_at: z.string().nullable().optional(),
588
+ updated_at: z.string().nullable().optional(),
589
+ path: z.string().nullable().optional(),
590
+ commit_id: z.string().nullable().optional(),
591
+ original_commit_id: z.string().nullable().optional(),
592
+ position: z.number().int().nonnegative().optional(),
593
+ original_position: z.number().int().nonnegative().optional(),
594
+ in_reply_to_id: z.union([z.string(), z.number()]).nullable().optional(),
595
+ })
596
+ .strip();
597
+ export const rawGiteaReviewCommentListCodec = createSchemaRuntimeCodec(z.array(rawGiteaReviewCommentSchema));
569
598
  const rawDependencyIssueSchema = z
570
599
  .object({
571
600
  id: z.union([z.string(), z.number()]),
@@ -1,8 +1,9 @@
1
1
  import type { ChangeFeedCursor, CommentReaction } from "../ids.js";
2
- import type { ChangeFeedPage, CommentKind, CreateLabelInput, CreatePullRequestInput, CreateWorkItemInput, EnsureRepositoryInput, MergeMethod, OwnerKind, PatchWorkItemInput, PullRequestIdentity, PullRequestStatus, WorkItemLabels, WorkItemListQuery, WorkItemRelations, WorkItemSearchQuery } from "../model.js";
2
+ import type { ChangeFeedPage, CommentKind, CreateLabelInput, CreatePullRequestInput, CreateWorkItemInput, EnsureRepositoryInput, MergeMethod, OwnerKind, PatchWorkItemInput, PullRequestIdentity, PullRequestReviewContext, PullRequestStatus, RepositoryRef, WorkItemLabels, WorkItemListQuery, WorkItemRelations, WorkItemSearchQuery } from "../model.js";
3
3
  import type { HttpTransport } from "../transport/http-transport.js";
4
4
  import type { CursorCodec, Pager, RequestSpec } from "../transport/types.js";
5
5
  import type { NormalizationVocabulary } from "./normalize.js";
6
+ import type { RawPullRequest } from "./schemas.js";
6
7
  import type { TimestampChangeFeedPosition } from "./timestamp-change-feed.js";
7
8
  import type { CODE_HOST_LABEL_KIND } from "./values.js";
8
9
  export type CodeHostScope = {
@@ -11,7 +12,7 @@ export type CodeHostScope = {
11
12
  readonly apiBaseUrl: string;
12
13
  };
13
14
  export type CodeHostPaths = {
14
- readonly repository: () => RequestSpec;
15
+ readonly repository: (ref: RepositoryRef) => RequestSpec;
15
16
  readonly workItems: {
16
17
  readonly get: (number: string) => RequestSpec;
17
18
  readonly list: (query: WorkItemListQuery) => RequestSpec;
@@ -77,6 +78,11 @@ export type CodeHostCustomChangeFeed = {
77
78
  readonly poll: (transport: HttpTransport, cursor: ChangeFeedCursor | null) => Promise<ChangeFeedPage>;
78
79
  };
79
80
  export type CodeHostChangeFeed = CodeHostTimestampChangeFeed | CodeHostCustomChangeFeed;
81
+ export type CodeHostPullRequestSnapshot = {
82
+ readonly pullRequest: RawPullRequest;
83
+ readonly status: PullRequestStatus;
84
+ readonly reviewContext: PullRequestReviewContext;
85
+ };
80
86
  export type CodeHostStrategy = {
81
87
  readonly scope: CodeHostScope;
82
88
  readonly vocabulary: NormalizationVocabulary;
@@ -89,6 +95,7 @@ export type CodeHostStrategy = {
89
95
  readonly ownerKind: OwnerKind;
90
96
  readonly labels: CodeHostLabels;
91
97
  readonly pullRequestStatus: (transport: HttpTransport, number: string) => Promise<PullRequestStatus | null>;
98
+ readonly pullRequestSnapshot?: (transport: HttpTransport, number: string) => Promise<CodeHostPullRequestSnapshot | null>;
92
99
  readonly changeFeed: CodeHostChangeFeed;
93
100
  readonly workItemRelations: (transport: HttpTransport) => WorkItemRelations;
94
101
  readonly markReadyForReview?: (transport: HttpTransport, number: string) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/code-hosts/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,WAAW,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC;QAC9C,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,WAAW,CAAC;QACzD,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,WAAW,CAAC;KAC9D,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC;QAC/C,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC;QAC/D,QAAQ,CAAC,MAAM,EAAE,CACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,KACT,WAAW,CAAC;QACjB,QAAQ,CAAC,WAAW,EAChB,CAAC,CACC,MAAM,EAAE,MAAM,KACX,KAAK,CAAC;YAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;YAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;SAAE,CAAC,CAAC,GACvE,IAAI,CAAC;KACV,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC;QAChE,QAAQ,CAAC,GAAG,EAAE,CACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,eAAe,KACtB,WAAW,CAAC;KAClB,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,WAAW,CAAC;QAC9D,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC;QAC9C,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC;QACvD,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC;QAClD,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,WAAW,CAAC;QACjE,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,WAAW,CAAC;QAChE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,WAAW,CAAC;QACrE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC;KACjD,CAAC;IACF,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,WAAW,CAAC;KACtE,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC;QACnC,QAAQ,CAAC,UAAU,EAAE;YACnB,QAAQ,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,WAAW,CAAC;SACtD,GAAG,IAAI,CAAC;KACV,CAAC;IACF,QAAQ,CAAC,UAAU,EAAE,MAAM,WAAW,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,oBAAoB,CAAC,SAAS,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,WAAW,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAS,WAAW,EAAE,CAAC;IAC1E,QAAQ,CAAC,MAAM,EAAE,CACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,KACZ,SAAS,WAAW,EAAE,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,WAAW,CAAC;IAC/D,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,WAAW,CAAC;CAC3D,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,oBAAoB,CAAC,MAAM,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,cAAc,CAAC;CAC/D,CAAC;AAEN,eAAO,MAAM,0BAA0B;;;CAG7B,CAAC;AAEX,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,IAAI,EAAE,OAAO,0BAA0B,CAAC,SAAS,CAAC;IAC3D,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,2BAA2B,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,0BAA0B,CAAC,MAAM,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,CACtB,SAAS,EAAE,aAAa,KACrB,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,CACb,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,gBAAgB,GAAG,IAAI,KAC5B,OAAO,CAAC,cAAc,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,2BAA2B,GAC3B,wBAAwB,CAAC;AAE7B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,SAAS,eAAe,EAAE,CAAC;IACxD,QAAQ,CAAC,qBAAqB,EAAE,SAAS,WAAW,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,iBAAiB,CAAC;IAC5E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAC5B,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAC5B,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,QAAQ,CAAC,gBAAgB,EAAE,CACzB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,qBAAqB,KACzB,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1B,QAAQ,CAAC,qBAAqB,EAAE,CAC9B,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,mBAAmB,KACvB,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1B,QAAQ,CAAC,oBAAoB,EAAE,CAC7B,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,kBAAkB,KACtB,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1B,QAAQ,CAAC,2BAA2B,EAAE,CACpC,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,KACb,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,CACtB,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,KACb,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,CACvB,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,eAAe,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC;AAEF,wBAAgB,SAAS,CACvB,GAAG,EAAE,OAAO,WAAW,EAAE,WAAW,GAAG,OAAO,WAAW,EAAE,cAAc,GACxE,MAAM,CAGR"}
1
+ {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/code-hosts/strategy.ts"],"names":[],"mappings":"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"}