@jgengine/convex 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { defineSchema, internalMutationGeneric, mutationGeneric, queryGeneric, } from "convex/server";
2
2
  import { ConvexError, v } from "convex/values";
3
3
  import { INPUT_COMMAND } from "@jgengine/core/runtime/hostedGameRunner";
4
- import { createHostedWorldSession, } from "@jgengine/core/runtime/hostedWorldSession";
4
+ import { createHostedWorldSessionAsync, } from "@jgengine/core/runtime/hostedWorldSession";
5
5
  import { commitIfRevisionMatch } from "./occ.js";
6
6
  import { jgengineHostedTables, resolveActor } from "./server.js";
7
7
  /**
@@ -10,14 +10,14 @@ import { jgengineHostedTables, resolveActor } from "./server.js";
10
10
  * members and replay held inputs, run the op, then persist the snapshot at `revision + 1` iff the world changed.
11
11
  * @internal
12
12
  */
13
- export function invokeHostedWorld(invocation) {
13
+ export async function invokeHostedWorld(invocation) {
14
14
  const { game, store, members = [], inputs = {}, now, op } = invocation;
15
- const loaded = store.load();
15
+ const loaded = await store.load();
16
16
  const loadedJson = loaded === null ? null : JSON.stringify(loaded.snapshot);
17
- const session = createHostedWorldSession({
17
+ const session = await createHostedWorldSessionAsync({
18
18
  definition: game.definition,
19
19
  content: game.content,
20
- store: { load: () => loaded, save: () => { } },
20
+ store: { load: async () => loaded, save: async () => { } },
21
21
  ...(now === undefined ? {} : { now }),
22
22
  ...(game.models === undefined ? {} : { models: game.models }),
23
23
  });
@@ -32,7 +32,7 @@ export function invokeHostedWorld(invocation) {
32
32
  return { value, revision: baseRevision, changed: false, members: session.members() };
33
33
  }
34
34
  const record = { snapshot, revision: baseRevision + 1 };
35
- store.save(record);
35
+ await store.save(record);
36
36
  return { value, revision: record.revision, changed: true, members: session.members() };
37
37
  }
38
38
  const hostedSchemaForTypes = defineSchema(jgengineHostedTables());
@@ -55,8 +55,8 @@ function worldStoreForRow(row) {
55
55
  let captured = null;
56
56
  return {
57
57
  store: {
58
- load: () => loaded,
59
- save(record) {
58
+ async load() { return loaded; },
59
+ async save(record) {
60
60
  captured = record;
61
61
  },
62
62
  },
@@ -155,7 +155,7 @@ export function createHostedGameServerFunctions(options) {
155
155
  const row = await getWorldRow(ctx, args.gameId, serverId);
156
156
  const isNew = !(row?.memberUserIds ?? []).includes(actorUserId);
157
157
  const { store, captured } = worldStoreForRow(row);
158
- const outcome = invokeHostedWorld({
158
+ const outcome = await invokeHostedWorld({
159
159
  game,
160
160
  store,
161
161
  members: row?.memberUserIds ?? [],
@@ -193,7 +193,7 @@ export function createHostedGameServerFunctions(options) {
193
193
  return null;
194
194
  const game = resolveGame(args.gameId);
195
195
  const { store, captured } = worldStoreForRow(row);
196
- const outcome = invokeHostedWorld({
196
+ const outcome = await invokeHostedWorld({
197
197
  game,
198
198
  store,
199
199
  members: row.memberUserIds,
@@ -245,7 +245,7 @@ export function createHostedGameServerFunctions(options) {
245
245
  const game = resolveGame(args.gameId);
246
246
  const loadedRevision = row.revision;
247
247
  const { store, captured } = worldStoreForRow(row);
248
- const outcome = invokeHostedWorld({
248
+ const outcome = await invokeHostedWorld({
249
249
  game,
250
250
  store,
251
251
  members: row.memberUserIds,
@@ -319,7 +319,7 @@ export function createHostedGameServerFunctions(options) {
319
319
  continue;
320
320
  const elapsedMs = nowMs - row.tickAnchorMs;
321
321
  const { store, captured } = worldStoreForRow(row);
322
- const outcome = invokeHostedWorld({
322
+ const outcome = await invokeHostedWorld({
323
323
  game,
324
324
  store,
325
325
  members: row.memberUserIds,