@packtory/cli 0.0.44 → 0.0.45

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 (28) hide show
  1. package/command-line-interface/runner/changelog-destinations.js +42 -0
  2. package/command-line-interface/runner/changelog-destinations.js.map +1 -1
  3. package/command-line-interface/runner/release-git-client.js +15 -0
  4. package/command-line-interface/runner/release-git-client.js.map +1 -1
  5. package/command-line-interface/runner/release-output-files.js +14 -0
  6. package/command-line-interface/runner/release-output-files.js.map +1 -0
  7. package/command-line-interface/runner/release-pr-github-client.js +257 -0
  8. package/command-line-interface/runner/release-pr-github-client.js.map +1 -0
  9. package/command-line-interface/runner/release-publish-authorization.js +67 -0
  10. package/command-line-interface/runner/release-publish-authorization.js.map +1 -0
  11. package/command-line-interface/runner/release-pull-request-ci.js +105 -0
  12. package/command-line-interface/runner/release-pull-request-ci.js.map +1 -0
  13. package/command-line-interface/runner/release-pull-request-config.js +45 -0
  14. package/command-line-interface/runner/release-pull-request-config.js.map +1 -0
  15. package/command-line-interface/runner/release-pull-request-handler.js +313 -0
  16. package/command-line-interface/runner/release-pull-request-handler.js.map +1 -0
  17. package/command-line-interface/runner/release-pull-request-policy.js +47 -0
  18. package/command-line-interface/runner/release-pull-request-policy.js.map +1 -0
  19. package/command-line-interface/runner/release-pull-request-settings.js +19 -0
  20. package/command-line-interface/runner/release-pull-request-settings.js.map +1 -0
  21. package/command-line-interface/runner/runner.js +102 -3
  22. package/command-line-interface/runner/runner.js.map +1 -1
  23. package/package.json +6 -3
  24. package/packages/command-line-interface/command-line-interface.entry-point.d.ts.map +1 -1
  25. package/packages/command-line-interface/command-line-interface.entry-point.js +8 -0
  26. package/packages/command-line-interface/command-line-interface.entry-point.js.map +1 -1
  27. package/readme.md +16 -0
  28. package/sbom.cdx.json +62 -11
