@crowdedkingdoms/crowdyjs 18.0.1-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.
- package/MIGRATION.md +51 -0
- package/README.md +24 -1
- package/dist/crowdy-dsh/bridge.d.ts +6 -4
- package/dist/crowdy-dsh/bridge.d.ts.map +1 -1
- package/dist/crowdy-dsh/bridge.js +14 -10
- package/dist/crowdy-dsh/pane.d.ts +5 -4
- package/dist/crowdy-dsh/pane.d.ts.map +1 -1
- package/dist/crowdy-dsh/pane.js +12 -8
- package/dist/crowdy-studio/controller.d.ts.map +1 -1
- package/dist/crowdy-studio/controller.js +8 -1
- package/dist/domains/exec.d.ts +15 -0
- package/dist/domains/exec.d.ts.map +1 -1
- package/dist/domains/exec.js +25 -2
- package/dist/generated/graphql.d.ts +33 -1
- package/dist/generated/graphql.d.ts.map +1 -1
- package/dist/generated/graphql.js +2 -0
- package/dist/grid-mods/exec-client-halves.d.ts +39 -5
- package/dist/grid-mods/exec-client-halves.d.ts.map +1 -1
- package/dist/grid-mods/exec-client-halves.js +125 -9
- package/dist/grid-mods/grid-host-calls.d.ts +19 -3
- package/dist/grid-mods/grid-host-calls.d.ts.map +1 -1
- package/dist/grid-mods/grid-host-calls.js +40 -10
- package/dist/grid-mods/index.d.ts +1 -1
- package/dist/grid-mods/index.d.ts.map +1 -1
- package/dist/grid-mods/index.js +1 -1
- package/dist/grid-scope.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/kit/social.d.ts.map +1 -1
- package/dist/player-runtime/glue-runtime.d.ts +9 -0
- package/dist/player-runtime/glue-runtime.d.ts.map +1 -1
- package/dist/player-runtime/glue-runtime.js +21 -2
- package/dist/player-runtime/player-code-broker.d.ts.map +1 -1
- package/dist/player-runtime/player-code-broker.js +18 -1
- package/package.json +1 -1
|
@@ -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" } }] } }] };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ExecAPI, type ExecClientCapabilitySummary, type ExecGridClientMod } from '../domains/exec.js';
|
|
2
2
|
import { type PlayerCodeBrokerOptions, type PlayerCodeGridBounds, type PlayerCodeHostCall, type PlayerCodeLogLine, type PlayerCodePresentation } from '../player-runtime/player-code-broker.js';
|
|
3
3
|
/** The grid a player stands in: its id and chunk box. */
|
|
4
4
|
export type ExecClientHalvesGrid = PlayerCodeGridBounds & {
|
|
@@ -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
|
|
28
|
-
* the
|
|
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
|
|
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":"AAAA,OAAO,KAAK,
|
|
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,3 +1,4 @@
|
|
|
1
|
+
import { isNameList, } from '../domains/exec.js';
|
|
1
2
|
import { CrowdyGraphQLError, CrowdyProtocolError } from '../errors.js';
|
|
2
3
|
import { PlayerCodeBroker, } from '../player-runtime/player-code-broker.js';
|
|
3
4
|
const identity = (m) => `${m.modId}\u0000${m.digest}\u0000${m.capabilityHash}\u0000${m.tickIntervalMs}`;
|
|
@@ -42,6 +43,11 @@ export class ExecClientHalves {
|
|
|
42
43
|
this.retryAt = new Map();
|
|
43
44
|
this.declined = new Set();
|
|
44
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();
|
|
45
51
|
this.inFlight = null;
|
|
46
52
|
}
|
|
47
53
|
/** The grid the player stands in, or null. Any change stops every CLIENT half of the old one. */
|
|
@@ -51,8 +57,7 @@ export class ExecClientHalves {
|
|
|
51
57
|
this.stopAll('left-grid');
|
|
52
58
|
this.grid = grid ? { ...grid } : null;
|
|
53
59
|
this.generation++;
|
|
54
|
-
this.
|
|
55
|
-
this.approved.clear();
|
|
60
|
+
this.forgetGrid();
|
|
56
61
|
}
|
|
57
62
|
/** The CLIENT halves running now. */
|
|
58
63
|
get running() {
|
|
@@ -88,13 +93,109 @@ export class ExecClientHalves {
|
|
|
88
93
|
}
|
|
89
94
|
return worker.broker.invoke(payload, options);
|
|
90
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
|
+
}
|
|
91
169
|
/** Stops every CLIENT half and leaves the grid; the module cache stays. */
|
|
92
170
|
stop() {
|
|
93
171
|
this.stopAll('stopped');
|
|
94
172
|
this.grid = null;
|
|
95
173
|
this.generation++;
|
|
174
|
+
this.forgetGrid();
|
|
175
|
+
}
|
|
176
|
+
forgetGrid() {
|
|
96
177
|
this.declined.clear();
|
|
97
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
|
+
}
|
|
98
199
|
}
|
|
99
200
|
async reconcile(generation) {
|
|
100
201
|
const grid = this.grid;
|
|
@@ -105,6 +206,7 @@ export class ExecClientHalves {
|
|
|
105
206
|
let listed = await exec.gridClientMods(appId, grid.gridId);
|
|
106
207
|
if (!current())
|
|
107
208
|
return;
|
|
209
|
+
this.listed = listed;
|
|
108
210
|
this.stopStale(listed);
|
|
109
211
|
if (await this.askAbout(listed, grid, current)) {
|
|
110
212
|
if (!current())
|
|
@@ -112,6 +214,7 @@ export class ExecClientHalves {
|
|
|
112
214
|
listed = await exec.gridClientMods(appId, grid.gridId);
|
|
113
215
|
if (!current())
|
|
114
216
|
return;
|
|
217
|
+
this.listed = listed;
|
|
115
218
|
this.stopStale(listed);
|
|
116
219
|
}
|
|
117
220
|
for (const mod of listed) {
|
|
@@ -203,14 +306,18 @@ export class ExecClientHalves {
|
|
|
203
306
|
// registered is retried on the next refresh without asking again.
|
|
204
307
|
this.approved.add(key);
|
|
205
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;
|
|
206
313
|
try {
|
|
207
314
|
const { exec, appId } = this.options;
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
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;
|
|
214
321
|
this.approved.delete(key);
|
|
215
322
|
agreed = true;
|
|
216
323
|
}
|
|
@@ -221,6 +328,10 @@ export class ExecClientHalves {
|
|
|
221
328
|
this.approved.delete(key);
|
|
222
329
|
this.options.onError?.({ mod: prompt.mods[0], stage: 'consent', reason, error });
|
|
223
330
|
}
|
|
331
|
+
finally {
|
|
332
|
+
if (this.pendingAgreement === agreement)
|
|
333
|
+
this.pendingAgreement = null;
|
|
334
|
+
}
|
|
224
335
|
}
|
|
225
336
|
return agreed;
|
|
226
337
|
}
|
|
@@ -228,7 +339,7 @@ export class ExecClientHalves {
|
|
|
228
339
|
// What the player consented to, and what the served artifact itself lists, bound the
|
|
229
340
|
// module's host calls in the broker.
|
|
230
341
|
const consented = mod.capabilitySummary?.hostFunctions;
|
|
231
|
-
if (!
|
|
342
|
+
if (!isNameList(consented)) {
|
|
232
343
|
this.fail(mod, 'start', new CrowdyProtocolError({
|
|
233
344
|
message: `CLIENT half of mod ${mod.modId}: its capability summary does not parse`,
|
|
234
345
|
}));
|
|
@@ -264,6 +375,9 @@ export class ExecClientHalves {
|
|
|
264
375
|
return;
|
|
265
376
|
}
|
|
266
377
|
}
|
|
378
|
+
// Taken back while it was fetched.
|
|
379
|
+
if (!this.wanted(mod))
|
|
380
|
+
return;
|
|
267
381
|
const served = module.hostFunctions;
|
|
268
382
|
const broker = (this.options.brokerFactory ?? ((o) => new PlayerCodeBroker(o)))({
|
|
269
383
|
engine: 'ck-exec',
|
|
@@ -324,6 +438,8 @@ export class ExecClientHalves {
|
|
|
324
438
|
}
|
|
325
439
|
}
|
|
326
440
|
wanted(mod) {
|
|
441
|
+
if (this.revoked.has(identity(mod)))
|
|
442
|
+
return false;
|
|
327
443
|
return this.options.filter ? this.options.filter(mod) : true;
|
|
328
444
|
}
|
|
329
445
|
stopWorker(modId, reason) {
|
|
@@ -22,9 +22,10 @@ export interface GridHostLocal {
|
|
|
22
22
|
*/
|
|
23
23
|
avatarChunk?(avatarId: string): GridChunk | null | undefined | Promise<GridChunk | null | undefined>;
|
|
24
24
|
/**
|
|
25
|
-
* The
|
|
25
|
+
* The code-permission keys the visiting player holds on this grid, as the game knows them
|
|
26
26
|
* (where Crowdy Studio's `targetPermissions` come from). `grid_permission_check` answers from
|
|
27
|
-
* these, for that player
|
|
27
|
+
* these, for that player, this grid and {@link GRID_PERMISSION_CHECK_KEYS} only, and refuses
|
|
28
|
+
* any other key; the server still enforces the permissions.
|
|
28
29
|
*/
|
|
29
30
|
gridPermissionKeys?(): Iterable<string> | Promise<Iterable<string>>;
|
|
30
31
|
setVoxel?(input: {
|
|
@@ -64,9 +65,24 @@ export interface GridHostCallsOptions {
|
|
|
64
65
|
* can post to anyway.
|
|
65
66
|
*/
|
|
66
67
|
channelFilter?: (channelId: string) => boolean | Promise<boolean>;
|
|
67
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* The name of the actor a mod's spatial and channel sends go out as when it names none (its
|
|
70
|
+
* `uuidHex` otherwise). Either way the wire uuid is {@link clientHalfActorUuid} of that name
|
|
71
|
+
* on this grid, so a mod never sends as the player's avatar or as anyone else's.
|
|
72
|
+
*/
|
|
68
73
|
actorUuid?: string;
|
|
69
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* The permission keys `grid_permission_check` answers for: the player's code-permission keys,
|
|
77
|
+
* the only ones a game knows for a grid. Any other key is refused rather than answered false.
|
|
78
|
+
*/
|
|
79
|
+
export declare const GRID_PERMISSION_CHECK_KEYS: readonly string[];
|
|
80
|
+
/**
|
|
81
|
+
* The actor uuid a mod's spatial and channel sends carry on grid `gridId` for the actor it calls
|
|
82
|
+
* `name`: the first 16 bytes of SHA-256 over both, as 32 lowercase hex characters. No name a mod
|
|
83
|
+
* chooses maps to another uuid, so it cannot move a player's avatar or speak as one.
|
|
84
|
+
*/
|
|
85
|
+
export declare function clientHalfActorUuid(gridId: string, name: string): Promise<string>;
|
|
70
86
|
/** Thrown for a host call this game does not offer in the browser. */
|
|
71
87
|
export declare class GridHostCallRefused extends Error {
|
|
72
88
|
readonly fn: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid-host-calls.d.ts","sourceRoot":"","sources":["../../src/grid-mods/grid-host-calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACtF,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF;;;OAGG;IACH,WAAW,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrG
|
|
1
|
+
{"version":3,"file":"grid-host-calls.d.ts","sourceRoot":"","sources":["../../src/grid-mods/grid-host-calls.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The permission keys `grid_permission_check` answers for: the player's code-permission keys,
|
|
3
|
+
* the only ones a game knows for a grid. Any other key is refused rather than answered false.
|
|
4
|
+
*/
|
|
5
|
+
export const GRID_PERMISSION_CHECK_KEYS = [
|
|
6
|
+
'write_server_code',
|
|
7
|
+
'run_server_code',
|
|
8
|
+
'write_client_code',
|
|
9
|
+
'run_client_code',
|
|
10
|
+
];
|
|
11
|
+
/**
|
|
12
|
+
* The actor uuid a mod's spatial and channel sends carry on grid `gridId` for the actor it calls
|
|
13
|
+
* `name`: the first 16 bytes of SHA-256 over both, as 32 lowercase hex characters. No name a mod
|
|
14
|
+
* chooses maps to another uuid, so it cannot move a player's avatar or speak as one.
|
|
15
|
+
*/
|
|
16
|
+
export async function clientHalfActorUuid(gridId, name) {
|
|
17
|
+
const input = new TextEncoder().encode(`crowdy/client-half-actor/v1\u0000${gridId}\u0000${name}`);
|
|
18
|
+
const digest = new Uint8Array(await crypto.subtle.digest('SHA-256', input));
|
|
19
|
+
return Array.from(digest.subarray(0, 16), (b) => b.toString(16).padStart(2, '0')).join('');
|
|
20
|
+
}
|
|
1
21
|
/** Thrown for a host call this game does not offer in the browser. */
|
|
2
22
|
export class GridHostCallRefused extends Error {
|
|
3
23
|
constructor(fn, reason = 'not offered in the browser') {
|
|
@@ -29,9 +49,9 @@ export function createGridHostCalls(options) {
|
|
|
29
49
|
const channelAllowed = async (channelId) => options.channelFilter
|
|
30
50
|
? options.channelFilter(channelId)
|
|
31
51
|
: (await ownChannels()).has(channelId);
|
|
32
|
-
const uuid = (args) => typeof args.uuidHex === 'string' && /^[0-9a-f]{64}$/i.test(args.uuidHex)
|
|
52
|
+
const uuid = (args) => clientHalfActorUuid(scope.gridId, typeof args.uuidHex === 'string' && /^[0-9a-f]{64}$/i.test(args.uuidHex)
|
|
33
53
|
? hexToAscii(args.uuidHex)
|
|
34
|
-
: (options.actorUuid ?? '
|
|
54
|
+
: (options.actorUuid ?? ''));
|
|
35
55
|
return async ({ fn, args }) => {
|
|
36
56
|
switch (fn) {
|
|
37
57
|
case 'chunk_get': {
|
|
@@ -76,12 +96,14 @@ export function createGridHostCalls(options) {
|
|
|
76
96
|
case 'voxel_set': {
|
|
77
97
|
const chunk = coords(args.chunkX, args.chunkY, args.chunkZ);
|
|
78
98
|
scope.assertContains({ x: chunk[0], y: chunk[1], z: chunk[2] });
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
99
|
+
const vx = intIn(args.voxelX ?? 0, 0, 15);
|
|
100
|
+
const vy = intIn(args.voxelY ?? 0, 0, 15);
|
|
101
|
+
const vz = intIn(args.voxelZ ?? 0, 0, 15);
|
|
102
|
+
const voxelType = intIn(args.voxelType ?? 0, 0, 255);
|
|
103
|
+
if (vx === null || vy === null || vz === null || voxelType === null) {
|
|
104
|
+
throw new GridHostCallRefused(fn, 'needs a voxel inside its chunk (0-15) and a voxel type 0-255');
|
|
105
|
+
}
|
|
106
|
+
const voxel = { x: vx, y: vy, z: vz };
|
|
85
107
|
const state = typeof args.stateBase64 === 'string' ? args.stateBase64 : undefined;
|
|
86
108
|
if (local?.setVoxel) {
|
|
87
109
|
return {
|
|
@@ -110,7 +132,7 @@ export function createGridHostCalls(options) {
|
|
|
110
132
|
const chunk = { x: x.toString(), y: y.toString(), z: z.toString() };
|
|
111
133
|
const payload = String(args.payloadBase64 ?? '');
|
|
112
134
|
const distance = Math.max(0, Math.min(8, Number(args.distance ?? 0) | 0));
|
|
113
|
-
const common = { chunk, uuid: uuid(args), distance };
|
|
135
|
+
const common = { chunk, uuid: await uuid(args), distance };
|
|
114
136
|
if (kind === 'actor')
|
|
115
137
|
return scope.send.actorUpdate({ ...common, state: payload });
|
|
116
138
|
if (kind === 'text') {
|
|
@@ -131,7 +153,7 @@ export function createGridHostCalls(options) {
|
|
|
131
153
|
if (!(await channelAllowed(channelId))) {
|
|
132
154
|
throw new GridHostCallRefused(fn, 'targets a channel outside this grid');
|
|
133
155
|
}
|
|
134
|
-
return scope.channels.send(channelId, uuid(args), String(args.payloadBase64 ?? ''));
|
|
156
|
+
return scope.channels.send(channelId, await uuid(args), String(args.payloadBase64 ?? ''));
|
|
135
157
|
}
|
|
136
158
|
case 'avatar_state_get': {
|
|
137
159
|
const avatarId = decimalId(args.avatarId);
|
|
@@ -160,6 +182,9 @@ export function createGridHostCalls(options) {
|
|
|
160
182
|
if (typeof key !== 'string' || !PERMISSION_KEY.test(key)) {
|
|
161
183
|
throw new GridHostCallRefused(fn, 'needs a permission key');
|
|
162
184
|
}
|
|
185
|
+
if (!GRID_PERMISSION_CHECK_KEYS.includes(key)) {
|
|
186
|
+
throw new GridHostCallRefused(fn, `cannot answer for '${key}': the page knows only the player's code-permission keys (${GRID_PERMISSION_CHECK_KEYS.join(', ')})`);
|
|
187
|
+
}
|
|
163
188
|
return new Set(await local.gridPermissionKeys()).has(key);
|
|
164
189
|
}
|
|
165
190
|
case 'user_state_get':
|
|
@@ -188,6 +213,11 @@ function decimalId(value) {
|
|
|
188
213
|
function coords(x, y, z) {
|
|
189
214
|
return [BigInt(x), BigInt(y), BigInt(z)];
|
|
190
215
|
}
|
|
216
|
+
/** An integer in [lo, hi] (a number, or a decimal string), else null. */
|
|
217
|
+
function intIn(value, lo, hi) {
|
|
218
|
+
const n = typeof value === 'number' ? value : typeof value === 'string' && /^-?\d+$/.test(value) ? Number(value) : NaN;
|
|
219
|
+
return Number.isInteger(n) && n >= lo && n <= hi ? n : null;
|
|
220
|
+
}
|
|
191
221
|
function clampInt(value, lo, hi) {
|
|
192
222
|
const n = Number(value ?? lo);
|
|
193
223
|
return Number.isFinite(n) ? Math.max(lo, Math.min(hi, Math.trunc(n))) : lo;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createGridHostCalls, GridHostCallRefused, type GridHostCallsOptions, type GridHostLocal, } from './grid-host-calls.js';
|
|
1
|
+
export { clientHalfActorUuid, createGridHostCalls, GRID_PERMISSION_CHECK_KEYS, GridHostCallRefused, type GridHostCallsOptions, type GridHostLocal, } from './grid-host-calls.js';
|
|
2
2
|
export { startGridMod, type GridModSpec, type WasmGridModSpec, type ProgramGridModSpec, type RunningGridMod, type StartGridModOptions, } from './mod-runtime.js';
|
|
3
3
|
export { ExecClientHalves, type ExecClientHalvesGrid, type ExecClientHalvesOptions, type ExecClientHalfBroker, type ExecClientHalfError, type ExecClientHalfPrompt, type ExecClientHalfStopReason, } from './exec-client-halves.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/grid-mods/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/grid-mods/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC"}
|
package/dist/grid-mods/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createGridHostCalls, GridHostCallRefused, } from './grid-host-calls.js';
|
|
1
|
+
export { clientHalfActorUuid, createGridHostCalls, GRID_PERMISSION_CHECK_KEYS, GridHostCallRefused, } from './grid-host-calls.js';
|
|
2
2
|
export { startGridMod, } from './mod-runtime.js';
|
|
3
3
|
export { ExecClientHalves, } from './exec-client-halves.js';
|
package/dist/grid-scope.d.ts.map
CHANGED
|
@@ -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;;;;;;;;
|
|
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.
|
|
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';
|
|
@@ -106,7 +106,7 @@ export { GridScope, GridScopeError, type GridBox, type GridChunk, type GridScope
|
|
|
106
106
|
export { GridsAPI, type GridToken, type GridChannel } from './domains/grids.js';
|
|
107
107
|
export { GENERATED_HOST_CATALOG, type HostCatalog, type HostCatalogFunction, } from './player-runtime/host-catalog.generated.js';
|
|
108
108
|
export { GLUE_HOST_FUNCTIONS, parseFuelBudget, runWithWatchdog, GlueRuntime, startGlueWorker, type GlueInitMessage, type GlueDispatchResult, } from './player-runtime/player-glue-worker.js';
|
|
109
|
-
export { EXEC_CLIENT_ABI_IMPORTS, GLUE_LOG_MAX_BYTES, type GuestExports, type GlueRuntimeOptions, } from './player-runtime/glue-runtime.js';
|
|
109
|
+
export { EXEC_CLIENT_ABI_IMPORTS, GLUE_HOST_CALL_REQUEST_MAX_BYTES, GLUE_INVOKE_REPLY_MAX_BYTES, GLUE_LOG_MAX_BYTES, GLUE_STATE_MAX_BYTES, type GuestExports, type GlueRuntimeOptions, } from './player-runtime/glue-runtime.js';
|
|
110
110
|
export { createGlueSab, wrapGlueSab, armGlueRequest, waitAndReadGlueReply, writeGlueResult, writeGlueReply, glueEncoder, glueDecoder, type GlueSab, } from './player-runtime/glue-sab.js';
|
|
111
111
|
export * from './crowdy-studio/index.js';
|
|
112
112
|
export { createMintRediscover, type MintCapablePortal, } from './rediscover.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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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"}
|