squarefi-bff-api-module 1.31.6 → 1.32.1

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 (79) hide show
  1. package/package.json +10 -3
  2. package/src/api/types/autogen/apiV2.types.ts +117 -2
  3. package/tsconfig.json +3 -3
  4. package/dist/api/auth.d.ts +0 -29
  5. package/dist/api/auth.js +0 -76
  6. package/dist/api/bank-data.d.ts +0 -4
  7. package/dist/api/bank-data.js +0 -9
  8. package/dist/api/counterparties.d.ts +0 -14
  9. package/dist/api/counterparties.js +0 -48
  10. package/dist/api/developer.d.ts +0 -12
  11. package/dist/api/developer.js +0 -15
  12. package/dist/api/exchange.d.ts +0 -14
  13. package/dist/api/exchange.js +0 -23
  14. package/dist/api/frontend.d.ts +0 -11
  15. package/dist/api/frontend.js +0 -14
  16. package/dist/api/index.d.ts +0 -38
  17. package/dist/api/index.js +0 -39
  18. package/dist/api/issuing.d.ts +0 -64
  19. package/dist/api/issuing.js +0 -157
  20. package/dist/api/kyc.d.ts +0 -21
  21. package/dist/api/kyc.js +0 -24
  22. package/dist/api/list.d.ts +0 -16
  23. package/dist/api/list.js +0 -19
  24. package/dist/api/orders.d.ts +0 -49
  25. package/dist/api/orders.js +0 -107
  26. package/dist/api/persona.d.ts +0 -7
  27. package/dist/api/persona.js +0 -10
  28. package/dist/api/storage.d.ts +0 -8
  29. package/dist/api/storage.js +0 -19
  30. package/dist/api/tenants.d.ts +0 -6
  31. package/dist/api/tenants.js +0 -9
  32. package/dist/api/totp.d.ts +0 -17
  33. package/dist/api/totp.js +0 -48
  34. package/dist/api/types/autogen/apiV2.types.d.ts +0 -4729
  35. package/dist/api/types/autogen/apiV2.types.js +0 -6
  36. package/dist/api/types/types.d.ts +0 -2258
  37. package/dist/api/types/types.js +0 -2
  38. package/dist/api/user.d.ts +0 -18
  39. package/dist/api/user.js +0 -21
  40. package/dist/api/virtual-accounts.d.ts +0 -9
  41. package/dist/api/virtual-accounts.js +0 -26
  42. package/dist/api/wallets.d.ts +0 -24
  43. package/dist/api/wallets.js +0 -56
  44. package/dist/constants.d.ts +0 -303
  45. package/dist/constants.js +0 -335
  46. package/dist/hooks/index.d.ts +0 -3
  47. package/dist/hooks/index.js +0 -19
  48. package/dist/hooks/useCalc.d.ts +0 -25
  49. package/dist/hooks/useCalc.js +0 -129
  50. package/dist/hooks/useFileUpload.d.ts +0 -49
  51. package/dist/hooks/useFileUpload.js +0 -113
  52. package/dist/hooks/useSupabaseSubscription/config.d.ts +0 -2
  53. package/dist/hooks/useSupabaseSubscription/config.js +0 -9
  54. package/dist/hooks/useSupabaseSubscription/index.d.ts +0 -3
  55. package/dist/hooks/useSupabaseSubscription/index.js +0 -7
  56. package/dist/hooks/useSupabaseSubscription/specialized.d.ts +0 -5
  57. package/dist/hooks/useSupabaseSubscription/specialized.js +0 -21
  58. package/dist/hooks/useSupabaseSubscription/types.d.ts +0 -16
  59. package/dist/hooks/useSupabaseSubscription/types.js +0 -2
  60. package/dist/hooks/useSupabaseSubscription/useSupabaseSubscription.d.ts +0 -5
  61. package/dist/hooks/useSupabaseSubscription/useSupabaseSubscription.js +0 -36
  62. package/dist/hooks/useUserFiles.d.ts +0 -49
  63. package/dist/hooks/useUserFiles.js +0 -118
  64. package/dist/index.d.ts +0 -7
  65. package/dist/index.js +0 -26
  66. package/dist/utils/apiClientFactory.d.ts +0 -31
  67. package/dist/utils/apiClientFactory.js +0 -155
  68. package/dist/utils/converters.d.ts +0 -1
  69. package/dist/utils/converters.js +0 -5
  70. package/dist/utils/encrypt.d.ts +0 -10
  71. package/dist/utils/encrypt.js +0 -95
  72. package/dist/utils/fileStorage.d.ts +0 -113
  73. package/dist/utils/fileStorage.js +0 -344
  74. package/dist/utils/storage.d.ts +0 -3
  75. package/dist/utils/storage.js +0 -30
  76. package/dist/utils/supabase.d.ts +0 -1
  77. package/dist/utils/supabase.js +0 -15
  78. package/dist/utils/tokensFactory.d.ts +0 -12
  79. package/dist/utils/tokensFactory.js +0 -60
