git-fs-s3 0.15.0 → 0.15.3
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.
- package/README.md +5 -3
- package/dist/fetch-s3.js +137 -160
- package/dist/fetch-s3.js.map +1 -1
- package/dist/http.js +905 -849
- package/dist/http.js.map +1 -1
- package/dist/index.js +578 -658
- package/dist/index.js.map +1 -1
- package/dist/memory-M2cCuVF-.js +61 -0
- package/dist/memory-M2cCuVF-.js.map +1 -0
- package/dist/node.js +75 -71
- package/dist/node.js.map +1 -1
- package/dist/object-size-BJAsnZzw.js +191 -0
- package/dist/object-size-BJAsnZzw.js.map +1 -0
- package/dist/ops.js +662 -692
- package/dist/ops.js.map +1 -1
- package/dist/refs-Cb_NfKWI.js +550 -0
- package/dist/refs-Cb_NfKWI.js.map +1 -0
- package/dist/s3.js +111 -116
- package/dist/s3.js.map +1 -1
- package/dist/semaphore-BviNoQuJ.js +646 -0
- package/dist/semaphore-BviNoQuJ.js.map +1 -0
- package/dist/types/git-errors.d.ts +6 -0
- package/dist/types/http/repack.d.ts +7 -0
- package/dist/types/index.d.ts +1 -1
- package/package.json +18 -23
- package/dist/chunk-HLYCSNJ2.js +0 -53
- package/dist/chunk-HLYCSNJ2.js.map +0 -1
- package/dist/chunk-IAKZRWBZ.js +0 -598
- package/dist/chunk-IAKZRWBZ.js.map +0 -1
- package/dist/chunk-OKBQISUC.js +0 -442
- package/dist/chunk-OKBQISUC.js.map +0 -1
- package/dist/chunk-T5M5EYCZ.js +0 -143
- package/dist/chunk-T5M5EYCZ.js.map +0 -1
package/dist/s3.js
CHANGED
|
@@ -1,121 +1,116 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
DeleteObjectCommand,
|
|
4
|
-
GetObjectCommand,
|
|
5
|
-
HeadObjectCommand,
|
|
6
|
-
ListObjectsV2Command,
|
|
7
|
-
PutObjectCommand
|
|
8
|
-
} from "@aws-sdk/client-s3";
|
|
1
|
+
import { DeleteObjectCommand, GetObjectCommand, HeadObjectCommand, ListObjectsV2Command, PutObjectCommand } from "@aws-sdk/client-s3";
|
|
2
|
+
//#region src/stores/s3.ts
|
|
9
3
|
function isNotFound(error) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
if (typeof error !== "object" || error === null) return false;
|
|
5
|
+
const err = error;
|
|
6
|
+
return err.name === "NoSuchKey" || err.name === "NotFound" || err.$metadata?.httpStatusCode === 404;
|
|
13
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* {@link ObjectStore} over any S3-compatible API via `@aws-sdk/client-s3`
|
|
10
|
+
* (peer dependency). One instance per bucket/prefix; reuse a single
|
|
11
|
+
* `S3Client` across stores so HTTP connections are pooled.
|
|
12
|
+
*/
|
|
14
13
|
var S3ObjectStore = class {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
continuationToken = response.NextContinuationToken;
|
|
114
|
-
} while (continuationToken);
|
|
115
|
-
return { objects, prefixes: [...prefixes] };
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
export {
|
|
119
|
-
S3ObjectStore
|
|
14
|
+
client;
|
|
15
|
+
bucket;
|
|
16
|
+
prefix;
|
|
17
|
+
contentType;
|
|
18
|
+
constructor(options) {
|
|
19
|
+
this.client = options.client;
|
|
20
|
+
this.bucket = options.bucket;
|
|
21
|
+
this.contentType = options.contentType;
|
|
22
|
+
this.prefix = options.prefix ? options.prefix.replace(/\/+$/, "").concat("/") : "";
|
|
23
|
+
}
|
|
24
|
+
fullKey(key) {
|
|
25
|
+
return this.prefix + key;
|
|
26
|
+
}
|
|
27
|
+
async get(key) {
|
|
28
|
+
try {
|
|
29
|
+
const response = await this.client.send(new GetObjectCommand({
|
|
30
|
+
Bucket: this.bucket,
|
|
31
|
+
Key: this.fullKey(key)
|
|
32
|
+
}));
|
|
33
|
+
if (!response.Body) return /* @__PURE__ */ new Uint8Array(0);
|
|
34
|
+
return await response.Body.transformToByteArray();
|
|
35
|
+
} catch (error) {
|
|
36
|
+
if (isNotFound(error)) return null;
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async getRange(key, start, end) {
|
|
41
|
+
try {
|
|
42
|
+
const response = await this.client.send(new GetObjectCommand({
|
|
43
|
+
Bucket: this.bucket,
|
|
44
|
+
Key: this.fullKey(key),
|
|
45
|
+
Range: `bytes=${start}-${end}`
|
|
46
|
+
}));
|
|
47
|
+
if (!response.Body) return /* @__PURE__ */ new Uint8Array(0);
|
|
48
|
+
return await response.Body.transformToByteArray();
|
|
49
|
+
} catch (error) {
|
|
50
|
+
if (isNotFound(error)) return null;
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async put(key, data) {
|
|
55
|
+
await this.client.send(new PutObjectCommand({
|
|
56
|
+
Bucket: this.bucket,
|
|
57
|
+
Key: this.fullKey(key),
|
|
58
|
+
Body: data,
|
|
59
|
+
ContentType: this.contentType?.(key)
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
async delete(key) {
|
|
63
|
+
await this.client.send(new DeleteObjectCommand({
|
|
64
|
+
Bucket: this.bucket,
|
|
65
|
+
Key: this.fullKey(key)
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
async head(key) {
|
|
69
|
+
try {
|
|
70
|
+
return { size: (await this.client.send(new HeadObjectCommand({
|
|
71
|
+
Bucket: this.bucket,
|
|
72
|
+
Key: this.fullKey(key)
|
|
73
|
+
}))).ContentLength ?? 0 };
|
|
74
|
+
} catch (error) {
|
|
75
|
+
if (isNotFound(error)) return null;
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async list(prefix, options) {
|
|
80
|
+
const fullPrefix = this.fullKey(prefix);
|
|
81
|
+
const limit = options?.limit;
|
|
82
|
+
const objects = [];
|
|
83
|
+
const prefixes = /* @__PURE__ */ new Set();
|
|
84
|
+
let continuationToken;
|
|
85
|
+
do {
|
|
86
|
+
const response = await this.client.send(new ListObjectsV2Command({
|
|
87
|
+
Bucket: this.bucket,
|
|
88
|
+
Prefix: fullPrefix,
|
|
89
|
+
Delimiter: options?.delimiter,
|
|
90
|
+
ContinuationToken: continuationToken,
|
|
91
|
+
MaxKeys: limit !== void 0 ? Math.min(limit, 1e3) : void 0
|
|
92
|
+
}));
|
|
93
|
+
for (const item of response.Contents ?? []) {
|
|
94
|
+
if (item.Key === void 0) continue;
|
|
95
|
+
objects.push({
|
|
96
|
+
key: item.Key.slice(this.prefix.length),
|
|
97
|
+
size: item.Size ?? 0
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
for (const p of response.CommonPrefixes ?? []) {
|
|
101
|
+
if (p.Prefix === void 0) continue;
|
|
102
|
+
prefixes.add(p.Prefix.slice(this.prefix.length));
|
|
103
|
+
}
|
|
104
|
+
if (limit !== void 0 && objects.length + prefixes.size >= limit) break;
|
|
105
|
+
continuationToken = response.NextContinuationToken;
|
|
106
|
+
} while (continuationToken);
|
|
107
|
+
return {
|
|
108
|
+
objects,
|
|
109
|
+
prefixes: [...prefixes]
|
|
110
|
+
};
|
|
111
|
+
}
|
|
120
112
|
};
|
|
113
|
+
//#endregion
|
|
114
|
+
export { S3ObjectStore };
|
|
115
|
+
|
|
121
116
|
//# sourceMappingURL=s3.js.map
|
package/dist/s3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/stores/s3.ts"],"sourcesContent":["import {\n\tDeleteObjectCommand,\n\tGetObjectCommand,\n\tHeadObjectCommand,\n\tListObjectsV2Command,\n\tPutObjectCommand,\n\ttype S3Client,\n} from \"@aws-sdk/client-s3\";\nimport type {\n\tListOptions,\n\tListResult,\n\tObjectStat,\n\tObjectStore,\n} from \"../types.js\";\n\nexport interface S3ObjectStoreOptions {\n\t/** A configured S3Client. Works with AWS S3, Cloudflare R2, MinIO, Backblaze B2, … */\n\tclient: S3Client;\n\tbucket: string;\n\t/** Key prefix for every object, e.g. `\"git\"`. Optional. */\n\tprefix?: string;\n\t/**\n\t * Derive a Content-Type header for uploads from the (un-prefixed) key.\n\t * Return `undefined` to let S3 apply its default. Cosmetic — git never\n\t * reads it back — but keeps refs and config human-readable in bucket UIs.\n\t */\n\tcontentType?: (key: string) => string | undefined;\n}\n\nfunction isNotFound(error: unknown): boolean {\n\tif (typeof error !== \"object\" || error === null) return false;\n\tconst err = error as {\n\t\tname?: string;\n\t\t$metadata?: { httpStatusCode?: number };\n\t};\n\treturn (\n\t\terr.name === \"NoSuchKey\" ||\n\t\terr.name === \"NotFound\" ||\n\t\terr.$metadata?.httpStatusCode === 404\n\t);\n}\n\n/**\n * {@link ObjectStore} over any S3-compatible API via `@aws-sdk/client-s3`\n * (peer dependency). One instance per bucket/prefix; reuse a single\n * `S3Client` across stores so HTTP connections are pooled.\n */\nexport class S3ObjectStore implements ObjectStore {\n\tprivate readonly client: S3Client;\n\tprivate readonly bucket: string;\n\tprivate readonly prefix: string;\n\tprivate readonly contentType?: (key: string) => string | undefined;\n\n\tconstructor(options: S3ObjectStoreOptions) {\n\t\tthis.client = options.client;\n\t\tthis.bucket = options.bucket;\n\t\tthis.contentType = options.contentType;\n\t\tthis.prefix = options.prefix\n\t\t\t? options.prefix.replace(/\\/+$/, \"\").concat(\"/\")\n\t\t\t: \"\";\n\t}\n\n\tprivate fullKey(key: string): string {\n\t\treturn this.prefix + key;\n\t}\n\n\tasync get(key: string): Promise<Uint8Array | null> {\n\t\ttry {\n\t\t\tconst response = await this.client.send(\n\t\t\t\tnew GetObjectCommand({ Bucket: this.bucket, Key: this.fullKey(key) }),\n\t\t\t);\n\t\t\tif (!response.Body) return new Uint8Array(0);\n\t\t\treturn await response.Body.transformToByteArray();\n\t\t} catch (error) {\n\t\t\tif (isNotFound(error)) return null;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync getRange(\n\t\tkey: string,\n\t\tstart: number,\n\t\tend: number,\n\t): Promise<Uint8Array | null> {\n\t\ttry {\n\t\t\tconst response = await this.client.send(\n\t\t\t\tnew GetObjectCommand({\n\t\t\t\t\tBucket: this.bucket,\n\t\t\t\t\tKey: this.fullKey(key),\n\t\t\t\t\t// Inclusive at both ends, per the S3 API.\n\t\t\t\t\tRange: `bytes=${start}-${end}`,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tif (!response.Body) return new Uint8Array(0);\n\t\t\treturn await response.Body.transformToByteArray();\n\t\t} catch (error) {\n\t\t\tif (isNotFound(error)) return null;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync put(key: string, data: Uint8Array): Promise<void> {\n\t\tawait this.client.send(\n\t\t\tnew PutObjectCommand({\n\t\t\t\tBucket: this.bucket,\n\t\t\t\tKey: this.fullKey(key),\n\t\t\t\tBody: data,\n\t\t\t\tContentType: this.contentType?.(key),\n\t\t\t}),\n\t\t);\n\t}\n\n\tasync delete(key: string): Promise<void> {\n\t\tawait this.client.send(\n\t\t\tnew DeleteObjectCommand({ Bucket: this.bucket, Key: this.fullKey(key) }),\n\t\t);\n\t}\n\n\tasync head(key: string): Promise<ObjectStat | null> {\n\t\ttry {\n\t\t\tconst response = await this.client.send(\n\t\t\t\tnew HeadObjectCommand({ Bucket: this.bucket, Key: this.fullKey(key) }),\n\t\t\t);\n\t\t\treturn { size: response.ContentLength ?? 0 };\n\t\t} catch (error) {\n\t\t\tif (isNotFound(error)) return null;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync list(prefix: string, options?: ListOptions): Promise<ListResult> {\n\t\tconst fullPrefix = this.fullKey(prefix);\n\t\tconst limit = options?.limit;\n\t\tconst objects: ListResult[\"objects\"] = [];\n\t\tconst prefixes = new Set<string>();\n\t\tlet continuationToken: string | undefined;\n\n\t\tdo {\n\t\t\tconst response = await this.client.send(\n\t\t\t\tnew ListObjectsV2Command({\n\t\t\t\t\tBucket: this.bucket,\n\t\t\t\t\tPrefix: fullPrefix,\n\t\t\t\t\tDelimiter: options?.delimiter,\n\t\t\t\t\tContinuationToken: continuationToken,\n\t\t\t\t\tMaxKeys: limit !== undefined ? Math.min(limit, 1000) : undefined,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tfor (const item of response.Contents ?? []) {\n\t\t\t\tif (item.Key === undefined) continue;\n\t\t\t\tobjects.push({\n\t\t\t\t\tkey: item.Key.slice(this.prefix.length),\n\t\t\t\t\tsize: item.Size ?? 0,\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (const p of response.CommonPrefixes ?? []) {\n\t\t\t\tif (p.Prefix === undefined) continue;\n\t\t\t\tprefixes.add(p.Prefix.slice(this.prefix.length));\n\t\t\t}\n\t\t\tif (limit !== undefined && objects.length + prefixes.size >= limit) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcontinuationToken = response.NextContinuationToken;\n\t\t} while (continuationToken);\n\n\t\treturn { objects, prefixes: [...prefixes] };\n\t}\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"s3.js","names":[],"sources":["../src/stores/s3.ts"],"sourcesContent":["import {\n\tDeleteObjectCommand,\n\tGetObjectCommand,\n\tHeadObjectCommand,\n\tListObjectsV2Command,\n\tPutObjectCommand,\n\ttype S3Client,\n} from \"@aws-sdk/client-s3\";\nimport type {\n\tListOptions,\n\tListResult,\n\tObjectStat,\n\tObjectStore,\n} from \"../types.js\";\n\nexport interface S3ObjectStoreOptions {\n\t/** A configured S3Client. Works with AWS S3, Cloudflare R2, MinIO, Backblaze B2, … */\n\tclient: S3Client;\n\tbucket: string;\n\t/** Key prefix for every object, e.g. `\"git\"`. Optional. */\n\tprefix?: string;\n\t/**\n\t * Derive a Content-Type header for uploads from the (un-prefixed) key.\n\t * Return `undefined` to let S3 apply its default. Cosmetic — git never\n\t * reads it back — but keeps refs and config human-readable in bucket UIs.\n\t */\n\tcontentType?: (key: string) => string | undefined;\n}\n\nfunction isNotFound(error: unknown): boolean {\n\tif (typeof error !== \"object\" || error === null) return false;\n\tconst err = error as {\n\t\tname?: string;\n\t\t$metadata?: { httpStatusCode?: number };\n\t};\n\treturn (\n\t\terr.name === \"NoSuchKey\" ||\n\t\terr.name === \"NotFound\" ||\n\t\terr.$metadata?.httpStatusCode === 404\n\t);\n}\n\n/**\n * {@link ObjectStore} over any S3-compatible API via `@aws-sdk/client-s3`\n * (peer dependency). One instance per bucket/prefix; reuse a single\n * `S3Client` across stores so HTTP connections are pooled.\n */\nexport class S3ObjectStore implements ObjectStore {\n\tprivate readonly client: S3Client;\n\tprivate readonly bucket: string;\n\tprivate readonly prefix: string;\n\tprivate readonly contentType?: (key: string) => string | undefined;\n\n\tconstructor(options: S3ObjectStoreOptions) {\n\t\tthis.client = options.client;\n\t\tthis.bucket = options.bucket;\n\t\tthis.contentType = options.contentType;\n\t\tthis.prefix = options.prefix\n\t\t\t? options.prefix.replace(/\\/+$/, \"\").concat(\"/\")\n\t\t\t: \"\";\n\t}\n\n\tprivate fullKey(key: string): string {\n\t\treturn this.prefix + key;\n\t}\n\n\tasync get(key: string): Promise<Uint8Array | null> {\n\t\ttry {\n\t\t\tconst response = await this.client.send(\n\t\t\t\tnew GetObjectCommand({ Bucket: this.bucket, Key: this.fullKey(key) }),\n\t\t\t);\n\t\t\tif (!response.Body) return new Uint8Array(0);\n\t\t\treturn await response.Body.transformToByteArray();\n\t\t} catch (error) {\n\t\t\tif (isNotFound(error)) return null;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync getRange(\n\t\tkey: string,\n\t\tstart: number,\n\t\tend: number,\n\t): Promise<Uint8Array | null> {\n\t\ttry {\n\t\t\tconst response = await this.client.send(\n\t\t\t\tnew GetObjectCommand({\n\t\t\t\t\tBucket: this.bucket,\n\t\t\t\t\tKey: this.fullKey(key),\n\t\t\t\t\t// Inclusive at both ends, per the S3 API.\n\t\t\t\t\tRange: `bytes=${start}-${end}`,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tif (!response.Body) return new Uint8Array(0);\n\t\t\treturn await response.Body.transformToByteArray();\n\t\t} catch (error) {\n\t\t\tif (isNotFound(error)) return null;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync put(key: string, data: Uint8Array): Promise<void> {\n\t\tawait this.client.send(\n\t\t\tnew PutObjectCommand({\n\t\t\t\tBucket: this.bucket,\n\t\t\t\tKey: this.fullKey(key),\n\t\t\t\tBody: data,\n\t\t\t\tContentType: this.contentType?.(key),\n\t\t\t}),\n\t\t);\n\t}\n\n\tasync delete(key: string): Promise<void> {\n\t\tawait this.client.send(\n\t\t\tnew DeleteObjectCommand({ Bucket: this.bucket, Key: this.fullKey(key) }),\n\t\t);\n\t}\n\n\tasync head(key: string): Promise<ObjectStat | null> {\n\t\ttry {\n\t\t\tconst response = await this.client.send(\n\t\t\t\tnew HeadObjectCommand({ Bucket: this.bucket, Key: this.fullKey(key) }),\n\t\t\t);\n\t\t\treturn { size: response.ContentLength ?? 0 };\n\t\t} catch (error) {\n\t\t\tif (isNotFound(error)) return null;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync list(prefix: string, options?: ListOptions): Promise<ListResult> {\n\t\tconst fullPrefix = this.fullKey(prefix);\n\t\tconst limit = options?.limit;\n\t\tconst objects: ListResult[\"objects\"] = [];\n\t\tconst prefixes = new Set<string>();\n\t\tlet continuationToken: string | undefined;\n\n\t\tdo {\n\t\t\tconst response = await this.client.send(\n\t\t\t\tnew ListObjectsV2Command({\n\t\t\t\t\tBucket: this.bucket,\n\t\t\t\t\tPrefix: fullPrefix,\n\t\t\t\t\tDelimiter: options?.delimiter,\n\t\t\t\t\tContinuationToken: continuationToken,\n\t\t\t\t\tMaxKeys: limit !== undefined ? Math.min(limit, 1000) : undefined,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tfor (const item of response.Contents ?? []) {\n\t\t\t\tif (item.Key === undefined) continue;\n\t\t\t\tobjects.push({\n\t\t\t\t\tkey: item.Key.slice(this.prefix.length),\n\t\t\t\t\tsize: item.Size ?? 0,\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (const p of response.CommonPrefixes ?? []) {\n\t\t\t\tif (p.Prefix === undefined) continue;\n\t\t\t\tprefixes.add(p.Prefix.slice(this.prefix.length));\n\t\t\t}\n\t\t\tif (limit !== undefined && objects.length + prefixes.size >= limit) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcontinuationToken = response.NextContinuationToken;\n\t\t} while (continuationToken);\n\n\t\treturn { objects, prefixes: [...prefixes] };\n\t}\n}\n"],"mappings":";;AA6BA,SAAS,WAAW,OAAyB;CAC5C,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO;CACxD,MAAM,MAAM;CAIZ,OACC,IAAI,SAAS,eACb,IAAI,SAAS,cACb,IAAI,WAAW,mBAAmB;AAEpC;;;;;;AAOA,IAAa,gBAAb,MAAkD;CACjD;CACA;CACA;CACA;CAEA,YAAY,SAA+B;EAC1C,KAAK,SAAS,QAAQ;EACtB,KAAK,SAAS,QAAQ;EACtB,KAAK,cAAc,QAAQ;EAC3B,KAAK,SAAS,QAAQ,SACnB,QAAQ,OAAO,QAAQ,QAAQ,EAAE,CAAC,CAAC,OAAO,GAAG,IAC7C;CACJ;CAEA,QAAgB,KAAqB;EACpC,OAAO,KAAK,SAAS;CACtB;CAEA,MAAM,IAAI,KAAyC;EAClD,IAAI;GACH,MAAM,WAAW,MAAM,KAAK,OAAO,KAClC,IAAI,iBAAiB;IAAE,QAAQ,KAAK;IAAQ,KAAK,KAAK,QAAQ,GAAG;GAAE,CAAC,CACrE;GACA,IAAI,CAAC,SAAS,MAAM,uBAAO,IAAI,WAAW,CAAC;GAC3C,OAAO,MAAM,SAAS,KAAK,qBAAqB;EACjD,SAAS,OAAO;GACf,IAAI,WAAW,KAAK,GAAG,OAAO;GAC9B,MAAM;EACP;CACD;CAEA,MAAM,SACL,KACA,OACA,KAC6B;EAC7B,IAAI;GACH,MAAM,WAAW,MAAM,KAAK,OAAO,KAClC,IAAI,iBAAiB;IACpB,QAAQ,KAAK;IACb,KAAK,KAAK,QAAQ,GAAG;IAErB,OAAO,SAAS,MAAM,GAAG;GAC1B,CAAC,CACF;GACA,IAAI,CAAC,SAAS,MAAM,uBAAO,IAAI,WAAW,CAAC;GAC3C,OAAO,MAAM,SAAS,KAAK,qBAAqB;EACjD,SAAS,OAAO;GACf,IAAI,WAAW,KAAK,GAAG,OAAO;GAC9B,MAAM;EACP;CACD;CAEA,MAAM,IAAI,KAAa,MAAiC;EACvD,MAAM,KAAK,OAAO,KACjB,IAAI,iBAAiB;GACpB,QAAQ,KAAK;GACb,KAAK,KAAK,QAAQ,GAAG;GACrB,MAAM;GACN,aAAa,KAAK,cAAc,GAAG;EACpC,CAAC,CACF;CACD;CAEA,MAAM,OAAO,KAA4B;EACxC,MAAM,KAAK,OAAO,KACjB,IAAI,oBAAoB;GAAE,QAAQ,KAAK;GAAQ,KAAK,KAAK,QAAQ,GAAG;EAAE,CAAC,CACxE;CACD;CAEA,MAAM,KAAK,KAAyC;EACnD,IAAI;GAIH,OAAO,EAAE,OAAM,MAHQ,KAAK,OAAO,KAClC,IAAI,kBAAkB;IAAE,QAAQ,KAAK;IAAQ,KAAK,KAAK,QAAQ,GAAG;GAAE,CAAC,CACtE,EAAA,CACwB,iBAAiB,EAAE;EAC5C,SAAS,OAAO;GACf,IAAI,WAAW,KAAK,GAAG,OAAO;GAC9B,MAAM;EACP;CACD;CAEA,MAAM,KAAK,QAAgB,SAA4C;EACtE,MAAM,aAAa,KAAK,QAAQ,MAAM;EACtC,MAAM,QAAQ,SAAS;EACvB,MAAM,UAAiC,CAAC;EACxC,MAAM,2BAAW,IAAI,IAAY;EACjC,IAAI;EAEJ,GAAG;GACF,MAAM,WAAW,MAAM,KAAK,OAAO,KAClC,IAAI,qBAAqB;IACxB,QAAQ,KAAK;IACb,QAAQ;IACR,WAAW,SAAS;IACpB,mBAAmB;IACnB,SAAS,UAAU,KAAA,IAAY,KAAK,IAAI,OAAO,GAAI,IAAI,KAAA;GACxD,CAAC,CACF;GACA,KAAK,MAAM,QAAQ,SAAS,YAAY,CAAC,GAAG;IAC3C,IAAI,KAAK,QAAQ,KAAA,GAAW;IAC5B,QAAQ,KAAK;KACZ,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,MAAM;KACtC,MAAM,KAAK,QAAQ;IACpB,CAAC;GACF;GACA,KAAK,MAAM,KAAK,SAAS,kBAAkB,CAAC,GAAG;IAC9C,IAAI,EAAE,WAAW,KAAA,GAAW;IAC5B,SAAS,IAAI,EAAE,OAAO,MAAM,KAAK,OAAO,MAAM,CAAC;GAChD;GACA,IAAI,UAAU,KAAA,KAAa,QAAQ,SAAS,SAAS,QAAQ,OAC5D;GAED,oBAAoB,SAAS;EAC9B,SAAS;EAET,OAAO;GAAE;GAAS,UAAU,CAAC,GAAG,QAAQ;EAAE;CAC3C;AACD"}
|