@dcl/playground-assets 7.24.3-28183854529.commit-ed08c4e → 7.24.3-28198038455.commit-a770a7e

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/alpha.d.ts CHANGED
@@ -220,6 +220,42 @@ export declare interface AudioStreamComponentDefinitionExtended extends LastWrit
220
220
  getAudioState(entity: Entity): PBAudioEvent | undefined;
221
221
  }
222
222
 
223
+ /**
224
+ * @public
225
+ */
226
+ export declare type AuthoritativePutComponentMessage = CrdtMessageHeader & AuthoritativePutComponentMessageBody;
227
+
228
+ /**
229
+ * Server authoritative message - identical to PutComponentMessageBody but with forced processing
230
+ * Min. length = header (8 bytes) + 16 bytes = 24 bytes
231
+ *
232
+ * @param entity - Uint32 number of the entity
233
+ * @param componentId - Uint32 number of id
234
+ * @param timestamp - Uint32 Lamport timestamp (server's authoritative timestamp)
235
+ * @param data - Uint8[] data of component => length(4 bytes) + block of bytes[0..length-1]
236
+ * @public
237
+ */
238
+ export declare type AuthoritativePutComponentMessageBody = {
239
+ type: CrdtMessageType.AUTHORITATIVE_PUT_COMPONENT;
240
+ entityId: Entity;
241
+ componentId: number;
242
+ timestamp: number;
243
+ data: Uint8Array;
244
+ };
245
+
246
+ /**
247
+ * @public
248
+ */
249
+ export declare namespace AuthoritativePutComponentOperation {
250
+ const MESSAGE_HEADER_LENGTH = 16;
251
+ /**
252
+ * Call this function for an optimal writing data passing the ByteBuffer
253
+ * already allocated
254
+ */
255
+ export function write(entity: Entity, timestamp: number, componentId: number, data: Uint8Array, buf: ByteBuffer): void;
256
+ export function read(buf: ByteBuffer): AuthoritativePutComponentMessage | null;
257
+ }
258
+
223
259
  /** AvatarAnchorPointType determines the part of the avatar's body that anchors the Entity. */
224
260
  /**
225
261
  * @public
@@ -382,6 +418,22 @@ export declare interface BaseComponent<T> {
382
418
  * If the value is undefined, the component was deleted.
383
419
  */
384
420
  onChange(entity: Entity, cb: (value: T | undefined) => void): void;
421
+ /**
422
+ * @public
423
+ *
424
+ */
425
+ validateBeforeChange(entity: Entity, cb: ValidateCallback<T>): void;
426
+ validateBeforeChange(cb: ValidateCallback<T>): void;
427
+ /**
428
+ * Get the CRDT state for an entity (serialized data and timestamp)
429
+ * @param entity - Entity to get the CRDT state for
430
+ * @returns Object with serialized data and timestamp, or null if entity doesn't have the component
431
+ * @public
432
+ */
433
+ getCrdtState(entity: Entity): {
434
+ data: Uint8Array;
435
+ timestamp: number;
436
+ } | null;
385
437
  }
386
438
 
387
439
  /** @public */
@@ -1620,12 +1672,12 @@ export declare const CRDT_MESSAGE_HEADER_LENGTH = 8;
1620
1672
  /**
1621
1673
  * @public
1622
1674
  */
1623
- export declare type CrdtMessage = PutComponentMessage | DeleteComponentMessage | AppendValueMessage | DeleteEntityMessage | PutNetworkComponentMessage | DeleteComponentNetworkMessage | DeleteEntityNetworkMessage;
1675
+ export declare type CrdtMessage = PutComponentMessage | AuthoritativePutComponentMessage | DeleteComponentMessage | AppendValueMessage | DeleteEntityMessage | PutNetworkComponentMessage | DeleteComponentNetworkMessage | DeleteEntityNetworkMessage;
1624
1676
 
1625
1677
  /**
1626
1678
  * @public
1627
1679
  */
