@explorins/pers-sdk 2.0.7 → 2.0.11

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 (171) hide show
  1. package/README.md +113 -59
  2. package/dist/analytics/index.d.ts +0 -2
  3. package/dist/analytics/index.d.ts.map +1 -1
  4. package/dist/analytics/models/index.d.ts +1 -10
  5. package/dist/analytics/models/index.d.ts.map +1 -1
  6. package/dist/analytics.cjs +44 -29
  7. package/dist/analytics.cjs.map +1 -1
  8. package/dist/analytics.js +45 -2
  9. package/dist/analytics.js.map +1 -1
  10. package/dist/business/index.d.ts +0 -1
  11. package/dist/business/index.d.ts.map +1 -1
  12. package/dist/business.cjs +7 -774
  13. package/dist/business.cjs.map +1 -1
  14. package/dist/business.js +3 -751
  15. package/dist/business.js.map +1 -1
  16. package/dist/campaign/index.d.ts +0 -1
  17. package/dist/campaign/index.d.ts.map +1 -1
  18. package/dist/campaign.cjs +429 -29
  19. package/dist/campaign.cjs.map +1 -1
  20. package/dist/campaign.js +431 -3
  21. package/dist/campaign.js.map +1 -1
  22. package/dist/chunks/business-membership-service-8KC_qRj7.cjs +756 -0
  23. package/dist/chunks/business-membership-service-8KC_qRj7.cjs.map +1 -0
  24. package/dist/chunks/business-membership-service-D6vaVQTR.js +751 -0
  25. package/dist/chunks/business-membership-service-D6vaVQTR.js.map +1 -0
  26. package/dist/chunks/{web3-chain-service-BeBjALg2.cjs → index-B-g2JPVK.cjs} +1 -220
  27. package/dist/chunks/index-B-g2JPVK.cjs.map +1 -0
  28. package/dist/chunks/{web3-chain-service-DKHCnHQX.js → index-CKm_V5XE.js} +2 -219
  29. package/dist/chunks/index-CKm_V5XE.js.map +1 -0
  30. package/dist/chunks/payment-service-Bkw7ZXev.cjs +214 -0
  31. package/dist/chunks/payment-service-Bkw7ZXev.cjs.map +1 -0
  32. package/dist/chunks/payment-service-IvM6rryM.js +211 -0
  33. package/dist/chunks/payment-service-IvM6rryM.js.map +1 -0
  34. package/dist/chunks/{pers-sdk-JIExM712.js → pers-sdk-DYnIZvcx.js} +12 -291
  35. package/dist/chunks/pers-sdk-DYnIZvcx.js.map +1 -0
  36. package/dist/chunks/{pers-sdk-h-uoLpBx.cjs → pers-sdk-Dr9W8stD.cjs} +38 -318
  37. package/dist/chunks/pers-sdk-Dr9W8stD.cjs.map +1 -0
  38. package/dist/chunks/redemption-service-D-hBqh42.js +339 -0
  39. package/dist/chunks/redemption-service-D-hBqh42.js.map +1 -0
  40. package/dist/chunks/redemption-service-rMB6T2W5.cjs +342 -0
  41. package/dist/chunks/redemption-service-rMB6T2W5.cjs.map +1 -0
  42. package/dist/chunks/tenant-service-CsRA3O2V.js +163 -0
  43. package/dist/chunks/tenant-service-CsRA3O2V.js.map +1 -0
  44. package/dist/chunks/tenant-service-fj-pkXTw.cjs +166 -0
  45. package/dist/chunks/tenant-service-fj-pkXTw.cjs.map +1 -0
  46. package/dist/chunks/{transaction-request.builder-DrqTWcyC.cjs → transaction-request.builder-BwWmfHXm.cjs} +6 -6
  47. package/dist/chunks/{transaction-request.builder-DrqTWcyC.cjs.map → transaction-request.builder-BwWmfHXm.cjs.map} +1 -1
  48. package/dist/chunks/{transaction-request.builder-DltmruUC.js → transaction-request.builder-C1FPWmYN.js} +6 -6
  49. package/dist/chunks/{transaction-request.builder-DltmruUC.js.map → transaction-request.builder-C1FPWmYN.js.map} +1 -1
  50. package/dist/chunks/web3-chain-service-D68-0WaW.cjs +224 -0
  51. package/dist/chunks/web3-chain-service-D68-0WaW.cjs.map +1 -0
  52. package/dist/chunks/web3-chain-service-DuvxmKSj.js +221 -0
  53. package/dist/chunks/web3-chain-service-DuvxmKSj.js.map +1 -0
  54. package/dist/chunks/{explorer.utils-Cx3wrqAj.cjs → web3-manager-C_cFaMCm.cjs} +411 -144
  55. package/dist/chunks/web3-manager-C_cFaMCm.cjs.map +1 -0
  56. package/dist/chunks/{explorer.utils-BkS3k8hX.js → web3-manager-OExwBWB7.js} +412 -146
  57. package/dist/chunks/web3-manager-OExwBWB7.js.map +1 -0
  58. package/dist/core.cjs +18 -21
  59. package/dist/core.cjs.map +1 -1
  60. package/dist/core.js +10 -12
  61. package/dist/core.js.map +1 -1
  62. package/dist/donation/index.d.ts +0 -1
  63. package/dist/donation/index.d.ts.map +1 -1
  64. package/dist/donation.cjs +48 -29
  65. package/dist/donation.cjs.map +1 -1
  66. package/dist/donation.js +50 -3
  67. package/dist/donation.js.map +1 -1
  68. package/dist/index.cjs +43 -69
  69. package/dist/index.cjs.map +1 -1
  70. package/dist/index.d.ts +1 -3
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +13 -15
  73. package/dist/index.js.map +1 -1
  74. package/dist/managers/analytics-manager.d.ts +1 -1
  75. package/dist/managers/index.d.ts +0 -1
  76. package/dist/managers/index.d.ts.map +1 -1
  77. package/dist/managers/web3-manager.d.ts +1 -1
  78. package/dist/managers/web3-manager.d.ts.map +1 -1
  79. package/dist/node.cjs +10 -13
  80. package/dist/node.cjs.map +1 -1
  81. package/dist/node.js +10 -13
  82. package/dist/node.js.map +1 -1
  83. package/dist/package.json +4 -10
  84. package/dist/payment/index.d.ts +0 -1
  85. package/dist/payment/index.d.ts.map +1 -1
  86. package/dist/payment.cjs +5 -232
  87. package/dist/payment.cjs.map +1 -1
  88. package/dist/payment.js +3 -210
  89. package/dist/payment.js.map +1 -1
  90. package/dist/pers-sdk.d.ts +1 -13
  91. package/dist/pers-sdk.d.ts.map +1 -1
  92. package/dist/redemption/index.d.ts +0 -1
  93. package/dist/redemption/index.d.ts.map +1 -1
  94. package/dist/redemption/services/redemption-service.d.ts +1 -2
  95. package/dist/redemption/services/redemption-service.d.ts.map +1 -1
  96. package/dist/redemption.cjs +5 -360
  97. package/dist/redemption.cjs.map +1 -1
  98. package/dist/redemption.js +3 -338
  99. package/dist/redemption.js.map +1 -1
  100. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts +15 -21
  101. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts.map +1 -1
  102. package/dist/tenant/index.d.ts +0 -1
  103. package/dist/tenant/index.d.ts.map +1 -1
  104. package/dist/tenant.cjs +5 -184
  105. package/dist/tenant.cjs.map +1 -1
  106. package/dist/tenant.js +3 -162
  107. package/dist/tenant.js.map +1 -1
  108. package/dist/token/index.d.ts +0 -1
  109. package/dist/token/index.d.ts.map +1 -1
  110. package/dist/token.cjs +1 -25
  111. package/dist/token.cjs.map +1 -1
  112. package/dist/token.js +1 -1
  113. package/dist/transaction/models/transaction-request.builder.d.ts +4 -4
  114. package/dist/transaction/models/transaction-request.builder.d.ts.map +1 -1
  115. package/dist/transaction.cjs +1 -1
  116. package/dist/transaction.js +1 -1
  117. package/dist/user/index.d.ts +0 -1
  118. package/dist/user/index.d.ts.map +1 -1
  119. package/dist/user-status/index.d.ts +0 -1
  120. package/dist/user-status/index.d.ts.map +1 -1
  121. package/dist/user-status.cjs +0 -25
  122. package/dist/user-status.cjs.map +1 -1
  123. package/dist/user-status.js +0 -1
  124. package/dist/user-status.js.map +1 -1
  125. package/dist/user.cjs +209 -29
  126. package/dist/user.cjs.map +1 -1
  127. package/dist/user.js +211 -3
  128. package/dist/user.js.map +1 -1
  129. package/dist/web3/index.d.ts +1 -0
  130. package/dist/web3/index.d.ts.map +1 -1
  131. package/dist/web3-chain/index.d.ts +0 -1
  132. package/dist/web3-chain/index.d.ts.map +1 -1
  133. package/dist/web3-chain.cjs +14 -29
  134. package/dist/web3-chain.cjs.map +1 -1
  135. package/dist/web3-chain.js +16 -3
  136. package/dist/web3-chain.js.map +1 -1
  137. package/dist/web3-manager.cjs +13 -0
  138. package/dist/web3-manager.cjs.map +1 -0
  139. package/dist/web3-manager.js +7 -0
  140. package/dist/web3-manager.js.map +1 -0
  141. package/dist/web3.cjs +10 -6
  142. package/dist/web3.cjs.map +1 -1
  143. package/dist/web3.js +4 -1
  144. package/dist/web3.js.map +1 -1
  145. package/package.json +4 -10
  146. package/dist/chunks/analytics-service-CitlimKJ.cjs +0 -49
  147. package/dist/chunks/analytics-service-CitlimKJ.cjs.map +0 -1
  148. package/dist/chunks/analytics-service-CxyrOwel.js +0 -46
  149. package/dist/chunks/analytics-service-CxyrOwel.js.map +0 -1
  150. package/dist/chunks/campaign-service-CdEz0jpP.cjs +0 -435
  151. package/dist/chunks/campaign-service-CdEz0jpP.cjs.map +0 -1
  152. package/dist/chunks/campaign-service-DrTAqFZM.js +0 -432
  153. package/dist/chunks/campaign-service-DrTAqFZM.js.map +0 -1
  154. package/dist/chunks/donation-service--6cnTvWq.cjs +0 -54
  155. package/dist/chunks/donation-service--6cnTvWq.cjs.map +0 -1
  156. package/dist/chunks/donation-service-xiXZ2Eto.js +0 -51
  157. package/dist/chunks/donation-service-xiXZ2Eto.js.map +0 -1
  158. package/dist/chunks/explorer.utils-BkS3k8hX.js.map +0 -1
  159. package/dist/chunks/explorer.utils-Cx3wrqAj.cjs.map +0 -1
  160. package/dist/chunks/index-BtDNXaFq.js +0 -13
  161. package/dist/chunks/index-BtDNXaFq.js.map +0 -1
  162. package/dist/chunks/index-CMk3Aqkk.cjs +0 -15
  163. package/dist/chunks/index-CMk3Aqkk.cjs.map +0 -1
  164. package/dist/chunks/pers-sdk-JIExM712.js.map +0 -1
  165. package/dist/chunks/pers-sdk-h-uoLpBx.cjs.map +0 -1
  166. package/dist/chunks/user-service-BGP3SZpk.js +0 -212
  167. package/dist/chunks/user-service-BGP3SZpk.js.map +0 -1
  168. package/dist/chunks/user-service-gITOx4qj.cjs +0 -215
  169. package/dist/chunks/user-service-gITOx4qj.cjs.map +0 -1
  170. package/dist/chunks/web3-chain-service-BeBjALg2.cjs.map +0 -1
  171. package/dist/chunks/web3-chain-service-DKHCnHQX.js.map +0 -1
