@solidxai/solidctl 0.1.48-beta.0 → 0.1.48-beta.3
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/dist/commands/module-release.d.ts +14 -0
- package/dist/commands/module-release.js +317 -0
- package/dist/commands/module-release.js.map +1 -0
- package/dist/commands/module.command.d.ts +2 -0
- package/dist/commands/module.command.js +67 -0
- package/dist/commands/module.command.js.map +1 -0
- package/dist/commands/release-changelog.d.ts +3 -1
- package/dist/commands/release-changelog.js +33 -4
- package/dist/commands/release-changelog.js.map +1 -1
- package/dist/commands/release.command.js +27 -1
- package/dist/commands/release.command.js.map +1 -1
- package/dist/main.js +2 -0
- package/dist/main.js.map +1 -1
- package/dist/module-package.d.ts +70 -0
- package/dist/module-package.js +397 -0
- package/dist/module-package.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SolidModulePublishConfig } from '../module-package';
|
|
2
|
+
export interface ModuleReleaseOptions {
|
|
3
|
+
preid?: string;
|
|
4
|
+
dryRun?: boolean;
|
|
5
|
+
force?: boolean;
|
|
6
|
+
skipTests?: boolean;
|
|
7
|
+
testsOnly?: boolean;
|
|
8
|
+
mainBranch?: string;
|
|
9
|
+
devBranch?: string;
|
|
10
|
+
enhanceChangelog?: boolean;
|
|
11
|
+
merge?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function planSolidModuleVersion(currentVersion: string, versionType: string, preid?: string): string;
|
|
14
|
+
export declare function runSolidModuleRelease(versionType: string, options: ModuleReleaseOptions, publishConfig: SolidModulePublishConfig): Promise<void>;
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.planSolidModuleVersion = planSolidModuleVersion;
|
|
7
|
+
exports.runSolidModuleRelease = runSolidModuleRelease;
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const semver_1 = __importDefault(require("semver"));
|
|
12
|
+
const module_package_1 = require("../module-package");
|
|
13
|
+
const release_changelog_1 = require("./release-changelog");
|
|
14
|
+
function capture(command, args, cwd) {
|
|
15
|
+
return (0, child_process_1.execFileSync)(command, args, {
|
|
16
|
+
cwd,
|
|
17
|
+
encoding: 'utf-8',
|
|
18
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
19
|
+
}).trim();
|
|
20
|
+
}
|
|
21
|
+
function run(command, args, cwd, dryRun) {
|
|
22
|
+
if (dryRun) {
|
|
23
|
+
console.log(`[dry-run] ${[command, ...args].join(' ')}`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
(0, child_process_1.execFileSync)(command, args, { cwd, stdio: 'inherit' });
|
|
27
|
+
}
|
|
28
|
+
function readVersion(projectRoot) {
|
|
29
|
+
const packagePath = path_1.default.join(projectRoot, 'package.json');
|
|
30
|
+
if (!fs_1.default.existsSync(packagePath)) {
|
|
31
|
+
throw new Error('SolidX module releases require a root package.json.');
|
|
32
|
+
}
|
|
33
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(packagePath, 'utf-8'));
|
|
34
|
+
if (!packageJson.version || !semver_1.default.valid(packageJson.version)) {
|
|
35
|
+
throw new Error('The root package.json must contain a valid SemVer version.');
|
|
36
|
+
}
|
|
37
|
+
if (packageJson.private !== true) {
|
|
38
|
+
throw new Error('The root package.json must set private to true for a SolidX module release.');
|
|
39
|
+
}
|
|
40
|
+
return packageJson.version;
|
|
41
|
+
}
|
|
42
|
+
function planSolidModuleVersion(currentVersion, versionType, preid) {
|
|
43
|
+
if (!['patch', 'minor', 'major', 'prerelease', 'preminor', 'premajor'].includes(versionType)) {
|
|
44
|
+
throw new Error(`Unsupported release version type: ${versionType}`);
|
|
45
|
+
}
|
|
46
|
+
let releaseType;
|
|
47
|
+
if (!preid) {
|
|
48
|
+
releaseType = versionType;
|
|
49
|
+
}
|
|
50
|
+
else if (versionType === 'minor' || versionType === 'preminor') {
|
|
51
|
+
releaseType = 'preminor';
|
|
52
|
+
}
|
|
53
|
+
else if (versionType === 'major' || versionType === 'premajor') {
|
|
54
|
+
releaseType = 'premajor';
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
releaseType = semver_1.default.prerelease(currentVersion) ? 'prerelease' : 'prepatch';
|
|
58
|
+
}
|
|
59
|
+
const plannedVersion = preid
|
|
60
|
+
? semver_1.default.inc(currentVersion, releaseType, preid)
|
|
61
|
+
: semver_1.default.inc(currentVersion, releaseType);
|
|
62
|
+
if (!plannedVersion) {
|
|
63
|
+
throw new Error(`Could not calculate a version after ${currentVersion}.`);
|
|
64
|
+
}
|
|
65
|
+
return plannedVersion;
|
|
66
|
+
}
|
|
67
|
+
function getTagCommit(projectRoot, tag) {
|
|
68
|
+
try {
|
|
69
|
+
return (capture('git', ['rev-list', '-n', '1', tag], projectRoot) || undefined);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function getRemoteTagCommit(projectRoot, tag) {
|
|
76
|
+
try {
|
|
77
|
+
const output = capture('git', ['ls-remote', '--tags', 'origin', `refs/tags/${tag}^{}`], projectRoot);
|
|
78
|
+
if (output) {
|
|
79
|
+
return output.split(/\s+/)[0];
|
|
80
|
+
}
|
|
81
|
+
const lightweight = capture('git', ['ls-remote', '--tags', 'origin', `refs/tags/${tag}`], projectRoot);
|
|
82
|
+
return lightweight ? lightweight.split(/\s+/)[0] : undefined;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function readGitHubRelease(projectRoot, tag) {
|
|
89
|
+
try {
|
|
90
|
+
return JSON.parse(capture('gh', ['release', 'view', tag, '--json', 'url,assets'], projectRoot));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function ensureCleanTree(projectRoot, dryRun) {
|
|
97
|
+
const status = capture('git', ['status', '--porcelain'], projectRoot);
|
|
98
|
+
if (status) {
|
|
99
|
+
if (dryRun) {
|
|
100
|
+
console.log('[dry-run] Working tree is not clean; a real release would stop.');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
throw new Error('The working tree must be clean before releasing.');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function validateBranchAndRemote(projectRoot, branch, force, dryRun, allowAhead) {
|
|
107
|
+
const currentBranch = capture('git', ['branch', '--show-current'], projectRoot);
|
|
108
|
+
if (currentBranch !== branch && !force) {
|
|
109
|
+
throw new Error(`SolidX module releases must run from ${branch}; current branch is ${currentBranch}.`);
|
|
110
|
+
}
|
|
111
|
+
if (dryRun) {
|
|
112
|
+
console.log(`[dry-run] Would fetch origin/${branch} and verify it matches HEAD.`);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
run('git', ['fetch', 'origin', branch, '--tags'], projectRoot, false);
|
|
116
|
+
const divergence = capture('git', ['rev-list', '--left-right', '--count', `HEAD...origin/${branch}`], projectRoot)
|
|
117
|
+
.split(/\s+/)
|
|
118
|
+
.map(Number);
|
|
119
|
+
const isInvalidDivergence = divergence[1] !== 0 || (!allowAhead && divergence[0] !== 0);
|
|
120
|
+
if (!force && isInvalidDivergence) {
|
|
121
|
+
throw new Error(`HEAD and origin/${branch} must be synchronized before releasing.`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function ensureGitHubAccess(projectRoot, dryRun) {
|
|
125
|
+
if (dryRun) {
|
|
126
|
+
console.log('[dry-run] Would verify GitHub CLI authentication.');
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
run('gh', ['auth', 'status'], projectRoot, false);
|
|
130
|
+
}
|
|
131
|
+
function runValidationCommands(projectRoot, commands, dryRun) {
|
|
132
|
+
for (const command of commands) {
|
|
133
|
+
if (dryRun) {
|
|
134
|
+
console.log(`[dry-run] ${command}`);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
(0, child_process_1.execSync)(command, { cwd: projectRoot, stdio: 'inherit' });
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function ensureModuleSourcesAreCommitted(projectRoot, config) {
|
|
142
|
+
const sourcePaths = [config.apiModulePath, config.uiModulePath].map((sourcePath) => path_1.default.relative(projectRoot, sourcePath));
|
|
143
|
+
const untracked = capture('git', ['ls-files', '--others', '--exclude-standard', '--', ...sourcePaths], projectRoot);
|
|
144
|
+
const ignored = capture('git', [
|
|
145
|
+
'ls-files',
|
|
146
|
+
'--others',
|
|
147
|
+
'--ignored',
|
|
148
|
+
'--exclude-standard',
|
|
149
|
+
'--',
|
|
150
|
+
...sourcePaths,
|
|
151
|
+
], projectRoot);
|
|
152
|
+
if (untracked || ignored) {
|
|
153
|
+
const paths = [untracked, ignored].filter(Boolean).join('\n');
|
|
154
|
+
throw new Error(`Module source trees contain untracked or ignored files that would not be part of the release commit:\n${paths}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function ensureOutputDirectoryIsIgnored(projectRoot, config) {
|
|
158
|
+
const relativeOutputDir = path_1.default
|
|
159
|
+
.relative(projectRoot, config.outputDir)
|
|
160
|
+
.split(path_1.default.sep)
|
|
161
|
+
.join('/');
|
|
162
|
+
const ignoredProbe = `${relativeOutputDir}/.solidctl-release-output`;
|
|
163
|
+
try {
|
|
164
|
+
capture('git', ['check-ignore', '--no-index', ignoredProbe], projectRoot);
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
throw new Error(`Module release output directory must be gitignored: ${relativeOutputDir}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function updatePackageVersion(projectRoot, version) {
|
|
171
|
+
const packagePath = path_1.default.join(projectRoot, 'package.json');
|
|
172
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(packagePath, 'utf-8'));
|
|
173
|
+
packageJson.version = version;
|
|
174
|
+
fs_1.default.writeFileSync(packagePath, `${JSON.stringify(packageJson, null, 2)}\n`, 'utf-8');
|
|
175
|
+
}
|
|
176
|
+
function writeChecksumFile(filePath, sha256) {
|
|
177
|
+
const checksumPath = `${filePath}.sha256`;
|
|
178
|
+
fs_1.default.writeFileSync(checksumPath, `${sha256} ${path_1.default.basename(filePath)}\n`, 'utf-8');
|
|
179
|
+
return checksumPath;
|
|
180
|
+
}
|
|
181
|
+
function publishGitHubRelease(projectRoot, tag, version, artifactPath, checksumPath, prerelease) {
|
|
182
|
+
const existing = readGitHubRelease(projectRoot, tag);
|
|
183
|
+
if (!existing) {
|
|
184
|
+
const args = [
|
|
185
|
+
'release',
|
|
186
|
+
'create',
|
|
187
|
+
tag,
|
|
188
|
+
artifactPath,
|
|
189
|
+
checksumPath,
|
|
190
|
+
'--title',
|
|
191
|
+
tag,
|
|
192
|
+
'--notes',
|
|
193
|
+
(0, release_changelog_1.getChangelogEntry)(projectRoot, version),
|
|
194
|
+
];
|
|
195
|
+
if (prerelease) {
|
|
196
|
+
args.push('--prerelease');
|
|
197
|
+
}
|
|
198
|
+
run('gh', args, projectRoot, false);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
run('gh', ['release', 'upload', tag, artifactPath, checksumPath, '--clobber'], projectRoot, false);
|
|
202
|
+
}
|
|
203
|
+
return readGitHubRelease(projectRoot, tag)?.url || '';
|
|
204
|
+
}
|
|
205
|
+
function pushReleaseRefs(projectRoot, branch, tag) {
|
|
206
|
+
run('git', [
|
|
207
|
+
'push',
|
|
208
|
+
'--atomic',
|
|
209
|
+
'origin',
|
|
210
|
+
`HEAD:refs/heads/${branch}`,
|
|
211
|
+
`refs/tags/${tag}:refs/tags/${tag}`,
|
|
212
|
+
], projectRoot, false);
|
|
213
|
+
const head = capture('git', ['rev-parse', 'HEAD'], projectRoot);
|
|
214
|
+
const remoteBranch = capture('git', ['ls-remote', '--heads', 'origin', `refs/heads/${branch}`], projectRoot).split(/\s+/)[0];
|
|
215
|
+
if (remoteBranch !== head || getRemoteTagCommit(projectRoot, tag) !== head) {
|
|
216
|
+
throw new Error('Remote release branch and tag were not updated to the release commit.');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
function isResumeRelease(projectRoot, currentVersion) {
|
|
220
|
+
const tag = `v${currentVersion}`;
|
|
221
|
+
const head = capture('git', ['rev-parse', 'HEAD'], projectRoot);
|
|
222
|
+
const localTagCommit = getTagCommit(projectRoot, tag);
|
|
223
|
+
const remoteTagCommit = getRemoteTagCommit(projectRoot, tag);
|
|
224
|
+
if (remoteTagCommit && remoteTagCommit !== head) {
|
|
225
|
+
throw new Error(`Remote tag ${tag} does not point to the local release commit.`);
|
|
226
|
+
}
|
|
227
|
+
return localTagCommit === head || remoteTagCommit === head;
|
|
228
|
+
}
|
|
229
|
+
async function generateReleaseAssets(projectRoot, config, version) {
|
|
230
|
+
const tag = `v${version}`;
|
|
231
|
+
const head = capture('git', ['rev-parse', 'HEAD'], projectRoot);
|
|
232
|
+
const sourceRef = getTagCommit(projectRoot, tag) === head ? `${tag}^` : 'HEAD';
|
|
233
|
+
const result = await (0, module_package_1.exportModulePackage)({
|
|
234
|
+
projectRoot,
|
|
235
|
+
config,
|
|
236
|
+
version,
|
|
237
|
+
exportedAt: capture('git', ['show', '-s', '--format=%cI', sourceRef], projectRoot),
|
|
238
|
+
});
|
|
239
|
+
const checksumPath = writeChecksumFile(result.filePath, result.sha256);
|
|
240
|
+
console.log(`Validated module package: ${result.filePath}`);
|
|
241
|
+
return { artifactPath: result.filePath, checksumPath };
|
|
242
|
+
}
|
|
243
|
+
async function runSolidModuleRelease(versionType, options, publishConfig) {
|
|
244
|
+
const projectRoot = process.cwd();
|
|
245
|
+
const config = (0, module_package_1.resolveSolidModuleConfig)(projectRoot, publishConfig);
|
|
246
|
+
const mainBranch = options.mainBranch || config.mainBranch || 'main';
|
|
247
|
+
const devBranch = options.devBranch || config.devBranch || mainBranch;
|
|
248
|
+
const dryRun = options.dryRun || false;
|
|
249
|
+
const force = options.force || false;
|
|
250
|
+
const reverseMerge = options.merge !== false && (config.reverseMerge ?? true);
|
|
251
|
+
if (options.skipTests && options.testsOnly) {
|
|
252
|
+
throw new Error('Cannot use --skip-tests and --tests-only together.');
|
|
253
|
+
}
|
|
254
|
+
const currentVersion = readVersion(projectRoot);
|
|
255
|
+
const currentTag = `v${currentVersion}`;
|
|
256
|
+
const head = capture('git', ['rev-parse', 'HEAD'], projectRoot);
|
|
257
|
+
const remoteCurrentTag = dryRun
|
|
258
|
+
? undefined
|
|
259
|
+
: getRemoteTagCommit(projectRoot, currentTag);
|
|
260
|
+
const resumeCandidate = !dryRun &&
|
|
261
|
+
(getTagCommit(projectRoot, currentTag) === head ||
|
|
262
|
+
remoteCurrentTag === head);
|
|
263
|
+
const resume = resumeCandidate && isResumeRelease(projectRoot, currentVersion);
|
|
264
|
+
const version = resume
|
|
265
|
+
? currentVersion
|
|
266
|
+
: planSolidModuleVersion(currentVersion, versionType, options.preid);
|
|
267
|
+
const isPrerelease = semver_1.default.prerelease(version) !== null;
|
|
268
|
+
const releaseBranch = isPrerelease ? devBranch : mainBranch;
|
|
269
|
+
const tag = `v${version}`;
|
|
270
|
+
ensureCleanTree(projectRoot, dryRun);
|
|
271
|
+
validateBranchAndRemote(projectRoot, releaseBranch, force, dryRun, resumeCandidate);
|
|
272
|
+
ensureGitHubAccess(projectRoot, dryRun);
|
|
273
|
+
if (!resume) {
|
|
274
|
+
if (getTagCommit(projectRoot, tag) ||
|
|
275
|
+
getRemoteTagCommit(projectRoot, tag)) {
|
|
276
|
+
throw new Error(`Tag ${tag} already exists.`);
|
|
277
|
+
}
|
|
278
|
+
if (readGitHubRelease(projectRoot, tag)) {
|
|
279
|
+
throw new Error(`GitHub Release ${tag} already exists.`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
console.log(`${resume ? 'Resuming' : 'Preparing'} ${config.moduleName} ${version}.`);
|
|
283
|
+
if (!options.skipTests) {
|
|
284
|
+
runValidationCommands(projectRoot, config.validationCommands, dryRun);
|
|
285
|
+
}
|
|
286
|
+
if (options.testsOnly) {
|
|
287
|
+
console.log('Release validation completed successfully.');
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
if (dryRun) {
|
|
291
|
+
console.log(`[dry-run] Would export and validate ${config.artifactName}-v${version}.sldx.`);
|
|
292
|
+
console.log(`[dry-run] Would commit, tag ${tag}, push, and publish the GitHub Release.`);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
ensureCleanTree(projectRoot, false);
|
|
296
|
+
ensureModuleSourcesAreCommitted(projectRoot, config);
|
|
297
|
+
ensureOutputDirectoryIsIgnored(projectRoot, config);
|
|
298
|
+
const assets = await generateReleaseAssets(projectRoot, config, version);
|
|
299
|
+
if (!resume) {
|
|
300
|
+
(0, release_changelog_1.generateChangelog)(version, options.enhanceChangelog || false, false);
|
|
301
|
+
updatePackageVersion(projectRoot, version);
|
|
302
|
+
run('git', ['add', 'package.json', 'CHANGELOG.md'], projectRoot, false);
|
|
303
|
+
run('git', ['commit', '-m', `chore: release ${version}`], projectRoot, false);
|
|
304
|
+
run('git', ['tag', '-a', tag, '-m', tag], projectRoot, false);
|
|
305
|
+
}
|
|
306
|
+
pushReleaseRefs(projectRoot, releaseBranch, tag);
|
|
307
|
+
const url = publishGitHubRelease(projectRoot, tag, version, assets.artifactPath, assets.checksumPath, isPrerelease);
|
|
308
|
+
if (!isPrerelease && reverseMerge && devBranch !== mainBranch) {
|
|
309
|
+
run('git', ['checkout', devBranch], projectRoot, false);
|
|
310
|
+
run('git', ['pull', '--ff-only', 'origin', devBranch], projectRoot, false);
|
|
311
|
+
run('git', ['merge', mainBranch, '-m', `chore: merge ${mainBranch} after release`], projectRoot, false);
|
|
312
|
+
run('git', ['push', 'origin', devBranch], projectRoot, false);
|
|
313
|
+
run('git', ['checkout', mainBranch], projectRoot, false);
|
|
314
|
+
}
|
|
315
|
+
console.log(`Published ${tag}${url ? `: ${url}` : ''}`);
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=module-release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-release.js","sourceRoot":"","sources":["../../src/commands/module-release.ts"],"names":[],"mappings":";;;;;AAyEA,wDA+BC;AAuTD,sDAyHC;AAxhBD,iDAAuD;AACvD,4CAAoB;AACpB,gDAAwB;AACxB,oDAA4B;AAC5B,sDAK2B;AAC3B,2DAA2E;AAmB3E,SAAS,OAAO,CAAC,OAAe,EAAE,IAAc,EAAE,GAAW;IAC3D,OAAO,IAAA,4BAAY,EAAC,OAAO,EAAE,IAAI,EAAE;QACjC,GAAG;QACH,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,GAAG,CACV,OAAe,EACf,IAAc,EACd,GAAW,EACX,MAAe;IAEf,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IACD,IAAA,4BAAY,EAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,WAAW,CAAC,WAAmB;IACtC,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC3D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAGnE,CAAC;IACF,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,gBAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,SAAgB,sBAAsB,CACpC,cAAsB,EACtB,WAAmB,EACnB,KAAc;IAEd,IACE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CACzE,WAAW,CACZ,EACD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,WAA+B,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,WAAW,GAAG,WAAiC,CAAC;IAClD,CAAC;SAAM,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QACjE,WAAW,GAAG,UAAU,CAAC;IAC3B,CAAC;SAAM,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QACjE,WAAW,GAAG,UAAU,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,gBAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9E,CAAC;IAED,MAAM,cAAc,GAAG,KAAK;QAC1B,CAAC,CAAC,gBAAM,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,EAAE,KAAK,CAAC;QAChD,CAAC,CAAC,gBAAM,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,uCAAuC,cAAc,GAAG,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,YAAY,CAAC,WAAmB,EAAE,GAAW;IACpD,IAAI,CAAC;QACH,OAAO,CACL,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,IAAI,SAAS,CACvE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,WAAmB,EACnB,GAAW;IAEX,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CACpB,KAAK,EACL,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAAC,EACxD,WAAW,CACZ,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CACzB,KAAK,EACL,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,GAAG,EAAE,CAAC,EACrD,WAAW,CACZ,CAAC;QACF,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,WAAmB,EACnB,GAAW;IAEX,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CACf,OAAO,CACL,IAAI,EACJ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,EAChD,WAAW,CACZ,CACe,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB,EAAE,MAAe;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC;IACtE,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CACT,iEAAiE,CAClE,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,WAAmB,EACnB,MAAc,EACd,KAAc,EACd,MAAe,EACf,UAAmB;IAEnB,MAAM,aAAa,GAAG,OAAO,CAC3B,KAAK,EACL,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAC5B,WAAW,CACZ,CAAC;IACF,IAAI,aAAa,KAAK,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,wCAAwC,MAAM,uBAAuB,aAAa,GAAG,CACtF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CACT,gCAAgC,MAAM,8BAA8B,CACrE,CAAC;QACF,OAAO;IACT,CAAC;IAED,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,OAAO,CACxB,KAAK,EACL,CAAC,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,MAAM,EAAE,CAAC,EAClE,WAAW,CACZ;SACE,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,MAAM,CAAC,CAAC;IACf,MAAM,mBAAmB,GACvB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK,IAAI,mBAAmB,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,yCAAyC,CACnE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB,EAAE,MAAe;IAC9D,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IACD,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,qBAAqB,CAC5B,WAAmB,EACnB,QAAkB,EAClB,MAAe;IAEf,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAA,wBAAQ,EAAC,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CACtC,WAAmB,EACnB,MAAiC;IAEjC,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CACjE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CACvD,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CACvB,KAAK,EACL,CAAC,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,EACpE,WAAW,CACZ,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CACrB,KAAK,EACL;QACE,UAAU;QACV,UAAU;QACV,WAAW;QACX,oBAAoB;QACpB,IAAI;QACJ,GAAG,WAAW;KACf,EACD,WAAW,CACZ,CAAC;IAEF,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,yGAAyG,KAAK,EAAE,CACjH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CACrC,WAAmB,EACnB,MAAiC;IAEjC,MAAM,iBAAiB,GAAG,cAAI;SAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC;SACvC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,YAAY,GAAG,GAAG,iBAAiB,2BAA2B,CAAC;IAErE,IAAI,CAAC;QACH,OAAO,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,uDAAuD,iBAAiB,EAAE,CAC3E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB,EAAE,OAAe;IAChE,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CACX,CAAC;IAC7B,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;IAC9B,YAAE,CAAC,aAAa,CACd,WAAW,EACX,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAC3C,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,MAAc;IACzD,MAAM,YAAY,GAAG,GAAG,QAAQ,SAAS,CAAC;IAC1C,YAAE,CAAC,aAAa,CACd,YAAY,EACZ,GAAG,MAAM,KAAK,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EACzC,OAAO,CACR,CAAC;IACF,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,oBAAoB,CAC3B,WAAmB,EACnB,GAAW,EACX,OAAe,EACf,YAAoB,EACpB,YAAoB,EACpB,UAAmB;IAEnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAErD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,GAAG;YACX,SAAS;YACT,QAAQ;YACR,GAAG;YACH,YAAY;YACZ,YAAY;YACZ,SAAS;YACT,GAAG;YACH,SAAS;YACT,IAAA,qCAAiB,EAAC,WAAW,EAAE,OAAO,CAAC;SACxC,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QACD,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,GAAG,CACD,IAAI,EACJ,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,EACnE,WAAW,EACX,KAAK,CACN,CAAC;IACJ,CAAC;IAED,OAAO,iBAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,eAAe,CACtB,WAAmB,EACnB,MAAc,EACd,GAAW;IAEX,GAAG,CACD,KAAK,EACL;QACE,MAAM;QACN,UAAU;QACV,QAAQ;QACR,mBAAmB,MAAM,EAAE;QAC3B,aAAa,GAAG,cAAc,GAAG,EAAE;KACpC,EACD,WAAW,EACX,KAAK,CACN,CAAC;IAEF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,OAAO,CAC1B,KAAK,EACL,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,MAAM,EAAE,CAAC,EAC1D,WAAW,CACZ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClB,IAAI,YAAY,KAAK,IAAI,IAAI,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB,EAAE,cAAsB;IAClE,MAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC7D,IAAI,eAAe,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,cAAc,GAAG,8CAA8C,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,KAAK,IAAI,IAAI,eAAe,KAAK,IAAI,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,WAAmB,EACnB,MAAiC,EACjC,OAAe;IAEf,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;IAChE,MAAM,SAAS,GACb,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAmB,EAAC;QACvC,WAAW;QACX,MAAM;QACN,OAAO;QACP,UAAU,EAAE,OAAO,CACjB,KAAK,EACL,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,EACzC,WAAW,CACZ;KACF,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,6BAA6B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;AACzD,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,OAA6B,EAC7B,aAAuC;IAEvC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAA,yCAAwB,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC;IACrE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,UAAU,CAAC;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACrC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IAE9E,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,cAAc,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG,MAAM;QAC7B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,eAAe,GACnB,CAAC,MAAM;QACP,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI;YAC7C,gBAAgB,KAAK,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GACV,eAAe,IAAI,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM;QACpB,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,sBAAsB,CAAC,cAAc,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,YAAY,GAAG,gBAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACzD,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;IAE1B,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrC,uBAAuB,CACrB,WAAW,EACX,aAAa,EACb,KAAK,EACL,MAAM,EACN,eAAe,CAChB,CAAC;IACF,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IACE,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC;YAC9B,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,EACpC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,kBAAkB,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,iBAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,GAAG,CACxE,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,qBAAqB,CAAC,WAAW,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CACT,uCAAuC,MAAM,CAAC,YAAY,KAAK,OAAO,QAAQ,CAC/E,CAAC;QACF,OAAO,CAAC,GAAG,CACT,+BAA+B,GAAG,yCAAyC,CAC5E,CAAC;QACF,OAAO;IACT,CAAC;IAED,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACpC,+BAA+B,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrD,8BAA8B,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAA,qCAAiB,EAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,IAAI,KAAK,EAAE,KAAK,CAAC,CAAC;QACrE,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3C,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACxE,GAAG,CACD,KAAK,EACL,CAAC,QAAQ,EAAE,IAAI,EAAE,kBAAkB,OAAO,EAAE,CAAC,EAC7C,WAAW,EACX,KAAK,CACN,CAAC;QACF,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IACD,eAAe,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;IAEjD,MAAM,GAAG,GAAG,oBAAoB,CAC9B,WAAW,EACX,GAAG,EACH,OAAO,EACP,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,YAAY,EACnB,YAAY,CACb,CAAC;IAEF,IAAI,CAAC,YAAY,IAAI,YAAY,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC9D,GAAG,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACxD,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAC3E,GAAG,CACD,KAAK,EACL,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,UAAU,gBAAgB,CAAC,EACvE,WAAW,EACX,KAAK,CACN,CAAC;QACF,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAC9D,GAAG,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerModuleCommand = registerModuleCommand;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const module_package_1 = require("../module-package");
|
|
10
|
+
function readRootVersion(projectRoot) {
|
|
11
|
+
const packagePath = path_1.default.join(projectRoot, 'package.json');
|
|
12
|
+
if (!fs_1.default.existsSync(packagePath)) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(packagePath, 'utf-8'));
|
|
16
|
+
return packageJson.version;
|
|
17
|
+
}
|
|
18
|
+
function registerModuleCommand(program) {
|
|
19
|
+
const moduleCommand = program
|
|
20
|
+
.command('module')
|
|
21
|
+
.description('Export and validate SolidX extension module packages');
|
|
22
|
+
moduleCommand
|
|
23
|
+
.command('export [module-name]')
|
|
24
|
+
.description('Export a SolidX extension module from the local project')
|
|
25
|
+
.option('-v, --module-version <version>', 'Module version (defaults to the root package version)')
|
|
26
|
+
.option('-o, --output <path>', 'Output .sldx path')
|
|
27
|
+
.action(async (moduleName, options) => {
|
|
28
|
+
const projectRoot = process.cwd();
|
|
29
|
+
const configured = (0, module_package_1.loadSolidModulePublishConfig)(projectRoot);
|
|
30
|
+
const publishConfig = configured ||
|
|
31
|
+
{
|
|
32
|
+
type: 'solidx-module',
|
|
33
|
+
moduleName: moduleName || '',
|
|
34
|
+
};
|
|
35
|
+
if (moduleName && configured && moduleName !== configured.moduleName) {
|
|
36
|
+
publishConfig.moduleName = moduleName;
|
|
37
|
+
}
|
|
38
|
+
if (!publishConfig.moduleName) {
|
|
39
|
+
throw new Error('Provide a module name or configure publish.moduleName in solidctl.config.json.');
|
|
40
|
+
}
|
|
41
|
+
const version = options.moduleVersion || readRootVersion(projectRoot);
|
|
42
|
+
if (!version) {
|
|
43
|
+
throw new Error('Provide --module-version or add a version to the root package.json.');
|
|
44
|
+
}
|
|
45
|
+
const result = await (0, module_package_1.exportModulePackage)({
|
|
46
|
+
projectRoot,
|
|
47
|
+
config: (0, module_package_1.resolveSolidModuleConfig)(projectRoot, publishConfig),
|
|
48
|
+
version,
|
|
49
|
+
outputPath: options.output,
|
|
50
|
+
});
|
|
51
|
+
console.log(`Created ${result.filePath}`);
|
|
52
|
+
console.log(`SHA-256: ${result.sha256}`);
|
|
53
|
+
});
|
|
54
|
+
moduleCommand
|
|
55
|
+
.command('validate <file>')
|
|
56
|
+
.description('Validate a SolidX extension module package')
|
|
57
|
+
.option('-n, --module-name <name>', 'Expected module name')
|
|
58
|
+
.option('-v, --module-version <version>', 'Expected module version')
|
|
59
|
+
.action(async (file, options) => {
|
|
60
|
+
const manifest = await (0, module_package_1.validateModulePackage)(path_1.default.resolve(file), {
|
|
61
|
+
expectedModuleName: options.moduleName,
|
|
62
|
+
expectedVersion: options.moduleVersion,
|
|
63
|
+
});
|
|
64
|
+
console.log(`Valid ${manifest.module.name} module package, version ${manifest.module.version || 'unversioned'}`);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=module.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.command.js","sourceRoot":"","sources":["../../src/commands/module.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,3 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function generateChangelog(plannedVersion: string, enhanceChangelog: boolean, dryRun: boolean, isPrerelease?: boolean): void;
|
|
2
|
+
export declare function generateAndCommitChangelog(plannedVersion: string, enhanceChangelog: boolean, dryRun: boolean, isPrerelease?: boolean): Promise<void>;
|
|
3
|
+
export declare function getChangelogEntry(projectRoot: string, version: string): string;
|
|
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateChangelog = generateChangelog;
|
|
6
7
|
exports.generateAndCommitChangelog = generateAndCommitChangelog;
|
|
8
|
+
exports.getChangelogEntry = getChangelogEntry;
|
|
7
9
|
const child_process_1 = require("child_process");
|
|
8
10
|
const fs_1 = __importDefault(require("fs"));
|
|
9
11
|
const path_1 = __importDefault(require("path"));
|
|
@@ -49,9 +51,19 @@ function getPreviousStableTag() {
|
|
|
49
51
|
return undefined;
|
|
50
52
|
}
|
|
51
53
|
}
|
|
54
|
+
function getLatestTag() {
|
|
55
|
+
try {
|
|
56
|
+
const tag = capture('git tag --sort=-version:refname | head -1');
|
|
57
|
+
return tag || undefined;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
52
63
|
function getCommitsSinceTag(tag) {
|
|
53
64
|
try {
|
|
54
|
-
const
|
|
65
|
+
const range = tag ? `${tag}..HEAD` : 'HEAD';
|
|
66
|
+
const raw = capture(`git log ${range} --format="%s" --no-merges`);
|
|
55
67
|
return raw
|
|
56
68
|
.split('\n')
|
|
57
69
|
.map((l) => l.trim())
|
|
@@ -133,11 +145,11 @@ function writeChangelog(entry, changelogPath) {
|
|
|
133
145
|
fs_1.default.writeFileSync(changelogPath, before + entry + '\n\n' + after, 'utf-8');
|
|
134
146
|
}
|
|
135
147
|
}
|
|
136
|
-
|
|
148
|
+
function generateChangelog(plannedVersion, enhanceChangelog, dryRun, isPrerelease = false) {
|
|
137
149
|
const changelogPath = path_1.default.join(process.cwd(), 'CHANGELOG.md');
|
|
138
150
|
const today = new Date().toISOString().slice(0, 10);
|
|
139
|
-
const prevTag = getPreviousStableTag();
|
|
140
|
-
const commits =
|
|
151
|
+
const prevTag = isPrerelease ? getLatestTag() : getPreviousStableTag();
|
|
152
|
+
const commits = getCommitsSinceTag(prevTag);
|
|
141
153
|
console.log(`Generating changelog (${commits.length} commits since ${prevTag ?? 'beginning'})...`);
|
|
142
154
|
const groups = groupCommits(commits);
|
|
143
155
|
let entry = buildEntry(plannedVersion, today, groups);
|
|
@@ -151,7 +163,24 @@ async function generateAndCommitChangelog(plannedVersion, enhanceChangelog, dryR
|
|
|
151
163
|
else {
|
|
152
164
|
writeChangelog(entry, changelogPath);
|
|
153
165
|
}
|
|
166
|
+
}
|
|
167
|
+
async function generateAndCommitChangelog(plannedVersion, enhanceChangelog, dryRun, isPrerelease = false) {
|
|
168
|
+
generateChangelog(plannedVersion, enhanceChangelog, dryRun, isPrerelease);
|
|
154
169
|
run('git add CHANGELOG.md', dryRun);
|
|
155
170
|
run(`git commit -m "docs: update changelog for ${plannedVersion}"`, dryRun);
|
|
156
171
|
}
|
|
172
|
+
function getChangelogEntry(projectRoot, version) {
|
|
173
|
+
const changelogPath = path_1.default.join(projectRoot, 'CHANGELOG.md');
|
|
174
|
+
if (!fs_1.default.existsSync(changelogPath)) {
|
|
175
|
+
throw new Error(`CHANGELOG.md does not exist at ${projectRoot}`);
|
|
176
|
+
}
|
|
177
|
+
const changelog = fs_1.default.readFileSync(changelogPath, 'utf-8');
|
|
178
|
+
const heading = `## [${version}]`;
|
|
179
|
+
const start = changelog.indexOf(heading);
|
|
180
|
+
if (start === -1) {
|
|
181
|
+
throw new Error(`CHANGELOG.md does not contain an entry for ${version}.`);
|
|
182
|
+
}
|
|
183
|
+
const nextEntry = changelog.indexOf('\n## [', start + heading.length);
|
|
184
|
+
return changelog.slice(start, nextEntry === -1 ? undefined : nextEntry).trim();
|
|
185
|
+
}
|
|
157
186
|
//# sourceMappingURL=release-changelog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-changelog.js","sourceRoot":"","sources":["../../src/commands/release-changelog.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"release-changelog.js","sourceRoot":"","sources":["../../src/commands/release-changelog.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ const net_1 = __importDefault(require("net"));
|
|
|
11
11
|
const os_1 = __importDefault(require("os"));
|
|
12
12
|
const path_1 = __importDefault(require("path"));
|
|
13
13
|
const release_changelog_1 = require("./release-changelog");
|
|
14
|
+
const module_package_1 = require("../module-package");
|
|
15
|
+
const module_release_1 = require("./module-release");
|
|
14
16
|
const DEFAULT_CONFIG = {
|
|
15
17
|
mainBranch: 'main',
|
|
16
18
|
devBranch: 'dev',
|
|
@@ -81,6 +83,17 @@ function resolveReleaseProject() {
|
|
|
81
83
|
const packageName = packageJson?.name;
|
|
82
84
|
const solidApiPackageJsonPath = path_1.default.join(process.cwd(), 'solid-api', 'package.json');
|
|
83
85
|
const solidApiPackageName = readPackageJson(solidApiPackageJsonPath)?.name;
|
|
86
|
+
const moduleConfig = (0, module_package_1.loadSolidModulePublishConfig)(process.cwd());
|
|
87
|
+
if (moduleConfig) {
|
|
88
|
+
console.log(`Release project resolved: SolidX module (${moduleConfig.moduleName})`);
|
|
89
|
+
return {
|
|
90
|
+
type: 'solidx-module',
|
|
91
|
+
cwdName,
|
|
92
|
+
packageName,
|
|
93
|
+
versionSourcePath: path_1.default.join(process.cwd(), 'package.json'),
|
|
94
|
+
moduleConfig,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
84
97
|
switch (cwdName) {
|
|
85
98
|
case 'solidctl':
|
|
86
99
|
if (packageName === '@solidxai/solidctl') {
|
|
@@ -88,12 +101,14 @@ function resolveReleaseProject() {
|
|
|
88
101
|
return { type: 'solidctl', cwdName, packageName, versionSourcePath: path_1.default.join(process.cwd(), 'package.json') };
|
|
89
102
|
}
|
|
90
103
|
break;
|
|
104
|
+
case 'core':
|
|
91
105
|
case 'solid-core-module':
|
|
92
106
|
if (packageName === '@solidxai/core') {
|
|
93
107
|
console.log(`Release project resolved: solid-core-module (${packageName})`);
|
|
94
108
|
return { type: 'solid-core-module', cwdName, packageName, versionSourcePath: path_1.default.join(process.cwd(), 'package.json') };
|
|
95
109
|
}
|
|
96
110
|
break;
|
|
111
|
+
case 'core-ui':
|
|
97
112
|
case 'solid-core-ui':
|
|
98
113
|
if (packageName === '@solidxai/core-ui') {
|
|
99
114
|
console.log(`Release project resolved: solid-core-ui (${packageName})`);
|
|
@@ -111,6 +126,7 @@ function resolveReleaseProject() {
|
|
|
111
126
|
};
|
|
112
127
|
}
|
|
113
128
|
break;
|
|
129
|
+
case 'code-builder':
|
|
114
130
|
case 'solid-code-builder':
|
|
115
131
|
if (packageName === '@solidxai/code-builder') {
|
|
116
132
|
console.log(`Release project resolved: solid-code-builder (${packageName})`);
|
|
@@ -119,7 +135,7 @@ function resolveReleaseProject() {
|
|
|
119
135
|
break;
|
|
120
136
|
}
|
|
121
137
|
console.error(`❌ Could not resolve release project from folder "${cwdName}" and package name "${packageName || solidApiPackageName || 'unknown'}".`);
|
|
122
|
-
console.error(' Supported release folders are solidctl, solid-core-module, solid-core-ui, solid-library-management, and solid-code-builder.');
|
|
138
|
+
console.error(' Supported release folders are solidctl, core/solid-core-module, core-ui/solid-core-ui, solid-library-management, and code-builder/solid-code-builder.');
|
|
123
139
|
process.exit(1);
|
|
124
140
|
}
|
|
125
141
|
function getCurrentBranch() {
|
|
@@ -873,6 +889,10 @@ async function runSharedReleaseFlow(versionType, options, project) {
|
|
|
873
889
|
exec(`git pull origin ${mainBranch}`, dryRun);
|
|
874
890
|
}
|
|
875
891
|
else {
|
|
892
|
+
if (!plannedVersion) {
|
|
893
|
+
throw new Error('Cannot determine planned version for pre-release. Ensure the project has a valid package.json with a version field.');
|
|
894
|
+
}
|
|
895
|
+
await (0, release_changelog_1.generateAndCommitChangelog)(plannedVersion, enhanceChangelog, dryRun, true);
|
|
876
896
|
exec(versionCmd, dryRun);
|
|
877
897
|
console.log('Pushing to git (with tags)...');
|
|
878
898
|
exec('git push --follow-tags', dryRun);
|
|
@@ -1073,6 +1093,12 @@ Configuration:
|
|
|
1073
1093
|
case 'solid-code-builder':
|
|
1074
1094
|
await runSharedReleaseFlow(versionType, options, project);
|
|
1075
1095
|
break;
|
|
1096
|
+
case 'solidx-module':
|
|
1097
|
+
if (!project.moduleConfig) {
|
|
1098
|
+
throw new Error('Resolved SolidX module release is missing its publish configuration.');
|
|
1099
|
+
}
|
|
1100
|
+
await (0, module_release_1.runSolidModuleRelease)(versionType, options, project.moduleConfig);
|
|
1101
|
+
break;
|
|
1076
1102
|
}
|
|
1077
1103
|
});
|
|
1078
1104
|
}
|