1628
- export declare type CrdtMessageBody = PutComponentMessageBody | DeleteComponentMessageBody | DeleteEntityMessageBody | AppendValueMessageBody | CrdtNetworkMessageBody;
1680
+ export declare type CrdtMessageBody = PutComponentMessageBody | AuthoritativePutComponentMessageBody | DeleteComponentMessageBody | DeleteEntityMessageBody | AppendValueMessageBody | CrdtNetworkMessageBody;
1629
1681
 
1630
1682
  /**
1631
1683
  * Min length = 8 bytes
@@ -1680,7 +1732,8 @@ export declare enum CrdtMessageType {
1680
1732
  PUT_COMPONENT_NETWORK = 5,
1681
1733
  DELETE_COMPONENT_NETWORK = 6,
1682
1734
  DELETE_ENTITY_NETWORK = 7,
1683
- MAX_MESSAGE_TYPE = 8
1735
+ AUTHORITATIVE_PUT_COMPONENT = 8,
1736
+ MAX_MESSAGE_TYPE = 9
1684
1737
  }
1685
1738
 
1686
1739
  /**
@@ -1688,6 +1741,8 @@ export declare enum CrdtMessageType {
1688
1741
  */
1689
1742
  export declare type CrdtNetworkMessageBody = PutNetworkComponentMessageBody | DeleteComponentNetworkMessageBody | DeleteEntityNetworkMessageBody;
1690
1743
 
1744
+ export declare const CreatedBy: ICreatedBy;
1745
+
1691
1746
  /**
1692
1747
  * @public
1693
1748
  */
@@ -2414,6 +2469,12 @@ export declare interface GrowOnlyValueSetComponentDefinition<T> extends BaseComp
2414
2469
 
2415
2470
  export declare type GSetComponentGetter<T extends GrowOnlyValueSetComponentDefinition<any>> = (engine: Pick<IEngine, 'defineValueSetComponentFromSchema'>) => T;
2416
2471
 
2472
+ export declare type ICreatedBy = LastWriteWinElementSetComponentDefinition<ICreatedByType>;
2473
+
2474
+ export declare interface ICreatedByType {
2475
+ address: string;
2476
+ }
2477
+
2417
2478
  /**
2418
2479
  * @public
2419
2480
  */
@@ -2867,6 +2928,35 @@ export declare const enum InteractionType {
2867
2928
  PROXIMITY = 1
2868
2929
  }
2869
2930
 
2931
+ /**
2932
+ * Internal component interface that exposes all internal methods for SDK use
2933
+ * This is not exposed to users, only for internal SDK operations
2934
+ */
2935
+ export declare interface InternalBaseComponent<T> extends BaseComponent<T> {
2936
+ /**
2937
+ * @public
2938
+ * Dry run update to check if a CRDT message would be accepted without actually applying it
2939
+ */
2940
+ __dry_run_updateFromCrdt(body: CrdtMessageBody): ProcessMessageResultType;
2941
+ /**
2942
+ * @public
2943
+ * Get the iterator to every entity has the component
2944
+ */
2945
+ iterator(): Iterable<[Entity, any]>;
2946
+ /**
2947
+ * @public
2948
+ */
2949
+ dirtyIterator(): Iterable<Entity>;
2950
+ /**
2951
+ * @public
2952
+ */
2953
+ __onChangeCallbacks(entity: Entity, value: T): void;
2954
+ /**
2955
+ * @public
2956
+ */
2957
+ __run_validateBeforeChange(entity: Entity, newValue: T | undefined, senderAddress: string, createdBy: string): boolean;
2958
+ }
2959
+
2870
2960
  /**
2871
2961
  * @public
2872
2962
  */
@@ -9577,6 +9667,14 @@ export declare interface UiTransformProps {
9577
9667
  */
9578
9668
  export declare type Unpacked<T> = T extends (infer U)[] ? U : T;
9579
9669
 
9670
+ export declare type ValidateCallback<T> = (value: {
9671
+ entity: Entity;
9672
+ currentValue: T | undefined;
9673
+ newValue: T | undefined;
9674
+ senderAddress: string;
9675
+ createdBy: string;
9676
+ }) => boolean;
9677
+
9580
9678
  /**
9581
9679
  * @public
9582
9680
  */
package/dist/beta.d.ts CHANGED
@@ -220,6 +220,42 @@ export declare interface AudioStreamComponentDefinitionExtended extends LastWrit
220
220
  getAudioState(entity: Entity): PBAudioEvent | undefined;
221
221
  }
