qstd 0.3.70 → 0.3.71
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.
|
@@ -45,6 +45,55 @@ export type FileProps = {
|
|
|
45
45
|
export declare const getFile: (s3: _t.Client, props: FileProps) => Promise<GetObjectCommandOutput>;
|
|
46
46
|
export declare const deleteFile: (s3: _t.Client, props: FileProps) => Promise<DeleteObjectCommandOutput>;
|
|
47
47
|
export declare const getFileMetadata: (s3: _t.Client, props: FileProps) => Promise<HeadObjectCommandOutput>;
|
|
48
|
+
/**
|
|
49
|
+
* Check if a file exists in S3.
|
|
50
|
+
*
|
|
51
|
+
* Returns true if the file exists, false if it doesn't.
|
|
52
|
+
* Only throws on unexpected errors (not 404).
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* const exists = await S3.fileExists(s3, { key: "images/photo.jpg" });
|
|
57
|
+
* if (exists) {
|
|
58
|
+
* // File exists, safe to reference or copy
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare const fileExists: (s3: _t.Client, props: FileProps) => Promise<boolean>;
|
|
63
|
+
export type CopyFileProps = {
|
|
64
|
+
/** Source file location */
|
|
65
|
+
src: {
|
|
66
|
+
bucket?: string;
|
|
67
|
+
key: string;
|
|
68
|
+
};
|
|
69
|
+
/** Destination file location */
|
|
70
|
+
dest: {
|
|
71
|
+
bucket?: string;
|
|
72
|
+
key: string;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Copy a file within S3.
|
|
77
|
+
*
|
|
78
|
+
* By default, both source and destination use the client's configured bucket.
|
|
79
|
+
* Override with `src.bucket` or `dest.bucket` for cross-bucket copies.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* // Copy within same bucket
|
|
84
|
+
* await S3.copyFile(s3, {
|
|
85
|
+
* src: { key: "index.sqlite" },
|
|
86
|
+
* dest: { key: "index.backup.1.sqlite" },
|
|
87
|
+
* });
|
|
88
|
+
*
|
|
89
|
+
* // Copy across buckets
|
|
90
|
+
* await S3.copyFile(s3, {
|
|
91
|
+
* src: { bucket: "prod-bucket", key: "data/file.json" },
|
|
92
|
+
* dest: { bucket: "backup-bucket", key: "backup/file.json" },
|
|
93
|
+
* });
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export declare const copyFile: (s3: _t.Client, props: CopyFileProps) => Promise<import("@aws-sdk/client-s3").CopyObjectCommandOutput>;
|
|
48
97
|
/**
|
|
49
98
|
* Create a new S3 bucket
|
|
50
99
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/s3/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAgBL,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAE7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,eAAO,MAAM,MAAM,GAAI,QAAO,EAAE,CAAC,WAAgB,KAAG,EAAE,CAAC,MAKtD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE,EAAE,CAAC,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;AACnB,wBAAgB,eAAe,CAC7B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE,EAAE,CAAC,kBAAkB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;AAC1B,wBAAgB,eAAe,CAC7B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE,EAAE,CAAC,uBAAuB,GAChC,OAAO,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC;AAoD5C;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,iEAU9D,CAAC;AAMF,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,OAAO,GAClB,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,sBAAsB,CAehC,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,yBAAyB,CAWnC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,uBAAuB,CAWjC,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,MAAM,oEAG7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,MAAM,oEAG7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAU,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,MAAM,qBAgBnE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,IAAI,EAAE,CAAC,MAAM,EACb,SAAS,EAAE,CAAC,kBAAkB,qDAkB/B,CAAC;AAMF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,GACjC,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,EAAE,CAAC,2BAA2B;;;;EAiCtC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,GAClC,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,EAAE,CAAC,4BAA4B,+EAiCvC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,EAAE,CAAC,SAAS,EAAE,GAAG,IAgB9D,CAAC"}
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/s3/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAgBL,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAE7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,eAAO,MAAM,MAAM,GAAI,QAAO,EAAE,CAAC,WAAgB,KAAG,EAAE,CAAC,MAKtD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE,EAAE,CAAC,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;AACnB,wBAAgB,eAAe,CAC7B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE,EAAE,CAAC,kBAAkB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;AAC1B,wBAAgB,eAAe,CAC7B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE,EAAE,CAAC,uBAAuB,GAChC,OAAO,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC;AAoD5C;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,iEAU9D,CAAC;AAMF,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,OAAO,GAClB,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,sBAAsB,CAehC,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,yBAAyB,CAWnC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,uBAAuB,CAWjC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,GACrB,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,OAAO,CAajB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,2BAA2B;IAC3B,GAAG,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,gCAAgC;IAChC,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACxC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,QAAQ,GAAU,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,aAAa,kEAiBjE,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,MAAM,oEAG7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,MAAM,oEAG7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAU,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,MAAM,qBAgBnE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,IAAI,EAAE,CAAC,MAAM,EACb,SAAS,EAAE,CAAC,kBAAkB,qDAkB/B,CAAC;AAMF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,GACjC,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,EAAE,CAAC,2BAA2B;;;;EAiCtC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,GAClC,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,EAAE,CAAC,4BAA4B,+EAiCvC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,EAAE,CAAC,SAAS,EAAE,GAAG,IAgB9D,CAAC"}
|
package/dist/server/index.cjs
CHANGED
|
@@ -2122,11 +2122,13 @@ var send2 = (ses, email) => {
|
|
|
2122
2122
|
var s3_exports = {};
|
|
2123
2123
|
__export(s3_exports, {
|
|
2124
2124
|
bucketExists: () => bucketExists,
|
|
2125
|
+
copyFile: () => copyFile,
|
|
2125
2126
|
create: () => create6,
|
|
2126
2127
|
createBucket: () => createBucket,
|
|
2127
2128
|
createSignedUrl: () => createSignedUrl,
|
|
2128
2129
|
deleteBucket: () => deleteBucket,
|
|
2129
2130
|
deleteFile: () => deleteFile,
|
|
2131
|
+
fileExists: () => fileExists,
|
|
2130
2132
|
finalizeMultipartUpload: () => finalizeMultipartUpload,
|
|
2131
2133
|
getFile: () => getFile,
|
|
2132
2134
|
getFileMetadata: () => getFileMetadata,
|
|
@@ -2250,6 +2252,35 @@ var getFileMetadata = async (s3, props) => {
|
|
|
2250
2252
|
throw err;
|
|
2251
2253
|
}
|
|
2252
2254
|
};
|
|
2255
|
+
var fileExists = async (s3, props) => {
|
|
2256
|
+
try {
|
|
2257
|
+
const Bucket = getBucketNameOrThrow(props.bucketName, s3.bucketName);
|
|
2258
|
+
await s3.client.send(new clientS3.HeadObjectCommand({ Bucket, Key: props.key }));
|
|
2259
|
+
return true;
|
|
2260
|
+
} catch (err) {
|
|
2261
|
+
const awsError = err;
|
|
2262
|
+
if (awsError.$metadata?.httpStatusCode === 404) {
|
|
2263
|
+
return false;
|
|
2264
|
+
}
|
|
2265
|
+
throw err;
|
|
2266
|
+
}
|
|
2267
|
+
};
|
|
2268
|
+
var copyFile = async (s3, props) => {
|
|
2269
|
+
const srcBucket = getBucketNameOrThrow(props.src.bucket, s3.bucketName);
|
|
2270
|
+
const dstBucket = getBucketNameOrThrow(props.dest.bucket, s3.bucketName);
|
|
2271
|
+
const command = new clientS3.CopyObjectCommand({
|
|
2272
|
+
CopySource: `${srcBucket}/${props.src.key}`,
|
|
2273
|
+
Key: props.dest.key,
|
|
2274
|
+
Bucket: dstBucket
|
|
2275
|
+
});
|
|
2276
|
+
try {
|
|
2277
|
+
return await s3.client.send(command);
|
|
2278
|
+
} catch (err) {
|
|
2279
|
+
console.log(`[error] [s3] [copyFile] failed. Input:`);
|
|
2280
|
+
console.dir(props, { depth: 100 });
|
|
2281
|
+
throw err;
|
|
2282
|
+
}
|
|
2283
|
+
};
|
|
2253
2284
|
var createBucket = (s3, bucketName) => {
|
|
2254
2285
|
const command = new clientS3.CreateBucketCommand({ Bucket: bucketName });
|
|
2255
2286
|
return s3.client.send(command);
|
package/dist/server/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import signale from 'signale';
|
|
|
8
8
|
import { SNSClient, PublishCommand } from '@aws-sdk/client-sns';
|
|
9
9
|
import { SQSClient, SendMessageCommand } from '@aws-sdk/client-sqs';
|
|
10
10
|
import { SESClient, SendEmailCommand } from '@aws-sdk/client-ses';
|
|
11
|
-
import { S3Client, GetObjectCommand, PutObjectCommand, DeleteObjectCommand, HeadObjectCommand, CreateBucketCommand, DeleteBucketCommand, HeadBucketCommand, ListObjectsV2Command,
|
|
11
|
+
import { S3Client, GetObjectCommand, PutObjectCommand, DeleteObjectCommand, HeadObjectCommand, CopyObjectCommand, CreateBucketCommand, DeleteBucketCommand, HeadBucketCommand, ListObjectsV2Command, CreateMultipartUploadCommand, UploadPartCommand, ListPartsCommand, CompleteMultipartUploadCommand } from '@aws-sdk/client-s3';
|
|
12
12
|
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
|
|
13
13
|
import { createPresignedPost } from '@aws-sdk/s3-presigned-post';
|
|
14
14
|
|
|
@@ -2114,11 +2114,13 @@ var send2 = (ses, email) => {
|
|
|
2114
2114
|
var s3_exports = {};
|
|
2115
2115
|
__export(s3_exports, {
|
|
2116
2116
|
bucketExists: () => bucketExists,
|
|
2117
|
+
copyFile: () => copyFile,
|
|
2117
2118
|
create: () => create6,
|
|
2118
2119
|
createBucket: () => createBucket,
|
|
2119
2120
|
createSignedUrl: () => createSignedUrl,
|
|
2120
2121
|
deleteBucket: () => deleteBucket,
|
|
2121
2122
|
deleteFile: () => deleteFile,
|
|
2123
|
+
fileExists: () => fileExists,
|
|
2122
2124
|
finalizeMultipartUpload: () => finalizeMultipartUpload,
|
|
2123
2125
|
getFile: () => getFile,
|
|
2124
2126
|
getFileMetadata: () => getFileMetadata,
|
|
@@ -2242,6 +2244,35 @@ var getFileMetadata = async (s3, props) => {
|
|
|
2242
2244
|
throw err;
|
|
2243
2245
|
}
|
|
2244
2246
|
};
|
|
2247
|
+
var fileExists = async (s3, props) => {
|
|
2248
|
+
try {
|
|
2249
|
+
const Bucket = getBucketNameOrThrow(props.bucketName, s3.bucketName);
|
|
2250
|
+
await s3.client.send(new HeadObjectCommand({ Bucket, Key: props.key }));
|
|
2251
|
+
return true;
|
|
2252
|
+
} catch (err) {
|
|
2253
|
+
const awsError = err;
|
|
2254
|
+
if (awsError.$metadata?.httpStatusCode === 404) {
|
|
2255
|
+
return false;
|
|
2256
|
+
}
|
|
2257
|
+
throw err;
|
|
2258
|
+
}
|
|
2259
|
+
};
|
|
2260
|
+
var copyFile = async (s3, props) => {
|
|
2261
|
+
const srcBucket = getBucketNameOrThrow(props.src.bucket, s3.bucketName);
|
|
2262
|
+
const dstBucket = getBucketNameOrThrow(props.dest.bucket, s3.bucketName);
|
|
2263
|
+
const command = new CopyObjectCommand({
|
|
2264
|
+
CopySource: `${srcBucket}/${props.src.key}`,
|
|
2265
|
+
Key: props.dest.key,
|
|
2266
|
+
Bucket: dstBucket
|
|
2267
|
+
});
|
|
2268
|
+
try {
|
|
2269
|
+
return await s3.client.send(command);
|
|
2270
|
+
} catch (err) {
|
|
2271
|
+
console.log(`[error] [s3] [copyFile] failed. Input:`);
|
|
2272
|
+
console.dir(props, { depth: 100 });
|
|
2273
|
+
throw err;
|
|
2274
|
+
}
|
|
2275
|
+
};
|
|
2245
2276
|
var createBucket = (s3, bucketName) => {
|
|
2246
2277
|
const command = new CreateBucketCommand({ Bucket: bucketName });
|
|
2247
2278
|
return s3.client.send(command);
|