@rtsdk/topia 0.19.3 → 0.19.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/dist/index.cjs +424 -51
- package/dist/index.d.ts +437 -280
- package/dist/index.js +424 -51
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -39613,25 +39613,53 @@ const {
|
|
|
39613
39613
|
} = axios;
|
|
39614
39614
|
|
|
39615
39615
|
// utils
|
|
39616
|
+
/* ============================================================================
|
|
39617
|
+
AI RULES for code assistants
|
|
39618
|
+
|
|
39619
|
+
CONTEXT
|
|
39620
|
+
- SDKController is the abstract base class for all SDK controllers.
|
|
39621
|
+
- All controllers (World, Visitor, User, etc.) extend this class.
|
|
39622
|
+
- This class provides common functionality: authentication, API access, and error handling.
|
|
39623
|
+
- This SDK is installed as an NPM package (@rtsdk/topia) in consumer applications.
|
|
39624
|
+
|
|
39625
|
+
DO
|
|
39626
|
+
- Understand that all controllers inherit these base methods and properties.
|
|
39627
|
+
- Use the error handling pattern defined in errorHandler() for all SDK errors.
|
|
39628
|
+
- Access the Topia Public API through topiaPublicApi() method.
|
|
39629
|
+
|
|
39630
|
+
DO NOT
|
|
39631
|
+
- Do NOT instantiate SDKController directly; it's an abstract class.
|
|
39632
|
+
- Do NOT bypass the error handler; all errors should flow through errorHandler().
|
|
39633
|
+
- Do NOT access this.topia.axios directly; use topiaPublicApi() instead.
|
|
39634
|
+
|
|
39635
|
+
AVAILABLE METHODS:
|
|
39636
|
+
- topiaPublicApi(): Returns configured Axios instance for API calls
|
|
39637
|
+
- errorHandler(options): Standardized error handling for all SDK operations
|
|
39638
|
+
|
|
39639
|
+
INHERITED BY:
|
|
39640
|
+
All controllers inherit from this base class, including:
|
|
39641
|
+
- World, Visitor, User, Asset, DroppedAsset, Scene, WorldActivity, Ecosystem
|
|
39642
|
+
|
|
39643
|
+
============================================================================ */
|
|
39616
39644
|
/**
|
|
39617
|
-
*
|
|
39645
|
+
* Abstract base controller that provides common functionality for all SDK controllers.
|
|
39646
|
+
*
|
|
39647
|
+
* @remarks
|
|
39648
|
+
* This class should NOT be instantiated directly. It serves as the base class for all
|
|
39649
|
+
* SDK controllers (World, Visitor, User, etc.) and provides:
|
|
39650
|
+
* - Authentication and credential management
|
|
39651
|
+
* - Axios instance configuration for API calls
|
|
39652
|
+
* - Standardized error handling
|
|
39653
|
+
* - JWT token generation for interactive credentials
|
|
39654
|
+
*
|
|
39655
|
+
* @keywords base, controller, sdk, authentication, api, abstract
|
|
39618
39656
|
*
|
|
39619
39657
|
* @example
|
|
39620
39658
|
* ```ts
|
|
39621
|
-
*
|
|
39622
|
-
*
|
|
39623
|
-
*
|
|
39624
|
-
* interactivePublicKey: "examplePublicKey",
|
|
39625
|
-
* visitorId: 1,
|
|
39626
|
-
* url: "https://topia.io",
|
|
39627
|
-
* }
|
|
39628
|
-
* const topia = await new Topia({
|
|
39629
|
-
* apiDomain: "api.topia.io",
|
|
39630
|
-
* apiKey: "exampleKey",
|
|
39631
|
-
* interactiveKey: "key",
|
|
39632
|
-
* interactiveSecret: "secret",
|
|
39659
|
+
* // This class is extended by all controllers
|
|
39660
|
+
* export class World extends SDKController implements WorldInterface {
|
|
39661
|
+
* // World-specific implementation
|
|
39633
39662
|
* }
|
|
39634
|
-
* await new SDKController({ credentials, topia });
|
|
39635
39663
|
* ```
|
|
39636
39664
|
*/
|
|
39637
39665
|
class SDKController {
|
|
@@ -39670,9 +39698,42 @@ class SDKController {
|
|
|
39670
39698
|
this.errorHandler({ error });
|
|
39671
39699
|
}
|
|
39672
39700
|
}
|
|
39701
|
+
/**
|
|
39702
|
+
* Returns the configured Axios instance for making API calls to Topia's Public API.
|
|
39703
|
+
*
|
|
39704
|
+
* @remarks
|
|
39705
|
+
* All HTTP requests to the Topia API should use this method to ensure proper
|
|
39706
|
+
* authentication headers and base URL configuration are applied.
|
|
39707
|
+
*
|
|
39708
|
+
* @keywords api, axios, http, request, client, public api
|
|
39709
|
+
*
|
|
39710
|
+
* @returns {AxiosInstance} The configured Axios client instance with authentication headers.
|
|
39711
|
+
*/
|
|
39673
39712
|
topiaPublicApi() {
|
|
39674
39713
|
return this.topia.axios;
|
|
39675
39714
|
}
|
|
39715
|
+
/**
|
|
39716
|
+
* Standardized error handler for all SDK operations.
|
|
39717
|
+
*
|
|
39718
|
+
* @remarks
|
|
39719
|
+
* This method processes errors from API calls and formats them consistently across the SDK.
|
|
39720
|
+
* It extracts relevant error information including:
|
|
39721
|
+
* - HTTP status codes and response data
|
|
39722
|
+
* - Error messages from API responses
|
|
39723
|
+
* - Stack traces for debugging
|
|
39724
|
+
* - Request details (URL, method, parameters)
|
|
39725
|
+
*
|
|
39726
|
+
* All errors thrown by SDK methods flow through this handler to ensure consistent error format.
|
|
39727
|
+
*
|
|
39728
|
+
* @keywords error, exception, handler, debugging, api error, http error
|
|
39729
|
+
*
|
|
39730
|
+
* @param error - The error object from the failed operation (AxiosError, Error, or unknown)
|
|
39731
|
+
* @param message - Optional custom error message (defaults to generic message)
|
|
39732
|
+
* @param params - Optional parameters that were passed to the failed method
|
|
39733
|
+
* @param sdkMethod - Optional name of the SDK method that failed (e.g., "World.fetchDetails")
|
|
39734
|
+
*
|
|
39735
|
+
* @returns {object} Standardized error object with properties: data, message, method, params, sdkMethod, stack, status, success, url
|
|
39736
|
+
*/
|
|
39676
39737
|
errorHandler({ error, message = "Something went wrong. Please try again or contact support.", params = {}, sdkMethod, }) {
|
|
39677
39738
|
var _a, _b;
|
|
39678
39739
|
const stackTrace = new Error("Thrown here:");
|
|
@@ -39716,6 +39777,7 @@ AI RULES for code assistants
|
|
|
39716
39777
|
CONTEXT
|
|
39717
39778
|
- "Controllers" expose operations on domain objects (e.g., Asset).
|
|
39718
39779
|
- Consumers obtain controller instances via factory methods (e.g., AssetFactory.get).
|
|
39780
|
+
- This SDK is installed as an NPM package (@rtsdk/topia) in consumer applications.
|
|
39719
39781
|
|
|
39720
39782
|
DO
|
|
39721
39783
|
- Expect consumers to import a pre-instantiated factory from their app (e.g., utils/topiaInit.ts).
|
|
@@ -39726,6 +39788,10 @@ AI RULES for code assistants
|
|
|
39726
39788
|
- Do NOT suggest non-existent methods: getById, fetch, find
|
|
39727
39789
|
- Do NOT mutate controller shape or return ad-hoc fields.
|
|
39728
39790
|
|
|
39791
|
+
AVAILABLE METHODS:
|
|
39792
|
+
- fetchAssetById(): Retrieves platform asset details
|
|
39793
|
+
- updateAsset(options): Updates asset properties (name, layers, tags, visibility)
|
|
39794
|
+
|
|
39729
39795
|
CANONICAL USAGE (consumer app):
|
|
39730
39796
|
// utils/topiaInit.ts
|
|
39731
39797
|
import { Topia, AssetFactory } from "@rtsdk/topia";
|
|
@@ -39887,6 +39953,7 @@ AI RULES for code assistants
|
|
|
39887
39953
|
CONTEXT
|
|
39888
39954
|
- "Controllers" expose operations on domain objects (e.g., DroppedAsset).
|
|
39889
39955
|
- Consumers obtain controller instances via factory methods (e.g., DroppedAssetFactory.get).
|
|
39956
|
+
- This SDK is installed as an NPM package (@rtsdk/topia) in consumer applications.
|
|
39890
39957
|
|
|
39891
39958
|
DO
|
|
39892
39959
|
- Expect consumers to import a pre-instantiated factory from their app (e.g., utils/topiaInit.ts).
|
|
@@ -39897,6 +39964,35 @@ AI RULES for code assistants
|
|
|
39897
39964
|
- Do NOT suggest non-existent methods: getById, fetch, find
|
|
39898
39965
|
- Do NOT mutate controller shape or return ad-hoc fields.
|
|
39899
39966
|
|
|
39967
|
+
AVAILABLE METHODS:
|
|
39968
|
+
- fetchDroppedAssetById(): Retrieves dropped asset details
|
|
39969
|
+
- updateDroppedAsset(options): Updates dropped asset properties
|
|
39970
|
+
- deleteDroppedAsset(): Removes the dropped asset from the world
|
|
39971
|
+
- fetchDataObject(appPublicKey?, appJWT?, sharedAppPublicKey?, sharedAppJWT?): Gets asset's data object
|
|
39972
|
+
- setDataObject(dataObject, options?): Sets asset's entire data object
|
|
39973
|
+
- updateDataObject(dataObject, options?): Updates specific fields in data object
|
|
39974
|
+
- incrementDataObjectValue(path, amount, options?): Increments numeric value
|
|
39975
|
+
- updateBroadcast(options): Updates broadcast settings
|
|
39976
|
+
- updateClickType(options): Updates click behavior and link settings
|
|
39977
|
+
- setClickableLinkMulti(options): Adds multiple links to asset
|
|
39978
|
+
- updateClickableLinkMulti(options): Updates specific clickable link
|
|
39979
|
+
- removeClickableLink(options): Removes a clickable link
|
|
39980
|
+
- updateCustomTextAsset(style, text): Updates text and styling
|
|
39981
|
+
- updateMediaType(options): Updates media (video/audio) settings
|
|
39982
|
+
- updateMuteZone(isMutezone): Toggles mute zone
|
|
39983
|
+
- updateLandmarkZone(options): Updates landmark zone settings
|
|
39984
|
+
- updateWebhookZone(isEnabled): Toggles webhook zone
|
|
39985
|
+
- updatePosition(x, y, yOrderAdjust?): Moves the asset
|
|
39986
|
+
- updatePrivateZone(options): Updates private zone settings
|
|
39987
|
+
- updateScale(assetScale): Changes asset size
|
|
39988
|
+
- flip(): Flips the asset horizontally
|
|
39989
|
+
- updateUploadedMediaSelected(mediaId): Changes embedded media
|
|
39990
|
+
- updateWebImageLayers(bottom, top): Updates image layers
|
|
39991
|
+
- addWebhook(options): Adds a webhook to the asset
|
|
39992
|
+
- setInteractiveSettings(options): Configures interactive settings
|
|
39993
|
+
- checkExists(): Verifies asset exists with app's public key
|
|
39994
|
+
- fetchDroppedAssetAnalytics(options): Gets analytics data for the asset
|
|
39995
|
+
|
|
39900
39996
|
CANONICAL USAGE (consumer app):
|
|
39901
39997
|
// utils/topiaInit.ts
|
|
39902
39998
|
import { Topia, DroppedAssetFactory } from "@rtsdk/topia";
|
|
@@ -40786,12 +40882,17 @@ class InventoryItem extends SDKController {
|
|
|
40786
40882
|
/**
|
|
40787
40883
|
* Fetches the inventory item details from the platform and assigns them to this instance.
|
|
40788
40884
|
*
|
|
40885
|
+
* @keywords get, fetch, retrieve, load, inventory, item, details
|
|
40886
|
+
*
|
|
40887
|
+
* @category Inventory
|
|
40888
|
+
*
|
|
40789
40889
|
* @example
|
|
40790
40890
|
* ```ts
|
|
40791
40891
|
* await item.fetchInventoryItemById();
|
|
40892
|
+
* const { name, description, type } = item;
|
|
40792
40893
|
* ```
|
|
40793
40894
|
*
|
|
40794
|
-
* @returns {Promise<InventoryItem>} Returns
|
|
40895
|
+
* @returns {Promise<InventoryItem>} Returns this InventoryItem instance with all properties populated from the platform.
|
|
40795
40896
|
*/
|
|
40796
40897
|
fetchInventoryItemById() {
|
|
40797
40898
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -40819,6 +40920,13 @@ AI RULES for code assistants
|
|
|
40819
40920
|
- Do NOT suggest non-existent methods: getById, fetch, find
|
|
40820
40921
|
- Do NOT mutate controller shape or return ad-hoc fields.
|
|
40821
40922
|
|
|
40923
|
+
AVAILABLE METHODS:
|
|
40924
|
+
- fetchDataObject(appPublicKey?, appJWT?, sharedAppPublicKey?, sharedAppJWT?): Retrieves ecosystem-wide data object
|
|
40925
|
+
- setDataObject(dataObject, options?): Sets entire ecosystem data object
|
|
40926
|
+
- updateDataObject(dataObject, options?): Updates specific fields in ecosystem data object
|
|
40927
|
+
- incrementDataObjectValue(path, amount, options?): Increments a numeric value in ecosystem data
|
|
40928
|
+
- fetchInventoryItems(): Retrieves all inventory items for the app's keyholder
|
|
40929
|
+
|
|
40822
40930
|
CANONICAL USAGE (consumer app):
|
|
40823
40931
|
// utils/topiaInit.ts
|
|
40824
40932
|
import { Topia, Ecosystem } from "@rtsdk/topia";
|
|
@@ -40853,7 +40961,7 @@ class Ecosystem extends SDKController {
|
|
|
40853
40961
|
/**
|
|
40854
40962
|
* Retrieves the data object for a Topia ecosystem. Requires canUpdateEcosystemDataObjects permission to be set to true for the public key.
|
|
40855
40963
|
*
|
|
40856
|
-
* @keywords get, fetch, retrieve, load, data, object, state
|
|
40964
|
+
* @keywords get, fetch, retrieve, load, ecosystem, data, object, state, global, platform
|
|
40857
40965
|
*
|
|
40858
40966
|
* @category Data Objects
|
|
40859
40967
|
*
|
|
@@ -40862,7 +40970,7 @@ class Ecosystem extends SDKController {
|
|
|
40862
40970
|
* const dataObject = await ecosystem.fetchDataObject("exampleAppPublicKey", "exampleAppPublicKeyJWT");
|
|
40863
40971
|
* ```
|
|
40864
40972
|
*
|
|
40865
|
-
* @returns {Promise<
|
|
40973
|
+
* @returns {Promise<void | ResponseType>} Populates the dataObject property with ecosystem-wide data, or returns an error response.
|
|
40866
40974
|
*/
|
|
40867
40975
|
fetchDataObject(appPublicKey, appJWT, sharedAppPublicKey, sharedAppJWT) {
|
|
40868
40976
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -40889,7 +40997,7 @@ class Ecosystem extends SDKController {
|
|
|
40889
40997
|
*
|
|
40890
40998
|
* Optionally, a lock can be provided with this request to ensure only one update happens at a time between all updates that share the same lock id
|
|
40891
40999
|
*
|
|
40892
|
-
* @keywords set, assign, store, save, data, object, state
|
|
41000
|
+
* @keywords set, assign, store, save, ecosystem, data, object, state, global, platform
|
|
40893
41001
|
*
|
|
40894
41002
|
* @category Data Objects
|
|
40895
41003
|
*
|
|
@@ -40901,6 +41009,8 @@ class Ecosystem extends SDKController {
|
|
|
40901
41009
|
* });
|
|
40902
41010
|
* const { exampleKey } = ecosystem.dataObject;
|
|
40903
41011
|
* ```
|
|
41012
|
+
*
|
|
41013
|
+
* @returns {Promise<void | ResponseType>} Returns success or an error response.
|
|
40904
41014
|
*/
|
|
40905
41015
|
setDataObject(dataObject, options = {}) {
|
|
40906
41016
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -40921,7 +41031,7 @@ class Ecosystem extends SDKController {
|
|
|
40921
41031
|
*
|
|
40922
41032
|
* Optionally, a lock can be provided with this request to ensure only one update happens at a time between all updates that share the same lock id
|
|
40923
41033
|
*
|
|
40924
|
-
* @keywords update, modify, change, edit, alter, data, object, state
|
|
41034
|
+
* @keywords update, modify, change, edit, alter, ecosystem, data, object, state, global, platform
|
|
40925
41035
|
*
|
|
40926
41036
|
* @category Data Objects
|
|
40927
41037
|
*
|
|
@@ -40939,6 +41049,8 @@ class Ecosystem extends SDKController {
|
|
|
40939
41049
|
* });
|
|
40940
41050
|
* const { exampleKey } = ecosystem.dataObject;
|
|
40941
41051
|
* ```
|
|
41052
|
+
*
|
|
41053
|
+
* @returns {Promise<void | ResponseType>} Returns success or an error response.
|
|
40942
41054
|
*/
|
|
40943
41055
|
updateDataObject(dataObject, options = {}) {
|
|
40944
41056
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -40959,7 +41071,7 @@ class Ecosystem extends SDKController {
|
|
|
40959
41071
|
*
|
|
40960
41072
|
* Optionally, a lock can be provided with this request to ensure only one update happens at a time between all updates that share the same lock id
|
|
40961
41073
|
*
|
|
40962
|
-
* @keywords increment, increase, add, count, data, object, state
|
|
41074
|
+
* @keywords increment, increase, add, count, ecosystem, data, object, state, global, platform
|
|
40963
41075
|
*
|
|
40964
41076
|
* @category Data Objects
|
|
40965
41077
|
*
|
|
@@ -40970,6 +41082,8 @@ class Ecosystem extends SDKController {
|
|
|
40970
41082
|
* sharedAppJWT: "exampleAppPublicKeyJWT",}
|
|
40971
41083
|
* });
|
|
40972
41084
|
* ```
|
|
41085
|
+
*
|
|
41086
|
+
* @returns {Promise<void | ResponseType>} Returns success or an error response.
|
|
40973
41087
|
*/
|
|
40974
41088
|
incrementDataObjectValue(path, amount, options = {}) {
|
|
40975
41089
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -40988,14 +41102,17 @@ class Ecosystem extends SDKController {
|
|
|
40988
41102
|
/**
|
|
40989
41103
|
* Retrieves all inventory items for a given keyholder (app public key).
|
|
40990
41104
|
*
|
|
40991
|
-
* @keywords get, fetch, retrieve, list, inventory, items, keyholder
|
|
41105
|
+
* @keywords get, fetch, retrieve, list, inventory, items, keyholder, ecosystem, catalog
|
|
41106
|
+
*
|
|
41107
|
+
* @category Inventory
|
|
40992
41108
|
*
|
|
40993
41109
|
* @example
|
|
40994
41110
|
* ```ts
|
|
40995
|
-
*
|
|
41111
|
+
* await ecosystem.fetchInventoryItems();
|
|
41112
|
+
* const items = ecosystem.inventoryItems;
|
|
40996
41113
|
* ```
|
|
40997
41114
|
*
|
|
40998
|
-
* @returns {Promise<
|
|
41115
|
+
* @returns {Promise<void>} Populates the inventoryItems property with an array of InventoryItem objects.
|
|
40999
41116
|
*/
|
|
41000
41117
|
fetchInventoryItems() {
|
|
41001
41118
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -41029,6 +41146,10 @@ _Ecosystem_inventoryItems = new WeakMap();
|
|
|
41029
41146
|
*
|
|
41030
41147
|
* @remarks
|
|
41031
41148
|
* This class should be instantiated via UserInventoryItemFactory only.
|
|
41149
|
+
* UserInventoryItem represents an instance of an InventoryItem owned by a specific user or visitor.
|
|
41150
|
+
* It includes ownership details like quantity, grant_source, and user-specific metadata.
|
|
41151
|
+
*
|
|
41152
|
+
* @keywords inventory, item, user, visitor, owned, granted
|
|
41032
41153
|
*
|
|
41033
41154
|
* @property inventoryItemId - The root inventory item's id
|
|
41034
41155
|
*/
|
|
@@ -41039,12 +41160,13 @@ class UserInventoryItem extends InventoryItem {
|
|
|
41039
41160
|
super(topia, item_id, { attributes: options.attributes, credentials: options.credentials });
|
|
41040
41161
|
Object.assign(this, options.attributes);
|
|
41041
41162
|
this.userItemId = id;
|
|
41042
|
-
const { user_id = "", quantity = 0, grant_source = "unknown", type = "unknown", metadata = {}, created_at = new Date(), updated_at = new Date(), profile_id = null, item = { id: "", name: "", description: "", type: "", metadata: null, image_url: "" }, } = options.attributes;
|
|
41163
|
+
const { user_id = "", quantity = 0, grant_source = "unknown", type = "unknown", image_url = "", metadata = {}, created_at = new Date(), updated_at = new Date(), profile_id = null, item = { id: "", name: "", description: "", type: "", metadata: null, image_url: "" }, } = options.attributes;
|
|
41043
41164
|
this.item_id = item_id;
|
|
41044
41165
|
this.quantity = quantity;
|
|
41045
41166
|
this.grant_source = grant_source;
|
|
41046
41167
|
this.user_id = user_id;
|
|
41047
41168
|
this.type = type;
|
|
41169
|
+
this.image_url = image_url;
|
|
41048
41170
|
this.metadata = metadata;
|
|
41049
41171
|
this.created_at = created_at;
|
|
41050
41172
|
this.updated_at = updated_at;
|
|
@@ -41054,12 +41176,17 @@ class UserInventoryItem extends InventoryItem {
|
|
|
41054
41176
|
/**
|
|
41055
41177
|
* Fetches the user inventory item details from the platform and assigns them to this instance.
|
|
41056
41178
|
*
|
|
41179
|
+
* @keywords get, fetch, retrieve, load, user, inventory, item, details, owned
|
|
41180
|
+
*
|
|
41181
|
+
* @category Inventory
|
|
41182
|
+
*
|
|
41057
41183
|
* @example
|
|
41058
41184
|
* ```ts
|
|
41059
41185
|
* await userInventoryItem.fetchUserInventoryItemById();
|
|
41186
|
+
* const { quantity, grant_source, item } = userInventoryItem;
|
|
41060
41187
|
* ```
|
|
41061
41188
|
*
|
|
41062
|
-
* @returns {Promise<void>}
|
|
41189
|
+
* @returns {Promise<void>} Populates this UserInventoryItem instance with all properties from the platform.
|
|
41063
41190
|
*/
|
|
41064
41191
|
fetchUserInventoryItemById() {
|
|
41065
41192
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -41077,6 +41204,7 @@ AI RULES for code assistants
|
|
|
41077
41204
|
CONTEXT
|
|
41078
41205
|
- "Controllers" expose operations on domain objects (e.g., Scene).
|
|
41079
41206
|
- Consumers obtain controller instances via factory methods (e.g., SceneFactory.get).
|
|
41207
|
+
- This SDK is installed as an NPM package (@rtsdk/topia) in consumer applications.
|
|
41080
41208
|
|
|
41081
41209
|
DO
|
|
41082
41210
|
- Expect consumers to import a pre-instantiated factory from their app (e.g., utils/topiaInit.ts).
|
|
@@ -41087,6 +41215,9 @@ AI RULES for code assistants
|
|
|
41087
41215
|
- Do NOT suggest non-existent methods: getById, fetch, find
|
|
41088
41216
|
- Do NOT mutate controller shape or return ad-hoc fields.
|
|
41089
41217
|
|
|
41218
|
+
AVAILABLE METHODS:
|
|
41219
|
+
- fetchSceneById(): Retrieves scene details and configuration
|
|
41220
|
+
|
|
41090
41221
|
CANONICAL USAGE (consumer app):
|
|
41091
41222
|
// utils/topiaInit.ts
|
|
41092
41223
|
import { Topia, SceneFactory } from "@rtsdk/topia";
|
|
@@ -41096,6 +41227,7 @@ AI RULES for code assistants
|
|
|
41096
41227
|
// controllers/myController.ts (consumer app)
|
|
41097
41228
|
import { Scene } from "utils/topiaInit.ts";
|
|
41098
41229
|
const scene = await Scene.get(sceneId, { credentials });
|
|
41230
|
+
await scene.fetchSceneById();
|
|
41099
41231
|
|
|
41100
41232
|
============================================================================ */
|
|
41101
41233
|
/**
|
|
@@ -41141,16 +41273,68 @@ class Scene extends SDKController {
|
|
|
41141
41273
|
}
|
|
41142
41274
|
}
|
|
41143
41275
|
|
|
41276
|
+
/* ============================================================================
|
|
41277
|
+
AI RULES for code assistants
|
|
41278
|
+
|
|
41279
|
+
CONTEXT
|
|
41280
|
+
- Topia is the main client class that initializes the SDK.
|
|
41281
|
+
- This class should be instantiated ONCE in the consumer app (e.g., utils/topiaInit.ts).
|
|
41282
|
+
- The Topia instance is passed to all factory classes to create controllers.
|
|
41283
|
+
- This SDK is installed as an NPM package (@rtsdk/topia) in consumer applications.
|
|
41284
|
+
|
|
41285
|
+
DO
|
|
41286
|
+
- Expect consumers to create ONE Topia instance at app initialization.
|
|
41287
|
+
- This instance is then used to instantiate all factories (WorldFactory, VisitorFactory, etc.).
|
|
41288
|
+
- The Topia class configures the Axios client with proper authentication.
|
|
41289
|
+
|
|
41290
|
+
DO NOT
|
|
41291
|
+
- Do NOT suggest creating multiple Topia instances; one per app is sufficient.
|
|
41292
|
+
- Do NOT suggest instantiating controllers directly; always use factories.
|
|
41293
|
+
- Do NOT modify the Axios instance after creation; configure it through constructor.
|
|
41294
|
+
|
|
41295
|
+
AVAILABLE METHODS:
|
|
41296
|
+
- constructor(config): Initializes the Topia client with API credentials
|
|
41297
|
+
|
|
41298
|
+
CANONICAL USAGE (consumer app):
|
|
41299
|
+
// utils/topiaInit.ts - Create ONE instance
|
|
41300
|
+
import { Topia, WorldFactory, VisitorFactory } from "@rtsdk/topia";
|
|
41301
|
+
|
|
41302
|
+
const topia = new Topia({
|
|
41303
|
+
apiKey: "your-api-key",
|
|
41304
|
+
apiDomain: "api.topia.io",
|
|
41305
|
+
interactiveKey: "your-public-key",
|
|
41306
|
+
interactiveSecret: "your-secret-key",
|
|
41307
|
+
});
|
|
41308
|
+
|
|
41309
|
+
export const World = new WorldFactory(topia);
|
|
41310
|
+
export const Visitor = new VisitorFactory(topia);
|
|
41311
|
+
|
|
41312
|
+
============================================================================ */
|
|
41144
41313
|
/**
|
|
41145
|
-
*
|
|
41314
|
+
* Main Topia SDK client for configuring API access and authentication.
|
|
41315
|
+
*
|
|
41316
|
+
* @remarks
|
|
41317
|
+
* This class should be instantiated ONCE per application at initialization time.
|
|
41318
|
+
* The instance configures the Axios HTTP client with proper authentication headers
|
|
41319
|
+
* and base URL, and is passed to all factory classes to create controllers.
|
|
41320
|
+
*
|
|
41321
|
+
* Configuration options:
|
|
41322
|
+
* - apiKey: Your Topia API key for server-side authentication
|
|
41323
|
+
* - interactiveKey/interactiveSecret: For interactive iframe applications
|
|
41324
|
+
* - apiDomain: API endpoint domain (defaults to "api.topia.io")
|
|
41325
|
+
* - apiProtocol: HTTP protocol (defaults to "https")
|
|
41326
|
+
*
|
|
41327
|
+
* @keywords topia, client, sdk, initialization, config, setup, api
|
|
41146
41328
|
*
|
|
41147
41329
|
* @example
|
|
41148
41330
|
* ```ts
|
|
41149
|
-
*
|
|
41331
|
+
* import { Topia } from "@rtsdk/topia";
|
|
41332
|
+
*
|
|
41333
|
+
* const topia = new Topia({
|
|
41334
|
+
* apiKey: "your-api-key",
|
|
41150
41335
|
* apiDomain: "api.topia.io",
|
|
41151
|
-
*
|
|
41152
|
-
*
|
|
41153
|
-
* interactiveSecret: "secret",
|
|
41336
|
+
* interactiveKey: "your-public-key",
|
|
41337
|
+
* interactiveSecret: "your-secret-key",
|
|
41154
41338
|
* });
|
|
41155
41339
|
* ```
|
|
41156
41340
|
*/
|
|
@@ -41185,6 +41369,7 @@ AI RULES for code assistants
|
|
|
41185
41369
|
CONTEXT
|
|
41186
41370
|
- "Controllers" expose operations on domain objects (e.g., World).
|
|
41187
41371
|
- Consumers obtain controller instances via factory methods (e.g., WorldFactory.get).
|
|
41372
|
+
- This SDK is installed as an NPM package (@rtsdk/topia) in consumer applications.
|
|
41188
41373
|
|
|
41189
41374
|
DO
|
|
41190
41375
|
- Expect consumers to import a pre-instantiated factory from their app (e.g., utils/topiaInit.ts).
|
|
@@ -41195,6 +41380,30 @@ AI RULES for code assistants
|
|
|
41195
41380
|
- Do NOT suggest non-existent methods: getById, fetch, find
|
|
41196
41381
|
- Do NOT mutate controller shape or return ad-hoc fields.
|
|
41197
41382
|
|
|
41383
|
+
AVAILABLE METHODS:
|
|
41384
|
+
- fetchDetails(): Retrieves world details and settings
|
|
41385
|
+
- updateDetails(options): Updates world settings (name, description, size, spawn position, controls)
|
|
41386
|
+
- updateCloseWorldSettings(options): Updates world close/open settings
|
|
41387
|
+
- fetchDroppedAssets(): Gets all dropped assets in the world
|
|
41388
|
+
- fetchDroppedAssetsWithUniqueName(uniqueName): Gets dropped assets by unique name
|
|
41389
|
+
- fetchDroppedAssetsBySceneDropId(sceneDropId): Gets dropped assets by scene drop ID
|
|
41390
|
+
- updateCustomTextDroppedAssets(assets, style): Bulk updates text styling for assets
|
|
41391
|
+
- fetchLandmarkZones(landmarkZoneName?, sceneDropId?): Gets landmark zones in the world
|
|
41392
|
+
- fetchSceneDropIds(): Retrieves all scene drop IDs in the world
|
|
41393
|
+
- fetchScenes(): Gets all scenes used in the world
|
|
41394
|
+
- dropScene(options): Drops a scene into the world
|
|
41395
|
+
- replaceScene(sceneId): Replaces entire world with a scene
|
|
41396
|
+
- getAllParticles(): Gets all particle effects in the world
|
|
41397
|
+
- triggerParticle(options): Triggers a particle effect
|
|
41398
|
+
- triggerActivity(options): Triggers a world activity event
|
|
41399
|
+
- fireToast(options): Shows toast notification to all visitors
|
|
41400
|
+
- fetchDataObject(): Gets world's data object
|
|
41401
|
+
- setDataObject(dataObject, options?): Sets world's entire data object
|
|
41402
|
+
- updateDataObject(dataObject, options?): Updates specific fields in world data
|
|
41403
|
+
- incrementDataObjectValue(path, amount, options?): Increments numeric value
|
|
41404
|
+
- fetchWebhooks(): Gets all webhooks configured for the world
|
|
41405
|
+
- fetchWorldAnalytics(options): Retrieves analytics data for the world
|
|
41406
|
+
|
|
41198
41407
|
CANONICAL USAGE (consumer app):
|
|
41199
41408
|
// utils/topiaInit.ts
|
|
41200
41409
|
import { Topia, WorldFactory } from "@rtsdk/topia";
|
|
@@ -41994,6 +42203,7 @@ AI RULES for code assistants
|
|
|
41994
42203
|
CONTEXT
|
|
41995
42204
|
- "Controllers" expose operations on domain objects (e.g., User).
|
|
41996
42205
|
- Consumers obtain controller instances via factory methods (e.g., UserFactory.get).
|
|
42206
|
+
- This SDK is installed as an NPM package (@rtsdk/topia) in consumer applications.
|
|
41997
42207
|
|
|
41998
42208
|
DO
|
|
41999
42209
|
- Expect consumers to import a pre-instantiated factory from their app (e.g., utils/topiaInit.ts).
|
|
@@ -42004,6 +42214,28 @@ AI RULES for code assistants
|
|
|
42004
42214
|
- Do NOT suggest non-existent methods: getById, fetch, find
|
|
42005
42215
|
- Do NOT mutate controller shape or return ad-hoc fields.
|
|
42006
42216
|
|
|
42217
|
+
AVAILABLE METHODS:
|
|
42218
|
+
- checkInteractiveCredentials(): Validates interactive credentials
|
|
42219
|
+
- fetchAvatars(): Gets all avatars owned by the user
|
|
42220
|
+
- addAvatar(formData): Uploads and creates a new avatar
|
|
42221
|
+
- updateAvatar(avatarId, formData): Updates an existing avatar
|
|
42222
|
+
- deleteAvatar(avatarId): Deletes an avatar
|
|
42223
|
+
- fetchAssets(): Gets all assets owned by the user
|
|
42224
|
+
- fetchPlatformAssets(): Gets platform-provided assets
|
|
42225
|
+
- fetchScenes(): Gets all scenes owned by the user
|
|
42226
|
+
- fetchWorldsByKey(): Gets worlds owned by the user
|
|
42227
|
+
- fetchAdminWorldsByKey(): Gets worlds where user has admin access
|
|
42228
|
+
- fetchInteractiveWorldsByKey(interactivePublicKey): Gets worlds with specific interactive key
|
|
42229
|
+
- sendEmail(options): Sends an email through Topia's email service
|
|
42230
|
+
- getExpressions(options): Gets avatar expressions/emotes
|
|
42231
|
+
- fetchDataObject(appPublicKey?, appJWT?): Gets user's data object
|
|
42232
|
+
- setDataObject(dataObject, options?): Sets user's entire data object
|
|
42233
|
+
- updateDataObject(dataObject, options?): Updates specific fields in user data
|
|
42234
|
+
- incrementDataObjectValue(path, amount, options?): Increments numeric value
|
|
42235
|
+
- fetchInventoryItems(): Gets all inventory items owned by user
|
|
42236
|
+
- grantInventoryItem(item, quantity?): Grants inventory item to user
|
|
42237
|
+
- modifyInventoryItemQuantity(item, quantity): Updates inventory item quantity
|
|
42238
|
+
|
|
42007
42239
|
CANONICAL USAGE (consumer app):
|
|
42008
42240
|
// utils/topiaInit.ts
|
|
42009
42241
|
import { Topia, UserFactory } from "@rtsdk/topia";
|
|
@@ -42767,6 +42999,7 @@ AI RULES for code assistants
|
|
|
42767
42999
|
CONTEXT
|
|
42768
43000
|
- "Controllers" expose operations on domain objects (e.g., Visitor).
|
|
42769
43001
|
- Consumers obtain controller instances via factory methods (e.g., VisitorFactory.get).
|
|
43002
|
+
- This SDK is installed as an NPM package (@rtsdk/topia) in consumer applications.
|
|
42770
43003
|
|
|
42771
43004
|
DO
|
|
42772
43005
|
- Expect consumers to import a pre-instantiated factory from their app (e.g., utils/topiaInit.ts).
|
|
@@ -42775,7 +43008,25 @@ AI RULES for code assistants
|
|
|
42775
43008
|
DO NOT
|
|
42776
43009
|
- Do NOT suggest creating Topia clients or factories inside controllers.
|
|
42777
43010
|
- Do NOT suggest non-existent methods: getById, fetch, find
|
|
42778
|
-
-
|
|
43011
|
+
- DO NOT mutate controller shape or return ad-hoc fields.
|
|
43012
|
+
|
|
43013
|
+
AVAILABLE METHODS:
|
|
43014
|
+
- fetchVisitor(): Retrieves visitor details from the world
|
|
43015
|
+
- fetchDataObject(): Gets visitor's data object
|
|
43016
|
+
- setDataObject(dataObject, options?): Sets visitor's entire data object
|
|
43017
|
+
- updateDataObject(dataObject, options?): Updates specific fields in visitor data
|
|
43018
|
+
- incrementDataObjectValue(path, amount, options?): Increments numeric value
|
|
43019
|
+
- moveVisitor(options): Moves or teleports visitor to coordinates
|
|
43020
|
+
- sendMessage(message): Sends chat message as the visitor
|
|
43021
|
+
- openIframe(options): Opens iframe for this visitor
|
|
43022
|
+
- closeIframe(): Closes visitor's open iframe
|
|
43023
|
+
- fireToast(options): Shows toast notification to visitor
|
|
43024
|
+
- getNpc(): Gets visitor's NPC if one exists
|
|
43025
|
+
- createNpc(userInventoryItemId, options?): Creates NPC follower
|
|
43026
|
+
- deleteNpc(): Removes visitor's NPC
|
|
43027
|
+
- fetchInventoryItems(): Gets all inventory items owned by visitor
|
|
43028
|
+
- grantInventoryItem(item, quantity?): Grants inventory item to visitor
|
|
43029
|
+
- modifyInventoryItemQuantity(item, quantity): Updates inventory item quantity
|
|
42779
43030
|
|
|
42780
43031
|
CANONICAL USAGE (consumer app):
|
|
42781
43032
|
// utils/topiaInit.ts
|
|
@@ -43340,14 +43591,30 @@ class Visitor extends User {
|
|
|
43340
43591
|
});
|
|
43341
43592
|
}
|
|
43342
43593
|
/**
|
|
43343
|
-
*
|
|
43594
|
+
* Retrieves the NPC (Non-Player Character) associated with this visitor, if one exists.
|
|
43595
|
+
*
|
|
43596
|
+
* @remarks
|
|
43597
|
+
* Each visitor can have one NPC per application public key. NPCs are AI-controlled
|
|
43598
|
+
* characters that follow the visitor around the world. They are created using inventory
|
|
43599
|
+
* items of type "npc" and appear as additional avatars that track the visitor's position.
|
|
43600
|
+
* If no NPC exists for this visitor and app, returns null.
|
|
43601
|
+
*
|
|
43602
|
+
* @keywords get, fetch, retrieve, npc, bot, follower, character, assistant, companion
|
|
43603
|
+
*
|
|
43604
|
+
* @category NPCs
|
|
43344
43605
|
*
|
|
43345
43606
|
* @example
|
|
43346
43607
|
* ```ts
|
|
43347
|
-
* await visitor.getNpc();
|
|
43608
|
+
* const npc = await visitor.getNpc();
|
|
43609
|
+
* if (npc) {
|
|
43610
|
+
* console.log(`NPC position: ${npc.position}`);
|
|
43611
|
+
* console.log(`NPC ID: ${npc.id}`);
|
|
43612
|
+
* } else {
|
|
43613
|
+
* console.log('No NPC found for this visitor');
|
|
43614
|
+
* }
|
|
43348
43615
|
* ```
|
|
43349
43616
|
*
|
|
43350
|
-
* @returns {Promise<Visitor | null>} Returns a Visitor object representing the NPC.
|
|
43617
|
+
* @returns {Promise<Visitor | null>} Returns a Visitor object representing the NPC, or null if none exists.
|
|
43351
43618
|
*/
|
|
43352
43619
|
getNpc() {
|
|
43353
43620
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -43366,12 +43633,25 @@ class Visitor extends User {
|
|
|
43366
43633
|
});
|
|
43367
43634
|
}
|
|
43368
43635
|
/**
|
|
43369
|
-
* Creates an NPC that follows this visitor using an inventory item the visitor owns.
|
|
43370
|
-
*
|
|
43636
|
+
* Creates an NPC (Non-Player Character) that follows this visitor using an inventory item the visitor owns.
|
|
43637
|
+
*
|
|
43638
|
+
* @remarks
|
|
43639
|
+
* One NPC is allowed per visitor, per application public key. NPCs are AI-controlled
|
|
43640
|
+
* characters that automatically follow the visitor around the world. They appear as
|
|
43641
|
+
* additional avatars and can be useful for companions, guides, or assistant characters.
|
|
43642
|
+
*
|
|
43643
|
+
* Requirements:
|
|
43644
|
+
* - The visitor must own a user inventory item of type "npc"
|
|
43645
|
+
* - The item must have been granted to the visitor before calling this method
|
|
43646
|
+
* - Only one NPC can exist per visitor per app at a time
|
|
43647
|
+
*
|
|
43648
|
+
* @keywords create, spawn, add, npc, bot, follower, character, assistant, companion
|
|
43649
|
+
*
|
|
43650
|
+
* @category NPCs
|
|
43371
43651
|
*
|
|
43372
|
-
* @param userInventoryItemId The ID of the user's inventory item (must be an NPC type item owned by this visitor)
|
|
43373
|
-
* @param options Optional configuration for the NPC
|
|
43374
|
-
* @param options.showNameplate Whether to display a nameplate above the NPC (default: true)
|
|
43652
|
+
* @param userInventoryItemId - The ID of the user's inventory item (must be an NPC type item owned by this visitor)
|
|
43653
|
+
* @param options - Optional configuration for the NPC
|
|
43654
|
+
* @param options.showNameplate - Whether to display a nameplate above the NPC (default: true)
|
|
43375
43655
|
*
|
|
43376
43656
|
* @example
|
|
43377
43657
|
* ```ts
|
|
@@ -43385,7 +43665,7 @@ class Visitor extends User {
|
|
|
43385
43665
|
* const npc = await visitor.createNpc(userItem.id, { showNameplate: false });
|
|
43386
43666
|
* ```
|
|
43387
43667
|
*
|
|
43388
|
-
* @returns {Promise<Visitor>} Returns a Visitor object representing the created NPC.
|
|
43668
|
+
* @returns {Promise<Visitor>} Returns a Visitor object representing the created NPC. The NPC will automatically follow the visitor.
|
|
43389
43669
|
*/
|
|
43390
43670
|
createNpc(userInventoryItemId, options) {
|
|
43391
43671
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -43402,11 +43682,25 @@ class Visitor extends User {
|
|
|
43402
43682
|
});
|
|
43403
43683
|
}
|
|
43404
43684
|
/**
|
|
43405
|
-
* Deletes the NPC this app has assigned to this visitor.
|
|
43685
|
+
* Deletes the NPC (Non-Player Character) this app has assigned to this visitor.
|
|
43686
|
+
*
|
|
43687
|
+
* @remarks
|
|
43688
|
+
* This method removes the NPC associated with this visitor for the current application.
|
|
43689
|
+
* The NPC will immediately disappear from the world. The underlying inventory item
|
|
43690
|
+
* is not consumed and can be used to create a new NPC later.
|
|
43691
|
+
*
|
|
43692
|
+
* @keywords delete, remove, destroy, dismiss, despawn, npc, bot, follower, character
|
|
43693
|
+
*
|
|
43694
|
+
* @category NPCs
|
|
43406
43695
|
*
|
|
43407
43696
|
* @example
|
|
43408
43697
|
* ```ts
|
|
43409
|
-
*
|
|
43698
|
+
* // Check if NPC exists before deleting
|
|
43699
|
+
* const npc = await visitor.getNpc();
|
|
43700
|
+
* if (npc) {
|
|
43701
|
+
* await visitor.deleteNpc();
|
|
43702
|
+
* console.log('NPC removed successfully');
|
|
43703
|
+
* }
|
|
43410
43704
|
* ```
|
|
43411
43705
|
*
|
|
43412
43706
|
* @returns {Promise<void>} Returns nothing if successful.
|
|
@@ -43458,15 +43752,32 @@ class Visitor extends User {
|
|
|
43458
43752
|
/**
|
|
43459
43753
|
* Grants an inventory item to this visitor.
|
|
43460
43754
|
*
|
|
43461
|
-
* @
|
|
43462
|
-
*
|
|
43755
|
+
* @remarks
|
|
43756
|
+
* This method requires that the inventory item is already defined in your application's inventory system.
|
|
43757
|
+
* Each visitor can only be granted an item once. Use modifyInventoryItemQuantity() to adjust quantities
|
|
43758
|
+
* for items the visitor already owns. The grant_source will be set to track where the item came from.
|
|
43759
|
+
*
|
|
43760
|
+
* Important: This method will throw an error if the visitor already owns this inventory item.
|
|
43761
|
+
* Check visitorInventoryItems first or use modifyInventoryItemQuantity() to update existing items.
|
|
43762
|
+
*
|
|
43763
|
+
* @keywords grant, give, add, inventory, item, visitor, award, reward
|
|
43764
|
+
*
|
|
43765
|
+
* @category Inventory
|
|
43766
|
+
*
|
|
43767
|
+
* @param item - The InventoryItem to grant to the visitor
|
|
43768
|
+
* @param quantity - The quantity to grant (default: 1)
|
|
43463
43769
|
*
|
|
43464
43770
|
* @example
|
|
43465
43771
|
* ```ts
|
|
43466
|
-
*
|
|
43772
|
+
* // First create or fetch the inventory item
|
|
43773
|
+
* const item = await InventoryItem.get("item-id-123");
|
|
43774
|
+
*
|
|
43775
|
+
* // Grant it to the visitor
|
|
43776
|
+
* const userItem = await visitor.grantInventoryItem(item, 2);
|
|
43777
|
+
* console.log(`Granted ${userItem.quantity} items to visitor`);
|
|
43467
43778
|
* ```
|
|
43468
43779
|
*
|
|
43469
|
-
* @returns {Promise<UserInventoryItem>} Returns the
|
|
43780
|
+
* @returns {Promise<UserInventoryItem>} Returns the granted UserInventoryItem with quantity and metadata.
|
|
43470
43781
|
*/
|
|
43471
43782
|
grantInventoryItem(item, quantity = 1) {
|
|
43472
43783
|
var _a;
|
|
@@ -43532,14 +43843,56 @@ class Visitor extends User {
|
|
|
43532
43843
|
}
|
|
43533
43844
|
_Visitor_visitorInventoryItems = new WeakMap();
|
|
43534
43845
|
|
|
43846
|
+
/* ============================================================================
|
|
43847
|
+
AI RULES for code assistants
|
|
43848
|
+
|
|
43849
|
+
CONTEXT
|
|
43850
|
+
- "Controllers" expose operations on domain objects (e.g., WebRTCConnector).
|
|
43851
|
+
- Consumers obtain controller instances via factory methods (e.g., WebRTCConnectorFactory.create).
|
|
43852
|
+
- This SDK is installed as an NPM package (@rtsdk/topia) in consumer applications.
|
|
43853
|
+
|
|
43854
|
+
DO
|
|
43855
|
+
- Expect consumers to import a pre-instantiated factory from their app (e.g., utils/topiaInit.ts).
|
|
43856
|
+
- Use ONLY the methods defined & documented in this file's types/TSDoc.
|
|
43857
|
+
|
|
43858
|
+
DO NOT
|
|
43859
|
+
- Do NOT suggest creating Topia clients or factories inside controllers.
|
|
43860
|
+
- Do NOT suggest non-existent methods: getById, fetch, find
|
|
43861
|
+
- Do NOT mutate controller shape or return ad-hoc fields.
|
|
43862
|
+
|
|
43863
|
+
AVAILABLE METHODS:
|
|
43864
|
+
- getTwilioConfig(): Retrieves Twilio configuration for WebRTC video/audio
|
|
43865
|
+
|
|
43866
|
+
CANONICAL USAGE (consumer app):
|
|
43867
|
+
// utils/topiaInit.ts
|
|
43868
|
+
import { Topia, WebRTCConnectorFactory } from "@rtsdk/topia";
|
|
43869
|
+
const topia = new Topia({ config });
|
|
43870
|
+
export const WebRTC = new WebRTCConnectorFactory(topia);
|
|
43871
|
+
|
|
43872
|
+
// controllers/myController.ts (consumer app)
|
|
43873
|
+
import { WebRTC } from "utils/topiaInit.ts";
|
|
43874
|
+
const webrtc = await WebRTC.create(urlSlug, { credentials });
|
|
43875
|
+
await webrtc.getTwilioConfig();
|
|
43876
|
+
|
|
43877
|
+
============================================================================ */
|
|
43535
43878
|
/**
|
|
43536
|
-
*
|
|
43879
|
+
* WebRTC connector for managing real-time video and audio connections in Topia worlds.
|
|
43880
|
+
*
|
|
43881
|
+
* @remarks
|
|
43882
|
+
* This class should NOT be instantiated directly. Use WebRTCConnectorFactory to create instances.
|
|
43883
|
+
* The WebRTCConnector provides access to Twilio configuration needed for establishing
|
|
43884
|
+
* peer-to-peer video and audio connections between visitors in a world.
|
|
43885
|
+
*
|
|
43886
|
+
* @see WebRTCConnectorFactory for proper instantiation
|
|
43887
|
+
*
|
|
43888
|
+
* @keywords webrtc, video, audio, twilio, real-time, communication, voice, peer
|
|
43537
43889
|
*
|
|
43538
43890
|
* @example
|
|
43539
43891
|
* ```ts
|
|
43540
|
-
*
|
|
43541
|
-
*
|
|
43542
|
-
* });
|
|
43892
|
+
* import { WebRTC } from "utils/topiaInit.ts";
|
|
43893
|
+
*
|
|
43894
|
+
* const webrtc = await WebRTC.create(urlSlug, { credentials });
|
|
43895
|
+
* const config = await webrtc.getTwilioConfig();
|
|
43543
43896
|
* ```
|
|
43544
43897
|
*/
|
|
43545
43898
|
class WebRTCConnector extends SDKController {
|
|
@@ -43550,12 +43903,25 @@ class WebRTCConnector extends SDKController {
|
|
|
43550
43903
|
this.urlSlug = urlSlug;
|
|
43551
43904
|
}
|
|
43552
43905
|
/**
|
|
43553
|
-
*
|
|
43906
|
+
* Retrieves the Twilio configuration for WebRTC connections in a world.
|
|
43907
|
+
*
|
|
43908
|
+
* @remarks
|
|
43909
|
+
* This method fetches the Twilio room configuration needed to establish peer-to-peer
|
|
43910
|
+
* video and audio connections between visitors. The configuration includes authentication
|
|
43911
|
+
* tokens and room settings. Call this before initializing WebRTC connections.
|
|
43912
|
+
*
|
|
43913
|
+
* @keywords get, fetch, retrieve, webrtc, twilio, configuration, video, audio, connection
|
|
43914
|
+
*
|
|
43915
|
+
* @category WebRTC
|
|
43554
43916
|
*
|
|
43555
43917
|
* @example
|
|
43556
43918
|
* ```ts
|
|
43557
43919
|
* await webRTCConnector.getTwilioConfig();
|
|
43920
|
+
* const { twilioConfig } = webRTCConnector;
|
|
43921
|
+
* console.log(twilioConfig); // Use for WebRTC setup
|
|
43558
43922
|
* ```
|
|
43923
|
+
*
|
|
43924
|
+
* @returns {Promise<void | ResponseType>} Populates twilioConfig property with Twilio room configuration, or returns an error response.
|
|
43559
43925
|
*/
|
|
43560
43926
|
getTwilioConfig() {
|
|
43561
43927
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -43578,6 +43944,7 @@ AI RULES for code assistants
|
|
|
43578
43944
|
CONTEXT
|
|
43579
43945
|
- "Controllers" expose operations on domain objects (e.g., WorldActivity).
|
|
43580
43946
|
- Consumers obtain controller instances via factory methods (e.g., WorldActivityFactory.get).
|
|
43947
|
+
- This SDK is installed as an NPM package (@rtsdk/topia) in consumer applications.
|
|
43581
43948
|
|
|
43582
43949
|
DO
|
|
43583
43950
|
- Expect consumers to import a pre-instantiated factory from their app (e.g., utils/topiaInit.ts).
|
|
@@ -43588,6 +43955,12 @@ AI RULES for code assistants
|
|
|
43588
43955
|
- Do NOT suggest non-existent methods: getById, fetch, find
|
|
43589
43956
|
- Do NOT mutate controller shape or return ad-hoc fields.
|
|
43590
43957
|
|
|
43958
|
+
AVAILABLE METHODS:
|
|
43959
|
+
- currentVisitors(shouldIncludeAdminPermissions?): Retrieves all visitors currently in the world
|
|
43960
|
+
- fetchVisitorsInZone(options): Gets visitors in a specific landmark zone
|
|
43961
|
+
- moveAllVisitors(options): Moves all visitors to specified coordinates
|
|
43962
|
+
- moveVisitors(visitorsToMove): Moves specific visitors to various coordinates
|
|
43963
|
+
|
|
43591
43964
|
CANONICAL USAGE (consumer app):
|
|
43592
43965
|
// utils/topiaInit.ts
|
|
43593
43966
|
import { Topia, WorldActivityFactory } from "@rtsdk/topia";
|