@bedrock-rbx/ocale 0.1.0-beta.2 → 0.1.0-beta.20

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.
Files changed (81) hide show
  1. package/README.md +129 -0
  2. package/dist/badges.d.mts +33 -2
  3. package/dist/badges.d.mts.map +1 -1
  4. package/dist/badges.mjs +12 -4
  5. package/dist/badges.mjs.map +1 -1
  6. package/dist/{data.generated-BtkDGH8C.d.mts → data.generated-B2ceLfSn.d.mts} +9 -1
  7. package/dist/data.generated-B2ceLfSn.d.mts.map +1 -0
  8. package/dist/developer-products.d.mts +38 -2
  9. package/dist/developer-products.d.mts.map +1 -1
  10. package/dist/developer-products.mjs +22 -5
  11. package/dist/developer-products.mjs.map +1 -1
  12. package/dist/game-passes.d.mts +40 -2
  13. package/dist/game-passes.d.mts.map +1 -1
  14. package/dist/game-passes.mjs +22 -5
  15. package/dist/game-passes.mjs.map +1 -1
  16. package/dist/index.d.mts +110 -12
  17. package/dist/index.d.mts.map +1 -1
  18. package/dist/index.mjs +5 -3
  19. package/dist/locales.d.mts +1 -1
  20. package/dist/locales.mjs +2 -0
  21. package/dist/locales.mjs.map +1 -1
  22. package/dist/luau-execution.d.mts +112 -6
  23. package/dist/luau-execution.d.mts.map +1 -1
  24. package/dist/luau-execution.mjs +129 -4
  25. package/dist/luau-execution.mjs.map +1 -1
  26. package/dist/places.d.mts +64 -6
  27. package/dist/places.d.mts.map +1 -1
  28. package/dist/places.mjs +33 -61
  29. package/dist/places.mjs.map +1 -1
  30. package/dist/poll-timeout-C0nmJzOd.mjs +83 -0
  31. package/dist/poll-timeout-C0nmJzOd.mjs.map +1 -0
  32. package/dist/polling-helpers-Cb4j4cq7.mjs +787 -0
  33. package/dist/polling-helpers-Cb4j4cq7.mjs.map +1 -0
  34. package/dist/polling-rj0dGREg.d.mts +312 -0
  35. package/dist/polling-rj0dGREg.d.mts.map +1 -0
  36. package/dist/{price-information-s7DY0GV2.mjs → price-information-Bu87sPyh.mjs} +2 -2
  37. package/dist/{price-information-s7DY0GV2.mjs.map → price-information-Bu87sPyh.mjs.map} +1 -1
  38. package/dist/{rate-limit-CKfuhxT1.mjs → rate-limit-Co9i28qi.mjs} +24 -38
  39. package/dist/rate-limit-Co9i28qi.mjs.map +1 -0
  40. package/dist/{resource-client-Wi4Mwqy5.mjs → resource-client-lE7Tg3BK.mjs} +349 -241
  41. package/dist/resource-client-lE7Tg3BK.mjs.map +1 -0
  42. package/dist/retry-CbHBw60o.mjs +380 -0
  43. package/dist/retry-CbHBw60o.mjs.map +1 -0
  44. package/dist/retry-r1TXe5Zd.d.mts +189 -0
  45. package/dist/retry-r1TXe5Zd.d.mts.map +1 -0
  46. package/dist/signatures-JF-7Psce.mjs +59 -0
  47. package/dist/signatures-JF-7Psce.mjs.map +1 -0
  48. package/dist/storage.d.mts +322 -31
  49. package/dist/storage.d.mts.map +1 -1
  50. package/dist/storage.mjs +506 -18
  51. package/dist/storage.mjs.map +1 -1
  52. package/dist/testing.d.mts +727 -0
  53. package/dist/testing.d.mts.map +1 -0
  54. package/dist/testing.mjs +457 -0
  55. package/dist/testing.mjs.map +1 -0
  56. package/dist/{to-blob-1BtHsDGK.mjs → to-blob-RPqMBuft.mjs} +1 -1
  57. package/dist/{to-blob-1BtHsDGK.mjs.map → to-blob-RPqMBuft.mjs.map} +1 -1
  58. package/dist/{types-Cp8w8uwA.d.mts → types-CRiJg5EQ.d.mts} +46 -4
  59. package/dist/types-CRiJg5EQ.d.mts.map +1 -0
  60. package/dist/universes.d.mts +47 -10
  61. package/dist/universes.d.mts.map +1 -1
  62. package/dist/universes.mjs +7 -5
  63. package/dist/universes.mjs.map +1 -1
  64. package/dist/{validation-b7KAoEio.mjs → validation-9oU6qNNQ.mjs} +4 -2
  65. package/dist/validation-9oU6qNNQ.mjs.map +1 -0
  66. package/dist/wire-D3K-a-UP.d.mts +37 -0
  67. package/dist/wire-D3K-a-UP.d.mts.map +1 -0
  68. package/package.json +9 -7
  69. package/dist/data.generated-BtkDGH8C.d.mts.map +0 -1
  70. package/dist/is-date-time-string-Cuf1TaSC.mjs +0 -19
  71. package/dist/is-date-time-string-Cuf1TaSC.mjs.map +0 -1
  72. package/dist/rate-limit-CKfuhxT1.mjs.map +0 -1
  73. package/dist/rate-limit-DzHBFwps.d.mts +0 -92
  74. package/dist/rate-limit-DzHBFwps.d.mts.map +0 -1
  75. package/dist/resource-client-Wi4Mwqy5.mjs.map +0 -1
  76. package/dist/specs-Co6qYp_E.mjs +0 -309
  77. package/dist/specs-Co6qYp_E.mjs.map +0 -1
  78. package/dist/types-BZ0959rh.d.mts +0 -149
  79. package/dist/types-BZ0959rh.d.mts.map +0 -1
  80. package/dist/types-Cp8w8uwA.d.mts.map +0 -1
  81. package/dist/validation-b7KAoEio.mjs.map +0 -1