222
222
 
223
+ /**
224
+ * @public
225
+ */
226
+ export declare type AuthoritativePutComponentMessage = CrdtMessageHeader & AuthoritativePutComponentMessageBody;
227
+
228
+ /**
229
+ * Server authoritative message - identical to PutComponentMessageBody but with forced processing
230
+ * Min. length = header (8 bytes) + 16 bytes = 24 bytes
231
+ *
232
+ * @param entity - Uint32 number of the entity
233
+ * @param componentId - Uint32 number of id
234
+ * @param timestamp - Uint32 Lamport timestamp (server's authoritative timestamp)
235
+ * @param data - Uint8[] data of component => length(4 bytes) + block of bytes[0..length-1]
236
+ * @public
237
+ */
238
+ export declare type AuthoritativePutComponentMessageBody = {
239
+ type: CrdtMessageType.AUTHORITATIVE_PUT_COMPONENT;
240
+ entityId: Entity;
241
+ componentId: number;
242
+ timestamp: number;
243
+ data: Uint8Array;
244
+ };
245
+
246
+ /**
247
+ * @public
248
+ */
249
+ export declare namespace AuthoritativePutComponentOperation {
250
+ const MESSAGE_HEADER_LENGTH = 16;
251
+ /**
252
+ * Call this function for an optimal writing data passing the ByteBuffer
253
+ * already allocated
254
+ */
255
+ export function write(entity: Entity, timestamp: number, componentId: number, data: Uint8Array, buf: ByteBuffer): void;
256
+ export function read(buf: ByteBuffer): AuthoritativePutComponentMessage | null;
257
+ }
258
+
223
259
  /** AvatarAnchorPointType determines the part of the avatar's body that anchors the Entity. */
224
260
  /**
225
261
  * @public
@@ -382,6 +418,22 @@ export declare interface BaseComponent<T> {
382
418
  * If the value is undefined, the component was deleted.
383
419
  */
384
420
  onChange(entity: Entity, cb: (value: T | undefined) => void): void;
421
+ /**
422
+ * @public
423
+ *
424
+ */
425
+ validateBeforeChange(entity: Entity, cb: ValidateCallback<T>): void;
426
+ validateBeforeChange(cb: ValidateCallback<T>): void;
427
+ /**
428
+ * Get the CRDT state for an entity (serialized data and timestamp)
429
+ * @param entity - Entity to get the CRDT state for
430
+ * @returns Object with serialized data and timestamp, or null if entity doesn't have the component
431
+ * @public
432
+ */
433
+ getCrdtState(entity: Entity): {
434
+ data: Uint8Array;
435
+ timestamp: number;
436
+ } | null;
385
437
  }
386
438
 
387
439
  /** @public */
@@ -1620,12 +1672,12 @@ export declare const CRDT_MESSAGE_HEADER_LENGTH = 8;
1620
1672
  /**
1621
1673
  * @public
1622
1674
  */
1623
- export declare type CrdtMessage = PutComponentMessage | DeleteComponentMessage | AppendValueMessage | DeleteEntityMessage | PutNetworkComponentMessage | DeleteComponentNetworkMessage | DeleteEntityNetworkMessage;
1675
+ export declare type CrdtMessage = PutComponentMessage | AuthoritativePutComponentMessage | DeleteComponentMessage | AppendValueMessage | DeleteEntityMessage | PutNetworkComponentMessage | DeleteComponentNetworkMessage | DeleteEntityNetworkMessage;
1624
1676
 
1625
1677
  /**
1626
1678
  * @public
1627
1679
  */