package/README.md CHANGED
@@ -107,84 +107,123 @@ npm install @explorins/pers-shared ethers@^6.15.0
107
107
 
108
108
  ### Direct Dependencies
109
109
 
110
- | Package | Purpose |
111
- |---------|---------|
112
- | `@explorins/web3-ts` | Internal Web3 chain utilities |
110
+ The SDK bundles essential dependencies for seamless installation:
111
+
112
+ | Package | Type | Purpose |
113
+ |---------|------|---------|
114
+ | `@explorins/pers-shared` | Dependency (bundled) | Shared types, interfaces, and DTOs |
115
+ | `@explorins/web3-ts` | Dependency (bundled) | Web3/blockchain utilities - automatically tree-shaken when not used |
116
+ | `ethers` | Dependency (bundled) | Blockchain operations - automatically tree-shaken when not used |
117
+
118
+ > **Tree-Shaking Magic**: Web3 features (~500KB install size) are only included in your final bundle if you actually use them. The SDK uses subpath exports (`@explorins/pers-sdk/web3`) that modern bundlers (Vite, Webpack 5+, Angular) automatically tree-shake when unused.
119
+ >
120
+ > **Note**: `npm install` downloads ~500KB of web3 dependencies, but your production bundle will be **~3KB** if you don't import web3 features. This design prioritizes developer experience (no peer dependency hassles) while maintaining optimal production bundle sizes through automatic tree-shaking.
113
121
 
