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

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
package/dist/index.d.mts CHANGED
@@ -1,18 +1,11 @@
1
- import { a as OpenCloudHooks, c as Page, d as OpenCloudError, i as OpenCloudClientOptions, l as Result, n as HttpRequest, o as RequestConfig, r as HttpResponse, s as RequestOptions, t as HttpClient, u as SleepFunc } from "./types-Cp8w8uwA.mjs";
2
- import { i as ApiErrorOptions, n as RateLimitErrorOptions, r as ApiError, t as RateLimitError } from "./rate-limit-DzHBFwps.mjs";
1
+ import { a as OpenCloudHooks, c as Page, d as OpenCloudError, i as OpenCloudClientOptions, l as Result, n as HttpRequest, o as RequestConfig, r as HttpResponse, s as RequestOptions, t as HttpClient, u as SleepFunc } from "./types-CRiJg5EQ.mjs";
2
+ import { a as RateLimitErrorOptions, c as ApiError, i as RateLimitError, l as ApiErrorOptions, o as NetworkError, r as TRANSIENT_TRANSPORT_CODES, s as NetworkErrorOptions } from "./retry-r1TXe5Zd.mjs";
3
3
 
4
- //#region src/errors/network-error.d.ts
5
- /**
6
- * Thrown when a network-level failure prevents the request from reaching
7
- * the Roblox Open Cloud API (e.g., DNS resolution failure, connection timeout).
8
- */
9
- declare class NetworkError extends OpenCloudError {
10
- override readonly name: string;
11
- }
12
- //#endregion
13
4
  //#region src/errors/permission-error.d.ts
14
5
  /**
15
6
  * Options for constructing a {@link PermissionError}.
7
+ *
8
+ * @since 0.1.0
16
9
  */