1628
- export declare type CrdtMessageBody = PutComponentMessageBody | DeleteComponentMessageBody | DeleteEntityMessageBody | AppendValueMessageBody | CrdtNetworkMessageBody;
1680
+ export declare type CrdtMessageBody = PutComponentMessageBody | AuthoritativePutComponentMessageBody | DeleteComponentMessageBody | DeleteEntityMessageBody | AppendValueMessageBody | CrdtNetworkMessageBody;
1629
1681
 
1630
1682
  /**
1631
1683
  * Min length = 8 bytes
@@ -1680,7 +1732,8 @@ export declare enum CrdtMessageType {
1680
1732
  PUT_COMPONENT_NETWORK = 5,
1681
1733
  DELETE_COMPONENT_NETWORK = 6,
1682
1734
  DELETE_ENTITY_NETWORK = 7,
1683
- MAX_MESSAGE_TYPE = 8
1735
+ AUTHORITATIVE_PUT_COMPONENT = 8,
1736
+ MAX_MESSAGE_TYPE = 9
1684
1737
  }
1685
1738
 
1686
1739
  /**
@@ -1688,6 +1741,8 @@ export declare enum CrdtMessageType {
1688
1741
  */
1689
1742
  export declare type CrdtNetworkMessageBody = PutNetworkComponentMessageBody | DeleteComponentNetworkMessageBody | DeleteEntityNetworkMessageBody;
1690
1743
 
1744
+ export declare const CreatedBy: ICreatedBy;
1745
+
1691
1746
  /**
1692
1747
  * @public
1693
1748
  */
@@ -2414,6 +2469,12 @@ export declare interface GrowOnlyValueSetComponentDefinition<T> extends BaseComp
2414
2469
 
2415
2470
  export declare type GSetComponentGetter<T extends GrowOnlyValueSetComponentDefinition<any>> = (engine: Pick<IEngine, 'defineValueSetComponentFromSchema'>) => T;
2416
2471
 
2472
+ export declare type ICreatedBy = LastWriteWinElementSetComponentDefinition<ICreatedByType>;
2473
+
2474
+ export declare interface ICreatedByType {
2475
+ address: string;
2476
+ }
2477
+
2417
2478
  /**
2418
2479
  * @public
2419
2480
  */
@@ -2858,6 +2919,35 @@ export declare const enum InteractionType {
2858
2919
  PROXIMITY = 1
2859
2920
  }
2860
2921
 
2922
+ /**
2923
+ * Internal component interface that exposes all internal methods for SDK use
2924
+ * This is not exposed to users, only for internal SDK operations
2925
+ */
2926
+ export declare interface InternalBaseComponent<T> extends BaseComponent<T> {
2927
+ /**
2928
+ * @public
2929
+ * Dry run update to check if a CRDT message would be accepted without actually applying it
2930
+ */
2931
+ __dry_run_updateFromCrdt(body: CrdtMessageBody): ProcessMessageResultType;
2932
+ /**
2933
+ * @public
2934
+ * Get the iterator to every entity has the component
2935
+ */
2936
+ iterator(): Iterable<[Entity, any]>;
2937
+ /**
2938
+ * @public
2939
+ */
2940
+ dirtyIterator(): Iterable<Entity>;
2941
+ /**
2942
+ * @public
2943
+ */
2944
+ __onChangeCallbacks(entity: Entity, value: T): void;
2945
+ /**
2946
+ * @public
2947
+ */
2948
+ __run_validateBeforeChange(entity: Entity, newValue: T | undefined, senderAddress: string, createdBy: string): boolean;
2949
+ }
2950
+
2861
2951
  /**
2862
2952
  * @public
2863
2953
  */
@@ -9544,6 +9634,14 @@ export declare interface UiTransformProps {
9544
9634
  */
9545
9635
  export declare type Unpacked<T> = T extends (infer U)[] ? U : T;
9546
9636
 
9637
+ export declare type ValidateCallback<T> = (value: {
9638
+ entity: Entity;
9639
+ currentValue: T | undefined;
9640
+ newValue: T | undefined;
9641
+ senderAddress: string;
9642
+ createdBy: string;
9643
+ }) => boolean;
9644
+
9547
9645
  /**
9548
9646
  * @public
9549
9647
  */
@@ -220,6 +220,42 @@ export declare interface AudioStreamComponentDefinitionExtended extends LastWrit
220
220
  getAudioState(entity: Entity): PBAudioEvent | undefined;
221
221
  }