114
122
  ---
115
123
 
116
124
  ## Installation
117
125
 
118
126
  ```bash
119
- # Core SDK
127
+ # Single command installs everything - no peer dependency hassle
120
128
  npm install @explorins/pers-sdk
121
129
 
122
- # Required peer dependencies
123
- npm install @explorins/pers-shared ethers@^6.15.0
124
-
125
130
  # Optional: For Angular applications only
126
131
  npm install rxjs
127
132
  ```
128
133
 
134
+ **Bundle Sizes (After Tree-Shaking):**
135
+
136
+ | Usage Pattern | Install Size | Runtime Bundle Size | Notes |
137
+ |--------------|--------------|---------------------|-------|
138
+ | **Core SDK only** (no web3) | ~500 KB | **~3 KB (ESM)** | Campaigns, users, tokens, auth |
139
+ | **With Web3 features** | ~500 KB | **~26 KB (ESM)** | Includes blockchain operations |
140
+ | **Development (node_modules)** | ~500 KB | N/A | All features available for development |
141
+
142
+ > **Key Insight**: The install downloads 500KB, but your production app only includes what you import. If you never `import { Web3Manager }`, those 500KB are automatically excluded from your bundle by the bundler.
143
+
144
+ **How Tree-Shaking Works:**
145
+ ```typescript
146
+ // ✅ This code = ~3 KB production bundle (web3 dependencies NOT included)
147
+ import { createPersSDK } from '@explorins/pers-sdk';
148
+ const sdk = createPersSDK({...});
149
+ await sdk.campaign.list();
150
+
151
+ // ✅ This code = ~26 KB production bundle (web3 loaded only when imported)
152
+ import { Web3Manager } from '@explorins/pers-sdk/web3';
153
+ const web3 = new Web3Manager(sdk.api());
154
+ await web3.getTokenBalance({...});
155
+ ```
156
+
157
+ Modern bundlers (Vite, Webpack 5+, Angular, Rollup) detect when web3 code is never imported and completely remove it from your production bundle through dead code elimination.
158
+
129
159
  ---
