@hieuxyz/rpc 1.2.4 → 1.2.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.
@@ -1,142 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.ImageService = void 0;
40
- const axios_1 = __importDefault(require("axios"));
41
- const fs = __importStar(require("fs"));
42
- const form_data_1 = __importDefault(require("form-data"));
43
- const logger_1 = require("../utils/logger");
44
- /**
45
- * A service to handle external image proxying and local image uploading.
46
- * Interact with a backend API service to manage image assets.
47
- */
48
- class ImageService {
49
- apiClient;
50
- /**
51
- * Create an ImageService instance.
52
- * @param apiBaseUrl - The base URL of the image upload/proxy API.
53
- */
54
- constructor(apiBaseUrl = 'https://rpc.hieuxyz.fun') {
55
- this.apiClient = axios_1.default.create({
56
- baseURL: apiBaseUrl,
57
- });
58
- }
59
- /**
60
- * Get an asset key proxy for an external image URL.
61
- * @param url - URL of external image.
62
- * @returns {Promise<string | undefined>} Asset key resolved or undefined if failed.
63
- */
64
- async getExternalUrl(url) {
65
- try {
66
- const response = await this.apiClient.get('/image', { params: { url } });
67
- if (response.data && response.data.id) {
68
- return response.data.id;
69
- }
70
- }
71
- catch (error) {
72
- logger_1.logger.error(`Unable to get external proxy URL for ${url}: ${error}`);
73
- }
74
- return undefined;
75
- }
76
- /**
77
- * Upload an image from the local file system to the image service.
78
- * @param filePath - Path to the image file.
79
- * @param fileName - File name to use when uploading.
80
- * @returns {Promise<string | undefined>} Asset key resolved or undefined if failed.
81
- */
82
- async uploadImage(filePath, fileName) {
83
- try {
84
- if (!fs.existsSync(filePath)) {
85
- logger_1.logger.error(`File not found at path: ${filePath}`);
86
- return undefined;
87
- }
88
- const form = new form_data_1.default();
89
- form.append('file', fs.createReadStream(filePath));
90
- form.append('file_name', fileName);
91
- const response = await this.apiClient.post('/upload', form, {
92
- headers: {
93
- ...form.getHeaders(),
94
- },
95
- });
96
- if (response.data && response.data.id) {
97
- return response.data.id;
98
- }
99
- }
100
- catch (error) {
101
- logger_1.logger.error(`Unable to upload image ${fileName}: ${error}`);
102
- }
103
- return undefined;
104
- }
105
- /**
106
- * Requests a new signed URL for an expired or expiring attachment asset.
107
- * @param assetId The asset ID part of the URL (e.g., "channel_id/message_id/filename.ext...")
108
- * @returns {Promise<string | undefined>} The new asset key or undefined if it failed.
109
- */
110
- async renewImage(assetId) {
111
- try {
112
- const response = await this.apiClient.post('/renew', { asset_id: assetId });
113
- if (response.data && response.data.id) {
114
- logger_1.logger.info(`Successfully renewed asset: ${assetId}`);
115
- return response.data.id;
116
- }
117
- }
118
- catch (error) {
119
- const err = error;
120
- logger_1.logger.error(`Failed to renew asset ${assetId}: ${err.response?.data || err.message}`);
121
- }
122
- return undefined;
123
- }
124
- /**
125
- * Fetch all assets for a specific Discord Application.
126
- * @param applicationId - The ID of the application.
127
- * @returns {Promise<DiscordAsset[]>} List of assets (id, name, type).
128
- */
129
- async fetchApplicationAssets(applicationId) {
130
- try {
131
- const url = `https://discord.com/api/v9/oauth2/applications/${applicationId}/assets`;
132
- const response = await axios_1.default.get(url);
133
- return response.data;
134
- }
135
- catch (error) {
136
- const err = error;
137
- logger_1.logger.error(`Failed to fetch assets for application ${applicationId}: ${err.message}. Ensure the App ID is correct.`);
138
- return [];
139
- }
140
- }
141
- }
142
- exports.ImageService = ImageService;
@@ -1,69 +0,0 @@
1
- import { ImageService } from './ImageService';
2
- /**
3
- * Base abstract class for all RPC image types.
4
- */
5
- export declare abstract class RpcImage {
6
- /**
7
- * Resolve the image into an asset key that Discord can understand.
8
- * @param imageService - An instance of ImageService to handle uploads or proxies.
9
- * @returns {Promise<string | undefined>} Asset key has been resolved.
10
- */
11
- abstract resolve(imageService: ImageService): Promise<string | undefined>;
12
- /**
13
- * Gets a unique key for this image instance, used for caching.
14
- * @returns {string} A unique identifier for the image source.
15
- */
16
- abstract getCacheKey(): string;
17
- }
18
- /**
19
- * Represents an image that already exists on Discord's servers (e.g., via proxy or previous upload).
20
- */
21
- export declare class DiscordImage extends RpcImage {
22
- private imageKey;
23
- constructor(imageKey: string);
24
- resolve(): Promise<string | undefined>;
25
- getCacheKey(): string;
26
- }
27
- /**
28
- * Represents an image from an external URL.
29
- */
30
- export declare class ExternalImage extends RpcImage {
31
- private url;
32
- constructor(url: string);
33
- resolve(imageService: ImageService): Promise<string | undefined>;
34
- getCacheKey(): string;
35
- }
36
- /**
37
- * Represents an image from the local file system.
38
- * Images will be uploaded via ImageService.
39
- */
40
- export declare class LocalImage extends RpcImage {
41
- private filePath;
42
- private fileName;
43
- constructor(filePath: string, fileName?: string);
44
- resolve(imageService: ImageService): Promise<string | undefined>;
45
- getCacheKey(): string;
46
- }
47
- /**
48
- * Represents a resolved raw asset key.
49
- * No further processing required.
50
- */
51
- export declare class RawImage extends RpcImage {
52
- private assetKey;
53
- constructor(assetKey: string);
54
- resolve(__imageService: ImageService): Promise<string | undefined>;
55
- getCacheKey(): string;
56
- }
57
- /**
58
- * Represents an asset uploaded to the Discord Application (Bot Assets).
59
- * It will resolve the asset ID by matching the asset name.
60
- */
61
- export declare class ApplicationImage extends RpcImage {
62
- assetName: string;
63
- /**
64
- * @param assetName The name of the asset as defined in the Discord Developer Portal.
65
- */
66
- constructor(assetName: string);
67
- resolve(__imageService: ImageService): Promise<string | undefined>;
68
- getCacheKey(): string;
69
- }
@@ -1,136 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.ApplicationImage = exports.RawImage = exports.LocalImage = exports.ExternalImage = exports.DiscordImage = exports.RpcImage = void 0;
37
- const path = __importStar(require("path"));
38
- /**
39
- * Base abstract class for all RPC image types.
40
- */
41
- class RpcImage {
42
- }
43
- exports.RpcImage = RpcImage;
44
- /**
45
- * Represents an image that already exists on Discord's servers (e.g., via proxy or previous upload).
46
- */
47
- class DiscordImage extends RpcImage {
48
- imageKey;
49
- constructor(imageKey) {
50
- super();
51
- this.imageKey = imageKey;
52
- }
53
- async resolve() {
54
- return this.imageKey.startsWith('mp:') ? this.imageKey : `mp:${this.imageKey}`;
55
- }
56
- getCacheKey() {
57
- return `discord:${this.imageKey}`;
58
- }
59
- }
60
- exports.DiscordImage = DiscordImage;
61
- /**
62
- * Represents an image from an external URL.
63
- */
64
- class ExternalImage extends RpcImage {
65
- url;
66
- constructor(url) {
67
- super();
68
- this.url = url;
69
- }
70
- async resolve(imageService) {
71
- return imageService.getExternalUrl(this.url);
72
- }
73
- getCacheKey() {
74
- return `external:${this.url}`;
75
- }
76
- }
77
- exports.ExternalImage = ExternalImage;
78
- /**
79
- * Represents an image from the local file system.
80
- * Images will be uploaded via ImageService.
81
- */
82
- class LocalImage extends RpcImage {
83
- filePath;
84
- fileName;
85
- constructor(filePath, fileName) {
86
- super();
87
- this.filePath = filePath;
88
- this.fileName = fileName || path.basename(filePath);
89
- }
90
- async resolve(imageService) {
91
- return imageService.uploadImage(this.filePath, this.fileName);
92
- }
93
- getCacheKey() {
94
- return `local:${this.filePath}`;
95
- }
96
- }
97
- exports.LocalImage = LocalImage;
98
- /**
99
- * Represents a resolved raw asset key.
100
- * No further processing required.
101
- */
102
- class RawImage extends RpcImage {
103
- assetKey;
104
- constructor(assetKey) {
105
- super();
106
- this.assetKey = assetKey;
107
- }
108
- async resolve(__imageService) {
109
- return this.assetKey;
110
- }
111
- getCacheKey() {
112
- return `raw:${this.assetKey}`;
113
- }
114
- }
115
- exports.RawImage = RawImage;
116
- /**
117
- * Represents an asset uploaded to the Discord Application (Bot Assets).
118
- * It will resolve the asset ID by matching the asset name.
119
- */
120
- class ApplicationImage extends RpcImage {
121
- assetName;
122
- /**
123
- * @param assetName The name of the asset as defined in the Discord Developer Portal.
124
- */
125
- constructor(assetName) {
126
- super();
127
- this.assetName = assetName;
128
- }
129
- async resolve(__imageService) {
130
- return `app_asset:${this.assetName}`;
131
- }
132
- getCacheKey() {
133
- return `app_asset:${this.assetName}`;
134
- }
135
- }
136
- exports.ApplicationImage = ApplicationImage;
@@ -1,5 +0,0 @@
1
- export declare const logger: {
2
- info: (message: string) => void;
3
- warn: (message: string) => void;
4
- error: (message: string) => void;
5
- };
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logger = void 0;
4
- exports.logger = {
5
- info: (message) => console.log(`[INFO] ${new Date().toISOString()} - ${message}`),
6
- warn: (message) => console.warn(`[WARN] ${new Date().toISOString()} - ${message}`),
7
- error: (message) => console.error(`[ERROR] ${new Date().toISOString()} - ${message}`),
8
- };
package/dist/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- export { Client, ClientOptions } from './hieuxyz/Client';
2
- export { DiscordWebSocket } from './hieuxyz/gateway/DiscordWebSocket';
3
- export { HieuxyzRPC } from './hieuxyz/rpc/HieuxyzRPC';
4
- export { ImageService } from './hieuxyz/rpc/ImageService';
5
- export { RpcImage, DiscordImage, ExternalImage, LocalImage, RawImage, ApplicationImage } from './hieuxyz/rpc/RpcImage';
6
- export { logger } from './hieuxyz/utils/logger';
7
- export * from './hieuxyz/gateway/entities/types';
package/dist/index.js DELETED
@@ -1,35 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.logger = exports.ApplicationImage = exports.RawImage = exports.LocalImage = exports.ExternalImage = exports.DiscordImage = exports.RpcImage = exports.ImageService = exports.HieuxyzRPC = exports.DiscordWebSocket = exports.Client = void 0;
18
- var Client_1 = require("./hieuxyz/Client");
19
- Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return Client_1.Client; } });
20
- var DiscordWebSocket_1 = require("./hieuxyz/gateway/DiscordWebSocket");
21
- Object.defineProperty(exports, "DiscordWebSocket", { enumerable: true, get: function () { return DiscordWebSocket_1.DiscordWebSocket; } });
22
- var HieuxyzRPC_1 = require("./hieuxyz/rpc/HieuxyzRPC");
23
- Object.defineProperty(exports, "HieuxyzRPC", { enumerable: true, get: function () { return HieuxyzRPC_1.HieuxyzRPC; } });
24
- var ImageService_1 = require("./hieuxyz/rpc/ImageService");
25
- Object.defineProperty(exports, "ImageService", { enumerable: true, get: function () { return ImageService_1.ImageService; } });
26
- var RpcImage_1 = require("./hieuxyz/rpc/RpcImage");
27
- Object.defineProperty(exports, "RpcImage", { enumerable: true, get: function () { return RpcImage_1.RpcImage; } });
28
- Object.defineProperty(exports, "DiscordImage", { enumerable: true, get: function () { return RpcImage_1.DiscordImage; } });
29
- Object.defineProperty(exports, "ExternalImage", { enumerable: true, get: function () { return RpcImage_1.ExternalImage; } });
30
- Object.defineProperty(exports, "LocalImage", { enumerable: true, get: function () { return RpcImage_1.LocalImage; } });
31
- Object.defineProperty(exports, "RawImage", { enumerable: true, get: function () { return RpcImage_1.RawImage; } });
32
- Object.defineProperty(exports, "ApplicationImage", { enumerable: true, get: function () { return RpcImage_1.ApplicationImage; } });
33
- var logger_1 = require("./hieuxyz/utils/logger");
34
- Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
35
- __exportStar(require("./hieuxyz/gateway/entities/types"), exports);