@8ms/helpers 2.4.10 → 2.4.12
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/dist/_class/BaseClass.cjs +31 -21
- package/dist/_class/BaseClass.mjs +31 -21
- package/dist/_class/BaseNamespace.cjs +10 -9
- package/dist/_class/BaseNamespace.mjs +10 -9
- package/dist/_virtual/_rolldown/runtime.cjs +1 -1
- package/dist/_virtual/_rolldown/runtime.mjs +1 -1
- package/dist/api/ApiResponseClass.cjs +96 -96
- package/dist/api/ApiResponseClass.mjs +96 -96
- package/dist/aws/cloudWatchLog/server/AwsCloudWatchLogNamespace.cjs +70 -60
- package/dist/aws/cloudWatchLog/server/AwsCloudWatchLogNamespace.mjs +70 -60
- package/dist/aws/cloudWatchMetric/server/AwsCloudWatchMetricNamespace.cjs +30 -28
- package/dist/aws/cloudWatchMetric/server/AwsCloudWatchMetricNamespace.mjs +30 -28
- package/dist/aws/ec2/server/AwsEc2Namespace.cjs +29 -32
- package/dist/aws/ec2/server/AwsEc2Namespace.mjs +29 -32
- package/dist/aws/ecs/server/AwsEcsNamespace.cjs +92 -78
- package/dist/aws/ecs/server/AwsEcsNamespace.mjs +92 -78
- package/dist/aws/glue/server/AwsGlueNamespace.cjs +17 -17
- package/dist/aws/glue/server/AwsGlueNamespace.mjs +17 -17
- package/dist/aws/lambda/server/AwsLambdaNamespace.cjs +33 -31
- package/dist/aws/lambda/server/AwsLambdaNamespace.mjs +33 -31
- package/dist/aws/s3/server/AwsS3Namespace.cjs +280 -265
- package/dist/aws/s3/server/AwsS3Namespace.mjs +280 -265
- package/dist/aws/ses/server/AwsSesNamespace.cjs +27 -30
- package/dist/aws/ses/server/AwsSesNamespace.mjs +27 -30
- package/dist/aws/ses/server/SimpleEmail.cjs +202 -199
- package/dist/aws/ses/server/SimpleEmail.mjs +202 -199
- package/dist/aws/sqs/server/AwsSqsNamespace.cjs +35 -38
- package/dist/aws/sqs/server/AwsSqsNamespace.mjs +35 -38
- package/dist/aws/ssm/server/AwsSsmNamespace.cjs +24 -23
- package/dist/aws/ssm/server/AwsSsmNamespace.mjs +24 -23
- package/dist/date/index.cjs +1 -1
- package/dist/date/index.mjs +1 -1
- package/dist/drizzle/server/DrizzleNamespace.cjs +39 -42
- package/dist/drizzle/server/DrizzleNamespace.d.cts +1 -0
- package/dist/drizzle/server/DrizzleNamespace.mjs +39 -42
- package/dist/googleAds/server/GoogleAdsNamespace.cjs +21 -24
- package/dist/googleAds/server/GoogleAdsNamespace.mjs +21 -24
- package/dist/googleCloud/bigquery/server/GoogleCloudBigqueryNamespace.cjs +87 -70
- package/dist/googleCloud/bigquery/server/GoogleCloudBigqueryNamespace.mjs +87 -70
- package/dist/googleCloud/sheets/server/GoogleCloudSheetsNamespace.cjs +22 -25
- package/dist/googleCloud/sheets/server/GoogleCloudSheetsNamespace.mjs +22 -25
- package/dist/googleCloud/storage/server/GoogleCloudStorageNamespace.cjs +45 -38
- package/dist/googleCloud/storage/server/GoogleCloudStorageNamespace.mjs +45 -38
- package/dist/googlePageSpeed/server/GooglePageSpeedNamespace.cjs +12 -15
- package/dist/googlePageSpeed/server/GooglePageSpeedNamespace.mjs +12 -15
- package/dist/littleWarden/server/LittleWardenNamespace.cjs +12 -15
- package/dist/littleWarden/server/LittleWardenNamespace.mjs +12 -15
- package/dist/nextJs/client/index.cjs +2 -0
- package/dist/nextJs/client/index.d.cts +2 -1
- package/dist/nextJs/client/index.d.mts +2 -1
- package/dist/nextJs/client/index.mjs +2 -1
- package/dist/nextJs/client/useAsyncEffect.cjs +23 -0
- package/dist/nextJs/client/useAsyncEffect.d.cts +4 -0
- package/dist/nextJs/client/useAsyncEffect.d.mts +4 -0
- package/dist/nextJs/client/useAsyncEffect.mjs +21 -0
- package/dist/onePassword/server/OnePasswordNamespace.cjs +30 -33
- package/dist/onePassword/server/OnePasswordNamespace.mjs +30 -33
- package/dist/openAi/server/OpenAiNamespace.cjs +20 -20
- package/dist/openAi/server/OpenAiNamespace.mjs +20 -20
- package/dist/prisma/server/PrismaNamespace.cjs +35 -38
- package/dist/prisma/server/PrismaNamespace.mjs +35 -38
- package/dist/snapchat/server/SnapchatNamespace.cjs +12 -12
- package/dist/snapchat/server/SnapchatNamespace.mjs +12 -12
- package/dist/upTimeRobot/server/UpTimeRobotNamespace.cjs +19 -19
- package/dist/upTimeRobot/server/UpTimeRobotNamespace.mjs +19 -19
- package/package.json +4 -12
- package/dist/nextJs/index.cjs +0 -4
- package/dist/nextJs/index.d.cts +0 -2
- package/dist/nextJs/index.d.mts +0 -2
- package/dist/nextJs/index.mjs +0 -2
- package/dist/nextJs/nextJs.cjs +0 -13
- package/dist/nextJs/nextJs.d.cts +0 -19
- package/dist/nextJs/nextJs.d.mts +0 -19
- package/dist/nextJs/nextJs.mjs +0 -11
- package/dist/nextJs/tests/getIp.cjs +0 -9
- package/dist/nextJs/tests/getIp.d.cts +0 -1
- package/dist/nextJs/tests/getIp.d.mts +0 -1
- package/dist/nextJs/tests/getIp.mjs +0 -10
|
@@ -16,282 +16,297 @@ const require_aws_s3_server_awsS3 = require("./awsS3.cjs");
|
|
|
16
16
|
require("./index.cjs");
|
|
17
17
|
//#region src/aws/s3/server/AwsS3Namespace.ts
|
|
18
18
|
var AwsS3Namespace = class extends require__class_BaseNamespace.BaseNamespace {
|
|
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
|
-
|
|
19
|
+
ensureInit = async () => {
|
|
20
|
+
if (!this.client) try {
|
|
21
|
+
const { S3Client } = await import("@aws-sdk/client-s3");
|
|
22
|
+
this.client = new S3Client(this.config);
|
|
23
|
+
} catch (e) {
|
|
24
|
+
throw new Error("AWS S3 Client not installed");
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
copy = async (fromBucket, fromKey, toBucket, toKey) => {
|
|
28
|
+
await this.ensureInit();
|
|
29
|
+
const { CopyObjectCommand } = await import("@aws-sdk/client-s3");
|
|
30
|
+
await this.client.send(new CopyObjectCommand({
|
|
31
|
+
Bucket: toBucket,
|
|
32
|
+
CopySource: encodeURIComponent(`${fromBucket}/${fromKey}`),
|
|
33
|
+
Key: toKey
|
|
34
|
+
}));
|
|
35
|
+
};
|
|
36
|
+
deleteFile = async (bucket, key) => {
|
|
37
|
+
await this.ensureInit();
|
|
38
|
+
const { DeleteObjectCommand } = await import("@aws-sdk/client-s3");
|
|
39
|
+
await this.client.send(new DeleteObjectCommand({
|
|
40
|
+
Bucket: bucket,
|
|
41
|
+
Key: key
|
|
42
|
+
}));
|
|
43
|
+
};
|
|
44
|
+
deleteFiles = async (bucket, keys) => {
|
|
45
|
+
await this.ensureInit();
|
|
46
|
+
const { DeleteObjectsCommand } = await import("@aws-sdk/client-s3");
|
|
47
|
+
await this.client.send(new DeleteObjectsCommand({
|
|
48
|
+
Bucket: bucket,
|
|
49
|
+
Delete: { Objects: keys.map((key) => ({ Key: key })) }
|
|
50
|
+
}));
|
|
51
|
+
};
|
|
52
|
+
deleteFolder = async (bucket, folder) => {
|
|
53
|
+
await this.ensureInit();
|
|
54
|
+
const { ListObjectsV2Command, DeleteObjectsCommand } = await import("@aws-sdk/client-s3");
|
|
55
|
+
const cleanFolder = require_string_getFolder.getFolder(folder);
|
|
56
|
+
const apiResponse = await this.client.send(new ListObjectsV2Command({
|
|
57
|
+
Bucket: bucket,
|
|
58
|
+
Prefix: "" === cleanFolder ? "" : cleanFolder + "/"
|
|
59
|
+
}));
|
|
60
|
+
if (!apiResponse.Contents?.length || 0 === apiResponse.Contents.length) return;
|
|
61
|
+
const keys = apiResponse.Contents.map((file) => ({ Key: file.Key }));
|
|
62
|
+
await this.client.send(new DeleteObjectsCommand({
|
|
63
|
+
Bucket: bucket,
|
|
64
|
+
Delete: { Objects: keys }
|
|
65
|
+
}));
|
|
66
|
+
if (apiResponse.IsTruncated) await this.deleteFolder(bucket, folder);
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* List the files in the given bucket and option folder
|
|
70
|
+
*/
|
|
71
|
+
listFiles = async (bucket, folder = "") => {
|
|
72
|
+
await this.ensureInit();
|
|
73
|
+
const { ListObjectsV2Command } = await import("@aws-sdk/client-s3");
|
|
74
|
+
const cleanFolder = require_string_getFolder.getFolder(folder);
|
|
75
|
+
const apiResponse = await this.client.send(new ListObjectsV2Command({
|
|
76
|
+
Bucket: bucket,
|
|
77
|
+
Delimiter: "/",
|
|
78
|
+
Prefix: "" === cleanFolder ? "" : cleanFolder + "/"
|
|
79
|
+
}));
|
|
80
|
+
if (!apiResponse?.["Contents"]) return [];
|
|
81
|
+
const valid = apiResponse["Contents"].filter((content) => {
|
|
82
|
+
if (!content?.["Key"]) return false;
|
|
83
|
+
const keyExploded = content["Key"].split("/");
|
|
84
|
+
return keyExploded[keyExploded.length - 1].indexOf(".") > -1;
|
|
85
|
+
});
|
|
86
|
+
if (0 === valid.length) return [];
|
|
87
|
+
return valid.map((entry) => entry?.["Key"] ?? "").filter((entryKey) => "" !== entryKey);
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Fetch all the files within a given directory recursively
|
|
91
|
+
*/
|
|
92
|
+
filesIteratively = async (bucket, folder) => {
|
|
93
|
+
await this.ensureInit();
|
|
94
|
+
return await this.iterateFolders(bucket, folder);
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Sub function
|
|
98
|
+
*/
|
|
99
|
+
iterateFolders = async (bucket, folder) => {
|
|
100
|
+
let response = [];
|
|
101
|
+
const folders = await this.listFolders(bucket, folder);
|
|
102
|
+
for (let i = 0; i < folders.length; i++) {
|
|
103
|
+
const subFolderFiles = await this.listFolders(bucket, `${folder}/${folders[i]}`);
|
|
104
|
+
const files = await this.listFiles(bucket, `${folder}/${folders[i]}`);
|
|
105
|
+
response = [
|
|
106
|
+
...response,
|
|
107
|
+
...files,
|
|
108
|
+
...subFolderFiles
|
|
109
|
+
];
|
|
110
|
+
}
|
|
111
|
+
return response;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* List the files in the given bucket and option folder.
|
|
115
|
+
*/
|
|
116
|
+
listFolders = async (bucket, folder) => {
|
|
117
|
+
await this.ensureInit();
|
|
118
|
+
const { ListObjectsV2Command } = await import("@aws-sdk/client-s3");
|
|
119
|
+
const cleanFolder = require_string_getFolder.getFolder(folder);
|
|
120
|
+
const apiResponse = await this.client.send(new ListObjectsV2Command({
|
|
121
|
+
Bucket: bucket,
|
|
122
|
+
Delimiter: "/",
|
|
123
|
+
Prefix: "" === cleanFolder ? "" : cleanFolder + "/"
|
|
124
|
+
}));
|
|
125
|
+
if (!apiResponse?.["CommonPrefixes"]) return [];
|
|
126
|
+
return apiResponse["CommonPrefixes"].map((prefix) => {
|
|
127
|
+
if (!prefix?.Prefix) return "";
|
|
128
|
+
const fileFolders = prefix.Prefix.slice(0, -1).split("/");
|
|
129
|
+
return fileFolders[fileFolders.length - 1];
|
|
130
|
+
}).filter((prefixFolder) => "" !== prefixFolder);
|
|
131
|
+
};
|
|
132
|
+
move = async (fromBucket, fromKey, toBucket, toKey) => {
|
|
133
|
+
await this.ensureInit();
|
|
134
|
+
const { CopyObjectCommand, DeleteObjectCommand } = await import("@aws-sdk/client-s3");
|
|
135
|
+
await this.client.send(new CopyObjectCommand({
|
|
136
|
+
Bucket: toBucket,
|
|
137
|
+
CopySource: encodeURIComponent(`${fromBucket}/${fromKey}`),
|
|
138
|
+
Key: toKey
|
|
139
|
+
}));
|
|
140
|
+
await this.client.send(new DeleteObjectCommand({
|
|
141
|
+
Bucket: fromBucket,
|
|
142
|
+
Key: fromKey
|
|
143
|
+
}));
|
|
144
|
+
};
|
|
145
|
+
readBrotli = async (bucket, key, brotliOptions = {}, awsS3Options = {}) => {
|
|
146
|
+
await this.ensureInit();
|
|
147
|
+
const apiResponse = await this.readFile(bucket, key, awsS3Options);
|
|
148
|
+
if (void 0 !== apiResponse.body) apiResponse.body = await require_util_server_getBrotliDecompressed.getBrotliDecompressed(apiResponse.body, brotliOptions);
|
|
149
|
+
return apiResponse;
|
|
150
|
+
};
|
|
151
|
+
readJsonBrotli = async (bucket, key, brotliOptions = {}, awsS3Options = {}) => {
|
|
152
|
+
await this.ensureInit();
|
|
153
|
+
const apiResponse = await this.readFile(bucket, key, awsS3Options);
|
|
154
|
+
if (void 0 !== apiResponse.body) {
|
|
155
|
+
apiResponse.body = await require_util_server_getBrotliDecompressed.getBrotliDecompressed(apiResponse.body, brotliOptions);
|
|
156
|
+
apiResponse.body = JSON.parse(apiResponse.body) || null;
|
|
157
|
+
}
|
|
158
|
+
return apiResponse;
|
|
159
|
+
};
|
|
160
|
+
readBuffer = async (bucket, key) => {
|
|
161
|
+
await this.ensureInit();
|
|
162
|
+
const { GetObjectCommand } = await import("@aws-sdk/client-s3");
|
|
163
|
+
let response = {
|
|
164
|
+
...require_aws_s3_server_awsS3.readFileDefault,
|
|
165
|
+
buffer: void 0
|
|
69
166
|
};
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (!content?.["Key"]) return false;
|
|
82
|
-
const keyExploded = content["Key"].split("/");
|
|
83
|
-
return keyExploded[keyExploded.length - 1].indexOf(".") > -1;
|
|
167
|
+
const apiResponse = await this.client.send(new GetObjectCommand({
|
|
168
|
+
Bucket: bucket,
|
|
169
|
+
Key: key
|
|
170
|
+
}));
|
|
171
|
+
if (require_aws_server_isResponse200.isResponse200(apiResponse)) {
|
|
172
|
+
const chunks = [];
|
|
173
|
+
response.buffer = await new Promise((resolve, reject) => {
|
|
174
|
+
const body = apiResponse.Body;
|
|
175
|
+
body.on("data", (chunk) => chunks.push(chunk));
|
|
176
|
+
body.on("error", (err) => reject(err));
|
|
177
|
+
body.on("end", () => resolve(Buffer.concat(chunks)));
|
|
84
178
|
});
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const folders = await this.listFolders(bucket, folder);
|
|
95
|
-
for (let i = 0; i < folders.length; i++) {
|
|
96
|
-
const subFolderFiles = await this.listFolders(bucket, `${folder}/${folders[i]}`);
|
|
97
|
-
const files = await this.listFiles(bucket, `${folder}/${folders[i]}`);
|
|
98
|
-
response = [
|
|
99
|
-
...response,
|
|
100
|
-
...files,
|
|
101
|
-
...subFolderFiles
|
|
102
|
-
];
|
|
103
|
-
}
|
|
104
|
-
return response;
|
|
105
|
-
};
|
|
106
|
-
this.listFolders = async (bucket, folder) => {
|
|
107
|
-
await this.ensureInit();
|
|
108
|
-
const { ListObjectsV2Command } = await import("@aws-sdk/client-s3");
|
|
109
|
-
const cleanFolder = require_string_getFolder.getFolder(folder);
|
|
110
|
-
const apiResponse = await this.client.send(new ListObjectsV2Command({
|
|
179
|
+
} else throw new Error("Error reading file.");
|
|
180
|
+
return response;
|
|
181
|
+
};
|
|
182
|
+
fileExists = async (bucket, key) => {
|
|
183
|
+
await this.ensureInit();
|
|
184
|
+
let response = false;
|
|
185
|
+
try {
|
|
186
|
+
const { HeadObjectCommand } = await import("@aws-sdk/client-s3");
|
|
187
|
+
response = require_aws_server_isResponse200.isResponse200(await this.client.send(new HeadObjectCommand({
|
|
111
188
|
Bucket: bucket,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
Bucket: toBucket,
|
|
127
|
-
CopySource: encodeURIComponent(`${fromBucket}/${fromKey}`),
|
|
128
|
-
Key: toKey
|
|
129
|
-
}));
|
|
130
|
-
await this.client.send(new DeleteObjectCommand({
|
|
131
|
-
Bucket: fromBucket,
|
|
132
|
-
Key: fromKey
|
|
133
|
-
}));
|
|
134
|
-
};
|
|
135
|
-
this.readBrotli = async (bucket, key, brotliOptions = {}, awsS3Options = {}) => {
|
|
136
|
-
await this.ensureInit();
|
|
137
|
-
const apiResponse = await this.readFile(bucket, key, awsS3Options);
|
|
138
|
-
if (void 0 !== apiResponse.body) apiResponse.body = await require_util_server_getBrotliDecompressed.getBrotliDecompressed(apiResponse.body, brotliOptions);
|
|
139
|
-
return apiResponse;
|
|
140
|
-
};
|
|
141
|
-
this.readJsonBrotli = async (bucket, key, brotliOptions = {}, awsS3Options = {}) => {
|
|
142
|
-
await this.ensureInit();
|
|
143
|
-
const apiResponse = await this.readFile(bucket, key, awsS3Options);
|
|
144
|
-
if (void 0 !== apiResponse.body) {
|
|
145
|
-
apiResponse.body = await require_util_server_getBrotliDecompressed.getBrotliDecompressed(apiResponse.body, brotliOptions);
|
|
146
|
-
apiResponse.body = JSON.parse(apiResponse.body) || null;
|
|
147
|
-
}
|
|
148
|
-
return apiResponse;
|
|
149
|
-
};
|
|
150
|
-
this.readBuffer = async (bucket, key) => {
|
|
151
|
-
await this.ensureInit();
|
|
189
|
+
Key: key
|
|
190
|
+
})));
|
|
191
|
+
} catch (exception) {
|
|
192
|
+
response = false;
|
|
193
|
+
}
|
|
194
|
+
return response;
|
|
195
|
+
};
|
|
196
|
+
readFile = async (bucket, key, options = {}) => {
|
|
197
|
+
await this.ensureInit();
|
|
198
|
+
let response = structuredClone(require_aws_s3_server_awsS3.readFileDefault);
|
|
199
|
+
const today = require_date_calculation.getToday();
|
|
200
|
+
require_date_calculation.getToday(true);
|
|
201
|
+
try {
|
|
202
|
+
response.now = today.toUnixInteger();
|
|
152
203
|
const { GetObjectCommand } = await import("@aws-sdk/client-s3");
|
|
153
|
-
let response = {
|
|
154
|
-
...require_aws_s3_server_awsS3.readFileDefault,
|
|
155
|
-
buffer: void 0
|
|
156
|
-
};
|
|
157
204
|
const apiResponse = await this.client.send(new GetObjectCommand({
|
|
158
205
|
Bucket: bucket,
|
|
159
|
-
Key: key
|
|
206
|
+
Key: key,
|
|
207
|
+
...options
|
|
160
208
|
}));
|
|
161
209
|
if (require_aws_server_isResponse200.isResponse200(apiResponse)) {
|
|
162
|
-
|
|
163
|
-
response.
|
|
164
|
-
const body = apiResponse.Body;
|
|
165
|
-
body.on("data", (chunk) => chunks.push(chunk));
|
|
166
|
-
body.on("error", (err) => reject(err));
|
|
167
|
-
body.on("end", () => resolve(Buffer.concat(chunks)));
|
|
168
|
-
});
|
|
169
|
-
} else throw new Error("Error reading file.");
|
|
170
|
-
return response;
|
|
171
|
-
};
|
|
172
|
-
this.fileExists = async (bucket, key) => {
|
|
173
|
-
await this.ensureInit();
|
|
174
|
-
let response = false;
|
|
175
|
-
try {
|
|
176
|
-
const { HeadObjectCommand } = await import("@aws-sdk/client-s3");
|
|
177
|
-
response = require_aws_server_isResponse200.isResponse200(await this.client.send(new HeadObjectCommand({
|
|
178
|
-
Bucket: bucket,
|
|
179
|
-
Key: key
|
|
180
|
-
})));
|
|
181
|
-
} catch (exception) {
|
|
182
|
-
response = false;
|
|
210
|
+
response.modified = require_date_format.getYmdHisString(apiResponse.LastModified);
|
|
211
|
+
response.body = await require_string_getStringFromStream.getStringFromStream(apiResponse.Body);
|
|
183
212
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
response.body = await require_string_getStringFromStream.getStringFromStream(apiResponse.Body);
|
|
202
|
-
}
|
|
203
|
-
} catch (error) {
|
|
204
|
-
response.body = null;
|
|
205
|
-
response.error = error;
|
|
206
|
-
}
|
|
207
|
-
return response;
|
|
208
|
-
};
|
|
209
|
-
this.readJson = async (bucket, key) => {
|
|
210
|
-
await this.ensureInit();
|
|
211
|
-
const apiResponse = await this.readFile(bucket, key);
|
|
213
|
+
} catch (error) {
|
|
214
|
+
response.body = null;
|
|
215
|
+
response.error = error;
|
|
216
|
+
}
|
|
217
|
+
return response;
|
|
218
|
+
};
|
|
219
|
+
readJson = async (bucket, key) => {
|
|
220
|
+
await this.ensureInit();
|
|
221
|
+
const apiResponse = await this.readFile(bucket, key);
|
|
222
|
+
apiResponse.body = JSON.parse(apiResponse.body) || null;
|
|
223
|
+
return apiResponse;
|
|
224
|
+
};
|
|
225
|
+
readJsonGzip = async (bucket, key, gzipOptions = {}, awsS3Options = {}) => {
|
|
226
|
+
await this.ensureInit();
|
|
227
|
+
const apiResponse = await this.readFile(bucket, key, awsS3Options);
|
|
228
|
+
if (void 0 !== apiResponse.body) {
|
|
229
|
+
apiResponse.body = await require_util_server_getGzipDecompressed.getGzipDecompressed(apiResponse.body, gzipOptions);
|
|
212
230
|
apiResponse.body = JSON.parse(apiResponse.body) || null;
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
this.
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
return new Promise(async (resolve, reject) => {
|
|
265
|
-
let response = null;
|
|
266
|
-
const formData = new FormData();
|
|
267
|
-
Object.entries(props.fields).forEach(([key, value]) => {
|
|
268
|
-
formData.append(key, value);
|
|
269
|
-
});
|
|
270
|
-
formData.append("file", props.file);
|
|
271
|
-
if ((await fetch(props.url, {
|
|
272
|
-
method: "POST",
|
|
273
|
-
body: formData
|
|
274
|
-
})).ok) {
|
|
275
|
-
response = `https://${props.bucket}.s3.${this.config.region}.amazonaws.com/${props.key}`;
|
|
276
|
-
resolve(response);
|
|
277
|
-
} else {
|
|
278
|
-
response = null;
|
|
279
|
-
reject(response);
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
};
|
|
283
|
-
this.urlContents = async (bucket, key, url) => {
|
|
284
|
-
await this.ensureInit();
|
|
285
|
-
const { default: ky } = await import("ky");
|
|
286
|
-
const response = await ky.get(url);
|
|
287
|
-
const arrayBuffer = await response.arrayBuffer();
|
|
288
|
-
const data = Buffer.from(arrayBuffer);
|
|
289
|
-
await this.writeFile(bucket, key, data, {
|
|
290
|
-
ContentType: response.headers.get("content-type"),
|
|
291
|
-
ContentLength: response.headers.get("content-length")
|
|
231
|
+
}
|
|
232
|
+
return apiResponse;
|
|
233
|
+
};
|
|
234
|
+
readGzip = async (bucket, key, gzipOptions = {}, awsS3Options = {}) => {
|
|
235
|
+
await this.ensureInit();
|
|
236
|
+
const apiResponse = await this.readFile(bucket, key, awsS3Options);
|
|
237
|
+
if (void 0 !== apiResponse.body) apiResponse.body = await require_util_server_getGzipDecompressed.getGzipDecompressed(apiResponse.body, gzipOptions);
|
|
238
|
+
return apiResponse;
|
|
239
|
+
};
|
|
240
|
+
writeBrotli = async (bucket, key, data, brotliOptions = {}, awsS3Options = {}) => {
|
|
241
|
+
await this.ensureInit();
|
|
242
|
+
let finalData = data;
|
|
243
|
+
finalData = await require_util_server_getBrotliCompressed.getBrotliCompressed(finalData, brotliOptions);
|
|
244
|
+
return await this.writeFile(bucket, key, finalData, awsS3Options);
|
|
245
|
+
};
|
|
246
|
+
writeFile = async (bucket, key, data, options = {}) => {
|
|
247
|
+
await this.ensureInit();
|
|
248
|
+
const { PutObjectCommand } = await import("@aws-sdk/client-s3");
|
|
249
|
+
return await this.client.send(new PutObjectCommand({
|
|
250
|
+
Bucket: bucket,
|
|
251
|
+
Body: data,
|
|
252
|
+
Key: key,
|
|
253
|
+
...options
|
|
254
|
+
}));
|
|
255
|
+
};
|
|
256
|
+
writeJson = async (bucket, key, data, options = {}) => {
|
|
257
|
+
await this.ensureInit();
|
|
258
|
+
return await this.writeFile(bucket, key, JSON.stringify(data), options);
|
|
259
|
+
};
|
|
260
|
+
writeJsonGzip = async (bucket, key, data, gzipOptions = {}, awsS3Options = {}) => {
|
|
261
|
+
await this.ensureInit();
|
|
262
|
+
let finalData = JSON.stringify(data);
|
|
263
|
+
finalData = await require_util_server_getGzipCompressed.getGzipCompressed(finalData, gzipOptions);
|
|
264
|
+
return await this.writeFile(bucket, key, finalData, awsS3Options);
|
|
265
|
+
};
|
|
266
|
+
writeGzip = async (bucket, key, data, gzipOptions = {}, awsS3Options = {}) => {
|
|
267
|
+
await this.ensureInit();
|
|
268
|
+
let finalData = data;
|
|
269
|
+
finalData = await require_util_server_getGzipCompressed.getGzipCompressed(finalData, gzipOptions);
|
|
270
|
+
return await this.writeFile(bucket, key, finalData, awsS3Options);
|
|
271
|
+
};
|
|
272
|
+
/**
|
|
273
|
+
* Get a presigned post URL so we can upload directly to S3 via frontend.
|
|
274
|
+
*/
|
|
275
|
+
presignedPost = async (props) => {
|
|
276
|
+
await this.ensureInit();
|
|
277
|
+
return new Promise(async (resolve, reject) => {
|
|
278
|
+
let response = null;
|
|
279
|
+
const formData = new FormData();
|
|
280
|
+
Object.entries(props.fields).forEach(([key, value]) => {
|
|
281
|
+
formData.append(key, value);
|
|
292
282
|
});
|
|
293
|
-
|
|
294
|
-
|
|
283
|
+
formData.append("file", props.file);
|
|
284
|
+
if ((await fetch(props.url, {
|
|
285
|
+
method: "POST",
|
|
286
|
+
body: formData
|
|
287
|
+
})).ok) {
|
|
288
|
+
response = `https://${props.bucket}.s3.${this.config.region}.amazonaws.com/${props.key}`;
|
|
289
|
+
resolve(response);
|
|
290
|
+
} else {
|
|
291
|
+
response = null;
|
|
292
|
+
reject(response);
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
};
|
|
296
|
+
/**
|
|
297
|
+
* Download a file and write to S3.
|
|
298
|
+
*/
|
|
299
|
+
urlContents = async (bucket, key, url) => {
|
|
300
|
+
await this.ensureInit();
|
|
301
|
+
const { default: ky } = await import("ky");
|
|
302
|
+
const response = await ky.get(url);
|
|
303
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
304
|
+
const data = Buffer.from(arrayBuffer);
|
|
305
|
+
await this.writeFile(bucket, key, data, {
|
|
306
|
+
ContentType: response.headers.get("content-type"),
|
|
307
|
+
ContentLength: response.headers.get("content-length")
|
|
308
|
+
});
|
|
309
|
+
};
|
|
295
310
|
};
|
|
296
311
|
//#endregion
|
|
297
312
|
exports.AwsS3Namespace = AwsS3Namespace;
|