@@ -0,0 +1,45 @@
1
+ import { safeParse } from '@schema-hub/zod-error-formatter';
2
+ import { z } from 'zod/mini';
3
+ import { releasePullRequestSettingsSchema } from "./release-pull-request-settings.js";
4
+ const releasePullRequestConfigContainerSchema = z.readonly(z.object({ releasePullRequest: z.optional(releasePullRequestSettingsSchema) }));
5
+ const defaultReleasePullRequestConfig = {
6
+ automationAuthor: 'github-actions[bot]',
7
+ body: 'Updates changelogs for the next release.',
8
+ branch: 'release/packtory',
9
+ commitSubject: 'Release packages',
10
+ defaultBranch: 'main',
11
+ githubActionsCi: undefined,
12
+ label: 'release',
13
+ title: 'Prepare release'
14
+ };
15
+ function resolveGitHubActionsCiConfig(settings) {
16
+ if (settings === undefined) {
17
+ return undefined;
18
+ }
19
+ return {
20
+ deleteActionRequiredPullRequestRuns: settings.deleteActionRequiredPullRequestRuns ?? true,
21
+ requiredStatusContexts: settings.requiredStatusContexts,
22
+ workflowFile: settings.workflowFile
23
+ };
24
+ }
25
+ function resolveStringSetting(settings, setting) {
26
+ return settings?.[setting] ?? defaultReleasePullRequestConfig[setting];
27
+ }
28
+ export function resolveReleasePullRequestConfig(config) {
29
+ const { releasePullRequest } = config;
30
+ return {
31
+ automationAuthor: resolveStringSetting(releasePullRequest, 'automationAuthor'),
32
+ body: resolveStringSetting(releasePullRequest, 'body'),
33
+ branch: resolveStringSetting(releasePullRequest, 'branch'),
34
+ commitSubject: resolveStringSetting(releasePullRequest, 'commitSubject'),
35
+ defaultBranch: resolveStringSetting(releasePullRequest, 'defaultBranch'),
36
+ githubActionsCi: resolveGitHubActionsCiConfig(releasePullRequest?.githubActionsCi),
37
+ label: resolveStringSetting(releasePullRequest, 'label'),
38
+ title: resolveStringSetting(releasePullRequest, 'title')
39
+ };
40
+ }
41
+ export function parseReleasePullRequestConfigContainer(config) {
42
+ const result = safeParse(releasePullRequestConfigContainerSchema, config);
43
+ return result.success ? result.data : undefined;
44
+ }
45
+ //# sourceMappingURL=release-pull-request-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-pull-request-config.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pull-request-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,gCAAgC,EAAmC,MAAM,oCAAoC,CAAC;AAwBvH,MAAM,uCAAuC,GAAG,CAAC,CAAC,QAAQ,CACtD,CAAC,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC,EAAE,CAAC,CACjF,CAAC;AAEF,MAAM,+BAA+B,GAA6B;IAC9D,gBAAgB,EAAE,qBAAqB;IACvC,IAAI,EAAE,0CAA0C;IAChD,MAAM,EAAE,kBAAkB;IAC1B,aAAa,EAAE,kBAAkB;IACjC,aAAa,EAAE,MAAM;IACrB,eAAe,EAAE,SAAS;IAC1B,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,iBAAiB;CAC3B,CAAC;AAEF,SAAS,4BAA4B,CACjC,QAAuD;IAEvD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO;QACH,mCAAmC,EAAE,QAAQ,CAAC,mCAAmC,IAAI,IAAI;QACzF,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB;QACvD,YAAY,EAAE,QAAQ,CAAC,YAAY;KACtC,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CACzB,QAAgD,EAChD,OAAwC;IAExC,OAAO,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,MAAyC;IACrF,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;IACtC,OAAO;QACH,gBAAgB,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;QAC9E,IAAI,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACtD,MAAM,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,QAAQ,CAAC;QAC1D,aAAa,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,eAAe,CAAC;QACxE,aAAa,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,eAAe,CAAC;QACxE,eAAe,EAAE,4BAA4B,CAAC,kBAAkB,EAAE,eAAe,CAAC;QAClF,KAAK,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,OAAO,CAAC;QACxD,KAAK,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,OAAO,CAAC;KAC3D,CAAC;AACN,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,MAAe;IAClE,MAAM,MAAM,GAAG,SAAS,CAAC,uCAAuC,EAAE,MAAM,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC"}
@@ -0,0 +1,313 @@
1
+ import { parseValidConfig } from "./changelog-destinations.js";
2
+ import { formatGitHubRepositoryName, parseGitHubRepositoryParts } from "./github-repository.js";
3
+ import { runReleaseHandler } from "./release-handler.js";
4
+ import { authorizeReleasePublishFromCommit, authorizeReleasePublishFromPullRequest } from "./release-publish-authorization.js";
5
+ import { collectReleaseOutputFiles } from "./release-output-files.js";
6
+ import { runConfiguredGitHubActionsCi } from "./release-pull-request-ci.js";
7
+ import { parseReleasePullRequestConfigContainer, resolveReleasePullRequestConfig } from "./release-pull-request-config.js";
8
+ import { validateReleaseMergeGroupPolicy, validateReleasePullRequestPolicy } from "./release-pull-request-policy.js";
9
+ function formatHandlerError(error) {
10
+ return error instanceof Error ? error.message : String(error);
11
+ }
12
+ function readGitHubToken(dependencies) {
13
+ const token = dependencies.readEnvironmentVariable('GH_TOKEN') ?? dependencies.readEnvironmentVariable('GITHUB_TOKEN');
14
+ if (token === undefined) {
15
+ throw new Error('GH_TOKEN or GITHUB_TOKEN must be set');
16
+ }
17
+ return token;
18
+ }
19
+ function parseGitHubRepositoryName(repositoryName) {
20
+ const ownerSeparatorIndex = repositoryName.indexOf('/');
21
+ const owner = repositoryName.slice(0, ownerSeparatorIndex);
22
+ const repo = repositoryName.slice(ownerSeparatorIndex + 1);
23
+ if (!repositoryName.includes('/') || owner.length === 0 || repo.length === 0 || repo.includes('/')) {
24
+ throw new Error('GITHUB_REPOSITORY must use owner/repo format');
25
+ }
26
+ return { owner, repo };
27
+ }
28
+ async function readGitHubRepository(dependencies) {
29
+ const repositoryName = dependencies.readEnvironmentVariable('GITHUB_REPOSITORY');
30
+ if (repositoryName !== undefined) {
31
+ const { owner, repo } = parseGitHubRepositoryName(repositoryName);
32
+ return { name: repositoryName, owner, repo };
33
+ }
34
+ const packageInfo = await dependencies.readPackageInfo();
35
+ const repository = parseGitHubRepositoryParts(packageInfo);
36
+ return { ...repository, name: formatGitHubRepositoryName(packageInfo) };
37
+ }
38
+ async function createGitHubClient(dependencies) {
39
+ const repository = await readGitHubRepository(dependencies);
40
+ return {
41
+ client: dependencies.createReleasePullRequestGitHubClient({
42
+ owner: repository.owner,
43
+ repo: repository.repo,
44
+ token: readGitHubToken(dependencies)
45
+ }),
46
+ repository: repository.name
47
+ };
48
+ }
49
+ function isRecord(value) {
50
+ return typeof value === 'object' && value !== null;
51
+ }
52
+ const isGitHubEvent = isRecord;
53
+ function parseReleasePullRequestConfig(dependencies, rawConfig) {
54
+ const parsedConfig = parseValidConfig(rawConfig);
55
+ if (parsedConfig === undefined) {
56
+ throw new Error('The loaded config is invalid for release PR management');
57
+ }
58
+ const releasePullRequestConfigContainer = parseReleasePullRequestConfigContainer(rawConfig);
59
+ if (releasePullRequestConfigContainer === undefined) {
60
+ throw new Error('The loaded config is invalid for release PR management');
61
+ }
62
+ const config = resolveReleasePullRequestConfig(releasePullRequestConfigContainer);
63
+ return {
64
+ config,
65
+ policyConfig: {
66
+ allowedFiles: new Set(collectReleaseOutputFiles({ config: parsedConfig, workingDirectory: dependencies.workingDirectory })),
67
+ automationAuthor: config.automationAuthor,
68
+ branch: config.branch,
69
+ commitSubject: config.commitSubject,
70
+ defaultBranch: config.defaultBranch,
71
+ label: config.label,
72
+ title: config.title
73
+ }
74
+ };
75
+ }
76
+ async function loadReleasePullRequestConfig(dependencies) {
77
+ return parseReleasePullRequestConfig(dependencies, await dependencies.configLoader.load());
78
+ }
79
+ async function runPrepareRelease(dependencies) {
80
+ return runReleaseHandler({
81
+ createGitHubReleaseClient: dependencies.createGitHubReleaseClient,
82
+ createPrLogEngine: dependencies.createPrLogEngine,
83
+ currentDate: dependencies.currentDate,
84
+ fileManager: dependencies.fileManager,
85
+ flags: {
86
+ commit: true,
87
+ githubRelease: false,
88
+ noDryRun: true,
89
+ publish: false,
90
+ push: false,
91
+ tag: false,
92
+ writeChangelog: true
93
+ },
94
+ gitClient: dependencies.gitClient,
95
+ log: dependencies.log,
96
+ packtory: dependencies.packtory,
97
+ readEnvironmentVariable: dependencies.readEnvironmentVariable,
98
+ readPackageInfo: dependencies.readPackageInfo,
99
+ spinnerRenderer: dependencies.spinnerRenderer,
100
+ configLoader: dependencies.configLoader,
101
+ workingDirectory: dependencies.workingDirectory
102
+ });
103
+ }
104
+ async function closeReleaseState(dependencies, client, config) {
105
+ await client.closeOpenReleasePullRequests({ baseBranch: config.defaultBranch, releaseBranch: config.branch });
106
+ await dependencies.gitClient.deleteRemoteBranch(config.branch);
107
+ }
108
+ async function prepareReleasePullRequest(dependencies) {
109
+ const originalHead = await dependencies.gitClient.currentHead();
110
+ const releaseExitCode = await runPrepareRelease(dependencies);
111
+ if (releaseExitCode !== 0) {
112
+ throw new Error('Release preparation failed');
113
+ }
114
+ const releaseHead = await dependencies.gitClient.currentHead();
115
+ return releaseHead === originalHead ? undefined : releaseHead;
116
+ }
117
+ async function updateReleasePullRequest(input) {
118
+ const { client, config, dependencies, releaseHead } = input;
119
+ await dependencies.gitClient.pushHeadToBranch(config.branch);
120
+ const pullRequestNumber = await client.createOrUpdateReleasePullRequest({
121
+ baseBranch: config.defaultBranch,
122
+ body: config.body,
123
+ label: config.label,
124
+ releaseBranch: config.branch,
125
+ title: config.title
126
+ });
127
+ const ciSucceeded = await runConfiguredGitHubActionsCi({
128
+ client,
129
+ config,
130
+ headSha: releaseHead,
131
+ sleep: dependencies.sleep
132
+ });
133
+ dependencies.log(`Release PR #${pullRequestNumber} points at ${releaseHead}`);
134
+ return ciSucceeded ? 0 : 1;
135
+ }
136
+ async function finishReleasePullRequestMaintenance(input) {
137
+ if (input.releaseHead === undefined) {
138
+ await closeReleaseState(input.dependencies, input.client, input.config);
139
+ input.dependencies.log('No release content remains');
140
+ return 0;
141
+ }
142
+ return updateReleasePullRequest({
143
+ client: input.client,
144
+ config: input.config,
145
+ dependencies: input.dependencies,
146
+ releaseHead: input.releaseHead
147
+ });
148
+ }
149
+ async function runMaintain(dependencies) {
150
+ if (!dependencies.flags.noDryRun) {
151
+ dependencies.log('Release PR writes require --no-dry-run');
152
+ return 1;
153
+ }
154
+ const loadedConfig = await loadReleasePullRequestConfig(dependencies);
155
+ const { client } = await createGitHubClient(dependencies);
156
+ const releaseHead = await prepareReleasePullRequest(dependencies);
157
+ return finishReleasePullRequestMaintenance({ client, config: loadedConfig.config, dependencies, releaseHead });
158
+ }
159
+ function readRequiredEnvironmentVariable(dependencies, name) {
160
+ const value = dependencies.readEnvironmentVariable(name);
161
+ if (value === undefined || value.length === 0) {
162
+ throw new Error(`${name} must be set`);
163
+ }
164
+ return value;
165
+ }
166
+ async function readGitHubEvent(dependencies) {
167
+ const eventPath = readRequiredEnvironmentVariable(dependencies, 'GITHUB_EVENT_PATH');
168
+ const parsedEvent = JSON.parse(await dependencies.fileManager.readFile(eventPath));
169
+ if (!isGitHubEvent(parsedEvent)) {
170
+ throw new Error('GitHub event payload must be an object');
171
+ }
172
+ return parsedEvent;
173
+ }
174
+ async function toPolicyInput(input) {
175
+ const pullRequest = await input.client.getPullRequestHead(input.pullRequestNumber);
176
+ return {
177
+ author: pullRequest.author,
178
+ changedFiles: pullRequest.changedFiles,
179
+ expectedBaseSha: input.expectedBaseSha,
180
+ headRef: pullRequest.headRef,
181
+ labels: pullRequest.labels,
182
+ parentShas: pullRequest.parentShas,
183
+ subject: pullRequest.subject,
184
+ title: pullRequest.title
185
+ };
186
+ }
187
+ async function runPullRequestValidation(input) {
188
+ const pullRequestNumber = input.event.pull_request?.number;
189
+ if (pullRequestNumber === undefined) {
190
+ throw new Error('GitHub pull_request event payload is missing pull_request.number');
191
+ }
192
+ const expectedBaseSha = await input.client.getBranchHeadSha(input.config.config.defaultBranch);
193
+ const policyInput = await toPolicyInput({ client: input.client, expectedBaseSha, pullRequestNumber });
194
+ if (policyInput.labels.includes(input.config.config.label)) {
195
+ validateReleasePullRequestPolicy(policyInput, input.config.policyConfig);
196
+ }
197
+ }
198
+ async function runMergeGroupValidation(input) {
199
+ const headSha = input.event.merge_group?.head_sha;
200
+ const expectedBaseSha = input.event.merge_group?.base_sha;
201
+ if (headSha === undefined || expectedBaseSha === undefined) {
202
+ throw new Error('GitHub merge_group event payload is missing merge group SHAs');
203
+ }
204
+ const pullRequests = await input.client.listCommitPullRequests(headSha);
205
+ const policyInputs = await Promise.all(pullRequests.map(async (pullRequest) => {
206
+ return toPolicyInput({ client: input.client, expectedBaseSha, pullRequestNumber: pullRequest.number });
207
+ }));
208
+ validateReleaseMergeGroupPolicy({ pullRequests: policyInputs }, input.config.policyConfig);
209
+ }
210
+ async function validateGitHubEvent(input) {
211
+ if (input.eventName === 'pull_request') {
212
+ await runPullRequestValidation(input);
213
+ return;
214
+ }
215
+ if (input.eventName === 'merge_group') {
216
+ await runMergeGroupValidation(input);
217
+ return;
218
+ }
219
+ throw new Error('release-pr validate only supports pull_request and merge_group events');
220
+ }
221
+ async function runValidate(dependencies) {
222
+ const loadedConfig = await loadReleasePullRequestConfig(dependencies);
223
+ const { client } = await createGitHubClient(dependencies);
224
+ const eventName = readRequiredEnvironmentVariable(dependencies, 'GITHUB_EVENT_NAME');
225
+ const event = await readGitHubEvent(dependencies);
226
+ await validateGitHubEvent({ client, config: loadedConfig, event, eventName });
227
+ dependencies.log('Release PR policy passed.');
228
+ return 0;
229
+ }
230
+ function formatAuthorizationOutput(authorization) {
231
+ if (!authorization.shouldPublish) {
232
+ return ['should_publish=false'];
233
+ }
234
+ return [
235
+ 'should_publish=true',
236
+ `publish_commit_sha=${authorization.publishCommitSha}`,
237
+ `release_commit_sha=${authorization.releaseCommitSha}`,
238
+ `release_pull_request_number=${authorization.releasePullRequestNumber}`
239
+ ];
240
+ }
241
+ async function readExistingOutput(dependencies, githubOutputPath) {
242
+ try {
243
+ return await dependencies.fileManager.readFile(githubOutputPath);
244
+ }
245
+ catch {
246
+ return '';
247
+ }
248
+ }
249
+ async function writeAuthorizationOutput(dependencies, authorization) {
250
+ const output = `${formatAuthorizationOutput(authorization).join('\n')}\n`;
251
+ const githubOutputPath = dependencies.readEnvironmentVariable('GITHUB_OUTPUT');
252
+ if (githubOutputPath === undefined) {
253
+ dependencies.log(output.trimEnd());
254
+ return;
255
+ }
256
+ await dependencies.fileManager.writeFile(githubOutputPath, `${await readExistingOutput(dependencies, githubOutputPath)}${output}`);
257
+ }
258
+ async function authorizeManualPublish(input, releasePullRequestNumber) {
259
+ const refName = readRequiredEnvironmentVariable(input.dependencies, 'GITHUB_REF_NAME');
260
+ if (refName !== input.config.config.defaultBranch) {
261
+ throw new Error(`Manual release publish retries must run from ${input.config.config.defaultBranch}`);
262
+ }
263
+ return authorizeReleasePublishFromPullRequest({
264
+ config: input.config.policyConfig,
265
+ pullRequest: await input.github.client.getPullRequest(Number(releasePullRequestNumber)),
266
+ repository: input.github.repository
267
+ });
268
+ }
269
+ async function authorizePushPublish(input) {
270
+ const commitSha = readRequiredEnvironmentVariable(input.dependencies, 'GITHUB_SHA');
271
+ return authorizeReleasePublishFromCommit({
272
+ commitSha,
273
+ config: input.config.policyConfig,
274
+ pullRequests: await input.github.client.listCommitPullRequests(commitSha),
275
+ repository: input.github.repository
276
+ });
277
+ }
278
+ async function authorizePublish(input) {
279
+ const { releasePullRequestNumber } = input.dependencies.flags;
280
+ if (releasePullRequestNumber !== undefined) {
281
+ return authorizeManualPublish(input, releasePullRequestNumber);
282
+ }
283
+ return authorizePushPublish(input);
284
+ }
285
+ async function runAuthorizePublish(dependencies) {
286
+ const config = await loadReleasePullRequestConfig(dependencies);
287
+ const github = await createGitHubClient(dependencies);
288
+ await writeAuthorizationOutput(dependencies, await authorizePublish({ config, dependencies, github }));
289
+ return 0;
290
+ }
291
+ async function runReleasePullRequestCommand(dependencies) {
292
+ if (dependencies.flags.command === 'maintain') {
293
+ return runMaintain({ ...dependencies, flags: dependencies.flags });
294
+ }
295
+ if (dependencies.flags.command === 'validate') {
296
+ return runValidate(dependencies);
297
+ }
298
+ return runAuthorizePublish(dependencies);
299
+ }
300
+ function stopSpinnersAndReturn(dependencies, exitCode) {
301
+ dependencies.spinnerRenderer.stopAll();
302
+ return exitCode;
303
+ }
304
+ export async function runReleasePullRequestHandler(dependencies) {
305
+ try {
306
+ return stopSpinnersAndReturn(dependencies, await runReleasePullRequestCommand(dependencies));
307
+ }
308
+ catch (error) {
309
+ dependencies.log(formatHandlerError(error));
310
+ return stopSpinnersAndReturn(dependencies, 1);
311
+ }
312
+ }
313
+ //# sourceMappingURL=release-pull-request-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-pull-request-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pull-request-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEhG,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACH,iCAAiC,EACjC,sCAAsC,EAEzC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EACH,sCAAsC,EACtC,+BAA+B,EAElC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACH,+BAA+B,EAC/B,gCAAgC,EAGnC,MAAM,kCAAkC,CAAC;AAkE1C,SAAS,kBAAkB,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,eAAe,CAAC,YAAoF;IACzG,MAAM,KAAK,GACP,YAAY,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;IAC7G,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAAC,cAAsB;IACrD,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,oBAAoB,CAC/B,YAAwG;IAExG,MAAM,cAAc,GAAG,YAAY,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;IACjF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,yBAAyB,CAAC,cAAc,CAAC,CAAC;QAClE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;IACzD,MAAM,UAAU,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAC3D,OAAO,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,0BAA0B,CAAC,WAAW,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,YAAmD;IAIjF,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAC5D,OAAO;QACH,MAAM,EAAE,YAAY,CAAC,oCAAoC,CAAC;YACtD,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,KAAK,EAAE,eAAe,CAAC,YAAY,CAAC;SACvC,CAAC;QACF,UAAU,EAAE,UAAU,CAAC,IAAI;KAC9B,CAAC;AACN,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,aAAa,GAA6C,QAAQ,CAAC;AAEzE,SAAS,6BAA6B,CAClC,YAA6E,EAC7E,SAAkB;IAElB,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,iCAAiC,GAAG,sCAAsC,CAAC,SAAS,CAAC,CAAC;IAC5F,IAAI,iCAAiC,KAAK,SAAS,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,MAAM,GAAG,+BAA+B,CAAC,iCAAiC,CAAC,CAAC;IAClF,OAAO;QACH,MAAM;QACN,YAAY,EAAE;YACV,YAAY,EAAE,IAAI,GAAG,CACjB,yBAAyB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,EAAE,CAAC,CACvG;YACD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;SACtB;KACJ,CAAC;AACN,CAAC;AAED,KAAK,UAAU,4BAA4B,CACvC,YAA8F;IAE9F,OAAO,6BAA6B,CAAC,YAAY,EAAE,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,YAAmD;IAChF,OAAO,iBAAiB,CAAC;QACrB,yBAAyB,EAAE,YAAY,CAAC,yBAAyB;QACjE,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;QACjD,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,KAAK,EAAE;YACH,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,KAAK;YACV,cAAc,EAAE,IAAI;SACvB;QACD,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,GAAG,EAAE,YAAY,CAAC,GAAG;QACrB,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,uBAAuB,EAAE,YAAY,CAAC,uBAAuB;QAC7D,eAAe,EAAE,YAAY,CAAC,eAAe;QAC7C,eAAe,EAAE,YAAY,CAAC,eAAe;QAC7C,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;KAClD,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC5B,YAAmD,EACnD,MAAsC,EACtC,MAAgC;IAEhC,MAAM,MAAM,CAAC,4BAA4B,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9G,MAAM,YAAY,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,yBAAyB,CACpC,YAAmD;IAEnD,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAChE,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC9D,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAC/D,OAAO,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,KAKvC;IACG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC5D,MAAM,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC;QACpE,UAAU,EAAE,MAAM,CAAC,aAAa;QAChC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,aAAa,EAAE,MAAM,CAAC,MAAM;QAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;KACtB,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,MAAM,4BAA4B,CAAC;QACnD,MAAM;QACN,MAAM;QACN,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,YAAY,CAAC,KAAK;KAC5B,CAAC,CAAC;IACH,YAAY,CAAC,GAAG,CAAC,eAAe,iBAAiB,cAAc,WAAW,EAAE,CAAC,CAAC;IAC9E,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,mCAAmC,CAAC,KAKlD;IACG,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,iBAAiB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC;IACb,CAAC;IACD,OAAO,wBAAwB,CAAC;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW,EAAE,KAAK,CAAC,WAAW;KACjC,CAAC,CAAC;AACP,CAAC;AAMD,KAAK,UAAU,WAAW,CAAC,YAA2D;IAClF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,YAAY,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAC3D,OAAO,CAAC,CAAC;IACb,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,4BAA4B,CAAC,YAAY,CAAC,CAAC;IACtE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAClE,OAAO,mCAAmC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;AACnH,CAAC;AAED,SAAS,+BAA+B,CAAC,YAAmD,EAAE,IAAY;IACtG,MAAM,KAAK,GAAG,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,YAAmD;IAC9E,MAAM,SAAS,GAAG,+BAA+B,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IACrF,MAAM,WAAW,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5F,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAI5B;IACG,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACnF,OAAO;QACH,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,KAAK,EAAE,WAAW,CAAC,KAAK;KAC3B,CAAC;AACN,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,KAIvC;IACG,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC;IAC3D,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/F,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACtG,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,gCAAgC,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7E,CAAC;AACL,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,KAItC;IACG,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC;IAClD,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC;IAC1D,IAAI,OAAO,KAAK,SAAS,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;QACnC,OAAO,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3G,CAAC,CAAC,CACL,CAAC;IACF,+BAA+B,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/F,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,KAKlC;IACG,IAAI,KAAK,CAAC,SAAS,KAAK,cAAc,EAAE,CAAC;QACrC,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO;IACX,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,aAAa,EAAE,CAAC;QACpC,MAAM,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO;IACX,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AAC7F,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,YAAmD;IAC1E,MAAM,YAAY,GAAG,MAAM,4BAA4B,CAAC,YAAY,CAAC,CAAC;IACtE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,+BAA+B,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9E,YAAY,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC;AACb,CAAC;AAED,SAAS,yBAAyB,CAAC,aAA0C;IACzE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;QAC/B,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACpC,CAAC;IACD,OAAO;QACH,qBAAqB;QACrB,sBAAsB,aAAa,CAAC,gBAAgB,EAAE;QACtD,sBAAsB,aAAa,CAAC,gBAAgB,EAAE;QACtD,+BAA+B,aAAa,CAAC,wBAAwB,EAAE;KAC1E,CAAC;AACN,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC7B,YAAmD,EACnD,gBAAwB;IAExB,IAAI,CAAC;QACD,OAAO,MAAM,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,KAAK,UAAU,wBAAwB,CACnC,YAAmD,EACnD,aAA0C;IAE1C,MAAM,MAAM,GAAG,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1E,MAAM,gBAAgB,GAAG,YAAY,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC/E,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACjC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,OAAO;IACX,CAAC;IACD,MAAM,YAAY,CAAC,WAAW,CAAC,SAAS,CACpC,gBAAgB,EAChB,GAAG,MAAM,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAAG,MAAM,EAAE,CACzE,CAAC;AACN,CAAC;AAED,KAAK,UAAU,sBAAsB,CACjC,KAIC,EACD,wBAAgC;IAEhC,MAAM,OAAO,GAAG,+BAA+B,CAAC,KAAK,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACvF,IAAI,OAAO,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,sCAAsC,CAAC;QAC1C,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;QACjC,WAAW,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACvF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;KACtC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,KAInC;IACG,MAAM,SAAS,GAAG,+BAA+B,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACpF,OAAO,iCAAiC,CAAC;QACrC,SAAS;QACT,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;QACjC,YAAY,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC;QACzE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;KACtC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,KAI/B;IACG,MAAM,EAAE,wBAAwB,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;IAC9D,IAAI,wBAAwB,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,sBAAsB,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,YAAmD;IAClF,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC,YAAY,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,wBAAwB,CAAC,YAAY,EAAE,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACvG,OAAO,CAAC,CAAC;AACb,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,YAAmD;IAC3F,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAC5C,OAAO,WAAW,CAAC,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAC5C,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAmD,EAAE,QAAgB;IAChG,YAAY,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAC9C,YAAmD;IAEnD,IAAI,CAAC;QACD,OAAO,qBAAqB,CAAC,YAAY,EAAE,MAAM,4BAA4B,CAAC,YAAY,CAAC,CAAC,CAAC;IACjG,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,OAAO,qBAAqB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;AACL,CAAC"}
@@ -0,0 +1,47 @@
1
+ function requirePolicy(condition, message) {
2
+ if (!condition) {
3
+ throw new Error(message);
4
+ }
5
+ }
6
+ function validateReleaseLabelSet(labels, config) {
7
+ requirePolicy(labels.length === 1 && labels[0] === config.label, `Release PRs must only have the ${config.label} label`);
8
+ }
9
+ function validateReleaseChangedFiles(changedFiles, config) {
10
+ requirePolicy(changedFiles.length > 0, 'Release PRs must change release output files');
11
+ for (const changedFile of changedFiles) {
12
+ requirePolicy(config.allowedFiles.has(changedFile), `Unexpected release PR file change: ${changedFile}`);
13
+ }
14
+ }
15
+ function validateReleaseIdentity(input, config) {
16
+ validateReleaseLabelSet(input.labels, config);
17
+ requirePolicy(input.author === config.automationAuthor, `Release PRs must be authored by ${config.automationAuthor}`);
18
+ requirePolicy(input.headRef === config.branch, `Release PRs must use ${config.branch}`);
19
+ requirePolicy(input.title === config.title, `Release PR title must be ${config.title}`);
20
+ requirePolicy(input.subject === config.commitSubject, `Release PR commit subject must be ${config.commitSubject}`);
21
+ }
22
+ export function validateReleasePullRequestPolicy(input, config) {
23
+ validateReleaseIdentity(input, config);
24
+ requirePolicy(input.parentShas.length === 1, 'Release PR head must have exactly one parent');
25
+ requirePolicy(input.parentShas[0] === input.expectedBaseSha, 'Release PR head must be based on expected main');
26
+ validateReleaseChangedFiles(input.changedFiles, config);
27
+ }
28
+ export function validateReleasePullRequestPublishPolicy(input, config, expectedMergeCommitSha) {
29
+ validateReleaseIdentity(input, config);
30
+ requirePolicy(input.baseRef === config.defaultBranch, `Release PR base must be ${config.defaultBranch}`);
31
+ requirePolicy(input.headRepository === input.repository, 'Release PRs must come from the release repository');
32
+ requirePolicy(input.merged, 'Release PR must be merged');
33
+ requirePolicy(input.mergeCommitSha === expectedMergeCommitSha, `Release PR merge commit must be ${expectedMergeCommitSha}`);
34
+ validateReleaseChangedFiles(input.changedFiles, config);
35
+ }
36
+ export function validateReleaseMergeGroupPolicy(input, config) {
37
+ const releasePullRequests = input.pullRequests.filter((pullRequest) => {
38
+ return pullRequest.labels.includes(config.label);
39
+ });
40
+ if (releasePullRequests.length > 0 && input.pullRequests.length !== 1) {
41
+ throw new Error('Release PRs must not be grouped with other pull requests');
42
+ }
43
+ for (const pullRequest of releasePullRequests) {
44
+ validateReleasePullRequestPolicy(pullRequest, config);
45
+ }
46
+ }
47
+ //# sourceMappingURL=release-pull-request-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-pull-request-policy.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pull-request-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { z } from 'zod/mini';
2
+ import { nonEmptyStringSchema } from "packtory/config/base-validations.js";
3
+ const githubActionsWorkflowDispatchSchema = z.readonly(z.strictObject({
4
+ trigger: z.literal('workflow-dispatch'),
5
+ workflowFile: nonEmptyStringSchema,
6
+ requiredStatusContexts: z.readonly(z.tuple([nonEmptyStringSchema], nonEmptyStringSchema)),
7
+ deleteActionRequiredPullRequestRuns: z.optional(z.boolean())
8
+ }));
9
+ export const releasePullRequestSettingsSchema = z.readonly(z.strictObject({
10
+ automationAuthor: z.optional(nonEmptyStringSchema),
11
+ body: z.optional(nonEmptyStringSchema),
12
+ branch: z.optional(nonEmptyStringSchema),
13
+ commitSubject: z.optional(nonEmptyStringSchema),
14
+ defaultBranch: z.optional(nonEmptyStringSchema),
15
+ githubActionsCi: z.optional(githubActionsWorkflowDispatchSchema),
16
+ label: z.optional(nonEmptyStringSchema),
17
+ title: z.optional(nonEmptyStringSchema)
18
+ }));
19
+ //# sourceMappingURL=release-pull-request-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-pull-request-settings.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pull-request-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,mCAAmC,GAAG,CAAC,CAAC,QAAQ,CAClD,CAAC,CAAC,YAAY,CAAC;IACX,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACvC,YAAY,EAAE,oBAAoB;IAClC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,CAAC;IACzF,mCAAmC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CAC/D,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,QAAQ,CACtD,CAAC,CAAC,YAAY,CAAC;IACX,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC/C,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC/C,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAChE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAC1C,CAAC,CACL,CAAC"}
@@ -1,5 +1,5 @@
1
- /* eslint-disable import/max-dependencies -- the CLI runner wires six subcommands plus shared dependencies */
2
- import { binary, command, flag, oneOf, option, positional, runSafely, string, subcommands } from 'cmd-ts';
1
+ /* eslint-disable import/max-dependencies -- the CLI runner wires seven subcommands plus shared dependencies */
2
+ import { binary, command, flag, oneOf, option, optional as optionalType, positional, runSafely, string, subcommands } from 'cmd-ts';
3
3
  import { runChangelogHandler } from "./changelog-handler.js";
