@git.zone/cli 6.0.1 → 6.1.1

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.
@@ -1,6 +1,9 @@
1
1
  import * as plugins from "./mod.plugins.js";
2
2
  import { InterProcessLock } from "../mod_services/classes.interprocesslock.js";
3
- export const releaseJournalSchemaVersion = 1;
3
+ import { assertReleaseCleanupResult, assertReleasePromotionEvidence, assertReleaseQualificationRequest, assertReleaseQualificationResult, canonicalReleaseJson, classifyReleasePromotionEvidence, getReleasePromotionContexts, } from "./helpers.tsdockerprotocol.js";
4
+ export const releaseJournalStorageVersion = 1;
5
+ export const legacyReleaseJournalSchemaVersion = 1;
6
+ export const releaseJournalSchemaVersion = 2;
4
7
  export const releaseArtifactFileName = "package.tgz";
5
8
  export const releaseJournalFileName = "journal.json";
6
9
  const releaseVersionRegex = /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/;
@@ -126,7 +129,16 @@ const assertArtifact = (valueArg) => {
126
129
  if (!isPlainObject(valueArg)) {
127
130
  throw new Error("Release journal artifact must be an object or null.");
128
131
  }
129
- assertExactKeys(valueArg, ["kind", "file", "packageName", "version", "size", "sha1", "sha256", "integrity"], "Release journal artifact");
132
+ assertExactKeys(valueArg, [
133
+ "kind",
134
+ "file",
135
+ "packageName",
136
+ "version",
137
+ "size",
138
+ "sha1",
139
+ "sha256",
140
+ "integrity",
141
+ ], "Release journal artifact");
130
142
  if (valueArg.kind !== "npm-tarball" ||
131
143
  valueArg.file !== releaseArtifactFileName ||
132
144
  typeof valueArg.packageName !== "string" ||
@@ -145,11 +157,22 @@ const assertArtifact = (valueArg) => {
145
157
  }
146
158
  return valueArg;
147
159
  };
148
- const isComplete = (journalArg) => [
149
- journalArg.git.state,
150
- ...journalArg.npm.registries.map((registryArg) => registryArg.state),
151
- ].every((stateArg) => stateArg === "verified" || stateArg === "skipped");
160
+ const isComplete = (journalArg) => {
161
+ const commonComplete = [
162
+ journalArg.git.state,
163
+ ...journalArg.npm.registries.map((registryArg) => registryArg.state),
164
+ ].every((stateArg) => stateArg === "verified" || stateArg === "skipped");
165
+ if (!commonComplete ||
166
+ journalArg.schemaVersion === legacyReleaseJournalSchemaVersion) {
167
+ return commonComplete;
168
+ }
169
+ return (journalArg.docker.qualification.state === "verified" &&
170
+ journalArg.docker.promotions.length > 0 &&
171
+ journalArg.docker.promotions.every((promotionArg) => promotionArg.state === "verified") &&
172
+ journalArg.docker.cleanup.state === "verified");
173
+ };
152
174
  const immutableJournalIdentity = (journalArg) => JSON.stringify({
175
+ schemaVersion: journalArg.schemaVersion,
153
176
  release: journalArg.release,
154
177
  artifact: journalArg.artifact,
155
178
  git: {
@@ -163,8 +186,265 @@ const immutableJournalIdentity = (journalArg) => JSON.stringify({
163
186
  alreadyPublished: journalArg.npm.alreadyPublished,
164
187
  registries: journalArg.npm.registries.map((registryArg) => registryArg.registry),
165
188
  },
189
+ docker: journalArg.schemaVersion === releaseJournalSchemaVersion
190
+ ? {
191
+ engine: journalArg.docker.engine,
192
+ protocolVersion: journalArg.docker.protocolVersion,
193
+ request: journalArg.docker.request,
194
+ }
195
+ : undefined,
166
196
  });
167
- export const assertReleaseJournal = (valueArg) => {
197
+ const assertReleaseJournalV1 = (valueArg) => {
198
+ if (!isPlainObject(valueArg)) {
199
+ throw new Error("Release journal root must be a JSON object.");
200
+ }
201
+ assertExactKeys(valueArg, [
202
+ "kind",
203
+ "schemaVersion",
204
+ "revision",
205
+ "release",
206
+ "artifact",
207
+ "git",
208
+ "npm",
209
+ "createdAt",
210
+ "updatedAt",
211
+ "completedAt",
212
+ ], "Release journal");
213
+ if (valueArg.kind !== "gitzone-release-journal" ||
214
+ valueArg.schemaVersion !== legacyReleaseJournalSchemaVersion ||
215
+ !Number.isSafeInteger(valueArg.revision) ||
216
+ valueArg.revision < 1) {
217
+ throw new Error("Release journal header is invalid or unsupported.");
218
+ }
219
+ if (!isPlainObject(valueArg.release)) {
220
+ throw new Error("Release journal release identity is missing.");
221
+ }
222
+ assertExactKeys(valueArg.release, ["version", "tag", "mainOid", "tagOid"], "Release journal release");
223
+ if (typeof valueArg.release.version !== "string" ||
224
+ normalizeReleaseVersion(valueArg.release.version) !==
225
+ valueArg.release.version ||
226
+ valueArg.release.tag !== `v${valueArg.release.version}` ||
227
+ typeof valueArg.release.mainOid !== "string" ||
228
+ !gitOidRegex.test(valueArg.release.mainOid) ||
229
+ typeof valueArg.release.tagOid !== "string" ||
230
+ !gitOidRegex.test(valueArg.release.tagOid)) {
231
+ throw new Error("Release journal Git identity is invalid.");
232
+ }
233
+ const artifact = assertArtifact(valueArg.artifact);
234
+ if (artifact && artifact.version !== valueArg.release.version) {
235
+ throw new Error("Release journal artifact version does not match the release.");
236
+ }
237
+ if (!isPlainObject(valueArg.git)) {
238
+ throw new Error("Release journal Git target is missing.");
239
+ }
240
+ assertExactKeys(valueArg.git, [
241
+ "state",
242
+ "attempts",
243
+ "attempt",
244
+ "error",
245
+ "remote",
246
+ "destinationHash",
247
+ "expectedRemoteMainOid",
248
+ ], "Release journal Git target");
249
+ assertTargetStatus(valueArg.git, "Release journal Git target");
250
+ if (valueArg.git.state === "skipped") {
251
+ if (valueArg.git.remote !== null ||
252
+ valueArg.git.destinationHash !== null ||
253
+ valueArg.git.expectedRemoteMainOid !== null) {
254
+ throw new Error("Skipped Git journal targets must not retain destination data.");
255
+ }
256
+ }
257
+ else if (typeof valueArg.git.remote !== "string" ||
258
+ normalizeReleaseGitRemoteName(valueArg.git.remote) !==
259
+ valueArg.git.remote ||
260
+ typeof valueArg.git.destinationHash !== "string" ||
261
+ !sha256Regex.test(valueArg.git.destinationHash) ||
262
+ typeof valueArg.git.expectedRemoteMainOid !== "string" ||
263
+ !gitOidRegex.test(valueArg.git.expectedRemoteMainOid)) {
264
+ throw new Error("Active Git journal target destination data is invalid.");
265
+ }
266
+ if (!isPlainObject(valueArg.npm)) {
267
+ throw new Error("Release journal npm target is missing.");
268
+ }
269
+ assertExactKeys(valueArg.npm, ["access", "tag", "alreadyPublished", "registries"], "Release journal npm target");
270
+ if (valueArg.npm.access !== "public" ||
271
+ valueArg.npm.tag !== "latest" ||
272
+ (valueArg.npm.alreadyPublished !== "success" &&
273
+ valueArg.npm.alreadyPublished !== "error") ||
274
+ !Array.isArray(valueArg.npm.registries)) {
275
+ throw new Error("Release journal npm settings are invalid.");
276
+ }
277
+ const registryUrls = [];
278
+ for (const [index, rawRegistry] of valueArg.npm.registries.entries()) {
279
+ if (!isPlainObject(rawRegistry)) {
280
+ throw new Error(`Release journal npm registry ${index} must be an object.`);
281
+ }
282
+ assertExactKeys(rawRegistry, ["state", "attempts", "attempt", "error", "registry"], `Release journal npm registry ${index}`);
283
+ assertTargetStatus(rawRegistry, `Release journal npm registry ${index}`);
284
+ if (typeof rawRegistry.registry !== "string" ||
285
+ !isCanonicalRegistryUrl(rawRegistry.registry) ||
286
+ rawRegistry.state === "skipped") {
287
+ throw new Error(`Release journal npm registry ${index} URL is invalid.`);
288
+ }
289
+ registryUrls.push(rawRegistry.registry);
290
+ }
291
+ if (new Set(registryUrls).size !== registryUrls.length) {
292
+ throw new Error("Release journal npm registries must be unique.");
293
+ }
294
+ if (valueArg.npm.registries.length > 0 !== Boolean(artifact)) {
295
+ throw new Error("Release journal npm targets and artifact must exist together.");
296
+ }
297
+ const createdAt = assertIsoTimestamp(valueArg.createdAt, "Release journal createdAt");
298
+ const updatedAt = assertIsoTimestamp(valueArg.updatedAt, "Release journal updatedAt");
299
+ if (updatedAt < createdAt) {
300
+ throw new Error("Release journal updatedAt predates createdAt.");
301
+ }
302
+ if (valueArg.completedAt !== null) {
303
+ const completedAt = assertIsoTimestamp(valueArg.completedAt, "Release journal completedAt");
304
+ if (completedAt < createdAt ||
305
+ !isComplete(valueArg)) {
306
+ throw new Error("Release journal completion state is inconsistent.");
307
+ }
308
+ if (completedAt > updatedAt) {
309
+ throw new Error("Release journal completedAt exceeds updatedAt.");
310
+ }
311
+ }
312
+ else if (isComplete(valueArg)) {
313
+ throw new Error("Complete release journal must record completedAt.");
314
+ }
315
+ return valueArg;
316
+ };
317
+ const assertDockerAttemptHistory = (statusArg, contextArg) => {
318
+ if (statusArg.state === "pending" && statusArg.attempts !== 0) {
319
+ throw new Error(`${contextArg} pending state cannot retain prior attempts.`);
320
+ }
321
+ if (statusArg.state !== "pending" && statusArg.attempts < 1) {
322
+ throw new Error(`${contextArg} state requires publication attempt history.`);
323
+ }
324
+ if ((statusArg.state === "conflict") !==
325
+ (statusArg.error === "destination-conflict")) {
326
+ throw new Error(`${contextArg} destination-conflict must be terminal conflict state.`);
327
+ }
328
+ };
329
+ export const getReleaseDockerPromotionContext = (journalArg, promotionIdArg) => {
330
+ const result = journalArg.docker.qualification.result;
331
+ if (!result) {
332
+ throw new Error("Docker qualification evidence is not available.");
333
+ }
334
+ const context = getReleasePromotionContexts(result).find((entryArg) => entryArg.promotionId === promotionIdArg);
335
+ if (!context) {
336
+ throw new Error("Docker promotion is not part of the qualification result.");
337
+ }
338
+ return context;
339
+ };
340
+ const assertDockerJournal = (valueArg, releaseArg) => {
341
+ if (!isPlainObject(valueArg)) {
342
+ throw new Error("Release journal Docker target is missing.");
343
+ }
344
+ assertExactKeys(valueArg, [
345
+ "engine",
346
+ "protocolVersion",
347
+ "request",
348
+ "qualification",
349
+ "promotions",
350
+ "cleanup",
351
+ ], "Release journal Docker target");
352
+ if (valueArg.engine !== "tsdocker" ||
353
+ valueArg.protocolVersion !== 1 ||
354
+ !isPlainObject(valueArg.qualification) ||
355
+ !Array.isArray(valueArg.promotions) ||
356
+ !isPlainObject(valueArg.cleanup)) {
357
+ throw new Error("Release journal Docker target is invalid.");
358
+ }
359
+ const request = assertReleaseQualificationRequest(valueArg.request);
360
+ if (request.release.version !== releaseArg.version ||
361
+ request.release.revision !== releaseArg.mainOid) {
362
+ throw new Error("Release journal Docker request does not match the release.");
363
+ }
364
+ assertExactKeys(valueArg.qualification, ["state", "attempts", "attempt", "error", "result"], "Release journal Docker qualification");
365
+ assertTargetStatus(valueArg.qualification, "Release journal Docker qualification");
366
+ assertDockerAttemptHistory(valueArg.qualification, "Release journal Docker qualification");
367
+ if (valueArg.qualification.state === "skipped") {
368
+ throw new Error("Schema 2 Docker qualification cannot be skipped.");
369
+ }
370
+ const qualificationResult = valueArg.qualification.result === null
371
+ ? null
372
+ : assertReleaseQualificationResult(valueArg.qualification.result, request);
373
+ if ((valueArg.qualification.state === "verified") !==
374
+ Boolean(qualificationResult)) {
375
+ throw new Error("Release journal Docker qualification result is inconsistent.");
376
+ }
377
+ const promotionContexts = qualificationResult
378
+ ? getReleasePromotionContexts(qualificationResult)
379
+ : [];
380
+ if (valueArg.promotions.length !== promotionContexts.length) {
381
+ throw new Error("Release journal Docker promotions do not match qualification evidence.");
382
+ }
383
+ for (const [index, rawPromotion] of valueArg.promotions.entries()) {
384
+ if (!isPlainObject(rawPromotion)) {
385
+ throw new Error(`Release journal Docker promotion ${index} is invalid.`);
386
+ }
387
+ assertExactKeys(rawPromotion, ["state", "attempts", "attempt", "error", "promotionId", "evidence"], `Release journal Docker promotion ${index}`);
388
+ assertTargetStatus(rawPromotion, `Release journal Docker promotion ${index}`);
389
+ assertDockerAttemptHistory(rawPromotion, `Release journal Docker promotion ${index}`);
390
+ if (rawPromotion.state === "skipped" ||
391
+ rawPromotion.promotionId !== promotionContexts[index].promotionId ||
392
+ !Array.isArray(rawPromotion.evidence) ||
393
+ rawPromotion.evidence.length > 2) {
394
+ throw new Error(`Release journal Docker promotion ${index} is invalid.`);
395
+ }
396
+ const evidence = rawPromotion.evidence.map((entryArg) => assertReleasePromotionEvidence(entryArg, request, promotionContexts[index]));
397
+ const classifications = evidence.map(classifyReleasePromotionEvidence);
398
+ const verifiedEvidence = rawPromotion.state === "verified" &&
399
+ classifications.length === 1 &&
400
+ classifications[0] === "exact";
401
+ const initialConflictEvidence = rawPromotion.state === "conflict" &&
402
+ classifications.length === 1 &&
403
+ classifications[0] === "conflict";
404
+ const verifiedDriftEvidence = rawPromotion.state === "conflict" &&
405
+ classifications.length === 2 &&
406
+ classifications[0] === "exact" &&
407
+ (classifications[1] === "pending" || classifications[1] === "conflict");
408
+ const noEvidenceExpected = (rawPromotion.state === "pending" ||
409
+ rawPromotion.state === "publishing" ||
410
+ rawPromotion.state === "failed") &&
411
+ classifications.length === 0;
412
+ if ((!verifiedEvidence &&
413
+ !initialConflictEvidence &&
414
+ !verifiedDriftEvidence &&
415
+ !noEvidenceExpected) ||
416
+ (rawPromotion.state === "conflict" &&
417
+ rawPromotion.error !== "destination-conflict")) {
418
+ throw new Error(`Release journal Docker promotion ${index} evidence is inconsistent.`);
419
+ }
420
+ }
421
+ assertExactKeys(valueArg.cleanup, ["state", "attempts", "attempt", "error", "result"], "Release journal Docker cleanup");
422
+ assertTargetStatus(valueArg.cleanup, "Release journal Docker cleanup");
423
+ assertDockerAttemptHistory(valueArg.cleanup, "Release journal Docker cleanup");
424
+ if (valueArg.cleanup.state === "skipped" ||
425
+ valueArg.cleanup.state === "conflict") {
426
+ throw new Error("Release journal Docker cleanup state is invalid.");
427
+ }
428
+ const cleanupResult = valueArg.cleanup.result === null
429
+ ? null
430
+ : assertReleaseCleanupResult(valueArg.cleanup.result, request);
431
+ if ((valueArg.cleanup.state === "verified") !== Boolean(cleanupResult)) {
432
+ throw new Error("Release journal Docker cleanup result is inconsistent.");
433
+ }
434
+ const promotionsVerified = valueArg.promotions.length > 0 &&
435
+ valueArg.promotions.every((promotionArg) => isPlainObject(promotionArg) && promotionArg.state === "verified");
436
+ const qualificationConflictCleanup = valueArg.qualification.state === "conflict" &&
437
+ valueArg.qualification.error === "destination-conflict" &&
438
+ valueArg.promotions.length === 0;
439
+ if ((valueArg.cleanup.state === "publishing" ||
440
+ valueArg.cleanup.state === "verified") &&
441
+ !promotionsVerified &&
442
+ !qualificationConflictCleanup) {
443
+ throw new Error("Release journal Docker cleanup requires verified promotions or a terminal qualification conflict.");
444
+ }
445
+ return valueArg;
446
+ };
447
+ const assertReleaseJournalV2 = (valueArg) => {
168
448
  if (!isPlainObject(valueArg)) {
169
449
  throw new Error("Release journal root must be a JSON object.");
170
450
  }
@@ -176,6 +456,7 @@ export const assertReleaseJournal = (valueArg) => {
176
456
  "artifact",
177
457
  "git",
178
458
  "npm",
459
+ "docker",
179
460
  "createdAt",
180
461
  "updatedAt",
181
462
  "completedAt",
@@ -191,7 +472,8 @@ export const assertReleaseJournal = (valueArg) => {
191
472
  }
192
473
  assertExactKeys(valueArg.release, ["version", "tag", "mainOid", "tagOid"], "Release journal release");
193
474
  if (typeof valueArg.release.version !== "string" ||
194
- normalizeReleaseVersion(valueArg.release.version) !== valueArg.release.version ||
475
+ normalizeReleaseVersion(valueArg.release.version) !==
476
+ valueArg.release.version ||
195
477
  valueArg.release.tag !== `v${valueArg.release.version}` ||
196
478
  typeof valueArg.release.mainOid !== "string" ||
197
479
  !gitOidRegex.test(valueArg.release.mainOid) ||
@@ -224,7 +506,8 @@ export const assertReleaseJournal = (valueArg) => {
224
506
  }
225
507
  }
226
508
  else if (typeof valueArg.git.remote !== "string" ||
227
- normalizeReleaseGitRemoteName(valueArg.git.remote) !== valueArg.git.remote ||
509
+ normalizeReleaseGitRemoteName(valueArg.git.remote) !==
510
+ valueArg.git.remote ||
228
511
  typeof valueArg.git.destinationHash !== "string" ||
229
512
  !sha256Regex.test(valueArg.git.destinationHash) ||
230
513
  typeof valueArg.git.expectedRemoteMainOid !== "string" ||
@@ -259,9 +542,20 @@ export const assertReleaseJournal = (valueArg) => {
259
542
  if (new Set(registryUrls).size !== registryUrls.length) {
260
543
  throw new Error("Release journal npm registries must be unique.");
261
544
  }
262
- if ((valueArg.npm.registries.length > 0) !== Boolean(artifact)) {
545
+ if (valueArg.npm.registries.length > 0 !== Boolean(artifact)) {
263
546
  throw new Error("Release journal npm targets and artifact must exist together.");
264
547
  }
548
+ const docker = assertDockerJournal(valueArg.docker, valueArg.release);
549
+ const activePublishers = [
550
+ valueArg.git,
551
+ ...valueArg.npm.registries,
552
+ docker.qualification,
553
+ ...docker.promotions,
554
+ docker.cleanup,
555
+ ].filter((statusArg) => statusArg.state === "publishing");
556
+ if (activePublishers.length > 1) {
557
+ throw new Error("Schema 2 release journals permit at most one active publication owner.");
558
+ }
265
559
  const createdAt = assertIsoTimestamp(valueArg.createdAt, "Release journal createdAt");
266
560
  const updatedAt = assertIsoTimestamp(valueArg.updatedAt, "Release journal updatedAt");
267
561
  if (updatedAt < createdAt) {
@@ -269,7 +563,8 @@ export const assertReleaseJournal = (valueArg) => {
269
563
  }
270
564
  if (valueArg.completedAt !== null) {
271
565
  const completedAt = assertIsoTimestamp(valueArg.completedAt, "Release journal completedAt");
272
- if (completedAt < createdAt || !isComplete(valueArg)) {
566
+ if (completedAt < createdAt ||
567
+ !isComplete(valueArg)) {
273
568
  throw new Error("Release journal completion state is inconsistent.");
274
569
  }
275
570
  if (completedAt > updatedAt) {
@@ -281,7 +576,49 @@ export const assertReleaseJournal = (valueArg) => {
281
576
  }
282
577
  return valueArg;
283
578
  };
284
- export const serializeReleaseJournal = (journalArg) => `${JSON.stringify(assertReleaseJournal(journalArg), null, 2)}\n`;
579
+ export const assertReleaseJournal = (valueArg) => {
580
+ if (!isPlainObject(valueArg)) {
581
+ throw new Error("Release journal root must be a JSON object.");
582
+ }
583
+ if (valueArg.schemaVersion === legacyReleaseJournalSchemaVersion) {
584
+ return assertReleaseJournalV1(valueArg);
585
+ }
586
+ if (valueArg.schemaVersion === releaseJournalSchemaVersion) {
587
+ return assertReleaseJournalV2(valueArg);
588
+ }
589
+ throw new Error("Release journal header is invalid or unsupported.");
590
+ };
591
+ const canonicalizeProtocolValue = (valueArg) => JSON.parse(canonicalReleaseJson(valueArg));
592
+ const prepareReleaseJournalSerialization = (journalArg) => {
593
+ const journal = assertReleaseJournal(journalArg);
594
+ if (journal.schemaVersion === legacyReleaseJournalSchemaVersion) {
595
+ return journal;
596
+ }
597
+ return {
598
+ ...journal,
599
+ docker: {
600
+ ...journal.docker,
601
+ request: canonicalizeProtocolValue(journal.docker.request),
602
+ qualification: {
603
+ ...journal.docker.qualification,
604
+ result: journal.docker.qualification.result
605
+ ? canonicalizeProtocolValue(journal.docker.qualification.result)
606
+ : null,
607
+ },
608
+ promotions: journal.docker.promotions.map((promotionArg) => ({
609
+ ...promotionArg,
610
+ evidence: promotionArg.evidence.map(canonicalizeProtocolValue),
611
+ })),
612
+ cleanup: {
613
+ ...journal.docker.cleanup,
614
+ result: journal.docker.cleanup.result
615
+ ? canonicalizeProtocolValue(journal.docker.cleanup.result)
616
+ : null,
617
+ },
618
+ },
619
+ };
620
+ };
621
+ export const serializeReleaseJournal = (journalArg) => `${JSON.stringify(prepareReleaseJournalSerialization(journalArg), null, 2)}\n`;
285
622
  export const parseReleaseJournal = (contentArg) => {
286
623
  let parsed;
287
624
  try {
@@ -296,6 +633,101 @@ export const parseReleaseJournal = (contentArg) => {
296
633
  }
297
634
  return journal;
298
635
  };
636
+ const assertDockerStatusAppendOnly = (currentArg, nextArg, contextArg, optionsArg = {}) => {
637
+ if (currentArg.state === nextArg.state) {
638
+ if (canonicalReleaseJson(currentArg) !== canonicalReleaseJson(nextArg)) {
639
+ throw new Error(`${contextArg} cannot change without a state transition.`);
640
+ }
641
+ return;
642
+ }
643
+ if ((currentArg.state === "pending" || currentArg.state === "failed") &&
644
+ nextArg.state === "publishing" &&
645
+ nextArg.attempts === currentArg.attempts + 1) {
646
+ return;
647
+ }
648
+ if (currentArg.state === "publishing" &&
649
+ (nextArg.state === "verified" ||
650
+ nextArg.state === "failed" ||
651
+ nextArg.state === "conflict") &&
652
+ nextArg.attempts === currentArg.attempts) {
653
+ return;
654
+ }
655
+ if (optionsArg.allowVerifiedConflict &&
656
+ currentArg.state === "verified" &&
657
+ nextArg.state === "conflict" &&
658
+ nextArg.attempts === currentArg.attempts) {
659
+ return;
660
+ }
661
+ throw new Error(`${contextArg} state transition is not append-only.`);
662
+ };
663
+ const assertSchema2AppendOnlyTransition = (currentArg, nextArg) => {
664
+ const currentDocker = currentArg.docker;
665
+ const nextDocker = nextArg.docker;
666
+ if (currentDocker.qualification.state === "conflict" &&
667
+ canonicalReleaseJson(currentDocker.qualification) !==
668
+ canonicalReleaseJson(nextDocker.qualification)) {
669
+ throw new Error("Docker qualification conflict is terminal.");
670
+ }
671
+ assertDockerStatusAppendOnly(currentDocker.qualification, nextDocker.qualification, "Docker qualification");
672
+ if (currentDocker.qualification.result &&
673
+ canonicalReleaseJson(currentDocker.qualification.result) !==
674
+ canonicalReleaseJson(nextDocker.qualification.result)) {
675
+ throw new Error("Docker qualification evidence is append-only.");
676
+ }
677
+ if (currentDocker.qualification.result &&
678
+ nextDocker.qualification.state !== "verified") {
679
+ throw new Error("Verified Docker qualification cannot regress.");
680
+ }
681
+ if (!currentDocker.qualification.result &&
682
+ nextDocker.qualification.result &&
683
+ (currentDocker.qualification.state !== "publishing" ||
684
+ nextDocker.qualification.state !== "verified")) {
685
+ throw new Error("Docker qualification evidence requires its owned publishing transition.");
686
+ }
687
+ if (currentDocker.promotions.length === 0 &&
688
+ nextDocker.promotions.length > 0) {
689
+ if (currentDocker.qualification.state !== "publishing" ||
690
+ nextDocker.qualification.state !== "verified" ||
691
+ nextDocker.promotions.some((promotionArg) => promotionArg.state !== "pending" ||
692
+ promotionArg.attempts !== 0 ||
693
+ promotionArg.attempt !== null ||
694
+ promotionArg.error !== null ||
695
+ promotionArg.evidence.length !== 0)) {
696
+ throw new Error("Docker promotions must begin pending with no attempt or evidence.");
697
+ }
698
+ }
699
+ else if (currentDocker.promotions.length > 0) {
700
+ if (currentDocker.promotions.length !== nextDocker.promotions.length ||
701
+ currentDocker.promotions.some((promotionArg, indexArg) => promotionArg.promotionId !==
702
+ nextDocker.promotions[indexArg]?.promotionId)) {
703
+ throw new Error("Docker promotion identity is append-only.");
704
+ }
705
+ for (const [index, currentPromotion,] of currentDocker.promotions.entries()) {
706
+ const nextPromotion = nextDocker.promotions[index];
707
+ if (currentPromotion.state === "conflict" &&
708
+ canonicalReleaseJson(currentPromotion) !==
709
+ canonicalReleaseJson(nextPromotion)) {
710
+ throw new Error(`Docker promotion ${currentPromotion.promotionId} conflict is terminal.`);
711
+ }
712
+ assertDockerStatusAppendOnly(currentPromotion, nextPromotion, `Docker promotion ${currentPromotion.promotionId}`, { allowVerifiedConflict: true });
713
+ if (nextPromotion.evidence.length < currentPromotion.evidence.length ||
714
+ currentPromotion.evidence.some((evidenceArg, evidenceIndexArg) => canonicalReleaseJson(evidenceArg) !==
715
+ canonicalReleaseJson(nextPromotion.evidence[evidenceIndexArg]))) {
716
+ throw new Error(`Docker promotion ${currentPromotion.promotionId} evidence is append-only.`);
717
+ }
718
+ }
719
+ }
720
+ assertDockerStatusAppendOnly(currentDocker.cleanup, nextDocker.cleanup, "Docker cleanup");
721
+ if (currentDocker.cleanup.result &&
722
+ canonicalReleaseJson(currentDocker.cleanup.result) !==
723
+ canonicalReleaseJson(nextDocker.cleanup.result)) {
724
+ throw new Error("Docker cleanup evidence is append-only.");
725
+ }
726
+ if (currentDocker.cleanup.state === "verified" &&
727
+ canonicalReleaseJson(currentDocker) !== canonicalReleaseJson(nextDocker)) {
728
+ throw new Error("Completed Docker publication state is terminal.");
729
+ }
730
+ };
299
731
  export const createReleaseAttempt = () => ({
300
732
  id: plugins.crypto.randomBytes(16).toString("hex"),
301
733
  pid: process.pid,
@@ -331,7 +763,7 @@ export class ReleaseJournalStore {
331
763
  if (!plugins.path.isAbsolute(gitCommonDirectoryArg)) {
332
764
  throw new Error("Release journal storage requires an absolute Git common directory.");
333
765
  }
334
- this.rootPath = plugins.path.join(plugins.path.resolve(gitCommonDirectoryArg), "gitzone", "releases", `v${releaseJournalSchemaVersion}`);
766
+ this.rootPath = plugins.path.join(plugins.path.resolve(gitCommonDirectoryArg), "gitzone", "releases", `v${releaseJournalStorageVersion}`);
335
767
  }
336
768
  getReleaseDirectory(versionArg) {
337
769
  const version = normalizeReleaseVersion(versionArg);
@@ -350,7 +782,14 @@ export class ReleaseJournalStore {
350
782
  const filePath = plugins.path.join(this.getReleaseDirectory(version), releaseJournalFileName);
351
783
  let content;
352
784
  try {
353
- content = await plugins.fs.readFile(filePath, "utf8");
785
+ const bytes = await plugins.fs.readFile(filePath);
786
+ if (bytes.byteLength >= 3 &&
787
+ bytes[0] === 0xef &&
788
+ bytes[1] === 0xbb &&
789
+ bytes[2] === 0xbf) {
790
+ throw new Error("Release journal must not contain a UTF-8 byte-order mark.");
791
+ }
792
+ content = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
354
793
  }
355
794
  catch (error) {
356
795
  if (error.code === "ENOENT") {
@@ -369,7 +808,9 @@ export class ReleaseJournalStore {
369
808
  async list() {
370
809
  let entries;
371
810
  try {
372
- entries = await plugins.fs.readdir(this.rootPath, { withFileTypes: true });
811
+ entries = await plugins.fs.readdir(this.rootPath, {
812
+ withFileTypes: true,
813
+ });
373
814
  }
374
815
  catch (error) {
375
816
  if (error.code === "ENOENT") {
@@ -393,9 +834,33 @@ export class ReleaseJournalStore {
393
834
  if (journal.revision !== 1) {
394
835
  throw new Error("New release journals must start at revision 1.");
395
836
  }
837
+ if (journal.schemaVersion === releaseJournalSchemaVersion) {
838
+ const commonTargets = [journal.git, ...journal.npm.registries];
839
+ const commonTargetsUnclaimed = commonTargets.every((targetArg) => (targetArg.state === "pending" || targetArg.state === "skipped") &&
840
+ targetArg.attempts === 0 &&
841
+ targetArg.attempt === null &&
842
+ targetArg.error === null);
843
+ if (!commonTargetsUnclaimed ||
844
+ journal.completedAt !== null ||
845
+ journal.docker.qualification.state !== "pending" ||
846
+ journal.docker.qualification.attempts !== 0 ||
847
+ journal.docker.qualification.attempt !== null ||
848
+ journal.docker.qualification.error !== null ||
849
+ journal.docker.qualification.result !== null ||
850
+ journal.docker.promotions.length !== 0 ||
851
+ journal.docker.cleanup.state !== "pending" ||
852
+ journal.docker.cleanup.attempts !== 0 ||
853
+ journal.docker.cleanup.attempt !== null ||
854
+ journal.docker.cleanup.error !== null ||
855
+ journal.docker.cleanup.result !== null) {
856
+ throw new Error("New schema 2 release journals must start with unclaimed publication targets.");
857
+ }
858
+ }
396
859
  const temporaryDirectory = plugins.path.resolve(temporaryDirectoryArg);
397
860
  if (plugins.path.dirname(temporaryDirectory) !== this.rootPath ||
398
- !plugins.path.basename(temporaryDirectory).startsWith(`.v${journal.release.version}.tmp-`)) {
861
+ !plugins.path
862
+ .basename(temporaryDirectory)
863
+ .startsWith(`.v${journal.release.version}.tmp-`)) {
399
864
  throw new Error("Prepared release directory is outside canonical storage.");
400
865
  }
401
866
  if (journal.artifact) {
@@ -406,10 +871,14 @@ export class ReleaseJournalStore {
406
871
  }
407
872
  const artifactBytes = await plugins.fs.readFile(artifactPath);
408
873
  if (artifactBytes.byteLength !== journal.artifact.size ||
409
- plugins.crypto.createHash("sha1").update(artifactBytes).digest("hex") !==
410
- journal.artifact.sha1 ||
411
- plugins.crypto.createHash("sha256").update(artifactBytes).digest("hex") !==
412
- journal.artifact.sha256 ||
874
+ plugins.crypto
875
+ .createHash("sha1")
876
+ .update(artifactBytes)
877
+ .digest("hex") !== journal.artifact.sha1 ||
878
+ plugins.crypto
879
+ .createHash("sha256")
880
+ .update(artifactBytes)
881
+ .digest("hex") !== journal.artifact.sha256 ||
413
882
  `sha512-${plugins.crypto.createHash("sha512").update(artifactBytes).digest("base64")}` !==
414
883
  journal.artifact.integrity) {
415
884
  throw new Error("Prepared release artifact does not match its journal identity.");
@@ -468,6 +937,10 @@ export class ReleaseJournalStore {
468
937
  if (immutableJournalIdentity(next) !== immutableJournalIdentity(current)) {
469
938
  throw new Error("Release journal immutable identity changed during a transaction.");
470
939
  }
940
+ if (current.schemaVersion === releaseJournalSchemaVersion &&
941
+ next.schemaVersion === releaseJournalSchemaVersion) {
942
+ assertSchema2AppendOnlyTransition(current, next);
943
+ }
471
944
  await this.writeAtomic(version, next);
472
945
  return next;
473
946
  });
@@ -501,6 +974,25 @@ export const createInitialTargetStatus = (enabledArg) => ({
501
974
  attempt: null,
502
975
  error: null,
503
976
  });
977
+ export const createInitialReleaseDockerJournal = (requestArg) => ({
978
+ engine: "tsdocker",
979
+ protocolVersion: 1,
980
+ request: assertReleaseQualificationRequest(requestArg),
981
+ qualification: {
982
+ ...createInitialTargetStatus(true),
983
+ result: null,
984
+ },
985
+ promotions: [],
986
+ cleanup: {
987
+ ...createInitialTargetStatus(true),
988
+ result: null,
989
+ },
990
+ });
991
+ export const createReleaseDockerPromotions = (resultArg) => getReleasePromotionContexts(resultArg).map((contextArg) => ({
992
+ ...createInitialTargetStatus(true),
993
+ promotionId: contextArg.promotionId,
994
+ evidence: [],
995
+ }));
504
996
  export const finalizeJournalCompletion = (journalArg, completedAtArg = new Date().toISOString()) => {
505
997
  const completed = isComplete(journalArg);
506
998
  return {
@@ -508,4 +1000,4 @@ export const finalizeJournalCompletion = (journalArg, completedAtArg = new Date(
508
1000
  completedAt: completed ? journalArg.completedAt || completedAtArg : null,
509
1001
  };
510
1002
  };
511
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5yZWxlYXNlam91cm5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9yZWxlYXNlL2NsYXNzZXMucmVsZWFzZWpvdXJuYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUUvRSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFVLENBQUM7QUFDdEQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsYUFBc0IsQ0FBQztBQUM5RCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxjQUF1QixDQUFDO0FBMkU5RCxNQUFNLG1CQUFtQixHQUFHLGtEQUFrRCxDQUFDO0FBQy9FLE1BQU0sV0FBVyxHQUFHLGlDQUFpQyxDQUFDO0FBQ3RELE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBQ3hDLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDO0FBQ25DLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDO0FBQ3JDLE1BQU0sb0JBQW9CLEdBQUcsK0JBQStCLENBQUM7QUFDN0QsTUFBTSxnQkFBZ0IsR0FBRyx3RUFBd0UsQ0FBQztBQUNsRyxNQUFNLGtCQUFrQixHQUFHLCtCQUErQixDQUFDO0FBQzNELE1BQU0sWUFBWSxHQUEwQjtJQUMxQyxTQUFTO0lBQ1QsWUFBWTtJQUNaLFVBQVU7SUFDVixRQUFRO0lBQ1IsVUFBVTtJQUNWLFNBQVM7Q0FDVixDQUFDO0FBQ0YsTUFBTSxVQUFVLEdBQXdCO0lBQ3RDLGdCQUFnQjtJQUNoQiwyQkFBMkI7SUFDM0IsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixzQkFBc0I7SUFDdEIsMkJBQTJCO0NBQzVCLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQWlCLEVBQXVDLEVBQUUsQ0FDL0UsT0FBTyxRQUFRLEtB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
1003
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5yZWxlYXNlam91cm5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9yZWxlYXNlL2NsYXNzZXMucmVsZWFzZWpvdXJuYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLDhCQUE4QixFQUM5QixpQ0FBaUMsRUFDakMsZ0NBQWdDLEVBQ2hDLG9CQUFvQixFQUNwQixnQ0FBZ0MsRUFDaEMsMkJBQTJCLEdBTTVCLE1BQU0sK0JBQStCLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBVSxDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLENBQVUsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFVLENBQUM7QUFDdEQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsYUFBc0IsQ0FBQztBQUM5RCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxjQUF1QixDQUFDO0FBc0g5RCxNQUFNLG1CQUFtQixHQUFHLGtEQUFrRCxDQUFDO0FBQy9FLE1BQU0sV0FBVyxHQUFHLGlDQUFpQyxDQUFDO0FBQ3RELE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBQ3hDLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDO0FBQ25DLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDO0FBQ3JDLE1BQU0sb0JBQW9CLEdBQUcsK0JBQStCLENBQUM7QUFDN0QsTUFBTSxnQkFBZ0IsR0FDcEIsd0VBQXdFLENBQUM7QUFDM0UsTUFBTSxrQkFBa0IsR0FBRywrQkFBK0IsQ0FBQztBQUMzRCxNQUFNLFlBQVksR0FBMEI7SUFDMUMsU0FBUztJQUNULFlBQVk7SUFDWixVQUFV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