@rr-vault/sdk 1.0.0 → 1.0.2

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.
@@ -0,0 +1,4 @@
1
+ import { RRVaultConfig, R2Config } from "./types.js";
2
+ export declare function setConfig(newConfig: RRVaultConfig): void;
3
+ export declare function getConfig(): R2Config;
4
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAcrD,wBAAgB,SAAS,CAAC,SAAS,EAAE,aAAa,QAEjD;AAED,wBAAgB,SAAS,IAAI,QAAQ,CAapC"}
package/dist/config.js ADDED
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Internal R2 settings.
3
+ * Ridoy: Replace these placeholders with your actual Cloudflare R2 values.
4
+ */
5
+ const R2_INTERNAL = {
6
+ accountId: "cc0a96d7f01e9dd678a07a57dd665897",
7
+ bucketName: "rr-vault",
8
+ publicUrl: "https://pub-52b747d8c2c34c10bc750a3beaaf1ca4.r2.dev",
9
+ };
10
+ let userConfig = null;
11
+ export function setConfig(newConfig) {
12
+ userConfig = { ...newConfig };
13
+ }
14
+ export function getConfig() {
15
+ if (!userConfig) {
16
+ throw new Error("RRVault: SDK not configured. Please call RRVault.config() first.");
17
+ }
18
+ // Map user-facing appId/secretKey to internal R2 credentials
19
+ return {
20
+ ...R2_INTERNAL,
21
+ accessKeyId: userConfig.appId,
22
+ secretAccessKey: userConfig.secretKey,
23
+ };
24
+ }
25
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,WAAW,GAAsD;IACrE,SAAS,EAAE,kCAAkC;IAC7C,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE,qDAAqD;CACjE,CAAC;AAEF,IAAI,UAAU,GAAyB,IAAI,CAAC;AAE5C,MAAM,UAAU,SAAS,CAAC,SAAwB;IAChD,UAAU,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,OAAO;QACL,GAAG,WAAW;QACd,WAAW,EAAE,UAAU,CAAC,KAAK;QAC7B,eAAe,EAAE,UAAU,CAAC,SAAS;KACtC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { setConfig } from "./config.js";
2
+ import { upload as s3Upload, deleteFile as s3Delete } from "./s3.js";
3
+ import { RRVaultConfig, R2Config, UploadOptions, UploadResult, DeleteResult } from "./types.js";
4
+ export declare class RRVault {
5
+ static config(config: RRVaultConfig): void;
6
+ static upload(file: any, fileName: string, options?: UploadOptions): Promise<UploadResult>;
7
+ static delete(key: string): Promise<DeleteResult>;
8
+ }
9
+ export { setConfig as config, s3Upload as upload, s3Delete as deleteFile };
10
+ export type { RRVaultConfig, R2Config, UploadOptions, UploadResult, DeleteResult };
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,UAAU,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhG,qBAAa,OAAO;IAElB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa;WAKtB,MAAM,CACjB,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;WAIX,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAGxD;AAGD,OAAO,EACL,SAAS,IAAI,MAAM,EACnB,QAAQ,IAAI,MAAM,EAClB,QAAQ,IAAI,UAAU,EACvB,CAAC;AAGF,YAAY,EACV,aAAa,EACb,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,YAAY,EACb,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ import { setConfig } from "./config.js";
2
+ import { upload as s3Upload, deleteFile as s3Delete } from "./s3.js";
3
+ export class RRVault {
4
+ static config(config) {
5
+ setConfig(config);
6
+ }
7
+ static async upload(file, fileName, options = {}) {
8
+ return await s3Upload(file, fileName, options);
9
+ }
10
+ static async delete(key) {
11
+ return await s3Delete(key);
12
+ }
13
+ }
14
+ // Functional approach exports
15
+ export { setConfig as config, s3Upload as upload, s3Delete as deleteFile };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,UAAU,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGrE,MAAM,OAAO,OAAO;IAElB,MAAM,CAAC,MAAM,CAAC,MAAqB;QACjC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAGD,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,IAAS,EACT,QAAgB,EAChB,UAAyB,EAAE;QAE3B,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAW;QAC7B,OAAO,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,8BAA8B;AAC9B,OAAO,EACL,SAAS,IAAI,MAAM,EACnB,QAAQ,IAAI,MAAM,EAClB,QAAQ,IAAI,UAAU,EACvB,CAAC"}
package/dist/s3.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { UploadOptions, UploadResult, DeleteResult } from "./types.js";
2
+ /**
3
+ * Upload a file to Cloudflare R2
4
+ * @param file - File content (Buffer, Blob, Uint8Array)
5
+ * @param fileName - Original name of the file
6
+ * @param options - Additional upload options
7
+ */
8
+ export declare function upload(file: any, fileName: string, options?: UploadOptions): Promise<UploadResult>;
9
+ /**
10
+ * Delete a file from Cloudflare R2
11
+ * @param key - The storage key (path) of the file
12
+ */
13
+ export declare function deleteFile(key: string): Promise<DeleteResult>;
14
+ //# sourceMappingURL=s3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../src/s3.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoBvE;;;;;GAKG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CA+BvB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAkBnE"}
package/dist/s3.js ADDED
@@ -0,0 +1,72 @@
1
+ import { S3Client, PutObjectCommand, DeleteObjectCommand } from "@aws-sdk/client-s3";
2
+ import { getConfig } from "./config.js";
3
+ let s3Client = null;
4
+ function getS3Client() {
5
+ if (s3Client)
6
+ return s3Client;
7
+ const config = getConfig();
8
+ s3Client = new S3Client({
9
+ region: "auto",
10
+ endpoint: `https://${config.accountId}.r2.cloudflarestorage.com`,
11
+ credentials: {
12
+ accessKeyId: config.accessKeyId,
13
+ secretAccessKey: config.secretAccessKey,
14
+ },
15
+ });
16
+ return s3Client;
17
+ }
18
+ /**
19
+ * Upload a file to Cloudflare R2
20
+ * @param file - File content (Buffer, Blob, Uint8Array)
21
+ * @param fileName - Original name of the file
22
+ * @param options - Additional upload options
23
+ */
24
+ export async function upload(file, fileName, options = {}) {
25
+ const config = getConfig();
26
+ const client = getS3Client();
27
+ // Clean folder path and construct key
28
+ const folder = options.folder ? `${options.folder.replace(/\/$/, "")}/` : "";
29
+ const key = `${folder}${Date.now()}-${fileName.replace(/\s+/g, "-")}`;
30
+ const command = new PutObjectCommand({
31
+ Bucket: config.bucketName,
32
+ Key: key,
33
+ Body: file,
34
+ ContentType: options.contentType || "application/octet-stream",
35
+ Metadata: options.metadata,
36
+ CacheControl: options.cacheControl,
37
+ });
38
+ const response = await client.send(command);
39
+ // Construct public URL
40
+ const baseUrl = config.publicUrl
41
+ ? config.publicUrl.replace(/\/$/, "")
42
+ : `https://${config.bucketName}.${config.accountId}.r2.dev`;
43
+ const url = `${baseUrl}/${key}`;
44
+ return {
45
+ key,
46
+ url,
47
+ etag: response.ETag,
48
+ };
49
+ }
50
+ /**
51
+ * Delete a file from Cloudflare R2
52
+ * @param key - The storage key (path) of the file
53
+ */
54
+ export async function deleteFile(key) {
55
+ const config = getConfig();
56
+ const client = getS3Client();
57
+ const command = new DeleteObjectCommand({
58
+ Bucket: config.bucketName,
59
+ Key: key,
60
+ });
61
+ try {
62
+ await client.send(command);
63
+ return { success: true };
64
+ }
65
+ catch (error) {
66
+ return {
67
+ success: false,
68
+ message: error.message || "Failed to delete file from R2"
69
+ };
70
+ }
71
+ }
72
+ //# sourceMappingURL=s3.js.map
package/dist/s3.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.js","sourceRoot":"","sources":["../src/s3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,IAAI,QAAQ,GAAoB,IAAI,CAAC;AAErC,SAAS,WAAW;IAClB,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,QAAQ,GAAG,IAAI,QAAQ,CAAC;QACtB,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,WAAW,MAAM,CAAC,SAAS,2BAA2B;QAChE,WAAW,EAAE;YACX,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC;KACF,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,IAAS,EACT,QAAgB,EAChB,UAAyB,EAAE;IAE3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAE7B,sCAAsC;IACtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAEtE,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;QACnC,MAAM,EAAE,MAAM,CAAC,UAAU;QACzB,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,0BAA0B;QAC9D,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE5C,uBAAuB;IACvB,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS;QAC9B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACrC,CAAC,CAAC,WAAW,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,SAAS,CAAC;IAE9D,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;IAEhC,OAAO;QACL,GAAG;QACH,GAAG;QACH,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAE7B,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC;QACtC,MAAM,EAAE,MAAM,CAAC,UAAU;QACzB,GAAG,EAAE,GAAG;KACT,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,+BAA+B;SAC1D,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,27 @@
1
+ export interface RRVaultConfig {
2
+ appId: string;
3
+ secretKey: string;
4
+ }
5
+ export interface R2Config {
6
+ accountId: string;
7
+ accessKeyId: string;
8
+ secretAccessKey: string;
9
+ bucketName: string;
10
+ publicUrl?: string;
11
+ }
12
+ export interface UploadOptions {
13
+ folder?: string;
14
+ contentType?: string;
15
+ metadata?: Record<string, string>;
16
+ cacheControl?: string;
17
+ }
18
+ export interface UploadResult {
19
+ key: string;
20
+ url: string;
21
+ etag?: string;
22
+ }
23
+ export interface DeleteResult {
24
+ success: boolean;
25
+ message?: string;
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rr-vault/sdk",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "\"RR-Vault SDK is a developer-first cloud storage client for securely uploading, managing, and delivering files using API keys, app-based access, and scalable infrastructure.\"",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/mdrezuanislamridoy/rr-vault-sdk#readme",
@@ -14,8 +14,25 @@
14
14
  "license": "ISC",
15
15
  "author": "Ridoy781 <ridoy.babu.781@gmail.com>",
16
16
  "type": "module",
17
- "main": "index.js",
17
+ "main": "./dist/index.js",
18
+ "types": "./dist/index.d.ts",
19
+ "files": [
20
+ "dist"
21
+ ],
18
22
  "scripts": {
23
+ "build": "tsc",
24
+ "prepublishOnly": "npm run build",
19
25
  "test": "echo \"Error: no test specified\" && exit 1"
26
+ },
27
+
28
+ "devDependencies": {
29
+ "@types/node": "^25.5.0",
30
+ "typescript": "^6.0.2"
31
+ },
32
+ "dependencies": {
33
+ "@aws-sdk/client-s3": "^3.1019.0",
34
+ "@aws-sdk/lib-storage": "^3.1019.0",
35
+ "@types/axios": "^0.9.36",
36
+ "axios": "^1.14.0"
20
37
  }
21
38
  }
package/index.js DELETED
@@ -1,3 +0,0 @@
1
- export default function RRVault() {
2
- console.log("My First NPM Package");
3
- }