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":"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"}
@@ -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);
@@ -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, CopyObjectCommand, CreateMultipartUploadCommand, UploadPartCommand, ListPartsCommand, CompleteMultipartUploadCommand } from '@aws-sdk/client-s3';
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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qstd",
3
- "version": "0.3.70",
3
+ "version": "0.3.71",
4
4
  "description": "Standard Block component and utilities library with Panda CSS",
5
5
  "author": "malin1",
6
6
  "license": "MIT",