gdrivekit 1.0.3 → 1.0.5

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 +39 -1
  2. package/dist/index.js +202 -224
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -45,6 +45,7 @@ await generateCredentialsAndTokens({
45
45
  projectid: process.env.GOOGLE_PROJECT_ID!,
46
46
  clientsecret: process.env.GOOGLE_CLIENT_SECRET!,
47
47
  redirecturis: ["http://localhost:3000/oauth2callback"],
48
+ javascriptorigins: ["http://localhost:3000"],
48
49
  });
49
50
  ```
50
51
 
@@ -58,7 +59,8 @@ After that, you **don’t need to call it again** unless you delete your tokens
58
59
  Once tokens are generated, you can initialize the Google Drive service and perform file operations:
59
60
 
60
61
  ```ts
61
- import { operations, initDriveService } from "gdrivekit";
62
+ import { operations } from "gdrivekit";
63
+ import { initDriveService } from "./drivers/services";
62
64
 
63
65
  async function main() {
64
66
  initDriveService();
@@ -124,6 +126,15 @@ main();
124
126
  | `listRecentFiles()` | List recently modified or added files |
125
127
  | `listPDFs()` | List all PDF files |
126
128
  | `listImages()` | List all image files |
129
+ | `listVideos()` | List all video files |
130
+ | `listAudios()` | List all audio files |
131
+ | `listArchives()` | List all archive files |
132
+ | `listJSONs()` | List all json files |
133
+ | `listSheets()` | List all sheet files |
134
+ | `listPresentations()`| List all presentation files |
135
+ | `listDocs()` | List all docs files |
136
+
137
+
127
138
 
128
139
  ---
129
140
 
@@ -147,6 +158,14 @@ main();
147
158
 
148
159
  ---
149
160
 
161
+ ### ❴❵ **Json Operation**
162
+ | Method | Description |
163
+ | ----------------------- | ----------------------------------------- |
164
+ | `readJsonFileData()` | Read JSON file content |
165
+ | `addJsonKeyValue()` | Add a new key-value pair to a JSON file |
166
+ | `updateJsonFieldAndValues()` | Update an existing field in a JSON file |
167
+ | `deleteJsonFieldAndKeys()` | Delete a field from a JSON file |
168
+
150
169
  ### ⚡ Example: Upload a File
151
170
 
152
171
  ```ts
@@ -170,6 +189,25 @@ if (files?.data?.files?.length) {
170
189
 
171
190
  ---
172
191
 
192
+ ### ⚡ Example: Add a Key-Value Pair to a JSON File
193
+
194
+ ```ts
195
+ const fileId = "1234567890abcdef1234567890abcdef";
196
+ const addResult = await operations.addJsonKeyValue(
197
+ fileId,
198
+ "alive",
199
+ true
200
+ );
201
+
202
+ if (addResult.success) {
203
+ console.log("✅ Added new key-value pair successfully");
204
+ } else {
205
+ console.error("❌ Failed:", addResult.error);
206
+ }
207
+ ```
208
+
209
+ ---
210
+
173
211
  ### 🧑‍💻 Author
174
212
 
175
213
  **Vikash Khati**
package/dist/index.js CHANGED
@@ -778704,6 +778704,7 @@ var exports_operations = {};
778704
778704
  __export(exports_operations, {
778705
778705
  uploadMultipleFiles: () => uploadMultipleFiles,
778706
778706
  uploadFile: () => uploadFile,
778707
+ updateJsonFieldAndValues: () => updateJsonFieldAndValues,
778707
778708
  updateFile: () => updateFile,
778708
778709
  searchStarredFiles: () => searchStarredFiles,
778709
778710
  searchSharedFiles: () => searchSharedFiles,
@@ -778713,13 +778714,22 @@ __export(exports_operations, {
778713
778714
  searchByExactName: () => searchByExactName,
778714
778715
  searchByContent: () => searchByContent,
778715
778716
  renameFile: () => renameFile,
778717
+ readJsonFileData: () => readJsonFileData,
778718
+ readFileData: () => readFileData,
778716
778719
  moveFileByName: () => moveFileByName,
778717
778720
  moveFile: () => moveFile,
778721
+ listVideos: () => listVideos,
778722
+ listSheets: () => listSheets,
778718
778723
  listRecentFiles: () => listRecentFiles,
778724
+ listPresentations: () => listPresentations,
778719
778725
  listPDFs: () => listPDFs,
778726
+ listJSONs: () => listJSONs,
778720
778727
  listImages: () => listImages,
778721
778728
  listFilesInFolder: () => listFilesInFolder,
778722
778729
  listFiles: () => listFiles,
778730
+ listDocs: () => listDocs,
778731
+ listAudios: () => listAudios,
778732
+ listArchives: () => listArchives,
778723
778733
  listAllFolders: () => listAllFolders,
778724
778734
  getFolderIdByName: () => getFolderIdByName,
778725
778735
  getFileInfo: () => getFileInfo,
@@ -778729,224 +778739,16 @@ __export(exports_operations, {
778729
778739
  downloadMultipleFiles: () => downloadMultipleFiles,
778730
778740
  downloadFile: () => downloadFile,
778731
778741
  deleteMultipleFiles: () => deleteMultipleFiles,
778742
+ deleteJsonFieldAndKeys: () => deleteJsonFieldAndKeys,
778732
778743
  deleteFolder: () => deleteFolder,
778733
778744
  deleteFile: () => deleteFile,
778734
778745
  createFolder: () => createFolder,
778735
- copyFile: () => copyFile
778746
+ copyFile: () => copyFile,
778747
+ addJsonKeyValue: () => addJsonKeyValue
778736
778748
  });
778737
778749
 
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
-
778939
778750
  // drivers/services.ts
778940
778751
  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
- }
778950
778752
 
778951
778753
  // types/index.ts
778952
778754
  var MIME_TYPES = {
@@ -778962,12 +778764,15 @@ var MIME_TYPES = {
778962
778764
  POWERPOINT: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
778963
778765
  TEXT: "text/plain",
778964
778766
  CSV: "text/csv",
778767
+ JSON: "application/json",
778965
778768
  JPEG: "image/jpeg",
778966
778769
  PNG: "image/png",
778967
778770
  GIF: "image/gif",
778968
778771
  SVG: "image/svg+xml",
778969
778772
  MP4: "video/mp4",
778970
778773
  AVI: "video/x-msvideo",
778774
+ MKV: "video/x-matroska",
778775
+ WEBM: "video/webm",
778971
778776
  MP3: "audio/mpeg",
778972
778777
  WAV: "audio/wav",
778973
778778
  ZIP: "application/zip",
@@ -778975,11 +778780,19 @@ var MIME_TYPES = {
778975
778780
  };
778976
778781
 
778977
778782
  // operations.ts
778783
+ async function readFileData(fileId) {
778784
+ const response = await driveService.readFileData(fileId);
778785
+ if (response.success && response.data) {
778786
+ return typeof response.data === "string" ? response.data : response.data.toString();
778787
+ }
778788
+ throw new Error(response.error || "Failed to read file data");
778789
+ }
778978
778790
  async function uploadFile(filePath, options) {
778979
778791
  return await driveService.uploadFile(filePath, {
778980
778792
  name: options?.fileName,
778981
778793
  parents: options?.folderId ? [options.folderId] : undefined,
778982
- description: options?.description
778794
+ description: options?.description,
778795
+ mimeType: options?.mimeType
778983
778796
  });
778984
778797
  }
778985
778798
  async function downloadFile(fileId, savePath) {
@@ -779002,7 +778815,9 @@ async function moveFile(fileId, newFolderId) {
779002
778815
  if (!file.success || !file.data) {
779003
778816
  return { success: false, error: "File not found" };
779004
778817
  }
779005
- return await driveService.updateFileMetadata(fileId, { parents: [newFolderId] });
778818
+ return await driveService.updateFileMetadata(fileId, {
778819
+ parents: [newFolderId]
778820
+ });
779006
778821
  }
779007
778822
  async function moveFileByName(fileName, folderName) {
779008
778823
  const fileResult = await getFileIdByName(fileName);
@@ -779018,6 +778833,130 @@ async function moveFileByName(fileName, folderName) {
779018
778833
  async function copyFile(fileId, newName) {
779019
778834
  return await driveService.copyFile(fileId, newName ? { name: newName } : undefined);
779020
778835
  }
778836
+ async function readJsonFileData(fileId) {
778837
+ const content = await readFileData(fileId);
778838
+ try {
778839
+ return { success: true, data: JSON.parse(content) };
778840
+ } catch (error) {
778841
+ return { success: false, error: "Failed to parse JSON file content" };
778842
+ }
778843
+ }
778844
+ async function addJsonKeyValue(fileId, key, value) {
778845
+ try {
778846
+ const readResponse = await driveService.readFileData(fileId, true);
778847
+ if (!readResponse.success || !readResponse.data) {
778848
+ throw new Error(readResponse.error || "Failed to read JSON file data");
778849
+ }
778850
+ let jsonData;
778851
+ try {
778852
+ jsonData = JSON.parse(readResponse.data);
778853
+ } catch {
778854
+ throw new Error("Invalid JSON format in file");
778855
+ }
778856
+ const parts = key.split(".");
778857
+ let current = jsonData;
778858
+ for (let i2 = 0;i2 < parts.length - 1; i2++) {
778859
+ const part = parts[i2];
778860
+ if (!current[part] || typeof current[part] !== "object") {
778861
+ current[part] = {};
778862
+ }
778863
+ current = current[part];
778864
+ }
778865
+ current[parts.at(-1)] = value;
778866
+ const updateResponse = await driveService.updateJsonContent(fileId, jsonData);
778867
+ if (!updateResponse.success) {
778868
+ throw new Error(updateResponse.error || "Failed to update file");
778869
+ }
778870
+ return { success: true, data: updateResponse.data };
778871
+ } catch (error) {
778872
+ console.error("❌ Error adding key-value pair:", error.message);
778873
+ return { success: false, error: error.message };
778874
+ }
778875
+ }
778876
+ async function deleteJsonFieldAndKeys(fileId, key) {
778877
+ try {
778878
+ const readResponse = await driveService.readFileData(fileId, true);
778879
+ if (!readResponse.success || !readResponse.data) {
778880
+ throw new Error(readResponse.error || "Failed to read JSON file data");
778881
+ }
778882
+ let jsonData;
778883
+ try {
778884
+ jsonData = JSON.parse(readResponse.data);
778885
+ } catch {
778886
+ throw new Error("Invalid JSON format in file");
778887
+ }
778888
+ const parts = key.split(".");
778889
+ let current = jsonData;
778890
+ for (let i2 = 0;i2 < parts.length - 1; i2++) {
778891
+ const part = parts[i2];
778892
+ if (!current[part] || typeof current[part] !== "object") {
778893
+ throw new Error(`Key path '${key}' does not exist in JSON`);
778894
+ }
778895
+ current = current[part];
778896
+ }
778897
+ const lastKey = parts.at(-1);
778898
+ if (!(lastKey in current)) {
778899
+ throw new Error(`Key '${lastKey}' does not exist`);
778900
+ }
778901
+ delete current[lastKey];
778902
+ const updateResponse = await driveService.updateJsonContent(fileId, jsonData);
778903
+ if (!updateResponse.success) {
778904
+ throw new Error(updateResponse.error || "Failed to update file");
778905
+ }
778906
+ return { success: true, data: updateResponse.data };
778907
+ } catch (error) {
778908
+ console.error("❌ Error deleting key-value pair:", error.message);
778909
+ return { success: false, error: error.message };
778910
+ }
778911
+ }
778912
+ async function updateJsonFieldAndValues(fileId, keyPath, newKey, newValue) {
778913
+ try {
778914
+ const readResponse = await driveService.readFileData(fileId, true);
778915
+ if (!readResponse.success || !readResponse.data) {
778916
+ throw new Error(readResponse.error || "Failed to read JSON file data");
778917
+ }
778918
+ let jsonData;
778919
+ try {
778920
+ jsonData = JSON.parse(readResponse.data);
778921
+ } catch {
778922
+ throw new Error("Invalid JSON format in file");
778923
+ }
778924
+ const parts = keyPath.split(".");
778925
+ let current = jsonData;
778926
+ for (let i2 = 0;i2 < parts.length - 1; i2++) {
778927
+ const part = parts[i2];
778928
+ if (!current[part] || typeof current[part] !== "object") {
778929
+ throw new Error(`Key path '${keyPath}' does not exist in JSON`);
778930
+ }
778931
+ current = current[part];
778932
+ }
778933
+ const oldKey = parts.at(-1);
778934
+ if (!(oldKey in current)) {
778935
+ throw new Error(`Key '${oldKey}' does not exist`);
778936
+ }
778937
+ const existingValue = current[oldKey];
778938
+ const finalValue = newValue !== undefined ? newValue : existingValue;
778939
+ const finalKey = newKey && newKey !== oldKey ? newKey : oldKey;
778940
+ const rebuilt = {};
778941
+ for (const k of Object.keys(current)) {
778942
+ if (k === oldKey) {
778943
+ rebuilt[finalKey] = finalValue;
778944
+ } else {
778945
+ rebuilt[k] = current[k];
778946
+ }
778947
+ }
778948
+ Object.keys(current).forEach((k) => delete current[k]);
778949
+ Object.assign(current, rebuilt);
778950
+ const updateResponse = await driveService.updateJsonContent(fileId, jsonData);
778951
+ if (!updateResponse.success) {
778952
+ throw new Error(updateResponse.error || "Failed to update file");
778953
+ }
778954
+ return { success: true, data: updateResponse.data };
778955
+ } catch (error) {
778956
+ console.error("❌ Error updating JSON key-value:", error.message);
778957
+ return { success: false, error: error.message };
778958
+ }
778959
+ }
779021
778960
  async function createFolder(folderName, parentFolderId) {
779022
778961
  return await driveService.createFolder(folderName, parentFolderId);
779023
778962
  }
@@ -779102,7 +779041,42 @@ async function listPDFs() {
779102
779041
  }
779103
779042
  async function listImages() {
779104
779043
  return await driveService.listFiles({
779105
- query: `mimeType contains 'image/' and trashed=false`
779044
+ query: `mimeType='${MIME_TYPES.JPEG}' or mimeType='${MIME_TYPES.PNG}' or mimeType='${MIME_TYPES.GIF}' or mimeType='${MIME_TYPES.SVG}' and trashed=false`
779045
+ });
779046
+ }
779047
+ async function listVideos() {
779048
+ return await driveService.listFiles({
779049
+ query: `mimeType='${MIME_TYPES.MP4}' or mimeType='${MIME_TYPES.MKV}' or mimeType='${MIME_TYPES.WEBM}' or mimeType='${MIME_TYPES.AVI}' and trashed=false`
779050
+ });
779051
+ }
779052
+ async function listAudios() {
779053
+ return await driveService.listFiles({
779054
+ query: `mimeType='${MIME_TYPES.MP3}' or mimeType='${MIME_TYPES.WAV}' and trashed=false`
779055
+ });
779056
+ }
779057
+ async function listArchives() {
779058
+ return await driveService.listFiles({
779059
+ query: `mimeType='${MIME_TYPES.ZIP}' or mimeType='${MIME_TYPES.RAR}' and trashed=false`
779060
+ });
779061
+ }
779062
+ async function listJSONs() {
779063
+ return await driveService.listFiles({
779064
+ query: `mimeType='${MIME_TYPES.JSON}' and trashed=false`
779065
+ });
779066
+ }
779067
+ async function listSheets() {
779068
+ return await driveService.listFiles({
779069
+ query: `mimeType='${MIME_TYPES.SPREADSHEET}' and trashed=false`
779070
+ });
779071
+ }
779072
+ async function listPresentations() {
779073
+ return await driveService.listFiles({
779074
+ query: `mimeType='${MIME_TYPES.PRESENTATION}' and trashed=false`
779075
+ });
779076
+ }
779077
+ async function listDocs() {
779078
+ return await driveService.listFiles({
779079
+ query: `mimeType='${MIME_TYPES.DOCUMENT}' and trashed=false`
779106
779080
  });
779107
779081
  }
779108
779082
  async function uploadMultipleFiles(filePaths, folderId) {
@@ -779159,6 +779133,7 @@ async function getFileIdByName(fileName) {
779159
779133
  return { success: false, error: "File not found" };
779160
779134
  }
779161
779135
  var driveOperations = {
779136
+ readFileData,
779162
779137
  uploadFile,
779163
779138
  downloadFile,
779164
779139
  deleteFile,
@@ -779168,6 +779143,10 @@ var driveOperations = {
779168
779143
  moveFile,
779169
779144
  moveFileByName,
779170
779145
  copyFile,
779146
+ readJsonFileData,
779147
+ addJsonKeyValue,
779148
+ updateJsonFieldAndValues,
779149
+ deleteJsonFieldAndKeys,
779171
779150
  createFolder,
779172
779151
  deleteFolder,
779173
779152
  listAllFolders,
@@ -779192,8 +779171,8 @@ var driveOperations = {
779192
779171
  };
779193
779172
 
779194
779173
  // auth.ts
779195
- var import_googleapis2 = __toESM(require_src8(), 1);
779196
- import * as fs4 from "fs";
779174
+ var import_googleapis = __toESM(require_src8(), 1);
779175
+ import * as fs2 from "fs";
779197
779176
  import * as http3 from "http";
779198
779177
  import * as url from "url";
779199
779178
  var CREDENTIALS_PATH = "./credentials.json";
@@ -779205,7 +779184,7 @@ async function generateCredentialsAndTokens({
779205
779184
  redirecturis,
779206
779185
  javascript_origin
779207
779186
  }) {
779208
- if (!fs4.existsSync(CREDENTIALS_PATH)) {
779187
+ if (!fs2.existsSync(CREDENTIALS_PATH)) {
779209
779188
  const baseCredentials = {
779210
779189
  web: {
779211
779190
  client_id: clientid,
@@ -779218,17 +779197,17 @@ async function generateCredentialsAndTokens({
779218
779197
  javascript_origins: javascript_origin || ["http://localhost:3000"]
779219
779198
  }
779220
779199
  };
779221
- fs4.writeFileSync(CREDENTIALS_PATH, JSON.stringify(baseCredentials, null, 2));
779200
+ fs2.writeFileSync(CREDENTIALS_PATH, JSON.stringify(baseCredentials, null, 2));
779222
779201
  console.log("✅ Created credentials.json");
779223
779202
  }
779224
- const credentials = JSON.parse(fs4.readFileSync(CREDENTIALS_PATH, "utf-8"));
779203
+ const credentials = JSON.parse(fs2.readFileSync(CREDENTIALS_PATH, "utf-8"));
779225
779204
  const creds = credentials.web || credentials.installed || credentials;
779226
779205
  const client_id = creds.client_id;
779227
779206
  const client_secret = creds.client_secret;
779228
779207
  const redirect_uri = Array.isArray(creds.redirect_uris) ? creds.redirect_uris[0] : creds.redirect_uri;
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"));
779208
+ const oauth2Client = new import_googleapis.google.auth.OAuth2(client_id, client_secret, redirect_uri);
779209
+ if (fs2.existsSync(TOKENS_PATH)) {
779210
+ const tokens = JSON.parse(fs2.readFileSync(TOKENS_PATH, "utf-8"));
779232
779211
  oauth2Client.setCredentials(tokens);
779233
779212
  console.log("✅ Using existing tokens from tokens.json");
779234
779213
  return oauth2Client;
@@ -779257,7 +779236,7 @@ async function generateCredentialsAndTokens({
779257
779236
  throw new Error("No authorization code received");
779258
779237
  const { tokens } = await oauth2Client.getToken(code);
779259
779238
  oauth2Client.setCredentials(tokens);
779260
- fs4.writeFileSync(TOKENS_PATH, JSON.stringify(tokens, null, 2));
779239
+ fs2.writeFileSync(TOKENS_PATH, JSON.stringify(tokens, null, 2));
779261
779240
  console.log("✅ Tokens saved to tokens.json");
779262
779241
  res.writeHead(200, { "Content-Type": "text/html" });
779263
779242
  res.end(`
@@ -779299,6 +779278,5 @@ async function generateCredentialsAndTokens({
779299
779278
  }
779300
779279
  export {
779301
779280
  exports_operations as operations,
779302
- initDriveService,
779303
779281
  generateCredentialsAndTokens
779304
779282
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gdrivekit",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
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",