@crowdedkingdoms/crowdyjs 8.4.2 → 8.4.4

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/README.md CHANGED
@@ -16,34 +16,26 @@ CrowdyJS v4 targets browsers by default and uses native `fetch`, `WebSocket`, `c
16
16
 
17
17
  ## Standalone builds and schema refresh
18
18
 
19
- CrowdyJS is a standalone public package. A clean external clone must be able to
20
- run `npm install && npm run build` without sibling CKS API repos checked out.
21
- For that reason the build uses committed schema artifacts in this repo:
19
+ CrowdyJS is a standalone public package: a clean clone builds with
20
+ `npm install && npm run build` using the schema artifacts committed to this
21
+ repo no other repositories and no network access required:
22
22
 
23
23
  - `schema.gql` — merged Management API + Game API SDL.
24
24
  - `src/generated/graphql.ts` — generated TypeScript operation types.
25
25
 
26
- Schema refresh is explicit:
26
+ Schema refresh (maintainers) is explicit, from the published SDLs
27
+ ([management-api.graphql](https://docs.crowdedkingdoms.com/schema/management-api.graphql),
28
+ [game-api.graphql](https://docs.crowdedkingdoms.com/schema/game-api.graphql)):
27
29
 
28
30
  ```bash
29
- # Refresh from the published production SDLs.
30
31
  npm run schema:sync:prod
31
32
  npm run codegen
32
-
33
- # Or, inside the CKS wrapper repo, refresh from local API checkouts.
34
- npm run schema:sync:local
35
- npm run codegen
36
-
37
- # Or use exact file/URL sources.
38
- npm run schema:sync:paths -- \
39
- --management ../cks-management-api/schema.gql \
40
- --game ../cks-game-api/schema.gql
41
- npm run codegen
42
33
  ```
43
34
 
44
- Commit `schema.gql` and `src/generated/graphql.ts` together whenever the public
45
- GraphQL surface changes. Do not make `npm run build` depend on local API repos or
46
- network access; use `npm run check:schema` in CI/release work to detect drift.
35
+ (`npm run schema:sync:paths -- --management <file-or-url> --game <file-or-url>`
36
+ accepts explicit sources.) Commit `schema.gql` and `src/generated/graphql.ts`
37
+ together whenever the public GraphQL surface changes; `npm run check:schema`
38
+ detects drift in CI/release work.
47
39
 
48
40
  ## Quick start
49
41
 
package/dist/index.d.ts CHANGED
@@ -45,7 +45,7 @@
45
45
  * or internal tooling, never an untrusted browser.
46
46
  */
47
47
  /** The published package version. Mirrors `package.json`. */
48
- export declare const VERSION = "8.4.2";
48
+ export declare const VERSION = "8.4.4";
49
49
  export { LbCookieStore } from './lb-cookie-store.js';
50
50
  export { CrowdyClient, createCrowdyClient, type CrowdyClientConfig, } from './crowdy-client.js';
51
51
  export { BrowserLocalStorageTokenStore, SessionStore, type SessionListener, type TokenStore, } from './session.js';
package/dist/index.js CHANGED
@@ -45,7 +45,7 @@
45
45
  * or internal tooling, never an untrusted browser.
46
46
  */
47
47
  /** The published package version. Mirrors `package.json`. */
48
- export const VERSION = '8.4.2';
48
+ export const VERSION = '8.4.4';
49
49
  export { LbCookieStore } from './lb-cookie-store.js';
50
50
  export { CrowdyClient, createCrowdyClient, } from './crowdy-client.js';
51
51
  export { BrowserLocalStorageTokenStore, SessionStore, } from './session.js';
@@ -53,9 +53,14 @@ export interface ChunkStoreConfig<TVoxelState = string, TChunkState = string> {
53
53
  * Called for chunks the server has never stored. Return a 4096-byte dense
54
54
  * grid to seed it locally (deterministic client-side worldgen) — seeded
55
55
  * chunks are queued for write-back so the world persists and stays
56
- * identical for everyone.
56
+ * identical for everyone. Return `{ voxels, writeBack: false }` to seed
57
+ * locally WITHOUT persisting (e.g. outside your world's write-back radius
58
+ * or budget).
57
59
  */
58
- onMissing?: (coord: ChunkCoord) => Uint8Array | undefined | void;
60
+ onMissing?: (coord: ChunkCoord) => Uint8Array | {
61
+ voxels: Uint8Array;
62
+ writeBack?: boolean;
63
+ } | undefined | void;
59
64
  /**
60
65
  * Write-back cadence: one dirty chunk persists per tick (throttled, like
61
66
  * the proven BWF pattern). Defaults to 700 ms; `false` disables the timer
@@ -1 +1 @@
1
- {"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../../src/stores/chunks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../../src/stores/chunks.ts"],"names":[],"mappings":"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"}
@@ -297,8 +297,12 @@ export class ChunkStore {
297
297
  chunk.loadState = 'missing';
298
298
  this.touch(chunk);
299
299
  const generated = this.config.onMissing?.(coord);
300
- if (generated)
300
+ if (generated instanceof Uint8Array) {
301
301
  this.seed(coord, generated);
302
+ }
303
+ else if (generated) {
304
+ this.seed(coord, generated.voxels, { writeBack: generated.writeBack ?? true });
305
+ }
302
306
  }
303
307
  applyVoxel(chunk, x, y, z, voxelType, encodedState, decodedState) {
304
308
  if (!chunk.voxels)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crowdedkingdoms/crowdyjs",
3
- "version": "8.4.2",
3
+ "version": "8.4.4",
4
4
  "description": "Client SDK for Crowded Kingdoms GraphQL API with UDP proxy support",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",