@xyo-network/event-kit-protocol 2.1.0 → 2.2.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.
- package/dist/neutral/admissionTypes.d.ts +28 -13
- package/dist/neutral/admissionTypes.d.ts.map +1 -1
- package/dist/neutral/grantEvidence.d.ts +7 -5
- package/dist/neutral/grantEvidence.d.ts.map +1 -1
- package/dist/neutral/index.d.ts +5 -2
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +122 -37
- package/dist/neutral/index.mjs.map +4 -4
- package/dist/neutral/memoryWakeQueue.d.ts +2 -3
- package/dist/neutral/memoryWakeQueue.d.ts.map +1 -1
- package/dist/neutral/revocationRecognition.d.ts +8 -0
- package/dist/neutral/revocationRecognition.d.ts.map +1 -0
- package/dist/neutral/staleWakeLeaseError.d.ts +7 -0
- package/dist/neutral/staleWakeLeaseError.d.ts.map +1 -0
- package/dist/neutral/statementGraphWakeGrantAuthorizer.d.ts.map +1 -1
- package/dist/neutral/wakeQueue.d.ts +16 -4
- package/dist/neutral/wakeQueue.d.ts.map +1 -1
- package/package.json +10 -10
|
@@ -2,34 +2,38 @@ import type { ChainId, DeploymentId, Hash, NormalizedAddress, WakeId, WakeJwtAud
|
|
|
2
2
|
import type { AdmittedWake } from './types.ts';
|
|
3
3
|
/** Replay records survive token expiry by this amount to cover receiver skew. */
|
|
4
4
|
export declare const EVENT_KIT_REPLAY_RETENTION_SKEW_SECONDS = 60;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
readonly authorizationChainId: ChainId;
|
|
5
|
+
/** Deployment/queue grant scope only; this port does not establish subscription activation. */
|
|
6
|
+
export interface DeploymentGrantAuthorizationRequest {
|
|
8
7
|
readonly controller: NormalizedAddress;
|
|
9
8
|
readonly deploymentId: DeploymentId;
|
|
10
|
-
/** Required by D-006's activation adapter to select the accepted tuple's exact grant. */
|
|
11
9
|
readonly exactGrantHash?: Hash;
|
|
12
10
|
readonly expectedHead: number;
|
|
13
|
-
readonly filterHash: Hash;
|
|
14
11
|
readonly publisher: NormalizedAddress;
|
|
15
12
|
readonly queueId?: string;
|
|
16
|
-
readonly sourceHash: Hash;
|
|
17
|
-
readonly subscriptionHash: Hash;
|
|
18
13
|
}
|
|
19
|
-
|
|
20
|
-
export interface WakeGrantEvidence {
|
|
14
|
+
export interface DeploymentGrantEvidence {
|
|
21
15
|
readonly assertedAtBlock: number;
|
|
22
|
-
/** Checked for every authorization decision. */
|
|
23
|
-
readonly authorizationChainId: ChainId;
|
|
24
16
|
readonly controller: NormalizedAddress;
|
|
25
17
|
readonly deploymentId: DeploymentId;
|
|
26
|
-
readonly filterHash: Hash;
|
|
27
18
|
readonly id: string;
|
|
28
19
|
readonly objectHash?: Hash;
|
|
29
20
|
readonly queueId?: string;
|
|
21
|
+
readonly target: NormalizedAddress;
|
|
22
|
+
}
|
|
23
|
+
export interface WakeGrantAuthorizationRequest extends DeploymentGrantAuthorizationRequest {
|
|
24
|
+
/** Must match the independently pinned grant viewer. */
|
|
25
|
+
readonly authorizationChainId: ChainId;
|
|
26
|
+
readonly filterHash: Hash;
|
|
27
|
+
readonly sourceHash: Hash;
|
|
28
|
+
readonly subscriptionHash: Hash;
|
|
29
|
+
}
|
|
30
|
+
/** Complete evidence is produced only after exact finalized subscription activation. */
|
|
31
|
+
export interface WakeGrantEvidence extends DeploymentGrantEvidence {
|
|
32
|
+
readonly authorizationChainId: ChainId;
|
|
33
|
+
readonly authorizationKind: 'activated-subscription';
|
|
34
|
+
readonly filterHash: Hash;
|
|
30
35
|
readonly sourceHash: Hash;
|
|
31
36
|
readonly subscriptionHash: Hash;
|
|
32
|
-
readonly target: NormalizedAddress;
|
|
33
37
|
}
|
|
34
38
|
export interface WakeGrantAuthorizationDisabled {
|
|
35
39
|
readonly atBlock: number;
|
|
@@ -39,6 +43,17 @@ export interface WakeGrantAuthorizationDisabled {
|
|
|
39
43
|
/** Optional diagnostics. The core recomputes lag instead of trusting this value. */
|
|
40
44
|
readonly lag?: number;
|
|
41
45
|
}
|
|
46
|
+
export interface DeploymentGrantAuthorizationEnabled {
|
|
47
|
+
readonly atBlock: number;
|
|
48
|
+
readonly enabled: true;
|
|
49
|
+
readonly expectedHead?: number;
|
|
50
|
+
readonly grant: DeploymentGrantEvidence;
|
|
51
|
+
readonly lag?: number;
|
|
52
|
+
}
|
|
53
|
+
export type DeploymentGrantAuthorizationDecision = WakeGrantAuthorizationDisabled | DeploymentGrantAuthorizationEnabled;
|
|
54
|
+
export interface DeploymentGrantAuthorizer {
|
|
55
|
+
authorizePublisher: (request: DeploymentGrantAuthorizationRequest) => Promise<DeploymentGrantAuthorizationDecision>;
|
|
56
|
+
}
|
|
42
57
|
export interface WakeGrantAuthorizationEnabled {
|
|
43
58
|
readonly atBlock: number;
|
|
44
59
|
readonly enabled: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admissionTypes.d.ts","sourceRoot":"","sources":["../../src/admissionTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,iBAAiB,EACjB,MAAM,EACN,eAAe,EACf,SAAS,EACV,MAAM,gCAAgC,CAAA;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,iFAAiF;AACjF,eAAO,MAAM,uCAAuC,KAAK,CAAA;AAEzD,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"admissionTypes.d.ts","sourceRoot":"","sources":["../../src/admissionTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DeploymentGrantAuthorizer } from './admissionTypes.ts';
|
|
2
2
|
import type { StatementGraphGrantReadModel } from './statementGraphPorts.ts';
|
|
3
3
|
export interface DeploymentGrantAuthorizerOptions {
|
|
4
4
|
readonly viewer: StatementGraphGrantReadModel;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
7
|
* Adapts a canonical Statement Graph v2 read model to the evidence-bearing
|
|
8
|
-
*
|
|
8
|
+
* deployment-only grant authorization port. Each decision is bound to one stable head.
|
|
9
9
|
*
|
|
10
10
|
* v2 is append-only with no lifecycle `state`, so this layer owns two things
|
|
11
11
|
* the protocol used to:
|
|
12
12
|
*
|
|
13
13
|
* - **Aboutness.** The requested publisher must match both the Claim's
|
|
14
14
|
* `subject` and the grant object's `publisher` field.
|
|
15
|
-
* - **Negation.** A grant is disabled
|
|
16
|
-
*
|
|
15
|
+
* - **Negation.** A grant is disabled when the pinned controller has Claim
|
|
16
|
+
* membership for the recomputed canonical hash of
|
|
17
|
+
* `{ schema: grant.revocation, grant: <object hash> }` under the publisher
|
|
18
|
+
* subject. Declared schema and body resolution are not consulted.
|
|
17
19
|
* Revocations from any other source are ignored.
|
|
18
20
|
*/
|
|
19
|
-
export declare function createDeploymentGrantAuthorizer(options: DeploymentGrantAuthorizerOptions):
|
|
21
|
+
export declare function createDeploymentGrantAuthorizer(options: DeploymentGrantAuthorizerOptions): DeploymentGrantAuthorizer;
|
|
20
22
|
//# sourceMappingURL=grantEvidence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grantEvidence.d.ts","sourceRoot":"","sources":["../../src/grantEvidence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"grantEvidence.d.ts","sourceRoot":"","sources":["../../src/grantEvidence.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAGV,yBAAyB,EAE1B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAEV,4BAA4B,EAC7B,MAAM,0BAA0B,CAAA;AAEjC,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAA;CAC9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gCAAgC,GACxC,yBAAyB,CAsD3B"}
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { AtomicWakeInbox, AuthorizedWakeGrant, WakeAdmissionAttempt, WakeAdmissionReceipt, WakeAttemptResolution, WakeCommitResult, WakeGrantAuthorizationDecision, WakeGrantAuthorizationDisabled, WakeGrantAuthorizationEnabled, WakeGrantAuthorizationRequest, WakeGrantAuthorizer, WakeGrantEvidence, } from './admissionTypes.ts';
|
|
1
|
+
export type { AtomicWakeInbox, AuthorizedWakeGrant, DeploymentGrantAuthorizationDecision, DeploymentGrantAuthorizationEnabled, DeploymentGrantAuthorizationRequest, DeploymentGrantAuthorizer, DeploymentGrantEvidence, WakeAdmissionAttempt, WakeAdmissionReceipt, WakeAttemptResolution, WakeCommitResult, WakeGrantAuthorizationDecision, WakeGrantAuthorizationDisabled, WakeGrantAuthorizationEnabled, WakeGrantAuthorizationRequest, WakeGrantAuthorizer, WakeGrantEvidence, } from './admissionTypes.ts';
|
|
2
2
|
export { EVENT_KIT_REPLAY_RETENTION_SKEW_SECONDS } from './admissionTypes.ts';
|
|
3
3
|
export type { AdmitAndEnqueueFailure, AdmitAndEnqueueFailureReason, AdmitAndEnqueueInput, AdmitAndEnqueueResult, AdmitAndEnqueueSuccess, } from './admitAndEnqueue.ts';
|
|
4
4
|
export { admitAndEnqueue } from './admitAndEnqueue.ts';
|
|
@@ -19,8 +19,11 @@ export { createMemoryWakeQueue } from './memoryWakeQueue.ts';
|
|
|
19
19
|
export type { BeginPublisherEndpointChallengeAttemptInput, BeginPublisherEndpointChallengeAttemptResult, CompletePublisherEndpointChallengeInput, CompletePublisherEndpointChallengeResult, IssuePublisherEndpointChallengeInput, IssuePublisherEndpointChallengeResult, PublisherEncryptionKeyLookup, PublisherEncryptionKeyStore, PublisherEndpointChallengeRecord, PublisherEndpointChallengeState, PublisherEndpointChallengeStore, } from './publisherHandshakeStores.ts';
|
|
20
20
|
export type { BeginPublisherEndpointChallengeAttemptApiInput, BeginPublisherEndpointChallengeAttemptApiResult, CompletePublisherEndpointChallengeApiInput, CompletePublisherEndpointChallengeApiResult, CompletePublisherEndpointChallengeFailure, CompletePublisherEndpointChallengeFailureReason, CompletePublisherEndpointChallengeSuccess, IssuePublisherEndpointChallengeApiInput, IssuePublisherEndpointChallengeApiResult, PublisherEndpointChallengeContext, PublisherSubscriptionCandidate, PublisherSubscriptionValidation, PublisherSubscriptionValidationFailure, PublisherSubscriptionValidationFailureReason, ValidatedPublisherSubscription, } from './publisherSubscription.ts';
|
|
21
21
|
export { beginPublisherEndpointChallengeAttempt, completePublisherEndpointChallenge, endpointChallengeMatchesPublisherContext, issuePublisherEndpointChallenge, validateAndDecryptPublisherSubscription, } from './publisherSubscription.ts';
|
|
22
|
+
export type { RecomputableRevocationKind } from './revocationRecognition.ts';
|
|
23
|
+
export { recomputableRevocationHash } from './revocationRecognition.ts';
|
|
22
24
|
export * from './sourceWakeActivation.ts';
|
|
23
25
|
export * from './sourceWakeIdentity.ts';
|
|
26
|
+
export { StaleWakeLeaseError } from './staleWakeLeaseError.ts';
|
|
24
27
|
export type { StatementGrantClaim, StatementGrantClaimQuery, StatementGrantObject, StatementGraphGrantReadModel, } from './statementGraphPorts.ts';
|
|
25
28
|
export type { StatementGraphWakeGrantAuthorizerOptions } from './statementGraphWakeGrantAuthorizer.ts';
|
|
26
29
|
export { createStatementGraphWakeGrantAuthorizer } from './statementGraphWakeGrantAuthorizer.ts';
|
|
@@ -28,7 +31,7 @@ export type { AdmittedWake } from './types.ts';
|
|
|
28
31
|
export { AdmittedWakeZod, parseAdmittedWake } from './types.ts';
|
|
29
32
|
export type { VerifiedWakeRequest, VerifyWakeRequestFailure, VerifyWakeRequestInput, VerifyWakeRequestRejectionReason, VerifyWakeRequestResult, VerifyWakeRequestSuccess, WakeAdmissionRoute, } from './verifyWakeRequest.ts';
|
|
30
33
|
export { EVENT_KIT_MAX_FUTURE_IAT_SECONDS, EVENT_KIT_MAX_JWT_LIFETIME_SECONDS, verifyWakeRequest, WakeAdmissionRouteZod, } from './verifyWakeRequest.ts';
|
|
31
|
-
export type { LeasedWake, WakeHandler, WakeQueue, } from './wakeQueue.ts';
|
|
34
|
+
export type { LeasedWake, RecoverInflightOptions, WakeHandler, WakeQueue, } from './wakeQueue.ts';
|
|
32
35
|
export { drainQueue } from './wakeQueue.ts';
|
|
33
36
|
export { wakeSubscriptionAadBytes, wakeSubscriptionPlaintextBytes, wakeSubscriptionPlaintextFromBytes, } from './wakeSubscriptionEncoding.ts';
|
|
34
37
|
export type { DecryptWakeSubscriptionInput, EncryptWakeSubscriptionInput, WakeSubscriptionEncryptionKeyPair, WakeSubscriptionPrivateKey, WakeSubscriptionPublicKey, } from './wakeSubscriptionHpke.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -133,6 +133,7 @@ function validateGrantEvidence(evidence, verified, atBlock) {
|
|
|
133
133
|
if (!isRecord(evidence)) return reject("grant-view-invalid", ["enabled grant decision omitted evidence"]);
|
|
134
134
|
const requiredFields = [
|
|
135
135
|
"assertedAtBlock",
|
|
136
|
+
"authorizationKind",
|
|
136
137
|
"authorizationChainId",
|
|
137
138
|
"filterHash",
|
|
138
139
|
"sourceHash",
|
|
@@ -145,6 +146,9 @@ function validateGrantEvidence(evidence, verified, atBlock) {
|
|
|
145
146
|
if (requiredFields.some((field) => !Object.hasOwn(evidence, field))) {
|
|
146
147
|
return reject("grant-view-invalid", ["enabled grant evidence requires own canonical fields"]);
|
|
147
148
|
}
|
|
149
|
+
if (evidence.authorizationKind !== "activated-subscription") {
|
|
150
|
+
return reject("grant-view-invalid", ["enabled authorization requires finalized subscription activation"]);
|
|
151
|
+
}
|
|
148
152
|
if (typeof evidence.id !== "string" || evidence.id.length === 0) {
|
|
149
153
|
return reject("grant-view-invalid", ["enabled grant evidence requires a non-empty id"]);
|
|
150
154
|
}
|
|
@@ -180,6 +184,7 @@ function validateReceipt(receipt, attempt) {
|
|
|
180
184
|
function snapshotGrantEvidence(evidence) {
|
|
181
185
|
return Object.freeze({
|
|
182
186
|
assertedAtBlock: evidence.assertedAtBlock,
|
|
187
|
+
authorizationKind: evidence.authorizationKind,
|
|
183
188
|
authorizationChainId: evidence.authorizationChainId,
|
|
184
189
|
sourceHash: evidence.sourceHash,
|
|
185
190
|
filterHash: evidence.filterHash,
|
|
@@ -1588,11 +1593,24 @@ function wakeKey(attempt) {
|
|
|
1588
1593
|
return JSON.stringify([attempt.audience, attempt.publisher, attempt.wakeId]);
|
|
1589
1594
|
}
|
|
1590
1595
|
|
|
1596
|
+
// src/staleWakeLeaseError.ts
|
|
1597
|
+
var StaleWakeLeaseError = class extends Error {
|
|
1598
|
+
code = "stale-wake-lease";
|
|
1599
|
+
name = "StaleWakeLeaseError";
|
|
1600
|
+
constructor(message = "Wake lease is no longer current") {
|
|
1601
|
+
super(message);
|
|
1602
|
+
}
|
|
1603
|
+
};
|
|
1604
|
+
|
|
1591
1605
|
// src/memoryWakeQueue.ts
|
|
1592
1606
|
function createMemoryWakeQueue() {
|
|
1593
1607
|
const pending = [];
|
|
1594
1608
|
const inflight = /* @__PURE__ */ new Map();
|
|
1595
1609
|
let sequence = 0;
|
|
1610
|
+
function restore(entry) {
|
|
1611
|
+
pending.push(entry);
|
|
1612
|
+
pending.sort((left, right) => left.sequence - right.sequence);
|
|
1613
|
+
}
|
|
1596
1614
|
return {
|
|
1597
1615
|
async append(wake) {
|
|
1598
1616
|
pending.push({ sequence: sequence += 1, wake });
|
|
@@ -1600,26 +1618,35 @@ function createMemoryWakeQueue() {
|
|
|
1600
1618
|
async claim() {
|
|
1601
1619
|
const entry = pending.shift();
|
|
1602
1620
|
if (entry === void 0) return void 0;
|
|
1603
|
-
|
|
1621
|
+
const token = /* @__PURE__ */ Symbol("wake-lease");
|
|
1622
|
+
let completed2;
|
|
1623
|
+
inflight.set(entry.sequence, { entry, token });
|
|
1624
|
+
const finish = (operation) => {
|
|
1625
|
+
if (completed2 === operation) return;
|
|
1626
|
+
if (completed2 !== void 0 || inflight.get(entry.sequence)?.token !== token) {
|
|
1627
|
+
throw new StaleWakeLeaseError();
|
|
1628
|
+
}
|
|
1629
|
+
inflight.delete(entry.sequence);
|
|
1630
|
+
if (operation === "release") restore(entry);
|
|
1631
|
+
completed2 = operation;
|
|
1632
|
+
};
|
|
1604
1633
|
return {
|
|
1605
1634
|
wake: entry.wake,
|
|
1606
1635
|
async ack() {
|
|
1607
|
-
|
|
1636
|
+
finish("ack");
|
|
1608
1637
|
},
|
|
1609
1638
|
async release() {
|
|
1610
|
-
|
|
1611
|
-
pending.push(entry);
|
|
1612
|
-
pending.sort((left, right) => left.sequence - right.sequence);
|
|
1639
|
+
finish("release");
|
|
1613
1640
|
}
|
|
1614
1641
|
};
|
|
1615
1642
|
},
|
|
1616
1643
|
inflightCount: async () => inflight.size,
|
|
1617
1644
|
pendingCount: async () => pending.length,
|
|
1618
|
-
async recoverInflight() {
|
|
1645
|
+
async recoverInflight(options) {
|
|
1646
|
+
if (options?.consumersStopped !== true) throw new TypeError("Recovery requires all consumers to be stopped");
|
|
1619
1647
|
const recovered = inflight.size;
|
|
1620
|
-
for (const entry of inflight.values())
|
|
1648
|
+
for (const { entry } of inflight.values()) restore(entry);
|
|
1621
1649
|
inflight.clear();
|
|
1622
|
-
pending.sort((left, right) => left.sequence - right.sequence);
|
|
1623
1650
|
return recovered;
|
|
1624
1651
|
}
|
|
1625
1652
|
};
|
|
@@ -1892,11 +1919,59 @@ function filterWithinServicePolicy(service, plaintext) {
|
|
|
1892
1919
|
return service.deliveryMode === filter.deliveryMode && JSON.stringify(service.bestEffort) === JSON.stringify(filter.bestEffort) && filter.maxPositionsPerWake <= service.limits.maxPositionsPerWake && service.events.some((event) => wakeSourcesEqual(event.source, filter.source));
|
|
1893
1920
|
}
|
|
1894
1921
|
|
|
1922
|
+
// src/revocationRecognition.ts
|
|
1923
|
+
import {
|
|
1924
|
+
HashZod as HashZod7,
|
|
1925
|
+
PublisherEncryptionKeyRevocationSchema as PublisherEncryptionKeyRevocationSchema2,
|
|
1926
|
+
PublisherEncryptionKeyRevocationZod as PublisherEncryptionKeyRevocationZod2,
|
|
1927
|
+
PublisherServiceRevocationSchema as PublisherServiceRevocationSchema2,
|
|
1928
|
+
PublisherServiceRevocationZod as PublisherServiceRevocationZod2,
|
|
1929
|
+
WakeGrantRevocationSchema as WakeGrantRevocationSchema3,
|
|
1930
|
+
WakeGrantRevocationZod as WakeGrantRevocationZod2,
|
|
1931
|
+
WakeSubscriptionAcceptanceRevocationSchema as WakeSubscriptionAcceptanceRevocationSchema2,
|
|
1932
|
+
WakeSubscriptionAcceptanceRevocationZod as WakeSubscriptionAcceptanceRevocationZod2,
|
|
1933
|
+
WakeSubscriptionRevocationSchema as WakeSubscriptionRevocationSchema2,
|
|
1934
|
+
WakeSubscriptionRevocationZod as WakeSubscriptionRevocationZod2
|
|
1935
|
+
} from "@xyo-network/event-kit-schemas";
|
|
1936
|
+
import { PayloadBuilder as PayloadBuilder6 } from "@xyo-network/sdk";
|
|
1937
|
+
async function recomputableRevocationHash(kind, targetHash) {
|
|
1938
|
+
return await PayloadBuilder6.dataHash(revocationPayload(kind, HashZod7.parse(targetHash)));
|
|
1939
|
+
}
|
|
1940
|
+
function revocationPayload(kind, target) {
|
|
1941
|
+
switch (kind) {
|
|
1942
|
+
case "acceptance":
|
|
1943
|
+
return WakeSubscriptionAcceptanceRevocationZod2.parse({
|
|
1944
|
+
acceptance: target,
|
|
1945
|
+
schema: WakeSubscriptionAcceptanceRevocationSchema2
|
|
1946
|
+
});
|
|
1947
|
+
case "grant":
|
|
1948
|
+
return WakeGrantRevocationZod2.parse({
|
|
1949
|
+
grant: target,
|
|
1950
|
+
schema: WakeGrantRevocationSchema3
|
|
1951
|
+
});
|
|
1952
|
+
case "key":
|
|
1953
|
+
return PublisherEncryptionKeyRevocationZod2.parse({
|
|
1954
|
+
key: target,
|
|
1955
|
+
schema: PublisherEncryptionKeyRevocationSchema2
|
|
1956
|
+
});
|
|
1957
|
+
case "service":
|
|
1958
|
+
return PublisherServiceRevocationZod2.parse({
|
|
1959
|
+
schema: PublisherServiceRevocationSchema2,
|
|
1960
|
+
service: target
|
|
1961
|
+
});
|
|
1962
|
+
case "subscription":
|
|
1963
|
+
return WakeSubscriptionRevocationZod2.parse({
|
|
1964
|
+
schema: WakeSubscriptionRevocationSchema2,
|
|
1965
|
+
subscription: target
|
|
1966
|
+
});
|
|
1967
|
+
}
|
|
1968
|
+
}
|
|
1969
|
+
|
|
1895
1970
|
// src/sourceWakeActivation.ts
|
|
1896
1971
|
import {
|
|
1897
1972
|
ChainIdZod as ChainIdZod3,
|
|
1898
1973
|
DeploymentIdZod as DeploymentIdZod3,
|
|
1899
|
-
HashZod as
|
|
1974
|
+
HashZod as HashZod8,
|
|
1900
1975
|
NonnegativeJsonSafeIntegerZod as NonnegativeJsonSafeIntegerZod4,
|
|
1901
1976
|
NormalizedAddressZod as NormalizedAddressZod7,
|
|
1902
1977
|
PositiveJsonSafeIntegerZod as PositiveJsonSafeIntegerZod2
|
|
@@ -1911,11 +1986,11 @@ var SourceWakeSubscriptionActivationZod = z4.strictObject({
|
|
|
1911
1986
|
publisher: NormalizedAddressZod7,
|
|
1912
1987
|
deploymentId: DeploymentIdZod3,
|
|
1913
1988
|
queueId: z4.string().min(1).max(255).optional(),
|
|
1914
|
-
sourceHash:
|
|
1915
|
-
filterHash:
|
|
1916
|
-
subscriptionHash:
|
|
1917
|
-
serviceHash:
|
|
1918
|
-
grantHash:
|
|
1989
|
+
sourceHash: HashZod8,
|
|
1990
|
+
filterHash: HashZod8,
|
|
1991
|
+
subscriptionHash: HashZod8,
|
|
1992
|
+
serviceHash: HashZod8,
|
|
1993
|
+
grantHash: HashZod8
|
|
1919
1994
|
}).refine(
|
|
1920
1995
|
(value) => value.activeFromBlock <= value.atBlock && value.atBlock < value.expiresAtBlock,
|
|
1921
1996
|
"Subscription must be active at the exact finalized authorization snapshot"
|
|
@@ -1930,12 +2005,10 @@ import {
|
|
|
1930
2005
|
// src/grantEvidence.ts
|
|
1931
2006
|
import {
|
|
1932
2007
|
asWakeGrantObject,
|
|
1933
|
-
asWakeGrantRevocation,
|
|
1934
2008
|
DeploymentIdZod as DeploymentIdZod4,
|
|
1935
|
-
HashZod as
|
|
2009
|
+
HashZod as HashZod9,
|
|
1936
2010
|
NormalizedAddressZod as NormalizedAddressZod8,
|
|
1937
|
-
WakeGrantObjectSchema as WakeGrantObjectSchema3
|
|
1938
|
-
WakeGrantRevocationSchema as WakeGrantRevocationSchema3
|
|
2011
|
+
WakeGrantObjectSchema as WakeGrantObjectSchema3
|
|
1939
2012
|
} from "@xyo-network/event-kit-schemas";
|
|
1940
2013
|
function createDeploymentGrantAuthorizer(options) {
|
|
1941
2014
|
const { viewer } = options;
|
|
@@ -1951,7 +2024,13 @@ function createDeploymentGrantAuthorizer(options) {
|
|
|
1951
2024
|
...request.exactGrantHash === void 0 ? {} : { objectHash: request.exactGrantHash },
|
|
1952
2025
|
subject: request.publisher
|
|
1953
2026
|
});
|
|
1954
|
-
const revokedGrantHashes = await readRevocations(
|
|
2027
|
+
const revokedGrantHashes = await readRevocations(
|
|
2028
|
+
viewer,
|
|
2029
|
+
request.controller,
|
|
2030
|
+
request.publisher,
|
|
2031
|
+
atBlock,
|
|
2032
|
+
claims
|
|
2033
|
+
);
|
|
1955
2034
|
let evidence;
|
|
1956
2035
|
for (const claim of claims) {
|
|
1957
2036
|
evidence = await resolveEvidence(viewer, claim, request, atBlock, revokedGrantHashes);
|
|
@@ -1980,21 +2059,24 @@ function createDeploymentGrantAuthorizer(options) {
|
|
|
1980
2059
|
}
|
|
1981
2060
|
});
|
|
1982
2061
|
}
|
|
1983
|
-
async function readRevocations(viewer, controller, subject, atBlock) {
|
|
2062
|
+
async function readRevocations(viewer, controller, subject, atBlock, grantClaims) {
|
|
1984
2063
|
const revoked = /* @__PURE__ */ new Set();
|
|
1985
|
-
const
|
|
1986
|
-
|
|
1987
|
-
subject
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
if (!isLiveClaim(claim, controller, subject, WakeGrantRevocationSchema3, atBlock)) continue;
|
|
1991
|
-
const object = await viewer.object(claim.objectHash);
|
|
1992
|
-
if (object?.assurance !== "resolved" || object.declaredSchema !== WakeGrantRevocationSchema3 || object.objectHash !== claim.objectHash || !isRecord3(object.params) || Object.hasOwn(object.params, "schema")) continue;
|
|
1993
|
-
const revocation = asWakeGrantRevocation({ ...object.params, schema: object.declaredSchema });
|
|
1994
|
-
if (revocation !== void 0) revoked.add(revocation.grant);
|
|
2064
|
+
for (const claim of grantClaims) {
|
|
2065
|
+
if (!isLiveClaim(claim, controller, subject, WakeGrantObjectSchema3, atBlock)) continue;
|
|
2066
|
+
if (await controllerRevokedGrant(viewer, controller, subject, claim.objectHash, atBlock)) {
|
|
2067
|
+
revoked.add(claim.objectHash);
|
|
2068
|
+
}
|
|
1995
2069
|
}
|
|
1996
2070
|
return revoked;
|
|
1997
2071
|
}
|
|
2072
|
+
async function controllerRevokedGrant(viewer, controller, subject, grantHash, atBlock) {
|
|
2073
|
+
const objectHash = await recomputableRevocationHash("grant", grantHash);
|
|
2074
|
+
const claims = await viewer.claims(controller, { objectHash, subject });
|
|
2075
|
+
return claims.some((claim) => isRevocationMembership(claim, controller, subject, objectHash, atBlock));
|
|
2076
|
+
}
|
|
2077
|
+
function isRevocationMembership(claim, controller, subject, objectHash, atBlock) {
|
|
2078
|
+
return claim.source === controller && claim.subject === subject && claim.objectHash === objectHash && isNonnegativeSafeInteger5(claim.firstBlock) && claim.firstBlock <= atBlock && isNonnegativeSafeInteger5(claim.lastBlock) && claim.lastBlock >= claim.firstBlock && HashZod9.safeParse(claim.firstEventHash).success && HashZod9.safeParse(claim.objectHash).success;
|
|
2079
|
+
}
|
|
1998
2080
|
async function resolveEvidence(viewer, claim, request, atBlock, revokedGrantHashes) {
|
|
1999
2081
|
if (!isLiveClaim(claim, request.controller, request.publisher, WakeGrantObjectSchema3, atBlock)) return void 0;
|
|
2000
2082
|
if (revokedGrantHashes.has(claim.objectHash)) return void 0;
|
|
@@ -2008,10 +2090,6 @@ async function resolveEvidence(viewer, claim, request, atBlock, revokedGrantHash
|
|
|
2008
2090
|
if (!grant.permissions.includes("enqueue")) return void 0;
|
|
2009
2091
|
return Object.freeze({
|
|
2010
2092
|
assertedAtBlock: claim.firstBlock,
|
|
2011
|
-
authorizationChainId: request.authorizationChainId,
|
|
2012
|
-
sourceHash: request.sourceHash,
|
|
2013
|
-
filterHash: request.filterHash,
|
|
2014
|
-
subscriptionHash: request.subscriptionHash,
|
|
2015
2093
|
controller: request.controller,
|
|
2016
2094
|
deploymentId: grant.deploymentId,
|
|
2017
2095
|
id: claim.firstEventHash,
|
|
@@ -2021,7 +2099,7 @@ async function resolveEvidence(viewer, claim, request, atBlock, revokedGrantHash
|
|
|
2021
2099
|
});
|
|
2022
2100
|
}
|
|
2023
2101
|
function isLiveClaim(claim, controller, subject, declaredObjectSchema, atBlock) {
|
|
2024
|
-
return claim.source === controller && claim.subject === subject && claim.declaredObjectSchema === declaredObjectSchema && isNonnegativeSafeInteger5(claim.firstBlock) && claim.firstBlock <= atBlock && isNonnegativeSafeInteger5(claim.lastBlock) && claim.lastBlock >= claim.firstBlock &&
|
|
2102
|
+
return claim.source === controller && claim.subject === subject && claim.declaredObjectSchema === declaredObjectSchema && isNonnegativeSafeInteger5(claim.firstBlock) && claim.firstBlock <= atBlock && isNonnegativeSafeInteger5(claim.lastBlock) && claim.lastBlock >= claim.firstBlock && HashZod9.safeParse(claim.firstEventHash).success && HashZod9.safeParse(claim.objectHash).success;
|
|
2025
2103
|
}
|
|
2026
2104
|
function parseExactGrantObject(object, expectedObjectHash) {
|
|
2027
2105
|
if (object?.assurance !== "resolved") return void 0;
|
|
@@ -2033,7 +2111,7 @@ function parseExactGrantObject(object, expectedObjectHash) {
|
|
|
2033
2111
|
});
|
|
2034
2112
|
}
|
|
2035
2113
|
function assertValidRequest(request) {
|
|
2036
|
-
if (request.exactGrantHash !== void 0 && !
|
|
2114
|
+
if (request.exactGrantHash !== void 0 && !HashZod9.safeParse(request.exactGrantHash).success) {
|
|
2037
2115
|
throw new TypeError("Exact grant hash must be canonical lowercase hexadecimal");
|
|
2038
2116
|
}
|
|
2039
2117
|
if (!NormalizedAddressZod8.safeParse(request.controller).success) {
|
|
@@ -2091,6 +2169,7 @@ function createStatementGraphWakeGrantAuthorizer(options) {
|
|
|
2091
2169
|
...decision,
|
|
2092
2170
|
grant: Object.freeze({
|
|
2093
2171
|
...decision.grant,
|
|
2172
|
+
authorizationKind: "activated-subscription",
|
|
2094
2173
|
authorizationChainId,
|
|
2095
2174
|
sourceHash,
|
|
2096
2175
|
filterHash: activation.filterHash,
|
|
@@ -2110,7 +2189,11 @@ async function drainQueue(queue, handler) {
|
|
|
2110
2189
|
try {
|
|
2111
2190
|
await handler(leased.wake);
|
|
2112
2191
|
} catch (error) {
|
|
2113
|
-
|
|
2192
|
+
try {
|
|
2193
|
+
await leased.release();
|
|
2194
|
+
} catch (releaseError) {
|
|
2195
|
+
throw new AggregateError([error, releaseError], "Wake handler and lease release both failed", { cause: releaseError });
|
|
2196
|
+
}
|
|
2114
2197
|
throw error;
|
|
2115
2198
|
}
|
|
2116
2199
|
await leased.ack();
|
|
@@ -2125,6 +2208,7 @@ export {
|
|
|
2125
2208
|
EVENT_KIT_MAX_JWT_LIFETIME_SECONDS,
|
|
2126
2209
|
EVENT_KIT_REPLAY_RETENTION_SKEW_SECONDS,
|
|
2127
2210
|
SourceWakeSubscriptionActivationZod,
|
|
2211
|
+
StaleWakeLeaseError,
|
|
2128
2212
|
WakeAdmissionRouteZod,
|
|
2129
2213
|
WakeSubscriptionDecryptionError,
|
|
2130
2214
|
admitAndEnqueue,
|
|
@@ -2163,6 +2247,7 @@ export {
|
|
|
2163
2247
|
issuePublisherEndpointChallenge,
|
|
2164
2248
|
parseAdmittedWake,
|
|
2165
2249
|
parseBestEffortSecurityState,
|
|
2250
|
+
recomputableRevocationHash,
|
|
2166
2251
|
resolvePreferredEncryptionKey,
|
|
2167
2252
|
selectPublisherService,
|
|
2168
2253
|
selectSubscriptionActivation,
|