@nexusts/drive 0.8.3 → 0.9.0
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/drive.module.d.ts +0 -13
- package/dist/index.js +1 -5
- package/dist/index.js.map +4 -5
- package/dist/types.d.ts +1 -1
- package/package.json +2 -2
package/dist/drive.module.d.ts
CHANGED
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `DriveModule` — drop-in file storage.
|
|
3
|
-
*
|
|
4
|
-
* @Module({
|
|
5
|
-
* imports: [
|
|
6
|
-
* DriveModule.forRoot({
|
|
7
|
-
* driver: new LocalDriver({ root: '/var/data' }),
|
|
8
|
-
* }),
|
|
9
|
-
* ],
|
|
10
|
-
* })
|
|
11
|
-
* export class AppModule {}
|
|
12
|
-
*/
|
|
13
|
-
import "reflect-metadata";
|
|
14
1
|
import type { DriveConfig } from "./types.js";
|
|
15
2
|
export declare class DriveModule {
|
|
16
3
|
static forRoot(config?: DriveConfig): {
|
package/dist/index.js
CHANGED
|
@@ -31,9 +31,6 @@ var __legacyMetadataTS = (k, v) => {
|
|
|
31
31
|
return Reflect.metadata(k, v);
|
|
32
32
|
};
|
|
33
33
|
var __require = import.meta.require;
|
|
34
|
-
|
|
35
|
-
// packages/drive/src/types.ts
|
|
36
|
-
import"reflect-metadata";
|
|
37
34
|
// packages/drive/src/drivers/memory.ts
|
|
38
35
|
class MemoryDriver {
|
|
39
36
|
kind = "memory";
|
|
@@ -445,7 +442,6 @@ DriveService = __legacyDecorateClassTS([
|
|
|
445
442
|
])
|
|
446
443
|
], DriveService);
|
|
447
444
|
// packages/drive/src/drive.module.ts
|
|
448
|
-
import"reflect-metadata";
|
|
449
445
|
import { Module } from "@nexusts/core";
|
|
450
446
|
class DriveModule {
|
|
451
447
|
static forRoot(config = {}) {
|
|
@@ -489,5 +485,5 @@ export {
|
|
|
489
485
|
DriveModule
|
|
490
486
|
};
|
|
491
487
|
|
|
492
|
-
//# debugId=
|
|
488
|
+
//# debugId=507F2CA60CB1CDB964756E2164756E21
|
|
493
489
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/
|
|
3
|
+
"sources": ["../src/drivers/memory.ts", "../src/drivers/local.ts", "../src/drivers/s3.ts", "../src/drive.service.ts", "../src/drive.module.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * `nexusjs/drive` — file storage abstraction.\n *\n * const drive = new DriveService({ driver: new LocalDriver({ root: '/var/data' }) });\n * await drive.put('avatars/42.png', bytes, { contentType: 'image/png' });\n * const buf = await drive.get('avatars/42.png');\n *\n * Drivers:\n * - `LocalDriver` — local filesystem\n * - `MemoryDriver` — in-memory map (tests, ephemeral)\n * - `S3Driver` — AWS S3 / Cloudflare R2 (peer dep: @aws-sdk/client-s3)\n *\n * drive.getSignedUrl('avatars/42.png', { expiresIn: 3600 });\n * drive.exists('avatars/42.png');\n * drive.delete('avatars/42.png');\n * drive.list('avatars/');\n */\n\nimport \"reflect-metadata\";\n\n/** File content: Buffer, Uint8Array, or string. */\nexport type FileContent = Buffer | Uint8Array | string;\n\n/** Metadata returned by `head()`. */\nexport interface FileMetadata {\n\t/** Full key. */\n\tkey: string;\n\t/** Size in bytes. */\n\tsize: number;\n\t/** Detected MIME type, if known. */\n\tcontentType?: string;\n\t/** Last-modified time (unix-ms). */\n\tlastModified: number;\n\t/** ETag, if available. */\n\tetag?: string;\n\t/** Custom user metadata. */\n\tmetadata?: Record<string, string>;\n}\n\n/** Options for `put()`. */\nexport interface PutOptions {\n\t/** MIME type. Auto-detected if omitted. */\n\tcontentType?: string;\n\t/** Cache-Control header. */\n\tcacheControl?: string;\n\t/** Custom user metadata. */\n\tmetadata?: Record<string, string>;\n\t/** S3-style ACL (`public-read`, `private`, etc.). */\n\tacl?: string;\n}\n\n/** Options for signed URL. */\nexport interface SignedUrlOptions {\n\t/** Time until the URL expires, in seconds. */\n\texpiresIn?: number;\n\t/** Force download with the given filename. */\n\tasAttachment?: string;\n\t/** Override the Content-Type of the response. */\n\tcontentType?: string;\n\t/** Method. Default: GET. */\n\tmethod?: \"GET\" | \"PUT\" | \"DELETE\";\n}\n\n/** Options for listing. */\nexport interface ListOptions {\n\t/** Return only keys with this prefix. */\n\tprefix?: string;\n\t/** Maximum results. */\n\tlimit?: number;\n\t/** Pagination cursor. */\n\tcursor?: string;\n}\n\n/** A single listing result. */\nexport interface ListResult {\n\tkeys: string[];\n\t/** True if more results are available. */\n\thasMore: boolean;\n\t/** Cursor for the next page. */\n\tcursor?: string;\n}\n\n/** A driver is a single backing store. */\nexport interface StorageDriver {\n\treadonly kind: string;\n\tput(key: string, body: FileContent, opts?: PutOptions): Promise<void>;\n\tget(key: string): Promise<Buffer>;\n\tdelete(key: string): Promise<boolean>;\n\texists(key: string): Promise<boolean>;\n\thead(key: string): Promise<FileMetadata>;\n\tlist(opts?: ListOptions): Promise<ListResult>;\n\tgetSignedUrl(key: string, opts?: SignedUrlOptions): Promise<string>;\n\tcopy(src: string, dest: string): Promise<void>;\n\tmove(src: string, dest: string): Promise<void>;\n}\n\n/** Top-level Drive configuration. */\nexport interface DriveConfig {\n\t/** Storage driver. Default: in-memory. */\n\tdriver?: StorageDriver;\n\t/** Default visibility hint passed to drivers that support it. */\n\tdefaultVisibility?: \"public\" | \"private\";\n\t/** Custom URL builder for `getSignedUrl` (default returns a `nexus://` URL). */\n\tsignedUrlBuilder?: (key: string, opts?: SignedUrlOptions) => Promise<string>;\n}\n",
|
|
6
5
|
"/**\n * In-memory storage driver. Useful for tests, ephemeral state, and\n * single-process deploys that need a quick KV-like store.\n */\nimport type {\n\tFileContent,\n\tFileMetadata,\n\tListOptions,\n\tListResult,\n\tPutOptions,\n\tSignedUrlOptions,\n\tStorageDriver,\n} from \"../types.js\";\n\ninterface MemEntry {\n\tbody: Buffer;\n\tmeta: FileMetadata;\n}\n\nexport class MemoryDriver implements StorageDriver {\n\treadonly kind = \"memory\";\n\tprivate data = new Map<string, MemEntry>();\n\n\tasync put(\n\t\tkey: string,\n\t\tbody: FileContent,\n\t\topts: PutOptions = {},\n\t): Promise<void> {\n\t\tconst buf = toBuffer(body);\n\t\tconst contentType = opts.contentType ?? \"application/octet-stream\";\n\t\tthis.data.set(key, {\n\t\t\tbody: buf,\n\t\t\tmeta: {\n\t\t\t\tkey,\n\t\t\t\tsize: buf.length,\n\t\t\t\tcontentType,\n\t\t\t\tlastModified: Date.now(),\n\t\t\t\tetag: simpleEtag(buf),\n\t\t\t\tmetadata: opts.metadata,\n\t\t\t},\n\t\t});\n\t}\n\n\tasync get(key: string): Promise<Buffer> {\n\t\tconst e = this.data.get(key);\n\t\tif (!e) throw new Error(`File not found: ${key}`);\n\t\treturn e.body;\n\t}\n\n\tasync delete(key: string): Promise<boolean> {\n\t\treturn this.data.delete(key);\n\t}\n\n\tasync exists(key: string): Promise<boolean> {\n\t\treturn this.data.has(key);\n\t}\n\n\tasync head(key: string): Promise<FileMetadata> {\n\t\tconst e = this.data.get(key);\n\t\tif (!e) throw new Error(`File not found: ${key}`);\n\t\treturn { ...e.meta };\n\t}\n\n\tasync list(opts: ListOptions = {}): Promise<ListResult> {\n\t\tconst all = [...this.data.keys()].sort();\n\t\tconst prefix = opts.prefix ?? \"\";\n\t\tconst filtered = prefix ? all.filter((k) => k.startsWith(prefix)) : all;\n\t\tconst limit = opts.limit ?? 1000;\n\t\tconst startIdx = opts.cursor ? Number(opts.cursor) : 0;\n\t\tconst endIdx = Math.min(startIdx + limit, filtered.length);\n\t\tconst slice = filtered.slice(startIdx, endIdx);\n\t\treturn {\n\t\t\tkeys: slice,\n\t\t\thasMore: endIdx < filtered.length,\n\t\t\tcursor: endIdx < filtered.length ? String(endIdx) : undefined,\n\t\t};\n\t}\n\n\tasync getSignedUrl(\n\t\tkey: string,\n\t\t_opts: SignedUrlOptions = {},\n\t): Promise<string> {\n\t\tif (!this.data.has(key)) throw new Error(`File not found: ${key}`);\n\t\t// No signing in-memory; return a sentinel URL.\n\t\treturn `memory://${encodeURIComponent(key)}`;\n\t}\n\n\tasync copy(src: string, dest: string): Promise<void> {\n\t\tconst e = this.data.get(src);\n\t\tif (!e) throw new Error(`File not found: ${src}`);\n\t\tthis.data.set(dest, {\n\t\t\tbody: e.body,\n\t\t\tmeta: { ...e.meta, key: dest, lastModified: Date.now() },\n\t\t});\n\t}\n\n\tasync move(src: string, dest: string): Promise<void> {\n\t\tawait this.copy(src, dest);\n\t\tthis.data.delete(src);\n\t}\n}\n\nfunction toBuffer(body: FileContent): Buffer {\n\tif (typeof body === \"string\") return Buffer.from(body, \"utf-8\");\n\treturn Buffer.isBuffer(body) ? body : Buffer.from(body);\n}\n\nfunction simpleEtag(buf: Buffer): string {\n\t// Not cryptographic; just a stable hash for cache invalidation.\n\tlet h = 5381;\n\tfor (let i = 0; i < buf.length; i++) h = ((h << 5) + h + buf[i]) | 0;\n\treturn `\"${(h >>> 0).toString(16)}\"`;\n}\n",
|
|
7
6
|
"/**\n * Local-filesystem driver. Stores files under a `root` directory.\n *\n * - Path traversal is rejected (`..`, absolute paths).\n * - Creates intermediate directories on write.\n * - Uses node:fs/promises for portability with Node and Bun.\n */\nimport {\n\tmkdir,\n\treadFile,\n\tstat,\n\tunlink,\n\twriteFile,\n\treaddir,\n\trename,\n} from \"node:fs/promises\";\nimport { dirname, join, normalize, resolve, sep } from \"node:path\";\nimport type {\n\tFileContent,\n\tFileMetadata,\n\tListOptions,\n\tListResult,\n\tPutOptions,\n\tSignedUrlOptions,\n\tStorageDriver,\n} from \"../types.js\";\n\nexport interface LocalDriverOptions {\n\t/** Root directory for this driver. */\n\troot: string;\n\t/** Public URL prefix used for `getSignedUrl`. Default: '/files'. */\n\tpublicUrlPrefix?: string;\n}\n\nexport class LocalDriver implements StorageDriver {\n\treadonly kind = \"local\";\n\tprivate readonly root: string;\n\tprivate readonly publicUrlPrefix: string;\n\n\tconstructor(opts: LocalDriverOptions) {\n\t\tthis.root = resolve(opts.root);\n\t\tthis.publicUrlPrefix = opts.publicUrlPrefix ?? \"/files\";\n\t}\n\n\tprivate resolveKey(key: string): string {\n\t\tconst safe = normalize(key).replace(/^[/\\\\]+/, \"\");\n\t\tconst full = resolve(this.root, safe);\n\t\t// Ensure the resolved path is inside `root`.\n\t\tif (!full.startsWith(this.root + sep) && full !== this.root) {\n\t\t\tthrow new Error(`Path traversal blocked: ${key}`);\n\t\t}\n\t\treturn full;\n\t}\n\n\tasync put(\n\t\tkey: string,\n\t\tbody: FileContent,\n\t\t_opts: PutOptions = {},\n\t): Promise<void> {\n\t\tconst path = this.resolveKey(key);\n\t\tawait mkdir(dirname(path), { recursive: true });\n\t\tconst buf =\n\t\t\ttypeof body === \"string\" ? Buffer.from(body, \"utf-8\") : Buffer.from(body);\n\t\tawait writeFile(path, buf);\n\t}\n\n\tasync get(key: string): Promise<Buffer> {\n\t\tconst path = this.resolveKey(key);\n\t\ttry {\n\t\t\treturn await readFile(path);\n\t\t} catch (err) {\n\t\t\tif ((err as NodeJS.ErrnoException).code === \"ENOENT\") {\n\t\t\t\tthrow new Error(`File not found: ${key}`);\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tasync delete(key: string): Promise<boolean> {\n\t\tconst path = this.resolveKey(key);\n\t\ttry {\n\t\t\tawait unlink(path);\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\tif ((err as NodeJS.ErrnoException).code === \"ENOENT\") return false;\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tasync exists(key: string): Promise<boolean> {\n\t\ttry {\n\t\t\tawait stat(this.resolveKey(key));\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync head(key: string): Promise<FileMetadata> {\n\t\tconst path = this.resolveKey(key);\n\t\ttry {\n\t\t\tconst s = await stat(path);\n\t\t\treturn {\n\t\t\t\tkey,\n\t\t\t\tsize: s.size,\n\t\t\t\tlastModified: s.mtimeMs,\n\t\t\t};\n\t\t} catch (err) {\n\t\t\tif ((err as NodeJS.ErrnoException).code === \"ENOENT\") {\n\t\t\t\tthrow new Error(`File not found: ${key}`);\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tasync list(opts: ListOptions = {}): Promise<ListResult> {\n\t\tconst root = this.root;\n\t\tconst prefix = opts.prefix ?? \"\";\n\t\tconst all = await walk(root, \"\", prefix);\n\t\tall.sort();\n\t\tconst limit = opts.limit ?? 1000;\n\t\tconst startIdx = opts.cursor ? Number(opts.cursor) : 0;\n\t\tconst endIdx = Math.min(startIdx + limit, all.length);\n\t\tconst slice = all.slice(startIdx, endIdx);\n\t\treturn {\n\t\t\tkeys: slice,\n\t\t\thasMore: endIdx < all.length,\n\t\t\tcursor: endIdx < all.length ? String(endIdx) : undefined,\n\t\t};\n\t}\n\n\tasync getSignedUrl(\n\t\tkey: string,\n\t\t_opts: SignedUrlOptions = {},\n\t): Promise<string> {\n\t\t// Local driver: serve via a public prefix. Real signing would require\n\t\t// an upstream reverse proxy with signature verification.\n\t\treturn `${this.publicUrlPrefix}/${key}`;\n\t}\n\n\tasync copy(src: string, dest: string): Promise<void> {\n\t\tconst buf = await this.get(src);\n\t\tawait this.put(dest, buf);\n\t}\n\n\tasync move(src: string, dest: string): Promise<void> {\n\t\tconst from = this.resolveKey(src);\n\t\tconst to = this.resolveKey(dest);\n\t\tawait mkdir(dirname(to), { recursive: true });\n\t\tawait rename(from, to);\n\t}\n}\n\nasync function walk(\n\troot: string,\n\tdir: string,\n\tprefix: string,\n): Promise<string[]> {\n\tconst out: string[] = [];\n\tconst full = join(root, dir);\n\tlet entries;\n\ttry {\n\t\tentries = await readdir(full, { withFileTypes: true });\n\t} catch {\n\t\treturn out;\n\t}\n\tfor (const e of entries) {\n\t\tconst rel = dir ? `${dir}/${e.name}` : e.name;\n\t\tif (e.isDirectory()) {\n\t\t\t// Recurse if this directory is on the prefix path\n\t\t\t// (e.g. searching for 'a/1' should walk into 'a').\n\t\t\tif (\n\t\t\t\t!prefix ||\n\t\t\t\trel === prefix.slice(0, -1) ||\n\t\t\t\trel.startsWith(prefix) ||\n\t\t\t\tprefix.startsWith(`${rel}/`)\n\t\t\t) {\n\t\t\t\tconst sub = await walk(root, rel, prefix);\n\t\t\t\tout.push(...sub);\n\t\t\t}\n\t\t} else {\n\t\t\tif (!prefix || rel.startsWith(prefix)) {\n\t\t\t\tout.push(rel);\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n",
|
|
8
7
|
"/**\n * S3-compatible driver. Works with AWS S3, Cloudflare R2, MinIO, etc.\n *\n * Implementation strategy: we keep the driver thin and use the\n * `@aws-sdk/client-s3` + `@aws-sdk/s3-request-presigner` packages\n * dynamically. They are listed as `peerDependenciesMeta.optional`\n * so they don't bloat the bundle for users not using S3.\n *\n * const driver = new S3Driver({\n * bucket: 'my-bucket',\n * region: 'us-east-1',\n * credentials: { accessKeyId, secretAccessKey },\n * });\n * const drive = new DriveService({ driver });\n */\nimport type {\n\tFileContent,\n\tFileMetadata,\n\tListOptions,\n\tListResult,\n\tPutOptions,\n\tSignedUrlOptions,\n\tStorageDriver,\n} from \"../types.js\";\n\nexport interface S3DriverOptions {\n\tbucket: string;\n\tregion: string;\n\tendpoint?: string;\n\taccessKeyId?: string;\n\tsecretAccessKey?: string;\n\t/** Optional public URL prefix override. */\n\tpublicUrlPrefix?: string;\n}\n\nexport class S3Driver implements StorageDriver {\n\treadonly kind = \"s3\";\n\tprivate opts: S3DriverOptions;\n\t// Lazily resolved at runtime to avoid bundling aws-sdk unless used.\n\tprivate _client: any = null;\n\tprivate _presigner: any = null;\n\n\tconstructor(opts: S3DriverOptions) {\n\t\tthis.opts = opts;\n\t}\n\n\tprivate async client() {\n\t\tif (this._client) return this._client;\n\t\ttry {\n\t\t\tconst mod = await import(\"@aws-sdk/client-s3\");\n\t\t\tconst ctor = mod.S3Client;\n\t\t\tthis._client = new ctor({\n\t\t\t\tregion: this.opts.region,\n\t\t\t\tendpoint: this.opts.endpoint,\n\t\t\t\tcredentials: this.opts.accessKeyId\n\t\t\t\t\t? {\n\t\t\t\t\t\t\taccessKeyId: this.opts.accessKeyId,\n\t\t\t\t\t\t\tsecretAccessKey: this.opts.secretAccessKey ?? \"\",\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tthrow new Error(\n\t\t\t\t\"S3Driver requires @aws-sdk/client-s3. Install it with: bun add @aws-sdk/client-s3\",\n\t\t\t);\n\t\t}\n\t\treturn this._client;\n\t}\n\n\tprivate async presigner() {\n\t\tif (this._presigner) return this._presigner;\n\t\ttry {\n\t\t\tconst mod = await import(\"@aws-sdk/s3-request-presigner\");\n\t\t\tthis._presigner = mod.getSignedUrl;\n\t\t} catch {\n\t\t\tthrow new Error(\n\t\t\t\t\"S3Driver signed URLs require @aws-sdk/s3-request-presigner. Install it with: bun add @aws-sdk/s3-request-presigner\",\n\t\t\t);\n\t\t}\n\t\treturn this._presigner;\n\t}\n\n\tasync put(\n\t\tkey: string,\n\t\tbody: FileContent,\n\t\topts: PutOptions = {},\n\t): Promise<void> {\n\t\tconst client = await this.client();\n\t\tconst mod = await import(\"@aws-sdk/client-s3\");\n\t\tconst buf =\n\t\t\ttypeof body === \"string\" ? Buffer.from(body, \"utf-8\") : Buffer.from(body);\n\t\tconst command = new mod.PutObjectCommand({\n\t\t\tBucket: this.opts.bucket,\n\t\t\tKey: key,\n\t\t\tBody: buf,\n\t\t\tContentType: opts.contentType,\n\t\t\tCacheControl: opts.cacheControl,\n\t\t\tACL: opts.acl,\n\t\t\tMetadata: opts.metadata,\n\t\t});\n\t\tawait client.send(command);\n\t}\n\n\tasync get(key: string): Promise<Buffer> {\n\t\tconst client = await this.client();\n\t\tconst mod = await import(\"@aws-sdk/client-s3\");\n\t\tconst command = new mod.GetObjectCommand({\n\t\t\tBucket: this.opts.bucket,\n\t\t\tKey: key,\n\t\t});\n\t\tconst res = await client.send(command);\n\t\tconst chunks: Uint8Array[] = [];\n\t\tfor await (const chunk of res.Body as AsyncIterable<Uint8Array>)\n\t\t\tchunks.push(chunk);\n\t\treturn Buffer.concat(chunks);\n\t}\n\n\tasync delete(key: string): Promise<boolean> {\n\t\tconst client = await this.client();\n\t\tconst mod = await import(\"@aws-sdk/client-s3\");\n\t\tconst command = new mod.DeleteObjectCommand({\n\t\t\tBucket: this.opts.bucket,\n\t\t\tKey: key,\n\t\t});\n\t\tawait client.send(command);\n\t\treturn true;\n\t}\n\n\tasync exists(key: string): Promise<boolean> {\n\t\ttry {\n\t\t\tawait this.head(key);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync head(key: string): Promise<FileMetadata> {\n\t\tconst client = await this.client();\n\t\tconst mod = await import(\"@aws-sdk/client-s3\");\n\t\tconst command = new mod.HeadObjectCommand({\n\t\t\tBucket: this.opts.bucket,\n\t\t\tKey: key,\n\t\t});\n\t\tconst res = await client.send(command);\n\t\treturn {\n\t\t\tkey,\n\t\t\tsize: res.ContentLength ?? 0,\n\t\t\tcontentType: res.ContentType,\n\t\t\tlastModified: res.LastModified?.getTime() ?? Date.now(),\n\t\t\tetag: res.ETag,\n\t\t};\n\t}\n\n\tasync list(opts: ListOptions = {}): Promise<ListResult> {\n\t\tconst client = await this.client();\n\t\tconst mod = await import(\"@aws-sdk/client-s3\");\n\t\tconst command = new mod.ListObjectsV2Command({\n\t\t\tBucket: this.opts.bucket,\n\t\t\tPrefix: opts.prefix,\n\t\t\tMaxKeys: opts.limit,\n\t\t\tContinuationToken: opts.cursor,\n\t\t});\n\t\tconst res = await client.send(command);\n\t\tconst keys = (res.Contents ?? []).map((o: any) => o.Key as string);\n\t\treturn {\n\t\t\tkeys,\n\t\t\thasMore: Boolean(res.IsTruncated),\n\t\t\tcursor: res.NextContinuationToken,\n\t\t};\n\t}\n\n\tasync getSignedUrl(\n\t\tkey: string,\n\t\topts: SignedUrlOptions = {},\n\t): Promise<string> {\n\t\tconst client = await this.client();\n\t\tconst mod = await import(\"@aws-sdk/client-s3\");\n\t\tconst presigner = await this.presigner();\n\t\tconst expiresIn = opts.expiresIn ?? 3600;\n\t\tconst command = new mod.GetObjectCommand({\n\t\t\tBucket: this.opts.bucket,\n\t\t\tKey: key,\n\t\t\tResponseContentDisposition: opts.asAttachment\n\t\t\t\t? `attachment; filename=\"${opts.asAttachment}\"`\n\t\t\t\t: undefined,\n\t\t\tResponseContentType: opts.contentType,\n\t\t});\n\t\treturn presigner(client, command, { expiresIn });\n\t}\n\n\tasync copy(src: string, dest: string): Promise<void> {\n\t\tconst client = await this.client();\n\t\tconst mod = await import(\"@aws-sdk/client-s3\");\n\t\tconst command = new mod.CopyObjectCommand({\n\t\t\tBucket: this.opts.bucket,\n\t\t\tKey: dest,\n\t\t\tCopySource: `${this.opts.bucket}/${src}`,\n\t\t});\n\t\tawait client.send(command);\n\t}\n\n\tasync move(src: string, dest: string): Promise<void> {\n\t\tawait this.copy(src, dest);\n\t\tawait this.delete(src);\n\t}\n}\n",
|
|
9
8
|
"/**\n * `DriveService` — public façade.\n *\n * const drive = new DriveService({ driver: new LocalDriver({ root: '/data' }) });\n * await drive.put('a.txt', 'hello');\n * const body = await drive.get('a.txt');\n */\nimport { Inject, Injectable } from \"@nexusts/core\";\nimport { MemoryDriver } from \"./drivers/memory.js\";\nimport type {\n\tDriveConfig,\n\tFileContent,\n\tFileMetadata,\n\tListOptions,\n\tListResult,\n\tPutOptions,\n\tSignedUrlOptions,\n} from \"./types.js\";\n\n@Injectable()\nexport class DriveService {\n\t/** DI token. */\n\tstatic readonly TOKEN = Symbol.for(\"nexus:DriveService\");\n\n\tprivate _driver: import(\"./types.js\").StorageDriver;\n\tdefaultVisibility: NonNullable<DriveConfig[\"defaultVisibility\"]>;\n\tprivate signedUrlBuilder: NonNullable<DriveConfig[\"signedUrlBuilder\"]>;\n\n\tconstructor(@Inject(\"DRIVE_CONFIG\") config: DriveConfig = {}) {\n\t\tthis._driver = config.driver ?? new MemoryDriver();\n\t\tthis.defaultVisibility = config.defaultVisibility ?? \"private\";\n\t\tthis.signedUrlBuilder =\n\t\t\tconfig.signedUrlBuilder ??\n\t\t\t(async (key, opts) => this._driver.getSignedUrl(key, opts));\n\t}\n\n\t/** Direct access to the underlying driver (for advanced use). */\n\tget driver(): import(\"./types.js\").StorageDriver {\n\t\treturn this._driver;\n\t}\n\n\tasync put(key: string, body: FileContent, opts?: PutOptions): Promise<void> {\n\t\treturn this._driver.put(key, body, opts);\n\t}\n\n\tasync get(key: string): Promise<Buffer> {\n\t\treturn this._driver.get(key);\n\t}\n\n\tasync delete(key: string): Promise<boolean> {\n\t\treturn this._driver.delete(key);\n\t}\n\n\tasync exists(key: string): Promise<boolean> {\n\t\treturn this._driver.exists(key);\n\t}\n\n\tasync head(key: string): Promise<FileMetadata> {\n\t\treturn this._driver.head(key);\n\t}\n\n\tasync list(opts?: ListOptions): Promise<ListResult> {\n\t\treturn this._driver.list(opts);\n\t}\n\n\tasync getSignedUrl(key: string, opts?: SignedUrlOptions): Promise<string> {\n\t\treturn this.signedUrlBuilder(key, opts);\n\t}\n\n\tasync copy(src: string, dest: string): Promise<void> {\n\t\treturn this._driver.copy(src, dest);\n\t}\n\n\tasync move(src: string, dest: string): Promise<void> {\n\t\treturn this._driver.move(src, dest);\n\t}\n}\n",
|
|
10
|
-
"/**\n * `DriveModule` — drop-in file storage.\n *\n * @Module({\n * imports: [\n * DriveModule.forRoot({\n * driver: new LocalDriver({ root: '/var/data' }),\n * }),\n * ],\n * })\n * export class AppModule {}\n */\nimport
|
|
9
|
+
"/**\n * `DriveModule` — drop-in file storage.\n *\n * @Module({\n * imports: [\n * DriveModule.forRoot({\n * driver: new LocalDriver({ root: '/var/data' }),\n * }),\n * ],\n * })\n * export class AppModule {}\n */\nimport { Module } from \"@nexusts/core\";\nimport { DriveService } from \"./drive.service.js\";\nimport { MemoryDriver } from \"./drivers/memory.js\";\nimport type { DriveConfig } from \"./types.js\";\nimport { safeGetMeta, safeDefineMeta, safeHasMeta } from \"@nexusts/core/di/safe-reflect\";\n\n@Module({\n\tproviders: [\n\t\tDriveService,\n\t\t{ provide: DriveService.TOKEN, useExisting: DriveService },\n\t],\n\texports: [DriveService, DriveService.TOKEN],\n})\nexport class DriveModule {\n\tstatic forRoot(config: DriveConfig = {}) {\n\t\tconst cfg: DriveConfig = {\n\t\t\tdriver: new MemoryDriver(),\n\t\t\t...config,\n\t\t};\n\t\t@Module({\n\t\t\tproviders: [\n\t\t\t\tDriveService,\n\t\t\t\t{ provide: DriveService.TOKEN, useExisting: DriveService },\n\t\t\t\t{ provide: \"DRIVE_CONFIG\", useValue: cfg },\n\t\t\t],\n\t\t\texports: [DriveService, DriveService.TOKEN],\n\t\t})\n\t\tclass ConfiguredDriveModule {}\n\t\tObject.defineProperty(ConfiguredDriveModule, \"name\", {\n\t\t\tvalue: \"ConfiguredDriveModule\",\n\t\t});\n\t\treturn ConfiguredDriveModule;\n\t}\n}\n"
|
|
11
10
|
],
|
|
12
|
-
"mappings": "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",
|
|
13
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "507F2CA60CB1CDB964756E2164756E21",
|
|
14
13
|
"names": []
|
|
15
14
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
+
import { safeGetMeta, safeDefineMeta, safeHasMeta } from "@nexusts/core/di/safe-reflect";
|
|
2
3
|
* `nexusjs/drive` — file storage abstraction.
|
|
3
4
|
*
|
|
4
5
|
* const drive = new DriveService({ driver: new LocalDriver({ root: '/var/data' }) });
|
|
@@ -15,7 +16,6 @@
|
|
|
15
16
|
* drive.delete('avatars/42.png');
|
|
16
17
|
* drive.list('avatars/');
|
|
17
18
|
*/
|
|
18
|
-
import "reflect-metadata";
|
|
19
19
|
/** File content: Buffer, Uint8Array, or string. */
|
|
20
20
|
export type FileContent = Buffer | Uint8Array | string;
|
|
21
21
|
/** Metadata returned by `head()`. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nexusts/drive",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "File storage abstraction (Local / S3 / R2 / memory)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
],
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@nexusts/core": "^0.
|
|
29
|
+
"@nexusts/core": "^0.9.0"
|
|
30
30
|
},
|
|
31
31
|
"repository": {
|
|
32
32
|
"type": "git",
|