@@ -0,0 +1,727 @@
1
+ import { d as OpenCloudError, l as Result, n as HttpRequest, o as RequestConfig, r as HttpResponse, t as HttpClient, u as SleepFunc } from "./types-CRiJg5EQ.mjs";
2
+ import { r as GetGameIconResponseWire, t as GameIconListWire } from "./wire-D3K-a-UP.mjs";
3
+
4
+ //#region src/domains/badges/badges/wire.d.ts
5
+ /**
6
+ * Wire shape of
7
+ * `Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Platform.Badges.BadgeAwarderType_`.
8
+ */
9
+ interface BadgeAwarderWire {
10
+ /** Int64 awarder ID. */
11
+ readonly id: number;
12
+ /** Display name of the awarding entity. */
13
+ readonly name: string;
14
+ /** Numeric awarder kind. `1` is `Place`. */
15
+ readonly type: BadgeAwarderTypeWire;
16
+ }
17
+ /**
18
+ * Wire shape of `Roblox.Web.Responses.Badges.BadgeAwardStatisticsResponse`.
19
+ */
20
+ interface BadgeStatisticsWire {
21
+ /** Int64 lifetime awarded count. */
22
+ readonly awardedCount: number;
23
+ /** Int64 awarded count over the past day. */
24
+ readonly pastDayAwardedCount: number;
25
+ /** Double win-rate percentage in the range `[0, 100]`. */
26
+ readonly winRatePercentage: number;
27
+ }
28
+ /**
29
+ * Wire shape of `Roblox.Web.Responses.Badges.BadgeResponseV2`: the response
30
+ * body returned by the legacy badges create endpoint.
31
+ */
32
+ interface BadgeResponseV2Wire {
33
+ /** Int64 badge ID, serialized as a JSON number. */
34
+ readonly id: number;
35
+ /** Display name of the badge. */
36
+ readonly name: string;
37
+ /** Awarding entity block. */
38
+ readonly awarder: BadgeAwarderWire;
39
+ /** ISO timestamp at which the badge was created (`date-time`). */
40
+ readonly created: string;
41
+ /** Source-language description. */
42
+ readonly description: string;
43
+ /** Resolved description for the requesting locale. */
44
+ readonly displayDescription: string;
45
+ /** Int64 resolved icon image asset ID; `0` signals no icon for this locale. */
46
+ readonly displayIconImageId: number;
47
+ /** Resolved name for the requesting locale. */
48
+ readonly displayName: string;
49
+ /** Whether the badge is currently active. Disabled badges cannot be awarded. */
50
+ readonly enabled: boolean;
51
+ /** Int64 source-language icon image asset ID; `0` signals no icon. */
52
+ readonly iconImageId: number;
53
+ /** Award statistics block. */
54
+ readonly statistics: BadgeStatisticsWire;
55
+ /** ISO timestamp of the most recent update (`date-time`). */
56
+ readonly updated: string;
57
+ }
58
+ /**
59
+ * Wire shape of `Roblox.Platform.Badges.BadgeAwarderType`.
60
+ */
61
+ type BadgeAwarderTypeWire = 1;
62
+ //#endregion
63
+ //#region tests/helpers/badges.d.ts
64
+ /**
65
+ * Builds a minimally-valid {@link BadgeResponseV2Wire} body. Pass an
66
+ * `overrides` object to tweak individual fields while keeping everything
67
+ * else schema-compliant; useful for parser and integration tests that
68
+ * only care about one field at a time.
69
+ *
70
+ * @param overrides - Fields to override on the default body.
71
+ * @returns A valid wire body with the overrides applied.
72
+ */
73
+ declare function validBadgeBody(overrides?: Partial<BadgeResponseV2Wire>): BadgeResponseV2Wire;
74
+ //#endregion
75
+ //#region src/internal/price-information.d.ts
76
+ /**
77
+ * Wire shape shared by every Roblox commerce resource that carries a
78
+ * `priceInformation` block (game passes, developer products, ...). Resources
79
+ * vary in the literal set their `enabledFeatures` may contain, so the feature
80
+ * type is left as a parameter `F`.
81
+ *
82
+ * @template F - The string-literal union for this resource's pricing-feature flags.
83
+ */
84
+ interface PriceInformationLike<F extends string> {
85
+ /** Default Robux price; `undefined` when the schema returns null. */
86
+ readonly defaultPriceInRobux: number | undefined;
87
+ /** Enabled pricing feature flags, in the order returned by the API. */
88
+ readonly enabledFeatures: ReadonlyArray<F>;
89
+ }
90
+ //#endregion
91
+ //#region src/domains/developer-products/products/wire.d.ts
92
+ /**
93
+ * Wire-level pricing feature flag, mirroring `DeveloperProducts.PricingFeature`.
94
+ */
95
+ type DeveloperProductPricingFeatureWire = "Invalid" | "PriceOptimization" | "RegionalPricing" | "UserFixedPrice";
96
+ /**
97
+ * Wire shape of `DeveloperProductConfigV2`: the response body returned by
98
+ * the developer-products read and create endpoints.
99
+ */
100
+ interface DeveloperProductConfigV2 {
101
+ /** Display name of the developer product. */
102
+ readonly name: string;
103
+ /** ISO timestamp at which the developer product was created (`date-time`). */
104
+ readonly createdTimestamp: string;
105
+ /** Consumer-facing description shown on the storefront. */
106
+ readonly description: string;
107
+ /** Int64 icon image asset ID; `undefined` when no icon is uploaded. */
108
+ readonly iconImageAssetId: number | undefined;
109
+ /** Whether the developer product is currently purchasable. */
110
+ readonly isForSale: boolean;
111
+ /** Whether the developer product is locked from configuration changes. */
112
+ readonly isImmutable: boolean;
113
+ /** Pricing block; `undefined` when the schema returns null. */
114
+ readonly priceInformation: DeveloperProductPriceInformationWire | undefined;
115
+ /** Int64 developer product ID, serialized as a JSON number. */
116
+ readonly productId: number;
117
+ /** Whether the developer product appears on the external store page. */
118
+ readonly storePageEnabled: boolean;
119
+ /** Int64 universe ID that owns the developer product. */
120
+ readonly universeId: number;
121
+ /** ISO timestamp of the most recent update (`date-time`). */
122
+ readonly updatedTimestamp: string;
123
+ }
124
+ /**
125
+ * Wire shape of `DeveloperProducts.PriceInformationStruct`.
126
+ */
127
+ type DeveloperProductPriceInformationWire = PriceInformationLike<DeveloperProductPricingFeatureWire>;
128
+ //#endregion
129
+ //#region tests/helpers/developer-products.d.ts
130
+ /**
131
+ * Builds a minimally-valid {@link DeveloperProductConfigV2} wire body. Pass
132
+ * an `overrides` object to tweak individual fields while keeping everything
133
+ * else schema-compliant; useful for parser and integration tests that
134
+ * only care about one field at a time.
135
+ *
136
+ * @param overrides - Fields to override on the default body.
137
+ * @returns A valid wire body with the overrides applied.
138
+ */
139
+ declare function validDeveloperProductBody(overrides?: Partial<DeveloperProductConfigV2>): DeveloperProductConfigV2;
140
+ //#endregion
141
+ //#region tests/helpers/fake-http-client.d.ts
142
+ /**
143
+ * A request captured by {@link FakeHttpClient} for later assertion.
144
+ */
145
+ interface CapturedRequest {
146
+ /** The per-request config passed alongside the request. */
147
+ readonly config: RequestConfig;
148
+ /** The request passed to {@link HttpClient.request}. */
149
+ readonly request: HttpRequest;
150
+ }
151
+ /**
152
+ * A fluent fake for the {@link HttpClient} boundary. Mocks are queued in
153
+ * FIFO order and consumed by each `request()` call. Records every
154
+ * request and config for later assertion. Throws
155
+ * {@link FakeHttpClientError} if the queue is empty when `request()` is
156
+ * called — surfaces missing mocks as test setup bugs instead of silently
157
+ * repeating the last response.
158
+ */
159
+ interface FakeHttpClient extends HttpClient {
160
+ /** Queues an {@link ApiError} with the given status code and optional message/code. */
161
+ mockApiError(options: {
162
+ code?: string;
163
+ message?: string;
164
+ statusCode: number;
165
+ }): this;
166
+ /** Queues an error Result with the given error instance. */
167
+ mockError(error: OpenCloudError): this;
168
+ /** Queues a {@link NetworkError}. Preserves `cause` when provided. */
169
+ mockNetworkError(options?: {
170
+ cause?: unknown;
171
+ message?: string;
172
+ }): this;
173
+ /** Queues a {@link RateLimitError} with the given retry hint. */
174
+ mockRateLimit(options: {
175
+ message?: string;
176
+ retryAfterSeconds: number;
177
+ }): this;
178
+ /** Queues a successful {@link HttpResponse}. Body defaults to `{}`; headers default to `{}`. */
179
+ mockResponse(options: {
180
+ body?: unknown;
181
+ headers?: Readonly<Record<string, string>>;
182
+ status: number;
183
+ }): this;
184
+ /** Number of queued mocks that have not yet been consumed. */
185
+ readonly pendingMocks: number;
186
+ /** Chronological log of every `(request, config)` pair the fake received. */
187
+ readonly requests: ReadonlyArray<CapturedRequest>;
188
+ }
189
+ /**
190
+ * Thrown when {@link FakeHttpClient.request} is called but no mock has
191
+ * been queued. The message names the method, url, and consumed count to
192
+ * aid debugging of missing `.mockResponse`/`.mockError` setup.
193
+ */
194
+ declare class FakeHttpClientError extends Error {
195
+ override readonly name: string;
196
+ }
197
+ /**
198
+ * Creates a fluent {@link FakeHttpClient} that sits at the
199
+ * {@link HttpClient} seam. Use for integration tests where you need to
200
+ * assert per-request config (apiKey, baseUrl) flows through to HTTP.
201
+ *
202
+ * @returns A fresh fake with an empty mock queue.
203
+ */
204
+ declare function createFakeHttpClient(): FakeHttpClient;
205
+ //#endregion
206
+ //#region tests/helpers/fake-send.d.ts
207
+ /**
208
+ * The `send` callback shape consumed by `executeWithRetry`. A plain
209
+ * transport function — no `RequestConfig`, no queueing, no retries.
210
+ */
211
+ type SendFunc = (request: HttpRequest) => Promise<Result<HttpResponse, OpenCloudError>>;
212
+ /**
213
+ * A scripted fake for the `send` callback. Replays responses in order
214
+ * and records every request it receives.
215
+ */
216
+ interface FakeSend {
217
+ /** Chronological log of every request the fake received. */
218
+ readonly requests: ReadonlyArray<HttpRequest>;
219
+ /** The scripted send callback. */
220
+ readonly send: SendFunc;
221
+ }
222
+ /**
223
+ * Creates a scripted fake for the `send` callback. Each call returns the
224
+ * next queued response; exhausting the queue throws, which surfaces test
225
+ * setup mistakes instead of silently repeating the last response.
226
+ *
227
+ * @param options - The scripted responses to replay, in order.
228
+ * @returns A `send` callback plus a `requests` log.
229
+ * @rejects {Error} When a call is made after all scripted responses are consumed.
230
+ */
231
+ declare function createFakeSend(options: {
232
+ readonly responses: ReadonlyArray<Result<HttpResponse, OpenCloudError>>;
233
+ }): FakeSend;
234
+ //#endregion
235
+ //#region tests/helpers/fake-sleep.d.ts
236
+ /**
237
+ * A directly-callable sleep double that records its wait arguments without
238
+ * delaying. Assignable to {@link SleepFunc}.
239
+ */
240
+ interface FakeSleep extends SleepFunc {
241
+ /** Chronological log of every `ms` value the fake was called with. */
242
+ readonly waits: ReadonlyArray<number>;
243
+ }
244
+ /**
245
+ * Creates a {@link FakeSleep} that resolves immediately and records every
246
+ * `ms` value it was called with.
247
+ *
248
+ * @returns A callable sleep function with a `waits` log attached.
249
+ */
250
+ declare function createFakeSleep(): FakeSleep;
251
+ //#endregion
252
+ //#region tests/helpers/game-icon.d.ts
253
+ /**
254
+ * Builds a minimally-valid {@link GetGameIconResponseWire} entry. Pass an
255
+ * `overrides` object to tweak individual fields while keeping everything
256
+ * else schema-compliant.
257
+ *
258
+ * @param overrides - Fields to override on the default entry.
259
+ * @returns A valid localized-icon entry with the overrides applied.
260
+ */
261
+ declare function validLocalizedIcon(overrides?: Partial<GetGameIconResponseWire>): GetGameIconResponseWire;
262
+ /**
263
+ * Builds a minimally-valid {@link GameIconListWire} body containing a single
264
+ * default localized icon.
265
+ *
266
+ * @param overrides - Fields to override on the default body.
267
+ * @returns A valid wire body with the overrides applied.
268
+ */
269
+ declare function validIconListBody(overrides?: Partial<GameIconListWire>): GameIconListWire;
270
+ //#endregion
271
+ //#region src/domains/game-passes/game-passes/wire.d.ts
272
+ /**
273
+ * Wire-level pricing feature flag, mirroring `GamePasses.PricingFeature`.
274
+ */
275
+ type PricingFeatureWire = "Invalid" | "PriceOptimization" | "RegionalPricing" | "UserFixedPrice";
276
+ /**
277
+ * Wire shape of `GamePassConfigV2` — the response body returned by the
278
+ * Game Passes read endpoint.
279
+ */
280
+ interface GamePassConfigV2 {
281
+ /** Display name of the game pass. */
282
+ readonly name: string;
283
+ /** ISO timestamp at which the game pass was created (`date-time`). */
284
+ readonly createdTimestamp: string;
285
+ /** Consumer-facing description. */
286
+ readonly description: string;
287
+ /** Int64 game pass ID, serialized as a JSON number. */
288
+ readonly gamePassId: number;
289
+ /** Int64 icon asset ID; `0` signals the pass has no icon uploaded. */
290
+ readonly iconAssetId: number;
291
+ /** Whether the game pass is currently purchasable. */
292
+ readonly isForSale: boolean;
293
+ /** Pricing block; `undefined` when the schema returns null. */
294
+ readonly priceInformation: PriceInformationStructWire | undefined;
295
+ /** ISO timestamp of the most recent update (`date-time`). */
296
+ readonly updatedTimestamp: string;
297
+ }
298
+ /**
299
+ * Wire shape of `GamePasses.PriceInformationStruct`.
300
+ */
301
+ type PriceInformationStructWire = PriceInformationLike<PricingFeatureWire>;
302
+ //#endregion
303
+ //#region tests/helpers/game-passes.d.ts
304
+ /**
305
+ * Builds a minimally-valid {@link GamePassConfigV2} wire body. Pass an
306
+ * `overrides` object to tweak individual fields while keeping everything
307
+ * else schema-compliant — useful for parser and integration tests that
308
+ * only care about one field at a time.
309
+ *
310
+ * @param overrides - Fields to override on the default body.
311
+ * @returns A valid wire body with the overrides applied.
312
+ */
313
+ declare function validGamePassBody(overrides?: Partial<GamePassConfigV2>): GamePassConfigV2;
314
+ //#endregion
315
+ //#region src/domains/game-internationalization/game-thumbnails/wire.d.ts
316
+ /**
317
+ * Wire shape of `POST /v1/game-thumbnails/games/{gameId}/language-codes/{languageCode}/image`,
318
+ * mirroring `Roblox.GameInternationalization.Api.Models.Response.UploadImageForGameThumbnailResponse`.
319
+ */
320
+ interface GameThumbnailUploadWire {
321
+ /** Stringified ID of the freshly uploaded thumbnail. */
322
+ readonly mediaAssetId: string;
323
+ }
324
+ //#endregion
325
+ //#region tests/helpers/game-thumbnails.d.ts
326
+ /**
327
+ * Builds a minimally-valid {@link GameThumbnailUploadWire} body. Pass an
328
+ * `overrides` object to tweak individual fields while keeping everything
329
+ * else schema-compliant; useful for parser and integration tests that
330
+ * only care about one field at a time.
331
+ *
332
+ * @param overrides - Fields to override on the default body.
333
+ * @returns A valid wire body with the overrides applied.
334
+ */
335
+ declare function validThumbnailUploadBody(overrides?: Partial<GameThumbnailUploadWire>): GameThumbnailUploadWire;
336
+ //#endregion
337
+ //#region src/domains/cloud-v2/luau-execution-task-binary-inputs/wire.d.ts
338
+ /** Wire shape of the binary-input create response body. */
339
+ interface LuauExecutionTaskBinaryInputWire {
340
+ /** Resource path the server assigned to this binary input slot. */
341
+ readonly path: string;
342
+ /** Byte size echoed back from the request. */
343
+ readonly size?: number | undefined;
344
+ /** Presigned PUT URI the caller uses to upload the binary data. */
345
+ readonly uploadUri: string;
346
+ }
347
+ //#endregion
348
+ //#region tests/helpers/luau-execution-task-binary-inputs.d.ts
349
+ /**
350
+ * Builds a minimally-valid {@link LuauExecutionTaskBinaryInputWire} body
351
+ * for tests. Pass an `overrides` object to tweak fields without re-stating
352
+ * the defaults.
353
+ *
354
+ * @param overrides - Fields to override on the default body.
355
+ * @returns A valid wire body with the overrides applied.
356
+ */
357
+ declare function validBinaryInputBody(overrides?: Partial<LuauExecutionTaskBinaryInputWire>): LuauExecutionTaskBinaryInputWire;
358
+ //#endregion
359
+ //#region src/domains/cloud-v2/luau-execution-task-logs/wire.d.ts
360
+ /**
361
+ * Wire shape of a single structured log message within a
362
+ * {@link LogChunkWire}. The `MESSAGE_TYPE_UNSPECIFIED` sentinel is
363
+ * deliberately excluded; the parser's type guard rejects it at the
364
+ * wire boundary so it never surfaces here.
365
+ */
366
+ interface LogMessageWire {
367
+ /** ISO timestamp when the log message was produced. */
368
+ readonly createTime: string;
369
+ /** Human-readable log message text. */
370
+ readonly message: string;
371
+ /** Wire enum value for the message type. */
372
+ readonly messageType: "ERROR" | "INFO" | "OUTPUT" | "WARNING";
373
+ }
374
+ /**
375
+ * Wire shape of a single log chunk returned by the Open Cloud
376
+ * list-logs endpoint. The `structuredMessages` array is populated
377
+ * when `view=STRUCTURED` is requested (which is always the case in
378
+ * this SDK). Other wire fields (`path`, FLAT-mode `messages`) exist
379
+ * on the schema but are not modelled here because they are not
380
+ * surfaced on the public `LogPage` type.
381
+ */
382
+ interface LogChunkWire {
383
+ /**
384
+ * Structured log messages in this chunk. Optional on the wire;
385
+ * absent when the chunk has no messages.
386
+ */
387
+ readonly structuredMessages?: ReadonlyArray<LogMessageWire> | undefined;
388
+ }
389
+ /**
390
+ * Wire shape of the list-luau-execution-task-logs response body. Both
391
+ * fields are optional per the OpenAPI spec
392
+ * (`ListLuauExecutionSessionTaskLogsResponse` has no `required` array);
393
+ * the parser also accepts JSON `null` on either field at the wire
394
+ * boundary and normalizes it to `undefined` / `[]`.
395
+ */
396
+ interface ListLogsResponseWire {
397
+ /**
398
+ * Array of log chunks. Omitted or JSON `null` on an empty page; the
399
+ * parser normalizes both to an empty array.
400
+ */
401
+ readonly luauExecutionSessionTaskLogs?: ReadonlyArray<LogChunkWire> | undefined;
402
+ /**
403
+ * Opaque continuation token for the next page. Absent or JSON
404
+ * `null` when this is the last page; the parser normalizes both to
405
+ * `undefined`.
406
+ */
407
+ readonly nextPageToken?: string | undefined;
408
+ }
409
+ //#endregion
410
+ //#region tests/helpers/luau-execution-task-logs.d.ts
411
+ /**
412
+ * Builds a minimally-valid {@link ListLogsResponseWire} body containing
413
+ * one chunk with one structured message. Pass an `overrides` object to
414
+ * tweak fields without re-stating the defaults.
415
+ *
416
+ * @param overrides - Fields to override on the default body.
417
+ * @returns A valid wire body with the overrides applied.
418
+ */
419
+ declare function validLogPageBody(overrides?: Partial<ListLogsResponseWire>): ListLogsResponseWire;
420
+ //#endregion
421
+ //#region src/domains/cloud-v2/luau-execution-tasks/wire.d.ts
422
+ /**
423
+ * Wire error payload for `FAILED` tasks. Carries the categorical
424
+ * `code` plus a human-readable `message`. The wire enum value
425
+ * `ERROR_CODE_UNSPECIFIED` is excluded here so a malformed sentinel
426
+ * response is rejected at validation time.
427
+ */
428
+ interface LuauExecutionTaskErrorWire {
429
+ /** Categorical error code; `ERROR_CODE_UNSPECIFIED` is not represented. */
430
+ readonly code: "DEADLINE_EXCEEDED" | "INTERNAL_ERROR" | "OUTPUT_SIZE_LIMIT_EXCEEDED" | "SCRIPT_ERROR";
431
+ /** Human-readable error message. */
432
+ readonly message: string;
433
+ }
434
+ /**
435
+ * Wire output payload for `COMPLETE` tasks. Each entry of `results` is
436
+ * a Roblox-protobuf `Value` whose JSON projection is null, boolean,
437
+ * number, string, JSON array, or JSON object.
438
+ */
439
+ interface LuauExecutionTaskOutputWire {
440
+ /** JSON projection of the script's `return` values, in order. */
441
+ readonly results: ReadonlyArray<JSONValue>;
442
+ }
443
+ /**
444
+ * Wire shape of the `LuauExecutionSessionTask` response body, narrowed
445
+ * to the fields the current parser slice accepts. View-controlled
446
+ * fields (`script`, `timeout`) are folded in by later slices when
447
+ * they're observed.
448
+ */
449
+ interface LuauExecutionTaskWire {
450
+ /**
451
+ * Resource path of the binary input attached to this task, when
452
+ * one was supplied at submit time.
453
+ */
454
+ readonly binaryInput?: string | undefined;
455
+ /**
456
+ * Pre-signed URI from which the binary output blob can be
457
+ * downloaded. Present only after a `COMPLETE` task whose
458
+ * `enableBinaryOutput` was `true`.
459
+ */
460
+ readonly binaryOutputUri?: string | undefined;
461
+ /** ISO timestamp when the task was created; omitted from the create-task POST response. */
462
+ readonly createTime?: string | undefined;
463
+ /** When `true`, the server writes output to a binary blob. */
464
+ readonly enableBinaryOutput?: boolean | undefined;
465
+ /**
466
+ * Wire error payload. Present only for tasks in the `FAILED`
467
+ * state; absent for in-progress and `COMPLETE` states.
468
+ */
469
+ readonly error?: LuauExecutionTaskErrorWire | undefined;
470
+ /**
471
+ * Wire output payload. Present only for tasks in the `COMPLETE`
472
+ * state; absent for in-progress and `FAILED` states.
473
+ */
474
+ readonly output?: LuauExecutionTaskOutputWire | undefined;
475
+ /** Resource path; one of the four x-aep-resource path formats. */
476
+ readonly path: string;
477
+ /**
478
+ * Wire enum value, narrowed to the supported task states. The
479
+ * server-side `STATE_UNSPECIFIED` sentinel is excluded so the
480
+ * validator rejects it.
481
+ */
482
+ readonly state: "CANCELLED" | "COMPLETE" | "FAILED" | "PROCESSING" | "QUEUED";
483
+ /**
484
+ * Server-side duration string in `"<n>s"` form. Optional; when
485
+ * absent, the server applies its 5-minute default.
486
+ */
487
+ readonly timeout?: string | undefined;
488
+ /** ISO timestamp of the most recent state change; omitted from the create-task POST response. */
489
+ readonly updateTime?: string | undefined;
490
+ /** Identifier of the user that owns the API key used to create this task. */
491
+ readonly user: string;
492
+ }
493
+ //#endregion
494
+ //#region tests/helpers/luau-execution-tasks.d.ts
495
+ /**
496
+ * Builds a minimally-valid {@link LuauExecutionTaskWire} body for an
497
+ * in-progress task. Pass an `overrides` object to tweak fields without
498
+ * re-stating the defaults.
499
+ *
500
+ * @param overrides - Fields to override on the default body.
501
+ * @returns A valid wire body with the overrides applied.
502
+ */
503
+ declare function validInProgressTaskBody(overrides?: Partial<LuauExecutionTaskWire>): LuauExecutionTaskWire;
504
+ //#endregion
505
+ //#region src/domains/cloud-v2/memory-store-queues/wire.d.ts
506
+ /**
507
+ * Wire shape of a `MemoryStoreQueueItem` resource: the response body
508
+ * returned by `Cloud_CreateMemoryStoreQueueItem` and the array entry
509
+ * inside `Cloud_ReadMemoryStoreQueueItems`. The server emits `path`,
510
+ * `data`, `expireTime`, and an optional `priority`. Top-level `data`
511
+ * is required server-side (the server returns 400 when absent or
512
+ * `null`); nested `null` inside `data` is preserved on round-trip.
513
+ */
514
+ interface MemoryStoreQueueItemWire {
515
+ /** The opaque queue payload. Always non-null at the top level. */
516
+ readonly data: Exclude<JSONValue, null>;
517
+ /** ISO 8601 timestamp at which the item is removed from the queue. */
518
+ readonly expireTime: string;
519
+ /** Resource path: `cloud/v2/universes/{u}/memory-store/queues/{q}/items/{i}`. */
520
+ readonly path: string;
521
+ /** Optional priority; higher values are dequeued first. */
522
+ readonly priority?: number | undefined;
523
+ }
524
+ /**
525
+ * Wire shape of the `Cloud_ReadMemoryStoreQueueItems` response. The
526
+ * server emits the items array under `queueItems` (vendored schema
527
+ * names it `items`) and the read identifier under `id` (schema names
528
+ * it `readId`); both deviations are corrected by `apply-schema-patches`,
529
+ * so the wire interface here matches the patched schema.
530
+ *
531
+ * `queueItems` is optional per the OpenAPI spec
532
+ * (`ReadMemoryStoreQueueItemsResponse` has no `required` array); empty
533
+ * queues come back with the field omitted or JSON `null`. `id` is also
534
+ * spec-optional but the server always returns it for a 200 dequeue (it
535
+ * is the `:discard` token), so the parser requires it.
536
+ */
537
+ interface ReadQueueItemsResponseWire {
538
+ /** Identifier of the read operation, passed back to `:discard`. */
539
+ readonly id: string;
540
+ /**
541
+ * Items at the front of the queue, in dequeue order. Omitted or
542
+ * JSON `null` on an empty queue; the parser normalizes both to an
543
+ * empty array.
544
+ */
545
+ readonly queueItems?: ReadonlyArray<MemoryStoreQueueItemWire> | undefined;
546
+ }
547
+ //#endregion
548
+ //#region tests/helpers/memory-store-queues.d.ts
549
+ /**
550
+ * Builds a minimally-valid {@link MemoryStoreQueueItemWire} body. Pass
551
+ * an `overrides` object to tweak fields without re-stating the defaults.
552
+ *
553
+ * @param overrides - Fields to override on the default body.
554
+ * @returns A valid wire body with the overrides applied.
555
+ */
556
+ declare function validQueueItemBody(overrides?: Partial<MemoryStoreQueueItemWire>): MemoryStoreQueueItemWire;
557
+ /**
558
+ * Builds a minimally-valid {@link ReadQueueItemsResponseWire} body
559
+ * carrying a single default queue item. Pass an `overrides` object to
560
+ * change the read identifier or supply a different items array.
561
+ *
562
+ * @param overrides - Fields to override on the default body.
563
+ * @returns A valid dequeue response body with the overrides applied.
564
+ */
565
+ declare function validDequeueBody(overrides?: Partial<ReadQueueItemsResponseWire>): ReadQueueItemsResponseWire;
566
+ //#endregion
567
+ //#region src/domains/cloud-v2/places/wire.d.ts
568
+ /**
569
+ * Wire shape of the `Place` resource -- the response body returned by
570
+ * `Cloud_GetPlace` and `Cloud_UpdatePlace`. Genuinely optional fields
571
+ * are `T | undefined` so callers can simulate absence under
572
+ * `exactOptionalPropertyTypes`. The parser normalizes JSON `null`
573
+ * values to `undefined` at validation time so consumers only ever
574
+ * observe `undefined`.
575
+ */
576
+ interface PlaceWire {
577
+ /** ISO timestamp when the place was created (`date-time`). */
578
+ readonly createTime: string;
579
+ /** Long-form description of the place. */
580
+ readonly description: string;
581
+ /** Human-facing name of the place. */
582
+ readonly displayName: string;
583
+ /** Resource path, e.g. `"universes/{uid}/places/{pid}"`. */
584
+ readonly path: string;
585
+ /** Whether this place is the universe's root place. */
586
+ readonly root?: boolean | undefined;
587
+ /** Maximum number of allowed users in a single server. */
588
+ readonly serverSize?: number | undefined;
589
+ /** Whether the place was created in-experience via `AssetService::CreatePlaceAsync()`. */
590
+ readonly universeRuntimeCreation?: boolean | undefined;
591
+ /** ISO timestamp of the most recent update (`date-time`). */
592
+ readonly updateTime: string;
593
+ }
594
+ //#endregion
595
+ //#region src/domains/universes/places/wire.d.ts
596
+ /**
597
+ * Wire shape of the publish-version success response body.
598
+ */
599
+ interface PlaceVersionWire {
600
+ /** Auto-incrementing version number assigned by Roblox. */
601
+ readonly versionNumber: number;
602
+ }
603
+ //#endregion
604
+ //#region tests/helpers/places.d.ts
605
+ /**
606
+ * Returns a fresh, minimal `.rbxl`-formatted body whose magic bytes
607
+ * match {@link RBXL_SIGNATURE}. Useful when integration tests don't
608
+ * care about the file's contents past the signature.
609
+ *
610
+ * @returns A 14-byte rbxl body matching the binary signature.
611
+ */
612
+ declare function rbxlBody(): Uint8Array<ArrayBuffer>;
613
+ /**
614
+ * Returns a fresh, minimal `.rbxlx`-formatted body whose magic bytes
615
+ * match {@link RBXLX_SIGNATURE}. Useful when integration tests don't
616
+ * care about the file's contents past the signature.
617
+ *
618
+ * @returns An 8-byte rbxlx body matching the XML signature.
619
+ */
620
+ declare function rbxlxBody(): Uint8Array<ArrayBuffer>;
621
+ /**
622
+ * Builds a minimally-valid {@link PlaceVersionWire} body. Pass an
623
+ * `overrides` object to tweak fields without re-stating the defaults.
624
+ *
625
+ * @param overrides - Fields to override on the default body.
626
+ * @returns A valid wire body with the overrides applied.
627
+ */
628
+ declare function validPublishResponseBody(overrides?: Partial<PlaceVersionWire>): PlaceVersionWire;
629
+ /**
630
+ * Builds a minimally-valid {@link PlaceWire} body. Pass an `overrides`
631
+ * object to tweak fields without re-stating the defaults.
632
+ *
633
+ * @param overrides - Fields to override on the default body.
634
+ * @returns A valid wire body with the overrides applied.
635
+ */
636
+ declare function validPlaceBody(overrides?: Partial<PlaceWire>): PlaceWire;
637
+ //#endregion
638
+ //#region src/domains/cloud-v2/universes/wire.d.ts
639
+ /**
640
+ * Wire-level visibility enum, mirroring the `visibility` field of the
641
+ * `Universe` schema.
642
+ */
643
+ type VisibilityWire = "PRIVATE" | "PUBLIC" | "VISIBILITY_UNSPECIFIED";
644
+ /**
645
+ * Wire-level age-rating enum, mirroring the `ageRating` field of the
646
+ * `Universe` schema.
647
+ */
648
+ type AgeRatingWire = "AGE_RATING_9_PLUS" | "AGE_RATING_13_PLUS" | "AGE_RATING_17_PLUS" | "AGE_RATING_ALL" | "AGE_RATING_UNSPECIFIED";
649
+ /**
650
+ * Wire shape of `Universe_SocialLink`.
651
+ */
652
+ interface SocialLinkWire {
653
+ /** Display title for the link. */
654
+ readonly title: string;
655
+ /** Destination URI. */
656
+ readonly uri: string;
657
+ }
658
+ /**
659
+ * Wire shape of the `Universe` resource -- the response body returned
660
+ * by both `Cloud_GetUniverse` and `Cloud_UpdateUniverse`. Genuinely
661
+ * optional fields are `T | undefined` (rather than `T`) so callers
662
+ * can simulate absence by setting a field to `undefined` under
663
+ * `exactOptionalPropertyTypes`.
664
+ */
665
+ interface UniverseWire {
666
+ /** Age-rating classification. */
667
+ readonly ageRating: AgeRatingWire;
668
+ /** Whether console players can join. */
669
+ readonly consoleEnabled?: boolean | undefined;
670
+ /** ISO timestamp when the universe was created (`date-time`). */
671
+ readonly createTime: string;
672
+ /** Description, derived from the root place's description. */
673
+ readonly description: string;
674
+ /** Whether desktop players can join. */
675
+ readonly desktopEnabled?: boolean | undefined;
676
+ /** Discord social link block. */
677
+ readonly discordSocialLink?: SocialLinkWire | undefined;
678
+ /** Display name, derived from the root place's name. */
679
+ readonly displayName: string;
680
+ /** Facebook social link block. */
681
+ readonly facebookSocialLink?: SocialLinkWire | undefined;
682
+ /** Group-owner resource path when the universe is group-owned. */
683
+ readonly group?: string | undefined;
684
+ /** Guilded social link block. */
685
+ readonly guildedSocialLink?: SocialLinkWire | undefined;
686
+ /** Whether mobile players can join. */
687
+ readonly mobileEnabled?: boolean | undefined;
688
+ /** Resource path, e.g. `"universes/{id}"`. */
689
+ readonly path: string;
690
+ /** Private server price in Robux; absent when private servers are disabled. */
691
+ readonly privateServerPriceRobux?: number | undefined;
692
+ /** Roblox Group social link block. */
693
+ readonly robloxGroupSocialLink?: SocialLinkWire | undefined;
694
+ /** Root place resource path, e.g. `"universes/{id}/places/{pid}"`. */
695
+ readonly rootPlace?: string | undefined;
696
+ /** Whether tablet players can join. */
697
+ readonly tabletEnabled?: boolean | undefined;
698
+ /** Twitch social link block. */
699
+ readonly twitchSocialLink?: SocialLinkWire | undefined;
700
+ /** Twitter social link block. */
701
+ readonly twitterSocialLink?: SocialLinkWire | undefined;
702
+ /** ISO timestamp of the most recent update (`date-time`). */
703
+ readonly updateTime: string;
704
+ /** User-owner resource path when the universe is user-owned. */
705
+ readonly user?: string | undefined;
706
+ /** Current visibility of the universe. */
707
+ readonly visibility: VisibilityWire;
708
+ /** Whether voice chat is enabled. */
709
+ readonly voiceChatEnabled?: boolean | undefined;
710
+ /** Whether VR players can join. */
711
+ readonly vrEnabled?: boolean | undefined;
712
+ /** Youtube social link block. */
713
+ readonly youtubeSocialLink?: SocialLinkWire | undefined;
714
+ }
715
+ //#endregion
716
+ //#region tests/helpers/universes.d.ts
717
+ /**
718
+ * Builds a minimally-valid {@link UniverseWire} body. Pass an
719
+ * `overrides` object to tweak fields without re-stating the defaults.
720
+ *
721
+ * @param overrides - Fields to override on the default body.
722
+ * @returns A valid wire body with the overrides applied.
723
+ */
724
+ declare function validUniverseBody(overrides?: Partial<UniverseWire>): UniverseWire;
725
+ //#endregion
726
+ export { type CapturedRequest, type FakeHttpClient, FakeHttpClientError, type FakeSend, type FakeSleep, type SendFunc, createFakeHttpClient, createFakeSend, createFakeSleep, rbxlBody, rbxlxBody, validBadgeBody, validBinaryInputBody, validDequeueBody, validDeveloperProductBody, validGamePassBody, validIconListBody, validInProgressTaskBody, validLocalizedIcon, validLogPageBody, validPlaceBody, validPublishResponseBody, validQueueItemBody, validThumbnailUploadBody, validUniverseBody };
727
+ //# sourceMappingURL=testing.d.mts.map