@packtory/cli 0.0.37 → 0.0.39

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 (30) hide show
  1. package/command-line-interface/runner/changelog-destinations.js +173 -0
  2. package/command-line-interface/runner/changelog-destinations.js.map +1 -0
  3. package/command-line-interface/runner/changelog-handler.js +26 -60
  4. package/command-line-interface/runner/changelog-handler.js.map +1 -1
  5. package/command-line-interface/runner/failure-printing.js +9 -9
  6. package/command-line-interface/runner/failure-printing.js.map +1 -1
  7. package/command-line-interface/runner/github-api-request.js +37 -0
  8. package/command-line-interface/runner/github-api-request.js.map +1 -0
  9. package/command-line-interface/runner/github-release-client.js +37 -0
  10. package/command-line-interface/runner/github-release-client.js.map +1 -0
  11. package/command-line-interface/runner/github-repository.js +15 -0
  12. package/command-line-interface/runner/github-repository.js.map +1 -0
  13. package/command-line-interface/runner/publish-handler.js +1 -1
  14. package/command-line-interface/runner/publish-handler.js.map +1 -1
  15. package/command-line-interface/runner/release-git-client.js +53 -0
  16. package/command-line-interface/runner/release-git-client.js.map +1 -0
  17. package/command-line-interface/runner/release-handler.js +324 -0
  18. package/command-line-interface/runner/release-handler.js.map +1 -0
  19. package/command-line-interface/runner/release-plan-result-printing.js +26 -0
  20. package/command-line-interface/runner/release-plan-result-printing.js.map +1 -0
  21. package/command-line-interface/runner/runner.js +41 -8
  22. package/command-line-interface/runner/runner.js.map +1 -1
  23. package/package.json +5 -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 +22 -3
  26. package/packages/command-line-interface/command-line-interface.entry-point.js.map +1 -1
  27. package/packtory/packtory-changelog.js +57 -28
  28. package/packtory/packtory-changelog.js.map +1 -1
  29. package/readme.md +30 -4
  30. package/sbom.cdx.json +49 -15
