@crowdedkingdoms/crowdyjs 8.4.0 → 8.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/graphql.d.ts +3 -3
- package/dist/generated/graphql.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/kit/blueprints/plots.d.ts +10 -1
- package/dist/kit/blueprints/plots.d.ts.map +1 -1
- package/dist/kit/blueprints/plots.js +11 -6
- package/dist/kit/npcs.d.ts.map +1 -1
- package/dist/kit/plots.d.ts +5 -1
- package/dist/kit/plots.d.ts.map +1 -1
- package/dist/kit/social.d.ts.map +1 -1
- package/dist/stores/chunks.d.ts +13 -1
- package/dist/stores/chunks.d.ts.map +1 -1
- package/dist/stores/chunks.js +5 -4
- package/package.json +1 -1
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.
|
|
48
|
+
export declare const VERSION = "8.4.2";
|
|
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.
|
|
48
|
+
export const VERSION = '8.4.2';
|
|
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';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type KitBlueprint, type KitInvokePolicy } from './core.js';
|
|
1
|
+
import { type KitBlueprint, type KitInvokePolicy, type KitOwnerIdKind } from './core.js';
|
|
2
2
|
/** Options for {@link plotBlueprint}. */
|
|
3
3
|
export interface PlotBlueprintOptions {
|
|
4
4
|
/** Plot container type name. Defaults to `'Plot'`. */
|
|
@@ -28,6 +28,15 @@ export interface PlotBlueprintOptions {
|
|
|
28
28
|
buyPolicyExtra?: KitInvokePolicy;
|
|
29
29
|
/** Extra policy rule AND'ed into `rent_plot`. */
|
|
30
30
|
rentPolicyExtra?: KitInvokePolicy;
|
|
31
|
+
/**
|
|
32
|
+
* How the `owner_user_id` mirrors are typed on the plot AND the wallet
|
|
33
|
+
* (see the kit owner-mirroring convention). Defaults to `'int'` (the kit
|
|
34
|
+
* standard); set `'string'` for models that mirrored owners as strings
|
|
35
|
+
* (e.g. Blocks with Friends) — generated guards then compare via
|
|
36
|
+
* `to_string($caller_user_id)`, buying writes the owner as a string, and
|
|
37
|
+
* an empty string means "for sale".
|
|
38
|
+
*/
|
|
39
|
+
ownerIdKind?: KitOwnerIdKind;
|
|
31
40
|
}
|
|
32
41
|
/** Names derived by {@link plotBlueprint} for a given plot type. */
|
|
33
42
|
export interface PlotNames {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plots.d.ts","sourceRoot":"","sources":["../../../src/kit/blueprints/plots.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"plots.d.ts","sourceRoot":"","sources":["../../../src/kit/blueprints/plots.ts"],"names":[],"mappings":"AAKA,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AAEnB,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,iDAAiD;IACjD,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B;AAED,oEAAoE;AACpE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sFAAsF;AACtF,wBAAgB,SAAS,CAAC,QAAQ,SAAS,GAAG,SAAS,CAQtD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,YAAY,CA+I9E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { andPolicies, kitPolicyJson, toSnakeCase, } from './core.js';
|
|
1
|
+
import { andPolicies, kitPolicyJson, ownerEqualsCaller, toSnakeCase, } from './core.js';
|
|
2
2
|
/** Compute the type/function names a plot blueprint (and its runtime helper) uses. */
|
|
3
3
|
export function plotNames(typeName = 'Plot') {
|
|
4
4
|
const snake = toSnakeCase(typeName);
|
|
@@ -27,12 +27,13 @@ export function plotBlueprint(options = {}) {
|
|
|
27
27
|
const currency = options.currencyProperty ?? 'gold';
|
|
28
28
|
const walletOwner = options.walletOwnerProperty ?? 'owner_user_id';
|
|
29
29
|
const rentable = options.rentable ?? false;
|
|
30
|
+
const kind = options.ownerIdKind ?? 'int';
|
|
30
31
|
const walletParam = [
|
|
31
32
|
{ name: 'wallet_id', valueType: 'container_ref', required: true },
|
|
32
33
|
];
|
|
33
34
|
const walletGuard = (priceExpr, extra) => kitPolicyJson(andPolicies({
|
|
34
35
|
type: 'condition',
|
|
35
|
-
expression: `ref($wallet_id).${walletOwner}
|
|
36
|
+
expression: `${ownerEqualsCaller(`ref($wallet_id).${walletOwner}`, kind)} && ref($wallet_id).${currency} >= ${priceExpr}`,
|
|
36
37
|
}, extra));
|
|
37
38
|
const propertyDefinitions = [
|
|
38
39
|
{ containerTypeName: names.plotType, key: 'grid_id', valueType: 'int' },
|
|
@@ -40,8 +41,8 @@ export function plotBlueprint(options = {}) {
|
|
|
40
41
|
{
|
|
41
42
|
containerTypeName: names.plotType,
|
|
42
43
|
key: 'owner_user_id',
|
|
43
|
-
valueType:
|
|
44
|
-
defaultValueJson: '0',
|
|
44
|
+
valueType: kind,
|
|
45
|
+
defaultValueJson: kind === 'string' ? '""' : '0',
|
|
45
46
|
},
|
|
46
47
|
];
|
|
47
48
|
if (rentable) {
|
|
@@ -69,7 +70,11 @@ export function plotBlueprint(options = {}) {
|
|
|
69
70
|
property: currency,
|
|
70
71
|
expression: `ref($wallet_id).${currency} - self.price`,
|
|
71
72
|
},
|
|
72
|
-
{
|
|
73
|
+
{
|
|
74
|
+
target: 'self',
|
|
75
|
+
property: 'owner_user_id',
|
|
76
|
+
expression: kind === 'string' ? 'to_string($caller_user_id)' : '$caller_user_id',
|
|
77
|
+
},
|
|
73
78
|
],
|
|
74
79
|
permissionEffects: [
|
|
75
80
|
{
|
|
@@ -98,7 +103,7 @@ export function plotBlueprint(options = {}) {
|
|
|
98
103
|
],
|
|
99
104
|
invokePolicyJson: kitPolicyJson({
|
|
100
105
|
type: 'condition',
|
|
101
|
-
expression: 'self.owner_user_id
|
|
106
|
+
expression: ownerEqualsCaller('self.owner_user_id', kind),
|
|
102
107
|
}),
|
|
103
108
|
description: "Revoke a user's permissions on this plot (owner-gated; admins bypass).",
|
|
104
109
|
},
|
package/dist/kit/npcs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npcs.d.ts","sourceRoot":"","sources":["../../src/kit/npcs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG1E,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,OAAO;IAIhB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAGf,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EACjC,SAAS,EAAE,YAAY,EACxC,OAAO,GAAE,cAAmB;IAK9B,0EAA0E;IACpE,KAAK,CAAC,KAAK,EAAE;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;;;;;;;;;;;IAuBD;;;;OAIG;IACG,IAAI,CAAC,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAclF,gDAAgD;IAC1C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ3C,8EAA8E;IACxE,MAAM,CAAC,cAAc,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;IAInC;;;OAGG;IACG,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQzD,6EAA6E;IACvE,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM;;;;;;;;;;;;sBA+
|
|
1
|
+
{"version":3,"file":"npcs.d.ts","sourceRoot":"","sources":["../../src/kit/npcs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG1E,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,OAAO;IAIhB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAGf,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EACjC,SAAS,EAAE,YAAY,EACxC,OAAO,GAAE,cAAmB;IAK9B,0EAA0E;IACpE,KAAK,CAAC,KAAK,EAAE;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;;;;;;;;;;;IAuBD;;;;OAIG;IACG,IAAI,CAAC,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAclF,gDAAgD;IAC1C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ3C,8EAA8E;IACxE,MAAM,CAAC,cAAc,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;IAInC;;;OAGG;IACG,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQzD,6EAA6E;IACvE,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM;;;;;;;;;;;;sBA+Byuic,CAAC;;;;;;;;;;IAxB5wic,2DAA2D;IACrD,IAAI,CAAC,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;;;;;;;;;;;;;;;;;;;;;;YAIzE,KAAK;CAkBpB"}
|
package/dist/kit/plots.d.ts
CHANGED
|
@@ -13,7 +13,11 @@ export interface KitPlot {
|
|
|
13
13
|
displayName: string;
|
|
14
14
|
gridId: number;
|
|
15
15
|
price: number;
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* 0 when unowned. Parsed numerically for both owner-mirror kinds: with
|
|
18
|
+
* `ownerIdKind: 'string'` blueprints the stored decimal string converts,
|
|
19
|
+
* and the for-sale sentinel `""` parses to 0.
|
|
20
|
+
*/
|
|
17
21
|
ownerUserId: number;
|
|
18
22
|
rentPrice?: number;
|
|
19
23
|
rentTtlSeconds?: number;
|
package/dist/kit/plots.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plots.d.ts","sourceRoot":"","sources":["../../src/kit/plots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAErB,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,iCAAiC;AACjC,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd
|
|
1
|
+
{"version":3,"file":"plots.d.ts","sourceRoot":"","sources":["../../src/kit/plots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAErB,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,iCAAiC;AACjC,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IAIjB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;gBAGf,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EACjC,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,WAAW,EACtC,OAAO,GAAE,eAAoB;IAK/B;;;;OAIG;IACG,MAAM,CAAC,KAAK,EAAE;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;QACnC,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAClC;;;;;;;;;;;IA0BD,iEAAiE;IAC3D,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IA2BhC;;;;OAIG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAS7E;;;OAGG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAS9E,uEAAuE;IACjE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAS/F;;;OAGG;IACG,QAAQ,CACZ,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAClC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC;CAQrB"}
|
package/dist/kit/social.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../src/kit/social.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvD,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,SAAS;IAMlB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAT3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAGlB,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EACjC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAC3B,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,WAAW,EACtC,OAAO,GAAE,gBAAqB;IAOhC,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,UAAU;IASlB,uDAAuD;YACzC,UAAU;IAuBxB,mDAAmD;YACrC,QAAQ;IAetB,sEAAsE;IACtE,QAAQ,CAAC,KAAK;QACZ,2EAA2E;uBACtD,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAAC;QAI1D,4BAA4B;qBACT,MAAM,KAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;QAIpE;;;WAGG;wBACmB,mBAAmB,UAAU,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;;;;;;;;
|
|
1
|
+
{"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../src/kit/social.ts"],"names":[],"mappings":"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"}
|
package/dist/stores/chunks.d.ts
CHANGED
|
@@ -17,7 +17,10 @@ export type ChunkLoadState = 'loading' | 'loaded' | 'missing' | 'seeded' | 'fail
|
|
|
17
17
|
export interface CachedChunk<TVoxelState = string, TChunkState = string> {
|
|
18
18
|
readonly key: string;
|
|
19
19
|
readonly coord: ChunkCoord;
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Dense voxel-type grid (4096 bytes), null when unknown. Indexed
|
|
22
|
+
* `x + y*16 + z*256` by default; see {@link ChunkStoreConfig.voxelIndex}.
|
|
23
|
+
*/
|
|
21
24
|
voxels: Uint8Array | null;
|
|
22
25
|
/** Sparse typed per-voxel state by voxel index. */
|
|
23
26
|
voxelStates: Map<number, TVoxelState>;
|
|
@@ -68,6 +71,14 @@ export interface ChunkStoreConfig<TVoxelState = string, TChunkState = string> {
|
|
|
68
71
|
* session's local actor automatically; a random uuid otherwise.
|
|
69
72
|
*/
|
|
70
73
|
actorUuid?: string | (() => string | null);
|
|
74
|
+
/**
|
|
75
|
+
* Within-chunk (x,y,z in 0-15) → dense-grid byte offset. Defaults to the
|
|
76
|
+
* platform-documented layout `x + y*16 + z*256`. Override for worlds whose
|
|
77
|
+
* existing dense blobs were written with a different convention (e.g.
|
|
78
|
+
* Blocks with Friends uses `y*256 + z*16 + x`) — the layout is opaque to
|
|
79
|
+
* the platform, so all clients of a world just have to agree.
|
|
80
|
+
*/
|
|
81
|
+
voxelIndex?: (x: number, y: number, z: number) => number;
|
|
71
82
|
/** Clock override for tests. Defaults to `Date.now`. */
|
|
72
83
|
now?: () => number;
|
|
73
84
|
}
|
|
@@ -113,6 +124,7 @@ export declare class ChunkStore<TVoxelState = string, TChunkState = string> {
|
|
|
113
124
|
private readonly hydrateStates;
|
|
114
125
|
private readonly now;
|
|
115
126
|
private readonly fallbackUuid;
|
|
127
|
+
private readonly voxelIndex;
|
|
116
128
|
private revisionValue;
|
|
117
129
|
private sequence;
|
|
118
130
|
constructor(ctx: WorldSessionContext, config?: ChunkStoreConfig<TVoxelState, TChunkState>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../../src/stores/chunks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAQL,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,wCAAwC;AACxC,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,QAAQ,CAAC;AAEb;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,WAAW,GAAG,MAAM,EAAE,WAAW,GAAG,MAAM;IACrE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B
|
|
1
|
+
{"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../../src/stores/chunks.ts"],"names":[],"mappings":"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"}
|
package/dist/stores/chunks.js
CHANGED
|
@@ -42,6 +42,7 @@ export class ChunkStore {
|
|
|
42
42
|
config.chunkStateCodec ?? rawCodec;
|
|
43
43
|
this.hydrateStates = config.hydrateVoxelStates ?? config.voxelStateCodec !== undefined;
|
|
44
44
|
this.now = config.now ?? Date.now;
|
|
45
|
+
this.voxelIndex = config.voxelIndex ?? voxelIndex;
|
|
45
46
|
// Realtime merge: live edits land in the cache as they replicate.
|
|
46
47
|
ctx.onDispose(ctx.on('voxelUpdate', (notification) => {
|
|
47
48
|
const coord = {
|
|
@@ -76,11 +77,11 @@ export class ChunkStore {
|
|
|
76
77
|
/** The dense voxel type at a within-chunk coordinate (0 when unknown). */
|
|
77
78
|
voxelTypeAt(coord, x, y, z) {
|
|
78
79
|
const chunk = this.chunks.get(chunkKey(coord));
|
|
79
|
-
return chunk?.voxels?.[voxelIndex(x, y, z)] ?? 0;
|
|
80
|
+
return chunk?.voxels?.[this.voxelIndex(x, y, z)] ?? 0;
|
|
80
81
|
}
|
|
81
82
|
/** The typed per-voxel state at a within-chunk coordinate, if any. */
|
|
82
83
|
voxelStateAt(coord, x, y, z) {
|
|
83
|
-
return this.chunks.get(chunkKey(coord))?.voxelStates.get(voxelIndex(x, y, z));
|
|
84
|
+
return this.chunks.get(chunkKey(coord))?.voxelStates.get(this.voxelIndex(x, y, z));
|
|
84
85
|
}
|
|
85
86
|
/** Subscribe to per-chunk changes (loads, merges, edits). @returns off. */
|
|
86
87
|
onChunkChanged(listener) {
|
|
@@ -162,7 +163,7 @@ export class ChunkStore {
|
|
|
162
163
|
chunk.voxels = decodeBase64(full.voxels);
|
|
163
164
|
chunk.chunkState = this.decodeChunkState(full.chunkState ?? null);
|
|
164
165
|
for (const entry of full.voxelStates ?? []) {
|
|
165
|
-
const index = voxelIndex(entry.voxelCoord.x, entry.voxelCoord.y, entry.voxelCoord.z);
|
|
166
|
+
const index = this.voxelIndex(entry.voxelCoord.x, entry.voxelCoord.y, entry.voxelCoord.z);
|
|
166
167
|
if (chunk.voxels)
|
|
167
168
|
chunk.voxels[index] = entry.voxelType;
|
|
168
169
|
if (entry.state) {
|
|
@@ -302,7 +303,7 @@ export class ChunkStore {
|
|
|
302
303
|
applyVoxel(chunk, x, y, z, voxelType, encodedState, decodedState) {
|
|
303
304
|
if (!chunk.voxels)
|
|
304
305
|
chunk.voxels = new Uint8Array(CHUNK_VOLUME);
|
|
305
|
-
const index = voxelIndex(x, y, z);
|
|
306
|
+
const index = this.voxelIndex(x, y, z);
|
|
306
307
|
chunk.voxels[index] = voxelType;
|
|
307
308
|
let state = decodedState;
|
|
308
309
|
if (state === undefined && encodedState) {
|