@bedrock-rbx/ocale 0.1.0-beta.8 → 0.1.0

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 +182 -0
  2. package/dist/badges.d.mts +33 -2
  3. package/dist/badges.d.mts.map +1 -1
  4. package/dist/badges.mjs +16 -4
  5. package/dist/badges.mjs.map +1 -1
  6. package/dist/{data.generated-Cb6g6asv.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 +32 -8
  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 +30 -6
  15. package/dist/game-passes.mjs.map +1 -1
  16. package/dist/index.d.mts +21 -12
  17. package/dist/index.d.mts.map +1 -1
  18. package/dist/index.mjs +5 -5
  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 +22 -3
  23. package/dist/luau-execution.d.mts.map +1 -1
  24. package/dist/luau-execution.mjs +29 -13
  25. package/dist/luau-execution.mjs.map +1 -1
  26. package/dist/places.d.mts +20 -2
  27. package/dist/places.d.mts.map +1 -1
  28. package/dist/places.mjs +34 -14
  29. package/dist/places.mjs.map +1 -1
  30. package/dist/{poll-timeout-Dg_QFEqi.mjs → poll-timeout-C0nmJzOd.mjs} +6 -2
  31. package/dist/poll-timeout-C0nmJzOd.mjs.map +1 -0
  32. package/dist/{polling-helpers-CS00apdU.mjs → polling-helpers-BcycDhDm.mjs} +225 -78
  33. package/dist/polling-helpers-BcycDhDm.mjs.map +1 -0
  34. package/dist/{polling-BMrYajok.d.mts → polling-rj0dGREg.d.mts} +73 -14
  35. package/dist/polling-rj0dGREg.d.mts.map +1 -0
  36. package/dist/{price-information-DIrvwCmd.mjs → price-information-DK83Wul1.mjs} +2 -2
  37. package/dist/{price-information-DIrvwCmd.mjs.map → price-information-DK83Wul1.mjs.map} +1 -1
  38. package/dist/{rate-limit-D1q2Js-z.mjs → rate-limit-Co9i28qi.mjs} +30 -2
  39. package/dist/rate-limit-Co9i28qi.mjs.map +1 -0
  40. package/dist/{resource-client-D6Efj9fU.mjs → resource-client-C_D--PYX.mjs} +328 -243
  41. package/dist/resource-client-C_D--PYX.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-B5Fojgn0.mjs → signatures-JF-7Psce.mjs} +1 -1
  47. package/dist/{signatures-B5Fojgn0.mjs.map → signatures-JF-7Psce.mjs.map} +1 -1
  48. package/dist/storage.d.mts +316 -31
  49. package/dist/storage.d.mts.map +1 -1
  50. package/dist/storage.mjs +525 -24
  51. package/dist/storage.mjs.map +1 -1
  52. package/dist/testing.d.mts +24 -9
  53. package/dist/testing.d.mts.map +1 -1
  54. package/dist/testing.mjs +2 -2
  55. package/dist/testing.mjs.map +1 -1
  56. package/dist/{to-blob-B27VhoRp.mjs → to-blob-RPqMBuft.mjs} +1 -1
  57. package/dist/{to-blob-B27VhoRp.mjs.map → to-blob-RPqMBuft.mjs.map} +1 -1
  58. package/dist/{types-CwtZT1ek.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 -5
  61. package/dist/universes.d.mts.map +1 -1
  62. package/dist/universes.mjs +31 -15
  63. package/dist/universes.mjs.map +1 -1
  64. package/dist/{validation-DkL5KQqz.mjs → validation-9oU6qNNQ.mjs} +4 -2
  65. package/dist/validation-9oU6qNNQ.mjs.map +1 -0
  66. package/dist/{wire-CeL6W_V7.d.mts → wire-D3K-a-UP.d.mts} +3 -1
  67. package/dist/wire-D3K-a-UP.d.mts.map +1 -0
  68. package/package.json +7 -6
  69. package/dist/data.generated-Cb6g6asv.d.mts.map +0 -1
  70. package/dist/permission-error-DOVtNq3A.mjs +0 -46
  71. package/dist/permission-error-DOVtNq3A.mjs.map +0 -1
  72. package/dist/poll-timeout-Dg_QFEqi.mjs.map +0 -1
  73. package/dist/polling-BMrYajok.d.mts.map +0 -1
  74. package/dist/polling-helpers-CS00apdU.mjs.map +0 -1
  75. package/dist/rate-limit-BYuizHoD.d.mts +0 -92
  76. package/dist/rate-limit-BYuizHoD.d.mts.map +0 -1
  77. package/dist/rate-limit-D1q2Js-z.mjs.map +0 -1
  78. package/dist/resource-client-D6Efj9fU.mjs.map +0 -1
  79. package/dist/types-CwtZT1ek.d.mts.map +0 -1
  80. package/dist/validation-DkL5KQqz.mjs.map +0 -1
  81. package/dist/wire-CeL6W_V7.d.mts.map +0 -1
@@ -0,0 +1,189 @@
1
+ import { d as OpenCloudError } from "./types-CRiJg5EQ.mjs";
2
+
3
+ //#region src/errors/api-error.d.ts
4
+ /**
5
+ * Options for constructing an {@link ApiError}.
6
+ *
7
+ * @since 0.1.0
8
+ */
9
+ interface ApiErrorOptions extends ErrorOptions {
10
+ /** Optional machine-readable error code from the API. */
11
+ code?: string | undefined;
12
+ /** Parsed response body, when present. */
13
+ details?: JSONValue | undefined;
14
+ /** HTTP status code from the API response. */
15
+ statusCode: number;
16
+ }
17
+ /**
18
+ * Thrown when the Roblox Open Cloud API returns a non-2xx response
19
+ * that is not a rate limit (429).
20
+ *
21
+ * @since 0.1.0
22
+ *
23
+ * @example
24
+ *
25
+ * ```ts
26
+ * import { ApiError } from "@bedrock-rbx/ocale";
27
+ *
28
+ * const error = new ApiError("HTTP 404: Pass not found (code NotFound)", {
29
+ * code: "NotFound",
30
+ * details: { errorCode: "NotFound", message: "Pass not found" },
31
+ * statusCode: 404,
32
+ * });
33
+ *
34
+ * expect(error).toBeInstanceOf(ApiError);
35
+ * expect(error.statusCode).toBe(404);
36
+ * expect(error.code).toBe("NotFound");
37
+ * expect(error.details).toEqual({
38
+ * errorCode: "NotFound",
39
+ * message: "Pass not found",
40
+ * });
41
+ * ```
42
+ */
43
+ declare class ApiError extends OpenCloudError {
44
+ readonly code: string | undefined;
45
+ readonly details: JSONValue | undefined;
46
+ override readonly name: string;
47
+ readonly statusCode: number;
48
+ /**
49
+ * Creates a new ApiError.
50
+ *
51
+ * @param message - Human-readable error description.
52
+ * @param options - Error options including status code, optional error
53
+ * code, and the parsed response body when present.
54
+ */
55
+ constructor(message: string, options: ApiErrorOptions);
56
+ }
57
+ //#endregion
58
+ //#region src/errors/network-error.d.ts
59
+ /**
60
+ * Options for constructing a {@link NetworkError}.
61
+ *
62
+ * @since 0.1.0
63
+ */
64
+ interface NetworkErrorOptions extends ErrorOptions {
65
+ /** HTTP method of the request that failed. */
66
+ method?: string | undefined;
67
+ /** Fully-qualified URL of the request that failed. */
68
+ url?: string | undefined;
69
+ }
70
+ /**
71
+ * Thrown when a network-level failure prevents the request from reaching
72
+ * the Roblox Open Cloud API (e.g., DNS resolution failure, connection reset).
73
+ * The `method` and `url` name the failing call so a transport failure that
74
+ * survives every retry can be diagnosed; the underlying transport error is
75
+ * carried on `cause`.
76
+ *
77
+ * @since 0.1.0
78
+ */
79
+ declare class NetworkError extends OpenCloudError {
80
+ readonly method: string | undefined;
81
+ override readonly name: string;
82
+ readonly url: string | undefined;
83
+ /**
84
+ * Creates a new NetworkError.
85
+ *
86
+ * @param message - Human-readable error description.
87
+ * @param options - Error options including the optional `cause` and the
88
+ * `method` / `url` of the request that failed.
89
+ */
90
+ constructor(message: string, options?: NetworkErrorOptions);
91
+ }
92
+ //#endregion
93
+ //#region src/errors/rate-limit.d.ts
94
+ /**
95
+ * Options for constructing a {@link RateLimitError}.
96
+ *
97
+ * @since 0.1.0
98
+ */
99
+ interface RateLimitErrorOptions extends ErrorOptions {
100
+ /**
101
+ * Requests still allowed in the throttled window, read from
102
+ * `x-ratelimit-remaining` (the most-constrained window). `undefined` when
103
+ * the header is absent or carries no finite numeric token; parsed
104
+ * independently of `x-ratelimit-reset`, so a valid value survives a
105
+ * non-numeric reset. Typically `0` on a genuine 429.
106
+ */
107
+ remaining?: number | undefined;
108
+ /** Seconds to wait before retrying the request. */
109
+ retryAfterSeconds: number;
110
+ }
111
+ /**
112
+ * Thrown when the Roblox Open Cloud API returns a 429 Too Many Requests response.
113
+ * Contains the server-suggested retry delay.
114
+ *
115
+ * @since 0.1.0
116
+ *
117
+ * @example
118
+ *
119
+ * ```ts
120
+ * import { RateLimitError } from "@bedrock-rbx/ocale";
121
+ *
122
+ * const error = new RateLimitError("Too many requests", {
123
+ * retryAfterSeconds: 30,
124
+ * });
125
+ *
126
+ * expect(error).toBeInstanceOf(RateLimitError);
127
+ * expect(error.retryAfterSeconds).toBe(30);
128
+ * ```
129
+ */
130
+ declare class RateLimitError extends OpenCloudError {
131
+ override readonly name = "RateLimitError";
132
+ /** Requests left in the throttled window, or `undefined` if not reported. */
133
+ readonly remaining: number | undefined;
134
+ readonly retryAfterSeconds: number;
135
+ /**
136
+ * Creates a new RateLimitError.
137
+ *
138
+ * @param message - Human-readable error description.
139
+ * @param options - Error options including the retry delay.
140
+ */
141
+ constructor(message: string, options: RateLimitErrorOptions);
142
+ }
143
+ //#endregion
144
+ //#region src/internal/http/retry.d.ts
145
+ /**
146
+ * Fully-resolved retry config shape that {@link mergeConfig} and
147
+ * {@link shouldRetry} operate on. Fields are required because this represents
148
+ * the post-defaulting, internal view; callers should supply every field (or
149
+ * resolve them via a test factory / client constructor). The partial,
150
+ * user-facing type lives on client construction options; method defaults and
151
+ * per-request overrides use `Partial<RetryResolvable>`.
152
+ */
153
+ interface RetryResolvable {
154
+ /** Roblox Open Cloud API key. */
155
+ readonly apiKey: string;
156
+ /** Base URL for the Open Cloud API. */
157
+ readonly baseUrl: string;
158
+ /** Maximum retry attempts before giving up. */
159
+ readonly maxRetries: number;
160
+ /** Status codes that are eligible for retry. */
161
+ readonly retryableStatuses: ReadonlyArray<number>;
162
+ /**
163
+ * Node-style transport error codes ({@link findErrorCode}) eligible for
164
+ * retry when surfaced as a {@link NetworkError}. Empty for create
165
+ * operations by default; consumers opt a create in via a per-request
166
+ * override.
167
+ */
168
+ readonly retryableTransportCodes: ReadonlyArray<string>;
169
+ /** Fallback delay function when no server hint is available. */
170
+ readonly retryDelay: (attempt: number) => number;
171
+ /** Per-request timeout in milliseconds. */
172
+ readonly timeout: number;
173
+ }
174
+ /**
175
+ * Transient transport error codes that are safe to retry for idempotent
176
+ * operations. Connection resets, timeouts, and DNS hiccups are recoverable on
177
+ * a retry. A self-aborted request timeout carries no OS-level `code`, so
178
+ * {@link shouldRetry} folds it into this set as `ETIMEDOUT` (via
179
+ * {@link isTimeoutAbort}) for idempotent methods; create methods retry no
180
+ * transport codes and so still never re-issue a timed-out write.
181
+ *
182
+ * @since 0.1.0
183
+ */
184
+ declare const TRANSIENT_TRANSPORT_CODES: ReadonlyArray<string>;
185
+ /** Kind of HTTP method the merge is being performed for. */
186
+ type MethodKind = "create" | "idempotent";
187
+ //#endregion
188
+ export { RateLimitErrorOptions as a, ApiError as c, RateLimitError as i, ApiErrorOptions as l, RetryResolvable as n, NetworkError as o, TRANSIENT_TRANSPORT_CODES as r, NetworkErrorOptions as s, MethodKind as t };
189
+ //# sourceMappingURL=retry-r1TXe5Zd.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-r1TXe5Zd.d.mts","names":[],"sources":["../src/errors/api-error.ts","../src/errors/network-error.ts","../src/errors/rate-limit.ts","../src/internal/http/retry.ts"],"mappings":";;;;;AAOA;;;UAAiB,eAAA,SAAwB,YAAA;;EAExC,IAAA;;EAEA,OAAA,GAAU,SAAA;;EAEV,UAAA;AAAA;AA6BD;;;;;;;;;;;;;;;;;;;AAauC;;;;AChDvC;;;ADmCA,cAAa,QAAA,SAAiB,cAAA;EAAA,SACb,IAAA;EAAA,SACA,OAAA,EAAS,SAAA;EAAA,kBACA,IAAA;EAAA,SACT,UAAA;ECnChB;AAYD;;;;;;EDgCC,WAAA,CAAY,OAAA,UAAiB,OAAA,EAAS,eAAA;AAAA;;;;;AAhDvC;;;UCAiB,mBAAA,SAA4B,YAAA;;EAE5C,MAAA;;EAEA,GAAA;AAAA;;ADEA;AA6BD;;;;;;;cCnBa,YAAA,SAAqB,cAAA;EAAA,SACjB,MAAA;EAAA,kBACS,IAAA;EAAA,SACT,GAAA;;;;;;;;EAShB,WAAA,CAAY,OAAA,UAAiB,OAAA,GAAU,mBAAA;AAAA;;;;;AD5BxC;;;UEAiB,qBAAA,SAA8B,YAAA;;;;;;;AFM9C;EEEA,SAAA;EF2BY;EEzBZ,iBAAA;AAAA;;;;;;;;;;;;;;;;AFsCsC;;;;cEhB1B,cAAA,SAAuB,cAAA;EAAA,kBACV,IAAA;;WAET,SAAA;EAAA,SACA,iBAAA;;;;ADhChB;AAYD;;EC4BC,WAAA,CAAY,OAAA,UAAiB,OAAA,EAAS,qBAAA;AAAA;;;AF5CvC;;;;;;;;AAAA,UGMiB,eAAA;EHAhB;EAAA,SGES,MAAA;EH2BV;EAAA,SGzBU,OAAA;;WAEA,UAAA;;WAEA,iBAAA,EAAmB,aAAA;EHqBC;;;;;;EAAA,SGdpB,uBAAA,EAAyB,aAAA;;WAEzB,UAAA,GAAa,OAAA;;WAEb,OAAA;AAAA;;AHuB6B;;;;AChDvC;;;;;cEsCa,yBAAA,EAA2B,aAAA;;KAsC5B,UAAA"}
@@ -56,4 +56,4 @@ function matchesSignature(body, signature) {
56
56
  //#endregion
57
57
  export { RBXL_SIGNATURE as n, matchesSignature as r, RBXLX_SIGNATURE as t };
58
58
 
59
- //# sourceMappingURL=signatures-B5Fojgn0.mjs.map
59
+ //# sourceMappingURL=signatures-JF-7Psce.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"signatures-B5Fojgn0.mjs","names":[],"sources":["../src/domains/universes/places/signatures.ts"],"sourcesContent":["/**\n * Magic-byte prefix every Roblox binary place file (`.rbxl`) starts with.\n * The first 8 bytes spell out `<roblox!` in ASCII; the remaining 6 bytes\n * (`\\x89\\xff\\r\\n\\x1a\\n`) are the binary-format marker that distinguishes a\n * binary place file from the XML form (`.rbxlx`), whose ASCII-only header\n * begins with `<roblox `.\n */\nexport const RBXL_SIGNATURE: Readonly<Uint8Array<ArrayBuffer>> = new Uint8Array([\n\t0x3c, 0x72, 0x6f, 0x62, 0x6c, 0x6f, 0x78, 0x21, 0x89, 0xff, 0x0d, 0x0a, 0x1a, 0x0a,\n]);\n\n/**\n * Magic-byte prefix every Roblox XML place file (`.rbxlx`) starts with.\n * Equivalent to the ASCII string `<roblox ` (note the trailing space): a\n * well-formed rbxlx file opens with `<roblox` followed by attributes, while\n * an rbxl file uses `<roblox!` (exclamation mark) as the eighth byte. The\n * trailing space is what proves the file is the XML variant rather than\n * the binary one.\n */\nexport const RBXLX_SIGNATURE: Readonly<Uint8Array<ArrayBuffer>> = new Uint8Array([\n\t0x3c, 0x72, 0x6f, 0x62, 0x6c, 0x6f, 0x78, 0x20,\n]);\n\n/**\n * Reports whether `body` begins with `signature`. A pure byte-prefix check\n * with no allocation; used by the place builder to disambiguate `.rbxl` and\n * `.rbxlx` payloads against their declared `format`.\n *\n * @param body - The caller-supplied place file bytes.\n * @param signature - One of the frozen signature constants from this module.\n * @returns `true` if every byte of `signature` matches `body[0..signature.length]`.\n */\nexport function matchesSignature(\n\tbody: Uint8Array,\n\tsignature: Readonly<Uint8Array<ArrayBuffer>>,\n): boolean {\n\tfor (const [index, expected] of signature.entries()) {\n\t\tif (body[index] !== expected) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n"],"mappings":";;;;;;;;AAOA,MAAa,iBAAoD,IAAI,WAAW;CAC/E;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAC9E,CAAC;;;;;;;;;AAUF,MAAa,kBAAqD,IAAI,WAAW;CAChF;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAC1C,CAAC;;;;;;;;;;AAWF,SAAgB,iBACf,MACA,WACU;AACV,MAAK,MAAM,CAAC,OAAO,aAAa,UAAU,SAAS,CAClD,KAAI,KAAK,WAAW,SACnB,QAAO;AAIT,QAAO"}
1
+ {"version":3,"file":"signatures-JF-7Psce.mjs","names":[],"sources":["../src/domains/universes/places/signatures.ts"],"sourcesContent":["/**\n * Magic-byte prefix every Roblox binary place file (`.rbxl`) starts with.\n * The first 8 bytes spell out `<roblox!` in ASCII; the remaining 6 bytes\n * (`\\x89\\xff\\r\\n\\x1a\\n`) are the binary-format marker that distinguishes a\n * binary place file from the XML form (`.rbxlx`), whose ASCII-only header\n * begins with `<roblox `.\n */\nexport const RBXL_SIGNATURE: Readonly<Uint8Array<ArrayBuffer>> = new Uint8Array([\n\t0x3c, 0x72, 0x6f, 0x62, 0x6c, 0x6f, 0x78, 0x21, 0x89, 0xff, 0x0d, 0x0a, 0x1a, 0x0a,\n]);\n\n/**\n * Magic-byte prefix every Roblox XML place file (`.rbxlx`) starts with.\n * Equivalent to the ASCII string `<roblox ` (note the trailing space): a\n * well-formed rbxlx file opens with `<roblox` followed by attributes, while\n * an rbxl file uses `<roblox!` (exclamation mark) as the eighth byte. The\n * trailing space is what proves the file is the XML variant rather than\n * the binary one.\n */\nexport const RBXLX_SIGNATURE: Readonly<Uint8Array<ArrayBuffer>> = new Uint8Array([\n\t0x3c, 0x72, 0x6f, 0x62, 0x6c, 0x6f, 0x78, 0x20,\n]);\n\n/**\n * Reports whether `body` begins with `signature`. A pure byte-prefix check\n * with no allocation; used by the place builder to disambiguate `.rbxl` and\n * `.rbxlx` payloads against their declared `format`.\n *\n * @param body - The caller-supplied place file bytes.\n * @param signature - One of the frozen signature constants from this module.\n * @returns `true` if every byte of `signature` matches `body[0..signature.length]`.\n */\nexport function matchesSignature(\n\tbody: Uint8Array,\n\tsignature: Readonly<Uint8Array<ArrayBuffer>>,\n): boolean {\n\tfor (const [index, expected] of signature.entries()) {\n\t\tif (body[index] !== expected) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n"],"mappings":";;;;;;;;AAOA,MAAa,iBAAoD,IAAI,WAAW;CAC/E;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;AAC/E,CAAC;;;;;;;;;AAUD,MAAa,kBAAqD,IAAI,WAAW;CAChF;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;AAC3C,CAAC;;;;;;;;;;AAWD,SAAgB,iBACf,MACA,WACU;CACV,KAAK,MAAM,CAAC,OAAO,aAAa,UAAU,QAAQ,GACjD,IAAI,KAAK,WAAW,UACnB,OAAO;CAIT,OAAO;AACR"}
@@ -1,9 +1,12 @@
1
- import { d as OpenCloudError, i as OpenCloudClientOptions, l as Result, n as HttpRequest, r as HttpResponse, s as RequestOptions, u as SleepFunc } from "./types-CwtZT1ek.mjs";
1
+ import { d as OpenCloudError, i as OpenCloudClientOptions, l as Result, n as HttpRequest, r as HttpResponse, s as RequestOptions, u as SleepFunc } from "./types-CRiJg5EQ.mjs";
2
+ import { n as RetryResolvable, t as MethodKind } from "./retry-r1TXe5Zd.mjs";
2
3
 
3
4
  //#region src/domains/cloud-v2/memory-store-queues/types.d.ts
4
5
  /**
5
6
  * Caller-supplied input for the `enqueue` method on `StorageClient.queues`.
6
7
  * Mirrors `Cloud_CreateMemoryStoreQueueItem` on the Open Cloud API.
8
+ *
9
+ * @since 0.1.0
7
10
  */
8
11
  interface EnqueueQueueItemParameters {
9
12
  /**
@@ -34,6 +37,8 @@ interface EnqueueQueueItemParameters {
34
37
  * Parsed representation of a memory-store queue item, as returned by the
35
38
  * Open Cloud `Cloud_CreateMemoryStoreQueueItem` and (inside the array)
36
39
  * `Cloud_ReadMemoryStoreQueueItems` endpoints.
40
+ *
41
+ * @since 0.1.0
37
42
  */
38
43
  interface QueueItem {
39
44
  /** Server-generated item identifier, parsed from the wire `path`. */
@@ -55,6 +60,8 @@ interface QueueItem {
55
60
  /**
56
61
  * Caller-supplied input for the `dequeue` method on
57
62
  * `StorageClient.queues`. Mirrors `Cloud_ReadMemoryStoreQueueItems`.
63
+ *
64
+ * @since 0.1.0
58
65
  */
59
66
  interface DequeueQueueItemsParameters {
60
67
  /**
@@ -84,6 +91,8 @@ interface DequeueQueueItemsParameters {
84
91
  * response. The `readId` value must be passed to a subsequent
85
92
  * `discard` call to acknowledge the items; otherwise the items reappear
86
93
  * once the invisibility window elapses.
94
+ *
95
+ * @since 0.1.0
87
96
  */
88
97
  interface DequeueResult {
89
98
  /** Items dequeued from the front of the queue, in dequeue order. */
@@ -100,6 +109,8 @@ interface DequeueResult {
100
109
  * Acknowledging a `readId` removes the dequeued batch from the queue
101
110
  * permanently; without `discard`, the items reappear once their
102
111
  * invisibility window elapses.
112
+ *
113
+ * @since 0.1.0
103
114
  */
104
115
  interface DiscardQueueItemsParameters {
105
116
  /** Stringified queue identifier. */
@@ -110,6 +121,204 @@ interface DiscardQueueItemsParameters {
110
121
  readonly universeId: string;
111
122
  }
112
123
  //#endregion
124
+ //#region src/domains/cloud-v2/memory-store-sorted-maps/types.d.ts
125
+ /**
126
+ * Discriminated union describing a sorted-map item's sort key. The
127
+ * server contract requires at most one of `stringSortKey` or
128
+ * `numericSortKey`; the union surfaces that constraint at the type
129
+ * level so callers cannot accidentally set both.
130
+ *
131
+ * @since 0.1.0
132
+ */
133
+ type SortKey = {
134
+ readonly kind: "numeric";
135
+ readonly value: number;
136
+ } | {
137
+ readonly kind: "string";
138
+ readonly value: string;
139
+ };
140
+ /**
141
+ * Caller-supplied input for the `create` method on
142
+ * `StorageClient.sortedMaps`. Mirrors
143
+ * `Cloud_CreateMemoryStoreSortedMapItem` on the Open Cloud API.
144
+ *
145
+ * @since 0.1.0
146
+ */
147
+ interface CreateSortedMapItemParameters {
148
+ /**
149
+ * Caller-supplied item identifier. The server stores items
150
+ * case-sensitively; the value is URL-encoded by the builder.
151
+ */
152
+ readonly itemId: string;
153
+ /** Stringified sorted-map identifier. */
154
+ readonly mapId: string;
155
+ /** Optional sort key driving the item's position in the map. */
156
+ readonly sortKey?: SortKey;
157
+ /**
158
+ * Optional time-to-live in seconds. After this many seconds the
159
+ * item is automatically removed. Omitted entries inherit the
160
+ * server-default TTL.
161
+ */
162
+ readonly ttl?: number;
163
+ /** Stringified ID of the universe that owns the sorted map. */
164
+ readonly universeId: string;
165
+ /**
166
+ * Opaque item payload. May be any JSON value, including `null`,
167
+ * matching the protobuf `Value` contract on the wire.
168
+ */
169
+ readonly value: JSONValue;
170
+ }
171
+ /**
172
+ * Caller-supplied input for the `list` method on
173
+ * `StorageClient.sortedMaps`. Mirrors
174
+ * `Cloud_ListMemoryStoreSortedMapItems` on the Open Cloud API. All
175
+ * paging and filtering parameters are optional; omitting them returns
176
+ * up to one item server-side (`maxPageSize` defaults to `1`).
177
+ *
178
+ * @since 0.1.0
179
+ */
180
+ interface ListSortedMapItemsParameters {
181
+ /**
182
+ * Optional CEL filter on `id` and `sortKey`. The server supports
183
+ * `<`, `>`, and `&&` operators only; other operators are rejected
184
+ * server-side with a validation error.
185
+ */
186
+ readonly filter?: string;
187
+ /** Stringified sorted-map identifier. */
188
+ readonly mapId: string;
189
+ /**
190
+ * Maximum items per page. Capped at `100` server-side; values above
191
+ * the cap are clamped. Defaults to `1` when omitted.
192
+ */
193
+ readonly maxPageSize?: number;
194
+ /**
195
+ * Sort order. The server supports the `id` field only, with an
196
+ * optional ` desc` suffix.
197
+ */
198
+ readonly orderBy?: string;
199
+ /**
200
+ * Page token returned by a previous call. When supplied, all other
201
+ * parameters must match the previous call exactly.
202
+ */
203
+ readonly pageToken?: string;
204
+ /** Stringified ID of the universe that owns the sorted map. */
205
+ readonly universeId: string;
206
+ }
207
+ /**
208
+ * Parsed representation of a sorted-map item, as returned by every
209
+ * sorted-map operation that yields a single item.
210
+ *
211
+ * @since 0.1.0
212
+ */
213
+ interface SortedMapItem {
214
+ /** Item identifier, parsed from the wire `path`. */
215
+ readonly id: string;
216
+ /**
217
+ * Server-generated etag for optimistic concurrency. Surfaced for
218
+ * caller inspection; the SDK does not yet emit an `If-Match` header
219
+ * for conditional update or delete.
220
+ */
221
+ readonly etag: string;
222
+ /** Timestamp at which the server removes the item from the map. */
223
+ readonly expiresAt: Date;
224
+ /** Stringified sorted-map identifier, parsed from the wire `path`. */
225
+ readonly mapId: string;
226
+ /**
227
+ * Parsed sort key, or `undefined` when the item has none. The server
228
+ * contract is one-of: a response carrying both `stringSortKey` and
229
+ * `numericSortKey` is rejected as malformed.
230
+ */
231
+ readonly sortKey: SortKey | undefined;
232
+ /** Stringified universe identifier, parsed from the wire `path`. */
233
+ readonly universeId: string;
234
+ /**
235
+ * Opaque item payload. Round-trips as JSON, including nested `null`
236
+ * values inside objects and arrays, and `null` at the top level.
237
+ */
238
+ readonly value: JSONValue;
239
+ }
240
+ /**
241
+ * Parsed result of a successful `Cloud_ListMemoryStoreSortedMapItems`
242
+ * response.
243
+ *
244
+ * @since 0.1.0
245
+ */
246
+ interface ListSortedMapItemsResult {
247
+ /** Items returned in the current page, ordered per `orderBy`. */
248
+ readonly items: ReadonlyArray<SortedMapItem>;
249
+ /**
250
+ * Page token for the next call, or `undefined` when no more pages
251
+ * exist. Pass back through `pageToken` to retrieve the next page.
252
+ */
253
+ readonly nextPageToken: string | undefined;
254
+ }
255
+ /**
256
+ * Caller-supplied input for the `delete` method on
257
+ * `StorageClient.sortedMaps`. Mirrors
258
+ * `Cloud_DeleteMemoryStoreSortedMapItem` on the Open Cloud API.
259
+ *
260
+ * @since 0.1.0
261
+ */
262
+ interface DeleteSortedMapItemParameters {
263
+ /** Caller-supplied item identifier. URL-encoded by the builder. */
264
+ readonly itemId: string;
265
+ /** Stringified sorted-map identifier. */
266
+ readonly mapId: string;
267
+ /** Stringified ID of the universe that owns the sorted map. */
268
+ readonly universeId: string;
269
+ }
270
+ /**
271
+ * Caller-supplied input for the `get` method on
272
+ * `StorageClient.sortedMaps`. Mirrors
273
+ * `Cloud_GetMemoryStoreSortedMapItem` on the Open Cloud API.
274
+ *
275
+ * @since 0.1.0
276
+ */
277
+ interface GetSortedMapItemParameters {
278
+ /** Caller-supplied item identifier. URL-encoded by the builder. */
279
+ readonly itemId: string;
280
+ /** Stringified sorted-map identifier. */
281
+ readonly mapId: string;
282
+ /** Stringified ID of the universe that owns the sorted map. */
283
+ readonly universeId: string;
284
+ }
285
+ /**
286
+ * Caller-supplied input for the `update` method on
287
+ * `StorageClient.sortedMaps`. Mirrors
288
+ * `Cloud_UpdateMemoryStoreSortedMapItem` on the Open Cloud API. Body
289
+ * fields (`value`, `ttl`, `sortKey`) are optional under PATCH
290
+ * semantics; omitted fields are left unchanged on the server.
291
+ *
292
+ * @since 0.1.0
293
+ */
294
+ interface UpdateSortedMapItemParameters {
295
+ /**
296
+ * When `true`, the server creates the item if it does not exist
297
+ * instead of returning 404. Travels as the `allowMissing` query
298
+ * string parameter.
299
+ */
300
+ readonly allowMissing?: boolean;
301
+ /** Caller-supplied item identifier. URL-encoded by the builder. */
302
+ readonly itemId: string;
303
+ /** Stringified sorted-map identifier. */
304
+ readonly mapId: string;
305
+ /**
306
+ * Replacement sort key. Either kind of {@link SortKey} resets the
307
+ * field on the wire; omit the field to leave the existing sort key
308
+ * untouched.
309
+ */
310
+ readonly sortKey?: SortKey;
311
+ /**
312
+ * Replacement time-to-live in seconds. Omitted entries leave the
313
+ * existing TTL unchanged.
314
+ */
315
+ readonly ttl?: number;
316
+ /** Stringified ID of the universe that owns the sorted map. */
317
+ readonly universeId: string;
318
+ /** Replacement value. Omitted entries leave the existing value unchanged. */
319
+ readonly value?: JSONValue;
320
+ }
321
+ //#endregion
113
322
  //#region src/internal/http/rate-limit-queue.d.ts
114
323
  /**
115
324
  * Identifies and bounds a single Roblox Open Cloud operation for rate
@@ -126,32 +335,6 @@ interface OperationLimit {
126
335
  readonly operationKey: string;
127
336
  }
128
337
  //#endregion
129
- //#region src/internal/http/retry.d.ts
130
- /**
131
- * Fully-resolved retry config shape that {@link mergeConfig} and
132
- * {@link shouldRetry} operate on. Fields are required because this represents
133
- * the post-defaulting, internal view — callers should supply every field (or
134
- * resolve them via a test factory / client constructor). The partial,
135
- * user-facing type lives on client construction options; method defaults and
136
- * per-request overrides use `Partial<RetryResolvable>`.
137
- */
138
- interface RetryResolvable {
139
- /** Roblox Open Cloud API key. */
140
- readonly apiKey: string;
141
- /** Base URL for the Open Cloud API. */
142
- readonly baseUrl: string;
143
- /** Maximum retry attempts before giving up. */
144
- readonly maxRetries: number;
145
- /** Status codes that are eligible for retry. */
146
- readonly retryableStatuses: ReadonlyArray<number>;
147
- /** Fallback delay function when no server hint is available. */
148
- readonly retryDelay: (attempt: number) => number;
149
- /** Per-request timeout in milliseconds. */
150
- readonly timeout: number;
151
- }
152
- /** Kind of HTTP method the merge is being performed for. */
153
- type MethodKind = "create" | "idempotent";
154
- //#endregion
155
338
  //#region src/internal/resource-client.d.ts
156
339
  /**
157
340
  * Describes a single resource method's shape for dispatch through
@@ -344,17 +527,117 @@ declare class MemoryStoreQueuesGroup {
344
527
  enqueue(parameters: EnqueueQueueItemParameters, options?: RequestOptions): Promise<Result<QueueItem, OpenCloudError>>;
345
528
  }
346
529
  //#endregion
530
+ //#region src/resources/storage/sorted-maps-group.d.ts
531
+ /**
532
+ * Operation Group on `StorageClient` that exposes the memory-store
533
+ * sorted-map endpoints. Sorted maps are ordered collections of
534
+ * (id, value, sortKey) triples; consumers create, read, update, list,
535
+ * and delete items keyed by a caller-supplied identifier and ordered
536
+ * by an optional string or numeric sort key.
537
+ */
538
+ declare class MemoryStoreSortedMapsGroup {
539
+ #private;
540
+ /**
541
+ * Wraps the shared {@link ResourceClient} so the Operation Group
542
+ * routes calls through the same retry, hooks, and rate-limit queues
543
+ * as the rest of the parent client.
544
+ *
545
+ * @param inner - The shared {@link ResourceClient} owned by the
546
+ * parent client.
547
+ */
548
+ constructor(inner: ResourceClient);
549
+ /**
550
+ * Creates a single item in a sorted map. The sorted map is
551
+ * auto-created on first use; the map identifier is any string the
552
+ * caller picks. Items are keyed by `itemId` (case-sensitive) and
553
+ * ordered by an optional `sortKey`. Items expire and are removed
554
+ * automatically after `ttl` seconds, or after a server-default
555
+ * lifetime when omitted.
556
+ *
557
+ * On 5xx, create does not retry: Roblox Open Cloud has no
558
+ * idempotency-key support, so a retry of a transient failure risks
559
+ * producing a duplicate item.
560
+ *
561
+ * @param parameters - Universe, sorted-map, item identifiers, the
562
+ * value to store, and optional `sortKey` and `ttl`.
563
+ * @param options - Optional per-request overrides (e.g. A different
564
+ * {@link OpenCloudClientOptions.apiKey} for this call only).
565
+ * @returns A {@link Result} wrapping the parsed {@link SortedMapItem}
566
+ * or the {@link OpenCloudError} that caused the request to fail.
567
+ */
568
+ create(parameters: CreateSortedMapItemParameters, options?: RequestOptions): Promise<Result<SortedMapItem, OpenCloudError>>;
569
+ /**
570
+ * Removes a single item from a sorted map. The call is idempotent:
571
+ * a second `delete` against the same item is a no-op once the
572
+ * server has dropped the row. The retry policy retries both 429
573
+ * and 5xx.
574
+ *
575
+ * @param parameters - Universe, sorted-map, and item identifiers.
576
+ * @param options - Optional per-request overrides.
577
+ * @returns A {@link Result} wrapping `undefined` on success or the
578
+ * {@link OpenCloudError} that caused the request to fail.
579
+ */
580
+ delete(parameters: DeleteSortedMapItemParameters, options?: RequestOptions): Promise<Result<undefined, OpenCloudError>>;
581
+ /**
582
+ * Reads a single item from a sorted map. Returns the parsed
583
+ * {@link SortedMapItem} with the server-recorded `etag` for use in
584
+ * subsequent conditional updates (once the SDK begins emitting
585
+ * `If-Match`; see the package README).
586
+ *
587
+ * @param parameters - Universe, sorted-map, and item identifiers.
588
+ * @param options - Optional per-request overrides.
589
+ * @returns A {@link Result} wrapping the parsed {@link SortedMapItem}
590
+ * or the {@link OpenCloudError} that caused the request to fail.
591
+ */
592
+ get(parameters: GetSortedMapItemParameters, options?: RequestOptions): Promise<Result<SortedMapItem, OpenCloudError>>;
593
+ /**
594
+ * Lists items in a sorted map. The server caps `maxPageSize` at
595
+ * `100` and defaults it to `1` when omitted, so callers explicitly
596
+ * pass `maxPageSize` to retrieve more than a single item per page.
597
+ * The `filter` parameter accepts a CEL expression on `id` and
598
+ * `sortKey` (operators `<`, `>`, `&&` only).
599
+ *
600
+ * @param parameters - Universe and sorted-map identifiers, plus
601
+ * optional pagination and filter parameters.
602
+ * @param options - Optional per-request overrides.
603
+ * @returns A {@link Result} wrapping the parsed
604
+ * {@link ListSortedMapItemsResult} or the {@link OpenCloudError}
605
+ * that caused the request to fail.
606
+ */
607
+ list(parameters: ListSortedMapItemsParameters, options?: RequestOptions): Promise<Result<ListSortedMapItemsResult, OpenCloudError>>;
608
+ /**
609
+ * Updates a sorted-map item under PATCH semantics: omitted body
610
+ * fields are left unchanged on the server, supplied fields replace
611
+ * their existing values. Passing `allowMissing: true` creates the
612
+ * item when no row exists instead of returning 404.
613
+ *
614
+ * Retries 5xx because PATCH with the same body produces the same
615
+ * server state.
616
+ *
617
+ * @param parameters - Universe, sorted-map, and item identifiers,
618
+ * plus any subset of `value`, `ttl`, `sortKey`, and
619
+ * `allowMissing`.
620
+ * @param options - Optional per-request overrides.
621
+ * @returns A {@link Result} wrapping the parsed {@link SortedMapItem}
622
+ * or the {@link OpenCloudError} that caused the request to fail.
623
+ */
624
+ update(parameters: UpdateSortedMapItemParameters, options?: RequestOptions): Promise<Result<SortedMapItem, OpenCloudError>>;
625
+ }
626
+ //#endregion
347
627
  //#region src/resources/storage/client.d.ts
348
628
  /**
349
629
  * Public client for the Roblox Open Cloud `Data and memory stores`
350
630
  * Feature. Today it covers memory-store queues via the
351
- * {@link StorageClient.queues} Operation Group; future Operation
352
- * Groups for sorted maps and data stores slot in as siblings on the
353
- * same client.
631
+ * {@link StorageClient.queues} Operation Group and memory-store sorted
632
+ * maps via the {@link StorageClient.sortedMaps} Operation Group; a
633
+ * future data-stores Operation Group slots in as a sibling on the same
634
+ * client.
354
635
  *
355
636
  * Every method returns a `Result` so callers handle failure
356
637
  * explicitly; no thrown error ever escapes the client.
357
638
  *
639
+ * @since 0.1.0
640
+ *
358
641
  * @example
359
642
  *
360
643
  * ```ts
@@ -367,6 +650,8 @@ declare class MemoryStoreQueuesGroup {
367
650
  declare class StorageClient {
368
651
  /** Memory-store queue Operation Group. */
369
652
  readonly queues: MemoryStoreQueuesGroup;
653
+ /** Memory-store sorted-map Operation Group. */
654
+ readonly sortedMaps: MemoryStoreSortedMapsGroup;
370
655
  /**
371
656
  * Creates a new {@link StorageClient}. Configuration is frozen on
372
657
  * construction; per-request overrides are accepted on each method.
@@ -376,5 +661,5 @@ declare class StorageClient {
376
661
  constructor(options: OpenCloudClientOptions);
377
662
  }
378
663
  //#endregion
379
- export { type DequeueQueueItemsParameters, type DequeueResult, type DiscardQueueItemsParameters, type EnqueueQueueItemParameters, type QueueItem, StorageClient };
664
+ export { type CreateSortedMapItemParameters, type DeleteSortedMapItemParameters, type DequeueQueueItemsParameters, type DequeueResult, type DiscardQueueItemsParameters, type EnqueueQueueItemParameters, type GetSortedMapItemParameters, type ListSortedMapItemsParameters, type ListSortedMapItemsResult, type QueueItem, type SortKey, type SortedMapItem, StorageClient, type UpdateSortedMapItemParameters };
380
665
  //# sourceMappingURL=storage.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.mts","names":[],"sources":["../src/domains/cloud-v2/memory-store-queues/types.ts","../src/internal/http/rate-limit-queue.ts","../src/internal/http/retry.ts","../src/internal/resource-client.ts","../src/resources/storage/queues-group.ts","../src/resources/storage/client.ts"],"mappings":";;;;;;AAIA;UAAiB,0BAAA;;;;;;;WAOP,IAAA,EAAM,OAAA,CAAQ,SAAA;;;;;AAwBxB;WAlBU,QAAA;;WAEA,OAAA;;;;;;WAMA,GAAA;;WAEA,UAAA;AAAA;;;;;;UAQO,SAAA;EAsBjB;EAAA,SApBU,EAAA;;;;;WAKA,IAAA,EAAM,OAAA,CAAQ,SAAA;;WAEd,SAAA,EAAW,IAAA;;WAEX,QAAA;EAyCV;EAAA,SAvCU,OAAA;;WAEA,UAAA;AAAA;;;;;UAOO,2BAAA;EA+CjB;;;;;EAAA,SAzCU,YAAA;;;;;WAKA,KAAA;;AC7DV;;;;WDmEU,kBAAA;;WAEA,OAAA;;WAEA,UAAA;AAAA;;;;;;;UASO,aAAA;;WAEP,KAAA,EAAO,aAAA,CAAc,SAAA;;;;AE3C/B;WFgDU,MAAA;AAAA;;;;;;AGxDV;;UHkEiB,2BAAA;;WAEP,OAAA;;WAEA,MAAA;;WAEA,UAAA;AAAA;;;;AA1GV;;;UCGiB,cAAA;;WAEP,YAAA;;;;;;WAMA,YAAA;AAAA;;;;ADXV;;;;;;;UEOiB,eAAA;;WAEP,MAAA;;WAEA,OAAA;EFYA;EAAA,SEVA,UAAA;EFkBO;EAAA,SEhBP,iBAAA,EAAmB,aAAA;;WAEnB,UAAA,GAAa,OAAA;;WAEb,OAAA;AAAA;AFkCV;AAAA,KEXY,UAAA;;;;;;;;;;;;;;AFXZ;UGGiB,kBAAA;;;;;;;;WAQP,YAAA,GAAe,UAAA,EAAY,CAAA,KAAM,MAAA,CAAO,WAAA,EAAa,cAAA;;WAErD,cAAA,EAAgB,OAAA,CAAQ,eAAA;;;;;AHSlC;;WGFU,UAAA,EAAY,UAAA;EHEL;EAAA,SGAP,cAAA,EAAgB,cAAA;;;;;;WAMhB,KAAA,GAAQ,QAAA,EAAU,YAAA,KAAiB,MAAA,CAAO,CAAA,EAAG,cAAA;EHwBvD;;;;;;;;;EAAA,SGdU,cAAA,GAAiB,aAAA;AAAA;;;;;;;;;UAWjB,WAAA;EF7EO;EAAA,SE+EP,OAAA,GAAU,cAAA;EF/EH;EAAA,SEiFP,UAAA,EAAY,CAAA;;WAEZ,IAAA,EAAM,kBAAA,CAAmB,CAAA,EAAG,CAAA;AAAA;AD/EtC;;;;;;;;;;;;;AC2BA;;;;;cAgGa,cAAA;EAAA;;;;;;;;;EAeZ,WAAA,CAAY,OAAA,EAAS,sBAAA;;;;;;;;;;;;;EAyBrB,OAAA,MAAA,CAA2B,IAAA,EAAM,WAAA,CAAY,CAAA,EAAG,CAAA,IAAK,OAAA,CAAQ,MAAA,CAAO,CAAA,EAAG,cAAA;;;;;;MAsC5D,KAAA,CAAA,GAAS,SAAA;AAAA;;;;;;;;;;cCtIR,sBAAA;EAAA;;;AJ3Cb;;;;;;EIsDC,WAAA,CAAY,KAAA,EAAO,cAAA;EJ7CC;;;;;;;;;;;;AAarB;;;;;;;;EIwDC,OAAA,CACC,UAAA,EAAY,2BAAA,EACZ,OAAA,GAAU,cAAA,GACR,OAAA,CAAQ,MAAA,CAAO,aAAA,EAAe,cAAA;;;AJ7BlC;;;;;;;;;;AAiBA;;;;;EIiCC,OAAA,CACC,UAAA,EAAY,2BAAA,EACZ,OAAA,GAAU,cAAA,GACR,OAAA,CAAQ,MAAA,YAAkB,cAAA;;;;;;;AHrI9B;;;;;;;;ACIA;EEoJC,OAAA,CACC,UAAA,EAAY,0BAAA,EACZ,OAAA,GAAU,cAAA,GACR,OAAA,CAAQ,MAAA,CAAO,SAAA,EAAW,cAAA;AAAA;;;;AJ9J9B;;;;;;;;;;;;;AA+BA;;;;;cKZa,aAAA;;WAEI,MAAA,EAAQ,sBAAA;;;;;;;EAQxB,WAAA,CAAY,OAAA,EAAS,sBAAA;AAAA"}
1
+ {"version":3,"file":"storage.d.mts","names":[],"sources":["../src/domains/cloud-v2/memory-store-queues/types.ts","../src/domains/cloud-v2/memory-store-sorted-maps/types.ts","../src/internal/http/rate-limit-queue.ts","../src/internal/resource-client.ts","../src/resources/storage/queues-group.ts","../src/resources/storage/sorted-maps-group.ts","../src/resources/storage/client.ts"],"mappings":"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"}