@@ -1,95 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.makeSecureRequest = exports.decryptAESData = exports.generateSecretKey = void 0;
16
- const crypto_1 = __importDefault(require("crypto"));
17
- const node_rsa_1 = __importDefault(require("node-rsa"));
18
- const generateSecretKey = () => {
19
- const secretKey = crypto_1.default.randomBytes(32);
20
- return secretKey;
21
- };
22
- exports.generateSecretKey = generateSecretKey;
23
- const decryptAESData = (encryptedData, iv, secretKey) => __awaiter(void 0, void 0, void 0, function* () {
24
- const decipher = crypto_1.default.createDecipheriv('aes-256-cbc', secretKey, Buffer.from(iv, 'base64'));
25
- let decrypted = decipher.update(encryptedData, 'base64', 'utf8');
26
- decrypted += decipher.final('utf8');
27
- return JSON.parse(decrypted);
28
- });
29
- exports.decryptAESData = decryptAESData;
30
- /**
31
- * Очищает и валидирует публичный RSA ключ
32
- * Исправляет ошибку InvalidAsn1Error: encoding too long
33
- * путем удаления лишних символов и нормализации переносов строк
34
- */
35
- const cleanAndValidatePublicKey = (publicKey) => {
36
- try {
37
- // Декодируем base64 ключ
38
- const publicKeyBase64 = Buffer.from(publicKey, 'base64').toString('utf8');
39
- // Удаляем лишние символы (переносы строк, пробелы в начале и конце)
40
- // Нормализуем переносы строк для корректной обработки ASN.1
41
- const cleanedKey = publicKeyBase64.trim().replace(/\r?\n|\r/g, '\n');
42
- // Проверяем, что ключ содержит необходимые маркеры
43
- if (!cleanedKey.includes('BEGIN') || !cleanedKey.includes('END')) {
44
- throw new Error('Invalid public key format: missing BEGIN/END markers');
45
- }
46
- return cleanedKey;
47
- }
48
- catch (error) {
49
- throw new Error(`Invalid public key format: ${error instanceof Error ? error.message : 'Unknown error'}`);
50
- }
51
- };
52
- /**
53
- * Автоматически определяет формат RSA ключа по заголовку
54
- * Помогает избежать ошибок импорта при неправильном указании формата
55
- */
56
- const detectKeyFormat = (key) => {
57
- if (key.includes('BEGIN RSA PUBLIC KEY')) {
58
- return 'pkcs1';
59
- }
60
- else if (key.includes('BEGIN PUBLIC KEY')) {
61
- return 'pkcs8';
62
- }
63
- // По умолчанию возвращаем pkcs8, как было ранее
64
- return 'pkcs8';
65
- };
66
- const makeSecureRequest = (_a) => __awaiter(void 0, [_a], void 0, function* ({ callback, publicKey }) {
67
- const clientRsa = new node_rsa_1.default();
68
- try {
69
- // Очищаем и валидируем публичный ключ
70
- const cleanedPublicKey = cleanAndValidatePublicKey(publicKey);
71
- // Определяем формат ключа автоматически
72
- const keyFormat = detectKeyFormat(cleanedPublicKey);
73
- // Импортируем ключ с правильным форматом
74
- clientRsa.importKey(cleanedPublicKey, `${keyFormat}-public-pem`);
75
- }
76
- catch (error) {
77
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
78
- throw new Error(`Failed to import RSA public key: ${errorMessage}`);
79
- }
80
- const clientSecretKey = (0, exports.generateSecretKey)();
81
- const clientPayload = {
82
- key: clientSecretKey.toString('base64'),
83
- timestamp: Date.now(),
84
- };
85
- const encrypted_key = clientRsa.encrypt(JSON.stringify(clientPayload), 'base64');
86
- const { success, encrypted, data, iv } = yield callback({ encrypted_key });
87
- if (success && encrypted && data && iv) {
88
- const decryptedData = yield (0, exports.decryptAESData)(data, iv, clientSecretKey);
89
- return decryptedData.data;
90
- }
91
- else {
92
- throw new Error('Failed to get encrypted secret key');
93
- }
94
- });
95
- exports.makeSecureRequest = makeSecureRequest;
@@ -1,113 +0,0 @@
1
- /**
2
- * Типы для работы с файловым хранилищем
3
- */
4
- export interface UploadFileOptions {
5
- file: File | Blob;
6
- fileName: string;
7
- bucket: string;
8
- folder?: string;
9
- contentType?: string;
10
- cacheControl?: string;
11
- upsert?: boolean;
12
- authToken?: string;
13
- }
14
- export interface UploadFileResult {
15
- success: boolean;
16
- publicUrl?: string;
17
- signedUrl?: string;
18
- path?: string;
19
- error?: string;
20
- }
21
- export interface GetFileUrlOptions {
22
- path: string;
23
- bucket: string;
24
- expiresIn?: number;
25
- authToken?: string;
26
- }
27
- /**
28
- * Названия бакетов по умолчанию
29
- */
30
- export declare const ORDER_DOCS_BUCKET = "order_docs";
31
- /**
32
- * Загружает файл в Supabase Storage
33
- * Файл сохраняется по пути: {folder}/{fileName} или {fileName}
34
- *
35
- * Папки создаются автоматически при загрузке файла, если их не существует.
36
- * Можно указывать вложенные папки через слэш: 'images/avatars/2024'
37
- *
38
- * @param options - параметры загрузки файла
39
- * @param options.folder - опциональная папка внутри бакета (например, 'documents', 'images/avatars')
40
- * @returns результат загрузки с ссылкой на файл
41
- */
42
- export declare const uploadFile: (options: UploadFileOptions) => Promise<UploadFileResult>;
43
- /**
44
- * Получает подписанный URL для доступа к файлу
45
- *
46
- * @param options - параметры получения URL
47
- * @returns подписанный URL или null при ошибке
48
- */
49
- export declare const getSignedUrl: (options: GetFileUrlOptions) => Promise<string | null>;
50
- /**
51
- * Получает публичный URL для файла
52
- *
53
- * Для ПРИВАТНЫХ бакетов:
54
- * - URL постоянный (не истекает)
55
- * - Требует Authorization header с service role key для доступа
56
- * - Используется на backend для суперадмина
57
- *
58
- * Для ПУБЛИЧНЫХ бакетов:
59
- * - URL доступен всем без аутентификации
60
- *
61
- * @example Backend usage for private buckets:
62
- * ```typescript
63
- * const url = getPublicUrl(filePath, bucket);
64
- *
65
- * // Access with service role key:
66
- * fetch(url, {
67
- * headers: {
68
- * 'Authorization': `Bearer ${SUPABASE_SERVICE_ROLE_KEY}`
69
- * }
70
- * })
71
- * ```
72
- *
73
- * @param path - путь к файлу
74
- * @param bucket - название бакета
75
- * @returns постоянный URL
76
- */
77
- export declare const getPublicUrl: (path: string, bucket: string) => string | null;
78
- /**
79
- * Удаляет файл из хранилища
80
- *
81
- * @param path - путь к файлу
82
- * @param bucket - название бакета
83
- * @param authToken - JWT token для авторизации
84
- * @returns true при успешном удалении
85
- */
86
- export declare const deleteFile: (path: string, bucket: string, authToken?: string) => Promise<boolean>;
87
- /**
88
- * Удаляет несколько файлов из хранилища
89
- *
90
- * @param paths - массив путей к файлам
91
- * @param bucket - название бакета
92
- * @param authToken - JWT token для авторизации
93
- * @returns true при успешном удалении всех файлов
94
- */
95
- export declare const deleteFiles: (paths: string[], bucket: string, authToken?: string) => Promise<boolean>;
96
- /**
97
- * Получает список файлов пользователя
98
- *
99
- * @param userId - ID пользователя
100
- * @param bucket - название бакета
101
- * @param authToken - JWT token для авторизации
102
- * @returns список файлов или пустой массив при ошибке
103
- */
104
- export declare const listUserFiles: (userId: string, bucket: string, authToken?: string) => Promise<import("@supabase/storage-js").FileObject[]>;
105
- /**
106
- * Скачивает файл из хранилища
107
- *
108
- * @param path - путь к файлу
109
- * @param bucket - название бакета
110
- * @param authToken - JWT token для авторизации
111
- * @returns Blob файла или null при ошибке
112
- */
113
- export declare const downloadFile: (path: string, bucket: string, authToken?: string) => Promise<Blob | null>;
@@ -1,344 +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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
- return new (P || (P = Promise))(function (resolve, reject) {
38
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
- step((generator = generator.apply(thisArg, _arguments || [])).next());
42
- });
43
- };
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.downloadFile = exports.listUserFiles = exports.deleteFiles = exports.deleteFile = exports.getPublicUrl = exports.getSignedUrl = exports.uploadFile = exports.ORDER_DOCS_BUCKET = void 0;
46
- const supabase_1 = require("./supabase");
47
- /**
48
- * Названия бакетов по умолчанию
49
- */
50
- exports.ORDER_DOCS_BUCKET = 'order_docs';
51
- /**
52
- * Загружает файл в Supabase Storage
53
- * Файл сохраняется по пути: {folder}/{fileName} или {fileName}
54
- *
55
- * Папки создаются автоматически при загрузке файла, если их не существует.
56
- * Можно указывать вложенные папки через слэш: 'images/avatars/2024'
57
- *
58
- * @param options - параметры загрузки файла
59
- * @param options.folder - опциональная папка внутри бакета (например, 'documents', 'images/avatars')
60
- * @returns результат загрузки с ссылкой на файл
61
- */
62
- const uploadFile = (options) => __awaiter(void 0, void 0, void 0, function* () {
63
- const { file, fileName, bucket, folder, contentType, cacheControl = '3600', upsert = false, authToken } = options;
64
- if (!supabase_1.supabaseClient) {
65
- return {
66
- success: false,
67
- error: 'Supabase client is not initialized',
68
- };
69
- }
70
- try {
71
- // Если передан authToken, создаем клиент с токеном
72
- let client = supabase_1.supabaseClient;
73
- if (authToken) {
74
- const { createClient } = yield Promise.resolve().then(() => __importStar(require('@supabase/supabase-js')));
75
- client = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_PUBLIC_KEY, {
76
- global: {
77
- headers: {
78
- Authorization: `Bearer ${authToken}`,
79
- },
80
- },
81
- });
82
- }
83
- // Формируем путь к файлу: folder/fileName или fileName
84
- const filePath = folder ? `${folder}/${fileName}` : fileName;
85
- const { data, error } = yield client.storage.from(bucket).upload(filePath, file, {
86
- contentType,
87
- cacheControl,
88
- upsert,
89
- });
90
- if (error) {
91
- console.error('Error uploading file:', error);
92
- return {
93
- success: false,
94
- error: error.message,
95
- };
96
- }
97
- // Получаем публичный URL
98
- const { data: urlData } = client.storage.from(bucket).getPublicUrl(data.path);
99
- // Получаем подписанный URL (действителен 1 час по умолчанию)
100
- const { data: signedUrlData, error: signedUrlError } = yield client.storage
101
- .from(bucket)
102
- .createSignedUrl(data.path, 3600);
103
- return {
104
- success: true,
105
- publicUrl: urlData.publicUrl,
106
- signedUrl: signedUrlError ? undefined : signedUrlData.signedUrl,
107
- path: data.path,
108
- };
109
- }
110
- catch (error) {
111
- console.error('Unexpected error uploading file:', error);
112
- return {
113
- success: false,
114
- error: error instanceof Error ? error.message : 'Unknown error',
115
- };
116
- }
117
- });
118
- exports.uploadFile = uploadFile;
119
- /**
120
- * Получает подписанный URL для доступа к файлу
121
- *
122
- * @param options - параметры получения URL
123
- * @returns подписанный URL или null при ошибке
124
- */
125
- const getSignedUrl = (options) => __awaiter(void 0, void 0, void 0, function* () {
126
- const { path, bucket, expiresIn = 3600, authToken } = options;
127
- if (!supabase_1.supabaseClient) {
128
- console.error('Supabase client is not initialized');
129
- return null;
130
- }
131
- try {
132
- // Если передан authToken, создаем клиент с токеном
133
- let client = supabase_1.supabaseClient;
134
- if (authToken) {
135
- const { createClient } = yield Promise.resolve().then(() => __importStar(require('@supabase/supabase-js')));
136
- client = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_PUBLIC_KEY, {
137
- global: {
138
- headers: {
139
- Authorization: `Bearer ${authToken}`,
140
- },
141
- },
142
- });
143
- }
144
- const { data, error } = yield client.storage.from(bucket).createSignedUrl(path, expiresIn);
145
- if (error) {
146
- console.error('Error creating signed URL:', error);
147
- return null;
148
- }
149
- return data.signedUrl;
150
- }
151
- catch (error) {
152
- console.error('Unexpected error creating signed URL:', error);
153
- return null;
154
- }
155
- });
156
- exports.getSignedUrl = getSignedUrl;
157
- /**
158
- * Получает публичный URL для файла
159
- *
160
- * Для ПРИВАТНЫХ бакетов:
161
- * - URL постоянный (не истекает)
162
- * - Требует Authorization header с service role key для доступа
163
- * - Используется на backend для суперадмина
164
- *
165
- * Для ПУБЛИЧНЫХ бакетов:
166
- * - URL доступен всем без аутентификации
167
- *
168
- * @example Backend usage for private buckets:
169
- * ```typescript
170
- * const url = getPublicUrl(filePath, bucket);
171
- *
172
- * // Access with service role key:
173
- * fetch(url, {
174
- * headers: {
175
- * 'Authorization': `Bearer ${SUPABASE_SERVICE_ROLE_KEY}`
176
- * }
177
- * })
178
- * ```
179
- *
180
- * @param path - путь к файлу
181
- * @param bucket - название бакета
182
- * @returns постоянный URL
183
- */
184
- const getPublicUrl = (path, bucket) => {
185
- if (!supabase_1.supabaseClient) {
186
- console.error('Supabase client is not initialized');
187
- return null;
188
- }
189
- const { data } = supabase_1.supabaseClient.storage.from(bucket).getPublicUrl(path);
190
- return data.publicUrl;
191
- };
192
- exports.getPublicUrl = getPublicUrl;
193
- /**
194
- * Удаляет файл из хранилища
195
- *
196
- * @param path - путь к файлу
197
- * @param bucket - название бакета
198
- * @param authToken - JWT token для авторизации
199
- * @returns true при успешном удалении
200
- */
201
- const deleteFile = (path, bucket, authToken) => __awaiter(void 0, void 0, void 0, function* () {
202
- if (!supabase_1.supabaseClient) {
203
- console.error('Supabase client is not initialized');
204
- return false;
205
- }
206
- try {
207
- let client = supabase_1.supabaseClient;
208
- if (authToken) {
209
- const { createClient } = yield Promise.resolve().then(() => __importStar(require('@supabase/supabase-js')));
210
- client = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_PUBLIC_KEY, {
211
- global: {
212
- headers: {
213
- Authorization: `Bearer ${authToken}`,
214
- },
215
- },
216
- });
217
- }
218
- const { error } = yield client.storage.from(bucket).remove([path]);
219
- if (error) {
220
- console.error('Error deleting file:', error);
221
- return false;
222
- }
223
- return true;
224
- }
225
- catch (error) {
226
- console.error('Unexpected error deleting file:', error);
227
- return false;
228
- }
229
- });
230
- exports.deleteFile = deleteFile;
231
- /**
232
- * Удаляет несколько файлов из хранилища
233
- *
234
- * @param paths - массив путей к файлам
235
- * @param bucket - название бакета
236
- * @param authToken - JWT token для авторизации
237
- * @returns true при успешном удалении всех файлов
238
- */
239
- const deleteFiles = (paths, bucket, authToken) => __awaiter(void 0, void 0, void 0, function* () {
240
- if (!supabase_1.supabaseClient) {
241
- console.error('Supabase client is not initialized');
242
- return false;
243
- }
244
- try {
245
- let client = supabase_1.supabaseClient;
246
- if (authToken) {
247
- const { createClient } = yield Promise.resolve().then(() => __importStar(require('@supabase/supabase-js')));
248
- client = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_PUBLIC_KEY, {
249
- global: {
250
- headers: {
251
- Authorization: `Bearer ${authToken}`,
252
- },
253
- },
254
- });
255
- }
256
- const { error } = yield client.storage.from(bucket).remove(paths);
257
- if (error) {
258
- console.error('Error deleting files:', error);
259
- return false;
260
- }
261
- return true;
262
- }
263
- catch (error) {
264
- console.error('Unexpected error deleting files:', error);
265
- return false;
266
- }
267
- });
268
- exports.deleteFiles = deleteFiles;
269
- /**
270
- * Получает список файлов пользователя
271
- *
272
- * @param userId - ID пользователя
273
- * @param bucket - название бакета
274
- * @param authToken - JWT token для авторизации
275
- * @returns список файлов или пустой массив при ошибке
276
- */
277
- const listUserFiles = (userId, bucket, authToken) => __awaiter(void 0, void 0, void 0, function* () {
278
- if (!supabase_1.supabaseClient) {
279
- console.error('Supabase client is not initialized');
280
- return [];
281
- }
282
- try {
283
- let client = supabase_1.supabaseClient;
284
- if (authToken) {
285
- const { createClient } = yield Promise.resolve().then(() => __importStar(require('@supabase/supabase-js')));
286
- client = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_PUBLIC_KEY, {
287
- global: {
288
- headers: {
289
- Authorization: `Bearer ${authToken}`,
290
- },
291
- },
292
- });
293
- }
294
- const { data, error } = yield client.storage.from(bucket).list(userId);
295
- if (error) {
296
- console.error('Error listing files:', error);
297
- return [];
298
- }
299
- return data || [];
300
- }
301
- catch (error) {
302
- console.error('Unexpected error listing files:', error);
303
- return [];
304
- }
305
- });
306
- exports.listUserFiles = listUserFiles;
307
- /**
308
- * Скачивает файл из хранилища
309
- *
310
- * @param path - путь к файлу
311
- * @param bucket - название бакета
312
- * @param authToken - JWT token для авторизации
313
- * @returns Blob файла или null при ошибке
314
- */
315
- const downloadFile = (path, bucket, authToken) => __awaiter(void 0, void 0, void 0, function* () {
316
- if (!supabase_1.supabaseClient) {
317
- console.error('Supabase client is not initialized');
318
- return null;
319
- }
320
- try {
321
- let client = supabase_1.supabaseClient;
322
- if (authToken) {
323
- const { createClient } = yield Promise.resolve().then(() => __importStar(require('@supabase/supabase-js')));
324
- client = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_PUBLIC_KEY, {
325
- global: {
326
- headers: {
327
- Authorization: `Bearer ${authToken}`,
328
- },
329
- },
330
- });
331
- }
332
- const { data, error } = yield client.storage.from(bucket).download(path);
333
- if (error) {
334
- console.error('Error downloading file:', error);
335
- return null;
336
- }
337
- return data;
338
- }
339
- catch (error) {
340
- console.error('Unexpected error downloading file:', error);
341
- return null;
342
- }
343
- });
344
- exports.downloadFile = downloadFile;
@@ -1,3 +0,0 @@
1
- export declare const getFromLocalStorage: (key: string) => string | null;
2
- export declare const setToLocalStorage: (key: string, value: string) => void;
3
- export declare const deleteFromLocalStorage: (key: string) => void;
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deleteFromLocalStorage = exports.setToLocalStorage = exports.getFromLocalStorage = void 0;
4
- const getFromLocalStorage = (key) => {
5
- if (typeof window === 'undefined') {
6
- // eslint-disable-next-line no-console
7
- // console.error('call getFromLocalStorage in server side');
8
- return null;
9
- }
10
- return localStorage.getItem(key);
11
- };
12
- exports.getFromLocalStorage = getFromLocalStorage;
13
- const setToLocalStorage = (key, value) => {
14
- if (typeof window === 'undefined') {
15
- // eslint-disable-next-line no-console
16
- console.error('call setToLocalStorage in server side');
17
- return;
18
- }
19
- localStorage.setItem(key, value);
20
- };
21
- exports.setToLocalStorage = setToLocalStorage;
22
- const deleteFromLocalStorage = (key) => {
23
- if (typeof window === 'undefined') {
24
- // eslint-disable-next-line no-console
25
- console.error('call deleteFromLocalStorage in server side');
26
- return;
27
- }
28
- localStorage.removeItem(key);
29
- };
30
- exports.deleteFromLocalStorage = deleteFromLocalStorage;
@@ -1 +0,0 @@
1
- export declare const supabaseClient: import("@supabase/supabase-js").SupabaseClient<any, "public", any> | null;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.supabaseClient = void 0;
4
- const supabase_js_1 = require("@supabase/supabase-js");
5
- // Создаем клиент только если есть необходимые environment переменные
6
- const createSupabaseClient = () => {
7
- const supabaseUrl = process.env.SUPABASE_URL;
8
- const supabasePublicKey = process.env.SUPABASE_PUBLIC_KEY;
9
- if (!supabaseUrl || !supabasePublicKey) {
10
- console.warn('Supabase environment variables are missing. Client will not be created.');
11
- return null;
12
- }
13
- return (0, supabase_js_1.createClient)(supabaseUrl, supabasePublicKey);
14
- };
15
- exports.supabaseClient = createSupabaseClient();
@@ -1,12 +0,0 @@
1
- type ITokens = {
2
- access_token: string;
3
- refresh_token?: string | null;
4
- };
5
- export declare function setTokens({ access_token, refresh_token }: ITokens): void;
6
- export declare function deleteTokens(): void;
7
- export declare function refreshTokens(): Promise<ITokens>;
8
- export declare function getTokens(): {
9
- access_token: string | null;
10
- refresh_token: string | null;
11
- };
12
- export {};
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.setTokens = setTokens;
13
- exports.deleteTokens = deleteTokens;
14
- exports.refreshTokens = refreshTokens;
15
- exports.getTokens = getTokens;
16
- const sdk_react_1 = require("@telegram-apps/sdk-react");
17
- const storage_1 = require("./storage");
18
- const auth_1 = require("../api/auth");
19
- function setTokens({ access_token, refresh_token }) {
20
- access_token && (0, storage_1.setToLocalStorage)('access_token', access_token);
21
- refresh_token && (0, storage_1.setToLocalStorage)('refresh_token', refresh_token);
22
- }
23
- function deleteTokens() {
24
- (0, storage_1.deleteFromLocalStorage)('access_token');
25
- (0, storage_1.deleteFromLocalStorage)('refresh_token');
26
- }
27
- function refreshTokens() {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- var _a;
30
- const refresh_token = (0, storage_1.getFromLocalStorage)('refresh_token');
31
- if (refresh_token) {
32
- const refreshResponse = yield auth_1.auth.refresh.refresh_token({ refresh_token });
33
- setTokens(refreshResponse);
34
- return refreshResponse;
35
- }
36
- if ((0, sdk_react_1.isTMA)()) {
37
- sdk_react_1.initData.restore();
38
- const tg_id = (_a = sdk_react_1.initData.user()) === null || _a === void 0 ? void 0 : _a.id;
39
- const hash = sdk_react_1.initData.hash();
40
- const init_data_raw = sdk_react_1.initData.raw();
41
- if (!tg_id || !hash || !init_data_raw) {
42
- return Promise.reject(new Error('No TG ID, hash or init data raw found in tokensFactory'));
43
- }
44
- const telegramSignInResponse = yield auth_1.auth.signin.telegram({
45
- tg_id: tg_id.toString(),
46
- hash,
47
- init_data_raw,
48
- });
49
- setTokens(telegramSignInResponse);
50
- return telegramSignInResponse;
51
- }
52
- return Promise.reject(new Error('No refresh token found'));
53
- });
54
- }
55
- function getTokens() {
56
- return {
57
- access_token: (0, storage_1.getFromLocalStorage)('access_token'),
58
- refresh_token: (0, storage_1.getFromLocalStorage)('refresh_token'),
59
- };
60
- }