4
4
  import { getParseExitCode } from "./command-parsing.js";
5
5
  import { runPackHandler } from "./pack-handler.js";
@@ -8,15 +8,20 @@ import { runReleaseDiffHandler } from "./release-diff-handler.js";
8
8
  import { registerProgressListeners } from "./progress-wiring.js";
9
9
  import { runPublishHandler } from "./publish-handler.js";
10
10
  import { runReleaseHandler } from "./release-handler.js";
11
+ import { runReleasePullRequestHandler } from "./release-pull-request-handler.js";
11
12
  const publishCommandName = 'publish';
12
13
  const previewCommandName = 'preview';
13
14
  const releaseDiffCommandName = 'release-diff';
14
15
  const releaseCommandName = 'release';
16
+ const releasePullRequestCommandName = 'release-pr';
17
+ const authorizePublishReleasePullRequestCommandName = 'authorize-publish';
15
18
  const changelogCommandName = 'changelog';
19
+ const maintainReleasePullRequestCommandName = 'maintain';
16
20
  const packCommandName = 'pack';
21
+ const validateReleasePullRequestCommandName = 'validate';
17
22
  const defaultPackVersion = '0.0.0';
18
23
  export function createCommandLineInterfaceRunner(dependencies) {
19
- const { log, packtory, progressBroadcaster, spinnerRenderer, configLoader, fileManager, pageOutput, openFile, createTemporaryFilePath, createGitHubReleaseClient, createPrLogEngine, currentDate, readEnvironmentVariable, readPackageInfo, releaseGitClient, workingDirectory } = dependencies;
24
+ const { log, packtory, progressBroadcaster, spinnerRenderer, configLoader, fileManager, pageOutput, openFile, createTemporaryFilePath, createGitHubReleaseClient, createReleasePullRequestGitHubClient, createPrLogEngine, currentDate, readEnvironmentVariable, readPackageInfo, releaseGitClient, sleep, workingDirectory } = dependencies;
20
25
  let exitCode = 0;
21
26
  const baseCommand = subcommands({
22
27
  name: 'packtory',
@@ -103,6 +108,100 @@ export function createCommandLineInterfaceRunner(dependencies) {
103
108
  });
104
109
  }
105
110
  }),
