@explorins/pers-sdk 1.6.4 → 1.6.9
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 +86 -342
- package/dist/analytics/index.d.ts +0 -16
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics.cjs +5 -73
- package/dist/analytics.cjs.map +1 -1
- package/dist/analytics.js +1 -72
- package/dist/analytics.js.map +1 -1
- package/dist/business/index.d.ts +0 -24
- package/dist/business/index.d.ts.map +1 -1
- package/dist/business.cjs +5 -273
- package/dist/business.cjs.map +1 -1
- package/dist/business.js +1 -272
- package/dist/business.js.map +1 -1
- package/dist/campaign/api/campaign-api.d.ts +3 -3
- package/dist/campaign/api/campaign-api.d.ts.map +1 -1
- package/dist/campaign/index.d.ts +0 -34
- package/dist/campaign/index.d.ts.map +1 -1
- package/dist/campaign.cjs +5 -447
- package/dist/campaign.cjs.map +1 -1
- package/dist/campaign.js +1 -446
- package/dist/campaign.js.map +1 -1
- package/dist/chunks/analytics-service-CitlimKJ.cjs +49 -0
- package/dist/chunks/analytics-service-CitlimKJ.cjs.map +1 -0
- package/dist/chunks/analytics-service-CxyrOwel.js +46 -0
- package/dist/chunks/analytics-service-CxyrOwel.js.map +1 -0
- package/dist/chunks/{token-sdk-BW4kkJb3.js → base-token-service-BSXDwrcq.js} +138 -204
- package/dist/chunks/base-token-service-BSXDwrcq.js.map +1 -0
- package/dist/chunks/{token-sdk-CiAbOb6c.cjs → base-token-service-CYuqPPs0.cjs} +140 -207
- package/dist/chunks/base-token-service-CYuqPPs0.cjs.map +1 -0
- package/dist/chunks/business-service-Cq3-oksM.cjs +241 -0
- package/dist/chunks/business-service-Cq3-oksM.cjs.map +1 -0
- package/dist/chunks/business-service-DrC-TNGa.js +238 -0
- package/dist/chunks/business-service-DrC-TNGa.js.map +1 -0
- package/dist/chunks/campaign-service-CWK9I388.cjs +403 -0
- package/dist/chunks/campaign-service-CWK9I388.cjs.map +1 -0
- package/dist/chunks/campaign-service-Dd7gMjC9.js +400 -0
- package/dist/chunks/campaign-service-Dd7gMjC9.js.map +1 -0
- package/dist/chunks/donation-service-CyJS4DIZ.js +47 -0
- package/dist/chunks/donation-service-CyJS4DIZ.js.map +1 -0
- package/dist/chunks/donation-service-D-xFrONi.cjs +50 -0
- package/dist/chunks/donation-service-D-xFrONi.cjs.map +1 -0
- package/dist/chunks/{index-CJ9Jfa4A.js → explorer.utils-Ckll15ja.js} +108 -172
- package/dist/chunks/explorer.utils-Ckll15ja.js.map +1 -0
- package/dist/chunks/{index-CzEluQmf.cjs → explorer.utils-GpskbLl1.cjs} +106 -174
- package/dist/chunks/explorer.utils-GpskbLl1.cjs.map +1 -0
- package/dist/chunks/index-BtDNXaFq.js +13 -0
- package/dist/chunks/index-BtDNXaFq.js.map +1 -0
- package/dist/chunks/index-CMk3Aqkk.cjs +15 -0
- package/dist/chunks/index-CMk3Aqkk.cjs.map +1 -0
- package/dist/chunks/payment-service-B4qx0qiE.cjs +220 -0
- package/dist/chunks/payment-service-B4qx0qiE.cjs.map +1 -0
- package/dist/chunks/payment-service-DfCBFosx.js +217 -0
- package/dist/chunks/payment-service-DfCBFosx.js.map +1 -0
- package/dist/chunks/pers-sdk-Bd6BZHgt.js +5672 -0
- package/dist/chunks/pers-sdk-Bd6BZHgt.js.map +1 -0
- package/dist/chunks/pers-sdk-CmyPEhy7.cjs +5705 -0
- package/dist/chunks/pers-sdk-CmyPEhy7.cjs.map +1 -0
- package/dist/chunks/redemption-service-7qbeQxEM.cjs +330 -0
- package/dist/chunks/redemption-service-7qbeQxEM.cjs.map +1 -0
- package/dist/chunks/redemption-service-BT0J5Iy7.js +327 -0
- package/dist/chunks/redemption-service-BT0J5Iy7.js.map +1 -0
- package/dist/chunks/tenant-service-Ba7xrWED.cjs +171 -0
- package/dist/chunks/tenant-service-Ba7xrWED.cjs.map +1 -0
- package/dist/chunks/tenant-service-DELk412y.js +168 -0
- package/dist/chunks/tenant-service-DELk412y.js.map +1 -0
- package/dist/chunks/token-service-BWScn8Qa.cjs +208 -0
- package/dist/chunks/token-service-BWScn8Qa.cjs.map +1 -0
- package/dist/chunks/token-service-CpVwC5Eb.js +205 -0
- package/dist/chunks/token-service-CpVwC5Eb.js.map +1 -0
- package/dist/chunks/user-service-D1Rn4U8u.cjs +153 -0
- package/dist/chunks/user-service-D1Rn4U8u.cjs.map +1 -0
- package/dist/chunks/user-service-D6mTa_WZ.js +150 -0
- package/dist/chunks/user-service-D6mTa_WZ.js.map +1 -0
- package/dist/chunks/{index-BfOoX87y.cjs → web3-chain-service-D75TcHkh.cjs} +28 -53
- package/dist/chunks/web3-chain-service-D75TcHkh.cjs.map +1 -0
- package/dist/chunks/{index-CM21r58m.js → web3-chain-service-Dp5Z8p9I.js} +28 -51
- package/dist/chunks/web3-chain-service-Dp5Z8p9I.js.map +1 -0
- package/dist/core/auth/api/auth-api.d.ts +11 -14
- package/dist/core/auth/api/auth-api.d.ts.map +1 -1
- package/dist/core/auth/auth-provider.interface.d.ts +36 -68
- package/dist/core/auth/auth-provider.interface.d.ts.map +1 -1
- package/dist/core/auth/default-auth-provider.d.ts +13 -59
- package/dist/core/auth/default-auth-provider.d.ts.map +1 -1
- package/dist/core/auth/index.d.ts +8 -14
- package/dist/core/auth/index.d.ts.map +1 -1
- package/dist/core/auth/refresh-manager.d.ts +15 -0
- package/dist/core/auth/refresh-manager.d.ts.map +1 -0
- package/dist/core/auth/services/auth-service.d.ts +15 -21
- package/dist/core/auth/services/auth-service.d.ts.map +1 -1
- package/dist/core/auth/token-storage.d.ts +26 -48
- package/dist/core/auth/token-storage.d.ts.map +1 -1
- package/dist/core/environment.d.ts +2 -4
- package/dist/core/environment.d.ts.map +1 -1
- package/dist/core/errors/index.d.ts +1 -5
- package/dist/core/errors/index.d.ts.map +1 -1
- package/dist/core/index.d.ts +4 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/pers-api-client.d.ts +14 -156
- package/dist/core/pers-api-client.d.ts.map +1 -1
- package/dist/core/pers-config.d.ts +13 -12
- package/dist/core/pers-config.d.ts.map +1 -1
- package/dist/core/utils/jwt.function.d.ts +9 -0
- package/dist/core/utils/jwt.function.d.ts.map +1 -1
- package/dist/core.cjs +22 -18
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +13 -14
- package/dist/core.js.map +1 -1
- package/dist/donation/index.d.ts +0 -15
- package/dist/donation/index.d.ts.map +1 -1
- package/dist/donation.cjs +5 -75
- package/dist/donation.cjs.map +1 -1
- package/dist/donation.js +1 -74
- package/dist/donation.js.map +1 -1
- package/dist/index.cjs +50 -56
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +15 -15
- package/dist/managers/analytics-manager.d.ts +290 -10
- package/dist/managers/analytics-manager.d.ts.map +1 -1
- package/dist/managers/auth-manager.d.ts +123 -23
- package/dist/managers/auth-manager.d.ts.map +1 -1
- package/dist/managers/business-manager.d.ts +273 -18
- package/dist/managers/business-manager.d.ts.map +1 -1
- package/dist/managers/campaign-manager.d.ts +585 -46
- package/dist/managers/campaign-manager.d.ts.map +1 -1
- package/dist/managers/donation-manager.d.ts +5 -5
- package/dist/managers/donation-manager.d.ts.map +1 -1
- package/dist/managers/file-manager.d.ts +430 -13
- package/dist/managers/file-manager.d.ts.map +1 -1
- package/dist/managers/purchase-manager.d.ts +340 -15
- package/dist/managers/purchase-manager.d.ts.map +1 -1
- package/dist/managers/redemption-manager.d.ts +450 -27
- package/dist/managers/redemption-manager.d.ts.map +1 -1
- package/dist/managers/tenant-manager.d.ts +5 -5
- package/dist/managers/tenant-manager.d.ts.map +1 -1
- package/dist/managers/token-manager.d.ts +245 -21
- package/dist/managers/token-manager.d.ts.map +1 -1
- package/dist/managers/transaction-manager.d.ts +447 -18
- package/dist/managers/transaction-manager.d.ts.map +1 -1
- package/dist/managers/user-manager.d.ts +216 -14
- package/dist/managers/user-manager.d.ts.map +1 -1
- package/dist/managers/web3-manager.d.ts +4 -4
- package/dist/managers/web3-manager.d.ts.map +1 -1
- package/dist/package.json +10 -4
- package/dist/payment/index.d.ts +0 -21
- package/dist/payment/index.d.ts.map +1 -1
- package/dist/payment.cjs +5 -255
- package/dist/payment.cjs.map +1 -1
- package/dist/payment.js +1 -254
- package/dist/payment.js.map +1 -1
- package/dist/pers-sdk.d.ts +141 -34
- package/dist/pers-sdk.d.ts.map +1 -1
- package/dist/redemption/index.d.ts +0 -25
- package/dist/redemption/index.d.ts.map +1 -1
- package/dist/redemption.cjs +5 -365
- package/dist/redemption.cjs.map +1 -1
- package/dist/redemption.js +1 -364
- package/dist/redemption.js.map +1 -1
- package/dist/tenant/index.d.ts +0 -22
- package/dist/tenant/index.d.ts.map +1 -1
- package/dist/tenant.cjs +5 -203
- package/dist/tenant.cjs.map +1 -1
- package/dist/tenant.js +1 -202
- package/dist/tenant.js.map +1 -1
- package/dist/token.cjs +6 -6
- package/dist/token.js +2 -2
- package/dist/transaction/index.d.ts +0 -22
- package/dist/transaction/index.d.ts.map +1 -1
- package/dist/transaction.cjs +0 -40
- package/dist/transaction.cjs.map +1 -1
- package/dist/transaction.js +1 -40
- package/dist/transaction.js.map +1 -1
- package/dist/user/index.d.ts +0 -25
- package/dist/user/index.d.ts.map +1 -1
- package/dist/user.cjs +5 -185
- package/dist/user.cjs.map +1 -1
- package/dist/user.js +1 -184
- package/dist/user.js.map +1 -1
- package/dist/web3/index.d.ts +0 -11
- package/dist/web3/index.d.ts.map +1 -1
- package/dist/web3-chain/index.d.ts +0 -9
- package/dist/web3-chain/index.d.ts.map +1 -1
- package/dist/web3-chain/services/getWeb3FCD.service.d.ts.map +1 -1
- package/dist/web3-chain.cjs +5 -6
- package/dist/web3-chain.cjs.map +1 -1
- package/dist/web3-chain.js +2 -2
- package/dist/web3.cjs +6 -10
- package/dist/web3.cjs.map +1 -1
- package/dist/web3.js +1 -4
- package/dist/web3.js.map +1 -1
- package/package.json +10 -4
- package/dist/chunks/base-token-service-D0KANDgM.js +0 -139
- package/dist/chunks/base-token-service-D0KANDgM.js.map +0 -1
- package/dist/chunks/base-token-service-zNfPjHRx.cjs +0 -141
- package/dist/chunks/base-token-service-zNfPjHRx.cjs.map +0 -1
- package/dist/chunks/index-BfOoX87y.cjs.map +0 -1
- package/dist/chunks/index-CJ9Jfa4A.js.map +0 -1
- package/dist/chunks/index-CM21r58m.js.map +0 -1
- package/dist/chunks/index-CzEluQmf.cjs.map +0 -1
- package/dist/chunks/pers-sdk-DbPwFKrf.cjs +0 -3378
- package/dist/chunks/pers-sdk-DbPwFKrf.cjs.map +0 -1
- package/dist/chunks/pers-sdk-Z6MKeFBX.js +0 -3353
- package/dist/chunks/pers-sdk-Z6MKeFBX.js.map +0 -1
- package/dist/chunks/token-sdk-BW4kkJb3.js.map +0 -1
- package/dist/chunks/token-sdk-CiAbOb6c.cjs.map +0 -1
- package/dist/core/auth/auth-constants.d.ts +0 -33
- package/dist/core/auth/auth-constants.d.ts.map +0 -1
- package/dist/core/auth/auth-errors.d.ts +0 -8
- package/dist/core/auth/auth-errors.d.ts.map +0 -1
- package/dist/core/auth/create-auth-provider.d.ts +0 -27
- package/dist/core/auth/create-auth-provider.d.ts.map +0 -1
- package/dist/core/auth/token-refresh.d.ts +0 -91
- package/dist/core/auth/token-refresh.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaign-manager.d.ts","sourceRoot":"","sources":["../../src/managers/campaign-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"campaign-manager.d.ts","sourceRoot":"","sources":["../../src/managers/campaign-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PersApiClient } from '../core/pers-api-client';
|
|
2
|
-
import {
|
|
2
|
+
import { DonationService } from '../donation';
|
|
3
3
|
import type { DonationTypeDTO } from '../shared/interfaces/pers-shared-lib.interfaces';
|
|
4
4
|
/**
|
|
5
5
|
* Donation Manager - Clean, high-level interface for donation operations
|
|
@@ -9,7 +9,7 @@ import type { DonationTypeDTO } from '../shared/interfaces/pers-shared-lib.inter
|
|
|
9
9
|
*/
|
|
10
10
|
export declare class DonationManager {
|
|
11
11
|
private apiClient;
|
|
12
|
-
private
|
|
12
|
+
private donationService;
|
|
13
13
|
constructor(apiClient: PersApiClient);
|
|
14
14
|
/**
|
|
15
15
|
* Get available donation types
|
|
@@ -18,10 +18,10 @@ export declare class DonationManager {
|
|
|
18
18
|
*/
|
|
19
19
|
getDonationTypes(): Promise<DonationTypeDTO[]>;
|
|
20
20
|
/**
|
|
21
|
-
* Get the full donation
|
|
21
|
+
* Get the full donation service for advanced operations
|
|
22
22
|
*
|
|
23
|
-
* @returns
|
|
23
|
+
* @returns DonationService instance
|
|
24
24
|
*/
|
|
25
|
-
|
|
25
|
+
getDonationService(): DonationService;
|
|
26
26
|
}
|
|
27
27
|
//# sourceMappingURL=donation-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"donation-manager.d.ts","sourceRoot":"","sources":["../../src/managers/donation-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"donation-manager.d.ts","sourceRoot":"","sources":["../../src/managers/donation-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAe,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAEvF;;;;;GAKG;AACH,qBAAa,eAAe;IAGd,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,eAAe,CAAkB;gBAErB,SAAS,EAAE,aAAa;IAK5C;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAIpD;;;;OAIG;IACH,kBAAkB,IAAI,eAAe;CAGtC"}
|
|
@@ -4,8 +4,64 @@ import type { SignedUrlRequest, FileUploadEntityType } from '../file/models';
|
|
|
4
4
|
/**
|
|
5
5
|
* File Manager - Clean, high-level interface for file operations
|
|
6
6
|
*
|
|
7
|
-
* Provides a
|
|
8
|
-
*
|
|
7
|
+
* Provides a comprehensive API for file management including secure file uploads,
|
|
8
|
+
* download URLs, media optimization, and cloud storage integration. Handles file
|
|
9
|
+
* operations for various entity types including tokens, campaigns, businesses,
|
|
10
|
+
* and user profiles with automatic security and optimization features.
|
|
11
|
+
*
|
|
12
|
+
* @group Managers
|
|
13
|
+
* @category File Management
|
|
14
|
+
*
|
|
15
|
+
* @example Basic File Upload
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // Get signed URL for uploading a campaign image
|
|
18
|
+
* const uploadUrl = await sdk.files.getSignedPutUrl(
|
|
19
|
+
* 'campaign-123',
|
|
20
|
+
* 'campaign',
|
|
21
|
+
* 'jpg'
|
|
22
|
+
* );
|
|
23
|
+
*
|
|
24
|
+
* // Upload file using the signed URL
|
|
25
|
+
* const file = document.getElementById('fileInput').files[0];
|
|
26
|
+
* const response = await fetch(uploadUrl, {
|
|
27
|
+
* method: 'PUT',
|
|
28
|
+
* body: file,
|
|
29
|
+
* headers: { 'Content-Type': file.type }
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* console.log('File uploaded successfully:', response.ok);
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @example File Access and Optimization
|
|
36
|
+
* ```typescript
|
|
37
|
+
* // Get secure download URL
|
|
38
|
+
* const downloadUrl = await sdk.files.getSignedGetUrl(
|
|
39
|
+
* 'token-456',
|
|
40
|
+
* 'token',
|
|
41
|
+
* 3600 // 1 hour expiry
|
|
42
|
+
* );
|
|
43
|
+
*
|
|
44
|
+
* // Get optimized thumbnail
|
|
45
|
+
* const thumbnail = await sdk.files.optimizeMedia(
|
|
46
|
+
* downloadUrl,
|
|
47
|
+
* 300, // width
|
|
48
|
+
* 300 // height
|
|
49
|
+
* );
|
|
50
|
+
*
|
|
51
|
+
* console.log('Thumbnail URL:', thumbnail);
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @example Advanced File Operations
|
|
55
|
+
* ```typescript
|
|
56
|
+
* // Use flexible signed URL API
|
|
57
|
+
* const customUrl = await sdk.files.getSignedUrl({
|
|
58
|
+
* operation: 'GET',
|
|
59
|
+
* entityId: 'business-789',
|
|
60
|
+
* entityType: 'business',
|
|
61
|
+
* expireSeconds: 7200,
|
|
62
|
+
* contentType: 'image/png'
|
|
63
|
+
* });
|
|
64
|
+
* ```
|
|
9
65
|
*/
|
|
10
66
|
export declare class FileManager {
|
|
11
67
|
private apiClient;
|
|
@@ -14,41 +70,402 @@ export declare class FileManager {
|
|
|
14
70
|
/**
|
|
15
71
|
* Get signed URL for file upload
|
|
16
72
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
73
|
+
* Generates a secure, time-limited URL for uploading files to cloud storage.
|
|
74
|
+
* The URL provides direct upload access while maintaining security and
|
|
75
|
+
* associating files with specific entities in the loyalty system.
|
|
76
|
+
*
|
|
77
|
+
* @param entityId - Unique identifier of the entity to associate the file with
|
|
78
|
+
* @param entityType - Type of entity ('token', 'campaign', 'business', 'user', etc.)
|
|
79
|
+
* @param fileExtension - File extension without dot (e.g., 'jpg', 'png', 'pdf')
|
|
20
80
|
* @returns Promise resolving to signed upload URL
|
|
81
|
+
* @throws {PersApiError} When entity not found or upload not authorized
|
|
82
|
+
*
|
|
83
|
+
* @example Campaign Image Upload
|
|
84
|
+
* ```typescript
|
|
85
|
+
* try {
|
|
86
|
+
* // Get signed upload URL for campaign banner
|
|
87
|
+
* const uploadUrl = await sdk.files.getSignedPutUrl(
|
|
88
|
+
* 'summer-campaign-2024',
|
|
89
|
+
* 'campaign',
|
|
90
|
+
* 'png'
|
|
91
|
+
* );
|
|
92
|
+
*
|
|
93
|
+
* console.log('Upload URL generated:', uploadUrl);
|
|
94
|
+
*
|
|
95
|
+
* // Upload file from input element
|
|
96
|
+
* const fileInput = document.getElementById('campaignBanner');
|
|
97
|
+
* const file = fileInput.files[0];
|
|
98
|
+
*
|
|
99
|
+
* if (file) {
|
|
100
|
+
* const uploadResponse = await fetch(uploadUrl, {
|
|
101
|
+
* method: 'PUT',
|
|
102
|
+
* body: file,
|
|
103
|
+
* headers: {
|
|
104
|
+
* 'Content-Type': file.type
|
|
105
|
+
* }
|
|
106
|
+
* });
|
|
107
|
+
*
|
|
108
|
+
* if (uploadResponse.ok) {
|
|
109
|
+
* console.log('✅ Campaign banner uploaded successfully');
|
|
110
|
+
* } else {
|
|
111
|
+
* console.log('❌ Upload failed:', uploadResponse.status);
|
|
112
|
+
* }
|
|
113
|
+
* }
|
|
114
|
+
*
|
|
115
|
+
* } catch (error) {
|
|
116
|
+
* console.log('Upload URL generation failed:', error.message);
|
|
117
|
+
* }
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* @example Token Logo Upload
|
|
121
|
+
* ```typescript
|
|
122
|
+
* // Upload logo for loyalty token
|
|
123
|
+
* const tokenLogoUrl = await sdk.files.getSignedPutUrl(
|
|
124
|
+
* 'loyalty-points-token',
|
|
125
|
+
* 'token',
|
|
126
|
+
* 'svg'
|
|
127
|
+
* );
|
|
128
|
+
*
|
|
129
|
+
* // Upload SVG file
|
|
130
|
+
* const svgFile = new File([svgContent], 'token-logo.svg', { type: 'image/svg+xml' });
|
|
131
|
+
* await fetch(tokenLogoUrl, {
|
|
132
|
+
* method: 'PUT',
|
|
133
|
+
* body: svgFile,
|
|
134
|
+
* headers: { 'Content-Type': 'image/svg+xml' }
|
|
135
|
+
* });
|
|
136
|
+
*
|
|
137
|
+
* console.log('Token logo uploaded');
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* @example Business Profile Image
|
|
141
|
+
* ```typescript
|
|
142
|
+
* // Upload business profile image
|
|
143
|
+
* const businessImageUrl = await sdk.files.getSignedPutUrl(
|
|
144
|
+
* 'partner-hotel-123',
|
|
145
|
+
* 'business',
|
|
146
|
+
* 'jpg'
|
|
147
|
+
* );
|
|
148
|
+
*
|
|
149
|
+
* // Handle file upload with progress tracking
|
|
150
|
+
* const file = selectedFile;
|
|
151
|
+
* const xhr = new XMLHttpRequest();
|
|
152
|
+
*
|
|
153
|
+
* xhr.upload.addEventListener('progress', (e) => {
|
|
154
|
+
* if (e.lengthComputable) {
|
|
155
|
+
* const percentComplete = (e.loaded / e.total) * 100;
|
|
156
|
+
* console.log(`Upload progress: ${percentComplete}%`);
|
|
157
|
+
* }
|
|
158
|
+
* });
|
|
159
|
+
*
|
|
160
|
+
* xhr.open('PUT', businessImageUrl);
|
|
161
|
+
* xhr.send(file);
|
|
162
|
+
* ```
|
|
21
163
|
*/
|
|
22
164
|
getSignedPutUrl(entityId: string, entityType: FileUploadEntityType, fileExtension: string): Promise<string>;
|
|
23
165
|
/**
|
|
24
166
|
* Get signed URL for file access
|
|
25
167
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
168
|
+
* Generates a secure, time-limited URL for accessing/downloading files from
|
|
169
|
+
* cloud storage. URLs automatically expire for security and can be used
|
|
170
|
+
* directly in image tags, download links, or API responses.
|
|
171
|
+
*
|
|
172
|
+
* @param entityId - Unique identifier of the entity the file is associated with
|
|
173
|
+
* @param entityType - Type of entity ('token', 'campaign', 'business', 'user', etc.)
|
|
174
|
+
* @param expireSeconds - Optional expiration time in seconds (default: 1 hour)
|
|
29
175
|
* @returns Promise resolving to signed access URL
|
|
176
|
+
* @throws {PersApiError} When entity or file not found or access denied
|
|
177
|
+
*
|
|
178
|
+
* @example Image Display
|
|
179
|
+
* ```typescript
|
|
180
|
+
* try {
|
|
181
|
+
* // Get URL for displaying token logo
|
|
182
|
+
* const logoUrl = await sdk.files.getSignedGetUrl(
|
|
183
|
+
* 'vip-status-token',
|
|
184
|
+
* 'token',
|
|
185
|
+
* 3600 // 1 hour expiry
|
|
186
|
+
* );
|
|
187
|
+
*
|
|
188
|
+
* // Use in image element
|
|
189
|
+
* const img = document.createElement('img');
|
|
190
|
+
* img.src = logoUrl;
|
|
191
|
+
* img.alt = 'VIP Status Token';
|
|
192
|
+
* img.style.width = '64px';
|
|
193
|
+
* img.style.height = '64px';
|
|
194
|
+
*
|
|
195
|
+
* document.getElementById('tokenContainer').appendChild(img);
|
|
196
|
+
*
|
|
197
|
+
* console.log('Token logo displayed');
|
|
198
|
+
*
|
|
199
|
+
* } catch (error) {
|
|
200
|
+
* console.log('Failed to load token logo:', error.message);
|
|
201
|
+
* // Show fallback image
|
|
202
|
+
* img.src = '/images/default-token.png';
|
|
203
|
+
* }
|
|
204
|
+
* ```
|
|
205
|
+
*
|
|
206
|
+
* @example File Download
|
|
207
|
+
* ```typescript
|
|
208
|
+
* // Get download URL for campaign assets
|
|
209
|
+
* const downloadUrl = await sdk.files.getSignedGetUrl(
|
|
210
|
+
* 'holiday-campaign',
|
|
211
|
+
* 'campaign',
|
|
212
|
+
* 7200 // 2 hours for download
|
|
213
|
+
* );
|
|
214
|
+
*
|
|
215
|
+
* // Create download link
|
|
216
|
+
* const link = document.createElement('a');
|
|
217
|
+
* link.href = downloadUrl;
|
|
218
|
+
* link.download = 'holiday-campaign-assets.zip';
|
|
219
|
+
* link.textContent = 'Download Campaign Assets';
|
|
220
|
+
*
|
|
221
|
+
* document.body.appendChild(link);
|
|
222
|
+
*
|
|
223
|
+
* // Or trigger immediate download
|
|
224
|
+
* link.click();
|
|
225
|
+
* ```
|
|
226
|
+
*
|
|
227
|
+
* @example Gallery Display
|
|
228
|
+
* ```typescript
|
|
229
|
+
* // Display business gallery images
|
|
230
|
+
* const businessImages = ['image1', 'image2', 'image3'];
|
|
231
|
+
* const gallery = document.getElementById('businessGallery');
|
|
232
|
+
*
|
|
233
|
+
* for (const imageId of businessImages) {
|
|
234
|
+
* try {
|
|
235
|
+
* const imageUrl = await sdk.files.getSignedGetUrl(
|
|
236
|
+
* `business-gallery-${imageId}`,
|
|
237
|
+
* 'business',
|
|
238
|
+
* 1800 // 30 minutes
|
|
239
|
+
* );
|
|
240
|
+
*
|
|
241
|
+
* const img = document.createElement('img');
|
|
242
|
+
* img.src = imageUrl;
|
|
243
|
+
* img.className = 'gallery-image';
|
|
244
|
+
* img.loading = 'lazy';
|
|
245
|
+
*
|
|
246
|
+
* gallery.appendChild(img);
|
|
247
|
+
*
|
|
248
|
+
* } catch (error) {
|
|
249
|
+
* console.log(`Failed to load image ${imageId}:`, error.message);
|
|
250
|
+
* }
|
|
251
|
+
* }
|
|
252
|
+
* ```
|
|
30
253
|
*/
|
|
31
254
|
getSignedGetUrl(entityId: string, entityType: FileUploadEntityType, expireSeconds?: number): Promise<string>;
|
|
32
255
|
/**
|
|
33
256
|
* Get signed URL for any file operation
|
|
34
257
|
*
|
|
35
|
-
*
|
|
258
|
+
* Flexible method for generating signed URLs with custom parameters for
|
|
259
|
+
* various file operations including uploads, downloads, and deletions.
|
|
260
|
+
* Provides fine-grained control over URL generation and file access permissions.
|
|
261
|
+
*
|
|
262
|
+
* @param request - Signed URL request configuration
|
|
36
263
|
* @returns Promise resolving to signed URL
|
|
264
|
+
* @throws {PersApiError} When request parameters are invalid or access denied
|
|
265
|
+
*
|
|
266
|
+
* @example Advanced Upload Configuration
|
|
267
|
+
* ```typescript
|
|
268
|
+
* // Create upload URL with specific content type and metadata
|
|
269
|
+
* const advancedUploadUrl = await sdk.files.getSignedUrl({
|
|
270
|
+
* operation: 'PUT',
|
|
271
|
+
* entityId: 'premium-nft-123',
|
|
272
|
+
* entityType: 'token',
|
|
273
|
+
* fileExtension: 'png',
|
|
274
|
+
* contentType: 'image/png',
|
|
275
|
+
* expireSeconds: 300, // 5 minutes for security
|
|
276
|
+
* metadata: {
|
|
277
|
+
* creator: 'artist-456',
|
|
278
|
+
* collection: 'premium-series',
|
|
279
|
+
* rarity: 'legendary'
|
|
280
|
+
* }
|
|
281
|
+
* });
|
|
282
|
+
*
|
|
283
|
+
* console.log('Advanced upload URL created:', advancedUploadUrl);
|
|
284
|
+
* ```
|
|
285
|
+
*
|
|
286
|
+
* @example Temporary Access URL
|
|
287
|
+
* ```typescript
|
|
288
|
+
* // Create very short-lived URL for sensitive document
|
|
289
|
+
* const secureUrl = await sdk.files.getSignedUrl({
|
|
290
|
+
* operation: 'GET',
|
|
291
|
+
* entityId: 'compliance-document-789',
|
|
292
|
+
* entityType: 'business',
|
|
293
|
+
* expireSeconds: 60, // 1 minute only
|
|
294
|
+
* accessLevel: 'admin-only'
|
|
295
|
+
* });
|
|
296
|
+
*
|
|
297
|
+
* // Use immediately
|
|
298
|
+
* window.open(secureUrl, '_blank');
|
|
299
|
+
* ```
|
|
300
|
+
*
|
|
301
|
+
* @example Batch Operations
|
|
302
|
+
* ```typescript
|
|
303
|
+
* // Generate multiple URLs for batch file operations
|
|
304
|
+
* const fileOperations = [
|
|
305
|
+
* { operation: 'GET', entityId: 'doc1', entityType: 'campaign' },
|
|
306
|
+
* { operation: 'GET', entityId: 'doc2', entityType: 'campaign' },
|
|
307
|
+
* { operation: 'PUT', entityId: 'doc3', entityType: 'campaign', fileExtension: 'pdf' }
|
|
308
|
+
* ];
|
|
309
|
+
*
|
|
310
|
+
* const urls = await Promise.all(
|
|
311
|
+
* fileOperations.map(op => sdk.files.getSignedUrl(op))
|
|
312
|
+
* );
|
|
313
|
+
*
|
|
314
|
+
* console.log('Generated batch URLs:', urls);
|
|
315
|
+
* ```
|
|
37
316
|
*/
|
|
38
317
|
getSignedUrl(request: SignedUrlRequest): Promise<string>;
|
|
39
318
|
/**
|
|
40
319
|
* Optimize media file
|
|
41
320
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
321
|
+
* Creates optimized versions of media files with automatic resizing, format
|
|
322
|
+
* conversion, and compression. Perfect for generating thumbnails, responsive
|
|
323
|
+
* images, and bandwidth-optimized content while maintaining visual quality.
|
|
324
|
+
*
|
|
325
|
+
* @param url - Original file URL (can be signed or public URL)
|
|
326
|
+
* @param width - Optional target width in pixels
|
|
327
|
+
* @param height - Optional target height in pixels
|
|
45
328
|
* @returns Promise resolving to optimized file URL
|
|
329
|
+
* @throws {PersApiError} When optimization fails or source file is invalid
|
|
330
|
+
*
|
|
331
|
+
* @example Responsive Image Sizes
|
|
332
|
+
* ```typescript
|
|
333
|
+
* // Get original campaign banner URL
|
|
334
|
+
* const originalUrl = await sdk.files.getSignedGetUrl('campaign-123', 'campaign');
|
|
335
|
+
*
|
|
336
|
+
* // Generate multiple optimized sizes
|
|
337
|
+
* const thumbnail = await sdk.files.optimizeMedia(originalUrl, 150, 150);
|
|
338
|
+
* const medium = await sdk.files.optimizeMedia(originalUrl, 400, 300);
|
|
339
|
+
* const large = await sdk.files.optimizeMedia(originalUrl, 800, 600);
|
|
340
|
+
*
|
|
341
|
+
* // Use in responsive image setup
|
|
342
|
+
* const img = document.createElement('img');
|
|
343
|
+
* img.src = medium; // Default size
|
|
344
|
+
* img.srcset = `
|
|
345
|
+
* ${thumbnail} 150w,
|
|
346
|
+
* ${medium} 400w,
|
|
347
|
+
* ${large} 800w
|
|
348
|
+
* `;
|
|
349
|
+
* img.sizes = '(max-width: 400px) 150px, (max-width: 800px) 400px, 800px';
|
|
350
|
+
*
|
|
351
|
+
* console.log('Responsive image configured');
|
|
352
|
+
* ```
|
|
353
|
+
*
|
|
354
|
+
* @example Avatar Generation
|
|
355
|
+
* ```typescript
|
|
356
|
+
* // Get user profile image and create avatars
|
|
357
|
+
* const profileUrl = await sdk.files.getSignedGetUrl('user-456', 'user');
|
|
358
|
+
*
|
|
359
|
+
* // Generate different avatar sizes
|
|
360
|
+
* const smallAvatar = await sdk.files.optimizeMedia(profileUrl, 32, 32); // Nav bar
|
|
361
|
+
* const mediumAvatar = await sdk.files.optimizeMedia(profileUrl, 64, 64); // Comments
|
|
362
|
+
* const largeAvatar = await sdk.files.optimizeMedia(profileUrl, 128, 128); // Profile page
|
|
363
|
+
*
|
|
364
|
+
* // Cache avatar URLs
|
|
365
|
+
* const avatars = {
|
|
366
|
+
* small: smallAvatar,
|
|
367
|
+
* medium: mediumAvatar,
|
|
368
|
+
* large: largeAvatar
|
|
369
|
+
* };
|
|
370
|
+
*
|
|
371
|
+
* localStorage.setItem('userAvatars', JSON.stringify(avatars));
|
|
372
|
+
* console.log('User avatars generated and cached');
|
|
373
|
+
* ```
|
|
374
|
+
*
|
|
375
|
+
* @example Product Gallery Thumbnails
|
|
376
|
+
* ```typescript
|
|
377
|
+
* // Generate thumbnails for business product gallery
|
|
378
|
+
* const productImages = await getBusinessProductImages('business-789');
|
|
379
|
+
* const thumbnails = [];
|
|
380
|
+
*
|
|
381
|
+
* for (const productImage of productImages) {
|
|
382
|
+
* try {
|
|
383
|
+
* const originalUrl = await sdk.files.getSignedGetUrl(
|
|
384
|
+
* productImage.id,
|
|
385
|
+
* 'business',
|
|
386
|
+
* 3600
|
|
387
|
+
* );
|
|
388
|
+
*
|
|
389
|
+
* const thumbnail = await sdk.files.optimizeMedia(originalUrl, 200, 200);
|
|
390
|
+
*
|
|
391
|
+
* thumbnails.push({
|
|
392
|
+
* id: productImage.id,
|
|
393
|
+
* original: originalUrl,
|
|
394
|
+
* thumbnail: thumbnail,
|
|
395
|
+
* title: productImage.title
|
|
396
|
+
* });
|
|
397
|
+
*
|
|
398
|
+
* } catch (error) {
|
|
399
|
+
* console.log(`Failed to optimize ${productImage.id}:`, error.message);
|
|
400
|
+
* }
|
|
401
|
+
* }
|
|
402
|
+
*
|
|
403
|
+
* console.log(`Generated ${thumbnails.length} product thumbnails`);
|
|
404
|
+
*
|
|
405
|
+
* // Display thumbnail gallery
|
|
406
|
+
* thumbnails.forEach(item => {
|
|
407
|
+
* const img = document.createElement('img');
|
|
408
|
+
* img.src = item.thumbnail;
|
|
409
|
+
* img.alt = item.title;
|
|
410
|
+
* img.onclick = () => showLightbox(item.original);
|
|
411
|
+
* gallery.appendChild(img);
|
|
412
|
+
* });
|
|
413
|
+
* ```
|
|
414
|
+
*
|
|
415
|
+
* @example Automatic Format Optimization
|
|
416
|
+
* ```typescript
|
|
417
|
+
* // Optimize with automatic format selection
|
|
418
|
+
* const tokenIcon = await sdk.files.getSignedGetUrl('token-123', 'token');
|
|
419
|
+
*
|
|
420
|
+
* // System automatically chooses best format (WebP, AVIF, etc.)
|
|
421
|
+
* const optimizedIcon = await sdk.files.optimizeMedia(tokenIcon, 48, 48);
|
|
422
|
+
*
|
|
423
|
+
* console.log('Optimized token icon (auto format):', optimizedIcon);
|
|
424
|
+
*
|
|
425
|
+
* // Use in token display
|
|
426
|
+
* document.querySelector('.token-icon').src = optimizedIcon;
|
|
427
|
+
* ```
|
|
46
428
|
*/
|
|
47
429
|
optimizeMedia(url: string, width?: number, height?: number): Promise<string>;
|
|
48
430
|
/**
|
|
49
431
|
* Get the full file SDK for advanced operations
|
|
50
432
|
*
|
|
51
|
-
*
|
|
433
|
+
* Provides access to the complete FileService instance for advanced file
|
|
434
|
+
* operations, batch processing, storage analytics, and operations not
|
|
435
|
+
* covered by the high-level manager methods.
|
|
436
|
+
*
|
|
437
|
+
* @returns FileService instance with full API access
|
|
438
|
+
*
|
|
439
|
+
* @example Advanced Operations
|
|
440
|
+
* ```typescript
|
|
441
|
+
* const fileSDK = sdk.files.getFileSDK();
|
|
442
|
+
*
|
|
443
|
+
* // Access storage analytics
|
|
444
|
+
* const storageStats = await fileSDK.getStorageAnalytics();
|
|
445
|
+
* console.log('Storage usage:', storageStats.totalSize);
|
|
446
|
+
*
|
|
447
|
+
* // Access batch file operations
|
|
448
|
+
* const batchResult = await fileSDK.batchDeleteFiles(['file1', 'file2', 'file3']);
|
|
449
|
+
*
|
|
450
|
+
* // Access file metadata management
|
|
451
|
+
* const metadata = await fileSDK.getFileMetadata('entity-123', 'campaign');
|
|
452
|
+
*
|
|
453
|
+
* // Access advanced optimization options
|
|
454
|
+
* const advancedOptimization = await fileSDK.optimizeMediaAdvanced(url, {
|
|
455
|
+
* width: 400,
|
|
456
|
+
* height: 300,
|
|
457
|
+
* quality: 85,
|
|
458
|
+
* format: 'webp',
|
|
459
|
+
* progressive: true,
|
|
460
|
+
* watermark: 'brand-logo'
|
|
461
|
+
* });
|
|
462
|
+
*
|
|
463
|
+
* // Access file upload monitoring
|
|
464
|
+
* const uploadProgress = fileSDK.monitorUploadProgress('upload-session-123');
|
|
465
|
+
* uploadProgress.on('progress', (percent) => {
|
|
466
|
+
* console.log(`Upload: ${percent}%`);
|
|
467
|
+
* });
|
|
468
|
+
* ```
|
|
52
469
|
*/
|
|
53
470
|
getFileSDK(): FileService;
|
|
54
471
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-manager.d.ts","sourceRoot":"","sources":["../../src/managers/file-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAiB,WAAW,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EACV,gBAAgB,EAEhB,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"file-manager.d.ts","sourceRoot":"","sources":["../../src/managers/file-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAiB,WAAW,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EACV,gBAAgB,EAEhB,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,OAAO,CAAc;gBAET,SAAS,EAAE,aAAa;IAI5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6FG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;IAIlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwFG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,oBAAoB,EAChC,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC;IAIlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6DG;IACG,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8GG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACH,UAAU,IAAI,WAAW;CAG1B"}
|