@bedrock-rbx/ocale 0.1.0-beta.1

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.
@@ -0,0 +1,387 @@
1
+ import { d as OpenCloudError, i as OpenCloudClientOptions, l as Result, s as RequestOptions } from "./types-YCTsM8Qd.mjs";
2
+
3
+ //#region src/domains/cloud-v2/universes/types.d.ts
4
+ /**
5
+ * Caller-supplied input for the `get` method on `UniversesClient`.
6
+ */
7
+ interface GetUniverseParameters {
8
+ /** Stringified ID of the universe to fetch. */
9
+ readonly universeId: string;
10
+ }
11
+ /**
12
+ * A social link that may be associated with a universe.
13
+ */
14
+ interface SocialLink {
15
+ /** Display title of the link. */
16
+ readonly title: string;
17
+ /** Destination URI. */
18
+ readonly uri: string;
19
+ }
20
+ /** Public visibility classification. */
21
+ type UniverseVisibility = "private" | "public" | "unspecified";
22
+ /**
23
+ * Caller-supplied input for the `update` method on `UniversesClient`.
24
+ * Every writable field is optional; presence of a key drives the
25
+ * `updateMask` query string that the server uses as the field-mask for
26
+ * the partial update. Absent keys are left untouched server-side.
27
+ * Setting a key to `undefined` clears the corresponding server-side
28
+ * value (applicable to `privateServerPriceRobux` and each optional
29
+ * social link).
30
+ */
31
+ interface UpdateUniverseParameters {
32
+ /** Whether console players can join. */
33
+ readonly consoleEnabled?: boolean;
34
+ /** Whether desktop players can join. */
35
+ readonly desktopEnabled?: boolean;
36
+ /** Discord social link block; `undefined` clears the server value. */
37
+ readonly discordSocialLink?: SocialLink | undefined;
38
+ /** Facebook social link block; `undefined` clears the server value. */
39
+ readonly facebookSocialLink?: SocialLink | undefined;
40
+ /** Guilded social link block; `undefined` clears the server value. */
41
+ readonly guildedSocialLink?: SocialLink | undefined;
42
+ /** Whether mobile players can join. */
43
+ readonly mobileEnabled?: boolean;
44
+ /** Private-server price in Robux; `undefined` disables private servers. */
45
+ readonly privateServerPriceRobux?: number | undefined;
46
+ /** Roblox Group social link block; `undefined` clears the server value. */
47
+ readonly robloxGroupSocialLink?: SocialLink | undefined;
48
+ /** Whether tablet players can join. */
49
+ readonly tabletEnabled?: boolean;
50
+ /** Twitch social link block; `undefined` clears the server value. */
51
+ readonly twitchSocialLink?: SocialLink | undefined;
52
+ /** Twitter social link block; `undefined` clears the server value. */
53
+ readonly twitterSocialLink?: SocialLink | undefined;
54
+ /** Stringified ID of the universe to update. */
55
+ readonly universeId: string;
56
+ /** Whether voice chat is enabled. */
57
+ readonly voiceChatEnabled?: boolean;
58
+ /** Whether VR players can join. */
59
+ readonly vrEnabled?: boolean;
60
+ /** Youtube social link block; `undefined` clears the server value. */
61
+ readonly youtubeSocialLink?: SocialLink | undefined;
62
+ }
63
+ /**
64
+ * Discriminated-union representation of a universe's owner.
65
+ */
66
+ interface UniverseOwner {
67
+ /**
68
+ * Stringified numeric owner ID, extracted from the wire
69
+ * `users/{id}` or `groups/{id}` resource path.
70
+ */
71
+ readonly id: string;
72
+ /** Whether the owner is a user or a group. */
73
+ readonly kind: "group" | "user";
74
+ }
75
+ /** Public age-rating classification. */
76
+ type UniverseAgeRating = "9Plus" | "13Plus" | "17Plus" | "all" | "unspecified";
77
+ /**
78
+ * Parsed representation of a Roblox universe's configuration.
79
+ */
80
+ interface Universe {
81
+ /** Stringified universe ID, extracted from the wire `path`. */
82
+ readonly id: string;
83
+ /** Age-rating classification. */
84
+ readonly ageRating: UniverseAgeRating;
85
+ /** Whether console players can join. */
86
+ readonly consoleEnabled: boolean;
87
+ /** Timestamp when the universe was created. */
88
+ readonly createdAt: Date;
89
+ /** Long-form description of the universe. */
90
+ readonly description: string;
91
+ /** Whether desktop players can join. */
92
+ readonly desktopEnabled: boolean;
93
+ /** Discord social link; `undefined` when absent. */
94
+ readonly discordSocialLink: SocialLink | undefined;
95
+ /** Display name of the universe. */
96
+ readonly displayName: string;
97
+ /** Facebook social link; `undefined` when absent. */
98
+ readonly facebookSocialLink: SocialLink | undefined;
99
+ /** Guilded social link; `undefined` when absent. */
100
+ readonly guildedSocialLink: SocialLink | undefined;
101
+ /** Whether mobile players can join. */
102
+ readonly mobileEnabled: boolean;
103
+ /** Owner of the universe (user or group). */
104
+ readonly owner: UniverseOwner;
105
+ /** Private server price in Robux; `undefined` when not supported. */
106
+ readonly privateServerPriceRobux: number | undefined;
107
+ /** Roblox Group social link; `undefined` when absent. */
108
+ readonly robloxGroupSocialLink: SocialLink | undefined;
109
+ /** Root place ID; `undefined` when the universe has no resolved root place. */
110
+ readonly rootPlaceId: string | undefined;
111
+ /** Whether tablet players can join. */
112
+ readonly tabletEnabled: boolean;
113
+ /** Twitch social link; `undefined` when absent. */
114
+ readonly twitchSocialLink: SocialLink | undefined;
115
+ /** Twitter social link; `undefined` when absent. */
116
+ readonly twitterSocialLink: SocialLink | undefined;
117
+ /** Timestamp of the most recent update. */
118
+ readonly updatedAt: Date;
119
+ /** Visibility classification. */
120
+ readonly visibility: UniverseVisibility;
121
+ /** Whether voice chat is enabled. */
122
+ readonly voiceChatEnabled: boolean;
123
+ /** Whether VR players can join. */
124
+ readonly vrEnabled: boolean;
125
+ /** Youtube social link; `undefined` when absent. */
126
+ readonly youtubeSocialLink: SocialLink | undefined;
127
+ }
128
+ //#endregion
129
+ //#region src/domains/game-internationalization/game-icon/wire.d.ts
130
+ /**
131
+ * Image moderation state returned alongside each localized icon.
132
+ */
133
+ type GameIconState = "Approved" | "Error" | "PendingReview" | "Rejected" | "UnAvailable";
134
+ //#endregion
135
+ //#region src/domains/game-internationalization/game-icon/types.d.ts
136
+ /**
137
+ * A localized icon entry returned by listing icons for an experience.
138
+ */
139
+ interface ExperienceIcon {
140
+ /** Stringified ID of the uploaded icon image. */
141
+ readonly imageId: string;
142
+ /** CDN URL the icon can be loaded from. */
143
+ readonly imageUrl: string;
144
+ /** BCP-47 language code the icon is registered against (e.g. `en-us`). */
145
+ readonly languageCode: string;
146
+ /** Moderation state of the icon. */
147
+ readonly state: GameIconState;
148
+ }
149
+ /**
150
+ * Parameters for uploading or replacing a localized experience icon. A
151
+ * subsequent upload for the same `(universeId, languageCode)` pair replaces
152
+ * the existing icon for that locale.
153
+ */
154
+ interface UploadExperienceIconParameters {
155
+ /** Image bytes to upload. PNG and JPEG are accepted by the server. */
156
+ readonly image: Blob | Uint8Array;
157
+ /** BCP-47 language code the icon is being uploaded for (e.g. `en-us`). */
158
+ readonly languageCode: string;
159
+ /** Stringified ID of the universe whose icon is being uploaded. */
160
+ readonly universeId: string;
161
+ }
162
+ /**
163
+ * Parameters for deleting the localized icon registered against a universe
164
+ * for a given language.
165
+ */
166
+ interface DeleteExperienceIconParameters {
167
+ /** BCP-47 language code of the icon to delete. */
168
+ readonly languageCode: string;
169
+ /** Stringified ID of the universe whose icon is being deleted. */
170
+ readonly universeId: string;
171
+ }
172
+ /**
173
+ * Parameters for listing every localized icon registered against a universe.
174
+ */
175
+ interface ListExperienceIconsParameters {
176
+ /** Stringified ID of the universe whose icons are being listed. */
177
+ readonly universeId: string;
178
+ }
179
+ //#endregion
180
+ //#region src/domains/game-internationalization/game-thumbnails/types.d.ts
181
+ /**
182
+ * Result of uploading a localized experience thumbnail.
183
+ */
184
+ interface UploadedExperienceThumbnail {
185
+ /** Stringified media asset ID of the uploaded thumbnail. */
186
+ readonly mediaAssetId: string;
187
+ }
188
+ /**
189
+ * Parameters for uploading a new localized experience thumbnail. Each upload
190
+ * appends a new entry to the carousel; reorder via {@link ReorderExperienceThumbnailsParameters}
191
+ * after multiple uploads to set the display order.
192
+ */
193
+ interface UploadExperienceThumbnailParameters {
194
+ /** Image bytes to upload. PNG and JPEG are accepted by the server. */
195
+ readonly image: Blob | Uint8Array;
196
+ /** BCP-47 language code the thumbnail is being uploaded for (e.g. `en-us`). */
197
+ readonly languageCode: string;
198
+ /** Stringified ID of the universe whose carousel is being appended to. */
199
+ readonly universeId: string;
200
+ }
201
+ /**
202
+ * Parameters for deleting a single thumbnail by media asset ID.
203
+ */
204
+ interface DeleteExperienceThumbnailParameters {
205
+ /** Stringified media asset ID of the thumbnail to delete. */
206
+ readonly imageId: string;
207
+ /** BCP-47 language code of the thumbnail to delete. */
208
+ readonly languageCode: string;
209
+ /** Stringified ID of the universe whose carousel is being modified. */
210
+ readonly universeId: string;
211
+ }
212
+ /**
213
+ * Parameters for reordering the localized thumbnail carousel. The supplied
214
+ * `orderedImageIds` describes the new display order from first to last.
215
+ */
216
+ interface ReorderExperienceThumbnailsParameters {
217
+ /** BCP-47 language code of the carousel being reordered. */
218
+ readonly languageCode: string;
219
+ /** Stringified media asset IDs in the desired display order. */
220
+ readonly orderedImageIds: ReadonlyArray<string>;
221
+ /** Stringified ID of the universe whose carousel is being reordered. */
222
+ readonly universeId: string;
223
+ }
224
+ //#endregion
225
+ //#region src/resources/universes/client.d.ts
226
+ interface UniverseIconHandle {
227
+ /**
228
+ * Deletes the localized icon registered against a universe for a given
229
+ * language. Removing the source-language icon is rejected server-side;
230
+ * consumers must replace it via {@link UniverseIconHandle.upload}
231
+ * instead.
232
+ *
233
+ * @param parameters - Universe and language identifiers of the icon to
234
+ * delete.
235
+ * @param options - Optional per-request overrides.
236
+ * @returns A success {@link Result} with no payload, or the
237
+ * {@link OpenCloudError} that caused the request to fail.
238
+ */
239
+ delete: (parameters: DeleteExperienceIconParameters, options?: RequestOptions) => Promise<Result<undefined, OpenCloudError>>;
240
+ /**
241
+ * Lists every localized icon registered against an experience. The
242
+ * server returns one entry per locale that has an icon registered.
243
+ *
244
+ * @param parameters - Universe identifier whose icons to list.
245
+ * @param options - Optional per-request overrides.
246
+ * @returns A {@link Result} wrapping the parsed array of
247
+ * {@link ExperienceIcon} entries or the {@link OpenCloudError} that
248
+ * caused the request to fail.
249
+ */
250
+ list: (parameters: ListExperienceIconsParameters, options?: RequestOptions) => Promise<Result<ReadonlyArray<ExperienceIcon>, OpenCloudError>>;
251
+ /**
252
+ * Uploads or replaces the localized icon for an experience. A
253
+ * subsequent upload for the same `(universeId, languageCode)` pair
254
+ * replaces the existing icon for that locale.
255
+ *
256
+ * @param parameters - Universe and language identifiers plus the image
257
+ * bytes to upload.
258
+ * @param options - Optional per-request overrides (e.g. A different
259
+ * {@link OpenCloudClientOptions.apiKey} for this call only).
260
+ * @returns A success {@link Result} with no payload, or the
261
+ * {@link OpenCloudError} that caused the request to fail.
262
+ */
263
+ upload: (parameters: UploadExperienceIconParameters, options?: RequestOptions) => Promise<Result<undefined, OpenCloudError>>;
264
+ }
265
+ interface UniverseThumbnailsHandle {
266
+ /**
267
+ * Deletes a single thumbnail by media asset ID. Idempotent: deleting an
268
+ * already-removed thumbnail surfaces the server's 404 unchanged.
269
+ *
270
+ * @param parameters - Universe, language, and image identifiers of the
271
+ * thumbnail to delete.
272
+ * @param options - Optional per-request overrides.
273
+ * @returns A success {@link Result} with no payload, or the
274
+ * {@link OpenCloudError} that caused the request to fail.
275
+ */
276
+ delete: (parameters: DeleteExperienceThumbnailParameters, options?: RequestOptions) => Promise<Result<undefined, OpenCloudError>>;
277
+ /**
278
+ * Reorders the localized thumbnail carousel. The supplied
279
+ * `orderedImageIds` describes the desired display order from first to
280
+ * last. Image IDs must be positive integers within the safe-integer
281
+ * range; invalid input is rejected with a {@link OpenCloudError} of
282
+ * kind `ValidationError` before any HTTP round-trip.
283
+ *
284
+ * @param parameters - Universe, language, and the desired display order.
285
+ * @param options - Optional per-request overrides.
286
+ * @returns A success {@link Result} with no payload, or the
287
+ * {@link OpenCloudError} that caused the request to fail.
288
+ */
289
+ reorder: (parameters: ReorderExperienceThumbnailsParameters, options?: RequestOptions) => Promise<Result<undefined, OpenCloudError>>;
290
+ /**
291
+ * Uploads a new thumbnail and appends it to the localized carousel. Use
292
+ * {@link UniverseThumbnailsHandle.reorder} after multiple uploads to
293
+ * set the display order.
294
+ *
295
+ * @param parameters - Universe and language identifiers plus the image
296
+ * bytes to upload.
297
+ * @param options - Optional per-request overrides (e.g. A different
298
+ * {@link OpenCloudClientOptions.apiKey} for this call only).
299
+ * @returns A {@link Result} wrapping the parsed
300
+ * {@link UploadedExperienceThumbnail} or the {@link OpenCloudError}
301
+ * that caused the request to fail.
302
+ */
303
+ upload: (parameters: UploadExperienceThumbnailParameters, options?: RequestOptions) => Promise<Result<UploadedExperienceThumbnail, OpenCloudError>>;
304
+ }
305
+ /**
306
+ * Public client for the Roblox Open Cloud `Universe` resource. Wires
307
+ * the request builders, the injected
308
+ * {@link OpenCloudClientOptions.httpClient}, and the response parser
309
+ * into a single ergonomic surface. Every method returns a
310
+ * {@link Result} so callers handle failure explicitly; no thrown
311
+ * {@link OpenCloudError} ever escapes the client.
312
+ *
313
+ * Partial updates use a Google-style `updateMask` query string derived
314
+ * from the keys present on the update parameters. Setting a clearable
315
+ * field (`privateServerPriceRobux` or any social link) to `undefined`
316
+ * sends JSON `null` for that field so the server clears the
317
+ * corresponding value.
318
+ *
319
+ * Localized experience-icon and experience-thumbnail Operations are
320
+ * bound on the {@link UniversesClient.icon} and
321
+ * {@link UniversesClient.thumbnails} Operation Groups so callers reach
322
+ * for one client per universe.
323
+ *
324
+ * @example
325
+ *
326
+ * ```ts
327
+ * import { UniversesClient } from "@bedrock-rbx/ocale/universes";
328
+ *
329
+ * const client = new UniversesClient({ apiKey: "your-key" });
330
+ * expect(client).toBeInstanceOf(UniversesClient);
331
+ * ```
332
+ */
333
+ declare class UniversesClient {
334
+ #private;
335
+ /**
336
+ * Operation Group exposing the localized experience-icon
337
+ * Operations (`upload`, `delete`, `list`) backed by the
338
+ * `legacy-game-internationalization` domain. Shares the parent
339
+ * client's HTTP, rate-limit, and retry plumbing.
340
+ */
341
+ readonly icon: UniverseIconHandle;
342
+ /**
343
+ * Operation Group exposing the localized experience-thumbnail
344
+ * Operations (`upload`, `delete`, `reorder`) backed by the
345
+ * `legacy-game-internationalization` domain. No list-thumbnails
346
+ * endpoint is bridged; consumers must track uploaded
347
+ * `mediaAssetId`s in their own state store to reconcile against
348
+ * the existing carousel. Shares the parent client's HTTP,
349
+ * rate-limit, and retry plumbing.
350
+ */
351
+ readonly thumbnails: UniverseThumbnailsHandle;
352
+ /**
353
+ * Creates a new {@link UniversesClient}. Configuration is frozen
354
+ * on construction; per-request overrides are accepted on each
355
+ * method.
356
+ *
357
+ * @param options - Client-level configuration including the API key.
358
+ */
359
+ constructor(options: OpenCloudClientOptions);
360
+ /**
361
+ * Fetches the current configuration of a universe.
362
+ *
363
+ * @param parameters - The universe identifier.
364
+ * @param options - Optional per-request overrides (e.g. A different
365
+ * {@link OpenCloudClientOptions.apiKey} for this call only).
366
+ * @returns A {@link Result} wrapping the parsed {@link Universe}
367
+ * or the {@link OpenCloudError} that caused the request to fail.
368
+ */
369
+ get(parameters: GetUniverseParameters, options?: RequestOptions): Promise<Result<Universe, OpenCloudError>>;
370
+ /**
371
+ * Partially updates a universe's configuration. The fields
372
+ * supplied on `parameters` (excluding `universeId`) are forwarded
373
+ * to the server via a Google-style `updateMask`; unmentioned
374
+ * fields are left untouched.
375
+ *
376
+ * @param parameters - The universe identifier and the fields to
377
+ * update. At least one updatable field must be supplied.
378
+ * @param options - Optional per-request overrides (e.g. A different
379
+ * {@link OpenCloudClientOptions.apiKey} for this call only).
380
+ * @returns A {@link Result} wrapping the parsed {@link Universe}
381
+ * or the {@link OpenCloudError} that caused the request to fail.
382
+ */
383
+ update(parameters: UpdateUniverseParameters, options?: RequestOptions): Promise<Result<Universe, OpenCloudError>>;
384
+ }
385
+ //#endregion
386
+ export { type DeleteExperienceIconParameters, type DeleteExperienceThumbnailParameters, type ExperienceIcon, type GameIconState, type GetUniverseParameters, type ListExperienceIconsParameters, type ReorderExperienceThumbnailsParameters, type SocialLink, type Universe, type UniverseAgeRating, type UniverseOwner, type UniverseVisibility, UniversesClient, type UpdateUniverseParameters, type UploadExperienceIconParameters, type UploadExperienceThumbnailParameters, type UploadedExperienceThumbnail };
387
+ //# sourceMappingURL=universes.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universes.d.mts","names":[],"sources":["../src/domains/cloud-v2/universes/types.ts","../src/domains/game-internationalization/game-icon/wire.ts","../src/domains/game-internationalization/game-icon/types.ts","../src/domains/game-internationalization/game-thumbnails/types.ts","../src/resources/universes/client.ts"],"mappings":"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"}