gdrivekit 1.0.2 → 1.0.3

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.
Files changed (3) hide show
  1. package/README.md +1 -2
  2. package/dist/index.js +220 -9
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -58,8 +58,7 @@ After that, you **don’t need to call it again** unless you delete your tokens
58
58
  Once tokens are generated, you can initialize the Google Drive service and perform file operations:
59
59
 
60
60
  ```ts
61
- import { operations } from "gdrivekit";
62
- import { initDriveService } from "./drivers/services";
61
+ import { operations, initDriveService } from "gdrivekit";
63
62
 
64
63
  async function main() {
65
64
  initDriveService();
package/dist/index.js CHANGED
@@ -778735,8 +778735,218 @@ __export(exports_operations, {
778735
778735
  copyFile: () => copyFile
778736
778736
  });
778737
778737
 
778738
+ // drivers/services.ts
778739
+ import fs3 from "fs";
778740
+
778741
+ // drivers/GoogleDriveService.ts
778742
+ var import_googleapis = __toESM(require_src8(), 1);
778743
+ import * as fs2 from "fs";
778744
+ import * as path from "path";
778745
+
778746
+ class GoogleDriveService {
778747
+ oauth2Client;
778748
+ drive;
778749
+ constructor(credentials) {
778750
+ const creds = credentials.web || credentials.installed || credentials;
778751
+ const { client_id, client_secret } = creds;
778752
+ const redirect_uri = "redirect_uris" in creds ? creds.redirect_uris[0] : credentials.redirect_uri;
778753
+ this.oauth2Client = new import_googleapis.google.auth.OAuth2(client_id, client_secret, redirect_uri);
778754
+ this.drive = import_googleapis.google.drive({ version: "v3", auth: this.oauth2Client });
778755
+ }
778756
+ setCredentials(tokens) {
778757
+ this.oauth2Client.setCredentials(tokens);
778758
+ this.oauth2Client.on("tokens", (newTokens) => {
778759
+ if (newTokens.refresh_token) {
778760
+ tokens.refresh_token = newTokens.refresh_token;
778761
+ }
778762
+ tokens.access_token = newTokens.access_token;
778763
+ tokens.expiry_date = newTokens.expiry_date;
778764
+ fs2.writeFileSync("./tokens.json", JSON.stringify(tokens, null, 2));
778765
+ console.log("\uD83D\uDD04 Tokens refreshed and saved");
778766
+ });
778767
+ }
778768
+ async listFiles(params = {}) {
778769
+ try {
778770
+ const response = await this.drive.files.list({
778771
+ pageSize: params.pageSize || 10,
778772
+ fields: "nextPageToken, files(id, name, mimeType, size, createdTime, modifiedTime)",
778773
+ q: params.query || undefined,
778774
+ orderBy: params.orderBy || "modifiedTime desc",
778775
+ pageToken: params.pageToken || undefined
778776
+ });
778777
+ return {
778778
+ success: true,
778779
+ data: {
778780
+ files: response.data.files,
778781
+ nextPageToken: response.data.nextPageToken || undefined
778782
+ }
778783
+ };
778784
+ } catch (error) {
778785
+ return {
778786
+ success: false,
778787
+ error: error instanceof Error ? error.message : "Unknown error"
778788
+ };
778789
+ }
778790
+ }
778791
+ async getFileMetadata(fileId) {
778792
+ try {
778793
+ const response = await this.drive.files.get({
778794
+ fileId,
778795
+ fields: "id, name, mimeType, size, createdTime, modifiedTime, parents, webViewLink"
778796
+ });
778797
+ return {
778798
+ success: true,
778799
+ data: response.data
778800
+ };
778801
+ } catch (error) {
778802
+ return {
778803
+ success: false,
778804
+ error: error instanceof Error ? error.message : "Unknown error"
778805
+ };
778806
+ }
778807
+ }
778808
+ async downloadFile(fileId, destPath) {
778809
+ try {
778810
+ const dest = fs2.createWriteStream(destPath);
778811
+ const response = await this.drive.files.get({ fileId, alt: "media" }, { responseType: "stream" });
778812
+ return new Promise((resolve, reject) => {
778813
+ response.data.on("end", () => {
778814
+ resolve({ success: true, data: { path: destPath } });
778815
+ }).on("error", (err) => {
778816
+ reject({ success: false, error: err.message });
778817
+ }).pipe(dest);
778818
+ });
778819
+ } catch (error) {
778820
+ return {
778821
+ success: false,
778822
+ error: error instanceof Error ? error.message : "Unknown error"
778823
+ };
778824
+ }
778825
+ }
778826
+ async uploadFile(filePath, metadata = {}) {
778827
+ try {
778828
+ const fileMetadata = {
778829
+ name: metadata.name || path.basename(filePath),
778830
+ parents: metadata.parents || []
778831
+ };
778832
+ const media = {
778833
+ mimeType: metadata.mimeType,
778834
+ body: fs2.createReadStream(filePath)
778835
+ };
778836
+ const response = await this.drive.files.create({
778837
+ requestBody: fileMetadata,
778838
+ media,
778839
+ fields: "id, name, mimeType, size, webViewLink"
778840
+ });
778841
+ return {
778842
+ success: true,
778843
+ data: response.data
778844
+ };
778845
+ } catch (error) {
778846
+ return {
778847
+ success: false,
778848
+ error: error instanceof Error ? error.message : "Unknown error"
778849
+ };
778850
+ }
778851
+ }
778852
+ async updateFileContent(fileId, filePath) {
778853
+ try {
778854
+ const media = {
778855
+ body: fs2.createReadStream(filePath)
778856
+ };
778857
+ const response = await this.drive.files.update({
778858
+ fileId,
778859
+ media,
778860
+ fields: "id, name, mimeType, modifiedTime"
778861
+ });
778862
+ return {
778863
+ success: true,
778864
+ data: response.data
778865
+ };
778866
+ } catch (error) {
778867
+ return {
778868
+ success: false,
778869
+ error: error instanceof Error ? error.message : "Unknown error"
778870
+ };
778871
+ }
778872
+ }
778873
+ async updateFileMetadata(fileId, metadata) {
778874
+ try {
778875
+ const response = await this.drive.files.update({
778876
+ fileId,
778877
+ requestBody: metadata,
778878
+ fields: "id, name, mimeType, modifiedTime"
778879
+ });
778880
+ return {
778881
+ success: true,
778882
+ data: response.data
778883
+ };
778884
+ } catch (error) {
778885
+ return {
778886
+ success: false,
778887
+ error: error instanceof Error ? error.message : "Unknown error"
778888
+ };
778889
+ }
778890
+ }
778891
+ async deleteFile(fileId) {
778892
+ try {
778893
+ await this.drive.files.delete({
778894
+ fileId
778895
+ });
778896
+ return {
778897
+ success: true,
778898
+ data: { message: "File deleted successfully" }
778899
+ };
778900
+ } catch (error) {
778901
+ return {
778902
+ success: false,
778903
+ error: error instanceof Error ? error.message : "Unknown error"
778904
+ };
778905
+ }
778906
+ }
778907
+ async createFolder(folderName, parentFolderId) {
778908
+ try {
778909
+ const fileMetadata = {
778910
+ name: folderName,
778911
+ mimeType: "application/vnd.google-apps.folder"
778912
+ };
778913
+ if (parentFolderId) {
778914
+ fileMetadata.parents = [parentFolderId];
778915
+ }
778916
+ const response = await this.drive.files.create({
778917
+ requestBody: fileMetadata,
778918
+ fields: "id, name, mimeType"
778919
+ });
778920
+ return {
778921
+ success: true,
778922
+ data: response.data
778923
+ };
778924
+ } catch (error) {
778925
+ return {
778926
+ success: false,
778927
+ error: error instanceof Error ? error.message : "Unknown error"
778928
+ };
778929
+ }
778930
+ }
778931
+ async searchFiles(searchQuery, pageSize = 10) {
778932
+ return this.listFiles({
778933
+ query: searchQuery,
778934
+ pageSize
778935
+ });
778936
+ }
778937
+ }
778938
+
778738
778939
  // drivers/services.ts
778739
778940
  var driveService;
778941
+ async function initDriveService(creds, tokens) {
778942
+ if (!driveService) {
778943
+ const credentials = creds ?? JSON.parse(fs3.readFileSync("./credentials.json", "utf-8"));
778944
+ driveService = new GoogleDriveService(credentials);
778945
+ const tokenData = tokens ?? JSON.parse(fs3.readFileSync("./tokens.json", "utf-8"));
778946
+ driveService.setCredentials(tokenData);
778947
+ }
778948
+ return driveService;
778949
+ }
778740
778950
 
778741
778951
  // types/index.ts
778742
778952
  var MIME_TYPES = {
@@ -778982,8 +779192,8 @@ var driveOperations = {
778982
779192
  };
778983
779193
 
778984
779194
  // auth.ts
778985
- var import_googleapis = __toESM(require_src8(), 1);
778986
- import * as fs2 from "fs";
779195
+ var import_googleapis2 = __toESM(require_src8(), 1);
779196
+ import * as fs4 from "fs";
778987
779197
  import * as http3 from "http";
778988
779198
  import * as url from "url";
778989
779199
  var CREDENTIALS_PATH = "./credentials.json";
@@ -778995,7 +779205,7 @@ async function generateCredentialsAndTokens({
778995
779205
  redirecturis,
778996
779206
  javascript_origin
778997
779207
  }) {
778998
- if (!fs2.existsSync(CREDENTIALS_PATH)) {
779208
+ if (!fs4.existsSync(CREDENTIALS_PATH)) {
778999
779209
  const baseCredentials = {
779000
779210
  web: {
779001
779211
  client_id: clientid,
@@ -779008,17 +779218,17 @@ async function generateCredentialsAndTokens({
779008
779218
  javascript_origins: javascript_origin || ["http://localhost:3000"]
779009
779219
  }
779010
779220
  };
779011
- fs2.writeFileSync(CREDENTIALS_PATH, JSON.stringify(baseCredentials, null, 2));
779221
+ fs4.writeFileSync(CREDENTIALS_PATH, JSON.stringify(baseCredentials, null, 2));
779012
779222
  console.log("✅ Created credentials.json");
779013
779223
  }
779014
- const credentials = JSON.parse(fs2.readFileSync(CREDENTIALS_PATH, "utf-8"));
779224
+ const credentials = JSON.parse(fs4.readFileSync(CREDENTIALS_PATH, "utf-8"));
779015
779225
  const creds = credentials.web || credentials.installed || credentials;
779016
779226
  const client_id = creds.client_id;
779017
779227
  const client_secret = creds.client_secret;
779018
779228
  const redirect_uri = Array.isArray(creds.redirect_uris) ? creds.redirect_uris[0] : creds.redirect_uri;
779019
- const oauth2Client = new import_googleapis.google.auth.OAuth2(client_id, client_secret, redirect_uri);
779020
- if (fs2.existsSync(TOKENS_PATH)) {
779021
- const tokens = JSON.parse(fs2.readFileSync(TOKENS_PATH, "utf-8"));
779229
+ const oauth2Client = new import_googleapis2.google.auth.OAuth2(client_id, client_secret, redirect_uri);
779230
+ if (fs4.existsSync(TOKENS_PATH)) {
779231
+ const tokens = JSON.parse(fs4.readFileSync(TOKENS_PATH, "utf-8"));
779022
779232
  oauth2Client.setCredentials(tokens);
779023
779233
  console.log("✅ Using existing tokens from tokens.json");
779024
779234
  return oauth2Client;
@@ -779047,7 +779257,7 @@ async function generateCredentialsAndTokens({
779047
779257
  throw new Error("No authorization code received");
779048
779258
  const { tokens } = await oauth2Client.getToken(code);
779049
779259
  oauth2Client.setCredentials(tokens);
779050
- fs2.writeFileSync(TOKENS_PATH, JSON.stringify(tokens, null, 2));
779260
+ fs4.writeFileSync(TOKENS_PATH, JSON.stringify(tokens, null, 2));
779051
779261
  console.log("✅ Tokens saved to tokens.json");
779052
779262
  res.writeHead(200, { "Content-Type": "text/html" });
779053
779263
  res.end(`
@@ -779089,5 +779299,6 @@ async function generateCredentialsAndTokens({
779089
779299
  }
779090
779300
  export {
779091
779301
  exports_operations as operations,
779302
+ initDriveService,
779092
779303
  generateCredentialsAndTokens
779093
779304
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gdrivekit",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "A lightweight Google Drive toolkit for File Management. Handle Google Drive operations easily — upload, download, and other file operations in a few lines of code.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",