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.
- package/README.md +1 -2
- package/dist/index.js +220 -9
- 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
|
|
778986
|
-
import * as
|
|
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 (!
|
|
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
|
-
|
|
779221
|
+
fs4.writeFileSync(CREDENTIALS_PATH, JSON.stringify(baseCredentials, null, 2));
|
|
779012
779222
|
console.log("✅ Created credentials.json");
|
|
779013
779223
|
}
|
|
779014
|
-
const credentials = JSON.parse(
|
|
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
|
|
779020
|
-
if (
|
|
779021
|
-
const tokens = JSON.parse(
|
|
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
|
-
|
|
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.
|
|
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",
|