130
160
 
131
161
  ## Quick Start
132
162
 
133
- ### Minimum Viable Example
163
+ ### Browser / React / Vue
134
164
 
135
165
  ```typescript
136
- import { PersSDK } from '@explorins/pers-sdk';
166
+ import { createPersSDK } from '@explorins/pers-sdk';
137
167
  import { BrowserFetchClientAdapter } from '@explorins/pers-sdk/platform-adapters';
138
168
 
139
- // 1. Initialize SDK (required: adapter + project key)
140
- const sdk = new PersSDK(new BrowserFetchClientAdapter(), {
141
- apiProjectKey: 'your-project-key' // Get from PERS dashboard
169
+ // Initialize SDK
170
+ const sdk = createPersSDK(new BrowserFetchClientAdapter(), {
171
+ apiProjectKey: 'your-project-key'
142
172
  });
143
173
 
144
- // 2. Authenticate with external JWT (Firebase, Auth0, Cognito, etc.)
145
- const externalJWT = await yourAuthProvider.getIdToken(); // Your JWT
174
+ // Authenticate with external JWT (Firebase, Auth0, Cognito, etc.)
175
+ const externalJWT = await yourAuthProvider.getIdToken();
146
176
  const authResult = await sdk.auth.loginWithToken(externalJWT, 'user');
147
- console.log('Authenticated user:', authResult.user.id);
148
177
 
149
- // 3. Use SDK managers
178
+ // Use SDK managers
150
179
  const campaigns = await sdk.campaigns.getActiveCampaigns();
151
- const tokens = await sdk.tokens.getTokens();
152
180
  ```
153
181
 
154
- ### Complete Example
182
+ ### Node.js (Convenience Function)
155
183
 
156
184
  ```typescript
157
- import { PersSDK } from '@explorins/pers-sdk';
158
- import { BrowserFetchClientAdapter } from '@explorins/pers-sdk/platform-adapters';
185
+ import { createNodeSDK } from '@explorins/pers-sdk/node';
159
186
 
160
- // Initialize SDK with browser fetch adapter
161
- const sdk = new PersSDK(new BrowserFetchClientAdapter(), {
162
- environment: 'production',
163
- apiProjectKey: 'your-project-key'
187
+ // One-liner setup with static JWT
188
+ const sdk = createNodeSDK({
189
+ jwt: 'your-system-jwt',
190
+ projectKey: 'your-project-key',
191
+ environment: 'production'
164
192
  });
165
193
 
166
- // Authentication - login with external JWT (Firebase, Auth0, etc.)
167
- const authResult = await sdk.auth.loginWithToken(firebaseJWT, 'user');
168
- const user = await sdk.auth.getCurrentUser();
194
+ // Ready to use - no additional auth needed
195
+ const campaigns = await sdk.campaigns.getCampaigns();
196
+ const userClaims = await sdk.campaigns.getCampaignClaims({ userId: 'user-123' });
197
+ ```
169
198
 
