@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
package/README.md
CHANGED
|
@@ -3,18 +3,9 @@
|
|
|
3
3
|
[](https://badge.fury.io/js/%40explorins%2Fpers-sdk)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
Platform-agnostic TypeScript SDK for PERS (Phygital Experience Rewards System) - Modern Manager-Service architecture providing clean, consistent APIs for tourism loyalty applications.
|
|
7
7
|
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
**✨ Enhanced Manager Pattern Architecture**
|
|
11
|
-
- **High-level domain managers** for intuitive API access
|
|
12
|
-
- **Platform adapters** for seamless integration
|
|
13
|
-
- **Clean separation** between managers and underlying SDKs
|
|
14
|
-
- **Improved TypeScript support** with better type inference
|
|
15
|
-
- **Backward compatibility** maintained for existing integrations
|
|
16
|
-
|
|
17
|
-
## PERS Ecosystem
|
|
8
|
+
## Overview
|
|
18
9
|
|
|
19
10
|
PERS is a comprehensive tourism loyalty platform bridging physical and digital experiences through loyalty programs, campaign management, payments, blockchain integration, business management, and analytics.
|
|
20
11
|
|
|
@@ -24,40 +15,8 @@ PERS is a comprehensive tourism loyalty platform bridging physical and digital e
|
|
|
24
15
|
npm install @explorins/pers-sdk
|
|
25
16
|
```
|
|
26
17
|
|
|
27
|
-
## Platform Integration
|
|
28
|
-
|
|
29
|
-
- **[@explorins/pers-sdk-angular](https://www.npmjs.com/package/@explorins/pers-sdk-angular)** - Angular dependency injection wrapper
|
|
30
|
-
- **[@explorins/pers-sdk-react-native](https://www.npmjs.com/package/@explorins/pers-sdk-react-native)** - React Native providers and hooks
|
|
31
|
-
- **Direct Integration** - Node.js, Vanilla JS, or custom frameworks
|
|
32
|
-
|
|
33
|
-
## 🏗️ Architecture Overview
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
PersSDK
|
|
37
|
-
├── Domain Managers (High-level) // Recommended for common operations
|
|
38
|
-
│ ├── auth: AuthManager
|
|
39
|
-
│ ├── users: UserManager
|
|
40
|
-
│ ├── tokens: TokenManager
|
|
41
|
-
│ ├── businesses: BusinessManager
|
|
42
|
-
│ ├── campaigns: CampaignManager
|
|
43
|
-
│ ├── redemptions: RedemptionManager
|
|
44
|
-
│ ├── transactions: TransactionManager
|
|
45
|
-
│ ├── payments: PaymentManager
|
|
46
|
-
│ └── analytics: AnalyticsManager
|
|
47
|
-
├── Domain SDKs (Advanced) // Full feature access
|
|
48
|
-
│ ├── createBusinessSDK()
|
|
49
|
-
│ ├── createCampaignSDK()
|
|
50
|
-
│ └── TokenSDK, etc.
|
|
51
|
-
└── Core API Client // Direct API access
|
|
52
|
-
└── api(): PersApiClient
|
|
53
|
-
```
|
|
54
|
-
|
|
55
18
|
## Quick Start
|
|
56
19
|
|
|
57
|
-
### 1. Choose Your Integration Method
|
|
58
|
-
|
|
59
|
-
#### 🎯 **Recommended: Manager Pattern (High-level)**
|
|
60
|
-
|
|
61
20
|
```typescript
|
|
62
21
|
import { PersSDK } from '@explorins/pers-sdk';
|
|
63
22
|
import { BrowserFetchClientAdapter } from '@explorins/pers-sdk/platform-adapters';
|
|
@@ -67,57 +26,49 @@ const sdk = new PersSDK(new BrowserFetchClientAdapter(), {
|
|
|
67
26
|
apiProjectKey: 'your-project-key'
|
|
68
27
|
});
|
|
69
28
|
|
|
70
|
-
//
|
|
29
|
+
// Authentication
|
|
71
30
|
const user = await sdk.auth.getCurrentUser();
|
|
72
|
-
const campaigns = await sdk.campaigns.getActiveCampaigns();
|
|
73
|
-
const tokens = await sdk.tokens.getTokens();
|
|
74
|
-
```
|
|
75
31
|
|
|
76
|
-
|
|
32
|
+
// Business operations
|
|
33
|
+
const businesses = await sdk.businesses.getActiveBusinesses();
|
|
77
34
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
35
|
+
// Campaign management
|
|
36
|
+
const campaigns = await sdk.campaigns.getActiveCampaigns();
|
|
37
|
+
const campaignClaim = await sdk.campaigns.claimCampaign({ campaignId: 'campaign-123', userId: 'user-456' });
|
|
81
38
|
|
|
82
|
-
|
|
83
|
-
const
|
|
84
|
-
const
|
|
39
|
+
// Token operations
|
|
40
|
+
const tokens = await sdk.tokens.getTokens();
|
|
41
|
+
const balances = await sdk.tokens.getBalances(userId);
|
|
85
42
|
```
|
|
86
43
|
|
|
87
|
-
|
|
44
|
+
## Platform Integration
|
|
88
45
|
|
|
89
|
-
|
|
46
|
+
### Angular
|
|
90
47
|
|
|
91
48
|
```typescript
|
|
92
|
-
// app.config.ts
|
|
93
|
-
import { provideHttpClient } from '@angular/common/http';
|
|
94
|
-
import { PersSDKService } from 'your-app/services/pers-sdk.service';
|
|
95
|
-
|
|
96
|
-
export const appConfig = {
|
|
97
|
-
providers: [
|
|
98
|
-
provideHttpClient(),
|
|
99
|
-
PersSDKService
|
|
100
|
-
]
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
// pers-sdk.service.ts
|
|
104
49
|
import { Injectable } from '@angular/core';
|
|
105
50
|
import { HttpClient } from '@angular/common/http';
|
|
106
51
|
import { PersSDK } from '@explorins/pers-sdk';
|
|
107
52
|
import { AngularHttpClientAdapter } from '@explorins/pers-sdk/platform-adapters';
|
|
108
53
|
|
|
109
54
|
@Injectable({ providedIn: 'root' })
|
|
110
|
-
export class PersSDKService
|
|
55
|
+
export class PersSDKService {
|
|
56
|
+
private sdk: PersSDK;
|
|
57
|
+
|
|
111
58
|
constructor(httpClient: HttpClient) {
|
|
112
|
-
|
|
59
|
+
this.sdk = new PersSDK(new AngularHttpClientAdapter(httpClient), {
|
|
113
60
|
environment: 'production',
|
|
114
61
|
apiProjectKey: 'your-project-key'
|
|
115
62
|
});
|
|
116
63
|
}
|
|
64
|
+
|
|
65
|
+
getSDK(): PersSDK {
|
|
66
|
+
return this.sdk;
|
|
67
|
+
}
|
|
117
68
|
}
|
|
118
69
|
```
|
|
119
70
|
|
|
120
|
-
|
|
71
|
+
### React/Browser
|
|
121
72
|
|
|
122
73
|
```typescript
|
|
123
74
|
import { PersSDK } from '@explorins/pers-sdk';
|
|
@@ -127,14 +78,9 @@ const sdk = new PersSDK(new BrowserFetchClientAdapter(), {
|
|
|
127
78
|
environment: 'production',
|
|
128
79
|
apiProjectKey: 'your-project-key'
|
|
129
80
|
});
|
|
130
|
-
|
|
131
|
-
// React Hook example
|
|
132
|
-
export function usePersSDK() {
|
|
133
|
-
return sdk;
|
|
134
|
-
}
|
|
135
81
|
```
|
|
136
82
|
|
|
137
|
-
|
|
83
|
+
### Node.js
|
|
138
84
|
|
|
139
85
|
```typescript
|
|
140
86
|
import { PersSDK } from '@explorins/pers-sdk';
|
|
@@ -146,203 +92,77 @@ const sdk = new PersSDK(new NodeHttpClientAdapter(), {
|
|
|
146
92
|
});
|
|
147
93
|
```
|
|
148
94
|
|
|
149
|
-
##
|
|
150
|
-
|
|
151
|
-
### 🔐 Authentication Manager
|
|
152
|
-
|
|
153
|
-
```typescript
|
|
154
|
-
// Login with external JWT (Firebase, Auth0, etc.)
|
|
155
|
-
const authResult = await sdk.auth.loginWithToken(jwtToken, 'user');
|
|
156
|
-
const adminResult = await sdk.auth.loginAdmin(adminJWT);
|
|
157
|
-
|
|
158
|
-
// Check authentication status
|
|
159
|
-
const isAuthenticated = await sdk.auth.isAuthenticated();
|
|
160
|
-
const hasValidAuth = sdk.auth.hasValidAuth();
|
|
161
|
-
|
|
162
|
-
// User management
|
|
163
|
-
const currentUser = await sdk.auth.getCurrentUser();
|
|
164
|
-
|
|
165
|
-
// Token management
|
|
166
|
-
const newTokens = await sdk.auth.refreshTokens();
|
|
167
|
-
await sdk.auth.clearAuth();
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### 👤 User Manager
|
|
171
|
-
|
|
172
|
-
```typescript
|
|
173
|
-
// Current user operations
|
|
174
|
-
const user = await sdk.users.getCurrentUser();
|
|
175
|
-
await sdk.users.updateCurrentUser(userData);
|
|
176
|
-
|
|
177
|
-
// User lookup
|
|
178
|
-
const userById = await sdk.users.getUserById(identifier);
|
|
179
|
-
const publicProfiles = await sdk.users.getAllUsersPublic();
|
|
180
|
-
|
|
181
|
-
// Admin operations
|
|
182
|
-
const allUsers = await sdk.users.getAllUsers();
|
|
183
|
-
await sdk.users.updateUser(userId, userData);
|
|
184
|
-
await sdk.users.toggleUserStatus(user);
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
### 🪙 Token Manager
|
|
188
|
-
|
|
189
|
-
```typescript
|
|
190
|
-
// Token operations
|
|
191
|
-
const tokens = await sdk.tokens.getTokens();
|
|
192
|
-
const creditToken = await sdk.tokens.getActiveCreditToken();
|
|
193
|
-
const rewardTokens = await sdk.tokens.getRewardTokens();
|
|
194
|
-
|
|
195
|
-
// Balance operations
|
|
196
|
-
const balances = await sdk.tokens.getBalances(userId);
|
|
197
|
-
await sdk.tokens.transferTokens(transferData);
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
### 🏢 Business Manager
|
|
201
|
-
|
|
202
|
-
```typescript
|
|
203
|
-
// Public business operations
|
|
204
|
-
const businesses = await sdk.businesses.getActiveBusinesses();
|
|
205
|
-
const business = await sdk.businesses.getBusinessById(id);
|
|
206
|
-
const types = await sdk.businesses.getBusinessTypes();
|
|
207
|
-
|
|
208
|
-
// Admin operations
|
|
209
|
-
const allBusinesses = await sdk.businesses.getBusinesses();
|
|
210
|
-
await sdk.businesses.createBusiness(businessData);
|
|
211
|
-
await sdk.businesses.updateBusiness(id, businessData);
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
### 🎯 Campaign Manager
|
|
215
|
-
|
|
216
|
-
```typescript
|
|
217
|
-
// Public campaign operations
|
|
218
|
-
const campaigns = await sdk.campaigns.getActiveCampaigns();
|
|
219
|
-
const campaign = await sdk.campaigns.getCampaignById(id);
|
|
220
|
-
|
|
221
|
-
// User operations
|
|
222
|
-
await sdk.campaigns.claimCampaign(claimData);
|
|
223
|
-
const userClaims = await sdk.campaigns.getUserClaims();
|
|
224
|
-
|
|
225
|
-
// Admin operations
|
|
226
|
-
const allCampaigns = await sdk.campaigns.getAllCampaigns();
|
|
227
|
-
await sdk.campaigns.createCampaign(campaignData);
|
|
228
|
-
await sdk.campaigns.toggleCampaignStatus(campaignId);
|
|
229
|
-
|
|
230
|
-
// Advanced operations
|
|
231
|
-
const triggers = await sdk.campaigns.getCampaignTriggers();
|
|
232
|
-
await sdk.campaigns.setCampaignTrigger(campaignId, triggerId);
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
### 🎁 Redemption Manager
|
|
236
|
-
|
|
237
|
-
```typescript
|
|
238
|
-
// Public redemption operations
|
|
239
|
-
const redemptions = await sdk.redemptions.getActiveRedemptions();
|
|
240
|
-
const types = await sdk.redemptions.getRedemptionTypes();
|
|
241
|
-
|
|
242
|
-
// User operations
|
|
243
|
-
await sdk.redemptions.redeemOffer(redemptionId);
|
|
244
|
-
const userRedemptions = await sdk.redemptions.getUserRedemptions();
|
|
245
|
-
|
|
246
|
-
// Admin operations
|
|
247
|
-
const allRedemptions = await sdk.redemptions.getAllRedemptions();
|
|
248
|
-
await sdk.redemptions.createRedemption(redemptionData);
|
|
249
|
-
await sdk.redemptions.toggleRedemptionStatus(redemptionId);
|
|
250
|
-
```
|
|
95
|
+
## Architecture
|
|
251
96
|
|
|
252
|
-
|
|
97
|
+
The SDK uses a clean Manager-Service pattern:
|
|
253
98
|
|
|
254
99
|
```typescript
|
|
255
|
-
//
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
100
|
+
// Manager Layer (Primary Interface)
|
|
101
|
+
sdk.auth // Authentication & sessions
|
|
102
|
+
sdk.users // User profiles & management
|
|
103
|
+
sdk.tokens // Token operations & balances
|
|
104
|
+
sdk.businesses // Business operations
|
|
105
|
+
sdk.campaigns // Marketing campaigns
|
|
106
|
+
sdk.redemptions // Reward redemptions
|
|
107
|
+
sdk.transactions // Transaction history
|
|
108
|
+
sdk.payments // Payment processing
|
|
109
|
+
sdk.analytics // Reporting & insights
|
|
110
|
+
sdk.tenants // Multi-tenant configuration
|
|
111
|
+
sdk.donations // Charitable giving
|
|
112
|
+
sdk.files // File operations
|
|
113
|
+
sdk.web3 // Blockchain operations
|
|
260
114
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
// Transaction operations
|
|
265
|
-
const transaction = await sdk.transactions.getTransactionById(id);
|
|
266
|
-
await sdk.transactions.createTransaction(transactionData);
|
|
267
|
-
const history = await sdk.transactions.getUserTransactionHistory('all');
|
|
115
|
+
// Service Layer (Advanced Access)
|
|
116
|
+
sdk.users.getUserService() // Direct service access
|
|
117
|
+
sdk.campaigns.getCampaignService()
|
|
268
118
|
```
|
|
269
119
|
|
|
270
|
-
|
|
120
|
+
## Core Features
|
|
271
121
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
const loginToken = await sdk.tenants.getLoginToken();
|
|
277
|
-
|
|
278
|
-
// Admin operations
|
|
279
|
-
await sdk.tenants.updateTenant(tenantData);
|
|
280
|
-
const admins = await sdk.tenants.getAdmins();
|
|
281
|
-
await sdk.tenants.createAdmin(adminData);
|
|
282
|
-
```
|
|
122
|
+
### Authentication
|
|
123
|
+
- External JWT integration (Firebase, Auth0, etc.)
|
|
124
|
+
- Native token validation and refresh
|
|
125
|
+
- User and admin authentication flows
|
|
283
126
|
|
|
284
|
-
###
|
|
127
|
+
### Business Management
|
|
128
|
+
- Business registration and profiles
|
|
129
|
+
- Business type management
|
|
130
|
+
- Public business discovery
|
|
285
131
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
endDate: '2024-12-31',
|
|
291
|
-
groupBy: 'month'
|
|
292
|
-
});
|
|
293
|
-
```
|
|
132
|
+
### Campaign System
|
|
133
|
+
- Marketing campaign management
|
|
134
|
+
- User campaign claims and participation
|
|
135
|
+
- Advanced campaign triggers and automation
|
|
294
136
|
|
|
295
|
-
###
|
|
137
|
+
### Token Economy
|
|
138
|
+
- Token balance management
|
|
139
|
+
- Token transfers and transactions
|
|
140
|
+
- Multiple token type support
|
|
296
141
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
142
|
+
### Reward Redemptions
|
|
143
|
+
- Redemption offer management
|
|
144
|
+
- User redemption tracking
|
|
145
|
+
- Multiple redemption types
|
|
301
146
|
|
|
302
|
-
|
|
147
|
+
### Payment Processing
|
|
148
|
+
- Payment intent creation
|
|
149
|
+
- Purchase token management
|
|
150
|
+
- Transaction history
|
|
303
151
|
|
|
304
|
-
|
|
152
|
+
## Configuration
|
|
305
153
|
|
|
306
154
|
```typescript
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
async post<T>(url: string, data?: unknown, options?: RequestOptions): Promise<T> {
|
|
315
|
-
// Your custom implementation
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
async put<T>(url: string, data?: unknown, options?: RequestOptions): Promise<T> {
|
|
319
|
-
// Your custom implementation
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
async delete<T>(url: string, options?: RequestOptions): Promise<T> {
|
|
323
|
-
// Your custom implementation
|
|
324
|
-
}
|
|
155
|
+
interface PersConfig {
|
|
156
|
+
environment?: 'development' | 'staging' | 'production';
|
|
157
|
+
apiVersion?: 'v2';
|
|
158
|
+
apiProjectKey: string;
|
|
159
|
+
timeout?: number;
|
|
160
|
+
retries?: number;
|
|
161
|
+
authProvider?: PersAuthProvider;
|
|
325
162
|
}
|
|
326
|
-
|
|
327
|
-
const sdk = new PersSDK(new CustomHttpClient(), config);
|
|
328
163
|
```
|
|
329
164
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
```typescript
|
|
333
|
-
// For operations not covered by managers
|
|
334
|
-
const apiClient = sdk.api();
|
|
335
|
-
|
|
336
|
-
// Custom endpoints
|
|
337
|
-
const customData = await apiClient.get<CustomType>('/custom-endpoint');
|
|
338
|
-
await apiClient.post('/custom-endpoint', customData);
|
|
339
|
-
|
|
340
|
-
// Advanced auth operations
|
|
341
|
-
const isExpired = await apiClient.isTokenExpired(120);
|
|
342
|
-
const allExpired = await apiClient.areAllTokensExpired();
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
### Error Handling
|
|
165
|
+
## Error Handling
|
|
346
166
|
|
|
347
167
|
```typescript
|
|
348
168
|
import { PersApiError } from '@explorins/pers-sdk/core';
|
|
@@ -352,103 +172,27 @@ try {
|
|
|
352
172
|
} catch (error) {
|
|
353
173
|
if (error instanceof PersApiError) {
|
|
354
174
|
console.error('PERS API Error:', error.message, error.statusCode);
|
|
355
|
-
} else {
|
|
356
|
-
console.error('Unknown error:', error);
|
|
357
175
|
}
|
|
358
176
|
}
|
|
359
177
|
```
|
|
360
178
|
|
|
361
|
-
##
|
|
362
|
-
|
|
363
|
-
### Core Modules
|
|
364
|
-
- `/core` - Core API client and authentication
|
|
365
|
-
- `/platform-adapters` - Ready-to-use HTTP client adapters
|
|
366
|
-
|
|
367
|
-
### Domain Modules
|
|
368
|
-
- `/business` - Business operations and management
|
|
369
|
-
- `/campaign` - Marketing campaigns and challenges
|
|
370
|
-
- `/redemption` - Reward redemption system
|
|
371
|
-
- `/token` - Token balances and transfers
|
|
372
|
-
- `/transaction` - Payment and transaction history
|
|
373
|
-
- `/payment` - Payment processing
|
|
374
|
-
- `/user` - User profile management
|
|
375
|
-
- `/analytics` - Reporting and analytics
|
|
376
|
-
- `/tenant` - Multi-tenant management
|
|
377
|
-
- `/donation` - Donation management
|
|
378
|
-
- `/web3` - Blockchain and wallet integration
|
|
379
|
-
- `/web3-chain` - Web3 chain operations
|
|
380
|
-
|
|
381
|
-
## ⚙️ Configuration
|
|
382
|
-
|
|
383
|
-
```typescript
|
|
384
|
-
interface PersConfig {
|
|
385
|
-
environment: 'development' | 'staging' | 'production';
|
|
386
|
-
apiVersion?: 'v1' | 'v1.8' | 'v1.9' | 'v2';
|
|
387
|
-
apiProjectKey: string;
|
|
388
|
-
timeout?: number; // Request timeout (default: 30s)
|
|
389
|
-
retries?: number; // Retry attempts (default: 3)
|
|
390
|
-
authProvider?: PersAuthProvider; // Custom auth provider
|
|
391
|
-
}
|
|
392
|
-
```
|
|
393
|
-
|
|
394
|
-
## 🔄 Migration Guide
|
|
179
|
+
## Bundle Size
|
|
395
180
|
|
|
396
|
-
|
|
181
|
+
- Core SDK: ~85 KB (minified)
|
|
182
|
+
- Tree-shaking friendly
|
|
183
|
+
- Zero external authentication dependencies
|
|
184
|
+
- Native browser API implementation
|
|
397
185
|
|
|
398
|
-
|
|
399
|
-
```typescript
|
|
400
|
-
const businessSDK = createBusinessSDK(apiClient);
|
|
401
|
-
const businesses = await businessSDK.getActiveBusinesses();
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
**After (Manager Pattern):**
|
|
405
|
-
```typescript
|
|
406
|
-
const sdk = new PersSDK(httpClient, config);
|
|
407
|
-
const businesses = await sdk.businesses.getActiveBusinesses();
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
**Benefits:**
|
|
411
|
-
- ✅ Cleaner API surface
|
|
412
|
-
- ✅ Better TypeScript inference
|
|
413
|
-
- ✅ Consistent error handling
|
|
414
|
-
- ✅ Easier testing and mocking
|
|
415
|
-
- ✅ Future-proof architecture
|
|
416
|
-
|
|
417
|
-
## 📊 Bundle Size
|
|
418
|
-
|
|
419
|
-
- **Core SDK**: ~90 KB (minified)
|
|
420
|
-
- **Individual domains**: 2-20 KB each
|
|
421
|
-
- **Manager pattern**: Minimal overhead (~5 KB)
|
|
422
|
-
- **Tree-shaking friendly**: Import only what you need
|
|
423
|
-
|
|
424
|
-
## 🧪 Testing
|
|
425
|
-
|
|
426
|
-
```typescript
|
|
427
|
-
// Mock manager for testing
|
|
428
|
-
const mockUserManager = {
|
|
429
|
-
getCurrentUser: jest.fn().mockResolvedValue(mockUser),
|
|
430
|
-
updateCurrentUser: jest.fn().mockResolvedValue(updatedUser)
|
|
431
|
-
};
|
|
432
|
-
|
|
433
|
-
const sdk = {
|
|
434
|
-
users: mockUserManager
|
|
435
|
-
} as jest.Mocked<PersSDK>;
|
|
436
|
-
```
|
|
186
|
+
## Documentation
|
|
437
187
|
|
|
438
|
-
|
|
188
|
+
For comprehensive documentation, examples, and advanced usage:
|
|
439
189
|
|
|
440
|
-
|
|
441
|
-
- **`jwt-decode`** (^4.0.0) - JWT token parsing
|
|
442
|
-
- **`@explorins/pers-shared`** (*) - Shared types (peer dependency)
|
|
443
|
-
- **`ethers`** (^6.15.0) - Ethereum integration (peer dependency)
|
|
190
|
+
**[https://docs.pers.ninja/1.intro](https://docs.pers.ninja/1.intro)**
|
|
444
191
|
|
|
445
192
|
## Related Packages
|
|
446
193
|
|
|
447
|
-
- [@explorins/pers-sdk-
|
|
448
|
-
- [@explorins/pers-sdk-react-native](https://www.npmjs.com/package/@explorins/pers-sdk-react-native) - React Native integration
|
|
449
|
-
- [@explorins/pers-shared](https://www.npmjs.com/package/@explorins/pers-shared) - Shared types and DTOs
|
|
450
|
-
- [@explorins/web3-ts](https://www.npmjs.com/package/@explorins/web3-ts) - Web3 utilities
|
|
194
|
+
- [@explorins/pers-sdk-react-native](https://www.npmjs.com/package/@explorins/pers-sdk-react-native) - React Native integration
|
|
451
195
|
|
|
452
196
|
## License
|
|
453
197
|
|
|
454
|
-
MIT License
|
|
198
|
+
MIT License
|
|
@@ -9,20 +9,4 @@ export { AnalyticsService } from './services/analytics-service';
|
|
|
9
9
|
export * from './models';
|
|
10
10
|
export * from '../shared/interfaces/pers-shared-lib.interfaces';
|
|
11
11
|
export * from './models';
|
|
12
|
-
import { PersApiClient } from '../core/pers-api-client';
|
|
13
|
-
import { AnalyticsApi } from './api/analytics-api';
|
|
14
|
-
import { TransactionAnalyticsRequestDTO } from './models';
|
|
15
|
-
import { AnalyticsService } from './services/analytics-service';
|
|
16
|
-
/**
|
|
17
|
-
* Create a complete Analytics SDK instance
|
|
18
|
-
*
|
|
19
|
-
* @param apiClient - Configured PERS API client
|
|
20
|
-
* @returns Analytics SDK with flattened structure for better DX
|
|
21
|
-
*/
|
|
22
|
-
export declare function createAnalyticsSDK(apiClient: PersApiClient): {
|
|
23
|
-
getTransactionAnalytics: (request: TransactionAnalyticsRequestDTO) => Promise<import("./models").TransactionAnalyticsResponseDTO>;
|
|
24
|
-
api: AnalyticsApi;
|
|
25
|
-
service: AnalyticsService;
|
|
26
|
-
};
|
|
27
|
-
export type AnalyticsSDK = ReturnType<typeof createAnalyticsSDK>;
|
|
28
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,cAAc,UAAU,CAAC;AACzB,cAAc,iDAAiD,CAAC;AAMhE,cAAc,UAAU,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,cAAc,UAAU,CAAC;AACzB,cAAc,iDAAiD,CAAC;AAMhE,cAAc,UAAU,CAAC"}
|
package/dist/analytics.cjs
CHANGED
|
@@ -1,82 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var analyticsService = require('./chunks/analytics-service-CitlimKJ.cjs');
|
|
3
4
|
var persShared = require('@explorins/pers-shared');
|
|
4
5
|
|
|
5
|
-
/**
|
|
6
|
-
* Platform-Agnostic Analytics API Client
|
|
7
|
-
*
|
|
8
|
-
* Handles analytics operations using the PERS backend.
|
|
9
|
-
* Uses @explorins/pers-shared DTOs for consistency with backend.
|
|
10
|
-
*/
|
|
11
|
-
class AnalyticsApi {
|
|
12
|
-
constructor(apiClient) {
|
|
13
|
-
this.apiClient = apiClient;
|
|
14
|
-
}
|
|
15
|
-
// ==========================================
|
|
16
|
-
// ADMIN OPERATIONS
|
|
17
|
-
// ==========================================
|
|
18
|
-
/**
|
|
19
|
-
* ADMIN: Get transaction analytics with filtering and aggregation
|
|
20
|
-
*/
|
|
21
|
-
async getTransactionAnalytics(request) {
|
|
22
|
-
return this.apiClient.post('/transactions/analytics', request);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
6
|
|
|
26
|
-
/**
|
|
27
|
-
* Platform-Agnostic Analytics Service
|
|
28
|
-
*
|
|
29
|
-
* Contains analytics business logic and operations that work across platforms.
|
|
30
|
-
* No framework dependencies - pure TypeScript business logic.
|
|
31
|
-
*
|
|
32
|
-
* Focuses only on actual backend capabilities.
|
|
33
|
-
*/
|
|
34
|
-
class AnalyticsService {
|
|
35
|
-
constructor(analyticsApi) {
|
|
36
|
-
this.analyticsApi = analyticsApi;
|
|
37
|
-
}
|
|
38
|
-
// ==========================================
|
|
39
|
-
// ADMIN OPERATIONS
|
|
40
|
-
// ==========================================
|
|
41
|
-
/**
|
|
42
|
-
* ADMIN: Get transaction analytics with filtering and aggregation
|
|
43
|
-
*/
|
|
44
|
-
async getTransactionAnalytics(request) {
|
|
45
|
-
return this.analyticsApi.getTransactionAnalytics(request);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* @explorins/pers-sdk-analytics
|
|
51
|
-
*
|
|
52
|
-
* Platform-agnostic Analytics Domain SDK for PERS ecosystem
|
|
53
|
-
* Handles analytics operations and data aggregation
|
|
54
|
-
*/
|
|
55
|
-
// API Layer
|
|
56
|
-
/**
|
|
57
|
-
* Create a complete Analytics SDK instance
|
|
58
|
-
*
|
|
59
|
-
* @param apiClient - Configured PERS API client
|
|
60
|
-
* @returns Analytics SDK with flattened structure for better DX
|
|
61
|
-
*/
|
|
62
|
-
function createAnalyticsSDK(apiClient) {
|
|
63
|
-
const analyticsApi = new AnalyticsApi(apiClient);
|
|
64
|
-
const analyticsService = new AnalyticsService(analyticsApi);
|
|
65
|
-
return {
|
|
66
|
-
// Direct access to service methods (primary interface)
|
|
67
|
-
// Admin methods
|
|
68
|
-
getTransactionAnalytics: (request) => analyticsService.getTransactionAnalytics(request),
|
|
69
|
-
// Advanced access for edge cases
|
|
70
|
-
api: analyticsApi,
|
|
71
|
-
service: analyticsService
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
7
|
|
|
8
|
+
exports.AnalyticsApi = analyticsService.AnalyticsApi;
|
|
9
|
+
exports.AnalyticsService = analyticsService.AnalyticsService;
|
|
75
10
|
Object.defineProperty(exports, "AccountOwnerType", {
|
|
76
|
-
|
|
77
|
-
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () { return persShared.AccountOwnerType; }
|
|
78
13
|
});
|
|
79
|
-
exports.AnalyticsApi = AnalyticsApi;
|
|
80
|
-
exports.AnalyticsService = AnalyticsService;
|
|
81
|
-
exports.createAnalyticsSDK = createAnalyticsSDK;
|
|
82
14
|
//# sourceMappingURL=analytics.cjs.map
|
package/dist/analytics.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.cjs","sources":[
|
|
1
|
+
{"version":3,"file":"analytics.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|