222
222
 
223
+ /**
224
+ * @public
225
+ */
226
+ export declare type AuthoritativePutComponentMessage = CrdtMessageHeader & AuthoritativePutComponentMessageBody;
227
+
228
+ /**
229
+ * Server authoritative message - identical to PutComponentMessageBody but with forced processing
230
+ * Min. length = header (8 bytes) + 16 bytes = 24 bytes
231
+ *
232
+ * @param entity - Uint32 number of the entity
233
+ * @param componentId - Uint32 number of id
234
+ * @param timestamp - Uint32 Lamport timestamp (server's authoritative timestamp)
235
+ * @param data - Uint8[] data of component => length(4 bytes) + block of bytes[0..length-1]
236
+ * @public
237
+ */
238
+ export declare type AuthoritativePutComponentMessageBody = {
239
+ type: CrdtMessageType.AUTHORITATIVE_PUT_COMPONENT;
240
+ entityId: Entity;
241
+ componentId: number;
242
+ timestamp: number;
243
+ data: Uint8Array;
244
+ };
245
+
246
+ /**
247
+ * @public
248
+ */
249
+ export declare namespace AuthoritativePutComponentOperation {
250
+ const MESSAGE_HEADER_LENGTH = 16;
251
+ /**
252
+ * Call this function for an optimal writing data passing the ByteBuffer
253
+ * already allocated
254
+ */
255
+ export function write(entity: Entity, timestamp: number, componentId: number, data: Uint8Array, buf: ByteBuffer): void;
256
+ export function read(buf: ByteBuffer): AuthoritativePutComponentMessage | null;
257
+ }
258
+
223
259
  /** AvatarAnchorPointType determines the part of the avatar's body that anchors the Entity. */
224
260
  /**
225
261
  * @public
@@ -382,6 +418,22 @@ export declare interface BaseComponent<T> {
382
418
  * If the value is undefined, the component was deleted.
383
419
  */
384
420
  onChange(entity: Entity, cb: (value: T | undefined) => void): void;
421
+ /**
422
+ * @public
423
+ *
424
+ */
425
+ validateBeforeChange(entity: Entity, cb: ValidateCallback<T>): void;
426
+ validateBeforeChange(cb: ValidateCallback<T>): void;
427
+ /**
428
+ * Get the CRDT state for an entity (serialized data and timestamp)
429
+ * @param entity - Entity to get the CRDT state for
430
+ * @returns Object with serialized data and timestamp, or null if entity doesn't have the component
431
+ * @public
432
+ */
433
+ getCrdtState(entity: Entity): {
434
+ data: Uint8Array;
435
+ timestamp: number;
436
+ } | null;
385
437
  }
386
438
 
387
439
  /** @public */
@@ -1620,12 +1672,12 @@ export declare const CRDT_MESSAGE_HEADER_LENGTH = 8;
1620
1672
  /**
1621
1673
  * @public
1622
1674
  */
1623
- export declare type CrdtMessage = PutComponentMessage | DeleteComponentMessage | AppendValueMessage | DeleteEntityMessage | PutNetworkComponentMessage | DeleteComponentNetworkMessage | DeleteEntityNetworkMessage;
1675
+ export declare type CrdtMessage = PutComponentMessage | AuthoritativePutComponentMessage | DeleteComponentMessage | AppendValueMessage | DeleteEntityMessage | PutNetworkComponentMessage | DeleteComponentNetworkMessage | DeleteEntityNetworkMessage;
1624
1676
 
1625
1677
  /**
1626
1678
  * @public
1627
1679
  */
