@mannyc1/ts-release 0.2.2 → 0.3.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/ARCHITECTURE.md +60 -0
- package/CHANGELOG.md +82 -0
- package/README.md +129 -6
- package/SPEC.md +51 -0
- package/apps/release-ts/README.md +7 -0
- package/apps/ts-release-agents/package.json +1 -1
- package/apps/ts-release-agents/src/check.ts +7 -2
- package/apps/ts-release-agents/test/contract.test.ts +2 -2
- package/dist/bin/ts-release.js +154 -47
- package/dist/drivers/archive.d.ts +2 -1
- package/dist/drivers/archive.d.ts.map +1 -1
- package/dist/drivers/archive.js +12 -8
- package/dist/drivers/archive.js.map +1 -1
- package/dist/drivers/process.d.ts.map +1 -1
- package/dist/drivers/process.js +4 -4
- package/dist/drivers/process.js.map +1 -1
- package/dist/drivers/python-wheel.d.ts +21 -0
- package/dist/drivers/python-wheel.d.ts.map +1 -0
- package/dist/drivers/python-wheel.js +109 -0
- package/dist/drivers/python-wheel.js.map +1 -0
- package/dist/drivers/workspace.d.ts +3 -0
- package/dist/drivers/workspace.d.ts.map +1 -1
- package/dist/drivers/workspace.js +5 -1
- package/dist/drivers/workspace.js.map +1 -1
- package/dist/operation-journal/authority.d.ts +3 -0
- package/dist/operation-journal/authority.d.ts.map +1 -0
- package/dist/operation-journal/authority.js +147 -0
- package/dist/operation-journal/authority.js.map +1 -0
- package/dist/operation-journal/aws/deadline.d.ts +12 -0
- package/dist/operation-journal/aws/deadline.d.ts.map +1 -0
- package/dist/operation-journal/aws/deadline.js +38 -0
- package/dist/operation-journal/aws/deadline.js.map +1 -0
- package/dist/operation-journal/aws/oidc.d.ts +27 -0
- package/dist/operation-journal/aws/oidc.d.ts.map +1 -0
- package/dist/operation-journal/aws/oidc.js +361 -0
- package/dist/operation-journal/aws/oidc.js.map +1 -0
- package/dist/operation-journal/aws/policy.d.ts +42 -0
- package/dist/operation-journal/aws/policy.d.ts.map +1 -0
- package/dist/operation-journal/aws/policy.js +404 -0
- package/dist/operation-journal/aws/policy.js.map +1 -0
- package/dist/operation-journal/aws/s3-boundary.d.ts +17 -0
- package/dist/operation-journal/aws/s3-boundary.d.ts.map +1 -0
- package/dist/operation-journal/aws/s3-boundary.js +417 -0
- package/dist/operation-journal/aws/s3-boundary.js.map +1 -0
- package/dist/operation-journal/aws.d.ts +11 -0
- package/dist/operation-journal/aws.d.ts.map +1 -0
- package/dist/operation-journal/aws.js +50 -0
- package/dist/operation-journal/aws.js.map +1 -0
- package/dist/operation-journal/canonical.d.ts +52 -0
- package/dist/operation-journal/canonical.d.ts.map +1 -0
- package/dist/operation-journal/canonical.js +282 -0
- package/dist/operation-journal/canonical.js.map +1 -0
- package/dist/operation-journal/model.d.ts +251 -0
- package/dist/operation-journal/model.d.ts.map +1 -0
- package/dist/operation-journal/model.js +56 -0
- package/dist/operation-journal/model.js.map +1 -0
- package/dist/operation-journal/reducer.d.ts +28 -0
- package/dist/operation-journal/reducer.d.ts.map +1 -0
- package/dist/operation-journal/reducer.js +73 -0
- package/dist/operation-journal/reducer.js.map +1 -0
- package/dist/operation-journal/s3.d.ts +7 -0
- package/dist/operation-journal/s3.d.ts.map +1 -0
- package/dist/operation-journal/s3.js +667 -0
- package/dist/operation-journal/s3.js.map +1 -0
- package/dist/operation-journal.d.ts +14 -0
- package/dist/operation-journal.d.ts.map +1 -0
- package/dist/operation-journal.js +12 -0
- package/dist/operation-journal.js.map +1 -0
- package/dist/platform/credentials.d.ts.map +1 -1
- package/dist/platform/credentials.js +65 -3
- package/dist/platform/credentials.js.map +1 -1
- package/dist/publication/github.d.ts.map +1 -1
- package/dist/publication/github.js +66 -15
- package/dist/publication/github.js.map +1 -1
- package/dist/release/capabilities.d.ts.map +1 -1
- package/dist/release/capabilities.js +2 -2
- package/dist/release/capabilities.js.map +1 -1
- package/dist/release/prepare.d.ts.map +1 -1
- package/dist/release/prepare.js +4 -5
- package/dist/release/prepare.js.map +1 -1
- package/dist/release/prepared-store.d.ts.map +1 -1
- package/dist/release/prepared-store.js +11 -9
- package/dist/release/prepared-store.js.map +1 -1
- package/package.json +19 -4
- package/src/drivers/archive.ts +17 -8
- package/src/drivers/process.ts +3 -4
- package/src/drivers/python-wheel.ts +145 -0
- package/src/drivers/workspace.ts +7 -1
- package/src/operation-journal/authority.ts +162 -0
- package/src/operation-journal/aws/deadline.ts +41 -0
- package/src/operation-journal/aws/oidc.ts +439 -0
- package/src/operation-journal/aws/policy.ts +491 -0
- package/src/operation-journal/aws/s3-boundary.ts +562 -0
- package/src/operation-journal/aws.ts +60 -0
- package/src/operation-journal/canonical.ts +373 -0
- package/src/operation-journal/model.ts +301 -0
- package/src/operation-journal/reducer.ts +112 -0
- package/src/operation-journal/s3.ts +884 -0
- package/src/operation-journal.ts +51 -0
- package/src/platform/credentials.ts +71 -3
- package/src/publication/github.ts +83 -15
- package/src/release/capabilities.ts +3 -2
- package/src/release/prepare.ts +3 -5
- package/src/release/prepared-store.ts +8 -7
- package/templates/README.md +2 -2
- package/templates/github-actions/release.yml +24 -7
- package/templates/github-actions/reviewed-release.yml +49 -14
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type JournalRecordTag, type JournalStateTag } from "./model.js";
|
|
2
|
+
import type { CanonicalJournalEvent, CanonicalJournalHead, CanonicalJournalRecord } from "./canonical.js";
|
|
3
|
+
export declare const admitJournalTransition: (state: JournalStateTag, next: JournalRecordTag) => JournalRecordTag;
|
|
4
|
+
export declare const reduceJournalEvents: (events: ReadonlyArray<CanonicalJournalEvent>) => JournalStateTag;
|
|
5
|
+
export declare const makeJournalEvent: (input: {
|
|
6
|
+
readonly releasePoint: string;
|
|
7
|
+
readonly operationKey: string;
|
|
8
|
+
readonly sequence: number;
|
|
9
|
+
readonly transactionId: string;
|
|
10
|
+
readonly previous: CanonicalJournalEvent | null;
|
|
11
|
+
readonly previousHead: {
|
|
12
|
+
readonly versionId: string;
|
|
13
|
+
readonly etag: string;
|
|
14
|
+
readonly eventDigest: string;
|
|
15
|
+
} | null;
|
|
16
|
+
readonly workflow: CanonicalJournalEvent["workflow"];
|
|
17
|
+
readonly record: CanonicalJournalRecord;
|
|
18
|
+
}) => CanonicalJournalEvent;
|
|
19
|
+
export declare const makeJournalHead: (input: {
|
|
20
|
+
readonly event: CanonicalJournalEvent;
|
|
21
|
+
readonly eventKey: string;
|
|
22
|
+
readonly eventVersionId: string;
|
|
23
|
+
readonly eventChecksumSha256: string;
|
|
24
|
+
readonly eventDigest: string;
|
|
25
|
+
readonly previousHeadVersionId: string | null;
|
|
26
|
+
readonly previousHeadEtag: string | null;
|
|
27
|
+
}) => CanonicalJournalHead;
|
|
28
|
+
//# sourceMappingURL=reducer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/operation-journal/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,gBAAgB,CAAA;AAWvB,eAAO,MAAM,sBAAsB,GACjC,OAAO,eAAe,EACtB,MAAM,gBAAgB,KACrB,gBAOF,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,aAAa,CAAC,qBAAqB,CAAC,KAC3C,eAwBF,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC/C,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAC7B,GAAG,IAAI,CAAA;IACR,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAA;IACpD,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAA;CACxC,KAAG,qBAeF,CAAA;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO;IACrC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CACzC,KAAG,oBAYF,CAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { JournalIntegrityError, JournalTransitionError } from "./model.js";
|
|
2
|
+
const admittedTransitions = {
|
|
3
|
+
Empty: new Set(["IntentRecorded"]),
|
|
4
|
+
IntentRecorded: new Set(["ReceiptRecorded", "OutcomeUnknown"]),
|
|
5
|
+
ReceiptRecorded: new Set(["ObservationRecorded", "TerminalRecorded"]),
|
|
6
|
+
ObservationRecorded: new Set(["ObservationRecorded", "TerminalRecorded"]),
|
|
7
|
+
TerminalRecorded: new Set(),
|
|
8
|
+
OutcomeUnknown: new Set()
|
|
9
|
+
};
|
|
10
|
+
export const admitJournalTransition = (state, next) => {
|
|
11
|
+
if (!admittedTransitions[state].has(next)) {
|
|
12
|
+
throw JournalTransitionError.make({
|
|
13
|
+
reason: `Journal transition ${state} -> ${next} is not admitted.`
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return next;
|
|
17
|
+
};
|
|
18
|
+
export const reduceJournalEvents = (events) => {
|
|
19
|
+
let state = "Empty";
|
|
20
|
+
let expectedSequence = 1;
|
|
21
|
+
const transactions = new Set();
|
|
22
|
+
for (const event of events) {
|
|
23
|
+
if (event.sequence !== expectedSequence) {
|
|
24
|
+
throw JournalIntegrityError.make({ reason: "Reachable journal sequences are not contiguous from one." });
|
|
25
|
+
}
|
|
26
|
+
if (transactions.has(event.transactionId)) {
|
|
27
|
+
throw JournalIntegrityError.make({ reason: "Reachable journal chain repeats a transaction ID." });
|
|
28
|
+
}
|
|
29
|
+
transactions.add(event.transactionId);
|
|
30
|
+
try {
|
|
31
|
+
admitJournalTransition(state, event.record.tag);
|
|
32
|
+
}
|
|
33
|
+
catch (cause) {
|
|
34
|
+
if (cause instanceof JournalTransitionError) {
|
|
35
|
+
throw JournalIntegrityError.make({ reason: cause.reason });
|
|
36
|
+
}
|
|
37
|
+
throw cause;
|
|
38
|
+
}
|
|
39
|
+
state = event.record.tag;
|
|
40
|
+
expectedSequence += 1;
|
|
41
|
+
}
|
|
42
|
+
return state;
|
|
43
|
+
};
|
|
44
|
+
export const makeJournalEvent = (input) => ({
|
|
45
|
+
schemaVersion: "ts-release-operation-journal-event/v1",
|
|
46
|
+
releasePoint: input.releasePoint,
|
|
47
|
+
operationKey: input.operationKey,
|
|
48
|
+
sequence: input.sequence,
|
|
49
|
+
transactionId: input.transactionId,
|
|
50
|
+
previous: input.previous === null || input.previousHead === null
|
|
51
|
+
? null
|
|
52
|
+
: {
|
|
53
|
+
eventDigest: input.previousHead.eventDigest,
|
|
54
|
+
headVersionId: input.previousHead.versionId,
|
|
55
|
+
headEtag: input.previousHead.etag
|
|
56
|
+
},
|
|
57
|
+
workflow: input.workflow,
|
|
58
|
+
record: input.record
|
|
59
|
+
});
|
|
60
|
+
export const makeJournalHead = (input) => ({
|
|
61
|
+
schemaVersion: "ts-release-operation-journal-head/v1",
|
|
62
|
+
releasePoint: input.event.releasePoint,
|
|
63
|
+
operationKey: input.event.operationKey,
|
|
64
|
+
sequence: input.event.sequence,
|
|
65
|
+
transactionId: input.event.transactionId,
|
|
66
|
+
eventKey: input.eventKey,
|
|
67
|
+
eventVersionId: input.eventVersionId,
|
|
68
|
+
eventChecksumSha256: input.eventChecksumSha256,
|
|
69
|
+
eventDigest: input.eventDigest,
|
|
70
|
+
previousHeadVersionId: input.previousHeadVersionId,
|
|
71
|
+
previousHeadEtag: input.previousHeadEtag
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=reducer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../src/operation-journal/reducer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CanonicalOperationJournalShape, type S3JournalAuthority, type S3JournalBoundaryShape } from "./model.js";
|
|
2
|
+
export interface S3CanonicalOperationJournalOptions {
|
|
3
|
+
readonly authority: S3JournalAuthority;
|
|
4
|
+
readonly client: S3JournalBoundaryShape;
|
|
5
|
+
}
|
|
6
|
+
export declare const makeS3CanonicalOperationJournal: (options: S3CanonicalOperationJournalOptions) => CanonicalOperationJournalShape;
|
|
7
|
+
//# sourceMappingURL=s3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../src/operation-journal/s3.ts"],"names":[],"mappings":"AAwBA,OAAO,EACL,8BAA8B,EAe9B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAK5B,MAAM,YAAY,CAAA;AA+wBnB,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAA;IACtC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAA;CACxC;AAED,eAAO,MAAM,+BAA+B,GAC1C,SAAS,kCAAkC,KAC1C,8BA+CF,CAAA"}
|