@crowdedkingdoms/crowdyjs 18.0.2-dev.1 → 18.0.3-dev.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.
@@ -746,6 +746,8 @@ export const ExecModClientDeleteDocument = { "kind": "Document", "definitions":
746
746
  export const ExecGridClientModsDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "ExecGridClientMods" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "gridId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "execGridClientMods" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "appId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "gridId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "gridId" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "FragmentSpread", "name": { "kind": "Name", "value": "ExecGridClientModFields" } }] } }] } }, { "kind": "FragmentDefinition", "name": { "kind": "Name", "value": "ExecGridClientModFields" }, "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "ExecGridClientMod" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "modId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "gridId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "listingId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "clientVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "digest" } }, { "kind": "Field", "name": { "kind": "Name", "value": "capabilitySummaryJson" } }, { "kind": "Field", "name": { "kind": "Name", "value": "capabilityHash" } }, { "kind": "Field", "name": { "kind": "Name", "value": "tickIntervalMs" } }, { "kind": "Field", "name": { "kind": "Name", "value": "callerConsented" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorCapabilitySummaryJson" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorCapabilityHash" } }, { "kind": "Field", "name": { "kind": "Name", "value": "callerTrustsAuthor" } }, { "kind": "Field", "name": { "kind": "Name", "value": "updatedAt" } }] } }] };
747
747
  export const ExecConsentClientModDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ExecConsentClientMod" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "modId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "capabilityHash" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "execConsentClientMod" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "appId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "modId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "modId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "capabilityHash" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "capabilityHash" } } }] }] } }] };
748
748
  export const ExecTrustAuthorDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ExecTrustAuthor" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "gridId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "authorId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "capabilityHash" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "execTrustAuthor" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "appId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "gridId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "gridId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "authorId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "authorId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "capabilityHash" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "capabilityHash" } } }] }] } }] };
