@git.zone/cli 6.7.2 → 6.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/mod_deprecate/helpers.deprecation.js +21 -8
- package/dist_ts/mod_release/helpers.npmartifact.d.ts +3 -0
- package/dist_ts/mod_release/helpers.npmartifact.js +16 -1
- package/dist_ts/mod_release/helpers.releasepreparation.d.ts +21 -0
- package/dist_ts/mod_release/helpers.releasepreparation.js +196 -0
- package/dist_ts/mod_release/index.d.ts +2 -0
- package/dist_ts/mod_release/index.js +123 -7
- package/package.json +4 -4
- package/readme.md +46 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/mod_deprecate/helpers.deprecation.ts +34 -13
- package/ts/mod_release/helpers.npmartifact.ts +30 -0
- package/ts/mod_release/helpers.releasepreparation.ts +308 -0
- package/ts/mod_release/index.ts +174 -6
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/cli',
|
|
6
|
-
version: '6.
|
|
6
|
+
version: '6.8.0',
|
|
7
7
|
description: 'A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxlQUFlO0lBQ3JCLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSwrTEFBK0w7Q0FDN00sQ0FBQSJ9
|
|
@@ -33,7 +33,7 @@ const readMetadata = async (registry, packageName, fetchImplementation) => {
|
|
|
33
33
|
method: "GET",
|
|
34
34
|
redirect: "error",
|
|
35
35
|
signal: AbortSignal.timeout(30_000),
|
|
36
|
-
headers: { accept: "application/json" },
|
|
36
|
+
headers: { accept: "application/json", "cache-control": "no-cache" },
|
|
37
37
|
});
|
|
38
38
|
if (!response.ok)
|
|
39
39
|
throw new Error(`Cannot verify ${packageName} on ${registry} (HTTP ${response.status}).`);
|
|
@@ -49,6 +49,7 @@ const readMetadata = async (registry, packageName, fetchImplementation) => {
|
|
|
49
49
|
}
|
|
50
50
|
return metadata;
|
|
51
51
|
};
|
|
52
|
+
const isDeprecationComplete = (metadata, message) => Object.values(metadata.versions).every((version) => version.deprecated === message);
|
|
52
53
|
/** Verify replacements everywhere before changing metadata for any old package. */
|
|
53
54
|
export const executeDeprecation = async (planArg, shell, cwd, fetchImplementation = fetch) => {
|
|
54
55
|
const plan = createDeprecationPlan(planArg);
|
|
@@ -63,6 +64,11 @@ export const executeDeprecation = async (planArg, shell, cwd, fetchImplementatio
|
|
|
63
64
|
await readMetadata(registry, plan.packageName, fetchImplementation);
|
|
64
65
|
}
|
|
65
66
|
for (const registry of plan.registries) {
|
|
67
|
+
// Registry mutations may reject a redundant request even after accepting
|
|
68
|
+
// the original one. Reconcile observable state before issuing another write.
|
|
69
|
+
const existing = await readMetadata(registry, plan.packageName, fetchImplementation);
|
|
70
|
+
if (isDeprecationComplete(existing, plan.message))
|
|
71
|
+
continue;
|
|
66
72
|
const result = await shell.execSpawn("pnpm", [
|
|
67
73
|
"deprecate",
|
|
68
74
|
`${plan.packageName}@*`,
|
|
@@ -74,14 +80,21 @@ export const executeDeprecation = async (planArg, shell, cwd, fetchImplementatio
|
|
|
74
80
|
timeout: 120_000,
|
|
75
81
|
timeoutKillGraceMs: 5_000,
|
|
76
82
|
});
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
let verified = false;
|
|
84
|
+
for (let attempt = 0; attempt < 5; attempt++) {
|
|
85
|
+
const metadata = await readMetadata(registry, plan.packageName, fetchImplementation);
|
|
86
|
+
if (isDeprecationComplete(metadata, plan.message)) {
|
|
87
|
+
verified = true;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
if (attempt < 4)
|
|
91
|
+
await new Promise((resolve) => setTimeout(resolve, 1_000));
|
|
92
|
+
}
|
|
93
|
+
if (!verified) {
|
|
94
|
+
if (result.exitCode !== 0)
|
|
95
|
+
throw new Error(`Deprecation failed on ${registry}.`);
|
|
83
96
|
throw new Error(`Deprecation is not yet verified for every version on ${registry}; rerunning the same deprecation is safe.`);
|
|
84
97
|
}
|
|
85
98
|
}
|
|
86
99
|
};
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5kZXByZWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9kZXByZWNhdGUvaGVscGVycy5kZXByZWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBU2hGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQ25DLE9BQWlFLEVBQy9DLEVBQUU7SUFDcEIsTUFBTSxXQUFXLEdBQUcsb0RBQW9ELENBQUM7SUFDekUsSUFDRSxPQUFPLE9BQU8sQ0FBQyxXQUFXLEtBQUssUUFBUTtRQUN2QyxPQUFPLE9BQU8sQ0FBQyxXQUFXLEtBQUssUUFBUTtRQUN2QyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN0QyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN0QyxPQUFPLENBQUMsV0FBVyxLQUFLLE9BQU8sQ0FBQyxXQUFXO1FBRTNDLE1BQU0sSUFBSSxLQUFLLENBQ2Isb0VBQW9FLENBQ3JFLENBQUM7SUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNyRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsTUFBTTtRQUN0RSxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDdEUsTUFBTSxPQUFPLEdB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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as plugins from "./mod.plugins.js";
|
|
2
2
|
import { type IReleaseArtifact } from "./classes.releasejournal.js";
|
|
3
3
|
declare const supportedPnpmVersions: readonly ["11.25.0", "12.1.0", "12.2.1", "12.3.4"];
|
|
4
|
+
export declare function assertNpmPackageName(value: unknown): asserts value is string;
|
|
4
5
|
export interface IPnpmReleaseCapability {
|
|
5
6
|
version: (typeof supportedPnpmVersions)[number];
|
|
6
7
|
}
|
|
@@ -29,6 +30,8 @@ export declare const publishNpmArtifact: (smartshellArg: plugins.smartshell.Smar
|
|
|
29
30
|
exitCode: number;
|
|
30
31
|
output: string;
|
|
31
32
|
}>;
|
|
33
|
+
/** Recovery without an original artifact must never adopt a published version. */
|
|
34
|
+
export declare const assertNpmVersionAbsent: (registryArg: string, packageNameArg: string, versionArg: string, optionsArg?: INpmArtifactProbeOptions) => Promise<void>;
|
|
32
35
|
export declare const probeAnonymousNpmArtifact: (registryArg: string, artifactArg: IReleaseArtifact, tagArg?: string, optionsArg?: INpmArtifactProbeOptions) => Promise<INpmArtifactProbeResult>;
|
|
33
36
|
export declare const waitForAnonymousNpmArtifact: (registryArg: string, artifactArg: IReleaseArtifact, tagArg?: string, optionsArg?: INpmArtifactProbeOptions) => Promise<INpmArtifactProbeResult>;
|
|
34
37
|
export {};
|
|
@@ -64,6 +64,11 @@ const capabilityCommandTimeoutMs = 30_000;
|
|
|
64
64
|
const packCommandTimeoutMs = 10 * 60_000;
|
|
65
65
|
const publishCommandTimeoutMs = 5 * 60_000;
|
|
66
66
|
const packageNameRegex = /^(?:@[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*|[a-z0-9][a-z0-9._-]*)$/;
|
|
67
|
+
export function assertNpmPackageName(value) {
|
|
68
|
+
if (typeof value !== "string" || !packageNameRegex.test(value)) {
|
|
69
|
+
throw new Error("Invalid release package name.");
|
|
70
|
+
}
|
|
71
|
+
}
|
|
67
72
|
const readPackageIdentity = async (cwdArg) => {
|
|
68
73
|
let packageJson;
|
|
69
74
|
try {
|
|
@@ -339,6 +344,16 @@ const cancelResponseBody = (responseArg) => {
|
|
|
339
344
|
void responseArg.body.cancel().catch(() => { });
|
|
340
345
|
}
|
|
341
346
|
};
|
|
347
|
+
/** Recovery without an original artifact must never adopt a published version. */
|
|
348
|
+
export const assertNpmVersionAbsent = async (registryArg, packageNameArg, versionArg, optionsArg = {}) => {
|
|
349
|
+
const registry = normalizeNpmRegistryUrl(registryArg);
|
|
350
|
+
assertNpmPackageName(packageNameArg);
|
|
351
|
+
const response = await fetchWithoutRedirects(new URL(`${registry}/${encodeURIComponent(packageNameArg)}/${encodeURIComponent(versionArg)}`), "application/json", optionsArg);
|
|
352
|
+
cancelResponseBody(response);
|
|
353
|
+
if (response.status !== 404) {
|
|
354
|
+
throw new Error(`Cannot prove ${packageNameArg}@${versionArg} is unpublished at ${registry} (HTTP ${response.status}).`);
|
|
355
|
+
}
|
|
356
|
+
};
|
|
342
357
|
const readBoundedResponse = async (responseArg, maximumSizeArg, contextArg) => {
|
|
343
358
|
const contentLength = responseArg.headers.get("content-length");
|
|
344
359
|
if (contentLength &&
|
|
@@ -463,4 +478,4 @@ export const waitForAnonymousNpmArtifact = async (registryArg, artifactArg, tagA
|
|
|
463
478
|
}
|
|
464
479
|
return lastResult;
|
|
465
480
|
};
|
|
466
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5ucG1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9yZWxlYXNlL2hlbHBlcnMubnBtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUJBQXVCLEdBRXhCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEYsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixTQUFTO0lBQ1QsUUFBUTtJQUNSLFFBQVE7SUFDUixRQUFRO0NBQ0EsQ0FBQztBQUNYLE1BQU0sb0JBQW9CLEdBQUc7SUFDM0IsU0FBUyxFQUFFO1FBQ1QsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQztRQUNoQyxPQUFPLEVBQUU7WUFDUCwyQkFBMkI7WUFDM0IsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixRQUFRO1lBQ1IsYUFBYTtZQUNiLDhCQUE4QjtTQUMvQjtLQUNGO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLENBQUMsNEJBQTRCLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQztRQUM3RCxPQUFPLEVBQUU7WUFDUCx5Q0FBeUM7WUFDekMsaUNBQWlDO1lBQ2pDLGlCQUFpQjtZQUNqQixrQkFBa0I7WUFDbEIsUUFBUTtZQUNSLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsdUNBQXVDO1NBQ3hDO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDO1FBQzdELE9BQU8sRUFBRTtZQUNQLHlDQUF5QztZQUN6QyxpQ0FBaUM7WUFDakMsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixRQUFRO1lBQ1IsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQix1Q0FBdUM7U0FDeEM7S0FDRjtJQUNELFFBQVEsRUFBRTtRQUNSLElBQUksRUFBRSxDQUFDLDRCQUE0QixFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUM7UUFDN0QsT0FBTyxFQUFFO1lBQ1AseUNBQXlDO1lBQ3pDLGlDQUFpQztZQUNqQyxpQkFBaUI7WUFDakIsa0JBQWtCO1lBQ2xCLFFBQVE7WUFDUixhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLHVDQUF1QztTQUN4QztLQUNGO0NBQ08sQ0FBQztBQUNYLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckQsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLENBQUM7QUFDMUMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMzQyxNQUFNLGdCQUFnQixHQUNwQix3RUFBd0UsQ0FBQztBQTRCM0UsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLEVBQy9CLE1BQWMsRUFDcUMsRUFBRTtJQUNyRCxJQUFJLFdBQW9CLENBQUM7SUFDekIsSUFBSSxDQUFDO1FBQ0gsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQ3RCLE1BQU0sT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFDekMsTUFBTSxDQUNQLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsRUFBRTtZQUN4RSxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUNFLE9BQU8sV0FBVyxLQUFLLFFBQVE7UUFDL0IsV0FBVyxLQUFLLElBQUk7UUFDcEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDMUIsT0FBUSxXQUFrQyxDQUFDLElBQUksS0FBSyxRQUFRO1FBQzVELENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFFLFdBQWdDLENBQUMsSUFBSSxDQUFDO1FBQzlELE9BQVEsV0FBcUMsQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUNsRSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFDRCxPQUFPO1FBQ0wsV0FBVyxFQUFHLFdBQWdDLENBQUMsSUFBSTtRQUNuRCxPQUFPLEVBQUcsV0FBbUMsQ0FBQyxPQUFPO0tBQ3RELENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQzNCLFNBQWlCLEVBQ2pCLFlBQStCLEVBQy9CLFVBQWtCLEVBQ1osRUFBRTtJQUNSLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQ2pDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQ2xELENBQUM7SUFDRixJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FDYixRQUFRLFVBQVUsb0RBQW9ELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDNUYsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxLQUFLLEVBQzlDLGFBQTRDLEVBQzVDLE1BQWMsRUFDbUIsRUFBRTtJQUNuQyxNQUFNLGFBQWEsR0FBRyxNQUFNLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDekUsR0FBRyxFQUFFLE1BQU07UUFDWCxNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSwwQkFBMEI7UUFDbkMsa0JBQWtCLEVBQUUsS0FBSztLQUMxQixDQUFDLENBQUM7SUFDSCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVDLE1BQU0sZ0JBQWdCLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUNqRCxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FDM0MsQ0FBQztJQUNGLElBQUksYUFBYSxDQUFDLFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RELE1BQU0sSUFBSSxLQUFLLENBQ2IsNkRBQTZELHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxPQUFPLElBQUksU0FBUyxHQUFHLENBQ3BJLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxZQUFZLEdBQUcsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU1RCxNQUFNLFFBQVEsR0FBRyxNQUFNLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1FBQ3pFLEdBQUcsRUFBRSxNQUFNO1FBQ1gsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFPLEVBQUUsMEJBQTBCO1FBQ25DLGtCQUFrQixFQUFFLEtBQUs7S0FDMUIsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxRQUFRLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXpFLE1BQU0sV0FBVyxHQUFHLE1BQU0sYUFBYSxDQUFDLFNBQVMsQ0FDL0MsTUFBTSxFQUNOLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUNyQjtRQUNFLEdBQUcsRUFBRSxNQUFNO1FBQ1gsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFPLEVBQUUsMEJBQTBCO1FBQ25DLGtCQUFrQixFQUFFLEtBQUs7S0FDMUIsQ0FDRixDQUFDO0lBQ0YsSUFBSSxXQUFXLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0Qsb0JBQW9CLENBQ2xCLFdBQVcsQ0FBQyxjQUFjLEVBQzFCLFlBQVksQ0FBQyxPQUFPLEVBQ3BCLFNBQVMsQ0FDVixDQUFDO0lBQ0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSwyQkFBMkIsR0FBRztJQUNsQywwQkFBMEI7SUFDMUIsMkJBQTJCO0lBQzNCLGFBQWE7SUFDYixjQUFjO0lBQ2QsbUJBQW1CO0NBQ1gsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLENBQy9DLFlBQStCLEVBQ3JCLEVBQUU7SUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ3BDLEtBQUssTUFBTSxRQUFRLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksQ0FBQyxRQUFRO1lBQUUsU0FBUztRQUN4RCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLDBFQUEwRTtRQUMxRSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQUUsU0FBUztRQUN2QyxJQUNFLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQzlDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzVCLEVBQ0QsQ0FBQztZQUNELFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxDQUNuRCxZQUErQixFQUN6QixFQUFFO0lBQ1IsTUFBTSxTQUFTLEdBQUcsaUNBQWlDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEUsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU87SUFDVCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYix3REFBd0QsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtRQUM5RSxxRkFBcUY7UUFDckYsMEZBQTBGO1FBQzFGLDBGQUEwRjtRQUMxRiwrRUFBK0UsQ0FDbEYsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQUc7SUFDakMsb0NBQW9DO0lBQ3BDLGdCQUFnQjtDQUNSLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLEVBQzdDLE1BQWMsRUFDQyxFQUFFO0lBQ2pCLEtBQUssTUFBTSxZQUFZLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDekQsSUFBSSxPQUFlLENBQUM7UUFDcEIsSUFBSSxDQUFDO1lBQ0gsT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSyxLQUErQixDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDdkQsU0FBUztZQUNYLENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLHFCQUFxQixZQUFZLDhCQUE4QixFQUMvRDtnQkFDRSxLQUFLLEVBQUUsS0FBSzthQUNiLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxPQUFPO2FBQzFCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZCxJQUFJLDJCQUEyQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxZQUFZLHdEQUF3RDtnQkFDckUsOEdBQThHLENBQ2pILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsUUFBZ0IsRUFBVSxFQUFFO0lBQ2xFLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFDRCxJQUFJLEdBQVEsQ0FBQztJQUNiLElBQUksQ0FBQztRQUNILEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0QsSUFDRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDO1FBQ3ZELEdBQUcsQ0FBQyxRQUFRO1FBQ1osR0FBRyxDQUFDLFFBQVE7UUFDWixHQUFHLENBQUMsTUFBTTtRQUNWLEdBQUcsQ0FBQyxJQUFJLEVBQ1IsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2Isd0ZBQXdGLENBQ3pGLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsUUFBZ0IsRUFBVSxFQUFFO0lBQ2pFLHNDQUFzQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQ3ZDLGVBQXVCLEVBQ3ZCLGNBQXNCLEVBQ3RCLFVBQWtCLEVBQ1MsRUFBRTtJQUM3QixNQUFNLElBQUksR0FBRyxNQUFNLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDOUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pELE9BQU87UUFDTCxJQUFJLEVBQUUsYUFBYTtRQUNuQixJQUFJLEVBQUUsdUJBQXVCO1FBQzdCLFdBQVcsRUFBRSxjQUFjO1FBQzNCLE9BQU8sRUFBRSxVQUFVO1FBQ25CLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVTtRQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDbkUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3ZFLFNBQVMsRUFBRSxVQUFVLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7S0FDMUYsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxXQUFtQixFQUFpQixFQUFFO0lBQzVELE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQ2xDLGFBQTRDLEVBQzVDLE1BQWMsRUFDZCx1QkFBK0IsRUFDL0Isa0JBQTBCLEVBQzFCLFVBQWtCLHVCQUF1QixFQUNkLEVBQUU7SUFDN0IsSUFDRSxPQUFPLEtBQUssdUJBQXVCO1FBQ25DLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUM3QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxLQUFLLENBQ2Isd0JBQXdCLFFBQVEsQ0FBQyxPQUFPLDJCQUEyQixrQkFBa0IsR0FBRyxDQUN6RixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLFNBQVMsQ0FDMUMsTUFBTSxFQUNOLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQ3pDO1FBQ0UsR0FBRyxFQUFFLE1BQU07UUFDWCxPQUFPLEVBQUUsb0JBQW9CO1FBQzdCLGtCQUFrQixFQUFFLEtBQUs7S0FDMUIsQ0FDRixDQUFDO0lBQ0YsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkRBQTZELENBQzlELENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxNQUFlLENBQUM7SUFDcEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNqQixXQUFXLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQzVELENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELEVBQUU7WUFDcEUsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFDRSxPQUFPLE1BQU0sS0FBSyxRQUFRO1FBQzFCLE1BQU0sS0FBSyxJQUFJO1FBQ2YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDcEIsTUFBNkIsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLFdBQVc7UUFDM0QsTUFBZ0MsQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLE9BQU8sRUFDOUQsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsTUFBTSxhQUFhLEdBQUksTUFBOEIsQ0FBQyxLQUFLLENBQUM7SUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLDRGQUE0RixDQUM3RixDQUFDO0lBQ0osQ0FBQztJQUNELHFDQUFxQyxDQUNuQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDN0IsT0FBTyxRQUFRLEtBQUssUUFBUTtRQUMxQixDQUFDLENBQUMsUUFBUTtRQUNWLENBQUMsQ0FBQyxNQUFNLENBQUUsUUFBK0IsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQ3pELENBQ0YsQ0FBQztJQUNGLE1BQU0sUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdCLE1BQU0sUUFBUSxHQUFHLE1BQU0sb0JBQW9CLENBQ3pDLFlBQVksRUFDWixRQUFRLENBQUMsV0FBVyxFQUNwQixRQUFRLENBQUMsT0FBTyxDQUNqQixDQUFDO0lBQ0YsT0FBTyxFQUFFLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLEVBQzFDLGVBQXVCLEVBQ3ZCLG1CQUFxQyxFQUN0QixFQUFFO0lBQ2pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sb0JBQW9CLENBQ3ZDLGVBQWUsRUFDZixtQkFBbUIsQ0FBQyxXQUFXLEVBQy9CLG1CQUFtQixDQUFDLE9BQU8sQ0FDNUIsQ0FBQztJQUNGLElBQ0UsTUFBTSxDQUFDLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxJQUFJO1FBQ3hDLE1BQU0sQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsSUFBSTtRQUN4QyxNQUFNLENBQUMsTUFBTSxLQUFLLG1CQUFtQixDQUFDLE1BQU07UUFDNUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxtQkFBbUIsQ0FBQyxTQUFTLEVBQ2xELENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLHFFQUFxRSxDQUN0RSxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQ2xDLGVBQXVCLEVBQ3ZCLFdBQW1CLEVBQ1QsRUFBRSxDQUFDO0lBQ2IsU0FBUztJQUNULGVBQWU7SUFDZixjQUFjLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxFQUFFO0lBQ3BELGlCQUFpQjtJQUNqQixjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixRQUFRO0NBQ1QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEtBQUssRUFDckMsYUFBNEMsRUFDNUMsTUFBYyxFQUNkLGVBQXVCLEVBQ3ZCLFdBQW1CLEVBQzRCLEVBQUU7SUFDakQsTUFBTSxNQUFNLEdBQUcsTUFBTSxhQUFhLENBQUMsU0FBUyxDQUMxQyxNQUFNLEVBQ04sb0JBQW9CLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxFQUNsRDtRQUNFLEdBQUcsRUFBRSxNQUFNO1FBQ1gsT0FBTyxFQUFFLHVCQUF1QjtRQUNoQyxrQkFBa0IsRUFBRSxLQUFLO0tBQzFCLENBQ0YsQ0FBQztJQUNGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3RFLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLENBQUMsVUFBb0MsRUFBZ0IsRUFBRSxDQUN0RSxVQUFVLENBQUMsbUJBQW1CLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQztBQUVyRCxNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFDakMsTUFBVyxFQUNYLFNBQWlCLEVBQ2pCLFVBQW9DLEVBQ2pCLEVBQUU7SUFDckIsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUM7SUFDakQsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFO1FBQ2xDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtRQUM5QixRQUFRLEVBQUUsUUFBUTtRQUNsQixNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7S0FDdkMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFdBQXFCLEVBQVEsRUFBRTtJQUN6RCxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pELEtBQUssV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxFQUMvQixXQUFxQixFQUNyQixjQUFzQixFQUN0QixVQUFrQixFQUNELEVBQUU7SUFDbkIsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNoRSxJQUNFLGFBQWE7UUFDYixDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsY0FBYyxDQUFDLEVBQ3hFLENBQUM7UUFDRCxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsVUFBVSxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxVQUFVLHdCQUF3QixDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFpQixFQUFFLENBQUM7SUFDaEMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNkLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ2hCLE1BQU07WUFDUixDQUFDO1lBQ0QsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQzlCLElBQUksSUFBSSxHQUFHLGNBQWMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsVUFBVSxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztZQUFTLENBQUM7UUFDVCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNsQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQy9DLElBQUksQ0FDTCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLEVBQ25DLFdBQXFCLEVBQ0gsRUFBRSxDQUNwQixJQUFJLENBQUMsS0FBSyxDQUNSLENBQ0UsTUFBTSxtQkFBbUIsQ0FDdkIsV0FBVyxFQUNYLDRCQUE0QixFQUM1QixtQkFBbUIsQ0FDcEIsQ0FDRixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDbkIsQ0FBQztBQUVKLE1BQU0sY0FBYyxHQUFHLENBQ3JCLFdBQW1CLEVBQ25CLGNBQXNCLEVBQ3RCLFVBQW1CLEVBQ2QsRUFBRTtJQUNQLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFELE9BQU8sSUFBSSxHQUFHLENBQ1osVUFBVTtRQUNSLENBQUMsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxJQUFJLGNBQWMsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUMvRixDQUFDLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxjQUFjLEVBQUUsQ0FDaEUsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEtBQUssRUFDNUMsV0FBbUIsRUFDbkIsV0FBNkIsRUFDN0IsTUFBTSxHQUFHLFFBQVEsRUFDakIsYUFBdUMsRUFBRSxFQUNQLEVBQUU7SUFDcEMsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxlQUFlLEdBQUcsTUFBTSxxQkFBcUIsQ0FDakQsY0FBYyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFDdEUsa0JBQWtCLEVBQ2xCLFVBQVUsQ0FDWCxDQUFDO1FBQ0YsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ25DLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ25DLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFDO1FBQy9ELENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sdUJBQXVCLENBQUMsZUFBZSxDQUFDLENBSS9ELENBQUM7UUFDRixJQUNFLFFBQVEsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLFdBQVc7WUFDekMsUUFBUSxDQUFDLE9BQU8sS0FBSyxXQUFXLENBQUMsT0FBTztZQUN4QyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsS0FBSyxXQUFXLENBQUMsU0FBUztZQUNsRCxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sS0FBSyxXQUFXLENBQUMsSUFBSTtZQUMxQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxLQUFLLFFBQVEsRUFDMUMsQ0FBQztZQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFDO1FBQzNELENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLElBQ0UsVUFBVSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTTtZQUN4QyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEtBQUssUUFBUSxJQUFJLFVBQVUsQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDO1lBQ3JFLFVBQVUsQ0FBQyxRQUFRO1lBQ25CLFVBQVUsQ0FBQyxRQUFRO1lBQ25CLFVBQVUsQ0FBQyxNQUFNO1lBQ2pCLFVBQVUsQ0FBQyxJQUFJLEVBQ2YsQ0FBQztZQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFDO1FBQzNELENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxNQUFNLHFCQUFxQixDQUNqRCxVQUFVLEVBQ1YsMEJBQTBCLEVBQzFCLFVBQVUsQ0FDWCxDQUFDO1FBQ0YsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ25DLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFDO1FBQy9ELENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxNQUFNLG1CQUFtQixDQUNyQyxlQUFlLEVBQ2YsV0FBVyxDQUFDLElBQUksRUFDaEIsa0JBQWtCLENBQ25CLENBQUM7UUFDRixJQUNFLEtBQUssQ0FBQyxVQUFVLEtBQUssV0FBVyxDQUFDLElBQUk7WUFDckMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQzNELFdBQVcsQ0FBQyxJQUFJO1lBQ2xCLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUM3RCxXQUFXLENBQUMsTUFBTTtZQUNwQixVQUFVLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzVFLFdBQVcsQ0FBQyxTQUFTLEVBQ3ZCLENBQUM7WUFDRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztRQUMxRCxDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQUcsTUFBTSxxQkFBcUIsQ0FDakQsY0FBYyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQ2pELGtCQUFrQixFQUNsQixVQUFVLENBQ1gsQ0FBQztRQUNGLElBQUksZUFBZSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNuQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLHVCQUF1QixDQUNwRCxlQUFlLENBQ2hCLENBRUEsQ0FBQztRQUNGLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUM7SUFDM0QsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLEtBQUssRUFDOUMsV0FBbUIsRUFDbkIsV0FBNkIsRUFDN0IsTUFBTSxHQUFHLFFBQVEsRUFDakIsYUFBdUMsRUFBRSxFQUNQLEVBQUU7SUFDcEMsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDM0MsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7SUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BELE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTRELENBQzdELENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxVQUFVLEdBQTRCO1FBQ3hDLE1BQU0sRUFBRSxjQUFjO1FBQ3RCLElBQUksRUFBRSxlQUFlO0tBQ3RCLENBQUM7SUFDRixLQUFLLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsUUFBUSxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN2RCxVQUFVLEdBQUcsTUFBTSx5QkFBeUIsQ0FDMUMsV0FBVyxFQUNYLFdBQVcsRUFDWCxNQUFNLEVBQ04sVUFBVSxDQUNYLENBQUM7UUFDRixJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssT0FBTyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdEUsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUNELElBQUksT0FBTyxHQUFHLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQztZQUMzQixNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyxDQUFDIn0=
|
|
481
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5ucG1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9yZWxlYXNlL2hlbHBlcnMubnBtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUJBQXVCLEdBRXhCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEYsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixTQUFTO0lBQ1QsUUFBUTtJQUNSLFFBQVE7SUFDUixRQUFRO0NBQ0EsQ0FBQztBQUNYLE1BQU0sb0JBQW9CLEdBQUc7SUFDM0IsU0FBUyxFQUFFO1FBQ1QsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQztRQUNoQyxPQUFPLEVBQUU7WUFDUCwyQkFBMkI7WUFDM0IsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixRQUFRO1lBQ1IsYUFBYTtZQUNiLDhCQUE4QjtTQUMvQjtLQUNGO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLENBQUMsNEJBQTRCLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQztRQUM3RCxPQUFPLEVBQUU7WUFDUCx5Q0FBeUM7WUFDekMsaUNBQWlDO1lBQ2pDLGlCQUFpQjtZQUNqQixrQkFBa0I7WUFDbEIsUUFBUTtZQUNSLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsdUNBQXVDO1NBQ3hDO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDO1FBQzdELE9BQU8sRUFBRTtZQUNQLHlDQUF5QztZQUN6QyxpQ0FBaUM7WUFDakMsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixRQUFRO1lBQ1IsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQix1Q0FBdUM7U0FDeEM7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
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as plugins from "./mod.plugins.js";
|
|
2
|
+
import type { IResolvedReleaseWorkflow } from "../helpers.workflow.js";
|
|
3
|
+
import { ReleaseJournalStore } from "./classes.releasejournal.js";
|
|
4
|
+
import { type IReleaseBranchContext } from "./helpers.releasebranch.js";
|
|
5
|
+
interface IRecoveryRefs {
|
|
6
|
+
mainOid: string;
|
|
7
|
+
tagOid: string;
|
|
8
|
+
}
|
|
9
|
+
export interface IReleasePreparationRecovery {
|
|
10
|
+
smartshell: plugins.smartshell.Smartshell;
|
|
11
|
+
workflow: IResolvedReleaseWorkflow;
|
|
12
|
+
branch: IReleaseBranchContext;
|
|
13
|
+
refs: IRecoveryRefs;
|
|
14
|
+
version: string;
|
|
15
|
+
store: ReleaseJournalStore;
|
|
16
|
+
}
|
|
17
|
+
export declare const assertPackageReleaseRecovery: (options: IReleasePreparationRecovery) => Promise<string>;
|
|
18
|
+
export declare const assertRecoveryUnpublished: (options: IReleasePreparationRecovery, packageName: string) => Promise<void>;
|
|
19
|
+
/** Build and seal one unpublished, already tagged package without changing refs. */
|
|
20
|
+
export declare const withReleasePreparationRecovery: <T>(options: IReleasePreparationRecovery, ensureState: () => Promise<void>, prepare: (checkout: string, ensureCheckout: () => Promise<void>) => Promise<T>) => Promise<T>;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import * as plugins from "./mod.plugins.js";
|
|
2
|
+
import { readPendingChangelog } from "../helpers.changelog.js";
|
|
3
|
+
import { InterProcessLock } from "../mod_services/classes.interprocesslock.js";
|
|
4
|
+
import { ReleaseJournalStore } from "./classes.releasejournal.js";
|
|
5
|
+
import { releaseGitEnv, } from "./helpers.releasebranch.js";
|
|
6
|
+
import { assertNpmVersionAbsent, assertNpmPackageName, hashReleaseDestination, } from "./helpers.npmartifact.js";
|
|
7
|
+
import { canonicalReleaseJson } from "./helpers.tsdockerprotocol.js";
|
|
8
|
+
const git = async (options, args, cwd = options.branch.sourceCwd) => {
|
|
9
|
+
const result = await options.smartshell.execSpawn("git", args, {
|
|
10
|
+
cwd,
|
|
11
|
+
env: releaseGitEnv,
|
|
12
|
+
silent: true,
|
|
13
|
+
timeout: 60_000,
|
|
14
|
+
timeoutKillGraceMs: 5_000,
|
|
15
|
+
});
|
|
16
|
+
if (result.exitCode !== 0)
|
|
17
|
+
throw new Error(`Release recovery Git validation failed: ${args[0]}.`);
|
|
18
|
+
return result.stdout.trim();
|
|
19
|
+
};
|
|
20
|
+
export const assertPackageReleaseRecovery = async (options) => {
|
|
21
|
+
const { workflow, branch, version } = options;
|
|
22
|
+
if (workflow.targets.length !== 2 ||
|
|
23
|
+
!workflow.targets.includes("git") ||
|
|
24
|
+
!workflow.targets.includes("npm") ||
|
|
25
|
+
workflow.npmPackageSource !== "root" ||
|
|
26
|
+
!workflow.pushBranch ||
|
|
27
|
+
!workflow.pushTags ||
|
|
28
|
+
branch.sourceBranch !== "main" ||
|
|
29
|
+
!branch.pushUrl ||
|
|
30
|
+
!branch.remoteMainOid) {
|
|
31
|
+
throw new Error("Release recover requires configured Git and root npm targets from clean main.");
|
|
32
|
+
}
|
|
33
|
+
const manifest = JSON.parse(await plugins.fs.readFile(plugins.path.join(branch.sourceCwd, "package.json"), "utf8"));
|
|
34
|
+
if (manifest.version !== version || typeof manifest.name !== "string") {
|
|
35
|
+
throw new Error("Recovery package identity does not match the existing release version.");
|
|
36
|
+
}
|
|
37
|
+
assertNpmPackageName(manifest.name);
|
|
38
|
+
const pending = await readPendingChangelog(plugins.path.join(branch.sourceCwd, workflow.changelogFile), workflow.changelogPendingSection);
|
|
39
|
+
const changelog = await plugins.fs.readFile(plugins.path.join(branch.sourceCwd, workflow.changelogFile), "utf8");
|
|
40
|
+
const headings = changelog
|
|
41
|
+
.split(/\r?\n/)
|
|
42
|
+
.filter((line) => /^##\s/.test(line) && line !== `## ${workflow.changelogPendingSection}`);
|
|
43
|
+
if (!pending.isEmpty ||
|
|
44
|
+
!new RegExp(`^## \\d{4}-\\d{2}-\\d{2} - ${version.replace(/\./g, "\\.")}\\s*$`).test(headings[0] ?? "")) {
|
|
45
|
+
throw new Error("Recovery requires the completed changelog section for this version and no Pending changes.");
|
|
46
|
+
}
|
|
47
|
+
if ((await git(options, [
|
|
48
|
+
"show",
|
|
49
|
+
"-s",
|
|
50
|
+
"--format=%s",
|
|
51
|
+
options.refs.mainOid,
|
|
52
|
+
])) !== `v${version}` ||
|
|
53
|
+
(await git(options, [
|
|
54
|
+
"rev-list",
|
|
55
|
+
"--parents",
|
|
56
|
+
"-n",
|
|
57
|
+
"1",
|
|
58
|
+
options.refs.mainOid,
|
|
59
|
+
])).split(" ").length !== 2) {
|
|
60
|
+
throw new Error("Recovery requires an existing non-merge release commit.");
|
|
61
|
+
}
|
|
62
|
+
if (await git(options, [
|
|
63
|
+
"diff",
|
|
64
|
+
`${options.refs.mainOid}^`,
|
|
65
|
+
options.refs.mainOid,
|
|
66
|
+
"--",
|
|
67
|
+
".smartconfig.json",
|
|
68
|
+
])) {
|
|
69
|
+
throw new Error("Release configuration changed inside the release metadata commit.");
|
|
70
|
+
}
|
|
71
|
+
return manifest.name;
|
|
72
|
+
};
|
|
73
|
+
export const assertRecoveryUnpublished = async (options, packageName) => {
|
|
74
|
+
const output = await git(options, [
|
|
75
|
+
"ls-remote",
|
|
76
|
+
options.branch.pushUrl,
|
|
77
|
+
`refs/tags/v${options.version}`,
|
|
78
|
+
`refs/tags/v${options.version}^{}`,
|
|
79
|
+
]);
|
|
80
|
+
if (output)
|
|
81
|
+
throw new Error("Recovery cannot adopt an existing remote release tag. Use its original journal.");
|
|
82
|
+
for (const registry of options.workflow.npmRegistries)
|
|
83
|
+
await assertNpmVersionAbsent(registry, packageName, options.version);
|
|
84
|
+
};
|
|
85
|
+
const preparationBinding = (options) => ({
|
|
86
|
+
kind: "gitzone-package-release-preparation",
|
|
87
|
+
schemaVersion: 1,
|
|
88
|
+
version: options.version,
|
|
89
|
+
...options.refs,
|
|
90
|
+
destinationHash: hashReleaseDestination(options.branch.pushUrl),
|
|
91
|
+
expectedRemoteMainOid: options.branch.remoteMainOid,
|
|
92
|
+
// Capture resolved configuration, including build/test commands, so retries
|
|
93
|
+
// cannot silently prepare a different release.
|
|
94
|
+
workflow: JSON.parse(JSON.stringify({ ...options.workflow, confirmation: "auto" })),
|
|
95
|
+
});
|
|
96
|
+
const bindPreparation = async (path, expected) => {
|
|
97
|
+
try {
|
|
98
|
+
const stat = await plugins.fs.lstat(path);
|
|
99
|
+
if (!stat.isFile() ||
|
|
100
|
+
stat.isSymbolicLink() ||
|
|
101
|
+
stat.size > 128 * 1024 ||
|
|
102
|
+
(await plugins.fs.readFile(path, "utf8")) !== expected) {
|
|
103
|
+
throw new Error("Release recovery identity or configuration differs from its original preparation.");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (error.code !== "ENOENT")
|
|
108
|
+
throw error;
|
|
109
|
+
const handle = await plugins.fs.open(path, "wx", 0o600);
|
|
110
|
+
try {
|
|
111
|
+
await handle.writeFile(expected, "utf8");
|
|
112
|
+
await handle.sync();
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
await handle.close();
|
|
116
|
+
}
|
|
117
|
+
const directory = await plugins.fs.open(plugins.path.dirname(path), "r");
|
|
118
|
+
try {
|
|
119
|
+
await directory.sync();
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
await directory.close();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
/** Build and seal one unpublished, already tagged package without changing refs. */
|
|
127
|
+
export const withReleasePreparationRecovery = async (options, ensureState, prepare) => {
|
|
128
|
+
if (!options.branch.planAncestryVerified) {
|
|
129
|
+
throw new Error("Release recovery requires verified remote ancestry before preparation.");
|
|
130
|
+
}
|
|
131
|
+
const directory = options.store.getReleaseDirectory(options.version);
|
|
132
|
+
return new InterProcessLock({
|
|
133
|
+
lockPath: `${directory}.prepare.lock`,
|
|
134
|
+
description: `Release v${options.version} preparation`,
|
|
135
|
+
}).runExclusive(async () => {
|
|
136
|
+
await ensureState();
|
|
137
|
+
try {
|
|
138
|
+
await plugins.fs.lstat(directory);
|
|
139
|
+
throw new Error("Release journal already exists. Use release resume; do not rebuild its artifact.");
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (error.code !== "ENOENT")
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
145
|
+
await bindPreparation(`${directory}.preparation.json`, `${canonicalReleaseJson(preparationBinding(options))}\n`);
|
|
146
|
+
const root = await plugins.fs.mkdtemp(plugins.path.join(plugins.os.tmpdir(), "gitzone-release-prepare-"));
|
|
147
|
+
const checkout = plugins.path.join(root, "source");
|
|
148
|
+
let added = false;
|
|
149
|
+
try {
|
|
150
|
+
await git(options, [
|
|
151
|
+
"worktree",
|
|
152
|
+
"add",
|
|
153
|
+
"--detach",
|
|
154
|
+
checkout,
|
|
155
|
+
options.refs.mainOid,
|
|
156
|
+
]);
|
|
157
|
+
added = true;
|
|
158
|
+
const install = await options.smartshell.execSpawn("pnpm", ["install", "--frozen-lockfile"], {
|
|
159
|
+
cwd: checkout,
|
|
160
|
+
timeout: 10 * 60_000,
|
|
161
|
+
timeoutKillGraceMs: 5_000,
|
|
162
|
+
});
|
|
163
|
+
if (install.exitCode !== 0)
|
|
164
|
+
throw new Error("Release recovery dependency installation failed.");
|
|
165
|
+
if (options.workflow.runTests)
|
|
166
|
+
await run(options, checkout, options.workflow.testCommand, "tests");
|
|
167
|
+
if (options.workflow.runBuild)
|
|
168
|
+
await run(options, checkout, options.workflow.buildCommand, "build");
|
|
169
|
+
await assertCheckout(options, checkout);
|
|
170
|
+
await ensureState();
|
|
171
|
+
const result = await prepare(checkout, () => assertCheckout(options, checkout));
|
|
172
|
+
await assertCheckout(options, checkout);
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
finally {
|
|
176
|
+
// This path is a uniquely owned disposable checkout, never the user's
|
|
177
|
+
// source tree or runtime data. Keep registration evidence if cleanup fails.
|
|
178
|
+
if (added)
|
|
179
|
+
await git(options, ["worktree", "remove", "--force", checkout]);
|
|
180
|
+
await plugins.fs.rm(root, { recursive: true, force: true });
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
};
|
|
184
|
+
const run = async (options, cwd, command, phase) => {
|
|
185
|
+
const result = await options.smartshell.exec(command, { cwd });
|
|
186
|
+
if (result.exitCode !== 0)
|
|
187
|
+
throw new Error(`Release recovery ${phase} failed.`);
|
|
188
|
+
};
|
|
189
|
+
const assertCheckout = async (options, checkout) => {
|
|
190
|
+
if ((await git(options, ["rev-parse", "HEAD"], checkout)) !==
|
|
191
|
+
options.refs.mainOid ||
|
|
192
|
+
(await git(options, ["status", "--porcelain", "--untracked-files=all"], checkout))) {
|
|
193
|
+
throw new Error("Release recovery build changed its exact tracked source.");
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5yZWxlYXNlcHJlcGFyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9tb2RfcmVsZWFzZS9oZWxwZXJzLnJlbGVhc2VwcmVwYXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFDTCxhQUFhLEdBRWQsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixzQkFBc0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQWdCckUsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUNmLE9BQW9DLEVBQ3BDLElBQWMsRUFDZCxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQzlCLEVBQUU7SUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7UUFDN0QsR0FBRztRQUNILEdBQUcsRUFBRSxhQUFhO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLE1BQU07UUFDZixrQkFBa0IsRUFBRSxLQUFLO0tBQzFCLENBQUMsQ0FBQztJQUNILElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekUsT0FBTyxNQUFNLENBQUMs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
|
|
@@ -9,6 +9,8 @@ interface ICreateReleaseJournalOptions {
|
|
|
9
9
|
smartshell: plugins.smartshell.Smartshell;
|
|
10
10
|
workflow: IResolvedReleaseWorkflow;
|
|
11
11
|
releaseCwd: string;
|
|
12
|
+
/** Exact detached checkout used only while recovering pre-journal packaging. */
|
|
13
|
+
npmSourceCwd?: string;
|
|
12
14
|
releasePushUrl?: string;
|
|
13
15
|
expectedRemoteMainOid?: string;
|
|
14
16
|
version: string;
|