1628
- export declare type CrdtMessageBody = PutComponentMessageBody | DeleteComponentMessageBody | DeleteEntityMessageBody | AppendValueMessageBody | CrdtNetworkMessageBody;
1680
+ export declare type CrdtMessageBody = PutComponentMessageBody | AuthoritativePutComponentMessageBody | DeleteComponentMessageBody | DeleteEntityMessageBody | AppendValueMessageBody | CrdtNetworkMessageBody;
1629
1681
 
1630
1682
  /**
1631
1683
  * Min length = 8 bytes
@@ -1680,7 +1732,8 @@ export declare enum CrdtMessageType {
1680
1732
  PUT_COMPONENT_NETWORK = 5,
1681
1733
  DELETE_COMPONENT_NETWORK = 6,
1682
1734
  DELETE_ENTITY_NETWORK = 7,
1683
- MAX_MESSAGE_TYPE = 8
1735
+ AUTHORITATIVE_PUT_COMPONENT = 8,
1736
+ MAX_MESSAGE_TYPE = 9
1684
1737
  }
1685
1738
 
1686
1739
  /**
@@ -1688,6 +1741,8 @@ export declare enum CrdtMessageType {
1688
1741
  */
1689
1742
  export declare type CrdtNetworkMessageBody = PutNetworkComponentMessageBody | DeleteComponentNetworkMessageBody | DeleteEntityNetworkMessageBody;
1690
1743
 
1744
+ export declare const CreatedBy: ICreatedBy;
1745
+
1691
1746
  /**
1692
1747
  * @public
1693
1748
  */
@@ -2414,6 +2469,12 @@ export declare interface GrowOnlyValueSetComponentDefinition<T> extends BaseComp
2414
2469
 
2415
2470
  export declare type GSetComponentGetter<T extends GrowOnlyValueSetComponentDefinition<any>> = (engine: Pick<IEngine, 'defineValueSetComponentFromSchema'>) => T;
2416
2471
 
2472
+ export declare type ICreatedBy = LastWriteWinElementSetComponentDefinition<ICreatedByType>;
2473
+
2474
+ export declare interface ICreatedByType {
2475
+ address: string;
2476
+ }
2477
+
2417
2478
  /**
2418
2479
  * @public
2419
2480
  */
@@ -2858,6 +2919,35 @@ export declare const enum InteractionType {
2858
2919
  PROXIMITY = 1
2859
2920
  }
2860
2921
 
2922
+ /**
2923
+ * Internal component interface that exposes all internal methods for SDK use
2924
+ * This is not exposed to users, only for internal SDK operations
2925
+ */
2926
+ export declare interface InternalBaseComponent<T> extends BaseComponent<T> {
2927
+ /**
2928
+ * @public
2929
+ * Dry run update to check if a CRDT message would be accepted without actually applying it
2930
+ */
2931
+ __dry_run_updateFromCrdt(body: CrdtMessageBody): ProcessMessageResultType;
2932
+ /**
2933
+ * @public
2934
+ * Get the iterator to every entity has the component
2935
+ */
2936
+ iterator(): Iterable<[Entity, any]>;
2937
+ /**
2938
+ * @public
2939
+ */
2940
+ dirtyIterator(): Iterable<Entity>;
2941
+ /**
2942
+ * @public
2943
+ */
2944
+ __onChangeCallbacks(entity: Entity, value: T): void;
2945
+ /**
2946
+ * @public
2947
+ */
2948
+ __run_validateBeforeChange(entity: Entity, newValue: T | undefined, senderAddress: string, createdBy: string): boolean;
2949
+ }
2950
+
2861
2951
  /**
2862
2952
  * @public
2863
2953
  */
@@ -9544,6 +9634,14 @@ export declare interface UiTransformProps {
9544
9634
  */
9545
9635
  export declare type Unpacked<T> = T extends (infer U)[] ? U : T;
9546
9636
 
9637
+ export declare type ValidateCallback<T> = (value: {
9638
+ entity: Entity;
9639
+ currentValue: T | undefined;
9640
+ newValue: T | undefined;
9641
+ senderAddress: string;
9642
+ createdBy: string;
9643
+ }) => boolean;
9644
+
9547
9645
  /**
9548
9646
  * @public
9549
9647
  */