749
+ export const ExecRevokeClientModConsentDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ExecRevokeClientModConsent" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "modId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "execRevokeClientModConsent" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "appId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "modId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "modId" } } }] }] } }] };
750
+ export const ExecRevokeAuthorTrustDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ExecRevokeAuthorTrust" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "gridId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "authorId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "execRevokeAuthorTrust" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "appId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "gridId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "gridId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "authorId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "authorId" } } }] }] } }] };
749
751
  export const ExecModClientArtifactDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "ExecModClientArtifact" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "modId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "execModClientArtifact" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "appId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "modId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "modId" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "modId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "gridId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "clientVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "digest" } }, { "kind": "Field", "name": { "kind": "Name", "value": "wasmBase64" } }, { "kind": "Field", "name": { "kind": "Name", "value": "sizeBytes" } }, { "kind": "Field", "name": { "kind": "Name", "value": "capabilitySummaryJson" } }, { "kind": "Field", "name": { "kind": "Name", "value": "capabilityHash" } }, { "kind": "Field", "name": { "kind": "Name", "value": "tickIntervalMs" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fuelPerDispatch" } }, { "kind": "Field", "name": { "kind": "Name", "value": "abiVersion" } }] } }] } }] };
750
752
  export const GridOwnershipDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "GridOwnership" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "gridId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "BigInt" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "gridOwnership" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "appId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "appId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "gridId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "gridId" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "FragmentSpread", "name": { "kind": "Name", "value": "GridOwnershipFields" } }] } }] } }, { "kind": "FragmentDefinition", "name": { "kind": "Name", "value": "GridOwnershipFields" }, "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "GridOwnership" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "gridOwnershipId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "gridId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "appId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "ownerKind" } }, { "kind": "Field", "name": { "kind": "Name", "value": "ownerRef" } }, { "kind": "Field", "name": { "kind": "Name", "value": "tenure" } }, { "kind": "Field", "name": { "kind": "Name", "value": "acquiredVia" } }, { "kind": "Field", "name": { "kind": "Name", "value": "acquiredAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "expiresAt" } }] } }] };
751
753
  export const AssignGridOwnershipDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "AssignGridOwnership" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "input" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "AssignGridOwnershipInput" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "assignGridOwnership" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "input" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "input" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "FragmentSpread", "name": { "kind": "Name", "value": "GridOwnershipFields" } }] } }] } }, { "kind": "FragmentDefinition", "name": { "kind": "Name", "value": "GridOwnershipFields" }, "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "GridOwnership" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "gridOwnershipId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "gridId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "appId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "ownerKind" } }, { "kind": "Field", "name": { "kind": "Name", "value": "ownerRef" } }, { "kind": "Field", "name": { "kind": "Name", "value": "tenure" } }, { "kind": "Field", "name": { "kind": "Name", "value": "acquiredVia" } }, { "kind": "Field", "name": { "kind": "Name", "value": "acquiredAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "expiresAt" } }] } }] };
@@ -24,10 +24,11 @@ export interface ExecClientHalfPrompt {
24
24
  /**
25
25
  * Why a CLIENT half stopped: no longer listed (`removed`), a new digest, capability hash or tick
26
26
  * interval (`changed`), listed without the player's consent or trust (`unconsented`), refused by
27
- * `filter` (`filtered`), the runner left the grid (`left-grid`) or was stopped (`stopped`), or
28
- * the broker's circuit breaker tripped (`circuit-open`).
27
+ * `filter` (`filtered`), the player took their agreement to it back (`revoked`: `revoke`,
28
+ * `forgetAuthor`), the runner left the grid (`left-grid`) or was stopped (`stopped`), or the
29
+ * broker's circuit breaker tripped (`circuit-open`).
29
30
  */
30
- export type ExecClientHalfStopReason = 'removed' | 'changed' | 'unconsented' | 'filtered' | 'left-grid' | 'stopped' | 'circuit-open';
31
+ export type ExecClientHalfStopReason = 'removed' | 'changed' | 'unconsented' | 'filtered' | 'revoked' | 'left-grid' | 'stopped' | 'circuit-open';
31
32
  /** A consent, fetch or start that failed, and when that CLIENT half is tried again. */
32
33
  export interface ExecClientHalfError {
33
34
  mod: ExecGridClientMod;
@@ -54,7 +55,8 @@ export interface ExecClientHalfBroker {
54
55
  }): Promise<Uint8Array>;
55
56
  }
56
57
  export interface ExecClientHalvesOptions {
57
- exec: Pick<ExecAPI, 'gridClientMods' | 'consentClientMod' | 'trustAuthor' | 'modClientArtifactBytes'>;
58
+ /** `client.exec`; `revoke` and `forgetAuthor` need its two revoke calls as well. */
59
+ exec: Pick<ExecAPI, 'gridClientMods' | 'consentClientMod' | 'trustAuthor' | 'modClientArtifactBytes'> & Partial<Pick<ExecAPI, 'revokeClientModConsent' | 'revokeAuthorTrust'>>;
58
60
  appId: string;
59
61
  /** The platform glue worker (`@crowdedkingdoms/crowdyjs/player-glue-worker`), same origin. */
60
62
  workerUrl: string | URL;
@@ -120,6 +122,11 @@ export declare class ExecClientHalves {
120
122
  private readonly retryAt;
121
123
  private readonly declined;
122
124
  private readonly approved;
125
+ /** CLIENT halves the player took back on this grid, by identity: not run or asked about again. */
126
+ private readonly revoked;
127
+ private listed;
128
+ private pendingAgreement;
129
+ private revoking;
123
130
  private inFlight;
124
131
  constructor(options: ExecClientHalvesOptions);
125
132
  /** The grid the player stands in, or null. Any change stops every CLIENT half of the old one. */
@@ -139,8 +146,35 @@ export declare class ExecClientHalves {
139
146
  invoke(modId: string, payload: Uint8Array, options?: {
140
147
  timeoutMs?: number;
141
148
  }): Promise<Uint8Array>;
149
+ /**
150
+ * Stops the CLIENT half of mod `modId` and takes back the player's agreement to it, so it is not
151
+ * served to them again until they agree again: their consent to it
152
+ * (`exec.revokeClientModConsent`) and, when it is served because they trust its author, that
153
+ * trust (`exec.revokeAuthorTrust`), consenting instead to each of the author's other running
154
+ * halves so those keep running. It is not asked about again on this grid until it changes.
155
+ * Resolves false when the grid lists no such CLIENT half. It stops at once; when the API then
156
+ * refuses or fails, the promise rejects, the half stays stopped on this visit and the server
157
+ * still holds the agreement, so tell the player.
158
+ */
159
+ revoke(modId: string): Promise<boolean>;
160
+ /**
161
+ * Stops every CLIENT half of author `authorId` on this grid and takes back the player's trust in
162
+ * them here with their consent to each (`exec.revokeAuthorTrust`). The halves listed now are
163
+ * not asked about again on this grid until they change. Resolves the API's answer: true when
164
+ * anything was taken back. As with {@link revoke}, they stop at once and a refusal rejects.
165
+ */
166
+ forgetAuthor(authorId: string): Promise<boolean>;
167
+ /**
168
+ * Runs `work` after every revoke before it, and after a consent or trust already on its way to
169
+ * the API, so the player's last word is the one the server keeps.
170
+ */
171
+ private inTurn;
142
172
  /** Stops every CLIENT half and leaves the grid; the module cache stays. */
143
173
  stop(): void;
174
+ private forgetGrid;
175
+ private revokeCalls;
176
+ /** A question the player said yes to for `mod`, not yet gone through, is not sent after all. */
177
+ private dropApprovals;
144
178
  private reconcile;
145
179
  private stopStale;
146
180
  /** Asks about what the player has not agreed to; true when a consent or trust went through. */
@@ -1 +1 @@
1
- {"version":3,"file":"exec-client-halves.d.ts","sourceRoot":"","sources":["../../src/grid-mods/exec-client-halves.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec-client-halves.d.ts","sourceRoot":"","sources":["../../src/grid-mods/exec-client-halves.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,11 @@ export class ExecClientHalves {
43
43
  this.retryAt = new Map();
44
44
  this.declined = new Set();
45
45
  this.approved = new Set();
46
+ /** CLIENT halves the player took back on this grid, by identity: not run or asked about again. */
47
+ this.revoked = new Set();
48
+ this.listed = [];
49
+ this.pendingAgreement = null;
50
+ this.revoking = Promise.resolve();
46
51
  this.inFlight = null;
47
52
  }
48
53
  /** The grid the player stands in, or null. Any change stops every CLIENT half of the old one. */
@@ -52,8 +57,7 @@ export class ExecClientHalves {
52
57
  this.stopAll('left-grid');
53
58
  this.grid = grid ? { ...grid } : null;
54
59
  this.generation++;
55
- this.declined.clear();
56
- this.approved.clear();
60
+ this.forgetGrid();
57
61
  }
58
62
  /** The CLIENT halves running now. */
59
63
  get running() {
@@ -89,13 +93,109 @@ export class ExecClientHalves {
89
93
  }
90
94
  return worker.broker.invoke(payload, options);
91
95
  }
96
+ /**
97
+ * Stops the CLIENT half of mod `modId` and takes back the player's agreement to it, so it is not
98
+ * served to them again until they agree again: their consent to it
99
+ * (`exec.revokeClientModConsent`) and, when it is served because they trust its author, that
100
+ * trust (`exec.revokeAuthorTrust`), consenting instead to each of the author's other running
101
+ * halves so those keep running. It is not asked about again on this grid until it changes.
102
+ * Resolves false when the grid lists no such CLIENT half. It stops at once; when the API then
103
+ * refuses or fails, the promise rejects, the half stays stopped on this visit and the server
104
+ * still holds the agreement, so tell the player.
105
+ */
106
+ async revoke(modId) {
107
+ const grid = this.grid;
108
+ const mod = this.listed.find((m) => String(m.modId) === String(modId)) ?? this.workers.get(String(modId))?.mod;
109
+ if (!grid || !mod)
110
+ return false;
111
+ const exec = this.revokeCalls();
112
+ const { appId } = this.options;
113
+ const others = [...this.workers.values()]
114
+ .map((w) => w.mod)
115
+ .filter((m) => m.modId !== mod.modId && String(m.authorId) === String(mod.authorId));
116
+ this.revoked.add(identity(mod));
117
+ this.dropApprovals(mod);
118
+ this.stopWorker(mod.modId, 'revoked');
119
+ return this.inTurn(async () => {
120
+ await exec.revokeClientModConsent(appId, mod.modId);
121
+ if (mod.callerTrustsAuthor) {
122
+ await exec.revokeAuthorTrust(appId, grid.gridId, String(mod.authorId));
123
+ for (const other of others) {
124
+ // Taken back itself since: it keeps nothing.
125
+ if (this.revoked.has(identity(other)))
126
+ continue;
127
+ try {
128
+ await this.options.exec.consentClientMod(appId, other.modId, other.capabilityHash);
129
+ }
130
+ catch (error) {
131
+ this.options.onError?.({ mod: other, stage: 'consent', reason: refusal(error), error });
132
+ }
133
+ }
134
+ }
135
+ return true;
136
+ });
137
+ }
138
+ /**
139
+ * Stops every CLIENT half of author `authorId` on this grid and takes back the player's trust in
140
+ * them here with their consent to each (`exec.revokeAuthorTrust`). The halves listed now are
141
+ * not asked about again on this grid until they change. Resolves the API's answer: true when
142
+ * anything was taken back. As with {@link revoke}, they stop at once and a refusal rejects.
143
+ */
144
+ async forgetAuthor(authorId) {
145
+ const grid = this.grid;
146
+ if (!grid)
147
+ return false;
148
+ const exec = this.revokeCalls();
149
+ const theirs = (m) => String(m.authorId) === String(authorId);
150
+ for (const mod of [...this.listed.filter(theirs), ...[...this.workers.values()].map((w) => w.mod).filter(theirs)]) {
151
+ this.revoked.add(identity(mod));
152
+ this.dropApprovals(mod);
153
+ this.stopWorker(mod.modId, 'revoked');
154
+ }
155
+ return this.inTurn(() => exec.revokeAuthorTrust(this.options.appId, grid.gridId, String(authorId)));
156
+ }
157
+ /**
158
+ * Runs `work` after every revoke before it, and after a consent or trust already on its way to
159
+ * the API, so the player's last word is the one the server keeps.
160
+ */
161
+ inTurn(work) {
162
+ const turn = this.revoking
163
+ .catch(() => { })
164
+ .then(() => this.pendingAgreement?.catch(() => { }))
165
+ .then(work);
166
+ this.revoking = turn;
167
+ return turn;
168
+ }
92
169
  /** Stops every CLIENT half and leaves the grid; the module cache stays. */
93
170
  stop() {
94
171
  this.stopAll('stopped');
95
172
  this.grid = null;
96
173
  this.generation++;
174
+ this.forgetGrid();
175
+ }
176
+ forgetGrid() {
97
177
  this.declined.clear();
98
178
  this.approved.clear();
179
+ this.revoked.clear();
180
+ this.listed = [];
181
+ }
182
+ revokeCalls() {
183
+ const { revokeClientModConsent, revokeAuthorTrust } = this.options.exec;
184
+ if (!revokeClientModConsent || !revokeAuthorTrust) {
185
+ throw new Error('this runner cannot take consent back: its exec has no revokeClientModConsent / revokeAuthorTrust');
186
+ }
187
+ return {
188
+ revokeClientModConsent: revokeClientModConsent.bind(this.options.exec),
189
+ revokeAuthorTrust: revokeAuthorTrust.bind(this.options.exec),
190
+ };
191
+ }
192
+ /** A question the player said yes to for `mod`, not yet gone through, is not sent after all. */
193
+ dropApprovals(mod) {
194
+ const prefixes = [`author\u0000${mod.authorId}\u0000`, `mod\u0000${mod.modId}\u0000`];
195
+ for (const key of [...this.approved]) {
196
+ if (prefixes.some((prefix) => key.startsWith(prefix)))
197
+ this.approved.delete(key);
198
+ }
99
199
  }
100
200
  async reconcile(generation) {
101
201
  const grid = this.grid;
@@ -106,6 +206,7 @@ export class ExecClientHalves {
106
206
  let listed = await exec.gridClientMods(appId, grid.gridId);
107
207
  if (!current())
108
208
  return;
209
+ this.listed = listed;
109
210
  this.stopStale(listed);
110
211
  if (await this.askAbout(listed, grid, current)) {
111
212
  if (!current())
@@ -113,6 +214,7 @@ export class ExecClientHalves {
113
214
  listed = await exec.gridClientMods(appId, grid.gridId);
114
215
  if (!current())
115
216
  return;
217
+ this.listed = listed;
116
218
  this.stopStale(listed);
117
219
  }
118
220
  for (const mod of listed) {
@@ -204,14 +306,18 @@ export class ExecClientHalves {
204
306
  // registered is retried on the next refresh without asking again.
205
307
  this.approved.add(key);
206
308
  }
309
+ // Taken back while the question was open: a trust would cover the half again.
310
+ if (prompt.mods.some((m) => this.revoked.has(identity(m))))
311
+ continue;
312
+ let agreement = null;
207
313
  try {
208
314
  const { exec, appId } = this.options;
209
- if (prompt.kind === 'author') {
210
- await exec.trustAuthor(appId, grid.gridId, prompt.authorId, prompt.capabilityHash);
211
- }
212
- else {
213
- await exec.consentClientMod(appId, prompt.mods[0].modId, prompt.capabilityHash);
214
- }
315
+ agreement =
316
+ prompt.kind === 'author'
317
+ ? exec.trustAuthor(appId, grid.gridId, prompt.authorId, prompt.capabilityHash)
318
+ : exec.consentClientMod(appId, prompt.mods[0].modId, prompt.capabilityHash);
319
+ this.pendingAgreement = agreement;
320
+ await agreement;
215
321
  this.approved.delete(key);
216
322
  agreed = true;
217
323
  }
@@ -222,6 +328,10 @@ export class ExecClientHalves {
222
328
  this.approved.delete(key);
223
329
  this.options.onError?.({ mod: prompt.mods[0], stage: 'consent', reason, error });
224
330
  }
331
+ finally {
332
+ if (this.pendingAgreement === agreement)
333
+ this.pendingAgreement = null;
334
+ }
225
335
  }
226
336
  return agreed;
227
337
  }
@@ -265,6 +375,9 @@ export class ExecClientHalves {
265
375
  return;
266
376
  }
267
377
  }
378
+ // Taken back while it was fetched.
379
+ if (!this.wanted(mod))
380
+ return;
268
381
  const served = module.hostFunctions;
269
382
  const broker = (this.options.brokerFactory ?? ((o) => new PlayerCodeBroker(o)))({
270
383
  engine: 'ck-exec',
@@ -325,6 +438,8 @@ export class ExecClientHalves {
325
438
  }
326
439
  }
327
440
  wanted(mod) {
441
+ if (this.revoked.has(identity(mod)))
442
+ return false;
328
443
  return this.options.filter ? this.options.filter(mod) : true;
329
444
  }
330
445
  stopWorker(modId, reason) {
@@ -1 +1 @@
1
- {"version":3,"file":"grid-scope.d.ts","sourceRoot":"","sources":["../src/grid-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,2EAA2E;AAC3E,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,4EAA4E;AAC5E,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;GASG;AACH,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM;IALzB,OAAO,CAAC,GAAG,CAAiB;gBAGT,OAAO,EAAE,gBAAgB,EACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,OAAO;IAKf,uEAAuE;IACvE,IAAI,MAAM,IAAI,OAAO,GAAG,IAAI,CAE3B;IAED,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAgBnC,6EAA6E;IAC7E,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAatC,mEAAmE;IAC7D,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAqBxD,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ;oBACL,OAAO,CAAC,WAAW,EAAE,CAAC;uBAGxB,MAAM,YACH;YAAE,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAAC,cAAc,CAAC,EAAE,OAAO,CAAA;SAAE;;;;;;;;;;;;;;0BAQtE,MAAM;;;;;;;;0BAkCim+jB,CAAC;;;;;;;;2BAjCvm+jB,MAAM;0BACP,MAAM,QAAQ,MAAM,iBAAiB,MAAM;MAM7D;IAEF;;;;OAIG;IACH,QAAQ,CAAC,IAAI;6BACU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;6BAIvD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;sBAI9D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;6BAI/C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;MAI5E;CACH"}
1
+ {"version":3,"file":"grid-scope.d.ts","sourceRoot":"","sources":["../src/grid-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,2EAA2E;AAC3E,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,4EAA4E;AAC5E,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;GASG;AACH,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM;IALzB,OAAO,CAAC,GAAG,CAAiB;gBAGT,OAAO,EAAE,gBAAgB,EACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,OAAO;IAKf,uEAAuE;IACvE,IAAI,MAAM,IAAI,OAAO,GAAG,IAAI,CAE3B;IAED,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAgBnC,6EAA6E;IAC7E,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAatC,mEAAmE;IAC7D,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAqBxD,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ;oBACL,OAAO,CAAC,WAAW,EAAE,CAAC;uBAGxB,MAAM,YACH;YAAE,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAAC,cAAc,CAAC,EAAE,OAAO,CAAA;SAAE;;;;;;;;;;;;;;0BAQtE,MAAM;;;;;;;;0BAkCiwgkB,CAAC;;;;;;;;2BAjCvwgkB,MAAM;0BACP,MAAM,QAAQ,MAAM,iBAAiB,MAAM;MAM7D;IAEF;;;;OAIG;IACH,QAAQ,CAAC,IAAI;6BACU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;6BAIvD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;sBAI9D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;6BAI/C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;MAI5E;CACH"}
package/dist/index.d.ts CHANGED
@@ -46,7 +46,7 @@
46
46
  * never an untrusted browser.
47
47
  */
48
48
  /** The published package version. Mirrors `package.json`. */
49
- export declare const VERSION = "18.0.2-dev.1";
49
+ export declare const VERSION = "18.0.3-dev.1";
50
50
  export { LbCookieStore } from './lb-cookie-store.js';
51
51
  export { CrowdyClient, createCrowdyClient, type CrowdyClientConfig, } from './crowdy-client.js';
52
52
  export { CROWDY_DEFAULT_TIER, CROWDY_DEFAULT_HOST, CROWDY_DEFAULT_HTTP_ORIGIN, CROWDY_DEFAULT_WS_ORIGIN, } from './default-origin.js';
package/dist/index.js CHANGED
@@ -46,7 +46,7 @@
46
46
  * never an untrusted browser.
47
47
  */
48
48
  /** The published package version. Mirrors `package.json`. */
49
- export const VERSION = '18.0.2-dev.1';
49
+ export const VERSION = '18.0.3-dev.1';
50
50
  export { LbCookieStore } from './lb-cookie-store.js';
51
51
  export { CrowdyClient, createCrowdyClient, } from './crowdy-client.js';
52
52
  // The tier this build defaults to, exported so a consumer can PRINT what it is
@@ -1 +1 @@
1
- {"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../src/kit/social.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../src/kit/social.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crowdedkingdoms/crowdyjs",
3
- "version": "18.0.2-dev.1",
3
+ "version": "18.0.3-dev.1",
4
4
  "description": "Browser-first Crowded Kingdoms SDK with GraphQL, realtime, and local Rust authoring support",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",