@@ -0,0 +1,173 @@
1
+ import path from 'node:path';
2
+ import { defaultValidLabels } from '@pr-log/core';
3
+ import { safeParse } from '@schema-hub/zod-error-formatter';
4
+ import { packtoryConfigSchema } from "packtory/config/packtory-config-schema.js";
5
+ export function parseValidConfig(config) {
6
+ const result = safeParse(packtoryConfigSchema, config);
7
+ return result.success ? result.data : undefined;
8
+ }
9
+ export function createChangelogGenerationOptions(config) {
10
+ return {
11
+ explicitBaseRef: config.changelog?.explicitBaseRef,
12
+ packageTagFormat: config.changelog?.packageTagFormat,
13
+ targetScopedLabelPattern: config.changelog?.targetScopedLabelPattern,
14
+ validLabels: new Map([...defaultValidLabels, ...Object.entries(config.changelog?.labels ?? {})])
15
+ };
16
+ }
17
+ function normalizeConfiguredPath(filePath) {
18
+ return filePath.split(/[/\\]/u).join(path.sep);
19
+ }
20
+ function resolveRepositoryPath(deps, filePath) {
21
+ return path.resolve(deps.workingDirectory, normalizeConfiguredPath(filePath));
22
+ }
23
+ function resolvePackageSourcesFolder(packageConfig, config) {
24
+ const sourcesFolder = packageConfig.sourcesFolder ?? config.commonPackageSettings?.sourcesFolder;
25
+ if (sourcesFolder === undefined) {
26
+ throw new Error(`Config for package "${packageConfig.name}" is missing the sources folder`);
27
+ }
28
+ return sourcesFolder;
29
+ }
30
+ function mapPackageConfigByName(config) {
31
+ return new Map(config.packages.map((packageConfig) => {
32
+ return [packageConfig.name, packageConfig];
33
+ }));
34
+ }
35
+ function resolvePackageFilePath(deps, config, packageConfig, outputPath) {
36
+ return path.resolve(deps.workingDirectory, normalizeConfiguredPath(resolvePackageSourcesFolder(packageConfig, config)), normalizeConfiguredPath(outputPath));
37
+ }
38
+ function resolveExplicitPackageFilePath(deps, output, packageName) {
39
+ const outputPath = output.paths[packageName];
40
+ if (outputPath === undefined) {
41
+ throw new Error(`Changelog output path for package "${packageName}" is missing`);
42
+ }
43
+ return resolveRepositoryPath(deps, outputPath);
44
+ }
45
+ function hasSharedPackagePath(output) {
46
+ return 'path' in output;
47
+ }
48
+ function hasExplicitPackagePaths(output) {
49
+ return 'paths' in output;
50
+ }
51
+ function resolveRepositoryRelativePath(deps, filePath) {
52
+ const relativePath = path.relative(deps.workingDirectory, filePath);
53
+ if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
54
+ return undefined;
55
+ }
56
+ return relativePath.split(path.sep).join('/');
57
+ }
58
+ export function collectGeneratedAttributionPaths(deps, config) {
59
+ if (config.changelog === undefined) {
60
+ return [];
61
+ }
62
+ if (config.changelog.outputs === undefined) {
63
+ return [];
64
+ }
65
+ const paths = config.changelog.outputs
66
+ .filter((output) => {
67
+ return output.kind !== 'github-release';
68
+ })
69
+ .flatMap((output) => {
70
+ if (output.kind === 'repository-file') {
71
+ return [resolveRepositoryPath(deps, output.path)];
72
+ }
73
+ if (hasExplicitPackagePaths(output)) {
74
+ return Object.values(output.paths).map((outputPath) => {
75
+ return resolveRepositoryPath(deps, outputPath);
76
+ });
77
+ }
78
+ return config.packages.map((packageConfig) => {
79
+ return resolvePackageFilePath(deps, config, packageConfig, output.path);
80
+ });
81
+ });
82
+ return Array.from(new Set(paths.flatMap((filePath) => {
83
+ const relativePath = resolveRepositoryRelativePath(deps, filePath);
84
+ return relativePath === undefined ? [] : [relativePath];
85
+ })));
86
+ }
87
+ export function shouldPageGroupedChangelog(outputs) {
88
+ return (outputs === undefined ||
89
+ outputs.some((output) => {
90
+ return output.kind === 'github-release';
91
+ }));
92
+ }
93
+ function collectRepositoryDestinations(deps, outputs, changelog) {
94
+ return outputs.flatMap((output) => {
95
+ if (output.kind !== 'repository-file') {
96
+ return [];
97
+ }
98
+ return [{ filePath: resolveRepositoryPath(deps, output.path), generatedMarkdown: changelog.groupedMarkdown }];
99
+ });
100
+ }
101
+ function collectPackageDestinationsWithSharedPath(deps, config, output, changelog) {
102
+ const packageConfigsByName = mapPackageConfigByName(config);
103
+ return Array.from(changelog.packageMarkdownByName, ([packageName, generatedMarkdown]) => {
104
+ const packageConfig = packageConfigsByName.get(packageName);
105
+ if (packageConfig === undefined) {
106
+ throw new Error(`Config for package "${packageName}" is missing`);
107
+ }
108
+ return { filePath: resolvePackageFilePath(deps, config, packageConfig, output.path), generatedMarkdown };
109
+ });
110
+ }
111
+ function collectPackageDestinationsWithExplicitPaths(deps, output, changelog) {
112
+ return Array.from(changelog.packageMarkdownByName, ([packageName, generatedMarkdown]) => {
113
+ return { filePath: resolveExplicitPackageFilePath(deps, output, packageName), generatedMarkdown };
114
+ });
115
+ }
116
+ function collectPackageDestinations(deps, config, outputs, changelog) {
117
+ return outputs.flatMap((output) => {
118
+ if (output.kind !== 'package-file') {
119
+ return [];
120
+ }
121
+ if (hasSharedPackagePath(output)) {
122
+ return collectPackageDestinationsWithSharedPath(deps, config, output, changelog);
123
+ }
124
+ return collectPackageDestinationsWithExplicitPaths(deps, output, changelog);
125
+ });
126
+ }
127
+ function isMissingFileError(error) {
128
+ return Reflect.get(new Object(error), 'code') === 'ENOENT';
129
+ }
130
+ async function readChangelogMarkdown(fileManager, filePath) {
131
+ try {
132
+ return await fileManager.readFile(filePath);
133
+ }
134
+ catch (error) {
135
+ if (isMissingFileError(error)) {
136
+ return '';
137
+ }
138
+ throw error;
139
+ }
140
+ }
141
+ async function writeChangelogDestination(deps, prLogEngine, destination) {
142
+ if (destination.generatedMarkdown.length === 0) {
143
+ return undefined;
144
+ }
145
+ const existingChangelogMarkdownValue = await readChangelogMarkdown(deps.fileManager, destination.filePath);
146
+ await deps.fileManager.writeFile(destination.filePath, prLogEngine.updateChangelog({
147
+ existingChangelogMarkdown: existingChangelogMarkdownValue,
148
+ generatedChangelogMarkdown: destination.generatedMarkdown
149
+ }));
150
+ return destination.filePath;
151
+ }
152
+ function collectChangelogDestinations(deps, config, changelog) {
153
+ const outputs = config.changelog?.outputs;
154
+ if (outputs === undefined) {
155
+ return [];
156
+ }
157
+ return [
158
+ ...collectRepositoryDestinations(deps, outputs, changelog),
159
+ ...collectPackageDestinations(deps, config, outputs, changelog)
160
+ ];
161
+ }
162
+ export async function writeConfiguredChangelogs(deps, config, prLogEngine, changelog) {
163
+ const destinations = collectChangelogDestinations(deps, config, changelog);
164
+ const writtenPaths = [];
165
+ for (const destination of destinations) {
166
+ const writtenPath = await writeChangelogDestination(deps, prLogEngine, destination);
167
+ if (writtenPath !== undefined) {
168
+ writtenPaths.push(writtenPath);
169
+ }
170
+ }
171
+ return writtenPaths;
172
+ }
173
+ //# sourceMappingURL=changelog-destinations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog-destinations.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/changelog-destinations.ts"],"names":[],"mappings":"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"}
@@ -1,85 +1,48 @@
1
- import { defaultValidLabels } from '@pr-log/core';
2
- import { normalizeRepositoryUrl } from "packtory/bundle-emitter/repository-url-normalizer.js";
3
- import { partialFailureMessages } from "packtory/packtory/partial-result.js";
4
- import { checksErrorType, configErrorType } from "packtory/packtory/packtory-results.js";
5
- import { generateChangelog } from "../../packtory/packtory-changelog.js";
1
+ import { generateChangelogOutputs } from "../../packtory/packtory-changelog.js";
2
+ import { createChangelogGenerationOptions, collectGeneratedAttributionPaths, parseValidConfig, shouldPageGroupedChangelog, writeConfiguredChangelogs } from "./changelog-destinations.js";
3
+ import { formatGitHubRepositoryName } from "./github-repository.js";
4
+ import { printReleasePlanFailure, collectReleasePlanPackages } from "./release-plan-result-printing.js";
6
5
  const labelLookupIntervalMilliseconds = 250;