111
+ [releasePullRequestCommandName]: subcommands({
112
+ name: releasePullRequestCommandName,
113
+ cmds: {
114
+ [maintainReleasePullRequestCommandName]: command({
115
+ name: maintainReleasePullRequestCommandName,
116
+ description: 'Creates or updates the generated release PR.',
117
+ args: {
118
+ noDryRun: flag({ long: 'no-dry-run' })
119
+ },
120
+ async handler({ noDryRun }) {
121
+ exitCode = await runReleasePullRequestHandler({
122
+ log,
123
+ packtory,
124
+ spinnerRenderer,
125
+ configLoader,
126
+ fileManager,
127
+ createPrLogEngine,
128
+ createGitHubReleaseClient,
129
+ createReleasePullRequestGitHubClient,
130
+ currentDate,
131
+ readEnvironmentVariable,
132
+ readPackageInfo,
133
+ workingDirectory,
134
+ gitClient: releaseGitClient,
135
+ sleep,
136
+ flags: {
137
+ command: maintainReleasePullRequestCommandName,
138
+ noDryRun,
139
+ releasePullRequestNumber: undefined
140
+ }
141
+ });
142
+ }
143
+ }),
144
+ [validateReleasePullRequestCommandName]: command({
145
+ name: validateReleasePullRequestCommandName,
146
+ description: 'Validates the release PR policy for the current GitHub event.',
147
+ args: {},
148
+ async handler() {
149
+ exitCode = await runReleasePullRequestHandler({
150
+ log,
151
+ packtory,
152
+ spinnerRenderer,
153
+ configLoader,
154
+ fileManager,
155
+ createPrLogEngine,
156
+ createGitHubReleaseClient,
157
+ createReleasePullRequestGitHubClient,
158
+ currentDate,
159
+ readEnvironmentVariable,
160
+ readPackageInfo,
161
+ workingDirectory,
162
+ gitClient: releaseGitClient,
163
+ sleep,
164
+ flags: {
165
+ command: validateReleasePullRequestCommandName,
166
+ releasePullRequestNumber: undefined
167
+ }
168
+ });
169
+ }
170
+ }),
171
+ [authorizePublishReleasePullRequestCommandName]: command({
172
+ name: authorizePublishReleasePullRequestCommandName,
173
+ description: 'Authorizes publishing from a merged release PR.',
174
+ args: {
175
+ releasePullRequestNumber: option({
176
+ long: 'release-pull-request',
177
+ type: optionalType(string)
178
+ })
179
+ },
180
+ async handler({ releasePullRequestNumber }) {
181
+ exitCode = await runReleasePullRequestHandler({
182
+ log,
183
+ packtory,
184
+ spinnerRenderer,
185
+ configLoader,
186
+ fileManager,
187
+ createPrLogEngine,
188
+ createGitHubReleaseClient,
189
+ createReleasePullRequestGitHubClient,
190
+ currentDate,
191
+ readEnvironmentVariable,
192
+ readPackageInfo,
193
+ workingDirectory,
194
+ gitClient: releaseGitClient,
195
+ sleep,
196
+ flags: {
197
+ command: authorizePublishReleasePullRequestCommandName,
198
+ releasePullRequestNumber
199
+ }
200
+ });
201
+ }
202
+ })
203
+ }
204
+ }),
106
205
  [changelogCommandName]: command({
107
206
  name: changelogCommandName,
108
207
  description: 'Generates grouped Markdown changelog output for the next release.',
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/runner.ts"],"names":[],"mappings":"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"}