170
- // Business operations
171
- const businesses = await sdk.businesses.getActiveBusinesses();
172
- const business = await sdk.businesses.getBusinessById('business-123');
199
+ ### Complete Example (Node.js Server-Side)
173
200
 
174
- // Campaign management
175
- const campaigns = await sdk.campaigns.getActiveCampaigns();
176
- const claim = await sdk.campaigns.claimCampaign({
201
+ ```typescript
202
+ import { createNodeSDK } from '@explorins/pers-sdk/node';
203
+
204
+ // Initialize with static JWT (tenant/business system token)
205
+ const sdk = createNodeSDK({
206
+ jwt: process.env.PERS_JWT_TOKEN,
207
+ projectKey: process.env.PERS_PROJECT_KEY,
208
+ environment: 'production'
209
+ });
210
+
211
+ // Campaign operations (admin/system access)
212
+ const campaigns = await sdk.campaigns.getCampaigns();
213
+ const campaign = await sdk.campaigns.getCampaignById('campaign-123');
214
+
215
+ // Claim campaign for a user (system operation)
216
+ const claim = await sdk.campaigns.claimCampaign({
177
217
  campaignId: 'campaign-123',
178
- businessId: 'business-456'
218
+ userIdentifier: 'external-user-id'
179
219
  });
180
220
 
181
- // Token operations
182
- const tokens = await sdk.tokens.getTokens();
183
- const creditToken = await sdk.tokens.getActiveCreditToken();
184
- const rewardTokens = await sdk.tokens.getRewardTokens();
221
+ // Get user's claim history
222
+ const userId = claim.user?.id;
223
+ const userClaims = await sdk.campaigns.getCampaignClaims({ userId });
185
224
 
186
- // User claims history
187
- const userClaims = await sdk.campaigns.getUserClaims();
225
+ // Business operations
226
+ const businesses = await sdk.businesses.getActiveBusinesses();
188
227
  ```
189
228
 
190
229
  ---
@@ -196,10 +235,10 @@ const userClaims = await sdk.campaigns.getUserClaims();
196
235
  **No additional dependencies required.**
197
236
 
198
237
  ```typescript
199
- import { PersSDK } from '@explorins/pers-sdk';
238
+ import { createPersSDK } from '@explorins/pers-sdk';
200
239
  import { BrowserFetchClientAdapter } from '@explorins/pers-sdk/platform-adapters';
201
240
 
202
- const sdk = new PersSDK(new BrowserFetchClientAdapter(), {
241
+ const sdk = createPersSDK(new BrowserFetchClientAdapter(), {
203
242
  environment: 'production',
204
243
  apiProjectKey: 'your-project-key'
205
244
  });
@@ -208,6 +247,8 @@ const sdk = new PersSDK(new BrowserFetchClientAdapter(), {
208
247
  const campaigns = await sdk.campaigns.getActiveCampaigns();
209
248
  ```
210
249
 
250
+ > **⚠️ Browser Note:** Always use `BrowserFetchClientAdapter` for browser/React/Vue apps. Do not import `NodeHttpClientAdapter` in browser code - it contains Node.js-specific imports that will cause build errors.
251
+
211
252
  ### Angular
212
253
 
213
254
  **Requires `rxjs` peer dependency.**
@@ -256,19 +297,23 @@ export class PersSDKService {
256
297
 
257
298
  ### Node.js
258
299
 
259
- **No additional dependencies required.**
300
+ **No additional dependencies required.** Use the dedicated Node.js entry point:
260
301
 
261
302
  ```typescript
262
- import { PersSDK } from '@explorins/pers-sdk';
263
- import { NodeHttpClientAdapter } from '@explorins/pers-sdk/platform-adapters';
303
+ import { createNodeSDK } from '@explorins/pers-sdk/node';
264
304
 
265
- const sdk = new PersSDK(new NodeHttpClientAdapter(), {
266
- environment: 'production',
267
- apiProjectKey: 'your-project-key'
305
+ // Convenience function for Node.js - auto-configures adapter
306
+ const sdk = createNodeSDK({
307
+ jwt: 'your-jwt-token',
308
+ projectKey: 'your-project-key',
309
+ environment: 'production'
268
310
  });
269
311
 
270
- // Server-side operations
271
- const businesses = await sdk.businesses.getActiveBusinesses();
312
+ // Ready to use
313
+ const campaigns = await sdk.campaigns.getActiveCampaigns();
314
+ const userClaims = await sdk.campaigns.getCampaignClaims({
315
+ userId: 'user-123'
316
+ });
272
317
  ```
273
318
 
274
319
  ### React Native
@@ -853,11 +898,11 @@ const sdk = new PersSDK(new BrowserFetchClientAdapter(), {
853
898
  For better security and performance, use IndexedDB instead of LocalStorage:
854
899
 
855
900
  ```typescript
856
- import { PersSDK } from '@explorins/pers-sdk';
901
+ import { createPersSDK } from '@explorins/pers-sdk';
857
902
  import { IndexedDBTokenStorage } from '@explorins/pers-sdk/core';
858
903
  import { BrowserFetchClientAdapter } from '@explorins/pers-sdk/platform-adapters';
859
904
 
860
- const sdk = new PersSDK(new BrowserFetchClientAdapter(), {
905
+ const sdk = createPersSDK(new BrowserFetchClientAdapter(), {
861
906
  environment: 'production',
862
907
  apiProjectKey: 'your-key',
863
908
  authStorage: new IndexedDBTokenStorage() // Secure, async storage
@@ -952,10 +997,18 @@ const retryable = ErrorUtils.isRetryable(error); // Check if retryable
952
997
 
953
998
  ## Bundle Size
954
999
 
955
- - **Core SDK**: ~85 KB (minified)
956
- - **Tree-shaking**: Fully supported - import only what you need
957
- - **Zero runtime dependencies**: No RxJS, no heavy libraries in core
958
- - **Native APIs**: Uses browser-native `fetch`, `crypto`, `IndexedDB`
1000
+ - **Installed to node_modules**: ~1.9 MB unpacked (includes both ESM + CJS builds, TypeScript definitions, source maps)
1001
+ - **What your bundler actually includes**:
1002
+ - ESM build: ~450 KB (Vite, Rollup, modern Webpack)
1003
+ - CJS build: ~470 KB (legacy Node.js/Webpack)
1004
+ - Your bundler only includes ONE of these, not both
1005
+ - **TypeScript definitions**: ~510 KB (used by IDE/compiler, not bundled into your app)
1006
+ - **Source maps**: ~440 KB (used for debugging, typically excluded from production)
1007
+ - **With Web3 Features**: +1.5 MB additional when installing optional `@explorins/web3-ts` + `ethers` peer dependencies
1008
+ - **Tree-shaking**: The main `PersSDK` class includes all managers. For smaller bundles, import from domain-specific entry points (e.g., `@explorins/pers-sdk/campaign`)
1009
+ - **Zero bundled dependencies**: All dependencies are peer dependencies
1010
+
1011
+ **Bottom line:** Your production bundle gets ~450 KB from this SDK (ESM), not 1.9 MB. The larger size is what's stored in `node_modules`, which includes both module formats, type definitions, and development tools.
959
1012
 
960
1013
  ---
961
1014
 
@@ -1023,16 +1076,17 @@ import type {
1023
1076
  ### Usage Example
1024
1077
 
1025
1078
  ```typescript
1026
- import { PersSDK } from '@explorins/pers-sdk';
1079
+ import { createPersSDK } from '@explorins/pers-sdk';
1027
1080
  import { BrowserFetchClientAdapter } from '@explorins/pers-sdk/platform-adapters';
1028
1081
  import type { CampaignDTO, CampaignClaimRequestDTO } from '@explorins/pers-shared';
1029
1082
 
1030
- const sdk = new PersSDK(new BrowserFetchClientAdapter(), {
1083
+ const sdk = createPersSDK(new BrowserFetchClientAdapter(), {
1031
1084
  apiProjectKey: 'your-key'
1032
1085
  });
1033
1086
 
1034
1087
  // Type-safe campaign operations
1035
- const campaigns: CampaignDTO[] = await sdk.campaigns.getActiveCampaigns();
1088
+ const response = await sdk.campaigns.getActiveCampaigns();
1089
+ const campaigns: CampaignDTO[] = response.data;
1036
1090
 
1037
1091
  const claimRequest: CampaignClaimRequestDTO = {
1038
1092
  campaignId: campaigns[0].id,
@@ -7,6 +7,4 @@
7
7
  export { AnalyticsApi } from './api/analytics-api';
8
8
  export { AnalyticsService } from './services/analytics-service';
9
9
  export * from './models';
10
- export * from '../shared/interfaces/pers-shared-lib.interfaces';
11
- export * from './models';
12
10
  //# 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"}
@@ -4,18 +4,9 @@
4
4
  * Re-exports from @explorins/pers-shared for consistency with backend
5
5
  * and to provide a single import source for analytics-related types.
6
6
  */
7
- import { AnalyticsGroupByType, AnalyticsMetricType, TransactionAnalyticsRequestDTO, TransactionAnalyticsResponseDTO, TransactionAnalyticsResultItem, GroupByExpressionDTO } from '@explorins/pers-shared/browser';
7
+ import { AnalyticsGroupByType, AnalyticsMetricType, TransactionAnalyticsRequestDTO, TransactionAnalyticsResponseDTO, TransactionAnalyticsResultItem, GroupByExpressionDTO } from '@explorins/pers-shared';
8
8
  export { TransactionAnalyticsRequestDTO, TransactionAnalyticsResponseDTO, TransactionAnalyticsResultItem };
9
9
  export type TransactionAnalyticsGroupByExpression = GroupByExpressionDTO;
10
- export type TransactionAnalyticsFilters = {
11
- status?: string;
12
- tokenType?: string;
13
- triggerProcessType?: string;
14
- tenantId?: string;
15
- chainId?: number;
16
- type?: string;
17
- [key: string]: any;
18
- };
19
10
  export type TransactionAnalyticsGroupBy = AnalyticsGroupByType;
20
11
  export type TransactionAnalyticsMetric = AnalyticsMetricType;
21
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analytics/models/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC9B,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC/B,CAAC;AAEF,MAAM,MAAM,qCAAqC,GAAG,oBAAoB,CAAC;AAEzE,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAGF,MAAM,MAAM,2BAA2B,GAAG,oBAAoB,CAAC;AAE/D,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analytics/models/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC9B,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC/B,CAAC;AAEF,MAAM,MAAM,qCAAqC,GAAG,oBAAoB,CAAC;AAMzE,MAAM,MAAM,2BAA2B,GAAG,oBAAoB,CAAC;AAE/D,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,CAAC"}
@@ -1,34 +1,49 @@
1
1
  'use strict';
2
2
 
3
- var analyticsService = require('./chunks/analytics-service-CitlimKJ.cjs');
4
- var persShared = require('@explorins/pers-shared');
3
+ /**
4
+ * Platform-Agnostic Analytics API Client
5
+ *
6
+ * Handles analytics operations using the PERS backend.
7
+ * Uses @explorins/pers-shared DTOs for consistency with backend.
8
+ */
9
+ class AnalyticsApi {
10
+ constructor(apiClient) {
11
+ this.apiClient = apiClient;
12
+ }
13
+ // ==========================================
14
+ // ADMIN OPERATIONS
15
+ // ==========================================
16
+ /**
17
+ * ADMIN: Get transaction analytics with filtering and aggregation
18
+ */
19
+ async getTransactionAnalytics(request) {
20
+ return this.apiClient.post('/transactions/analytics', request);
21
+ }
22
+ }
5
23
 
24
+ /**
25
+ * Platform-Agnostic Analytics Service
26
+ *
27
+ * Contains analytics business logic and operations that work across platforms.
28
+ * No framework dependencies - pure TypeScript business logic.
29
+ *
30
+ * Focuses only on actual backend capabilities.
31
+ */
32
+ class AnalyticsService {
33
+ constructor(analyticsApi) {
34
+ this.analyticsApi = analyticsApi;
35
+ }
36
+ // ==========================================
37
+ // ADMIN OPERATIONS
38
+ // ==========================================
39
+ /**
40
+ * ADMIN: Get transaction analytics with filtering and aggregation
41
+ */
42
+ async getTransactionAnalytics(request) {
43
+ return this.analyticsApi.getTransactionAnalytics(request);
44
+ }
45
+ }
6
46
 
7
-
8
- exports.AnalyticsApi = analyticsService.AnalyticsApi;
9
- exports.AnalyticsService = analyticsService.AnalyticsService;
10
- Object.defineProperty(exports, "AccountOwnerType", {
11
- enumerable: true,
12
- get: function () { return persShared.AccountOwnerType; }
13
- });
14
- Object.defineProperty(exports, "ApiKeyType", {
15
- enumerable: true,
16
- get: function () { return persShared.ApiKeyType; }
17
- });
18
- Object.defineProperty(exports, "MEMBERSHIP_ROLE_HIERARCHY", {
19
- enumerable: true,
20
- get: function () { return persShared.MEMBERSHIP_ROLE_HIERARCHY; }
21
- });
22
- Object.defineProperty(exports, "MembershipRole", {
23
- enumerable: true,
24
- get: function () { return persShared.MembershipRole; }
25
- });
26
- Object.defineProperty(exports, "NativeTokenTypes", {
27
- enumerable: true,
28
- get: function () { return persShared.NativeTokenTypes; }
29
- });
30
- Object.defineProperty(exports, "hasMinimumRole", {
31
- enumerable: true,
32
- get: function () { return persShared.hasMinimumRole; }
33
- });
47
+ exports.AnalyticsApi = AnalyticsApi;
48
+ exports.AnalyticsService = AnalyticsService;
34
49
  //# sourceMappingURL=analytics.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"analytics.cjs","sources":["../src/analytics/api/analytics-api.ts","../src/analytics/services/analytics-service.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;AAIA;;;;;AAKG;MACU,YAAY,CAAA;AACvB,IAAA,WAAA,CAAoB,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;;;;AAM/C;;AAEG;IACH,MAAM,uBAAuB,CAAC,OAAuC,EAAA;QACnE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAkC,yBAAyB,EAAE,OAAO,CAAC;IACjG;AACD;;ACjBD;;;;;;;AAOG;MACU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAiB;;;;AAMjD;;AAEG;IACH,MAAM,uBAAuB,CAAC,OAAuC,EAAA;QACnE,OAAO,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC;IAC3D;AACD;;;;;"}
package/dist/analytics.js CHANGED
@@ -1,3 +1,46 @@
1
- export { A as AnalyticsApi, a as AnalyticsService } from './chunks/analytics-service-CxyrOwel.js';
2
- export { AccountOwnerType, ApiKeyType, MEMBERSHIP_ROLE_HIERARCHY, MembershipRole, NativeTokenTypes, hasMinimumRole } from '@explorins/pers-shared';
1
+ /**
2
+ * Platform-Agnostic Analytics API Client
3
+ *
4
+ * Handles analytics operations using the PERS backend.
5
+ * Uses @explorins/pers-shared DTOs for consistency with backend.
6
+ */
7
+ class AnalyticsApi {
8
+ constructor(apiClient) {
9
+ this.apiClient = apiClient;
10
+ }
11
+ // ==========================================
12
+ // ADMIN OPERATIONS
13
+ // ==========================================
14
+ /**
15
+ * ADMIN: Get transaction analytics with filtering and aggregation
16
+ */
17
+ async getTransactionAnalytics(request) {
18
+ return this.apiClient.post('/transactions/analytics', request);
19
+ }
20
+ }
21
+
22
+ /**
23
+ * Platform-Agnostic Analytics Service
24
+ *
25
+ * Contains analytics business logic and operations that work across platforms.
26
+ * No framework dependencies - pure TypeScript business logic.
27
+ *
28
+ * Focuses only on actual backend capabilities.
29
+ */
30
+ class AnalyticsService {
31
+ constructor(analyticsApi) {
32
+ this.analyticsApi = analyticsApi;
33
+ }
34
+ // ==========================================
35
+ // ADMIN OPERATIONS
36
+ // ==========================================
37
+ /**
38
+ * ADMIN: Get transaction analytics with filtering and aggregation
39
+ */
40
+ async getTransactionAnalytics(request) {
41
+ return this.analyticsApi.getTransactionAnalytics(request);
42
+ }
43
+ }
44
+
45
+ export { AnalyticsApi, AnalyticsService };
3
46
  //# sourceMappingURL=analytics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"analytics.js","sources":["../src/analytics/api/analytics-api.ts","../src/analytics/services/analytics-service.ts"],"sourcesContent":[null,null],"names":[],"mappings":"AAIA;;;;;AAKG;MACU,YAAY,CAAA;AACvB,IAAA,WAAA,CAAoB,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;;;;AAM/C;;AAEG;IACH,MAAM,uBAAuB,CAAC,OAAuC,EAAA;QACnE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAkC,yBAAyB,EAAE,OAAO,CAAC;IACjG;AACD;;ACjBD;;;;;;;AAOG;MACU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAiB;;;;AAMjD;;AAEG;IACH,MAAM,uBAAuB,CAAC,OAAuC,EAAA;QACnE,OAAO,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC;IAC3D;AACD;;;;"}
@@ -8,5 +8,4 @@ export { BusinessApi } from './api/business-api';
8
8
  export { BusinessMembershipApi } from './api/business-membership-api';
9
9
  export { BusinessService } from './services/business-service';
10
10
  export { BusinessMembershipService } from './services/business-membership-service';
11
- export * from '../shared/interfaces/pers-shared-lib.interfaces';
12
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/business/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAGnF,cAAc,iDAAiD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/business/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC"}