7
6
  const maximumRateLimitRetryCount = 3;
8
- const githubRepositoryPattern = /^https:\/\/github\.com\/(?<owner>[^/]+)\/(?<repo>[^/]+)$/u;
9
7
  function formatChangelogHandlerError(error) {
10
8
  return String(error).replace(/^[A-Za-z]*Error: /u, '');
11
9
  }
12
- function githubTokenFrom(deps) {
10
+ function readGitHubToken(deps) {
13
11
  return deps.readEnvironmentVariable('GH_TOKEN') ?? deps.readEnvironmentVariable('GITHUB_TOKEN');
14
12
  }
15
- function gitHubRepositoryMatchFrom(repositoryUrl) {
16
- return githubRepositoryPattern.exec(String(repositoryUrl)) ?? undefined;
17
- }
18
- function gitHubRepositoryPartsFromGroups(groups) {
19
- if (groups === undefined) {
20
- return undefined;
21
- }
22
- return { owner: String(groups.owner), repo: String(groups.repo) };
23
- }
24
- function gitHubRepositoryPartsFrom(repositoryUrl) {
25
- return gitHubRepositoryPartsFromGroups(gitHubRepositoryMatchFrom(repositoryUrl)?.groups);
26
- }
27
- function githubRepoFrom(packageInfo) {
28
- const repository = gitHubRepositoryPartsFrom(normalizeRepositoryUrl(packageInfo.repository));
29
- if (repository === undefined) {
30
- throw new Error('package.json repository must point to a GitHub repository');
31
- }
32
- return `${repository.owner}/${repository.repo}`;
33
- }
34
13
  function createEngine(deps) {
35
14
  return deps.createPrLogEngine({
36
- githubToken: githubTokenFrom(deps),
15
+ githubToken: readGitHubToken(deps),
37
16
  workingDirectory: deps.workingDirectory,
38
17
  labelLookupIntervalMilliseconds,
39
18
  maximumRateLimitRetryCount
40
19
  });
41
20
  }
42
- function printIssueFailure(log, title, issues) {
43
- log(`${title}, there are ${issues.length} issue(s)\n\n- ${issues.join('\n- ')}`);
44
- }
45
- function printReleasePlanFailure(log, error) {
46
- if (error.type === configErrorType) {
47
- printIssueFailure(log, 'Configuration issues', error.issues);
48
- return;
49
- }
50
- if (error.type === checksErrorType) {
51
- printIssueFailure(log, 'Check issues', error.issues);
52
- return;
53
- }
54
- log(partialFailureMessages(error).join('\n'));
55
- }
56
- function releasePlanPackagesFrom(result) {
57
- if (result.isOk) {
58
- return result.value.packages;
59
- }
60
- if ('succeeded' in result.error) {
61
- return result.error.succeeded;
62
- }
63
- return [];
64
- }
65
- async function renderChangelog(deps, packages) {
21
+ async function renderChangelog(deps, config, packages) {
66
22
  if (packages.length === 0) {
67
23
  return;
68
24
  }
69
25
  const packageInfo = await deps.readPackageInfo();
70
- const markdown = await generateChangelog({
26
+ const prLogEngine = createEngine(deps);
27
+ const generationOptions = createChangelogGenerationOptions(config);
28
+ const changelog = await generateChangelogOutputs({
71
29
  packages,
72
- prLogEngine: createEngine(deps),
73
- githubRepo: githubRepoFrom(packageInfo),
30
+ prLogEngine,
31
+ explicitBaseRef: generationOptions.explicitBaseRef,
32
+ githubRepo: formatGitHubRepositoryName(packageInfo),
33
+ ignoredAttributionPaths: collectGeneratedAttributionPaths(deps, config),
74
34
  packageInfo,
35
+ packageTagFormat: generationOptions.packageTagFormat,
75
36
  currentDate: deps.currentDate(),
76
- validLabels: defaultValidLabels
37
+ targetScopedLabelPattern: generationOptions.targetScopedLabelPattern,
38
+ validLabels: generationOptions.validLabels
77
39
  });
78
- if (markdown.length > 0) {
79
- await deps.pageOutput(markdown);
40
+ if (shouldPageGroupedChangelog(config.changelog?.outputs) && changelog.groupedMarkdown.length > 0) {
41
+ await deps.pageOutput(changelog.groupedMarkdown);
80
42
  }
43
+ await writeConfiguredChangelogs(deps, config, prLogEngine, changelog);
81
44
  }
82
- function exitCodeFromReleasePlanResult(log, result) {
45
+ function resolveReleasePlanExitCode(log, result) {
83
46
  if (result.isOk) {
84
47
  return 0;
85
48
  }
@@ -90,8 +53,11 @@ async function runChangelog(deps) {
90
53
  const config = await deps.configLoader.load();
91
54
  const outcome = await deps.packtory.planReleaseAgainstLatestPublished(config);
92
55
  deps.spinnerRenderer.stopAll();
93
- await renderChangelog(deps, releasePlanPackagesFrom(outcome.result));
94
- return exitCodeFromReleasePlanResult(deps.log, outcome.result);
56
+ const validConfig = parseValidConfig(config);
57
+ if (validConfig !== undefined) {
58
+ await renderChangelog(deps, validConfig, collectReleasePlanPackages(outcome.result));
59
+ }
60
+ return resolveReleasePlanExitCode(deps.log, outcome.result);
95
61
  }
96
62
  function stopSpinnersAndReturn(deps, exitCode) {
97
63
  deps.spinnerRenderer.stopAll();
@@ -1 +1 @@
1
- {"version":3,"file":"changelog-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/changelog-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changelog-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/changelog-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAGhF,OAAO,EACH,gCAAgC,EAChC,gCAAgC,EAChC,gBAAgB,EAChB,0BAA0B,EAC1B,yBAAyB,EAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAoBxG,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAC5C,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAErC,SAAS,2BAA2B,CAAC,KAAc;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,eAAe,CAAC,IAA2D;IAChF,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,YAAY,CAAC,IAA0B;IAC5C,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAC1B,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC;QAClC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,+BAA+B;QAC/B,0BAA0B;KAC7B,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,eAAe,CAC1B,IAA0B,EAC1B,MAA4B,EAC5B,QAAuC;IAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;IACX,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,iBAAiB,GAAG,gCAAgC,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC;QAC7C,QAAQ;QACR,WAAW;QACX,eAAe,EAAE,iBAAiB,CAAC,eAAe;QAClD,UAAU,EAAE,0BAA0B,CAAC,WAAW,CAAC;QACnD,uBAAuB,EAAE,gCAAgC,CAAC,IAAI,EAAE,MAAM,CAAC;QACvE,WAAW;QACX,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB;QACpD,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;QAC/B,wBAAwB,EAAE,iBAAiB,CAAC,wBAAwB;QACpE,WAAW,EAAE,iBAAiB,CAAC,WAAW;KAC7C,CAAC,CAAC;IACH,IAAI,0BAA0B,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAW,EAAE,MAAyB;IACtE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACb,CAAC;IACD,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC;AACb,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAA0B;IAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAC9E,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,0BAA0B,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,qBAAqB,CAAC,IAA0B,EAAE,QAAgB;IACvE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IAC/B,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA0B;IAChE,IAAI,CAAC;QACD,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,OAAO,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC"}
@@ -19,11 +19,11 @@ function formatStageReceipt(result) {
19
19
  function isStagedResult(result) {
20
20
  return result.publication.type === 'staged';
21
21
  }
22
- function stagedResultsFrom(results) {
22
+ function selectStagedResults(results) {
23
23
  return results.filter(isStagedResult);
24
24
  }
25
25
  function printStagedPackageList(log, results) {
26
- const stagedResults = stagedResultsFrom(results);
26
+ const stagedResults = selectStagedResults(results);
27
27
  if (stagedResults.length === 0) {
28
28
  return;
29
29
  }
@@ -33,8 +33,8 @@ function printIssueSummary(log, title, issues) {
33
33
  const header = `${getErrorSymbol()} ${title}, there are ${issues.length} issue(s)`;
34
34
  log(`${header}\n\n- ${issues.join('\n- ')}`);
35
35
  }
36
- function stageSuccessSummary(results) {
37
- const stagedResults = stagedResultsFrom(results);
36
+ function formatStageSuccessSummary(results) {
37
+ const stagedResults = selectStagedResults(results);
38
38
  if (stagedResults.length === 0) {
39
39
  return (`${getSuccessSymbol()} Success: no packages were staged; ` +
40
40
  `all ${results.length} package(s) were already up-to-date`);
@@ -43,7 +43,7 @@ function stageSuccessSummary(results) {
43
43
  const unchangedSuffix = unchangedCount === 0 ? '' : `; ${dim(String(unchangedCount))} already up-to-date`;
44
44
  return `${getSuccessSymbol()} Success: staged ${stagedResults.length} package(s)${unchangedSuffix}`;
45
45
  }
46
- function printPartialErrorSummary(log, error, flags) {
46
+ function printPartialErrorSummary(log, error, stage) {
47
47
  const total = error.succeeded.length + error.failures.length;
48
48
  const failureCount = red(String(error.failures.length));
49
49
  const successCount = green(String(error.succeeded.length));
@@ -53,14 +53,14 @@ function printPartialErrorSummary(log, error, flags) {
53
53
  return `- ${message}`;
54
54
  });
55
55
  log([summary, ...details].join('\n'));
56
- if (flags.stage) {
56
+ if (stage) {
57
57
  printStagedPackageList(log, error.succeeded);
58
58
  }
59
59
  }
60
- export function printPublishFailure(log, error, flags) {
60
+ export function printPublishFailure(log, error, stage) {
61
61
  match(error)
62
62
  .with({ type: partialFailureType }, (partialError) => {
63
- printPartialErrorSummary(log, partialError, flags);
63
+ printPartialErrorSummary(log, partialError, stage);
64
64
  })
65
65
  .otherwise((issueError) => {
66
66
  printIssueSummary(log, issueTitleByType[issueError.type], issueError.issues);
@@ -71,7 +71,7 @@ export function printSuccessSummary(log, results, flags) {
71
71
  log(`${getSuccessSymbol()} Success: all ${results.length} package(s) have been published`);
72
72
  return;
73
73
  }
74
- log(stageSuccessSummary(results));
74
+ log(formatStageSuccessSummary(results));
75
75
  printStagedPackageList(log, results);
76
76
  }
77
77
  //# sourceMappingURL=failure-printing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"failure-printing.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/failure-printing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"failure-printing.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/failure-printing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ const defaultGitHubApiVersion = '2022-11-28';
2
+ function readReflectedProperty(value, property) {
3
+ return Reflect.get(new Object(value), property);
4
+ }
5
+ function readGitHubErrorStatus(error) {
6
+ return Number(readReflectedProperty(error, 'status'));
7
+ }
8
+ function readGitHubErrorPath(error) {
9
+ const url = String(readReflectedProperty(readReflectedProperty(error, 'request'), 'url'));
10
+ const parsedUrl = new URL(url);
11
+ return `${parsedUrl.pathname}${parsedUrl.search}`;
12
+ }
13
+ function createGitHubRequestError(error) {
14
+ return new Error(`GitHub API request failed (${String(readGitHubErrorStatus(error))}) for ${readGitHubErrorPath(error)}`, {
15
+ cause: error
16
+ });
17
+ }
18
+ export function createGitHubJsonRequestHeaders(token, userAgent) {
19
+ return {
20
+ accept: 'application/vnd.github+json',
21
+ authorization: `Bearer ${token}`,
22
+ 'user-agent': userAgent,
23
+ 'x-github-api-version': defaultGitHubApiVersion
24
+ };
25
+ }
26
+ export async function resolveOptionalGitHubResponse(request, missingStatusCode) {
27
+ try {
28
+ return await request;
29
+ }
30
+ catch (error) {
31
+ if (readGitHubErrorStatus(error) === missingStatusCode) {
32
+ return undefined;
33
+ }
34
+ throw createGitHubRequestError(error);
35
+ }
36
+ }
37
+ //# sourceMappingURL=github-api-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-api-request.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/github-api-request.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAE7C,SAAS,qBAAqB,CAAC,KAAc,EAAE,QAAgB;IAC3D,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAY,CAAC;AAC/D,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IACzC,OAAO,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACvC,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1F,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC5C,OAAO,IAAI,KAAK,CACZ,8BAA8B,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,SAAS,mBAAmB,CAAC,KAAK,CAAC,EAAE,EACvG;QACI,KAAK,EAAE,KAAK;KACf,CACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,KAAa,EAAE,SAAiB;IAC3E,OAAO;QACH,MAAM,EAAE,6BAA6B;QACrC,aAAa,EAAE,UAAU,KAAK,EAAE;QAChC,YAAY,EAAE,SAAS;QACvB,sBAAsB,EAAE,uBAAuB;KAClD,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAC/C,OAAmB,EACnB,iBAAyB;IAEzB,IAAI,CAAC;QACD,OAAO,MAAM,OAAO,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,qBAAqB,CAAC,KAAK,CAAC,KAAK,iBAAiB,EAAE,CAAC;YACrD,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { Octokit } from '@octokit/core';
2
+ import { createGitHubJsonRequestHeaders, resolveOptionalGitHubResponse } from "./github-api-request.js";
3
+ const notFoundStatusCode = 404;
4
+ export function createGitHubReleaseClient(deps) {
5
+ const requestHeaders = createGitHubJsonRequestHeaders(deps.token, 'packtory');
6
+ const octokit = new Octokit({
7
+ request: {
8
+ fetch: deps.fetch
9
+ }
10
+ });
11
+ return {
12
+ async createReleaseIfMissing(request) {
13
+ const existing = await resolveOptionalGitHubResponse(octokit.request('GET /repos/{owner}/{repo}/releases/tags/{tag}', {
14
+ headers: requestHeaders,
15
+ owner: deps.owner,
16
+ repo: deps.repo,
17
+ tag: request.tagName
18
+ }), notFoundStatusCode);
19
+ if (existing !== undefined) {
20
+ return 'existing';
21
+ }
22
+ const created = await resolveOptionalGitHubResponse(octokit.request('POST /repos/{owner}/{repo}/releases', {
23
+ headers: requestHeaders,
24
+ owner: deps.owner,
25
+ repo: deps.repo,
26
+ tag_name: request.tagName,
27
+ name: request.name,
28
+ body: request.body
29
+ }), notFoundStatusCode);
30
+ if (created === undefined) {
31
+ throw new Error(`GitHub release for tag "${request.tagName}" could not be created`);
32
+ }
33
+ return 'created';
34
+ }
35
+ };
36
+ }
37
+ //# sourceMappingURL=github-release-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-release-client.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/github-release-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAmBxG,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAM,UAAU,yBAAyB,CAAC,IAAqC;IAC3E,MAAM,cAAc,GAAG,8BAA8B,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QACxB,OAAO,EAAE;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB;KACJ,CAAC,CAAC;IAEH,OAAO;QACH,KAAK,CAAC,sBAAsB,CAAC,OAAO;YAChC,MAAM,QAAQ,GAAG,MAAM,6BAA6B,CAChD,OAAO,CAAC,OAAO,CAAC,+CAA+C,EAAE;gBAC7D,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,OAAO,CAAC,OAAO;aACvB,CAAC,EACF,kBAAkB,CACrB,CAAC;YACF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,UAAU,CAAC;YACtB,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAC/C,OAAO,CAAC,OAAO,CAAC,qCAAqC,EAAE;gBACnD,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,OAAO,CAAC,OAAO;gBACzB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;aACrB,CAAC,EACF,kBAAkB,CACrB,CAAC;YACF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,CAAC,OAAO,wBAAwB,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { normalizeRepositoryUrl } from "packtory/bundle-emitter/repository-url-normalizer.js";
2
+ const githubRepositoryPattern = /^https:\/\/github\.com\/(?<owner>[^/]+)\/(?<repo>[^/]+)$/u;
3
+ export function parseGitHubRepositoryParts(packageInfo) {
4
+ const repositoryUrl = normalizeRepositoryUrl(packageInfo.repository);
5
+ const match = githubRepositoryPattern.exec(String(repositoryUrl));
6
+ if (match?.groups === undefined) {
7
+ throw new Error('package.json repository must point to a GitHub repository');
8
+ }
9
+ return { owner: String(match.groups.owner), repo: String(match.groups.repo) };
10
+ }
11
+ export function formatGitHubRepositoryName(packageInfo) {
12
+ const repository = parseGitHubRepositoryParts(packageInfo);
13
+ return `${repository.owner}/${repository.repo}`;
14
+ }
15
+ //# sourceMappingURL=github-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-repository.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/github-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAO3F,MAAM,uBAAuB,GAAG,2DAA2D,CAAC;AAE5F,MAAM,UAAU,0BAA0B,CAAC,WAAoC;IAC3E,MAAM,aAAa,GAAG,sBAAsB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IAClE,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,WAAoC;IAC3E,MAAM,UAAU,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAC3D,OAAO,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;AACpD,CAAC"}
@@ -4,7 +4,7 @@ async function reportOutcome(log, fileManager, outcome, flags) {
4
4
  let exitCode = 0;
5
5
  if (outcome.result.isErr) {
6
6
  exitCode = 1;
7
- printPublishFailure(log, outcome.result.error, { stage: flags.stage });
7
+ printPublishFailure(log, outcome.result.error, flags.stage);
8
8
  }
9
9
  else {
10
10
  printSuccessSummary(log, outcome.result.value, { stage: flags.stage });
@@ -1 +1 @@
1
- {"version":3,"file":"publish-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/publish-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,YAAY,EAAoB,MAAM,yBAAyB,CAAC;AAczE,KAAK,UAAU,aAAa,CACxB,GAAW,EACX,WAA8C,EAC9C,OAAqB,EACrB,KAAkC;IAElC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,GAAG,CAAC,CAAC;QACb,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACJ,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7F,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAwB;IAC5D,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAClF,IAAI,kBAAkB,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE;YACzE,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ;YACvB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU;SACtD,CAAC,CAAC;QACH,kBAAkB,GAAG,KAAK,CAAC;QAC3B,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,MAAM,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;YAAS,CAAC;QACP,IAAI,kBAAkB,EAAE,CAAC;YACrB,eAAe,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QACD,eAAe,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"publish-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/publish-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,YAAY,EAAoB,MAAM,yBAAyB,CAAC;AAczE,KAAK,UAAU,aAAa,CACxB,GAAW,EACX,WAA8C,EAC9C,OAAqB,EACrB,KAAkC;IAElC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,GAAG,CAAC,CAAC;QACb,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACJ,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7F,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAwB;IAC5D,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAClF,IAAI,kBAAkB,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE;YACzE,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ;YACvB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU;SACtD,CAAC,CAAC;QACH,kBAAkB,GAAG,KAAK,CAAC;QAC3B,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,MAAM,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;YAAS,CAAC;QACP,IAAI,kBAAkB,EAAE,CAAC;YACrB,eAAe,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QACD,eAAe,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;AACL,CAAC"}
@@ -0,0 +1,53 @@
1
+ import assert from 'node:assert';
2
+ async function runGit(deps, args) {
3
+ const result = await deps.runGitCommand('git', ['-C', deps.repositoryFolder, ...args]);
4
+ return result.stdout.trim();
5
+ }
6
+ async function readGitOutputResult(deps, args) {
7
+ try {
8
+ return { kind: 'found', value: await runGit(deps, args) };
9
+ }
10
+ catch {
11
+ return { kind: 'missing' };
12
+ }
13
+ }
14
+ export function createReleaseGitClient(deps) {
15
+ return {
16
+ async commit(filePaths, message) {
17
+ if (filePaths.length === 0) {
18
+ throw new Error('No changelog files were written; cannot create a release commit');
19
+ }
20
+ await runGit(deps, ['add', '--', ...filePaths]);
21
+ await runGit(deps, ['commit', '-m', message]);
22
+ },
23
+ async currentHead() {
24
+ const head = await runGit(deps, ['rev-parse', '--verify', 'HEAD']);
25
+ if (head.length === 0) {
26
+ throw new Error('Unable to read the current Git head');
27
+ }
28
+ return head;
29
+ },
30
+ async ensureClean() {
31
+ const status = await runGit(deps, ['status', '--porcelain=v1']);
32
+ if (status.length > 0) {
33
+ throw new Error('Git index and worktree must be clean before release writes');
34
+ }
35
+ },
36
+ async ensureTag(tagName, message, targetHead) {
37
+ const existingTag = await readGitOutputResult(deps, ['rev-parse', '--verify', `refs/tags/${tagName}^{}`]);
38
+ if (existingTag.kind === 'missing') {
39
+ await runGit(deps, ['tag', '-a', tagName, '-m', message, targetHead]);
40
+ return;
41
+ }
42
+ assert.strictEqual(existingTag.kind, 'found');
43
+ if (existingTag.value === targetHead) {
44
+ return;
45
+ }
46
+ throw new Error(`Tag "${tagName}" already exists at ${existingTag.value}, expected ${targetHead}`);
47
+ },
48
+ async pushFollowTags() {
49
+ await runGit(deps, ['push', '--follow-tags']);
50
+ }
51
+ };
52
+ }
53
+ //# sourceMappingURL=release-git-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-git-client.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-git-client.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAqBjC,KAAK,UAAU,MAAM,CAAC,IAAkC,EAAE,IAAuB;IAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACvF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,mBAAmB,CAC9B,IAAkC,EAClC,IAAuB;IAEvB,IAAI,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAkC;IACrE,OAAO;QACH,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO;YAC3B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;YAChD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,KAAK,CAAC,WAAW;YACb,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YACnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,KAAK,CAAC,WAAW;YACb,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAChE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAClF,CAAC;QACL,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU;YACxC,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,OAAO,KAAK,CAAC,CAAC,CAAC;YAC1G,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;gBACtE,OAAO;YACX,CAAC;YACD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,WAAW,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBACnC,OAAO;YACX,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,QAAQ,OAAO,uBAAuB,WAAW,CAAC,KAAK,cAAc,UAAU,EAAE,CAAC,CAAC;QACvG,CAAC;QAED,KAAK,CAAC,cAAc;YAChB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;QAClD,CAAC;KACJ,CAAC;AACN,CAAC"}