@relayflows/github-primitive 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DESIGN.md +1054 -0
- package/README.md +129 -0
- package/dist/actions/branches.d.ts +13 -0
- package/dist/actions/branches.d.ts.map +1 -0
- package/dist/actions/branches.js +59 -0
- package/dist/actions/branches.js.map +1 -0
- package/dist/actions/commits.d.ts +15 -0
- package/dist/actions/commits.d.ts.map +1 -0
- package/dist/actions/commits.js +71 -0
- package/dist/actions/commits.js.map +1 -0
- package/dist/actions/files.d.ts +40 -0
- package/dist/actions/files.d.ts.map +1 -0
- package/dist/actions/files.js +133 -0
- package/dist/actions/files.js.map +1 -0
- package/dist/actions/issues.d.ts +29 -0
- package/dist/actions/issues.d.ts.map +1 -0
- package/dist/actions/issues.js +120 -0
- package/dist/actions/issues.js.map +1 -0
- package/dist/actions/pulls.d.ts +40 -0
- package/dist/actions/pulls.d.ts.map +1 -0
- package/dist/actions/pulls.js +169 -0
- package/dist/actions/pulls.js.map +1 -0
- package/dist/actions/repos.d.ts +18 -0
- package/dist/actions/repos.d.ts.map +1 -0
- package/dist/actions/repos.js +70 -0
- package/dist/actions/repos.js.map +1 -0
- package/dist/actions/users.d.ts +13 -0
- package/dist/actions/users.d.ts.map +1 -0
- package/dist/actions/users.js +51 -0
- package/dist/actions/users.js.map +1 -0
- package/dist/actions/utils.d.ts +39 -0
- package/dist/actions/utils.d.ts.map +1 -0
- package/dist/actions/utils.js +173 -0
- package/dist/actions/utils.js.map +1 -0
- package/dist/adapter.d.ts +49 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +493 -0
- package/dist/adapter.js.map +1 -0
- package/dist/client.d.ts +149 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +254 -0
- package/dist/client.js.map +1 -0
- package/dist/cloud-runtime.d.ts +31 -0
- package/dist/cloud-runtime.d.ts.map +1 -0
- package/dist/cloud-runtime.js +202 -0
- package/dist/cloud-runtime.js.map +1 -0
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +8 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/local-runtime.d.ts +46 -0
- package/dist/local-runtime.d.ts.map +1 -0
- package/dist/local-runtime.js +225 -0
- package/dist/local-runtime.js.map +1 -0
- package/dist/types.d.ts +513 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +50 -0
- package/dist/types.js.map +1 -0
- package/docs/actions.md +49 -0
- package/examples/github-client.ts +38 -0
- package/package.json +43 -0
- package/templates/repository-inspection.yaml +28 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { asArray, asRecord, assertNonEmptyString, assertOwnerRepo, assertPositiveInteger, booleanValue, hasDefinedValue, mapGitHubOwner, mapLogin, mapLogins, numberValue, optionalRecord, optionalString, queryWithPerPage, removeUndefinedValues, repoEndpoint, stateValue, stringValue, withActionError, } from './utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* List repository issues.
|
|
4
|
+
*
|
|
5
|
+
* Pull requests are excluded from the repository issues endpoint response so
|
|
6
|
+
* callers receive only true issues. Local and cloud runtimes are handled by the
|
|
7
|
+
* provided adapter.
|
|
8
|
+
*/
|
|
9
|
+
export async function listIssues(adapter, owner, repo, options = {}) {
|
|
10
|
+
return withActionError(`list GitHub issues for ${owner}/${repo}`, async () => {
|
|
11
|
+
assertOwnerRepo(owner, repo);
|
|
12
|
+
const query = queryWithPerPage({
|
|
13
|
+
state: options.state,
|
|
14
|
+
assignee: options.assignee,
|
|
15
|
+
labels: options.labels,
|
|
16
|
+
sort: options.sort,
|
|
17
|
+
direction: options.direction,
|
|
18
|
+
}, options.perPage);
|
|
19
|
+
const response = await adapter.request('GET', repoEndpoint(owner, repo, '/issues'), {
|
|
20
|
+
query,
|
|
21
|
+
});
|
|
22
|
+
return asArray(response, 'issues').filter(isIssueResponse).map(mapIssue);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create an issue in a repository.
|
|
27
|
+
*
|
|
28
|
+
* The request body is sent through the adapter request layer, allowing the
|
|
29
|
+
* local `gh api` runtime and the cloud proxy runtime to share the same action.
|
|
30
|
+
*/
|
|
31
|
+
export async function createIssue(adapter, owner, repo, title, body, options = {}) {
|
|
32
|
+
return withActionError(`create GitHub issue in ${owner}/${repo}`, async () => {
|
|
33
|
+
assertOwnerRepo(owner, repo);
|
|
34
|
+
const issueTitle = assertNonEmptyString(title, 'issue title');
|
|
35
|
+
const response = await adapter.request('POST', repoEndpoint(owner, repo, '/issues'), {
|
|
36
|
+
body: removeUndefinedValues({
|
|
37
|
+
title: issueTitle,
|
|
38
|
+
body,
|
|
39
|
+
assignees: options.assignee ? [options.assignee] : undefined,
|
|
40
|
+
labels: options.labels,
|
|
41
|
+
milestone: options.milestone,
|
|
42
|
+
}),
|
|
43
|
+
});
|
|
44
|
+
return mapIssue(response);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Update an existing issue.
|
|
49
|
+
*
|
|
50
|
+
* At least one update field must be supplied. Supported updates include title,
|
|
51
|
+
* body, state, assignee, and labels.
|
|
52
|
+
*/
|
|
53
|
+
export async function updateIssue(adapter, owner, repo, number, updates) {
|
|
54
|
+
return withActionError(`update GitHub issue #${number} in ${owner}/${repo}`, async () => {
|
|
55
|
+
assertOwnerRepo(owner, repo);
|
|
56
|
+
assertPositiveInteger(number, 'issue number');
|
|
57
|
+
if (!hasDefinedValue(updates)) {
|
|
58
|
+
throw new Error('At least one issue update field must be provided.');
|
|
59
|
+
}
|
|
60
|
+
const response = await adapter.request('PATCH', repoEndpoint(owner, repo, `/issues/${number}`), {
|
|
61
|
+
body: removeUndefinedValues({
|
|
62
|
+
title: updates.title,
|
|
63
|
+
body: updates.body,
|
|
64
|
+
state: updates.state,
|
|
65
|
+
assignees: updates.assignee ? [updates.assignee] : undefined,
|
|
66
|
+
labels: updates.labels,
|
|
67
|
+
}),
|
|
68
|
+
});
|
|
69
|
+
return mapIssue(response);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
export function mapIssue(value) {
|
|
73
|
+
const issue = asRecord(value, 'issue');
|
|
74
|
+
const milestone = optionalRecord(issue.milestone);
|
|
75
|
+
const reactions = optionalRecord(issue.reactions);
|
|
76
|
+
return {
|
|
77
|
+
number: numberValue(issue.number),
|
|
78
|
+
id: numberValue(issue.id),
|
|
79
|
+
title: stringValue(issue.title),
|
|
80
|
+
body: optionalString(issue.body),
|
|
81
|
+
user: mapGitHubOwner(issue.user),
|
|
82
|
+
labels: Array.isArray(issue.labels) ? issue.labels.map(mapIssueLabel) : [],
|
|
83
|
+
state: stateValue(issue.state),
|
|
84
|
+
locked: booleanValue(issue.locked),
|
|
85
|
+
assignee: issue.assignee ? mapLogin(issue.assignee) : undefined,
|
|
86
|
+
assignees: mapLogins(issue.assignees),
|
|
87
|
+
milestone: milestone
|
|
88
|
+
? {
|
|
89
|
+
number: numberValue(milestone.number),
|
|
90
|
+
title: stringValue(milestone.title),
|
|
91
|
+
}
|
|
92
|
+
: undefined,
|
|
93
|
+
commentsCount: numberValue(issue.comments),
|
|
94
|
+
createdAt: stringValue(issue.created_at),
|
|
95
|
+
updatedAt: stringValue(issue.updated_at),
|
|
96
|
+
closedAt: optionalString(issue.closed_at),
|
|
97
|
+
authorAssociation: stringValue(issue.author_association),
|
|
98
|
+
reactions: {
|
|
99
|
+
totalCount: numberValue(reactions?.total_count),
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function mapIssueLabel(value) {
|
|
104
|
+
if (typeof value === 'string') {
|
|
105
|
+
return {
|
|
106
|
+
name: value,
|
|
107
|
+
color: '',
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const label = asRecord(value, 'issue label');
|
|
111
|
+
return {
|
|
112
|
+
name: stringValue(label.name),
|
|
113
|
+
color: stringValue(label.color),
|
|
114
|
+
description: optionalString(label.description),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function isIssueResponse(value) {
|
|
118
|
+
return !('pull_request' in asRecord(value, 'issue'));
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/actions/issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { CreatePRParams, ListPRsParams, MergePRParams, PR, UpdatePRParams } from '../types.js';
|
|
2
|
+
import { type GitHubActionAdapter } from './utils.js';
|
|
3
|
+
export type ListPROptions = Omit<ListPRsParams, 'owner' | 'repo'>;
|
|
4
|
+
export type CreatePROptions = Omit<CreatePRParams, 'owner' | 'repo' | 'title' | 'body' | 'base' | 'head'>;
|
|
5
|
+
export type PullRequestUpdates = Omit<UpdatePRParams, 'owner' | 'repo' | 'pullNumber'>;
|
|
6
|
+
/**
|
|
7
|
+
* List pull requests for a repository.
|
|
8
|
+
*
|
|
9
|
+
* Query options are mapped to GitHub REST parameters and the adapter determines
|
|
10
|
+
* whether the call is executed through `gh api` or the configured cloud proxy.
|
|
11
|
+
*/
|
|
12
|
+
export declare function listPRs(adapter: GitHubActionAdapter, owner: string, repo: string, options?: ListPROptions): Promise<PR[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Fetch a single pull request by number.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getPR(adapter: GitHubActionAdapter, owner: string, repo: string, number: number): Promise<PR>;
|
|
17
|
+
/**
|
|
18
|
+
* Create a pull request.
|
|
19
|
+
*
|
|
20
|
+
* The supplied base and head refs are passed directly to the GitHub REST API,
|
|
21
|
+
* supporting same-repository branches and owner-qualified fork refs.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createPR(adapter: GitHubActionAdapter, owner: string, repo: string, title: string, body: string | undefined, base: string, head: string, options?: CreatePROptions): Promise<PR>;
|
|
24
|
+
/**
|
|
25
|
+
* Update an existing pull request.
|
|
26
|
+
*
|
|
27
|
+
* At least one update field must be provided. GitHub accepts base branch
|
|
28
|
+
* changes and maintainer edit permissions through the same endpoint.
|
|
29
|
+
*/
|
|
30
|
+
export declare function updatePR(adapter: GitHubActionAdapter, owner: string, repo: string, number: number, updates: PullRequestUpdates): Promise<PR>;
|
|
31
|
+
/**
|
|
32
|
+
* Merge a pull request and return the fresh pull request representation.
|
|
33
|
+
*
|
|
34
|
+
* GitHub's merge endpoint returns a small confirmation payload, so this action
|
|
35
|
+
* fetches the pull request after a successful merge to preserve the typed PR
|
|
36
|
+
* return value used by the primitive.
|
|
37
|
+
*/
|
|
38
|
+
export declare function mergePR(adapter: GitHubActionAdapter, owner: string, repo: string, number: number, options?: Omit<MergePRParams, 'owner' | 'repo' | 'pullNumber'>): Promise<PR>;
|
|
39
|
+
export declare function mapPR(value: unknown): PR;
|
|
40
|
+
//# sourceMappingURL=pulls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pulls.d.ts","sourceRoot":"","sources":["../../src/actions/pulls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAoBL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAC1G,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC,CAAC;AAEvF;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,EAAE,EAAE,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,KAAK,CACzB,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,EAAE,CAAC,CAQb;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,EAAE,CAAC,CAmBb;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,EAAE,CAAC,CAqBb;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,YAAY,CAAM,GACjE,OAAO,CAAC,EAAE,CAAC,CAeb;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,CAkDxC"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { asArray, asRecord, assertNonEmptyString, assertOwnerRepo, assertPositiveInteger, booleanValue, mapGitHubOwner, mapLogin, mapLogins, numberValue, hasDefinedValue, optionalRecord, optionalString, queryWithPerPage, removeUndefinedValues, repoEndpoint, stateValue, stringValue, withActionError, } from './utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* List pull requests for a repository.
|
|
4
|
+
*
|
|
5
|
+
* Query options are mapped to GitHub REST parameters and the adapter determines
|
|
6
|
+
* whether the call is executed through `gh api` or the configured cloud proxy.
|
|
7
|
+
*/
|
|
8
|
+
export async function listPRs(adapter, owner, repo, options = {}) {
|
|
9
|
+
return withActionError(`list GitHub pull requests for ${owner}/${repo}`, async () => {
|
|
10
|
+
assertOwnerRepo(owner, repo);
|
|
11
|
+
const query = queryWithPerPage({
|
|
12
|
+
state: options.state,
|
|
13
|
+
base: options.base,
|
|
14
|
+
head: options.head,
|
|
15
|
+
sort: options.sort,
|
|
16
|
+
direction: options.direction,
|
|
17
|
+
}, options.perPage);
|
|
18
|
+
const response = await adapter.request('GET', repoEndpoint(owner, repo, '/pulls'), {
|
|
19
|
+
query,
|
|
20
|
+
});
|
|
21
|
+
return asArray(response, 'pull requests').map(mapPR);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Fetch a single pull request by number.
|
|
26
|
+
*/
|
|
27
|
+
export async function getPR(adapter, owner, repo, number) {
|
|
28
|
+
return withActionError(`get GitHub pull request #${number} in ${owner}/${repo}`, async () => {
|
|
29
|
+
assertOwnerRepo(owner, repo);
|
|
30
|
+
assertPositiveInteger(number, 'pull request number');
|
|
31
|
+
const response = await adapter.request('GET', repoEndpoint(owner, repo, `/pulls/${number}`));
|
|
32
|
+
return mapPR(response);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create a pull request.
|
|
37
|
+
*
|
|
38
|
+
* The supplied base and head refs are passed directly to the GitHub REST API,
|
|
39
|
+
* supporting same-repository branches and owner-qualified fork refs.
|
|
40
|
+
*/
|
|
41
|
+
export async function createPR(adapter, owner, repo, title, body, base, head, options = {}) {
|
|
42
|
+
return withActionError(`create GitHub pull request in ${owner}/${repo}`, async () => {
|
|
43
|
+
assertOwnerRepo(owner, repo);
|
|
44
|
+
const prTitle = assertNonEmptyString(title, 'pull request title');
|
|
45
|
+
const baseRef = assertNonEmptyString(base, 'pull request base');
|
|
46
|
+
const headRef = assertNonEmptyString(head, 'pull request head');
|
|
47
|
+
const response = await adapter.request('POST', repoEndpoint(owner, repo, '/pulls'), {
|
|
48
|
+
body: removeUndefinedValues({
|
|
49
|
+
title: prTitle,
|
|
50
|
+
body,
|
|
51
|
+
base: baseRef,
|
|
52
|
+
head: headRef,
|
|
53
|
+
draft: options.draft,
|
|
54
|
+
maintainer_can_modify: options.maintainerCanModify,
|
|
55
|
+
}),
|
|
56
|
+
});
|
|
57
|
+
return mapPR(response);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Update an existing pull request.
|
|
62
|
+
*
|
|
63
|
+
* At least one update field must be provided. GitHub accepts base branch
|
|
64
|
+
* changes and maintainer edit permissions through the same endpoint.
|
|
65
|
+
*/
|
|
66
|
+
export async function updatePR(adapter, owner, repo, number, updates) {
|
|
67
|
+
return withActionError(`update GitHub pull request #${number} in ${owner}/${repo}`, async () => {
|
|
68
|
+
assertOwnerRepo(owner, repo);
|
|
69
|
+
assertPositiveInteger(number, 'pull request number');
|
|
70
|
+
if (!hasDefinedValue(updates)) {
|
|
71
|
+
throw new Error('At least one pull request update field must be provided.');
|
|
72
|
+
}
|
|
73
|
+
const response = await adapter.request('PATCH', repoEndpoint(owner, repo, `/pulls/${number}`), {
|
|
74
|
+
body: removeUndefinedValues({
|
|
75
|
+
title: updates.title,
|
|
76
|
+
body: updates.body,
|
|
77
|
+
state: updates.state,
|
|
78
|
+
base: updates.base,
|
|
79
|
+
maintainer_can_modify: updates.maintainerCanModify,
|
|
80
|
+
}),
|
|
81
|
+
});
|
|
82
|
+
return mapPR(response);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Merge a pull request and return the fresh pull request representation.
|
|
87
|
+
*
|
|
88
|
+
* GitHub's merge endpoint returns a small confirmation payload, so this action
|
|
89
|
+
* fetches the pull request after a successful merge to preserve the typed PR
|
|
90
|
+
* return value used by the primitive.
|
|
91
|
+
*/
|
|
92
|
+
export async function mergePR(adapter, owner, repo, number, options = {}) {
|
|
93
|
+
return withActionError(`merge GitHub pull request #${number} in ${owner}/${repo}`, async () => {
|
|
94
|
+
assertOwnerRepo(owner, repo);
|
|
95
|
+
assertPositiveInteger(number, 'pull request number');
|
|
96
|
+
await adapter.request('PUT', repoEndpoint(owner, repo, `/pulls/${number}/merge`), {
|
|
97
|
+
body: removeUndefinedValues({
|
|
98
|
+
commit_title: options.commitTitle,
|
|
99
|
+
commit_message: options.commitMessage,
|
|
100
|
+
merge_method: options.mergeMethod,
|
|
101
|
+
}),
|
|
102
|
+
});
|
|
103
|
+
return getPR(adapter, owner, repo, number);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
export function mapPR(value) {
|
|
107
|
+
const pull = asRecord(value, 'pull request');
|
|
108
|
+
const base = asRecord(pull.base, 'pull request base');
|
|
109
|
+
const head = asRecord(pull.head, 'pull request head');
|
|
110
|
+
const baseRepo = optionalRecord(base.repo);
|
|
111
|
+
const headRepo = optionalRecord(head.repo);
|
|
112
|
+
return {
|
|
113
|
+
number: numberValue(pull.number),
|
|
114
|
+
id: numberValue(pull.id),
|
|
115
|
+
title: stringValue(pull.title),
|
|
116
|
+
body: optionalString(pull.body),
|
|
117
|
+
user: mapGitHubOwner(pull.user),
|
|
118
|
+
state: stateValue(pull.state),
|
|
119
|
+
draft: booleanValue(pull.draft),
|
|
120
|
+
locked: booleanValue(pull.locked),
|
|
121
|
+
mergeable: typeof pull.mergeable === 'boolean' ? pull.mergeable : undefined,
|
|
122
|
+
mergeableState: stringValue(pull.mergeable_state),
|
|
123
|
+
merged: booleanValue(pull.merged),
|
|
124
|
+
mergedAt: optionalString(pull.merged_at),
|
|
125
|
+
mergedBy: pull.merged_by ? mapLogin(pull.merged_by) : undefined,
|
|
126
|
+
base: {
|
|
127
|
+
ref: stringValue(base.ref),
|
|
128
|
+
sha: stringValue(base.sha),
|
|
129
|
+
repo: {
|
|
130
|
+
name: stringValue(baseRepo?.name),
|
|
131
|
+
fullName: stringValue(baseRepo?.full_name),
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
head: {
|
|
135
|
+
ref: stringValue(head.ref),
|
|
136
|
+
sha: stringValue(head.sha),
|
|
137
|
+
repo: headRepo
|
|
138
|
+
? {
|
|
139
|
+
name: stringValue(headRepo.name),
|
|
140
|
+
fullName: stringValue(headRepo.full_name),
|
|
141
|
+
}
|
|
142
|
+
: undefined,
|
|
143
|
+
},
|
|
144
|
+
requestedReviewers: mapLogins(pull.requested_reviewers),
|
|
145
|
+
labels: Array.isArray(pull.labels) ? pull.labels.map(mapPullLabel) : [],
|
|
146
|
+
commentsCount: numberValue(pull.comments),
|
|
147
|
+
reviewCommentsCount: numberValue(pull.review_comments),
|
|
148
|
+
commitsCount: numberValue(pull.commits),
|
|
149
|
+
additionsCount: numberValue(pull.additions),
|
|
150
|
+
deletionsCount: numberValue(pull.deletions),
|
|
151
|
+
changedFilesCount: numberValue(pull.changed_files),
|
|
152
|
+
createdAt: stringValue(pull.created_at),
|
|
153
|
+
updatedAt: stringValue(pull.updated_at),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function mapPullLabel(value) {
|
|
157
|
+
if (typeof value === 'string') {
|
|
158
|
+
return {
|
|
159
|
+
name: value,
|
|
160
|
+
color: '',
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
const label = asRecord(value, 'pull request label');
|
|
164
|
+
return {
|
|
165
|
+
name: stringValue(label.name),
|
|
166
|
+
color: stringValue(label.color),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=pulls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pulls.js","sourceRoot":"","sources":["../../src/actions/pulls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ListReposParams, Repo } from '../types.js';
|
|
2
|
+
import { type GitHubActionAdapter } from './utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* List repositories visible to the authenticated GitHub identity.
|
|
5
|
+
*
|
|
6
|
+
* The action delegates to the supplied adapter, so local runtimes use `gh api`
|
|
7
|
+
* and cloud runtimes use the configured Nango or relay-cloud proxy.
|
|
8
|
+
*/
|
|
9
|
+
export declare function listRepos(adapter: GitHubActionAdapter, options?: ListReposParams): Promise<Repo[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Fetch a single repository by owner and repository name.
|
|
12
|
+
*
|
|
13
|
+
* The same REST endpoint is used for both local and cloud runtimes through the
|
|
14
|
+
* adapter request abstraction.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getRepo(adapter: GitHubActionAdapter, owner: string, repo: string): Promise<Repo>;
|
|
17
|
+
export declare function mapRepo(value: unknown): Repo;
|
|
18
|
+
//# sourceMappingURL=repos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repos.d.ts","sourceRoot":"","sources":["../../src/actions/repos.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAaL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,EAAE,CAAC,CAejB;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtG;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAmC5C"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { asArray, asRecord, booleanValue, mapGitHubOwner, numberValue, optionalRecord, optionalString, queryWithPerPage, repoEndpoint, stringValue, visibilityValue, withActionError, } from './utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* List repositories visible to the authenticated GitHub identity.
|
|
4
|
+
*
|
|
5
|
+
* The action delegates to the supplied adapter, so local runtimes use `gh api`
|
|
6
|
+
* and cloud runtimes use the configured Nango or relay-cloud proxy.
|
|
7
|
+
*/
|
|
8
|
+
export async function listRepos(adapter, options = {}) {
|
|
9
|
+
return withActionError('list GitHub repositories', async () => {
|
|
10
|
+
const query = queryWithPerPage({
|
|
11
|
+
visibility: options.visibility,
|
|
12
|
+
affiliation: options.affiliation,
|
|
13
|
+
sort: options.sort,
|
|
14
|
+
direction: options.direction,
|
|
15
|
+
}, options.perPage);
|
|
16
|
+
const response = await adapter.request('GET', '/user/repos', { query });
|
|
17
|
+
return asArray(response, 'repositories').map(mapRepo);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Fetch a single repository by owner and repository name.
|
|
22
|
+
*
|
|
23
|
+
* The same REST endpoint is used for both local and cloud runtimes through the
|
|
24
|
+
* adapter request abstraction.
|
|
25
|
+
*/
|
|
26
|
+
export async function getRepo(adapter, owner, repo) {
|
|
27
|
+
return withActionError(`get GitHub repository ${owner}/${repo}`, async () => {
|
|
28
|
+
const response = await adapter.request('GET', repoEndpoint(owner, repo));
|
|
29
|
+
return mapRepo(response);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export function mapRepo(value) {
|
|
33
|
+
const repo = asRecord(value, 'repository');
|
|
34
|
+
const isPrivate = booleanValue(repo.private);
|
|
35
|
+
const permissions = optionalRecord(repo.permissions);
|
|
36
|
+
return {
|
|
37
|
+
id: numberValue(repo.id),
|
|
38
|
+
name: stringValue(repo.name),
|
|
39
|
+
fullName: stringValue(repo.full_name, stringValue(repo.name)),
|
|
40
|
+
owner: mapGitHubOwner(repo.owner),
|
|
41
|
+
description: optionalString(repo.description),
|
|
42
|
+
private: isPrivate,
|
|
43
|
+
fork: booleanValue(repo.fork),
|
|
44
|
+
createdAt: stringValue(repo.created_at),
|
|
45
|
+
updatedAt: stringValue(repo.updated_at),
|
|
46
|
+
pushedAt: stringValue(repo.pushed_at),
|
|
47
|
+
size: numberValue(repo.size),
|
|
48
|
+
stargazersCount: numberValue(repo.stargazers_count),
|
|
49
|
+
watchersCount: numberValue(repo.watchers_count),
|
|
50
|
+
language: optionalString(repo.language),
|
|
51
|
+
forksCount: numberValue(repo.forks_count),
|
|
52
|
+
openIssuesCount: numberValue(repo.open_issues_count),
|
|
53
|
+
defaultBranch: stringValue(repo.default_branch),
|
|
54
|
+
topics: Array.isArray(repo.topics) ? repo.topics.filter(isString) : [],
|
|
55
|
+
visibility: visibilityValue(repo.visibility, isPrivate),
|
|
56
|
+
permissions: permissions
|
|
57
|
+
? {
|
|
58
|
+
admin: booleanValue(permissions.admin),
|
|
59
|
+
maintain: booleanValue(permissions.maintain),
|
|
60
|
+
push: booleanValue(permissions.push),
|
|
61
|
+
triage: booleanValue(permissions.triage),
|
|
62
|
+
pull: booleanValue(permissions.pull),
|
|
63
|
+
}
|
|
64
|
+
: undefined,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function isString(value) {
|
|
68
|
+
return typeof value === 'string';
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=repos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repos.js","sourceRoot":"","sources":["../../src/actions/repos.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { GetUserParams, GitHubUserSummary, ListOrganizationsParams, OrganizationInfo } from '../types.js';
|
|
2
|
+
import { type GitHubActionAdapter } from './utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* Fetch the authenticated user, or a public user by username.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getUser(adapter: GitHubActionAdapter, params?: GetUserParams): Promise<GitHubUserSummary>;
|
|
7
|
+
/**
|
|
8
|
+
* List organizations for the authenticated user, or for a public user.
|
|
9
|
+
*/
|
|
10
|
+
export declare function listOrganizations(adapter: GitHubActionAdapter, params?: ListOrganizationsParams): Promise<OrganizationInfo[]>;
|
|
11
|
+
export declare function mapUser(value: unknown): GitHubUserSummary;
|
|
12
|
+
export declare function mapOrganization(value: unknown): OrganizationInfo;
|
|
13
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/actions/users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EASL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,GAAE,aAAkB,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAQ5B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,GAAE,uBAA4B,GACnC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAW7B;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAczD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAUhE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { asArray, asRecord, assertNonEmptyString, numberValue, optionalString, queryWithPerPage, stringValue, withActionError, } from './utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Fetch the authenticated user, or a public user by username.
|
|
4
|
+
*/
|
|
5
|
+
export async function getUser(adapter, params = {}) {
|
|
6
|
+
return withActionError('get GitHub user', async () => {
|
|
7
|
+
const path = params.username
|
|
8
|
+
? `/users/${encodeURIComponent(assertNonEmptyString(params.username, 'username'))}`
|
|
9
|
+
: '/user';
|
|
10
|
+
const response = await adapter.request('GET', path);
|
|
11
|
+
return mapUser(response);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* List organizations for the authenticated user, or for a public user.
|
|
16
|
+
*/
|
|
17
|
+
export async function listOrganizations(adapter, params = {}) {
|
|
18
|
+
return withActionError('list GitHub organizations', async () => {
|
|
19
|
+
const path = params.username
|
|
20
|
+
? `/users/${encodeURIComponent(assertNonEmptyString(params.username, 'username'))}/orgs`
|
|
21
|
+
: '/user/orgs';
|
|
22
|
+
const response = await adapter.request('GET', path, {
|
|
23
|
+
query: queryWithPerPage({}, params.perPage),
|
|
24
|
+
});
|
|
25
|
+
return asArray(response, 'organizations').map(mapOrganization);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export function mapUser(value) {
|
|
29
|
+
const user = asRecord(value, 'user');
|
|
30
|
+
const login = stringValue(user.login);
|
|
31
|
+
if (!login) {
|
|
32
|
+
throw new Error('GitHub user response did not include a login.');
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
login,
|
|
36
|
+
name: optionalString(user.name),
|
|
37
|
+
id: numberValue(user.id),
|
|
38
|
+
type: optionalString(user.type),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function mapOrganization(value) {
|
|
42
|
+
const organization = asRecord(value, 'organization');
|
|
43
|
+
return {
|
|
44
|
+
login: stringValue(organization.login),
|
|
45
|
+
id: numberValue(organization.id),
|
|
46
|
+
description: optionalString(organization.description),
|
|
47
|
+
url: optionalString(organization.url),
|
|
48
|
+
avatarUrl: optionalString(organization.avatar_url),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/actions/users.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,GAEhB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAA4B,EAC5B,SAAwB,EAAE;IAE1B,OAAO,eAAe,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;YAC1B,CAAC,CAAC,UAAU,kBAAkB,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,EAAE;YACnF,CAAC,CAAC,OAAO,CAAC;QACZ,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAU,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7D,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA4B,EAC5B,SAAkC,EAAE;IAEpC,OAAO,eAAe,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;YAC1B,CAAC,CAAC,UAAU,kBAAkB,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,OAAO;YACxF,CAAC,CAAC,YAAY,CAAC;QACjB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAU,KAAK,EAAE,IAAI,EAAE;YAC3D,KAAK,EAAE,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC;SAC5C,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACL,KAAK;QACL,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAErD,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC;QACtC,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,WAAW,EAAE,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC;QACrD,GAAG,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC;QACrC,SAAS,EAAE,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC;KACnD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type GitHubApiRequestMethod, type GitHubApiRequestOptions, type GitHubOwner, type GitHubQueryParams, type GitHubRuntime } from '../types.js';
|
|
2
|
+
export interface GitHubActionAdapter {
|
|
3
|
+
getRuntime(): GitHubRuntime;
|
|
4
|
+
request<TResponse = unknown>(method: GitHubApiRequestMethod, path: string, options?: GitHubApiRequestOptions): Promise<TResponse>;
|
|
5
|
+
}
|
|
6
|
+
export type UnknownRecord = Record<string, unknown>;
|
|
7
|
+
export declare function withActionError<T>(description: string, operation: () => Promise<T>): Promise<T>;
|
|
8
|
+
export declare function assertOwnerRepo(owner: string, repo: string): void;
|
|
9
|
+
export declare function assertNonEmptyString(value: string | undefined, name: string): string;
|
|
10
|
+
export declare function assertPositiveInteger(value: number, name: string): number;
|
|
11
|
+
export declare function repoEndpoint(owner: string, repo: string, suffix?: string): string;
|
|
12
|
+
export declare function contentsEndpoint(owner: string, repo: string, path?: string): string;
|
|
13
|
+
export declare function branchEndpoint(owner: string, repo: string, branch: string): string;
|
|
14
|
+
export declare function normalizeRepoPath(path: string | undefined): string;
|
|
15
|
+
export declare function normalizePerPage(perPage: number | undefined): number | undefined;
|
|
16
|
+
export declare function removeUndefinedValues(values: Record<string, unknown>): Record<string, Exclude<unknown, undefined>>;
|
|
17
|
+
export declare function hasDefinedValue(values: Record<string, unknown>): boolean;
|
|
18
|
+
export declare function optionalRecord(value: unknown): Record<string, unknown> | undefined;
|
|
19
|
+
export declare function appendQuery(path: string, query: GitHubQueryParams | undefined): string;
|
|
20
|
+
export declare function nonEmpty(value: string | undefined): string | undefined;
|
|
21
|
+
export declare function trimTrailingSlash(value: string | undefined): string | undefined;
|
|
22
|
+
export declare function queryWithPerPage(query: GitHubQueryParams, perPage: number | undefined): GitHubQueryParams;
|
|
23
|
+
export declare function asRecord(value: unknown, name: string): UnknownRecord;
|
|
24
|
+
export declare function asArray(value: unknown, name: string): unknown[];
|
|
25
|
+
export declare function mapGitHubOwner(value: unknown): GitHubOwner;
|
|
26
|
+
export declare function mapLogin(value: unknown): {
|
|
27
|
+
login: string;
|
|
28
|
+
};
|
|
29
|
+
export declare function mapLogins(value: unknown): Array<{
|
|
30
|
+
login: string;
|
|
31
|
+
}>;
|
|
32
|
+
export declare function stringValue(value: unknown, fallback?: string): string;
|
|
33
|
+
export declare function optionalString(value: unknown): string | undefined;
|
|
34
|
+
export declare function numberValue(value: unknown, fallback?: number): number;
|
|
35
|
+
export declare function booleanValue(value: unknown, fallback?: boolean): boolean;
|
|
36
|
+
export declare function stateValue(value: unknown): 'open' | 'closed';
|
|
37
|
+
export declare function visibilityValue(value: unknown, isPrivate: boolean): 'public' | 'private' | 'internal';
|
|
38
|
+
export declare function errorMessage(error: unknown): string;
|
|
39
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/actions/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,mBAAmB;IAClC,UAAU,IAAI,aAAa,CAAC;IAC5B,OAAO,CAAC,SAAS,GAAG,OAAO,EACzB,MAAM,EAAE,sBAAsB,EAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,SAAS,CAAC,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpD,wBAAsB,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAerG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMzE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAG7E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,MAAM,CAI/E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGlF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAElE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAUhF;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAU7C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAExE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAIlF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAqBtF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGtE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG/E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAQzG;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAMpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAM/D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAS1D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAK1D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAMlE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,SAAK,GAAG,MAAM,CAEjE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,SAAI,GAAG,MAAM,CAEhE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAEtE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAE5D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAMrG;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD"}
|