Skip to content

Commit c126ce5

Browse files
committed
add options to objects.list
1 parent 4311dc4 commit c126ce5

File tree

4 files changed

+31
-12
lines changed

4 files changed

+31
-12
lines changed

.changeset/dirty-pillows-rescue.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@squarecloud/blob": minor
3+
---
4+
5+
Add `options` parameter for `objects.list`

src/managers/objects.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import type { SquareCloudBlob } from "..";
22
import { BlobObject } from "../structures/object";
33
import type { CreateObjectResponse, CreateObjectType } from "../types/create";
4-
import type { ListObjectsResponse } from "../types/list";
4+
import type { ListObjectsResponse, ListObjectsType } from "../types/list";
55
import { parsePathLike } from "../utils/path-like";
66
import { assertCreateObjectResponse } from "../validation/assertions/create";
77
import { assertListObjectsResponse } from "../validation/assertions/list";
88
import { createObjectPayloadSchema } from "../validation/schemas/create";
9+
import { listObjectsPayloadSchema } from "../validation/schemas/list";
910

1011
export class ObjectsManager {
1112
constructor(private readonly client: SquareCloudBlob) {}
@@ -18,16 +19,16 @@ export class ObjectsManager {
1819
* blob.objects.list();
1920
* ```
2021
*/
21-
async list() {
22-
const { response } =
23-
await this.client.api.request<ListObjectsResponse>("objects");
24-
const list = assertListObjectsResponse(response);
22+
async list(options?: ListObjectsType) {
23+
const payload = listObjectsPayloadSchema.parse(options);
2524

26-
if (!list.objects) {
27-
return [];
28-
}
25+
const { response } = await this.client.api.request<ListObjectsResponse>(
26+
"objects",
27+
{ params: payload.params },
28+
);
29+
const { objects } = assertListObjectsResponse(response);
2930

30-
return list.objects.map((objectData) => {
31+
return objects.map((objectData) => {
3132
const createdAt = new Date(objectData.created_at);
3233
const expiresAt = objectData.expires_at
3334
? new Date(objectData.expires_at)

src/types/list.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
import type { z } from "zod";
2-
import type { listObjectsResponseSchema } from "../validation/schemas/list";
2+
import type {
3+
listObjectsResponseSchema,
4+
listObjectsSchema,
5+
} from "../validation/schemas/list";
36

7+
export type ListObjectsType = z.infer<typeof listObjectsSchema>;
48
export type ListObjectsResponse = z.infer<typeof listObjectsResponseSchema>;

src/validation/schemas/list.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
import { z } from "zod";
22

3-
export const listObjectSchema = z.object({
3+
export const listObjectsSchema = z.object({
4+
prefix: z.string().optional(),
5+
continuationToken: z.string().optional(),
6+
});
7+
8+
export const listObjectsPayloadSchema = listObjectsSchema
9+
.optional()
10+
.transform((params) => ({ params }));
11+
12+
export const listObjectResponseSchema = z.object({
413
id: z.string(),
514
size: z.number(),
615
created_at: z.coerce.date(),
716
expires_at: z.coerce.date().optional(),
817
});
918

1019
export const listObjectsResponseSchema = z.object({
11-
objects: z.array(listObjectSchema),
20+
objects: z.array(listObjectResponseSchema).default([]),
1221
});

0 commit comments

Comments
 (0)