17
10
  interface PermissionErrorOptions extends ApiErrorOptions {
18
11
  /**
@@ -35,6 +28,8 @@ interface PermissionErrorOptions extends ApiErrorOptions {
35
28
  * a CLI consumer can tell the user exactly which scope to grant on their API
36
29
  * key.
37
30
  *
31
+ * @since 0.1.0
32
+ *
38
33
  * @example
39
34
  *
40
35
  * ```ts
@@ -65,15 +60,116 @@ declare class PermissionError extends ApiError {
65
60
  constructor(message: string, options: PermissionErrorOptions);
66
61
  }
67
62
  //#endregion
63
+ //#region src/errors/poll-aborted.d.ts
64
+ /**
65
+ * Options for constructing a {@link PollAbortedError}.
66
+ *
67
+ * @since 0.1.0
68
+ */
69
+ interface PollAbortedErrorOptions extends ErrorOptions {
70
+ /** Whatever `AbortSignal.reason` was at the moment of abort. */
71
+ readonly reason?: unknown;
72
+ }
73
+ /**
74
+ * Returned when `pollUntilDone` is interrupted by an `AbortSignal` before
75
+ * a terminal task state is reached. The `reason` field mirrors
76
+ * `AbortSignal.reason` so callers can distinguish intentional cancellation
77
+ * from unexpected abort sources.
78
+ *
79
+ * @since 0.1.0
80
+ *
81
+ * @example
82
+ *
83
+ * ```ts
84
+ * import { PollAbortedError } from "@bedrock-rbx/ocale";
85
+ *
86
+ * const error = new PollAbortedError("polling was aborted", {
87
+ * reason: "user cancelled",
88
+ * });
89
+ *
90
+ * expect(error).toBeInstanceOf(PollAbortedError);
91
+ * expect(error.reason).toBe("user cancelled");
92
+ * ```
93
+ */
94
+ declare class PollAbortedError extends OpenCloudError {
95
+ override readonly name: string;
96
+ readonly reason?: unknown;
97
+ /**
98
+ * Creates a new PollAbortedError.
99
+ *
100
+ * @param message - Human-readable description of the abort.
101
+ * @param options - Error options including the abort reason.
102
+ */
103
+ constructor(message: string, options?: PollAbortedErrorOptions);
104
+ }
105
+ //#endregion
106
+ //#region src/errors/poll-timeout.d.ts
107
+ /**
108
+ * Options for {@link PollTimeoutError}. The `T` type parameter captures the
109
+ * resource-specific task variant the caller polled for; defaults to `unknown`
110
+ * so the class can be reused by future Resources without forcing a parallel
111
+ * hierarchy.
112
+ *
113
+ * @since 0.1.0
114
+ *
115
+ * @template T - Resource-specific task type being polled.
116
+ */
117
+ interface PollTimeoutErrorOptions<T = unknown> extends ErrorOptions {
118
+ /** Last task observed before the timeout budget was exhausted. */
119
+ readonly lastObservedTask?: T | undefined;
120
+ /** Total wall-clock budget supplied by the caller, in ms. */
121
+ readonly timeoutMs: number;
122
+ }
123
+ /**
124
+ * Returned when `pollUntilDone` exhausts its wall-clock budget without
125
+ * observing a terminal task state. Carries the last task polled so callers
126
+ * can inspect state and decide whether to retry with a fresh budget.
127
+ *
128
+ * @since 0.1.0
129
+ *
130
+ * @template T - Resource-specific task type being polled.
131
+ *
132
+ * @example
133
+ *
134
+ * ```ts
135
+ * import { PollTimeoutError } from "@bedrock-rbx/ocale";
136
+ *
137
+ * const error = new PollTimeoutError("polling timed out after 5 s", {
138
+ * lastObservedTask: { state: "PROCESSING" as const },
139
+ * timeoutMs: 5000,
140
+ * });
141
+ *
142
+ * expect(error).toBeInstanceOf(PollTimeoutError);
143
+ * expect(error.timeoutMs).toBe(5000);
144
+ * expect(error.lastObservedTask).toStrictEqual({ state: "PROCESSING" });
145
+ * ```
146
+ */
147
+ declare class PollTimeoutError<T = unknown> extends OpenCloudError {
148
+ readonly lastObservedTask: T | undefined;
149
+ override readonly name: string;
150
+ readonly timeoutMs: number;
151
+ /**
152
+ * Creates a new PollTimeoutError.
153
+ *
154
+ * @param message - Human-readable description of the timeout.
155
+ * @param options - Error options including the budget and last-observed task.
156
+ */
157
+ constructor(message: string, options: PollTimeoutErrorOptions<T>);
158
+ }
159
+ //#endregion
68
160
  //#region src/errors/validation.d.ts
69
161
  /**
70
162
  * Closed discriminator for a {@link ValidationError}. Consumers can
71
163
  * exhaustively `switch` over this union so TypeScript will refuse to compile
72
164
  * if a new variant is added without a handler.
165
+ *
166
+ * @since 0.1.0
73
167
  */
74
168
  type ValidationErrorCode = "empty_body" | "empty_image_ids" | "empty_update" | "format_mismatch" | "incomplete_ref" | "invalid_image_id";
75
169
  /**
76
170
  * Options for constructing a {@link ValidationError}.
171
+ *
172
+ * @since 0.1.0
77
173
  */
78
174
  interface ValidationErrorOptions extends ErrorOptions {
79
175
  /** Machine-readable discriminator identifying the validation failure. */
@@ -84,6 +180,8 @@ interface ValidationErrorOptions extends ErrorOptions {
84
180
  * round-trip. The `code` discriminator lets consumers branch on local-input
85
181
  * errors separately from server-side errors.
86
182
  *
183
+ * @since 0.1.0
184
+ *
87
185
  * @example
88
186
  *
89
187
  * ```ts
@@ -109,5 +207,5 @@ declare class ValidationError extends OpenCloudError {
109
207
  constructor(message: string, options: ValidationErrorOptions);
110
208
  }
111
209
  //#endregion
112
- export { ApiError, type ApiErrorOptions, type HttpClient, type HttpRequest, type HttpResponse, NetworkError, type OpenCloudClientOptions, OpenCloudError, type OpenCloudHooks, type Page, PermissionError, type PermissionErrorOptions, RateLimitError, type RateLimitErrorOptions, type RequestConfig, type RequestOptions, type Result, type SleepFunc, ValidationError, type ValidationErrorCode, type ValidationErrorOptions };
210
+ export { ApiError, type ApiErrorOptions, type HttpClient, type HttpRequest, type HttpResponse, NetworkError, type NetworkErrorOptions, type OpenCloudClientOptions, OpenCloudError, type OpenCloudHooks, type Page, PermissionError, type PermissionErrorOptions, PollAbortedError, type PollAbortedErrorOptions, PollTimeoutError, type PollTimeoutErrorOptions, RateLimitError, type RateLimitErrorOptions, type RequestConfig, type RequestOptions, type Result, type SleepFunc, TRANSIENT_TRANSPORT_CODES, ValidationError, type ValidationErrorCode, type ValidationErrorOptions };
113
211
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/errors/network-error.ts","../src/errors/permission-error.ts","../src/errors/validation.ts"],"mappings":";;;;;;;AAMA;cAAa,YAAA,SAAqB,cAAA;EAAA,kBACR,IAAA;AAAA;;;;;;UCFT,sBAAA,SAA+B,eAAA;EDCnC;;;;;ECKZ,YAAA;;AAND;;;;EAYC,cAAA,EAAgB,aAAA;AAAA;;;;;AA0BjB;;;;;;;;;;;;;;;;;;;cAAa,eAAA,SAAwB,QAAA;EAAA,kBACX,IAAA;EAAA,SACT,YAAA;EAAA,SACA,cAAA,EAAgB,aAAA;ECvCrB;;;;AAWZ;;;EDqCC,WAAA,CAAY,OAAA,UAAiB,OAAA,EAAS,sBAAA;AAAA;;;;;;ADjDvC;;KECY,mBAAA;;;;UAWK,sBAAA,SAA+B,YAAA;;EAE/C,IAAA,EAAM,mBAAA;AAAA;;;;;;;;;ADuBP;;;;;;;;;;cCFa,eAAA,SAAwB,cAAA;EAAA,SACpB,IAAA,EAAM,mBAAA;EAAA,kBACG,IAAA;;;;;;;EAQzB,WAAA,CAAY,OAAA,UAAiB,OAAA,EAAS,sBAAA;AAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/errors/permission-error.ts","../src/errors/poll-aborted.ts","../src/errors/poll-timeout.ts","../src/errors/validation.ts"],"mappings":";;;;;;;AAOA;;UAAiB,sBAAA,SAA+B,eAAA;EAAA;;;;;EAM/C,YAAA;EAMgB;AA4BjB;;;;EA5BC,cAAA,EAAgB,aAAA;AAAA;;;;;;;;;;;;;AAwCsB;;;;ACpDvC;;;;AAEU;AAwBV;;;;cDca,eAAA,SAAwB,QAAA;EAAA,kBACX,IAAA;EAAA,SACT,YAAA;EAAA,SACA,cAAA,EAAgB,aAAA;;;;;ACPM;;;EDgBtC,WAAA,CAAY,OAAA,UAAiB,OAAA,EAAS,sBAAA;AAAA;;;;;;AApDvC;;UCAiB,uBAAA,SAAgC,YAAA;EDAD;EAAA,SCEtC,MAAA;AAAA;;;;ADUO;AA4BjB;;;;;;;;;;;;;;;;;cCda,gBAAA,SAAyB,cAAA;EAAA,kBACZ,IAAA;EAAA,SACT,MAAA;;;AA5BjB;;;;EAoCC,WAAA,CAAY,OAAA,UAAiB,OAAA,GAAS,uBAAA;AAAA;;;;;;ADpCvC;;;;;;;UEKiB,uBAAA,sBAA6C,YAAA;EFO7C;EAAA,SELP,gBAAA,GAAmB,CAAA;EFiC7B;EAAA,SE/BU,SAAA;AAAA;;;;;;;;;;;;;;;;AF2C6B;;;;ACpDvC;;;;AAEU;cCkCG,gBAAA,sBAAsC,cAAA;EAAA,SAClC,gBAAA,EAAkB,CAAA;EAAA,kBACT,IAAA;EAAA,SACT,SAAA;;;;;;;EAQhB,WAAA,CAAY,OAAA,UAAiB,OAAA,EAAS,uBAAA,CAAwB,CAAA;AAAA;;;;;;AF/C/D;;;;KGEY,mBAAA;;;;;AHUK;UGGA,sBAAA,SAA+B,YAAA;EHyBnC;EGvBZ,IAAA,EAAM,mBAAA;AAAA;;;;;;;;;;;;;;;AHmCgC;;;;ACpDvC;;cEwCa,eAAA,SAAwB,cAAA;EAAA,SACpB,IAAA,EAAM,mBAAA;EAAA,kBACG,IAAA;EFhB1B;;;;;;EEwBC,WAAA,CAAY,OAAA,UAAiB,OAAA,EAAS,sBAAA;AAAA"}
package/dist/index.mjs CHANGED
@@ -1,3 +1,5 @@
1
- import { a as OpenCloudError, i as ApiError, n as PermissionError, r as NetworkError, t as RateLimitError } from "./rate-limit-CKfuhxT1.mjs";
2
- import { t as ValidationError } from "./validation-b7KAoEio.mjs";
3
- export { ApiError, NetworkError, OpenCloudError, PermissionError, RateLimitError, ValidationError };
1
+ import { i as OpenCloudError, n as NetworkError, r as ApiError, t as RateLimitError } from "./rate-limit-Co9i28qi.mjs";
2
+ import { l as PermissionError, r as TRANSIENT_TRANSPORT_CODES } from "./retry-CbHBw60o.mjs";
3
+ import { n as PollAbortedError, t as PollTimeoutError } from "./poll-timeout-C0nmJzOd.mjs";
4
+ import { t as ValidationError } from "./validation-9oU6qNNQ.mjs";
5
+ export { ApiError, NetworkError, OpenCloudError, PermissionError, PollAbortedError, PollTimeoutError, RateLimitError, TRANSIENT_TRANSPORT_CODES, ValidationError };
@@ -1,2 +1,2 @@
1
- import { i as RobloxLocale, n as RobloxCreatorLocale, r as RobloxLanguageCode, t as ROBLOX_CREATOR_LOCALES } from "./data.generated-BtkDGH8C.mjs";
1
+ import { i as RobloxLocale, n as RobloxCreatorLocale, r as RobloxLanguageCode, t as ROBLOX_CREATOR_LOCALES } from "./data.generated-B2ceLfSn.mjs";
2
2
  export { ROBLOX_CREATOR_LOCALES, type RobloxCreatorLocale, type RobloxLanguageCode, type RobloxLocale };
package/dist/locales.mjs CHANGED
@@ -3,6 +3,8 @@
3
3
  * Vendored snapshot of
4
4
  * `https://locale.roblox.com/v1/locales/supported-locales-for-creators`.
5
5
  * Refreshed by `pnpm --filter @bedrock-rbx/ocale refresh-locales`.
6
+ *
7
+ * @since 0.1.0
6
8
  */
7
9
  const ROBLOX_CREATOR_LOCALES = [
8
10
  {
@@ -1 +1 @@
1
- {"version":3,"file":"locales.mjs","names":[],"sources":["../src/locales/data.generated.ts"],"sourcesContent":["// @generated by scripts/fetch-locales.ts. Do not edit by hand.\n// Source: https://locale.roblox.com/v1/locales/supported-locales-for-creators\n\n/**\n * One row in the vendored Roblox creator-locale list.\n */\nexport interface RobloxCreatorLocale {\n\treadonly locale: string;\n\treadonly languageCode: string;\n\treadonly name: string;\n\treadonly nativeName: string;\n\treadonly isRightToLeft: boolean;\n\treadonly isEnabledForFullExperience: boolean;\n\treadonly isEnabledForInGameUgc: boolean;\n\treadonly isEnabledForSignupAndLogin: boolean;\n}\n\n/**\n * Vendored snapshot of\n * `https://locale.roblox.com/v1/locales/supported-locales-for-creators`.\n * Refreshed by `pnpm --filter @bedrock-rbx/ocale refresh-locales`.\n */\nexport const ROBLOX_CREATOR_LOCALES = [\n\t{\n\t\tlocale: \"ar_001\",\n\t\tlanguageCode: \"ar\",\n\t\tname: \"Arabic\",\n\t\tnativeName: \"العربية\",\n\t\tisRightToLeft: true,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"bg_bg\",\n\t\tlanguageCode: \"bg\",\n\t\tname: \"Bulgarian\",\n\t\tnativeName: \"Български\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"bn_bd\",\n\t\tlanguageCode: \"bn\",\n\t\tname: \"Bengali\",\n\t\tnativeName: \"বাংলা\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"bs_ba\",\n\t\tlanguageCode: \"bs\",\n\t\tname: \"Bosnian\",\n\t\tnativeName: \"Босански\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"cs_cz\",\n\t\tlanguageCode: \"cs\",\n\t\tname: \"Czech\",\n\t\tnativeName: \"Čeština\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"da_dk\",\n\t\tlanguageCode: \"da\",\n\t\tname: \"Danish\",\n\t\tnativeName: \"Dansk\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"de_de\",\n\t\tlanguageCode: \"de\",\n\t\tname: \"German\",\n\t\tnativeName: \"Deutsch\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"el_gr\",\n\t\tlanguageCode: \"el\",\n\t\tname: \"Greek\",\n\t\tnativeName: \"Ελληνικά\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"en_gb\",\n\t\tlanguageCode: \"en\",\n\t\tname: \"English (United Kingdom)\",\n\t\tnativeName: \"English (United Kingdom)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"en_us\",\n\t\tlanguageCode: \"en\",\n\t\tname: \"English (United States)\",\n\t\tnativeName: \"English (United States)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"es_es\",\n\t\tlanguageCode: \"es\",\n\t\tname: \"Spanish (Spain)\",\n\t\tnativeName: \"Español (España)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"es_mx\",\n\t\tlanguageCode: \"es\",\n\t\tname: \"Spanish (Mexico)\",\n\t\tnativeName: \"Español (México)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"et_ee\",\n\t\tlanguageCode: \"et\",\n\t\tname: \"Estonian\",\n\t\tnativeName: \"Eesti\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"fi_fi\",\n\t\tlanguageCode: \"fi\",\n\t\tname: \"Finnish\",\n\t\tnativeName: \"Suomi\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"fil_ph\",\n\t\tlanguageCode: \"fil\",\n\t\tname: \"Filipino\",\n\t\tnativeName: \"Filipino\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"fr_ca\",\n\t\tlanguageCode: \"fr\",\n\t\tname: \"French (Canada)\",\n\t\tnativeName: \"Français (Canada)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"fr_fr\",\n\t\tlanguageCode: \"fr\",\n\t\tname: \"French (France)\",\n\t\tnativeName: \"Français (France)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"hi_in\",\n\t\tlanguageCode: \"hi\",\n\t\tname: \"Hindi\",\n\t\tnativeName: \"हिन्दी\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"hr_hr\",\n\t\tlanguageCode: \"hr\",\n\t\tname: \"Croatian\",\n\t\tnativeName: \"Hrvatski\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"hu_hu\",\n\t\tlanguageCode: \"hu\",\n\t\tname: \"Hungarian\",\n\t\tnativeName: \"Magyar\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"id_id\",\n\t\tlanguageCode: \"id\",\n\t\tname: \"Indonesian\",\n\t\tnativeName: \"Bahasa Indonesia\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"it_it\",\n\t\tlanguageCode: \"it\",\n\t\tname: \"Italian\",\n\t\tnativeName: \"Italiano\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"ja_jp\",\n\t\tlanguageCode: \"ja\",\n\t\tname: \"Japanese\",\n\t\tnativeName: \"日本語\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"ka_ge\",\n\t\tlanguageCode: \"ka\",\n\t\tname: \"Georgian\",\n\t\tnativeName: \"ქართული\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"kk_kz\",\n\t\tlanguageCode: \"kk\",\n\t\tname: \"Kazakh\",\n\t\tnativeName: \"Қазақ Тілі\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"km_kh\",\n\t\tlanguageCode: \"km\",\n\t\tname: \"Khmer\",\n\t\tnativeName: \"ភាសាខ្មែរ\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"ko_kr\",\n\t\tlanguageCode: \"ko\",\n\t\tname: \"Korean\",\n\t\tnativeName: \"한국어\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"lt_lt\",\n\t\tlanguageCode: \"lt\",\n\t\tname: \"Lithuanian\",\n\t\tnativeName: \"Lietuvių\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"lv_lv\",\n\t\tlanguageCode: \"lv\",\n\t\tname: \"Latvian\",\n\t\tnativeName: \"Latviešu\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"ms_my\",\n\t\tlanguageCode: \"ms\",\n\t\tname: \"Malay\",\n\t\tnativeName: \"Bahasa Melayu\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"my_mm\",\n\t\tlanguageCode: \"my\",\n\t\tname: \"Burmese\",\n\t\tnativeName: \"ဗမာစာ\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"nb_no\",\n\t\tlanguageCode: \"nb\",\n\t\tname: \"Bokmal\",\n\t\tnativeName: \"Bokmål\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"nl_nl\",\n\t\tlanguageCode: \"nl\",\n\t\tname: \"Dutch\",\n\t\tnativeName: \"Nederlands\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"pl_pl\",\n\t\tlanguageCode: \"pl\",\n\t\tname: \"Polish\",\n\t\tnativeName: \"Polski\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"pt_br\",\n\t\tlanguageCode: \"pt\",\n\t\tname: \"Portuguese (Brazil)\",\n\t\tnativeName: \"Português (Brasil)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"pt_pt\",\n\t\tlanguageCode: \"pt\",\n\t\tname: \"Portuguese (Portugal)\",\n\t\tnativeName: \"Português (Portugal)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"ro_ro\",\n\t\tlanguageCode: \"ro\",\n\t\tname: \"Romanian\",\n\t\tnativeName: \"Română\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"ru_ru\",\n\t\tlanguageCode: \"ru\",\n\t\tname: \"Russian\",\n\t\tnativeName: \"Русский\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"si_lk\",\n\t\tlanguageCode: \"si\",\n\t\tname: \"Sinhala\",\n\t\tnativeName: \"සිංහල\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"sk_sk\",\n\t\tlanguageCode: \"sk\",\n\t\tname: \"Slovak\",\n\t\tnativeName: \"Slovenčina\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"sl_sl\",\n\t\tlanguageCode: \"sl\",\n\t\tname: \"Slovenian\",\n\t\tnativeName: \"Slovenski\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"sq_al\",\n\t\tlanguageCode: \"sq\",\n\t\tname: \"Albanian\",\n\t\tnativeName: \"Shqipe\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"sr_rs\",\n\t\tlanguageCode: \"sr\",\n\t\tname: \"Serbian\",\n\t\tnativeName: \"Cрпски\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"sv_se\",\n\t\tlanguageCode: \"sv\",\n\t\tname: \"Swedish\",\n\t\tnativeName: \"Svenska\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"th_th\",\n\t\tlanguageCode: \"th\",\n\t\tname: \"Thai\",\n\t\tnativeName: \"ภาษาไทย\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"tr_tr\",\n\t\tlanguageCode: \"tr\",\n\t\tname: \"Turkish\",\n\t\tnativeName: \"Türkçe\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"uk_ua\",\n\t\tlanguageCode: \"uk\",\n\t\tname: \"Ukrainian\",\n\t\tnativeName: \"Yкраїньска\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"vi_vn\",\n\t\tlanguageCode: \"vi\",\n\t\tname: \"Vietnamese\",\n\t\tnativeName: \"Tiếng Việt\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"zh_cn\",\n\t\tlanguageCode: \"zh-hans\",\n\t\tname: \"Chinese (Simplified)\",\n\t\tnativeName: \"中文(简体)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"zh_tw\",\n\t\tlanguageCode: \"zh-hant\",\n\t\tname: \"Chinese (Traditional)\",\n\t\tnativeName: \"中文(繁體)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n] as const satisfies ReadonlyArray<RobloxCreatorLocale>;\n\n/**\n * Roblox locale wire form (e.g. `en_us`, `pt_br`, `ar_001`). Used by\n * the legacy game-internationalization endpoints when\n * `languageCodeType` is `Locale`.\n */\nexport type RobloxLocale = (typeof ROBLOX_CREATOR_LOCALES)[number][\"locale\"];\n\n/**\n * Roblox language wire form (e.g. `en`, `fil`, `zh-hans`). Used by\n * the legacy game-internationalization endpoints when\n * `languageCodeType` is `Language`.\n */\nexport type RobloxLanguageCode = (typeof ROBLOX_CREATOR_LOCALES)[number][\"languageCode\"];\n"],"mappings":"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"}
1
+ {"version":3,"file":"locales.mjs","names":[],"sources":["../src/locales/data.generated.ts"],"sourcesContent":["// @generated by scripts/fetch-locales.ts. Do not edit by hand.\n// Source: https://locale.roblox.com/v1/locales/supported-locales-for-creators\n\n/**\n * One row in the vendored Roblox creator-locale list.\n *\n * @since 0.1.0\n */\nexport interface RobloxCreatorLocale {\n\treadonly locale: string;\n\treadonly languageCode: string;\n\treadonly name: string;\n\treadonly nativeName: string;\n\treadonly isRightToLeft: boolean;\n\treadonly isEnabledForFullExperience: boolean;\n\treadonly isEnabledForInGameUgc: boolean;\n\treadonly isEnabledForSignupAndLogin: boolean;\n}\n\n/**\n * Vendored snapshot of\n * `https://locale.roblox.com/v1/locales/supported-locales-for-creators`.\n * Refreshed by `pnpm --filter @bedrock-rbx/ocale refresh-locales`.\n *\n * @since 0.1.0\n */\nexport const ROBLOX_CREATOR_LOCALES = [\n\t{\n\t\tlocale: \"ar_001\",\n\t\tlanguageCode: \"ar\",\n\t\tname: \"Arabic\",\n\t\tnativeName: \"العربية\",\n\t\tisRightToLeft: true,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"bg_bg\",\n\t\tlanguageCode: \"bg\",\n\t\tname: \"Bulgarian\",\n\t\tnativeName: \"Български\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"bn_bd\",\n\t\tlanguageCode: \"bn\",\n\t\tname: \"Bengali\",\n\t\tnativeName: \"বাংলা\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"bs_ba\",\n\t\tlanguageCode: \"bs\",\n\t\tname: \"Bosnian\",\n\t\tnativeName: \"Босански\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"cs_cz\",\n\t\tlanguageCode: \"cs\",\n\t\tname: \"Czech\",\n\t\tnativeName: \"Čeština\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"da_dk\",\n\t\tlanguageCode: \"da\",\n\t\tname: \"Danish\",\n\t\tnativeName: \"Dansk\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"de_de\",\n\t\tlanguageCode: \"de\",\n\t\tname: \"German\",\n\t\tnativeName: \"Deutsch\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"el_gr\",\n\t\tlanguageCode: \"el\",\n\t\tname: \"Greek\",\n\t\tnativeName: \"Ελληνικά\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"en_gb\",\n\t\tlanguageCode: \"en\",\n\t\tname: \"English (United Kingdom)\",\n\t\tnativeName: \"English (United Kingdom)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"en_us\",\n\t\tlanguageCode: \"en\",\n\t\tname: \"English (United States)\",\n\t\tnativeName: \"English (United States)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"es_es\",\n\t\tlanguageCode: \"es\",\n\t\tname: \"Spanish (Spain)\",\n\t\tnativeName: \"Español (España)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"es_mx\",\n\t\tlanguageCode: \"es\",\n\t\tname: \"Spanish (Mexico)\",\n\t\tnativeName: \"Español (México)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"et_ee\",\n\t\tlanguageCode: \"et\",\n\t\tname: \"Estonian\",\n\t\tnativeName: \"Eesti\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"fi_fi\",\n\t\tlanguageCode: \"fi\",\n\t\tname: \"Finnish\",\n\t\tnativeName: \"Suomi\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"fil_ph\",\n\t\tlanguageCode: \"fil\",\n\t\tname: \"Filipino\",\n\t\tnativeName: \"Filipino\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"fr_ca\",\n\t\tlanguageCode: \"fr\",\n\t\tname: \"French (Canada)\",\n\t\tnativeName: \"Français (Canada)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"fr_fr\",\n\t\tlanguageCode: \"fr\",\n\t\tname: \"French (France)\",\n\t\tnativeName: \"Français (France)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"hi_in\",\n\t\tlanguageCode: \"hi\",\n\t\tname: \"Hindi\",\n\t\tnativeName: \"हिन्दी\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"hr_hr\",\n\t\tlanguageCode: \"hr\",\n\t\tname: \"Croatian\",\n\t\tnativeName: \"Hrvatski\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"hu_hu\",\n\t\tlanguageCode: \"hu\",\n\t\tname: \"Hungarian\",\n\t\tnativeName: \"Magyar\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"id_id\",\n\t\tlanguageCode: \"id\",\n\t\tname: \"Indonesian\",\n\t\tnativeName: \"Bahasa Indonesia\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"it_it\",\n\t\tlanguageCode: \"it\",\n\t\tname: \"Italian\",\n\t\tnativeName: \"Italiano\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"ja_jp\",\n\t\tlanguageCode: \"ja\",\n\t\tname: \"Japanese\",\n\t\tnativeName: \"日本語\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"ka_ge\",\n\t\tlanguageCode: \"ka\",\n\t\tname: \"Georgian\",\n\t\tnativeName: \"ქართული\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"kk_kz\",\n\t\tlanguageCode: \"kk\",\n\t\tname: \"Kazakh\",\n\t\tnativeName: \"Қазақ Тілі\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"km_kh\",\n\t\tlanguageCode: \"km\",\n\t\tname: \"Khmer\",\n\t\tnativeName: \"ភាសាខ្មែរ\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"ko_kr\",\n\t\tlanguageCode: \"ko\",\n\t\tname: \"Korean\",\n\t\tnativeName: \"한국어\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"lt_lt\",\n\t\tlanguageCode: \"lt\",\n\t\tname: \"Lithuanian\",\n\t\tnativeName: \"Lietuvių\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"lv_lv\",\n\t\tlanguageCode: \"lv\",\n\t\tname: \"Latvian\",\n\t\tnativeName: \"Latviešu\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"ms_my\",\n\t\tlanguageCode: \"ms\",\n\t\tname: \"Malay\",\n\t\tnativeName: \"Bahasa Melayu\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"my_mm\",\n\t\tlanguageCode: \"my\",\n\t\tname: \"Burmese\",\n\t\tnativeName: \"ဗမာစာ\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"nb_no\",\n\t\tlanguageCode: \"nb\",\n\t\tname: \"Bokmal\",\n\t\tnativeName: \"Bokmål\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"nl_nl\",\n\t\tlanguageCode: \"nl\",\n\t\tname: \"Dutch\",\n\t\tnativeName: \"Nederlands\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"pl_pl\",\n\t\tlanguageCode: \"pl\",\n\t\tname: \"Polish\",\n\t\tnativeName: \"Polski\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"pt_br\",\n\t\tlanguageCode: \"pt\",\n\t\tname: \"Portuguese (Brazil)\",\n\t\tnativeName: \"Português (Brasil)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"pt_pt\",\n\t\tlanguageCode: \"pt\",\n\t\tname: \"Portuguese (Portugal)\",\n\t\tnativeName: \"Português (Portugal)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"ro_ro\",\n\t\tlanguageCode: \"ro\",\n\t\tname: \"Romanian\",\n\t\tnativeName: \"Română\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"ru_ru\",\n\t\tlanguageCode: \"ru\",\n\t\tname: \"Russian\",\n\t\tnativeName: \"Русский\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"si_lk\",\n\t\tlanguageCode: \"si\",\n\t\tname: \"Sinhala\",\n\t\tnativeName: \"සිංහල\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"sk_sk\",\n\t\tlanguageCode: \"sk\",\n\t\tname: \"Slovak\",\n\t\tnativeName: \"Slovenčina\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"sl_sl\",\n\t\tlanguageCode: \"sl\",\n\t\tname: \"Slovenian\",\n\t\tnativeName: \"Slovenski\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"sq_al\",\n\t\tlanguageCode: \"sq\",\n\t\tname: \"Albanian\",\n\t\tnativeName: \"Shqipe\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"sr_rs\",\n\t\tlanguageCode: \"sr\",\n\t\tname: \"Serbian\",\n\t\tnativeName: \"Cрпски\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"sv_se\",\n\t\tlanguageCode: \"sv\",\n\t\tname: \"Swedish\",\n\t\tnativeName: \"Svenska\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"th_th\",\n\t\tlanguageCode: \"th\",\n\t\tname: \"Thai\",\n\t\tnativeName: \"ภาษาไทย\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"tr_tr\",\n\t\tlanguageCode: \"tr\",\n\t\tname: \"Turkish\",\n\t\tnativeName: \"Türkçe\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"uk_ua\",\n\t\tlanguageCode: \"uk\",\n\t\tname: \"Ukrainian\",\n\t\tnativeName: \"Yкраїньска\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: false,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: false,\n\t},\n\t{\n\t\tlocale: \"vi_vn\",\n\t\tlanguageCode: \"vi\",\n\t\tname: \"Vietnamese\",\n\t\tnativeName: \"Tiếng Việt\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"zh_cn\",\n\t\tlanguageCode: \"zh-hans\",\n\t\tname: \"Chinese (Simplified)\",\n\t\tnativeName: \"中文(简体)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n\t{\n\t\tlocale: \"zh_tw\",\n\t\tlanguageCode: \"zh-hant\",\n\t\tname: \"Chinese (Traditional)\",\n\t\tnativeName: \"中文(繁體)\",\n\t\tisRightToLeft: false,\n\t\tisEnabledForFullExperience: true,\n\t\tisEnabledForInGameUgc: true,\n\t\tisEnabledForSignupAndLogin: true,\n\t},\n] as const;\n\n/**\n * Roblox locale wire form (e.g. `en_us`, `pt_br`, `ar_001`). Used by\n * the legacy game-internationalization endpoints when\n * `languageCodeType` is `Locale`.\n *\n * @since 0.1.0\n */\nexport type RobloxLocale = (typeof ROBLOX_CREATOR_LOCALES)[number][\"locale\"];\n\n/**\n * Roblox language wire form (e.g. `en`, `fil`, `zh-hans`). Used by\n * the legacy game-internationalization endpoints when\n * `languageCodeType` is `Language`.\n *\n * @since 0.1.0\n */\nexport type RobloxLanguageCode = (typeof ROBLOX_CREATOR_LOCALES)[number][\"languageCode\"];\n"],"mappings":"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"}
@@ -1,11 +1,64 @@
1
- import { d as OpenCloudError, i as OpenCloudClientOptions, l as Result, s as RequestOptions } from "./types-Cp8w8uwA.mjs";
2
- import { a as LuauExecutionTask, c as SubmitAtVersionParameters, i as InProgressTask, n as FailedTask, o as LuauExecutionTaskRef, r as GetParameters, s as SubmitAtHeadParameters, t as CompleteTask } from "./types-BZ0959rh.mjs";
1
+ import { d as OpenCloudError, i as OpenCloudClientOptions, l as Result, s as RequestOptions } from "./types-CRiJg5EQ.mjs";
2
+ import { a as LogPage, c as GetParameters, d as LuauExecutionTaskRef, f as SubmitAtHeadParameters, i as LogMessage, l as InProgressTask, n as defaultPollDelay, o as CompleteTask, p as SubmitAtVersionParameters, r as ListLogsParameters, s as FailedTask, t as PollUntilDoneOptions, u as LuauExecutionTask } from "./polling-rj0dGREg.mjs";
3
3
 
4
+ //#region src/domains/cloud-v2/luau-execution-task-binary-inputs/types.d.ts
5
+ /**
6
+ * Caller-supplied input for creating a Luau execution task binary input
7
+ * upload slot. The server returns a presigned `uploadUri` the caller uses
8
+ * to PUT the binary data.
9
+ *
10
+ * @since 0.1.0
11
+ */
12
+ interface CreateBinaryInputParameters {
13
+ /** Size in bytes of the binary data to be uploaded. */
14
+ readonly size: number;
15
+ /** Stringified ID of the universe that owns the task. */
16
+ readonly universeId: string;
17
+ }
18
+ /**
19
+ * Public representation of a created Luau execution task binary input.
20
+ * Pass `path` verbatim to `tasks.submit({ binaryInput })`.
21
+ *
22
+ * @since 0.1.0
23
+ */
24
+ interface LuauExecutionTaskBinaryInput {
25
+ /** Server-emitted resource path; pass to `tasks.submit` as `binaryInput`. */
26
+ readonly path: string;
27
+ /** Presigned PUT target; perform the binary upload to this URI directly. */
28
+ readonly uploadUri: string;
29
+ }
30
+ //#endregion
4
31
  //#region src/resources/luau-execution/client.d.ts
5
32
  /**
33
+ * Operation handle for the `binaryInputs` namespace on
34
+ * {@link LuauExecutionClient}. Provides `create` to allocate a presigned
35
+ * upload slot for binary script inputs.
36
+ *
37
+ * @since 0.1.0
38
+ */
39
+ interface BinaryInputsHandle {
40
+ /**
41
+ * Allocates a presigned binary input upload slot. The returned
42
+ * `uploadUri` is a presigned `PUT` target; the caller uploads the
43
+ * binary data directly and passes `path` to `tasks.submit` as
44
+ * `binaryInput`.
45
+ *
46
+ * @param parameters - Universe identifier and the byte size of the
47
+ * binary to upload.
48
+ * @param options - Optional per-request overrides.
49
+ * @returns A {@link Result} wrapping the parsed
50
+ * {@link LuauExecutionTaskBinaryInput} or the {@link OpenCloudError}
51
+ * that caused the request to fail.
52
+ */
53
+ create(parameters: CreateBinaryInputParameters, options?: RequestOptions): Promise<Result<LuauExecutionTaskBinaryInput, OpenCloudError>>;
54
+ }
55
+ /**
6
56
  * Operation handle exposed by {@link LuauExecutionClient} as the
7
- * `tasks` namespace. Provides `submit` to queue a Luau script and
8
- * `get` to fetch a task's current state.
57
+ * `tasks` namespace. Provides `submit` to queue a Luau script, `get`
58
+ * to fetch a task's current state, and `listLogs` to retrieve
59
+ * structured log messages produced by a task.
60
+ *
61
+ * @since 0.1.0
9
62
  */
10
63
  interface TasksHandle {
11
64
  /**
@@ -22,6 +75,45 @@ interface TasksHandle {
22
75
  */
23
76
  get(parameters: GetParameters, options?: RequestOptions): Promise<Result<LuauExecutionTask, OpenCloudError>>;
24
77
  /**
78
+ * Lists one page of structured log messages produced by a
79
+ * previously-submitted Luau execution task. Messages from multiple
80
+ * server-side chunks are flattened into a single ordered array.
81
+ * Uses idempotent retry semantics for both 429 and 5xx.
82
+ *
83
+ * @param parameters - The task ref and optional pagination controls
84
+ * (`pageSize`, `pageToken`).
85
+ * @param options - Optional per-request overrides (e.g. A different
86
+ * {@link OpenCloudClientOptions.apiKey} for this call only).
87
+ * @returns A {@link Result} wrapping the parsed {@link LogPage} or
88
+ * the {@link OpenCloudError} that caused the request to fail.
89
+ */
90
+ listLogs(parameters: ListLogsParameters, options?: RequestOptions): Promise<Result<LogPage, OpenCloudError>>;
91
+ /**
92
+ * Polls `tasks.get` with `view=BASIC` on a configurable backoff schedule
93
+ * until the task reaches a terminal state, the wall-clock budget is
94
+ * exhausted, or the supplied `AbortSignal` fires. Returns the terminal
95
+ * task on success.
96
+ *
97
+ * @param ref - Reference to the task to poll, typically returned by `submit`.
98
+ * @param options - Polling and per-request overrides.
99
+ * @returns A {@link Result} wrapping the terminal {@link LuauExecutionTask},
100
+ * or an error if aborted, timed out, or the transport fails.
101
+ */
102
+ pollUntilDone(ref: LuauExecutionTaskRef, options?: PollUntilDoneOptions): Promise<Result<LuauExecutionTask, OpenCloudError>>;
103
+ /**
104
+ * Submits a Luau script and polls `tasks.get` with `view=BASIC` until
105
+ * the task reaches a terminal state, the wall-clock budget is
106
+ * exhausted, or the supplied `AbortSignal` fires. Combines `submit`
107
+ * and `pollUntilDone` in one call.
108
+ *
109
+ * @param parameters - The same input accepted by `submit`.
110
+ * @param options - Polling and per-request overrides.
111
+ * @returns A {@link Result} wrapping the terminal
112
+ * {@link LuauExecutionTask}, or an error if submit fails, the task
113
+ * is aborted, timed out, or the transport fails.
114
+ */
115
+ runUntilDone(parameters: SubmitAtHeadParameters | SubmitAtVersionParameters, options?: PollUntilDoneOptions): Promise<Result<LuauExecutionTask, OpenCloudError>>;
116
+ /**
25
117
  * Submits a Luau script for execution against a place. Dispatches
26
118
  * to the head-version URL when `versionId` is omitted, or to the
27
119
  * specific-version URL when one is supplied. Both URL shapes share
@@ -43,10 +135,24 @@ interface TasksHandle {
43
135
  * resource. Tasks run a Luau script against a place and surface state,
44
136
  * output, or error through the `LuauExecutionTask` discriminated
45
137
  * union. Exposes `tasks.submit` for both the head version and a
46
- * specific place version, plus `tasks.get` for fetching task state.
138
+ * specific place version, `tasks.get` for fetching task state,
139
+ * `tasks.listLogs` for fetching structured log messages, and
140
+ * `binaryInputs.create` for allocating presigned upload slots.
141
+ *
142
+ * @since 0.1.0
143
+ *
144
+ * @example
145
+ *
146
+ * ```ts
147
+ * import { LuauExecutionClient } from "@bedrock-rbx/ocale/luau-execution";
148
+ *
149
+ * const client = new LuauExecutionClient({ apiKey: "your-key" });
150
+ * expect(client).toBeInstanceOf(LuauExecutionClient);
151
+ * ```
47
152
  */
48
153
  declare class LuauExecutionClient {
49
154
  #private;
155
+ readonly binaryInputs: BinaryInputsHandle;
50
156
  readonly tasks: TasksHandle;
51
157
  /**
52
158
  * Creates a new {@link LuauExecutionClient}. Configuration is frozen
@@ -58,5 +164,5 @@ declare class LuauExecutionClient {
58
164
  constructor(options: OpenCloudClientOptions);
59
165
  }
60
166
  //#endregion
61
- export { type CompleteTask, type FailedTask, type GetParameters, type InProgressTask, LuauExecutionClient, type LuauExecutionTask, type LuauExecutionTaskRef, type SubmitAtHeadParameters, type SubmitAtVersionParameters, type TasksHandle };
167
+ export { type BinaryInputsHandle, type CompleteTask, type CreateBinaryInputParameters, type FailedTask, type GetParameters, type InProgressTask, type ListLogsParameters, type LogMessage, type LogPage, LuauExecutionClient, type LuauExecutionTask, type LuauExecutionTaskBinaryInput, type LuauExecutionTaskRef, type PollUntilDoneOptions, type SubmitAtHeadParameters, type SubmitAtVersionParameters, type TasksHandle, defaultPollDelay };
62
168
  //# sourceMappingURL=luau-execution.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"luau-execution.d.mts","names":[],"sources":["../src/resources/luau-execution/client.ts"],"mappings":";;;;AAqBA;;;;;AAAA,UAAiB,WAAA;;;;;;;;;;;;;EAahB,GAAA,CACC,UAAA,EAAY,aAAA,EACZ,OAAA,GAAU,cAAA,GACR,OAAA,CAAQ,MAAA,CAAO,iBAAA,EAAmB,cAAA;;;;;;;;;;;;;;;;EAgBrC,MAAA,CACC,UAAA,EAAY,sBAAA,GAAyB,yBAAA,EACrC,OAAA,GAAU,cAAA,GACR,OAAA,CAAQ,MAAA,CAAO,iBAAA,EAAmB,cAAA;AAAA;;;;AAUtC;;;;cAAa,mBAAA;EAAA;WAGI,KAAA,EAAO,WAAA;;;;;;;;EASvB,WAAA,CAAY,OAAA,EAAS,sBAAA;AAAA"}
1
+ {"version":3,"file":"luau-execution.d.mts","names":[],"sources":["../src/domains/cloud-v2/luau-execution-task-binary-inputs/types.ts","../src/resources/luau-execution/client.ts"],"mappings":";;;;;;;;AAOA;;;UAAiB,2BAAA;EAIP;EAAA,SAFA,IAAA;EAWO;EAAA,SATP,UAAA;AAAA;AAaA;;;;AC0CV;;AD1CU,UAJO,4BAAA;;WAEP,IAAA;;WAEA,SAAA;AAAA;;;;AAbA;AASV;;;;AAIU;UC0CO,kBAAA;;;AAAjB;;;;;;;;;;;EAcC,MAAA,CACC,UAAA,EAAY,2BAAA,EACZ,OAAA,GAAU,cAAA,GACR,OAAA,CAAQ,MAAA,CAAO,4BAAA,EAA8B,cAAA;AAAA;;;;;;;;;UAWhC,WAAA;EAAjB;;;;;;;;;;;;EAaC,GAAA,CACC,UAAA,EAAY,aAAA,EACZ,OAAA,GAAU,cAAA,GACR,OAAA,CAAQ,MAAA,CAAO,iBAAA,EAAmB,cAAA;;;;;;;;;;;;;;EAcrC,QAAA,CACC,UAAA,EAAY,kBAAA,EACZ,OAAA,GAAU,cAAA,GACR,OAAA,CAAQ,MAAA,CAAO,OAAA,EAAS,cAAA;;;;;;;;;;;;EAY3B,aAAA,CACC,GAAA,EAAK,oBAAA,EACL,OAAA,GAAU,oBAAA,GACR,OAAA,CAAQ,MAAA,CAAO,iBAAA,EAAmB,cAAA;;;;;;;;;;;;;EAarC,YAAA,CACC,UAAA,EAAY,sBAAA,GAAyB,yBAAA,EACrC,OAAA,GAAU,oBAAA,GACR,OAAA,CAAQ,MAAA,CAAO,iBAAA,EAAmB,cAAA;;;;;;;;;;;;;;;;EAgBrC,MAAA,CACC,UAAA,EAAY,sBAAA,GAAyB,yBAAA,EACrC,OAAA,GAAU,cAAA,GACR,OAAA,CAAQ,MAAA,CAAO,iBAAA,EAAmB,cAAA;AAAA;;;;;;;;;;;;;;;;;AAAA;AAuBtC;;;cAAa,mBAAA;EAAA;WAGI,YAAA,EAAc,kBAAA;EAAA,SACd,KAAA,EAAO,WAAA;EASF;;;;;;;EAArB,WAAA,CAAY,OAAA,EAAS,sBAAA;AAAA"}
@@ -1,15 +1,110 @@
1
- import { t as ResourceClient } from "./resource-client-Wi4Mwqy5.mjs";
2
- import { n as SUBMIT_HEAD_SPEC, r as SUBMIT_VERSION_SPEC, t as GET_SPEC } from "./specs-Co6qYp_E.mjs";
1
+ import { r as ApiError } from "./rate-limit-Co9i28qi.mjs";
2
+ import { t as CREATE_METHOD_DEFAULTS } from "./retry-CbHBw60o.mjs";
3
+ import { i as isRecord, n as okRequest, t as ResourceClient } from "./resource-client-lE7Tg3BK.mjs";
4
+ import { a as withBudgetRequestTimeout, c as SUBMIT_VERSION_SPEC, i as pollUntilDoneCore, l as LIST_LOGS_SPEC, n as submitAndPoll, o as GET_SPEC, r as defaultPollDelay, s as SUBMIT_HEAD_SPEC, t as buildPollDeps } from "./polling-helpers-Cb4j4cq7.mjs";
5
+ //#region src/domains/cloud-v2/luau-execution-task-binary-inputs/builders.ts
6
+ /**
7
+ * Builds a `POST` request for the Open Cloud
8
+ * `Cloud_CreateLuauExecutionSessionTaskBinaryInput` endpoint. The
9
+ * server responds with a presigned `uploadUri` and the resource `path`.
10
+ *
11
+ * @param parameters - Universe identifier and the byte size of the
12
+ * binary to be uploaded.
13
+ * @returns A pure {@link HttpRequest} describing the create call.
14
+ */
15
+ function buildCreateBinaryInputRequest(parameters) {
16
+ const { size, universeId } = parameters;
17
+ return {
18
+ body: { size },
19
+ headers: { "content-type": "application/json" },
20
+ method: "POST",
21
+ url: `/cloud/v2/universes/${universeId}/luau-execution-session-task-binary-inputs`
22
+ };
23
+ }
24
+ /**
25
+ * Per-second request ceiling for creating a Luau execution task binary
26
+ * input, sourced from `x-roblox-rate-limits.perApiKeyOwner` on the
27
+ * `Cloud_CreateLuauExecutionSessionTaskBinaryInput` operation (5 requests
28
+ * per minute per API key owner).
29
+ */
30
+ const CREATE_OPERATION_LIMIT = Object.freeze({
31
+ maxPerSecond: 5 / 60,
32
+ operationKey: "luau-execution-task-binary-inputs.create"
33
+ });
34
+ /**
35
+ * Scopes required to create a Luau execution task binary input, sourced
36
+ * from `x-roblox-scopes` on the create operation in the vendored OpenAPI
37
+ * schema.
38
+ */
39
+ const CREATE_REQUIRED_SCOPES = Object.freeze(["universe.place.luau-execution-session:write"]);
40
+ //#endregion
41
+ //#region src/domains/cloud-v2/luau-execution-task-binary-inputs/parsers.ts
42
+ const PATH_PATTERN = /^universes\/(\d+)\/luau-execution-session-task-binary-inputs\/([^/]+)$/;
43
+ const MALFORMED_MESSAGE = "Malformed luau-execution-session-task-binary-input response";
44
+ /**
45
+ * Parses a successful Open Cloud
46
+ * `Cloud_CreateLuauExecutionSessionTaskBinaryInput` response body into
47
+ * the public {@link LuauExecutionTaskBinaryInput}.
48
+ *
49
+ * @param response - The full {@link HttpResponse} from the Open Cloud API.
50
+ * @returns A success result wrapping the parsed binary input, or an
51
+ * {@link ApiError} when the body does not match the expected shape.
52
+ */
53
+ function parseBinaryInputResponse(response) {
54
+ const { body, status: statusCode } = response;
55
+ if (!isRecord(body)) return malformed(statusCode);
56
+ if (typeof body["path"] !== "string" || !PATH_PATTERN.test(body["path"])) return malformed(statusCode);
57
+ if (typeof body["uploadUri"] !== "string") return malformed(statusCode);
58
+ return {
59
+ data: {
60
+ path: body["path"],
61
+ uploadUri: body["uploadUri"]
62
+ },
63
+ success: true
64
+ };
65
+ }
66
+ function malformed(statusCode) {
67
+ return {
68
+ err: new ApiError(MALFORMED_MESSAGE, { statusCode }),
69
+ success: false
70
+ };
71
+ }
72
+ //#endregion
3
73
  //#region src/resources/luau-execution/client.ts
74
+ function makeSpec(spec) {
75
+ return Object.freeze(spec);
76
+ }
77
+ const CREATE_BINARY_INPUT_SPEC = makeSpec({
78
+ buildRequest: (parameters) => okRequest(buildCreateBinaryInputRequest(parameters)),
79
+ methodDefaults: CREATE_METHOD_DEFAULTS,
80
+ methodKind: "create",
81
+ operationLimit: CREATE_OPERATION_LIMIT,
82
+ parse: parseBinaryInputResponse,
83
+ requiredScopes: CREATE_REQUIRED_SCOPES
84
+ });
4
85
  /**
5
86
  * Public client for the Roblox Open Cloud `LuauExecutionSessionTask`
6
87
  * resource. Tasks run a Luau script against a place and surface state,
7
88
  * output, or error through the `LuauExecutionTask` discriminated
8
89
  * union. Exposes `tasks.submit` for both the head version and a
9
- * specific place version, plus `tasks.get` for fetching task state.
90
+ * specific place version, `tasks.get` for fetching task state,
91
+ * `tasks.listLogs` for fetching structured log messages, and
92
+ * `binaryInputs.create` for allocating presigned upload slots.
93
+ *
94
+ * @since 0.1.0
95
+ *
96
+ * @example
97
+ *
98
+ * ```ts
99
+ * import { LuauExecutionClient } from "@bedrock-rbx/ocale/luau-execution";
100
+ *
101
+ * const client = new LuauExecutionClient({ apiKey: "your-key" });
102
+ * expect(client).toBeInstanceOf(LuauExecutionClient);
103
+ * ```
10
104
  */
11
105
  var LuauExecutionClient = class {
12
106
  #inner;
107
+ binaryInputs;
13
108
  tasks;
14
109
  /**
15
110
  * Creates a new {@link LuauExecutionClient}. Configuration is frozen
@@ -20,9 +115,19 @@ var LuauExecutionClient = class {
20
115
  */
21
116
  constructor(options) {
22
117
  this.#inner = new ResourceClient(options);
118
+ this.binaryInputs = createBinaryInputsHandle(this.#inner);
23
119
  this.tasks = createTasksHandle(this.#inner);
24
120
  }
25
121
  };
122
+ function createBinaryInputsHandle(inner) {
123
+ return { async create(parameters, options) {
124
+ return inner.execute({
125
+ options,
126
+ parameters,
127
+ spec: CREATE_BINARY_INPUT_SPEC
128
+ });
129
+ } };
130
+ }
26
131
  function createTasksHandle(inner) {
27
132
  return {
28
133
  async get(parameters, options) {
@@ -32,6 +137,26 @@ function createTasksHandle(inner) {
32
137
  spec: GET_SPEC
33
138
  });
34
139
  },
140
+ async listLogs(parameters, options) {
141
+ return inner.execute({
142
+ options,
143
+ parameters,
144
+ spec: LIST_LOGS_SPEC
145
+ });
146
+ },
147
+ async pollUntilDone(ref, options = {}) {
148
+ const resolved = withBudgetRequestTimeout(options);
149
+ return pollUntilDoneCore(buildPollDeps(inner, {
150
+ options: resolved,
151
+ ref
152
+ }), resolved);
153
+ },
154
+ async runUntilDone(parameters, options = {}) {
155
+ return submitAndPoll(inner, {
156
+ options: withBudgetRequestTimeout(options),
157
+ parameters
158
+ });
159
+ },
35
160
  async submit(parameters, options) {
36
161
  if ("versionId" in parameters) return inner.execute({
37
162
  options,
@@ -47,6 +172,6 @@ function createTasksHandle(inner) {
47
172
  };
48
173
  }
49
174
  //#endregion
50
- export { LuauExecutionClient };
175
+ export { LuauExecutionClient, defaultPollDelay };
51
176
 
52
177
  //# sourceMappingURL=luau-execution.mjs.map