@explorins/pers-sdk 2.0.6 → 2.0.7

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 (62) hide show
  1. package/dist/campaign/api/campaign-api.d.ts +19 -8
  2. package/dist/campaign/api/campaign-api.d.ts.map +1 -1
  3. package/dist/campaign/services/campaign-service.d.ts +10 -2
  4. package/dist/campaign/services/campaign-service.d.ts.map +1 -1
  5. package/dist/campaign.cjs +1 -1
  6. package/dist/campaign.js +1 -1
  7. package/dist/chunks/{campaign-service-Ae164xl8.cjs → campaign-service-CdEz0jpP.cjs} +29 -16
  8. package/dist/chunks/{campaign-service-Ae164xl8.cjs.map → campaign-service-CdEz0jpP.cjs.map} +1 -1
  9. package/dist/chunks/{campaign-service-rlK4WeSY.js → campaign-service-DrTAqFZM.js} +29 -16
  10. package/dist/chunks/{campaign-service-rlK4WeSY.js.map → campaign-service-DrTAqFZM.js.map} +1 -1
  11. package/dist/chunks/environment-C73snhIJ.cjs +145 -0
  12. package/dist/chunks/environment-C73snhIJ.cjs.map +1 -0
  13. package/dist/chunks/environment-CKVwRAEL.js +140 -0
  14. package/dist/chunks/environment-CKVwRAEL.js.map +1 -0
  15. package/dist/chunks/node-http-client-D_avaa5F.cjs +88 -0
  16. package/dist/chunks/node-http-client-D_avaa5F.cjs.map +1 -0
  17. package/dist/chunks/node-http-client-DloDLfm9.js +86 -0
  18. package/dist/chunks/node-http-client-DloDLfm9.js.map +1 -0
  19. package/dist/chunks/{pers-sdk-DLTY5heK.js → pers-sdk-JIExM712.js} +51 -157
  20. package/dist/chunks/pers-sdk-JIExM712.js.map +1 -0
  21. package/dist/chunks/{pers-sdk-Bm6y6cX4.cjs → pers-sdk-h-uoLpBx.cjs} +50 -160
  22. package/dist/chunks/pers-sdk-h-uoLpBx.cjs.map +1 -0
  23. package/dist/chunks/{web3-chain-service-6vsVHPjl.cjs → web3-chain-service-BeBjALg2.cjs} +82 -163
  24. package/dist/chunks/web3-chain-service-BeBjALg2.cjs.map +1 -0
  25. package/dist/chunks/{web3-chain-service-BcUeeujC.js → web3-chain-service-DKHCnHQX.js} +83 -163
  26. package/dist/chunks/web3-chain-service-DKHCnHQX.js.map +1 -0
  27. package/dist/core/auth/static-jwt-auth-provider.d.ts +5 -0
  28. package/dist/core/auth/static-jwt-auth-provider.d.ts.map +1 -1
  29. package/dist/core/errors/index.d.ts +30 -83
  30. package/dist/core/errors/index.d.ts.map +1 -1
  31. package/dist/core/pers-api-client.d.ts.map +1 -1
  32. package/dist/core/version.d.ts +3 -3
  33. package/dist/core/version.d.ts.map +1 -1
  34. package/dist/core.cjs +8 -8
  35. package/dist/core.js +4 -3
  36. package/dist/core.js.map +1 -1
  37. package/dist/index.cjs +10 -9
  38. package/dist/index.cjs.map +1 -1
  39. package/dist/index.js +6 -4
  40. package/dist/index.js.map +1 -1
  41. package/dist/managers/campaign-manager.d.ts +36 -1
  42. package/dist/managers/campaign-manager.d.ts.map +1 -1
  43. package/dist/node.cjs +100 -0
  44. package/dist/node.cjs.map +1 -0
  45. package/dist/node.d.ts +70 -0
  46. package/dist/node.d.ts.map +1 -0
  47. package/dist/node.js +94 -0
  48. package/dist/node.js.map +1 -0
  49. package/dist/package.json +9 -2
  50. package/dist/pers-sdk.d.ts.map +1 -1
  51. package/dist/platform-adapters/node-http-client.d.ts.map +1 -1
  52. package/dist/platform-adapters.cjs +3 -66
  53. package/dist/platform-adapters.cjs.map +1 -1
  54. package/dist/platform-adapters.js +3 -66
  55. package/dist/platform-adapters.js.map +1 -1
  56. package/dist/web3-chain.cjs +1 -1
  57. package/dist/web3-chain.js +1 -1
  58. package/package.json +9 -2
  59. package/dist/chunks/pers-sdk-Bm6y6cX4.cjs.map +0 -1
  60. package/dist/chunks/pers-sdk-DLTY5heK.js.map +0 -1
  61. package/dist/chunks/web3-chain-service-6vsVHPjl.cjs.map +0 -1
  62. package/dist/chunks/web3-chain-service-BcUeeujC.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var persShared = require('@explorins/pers-shared');
3
4
  var index = require('./index-B6-bbNnd.cjs');
4
5
  var ethers = require('@explorins/web3-ts/ethers');
5
6
 
@@ -78,7 +79,7 @@ class ErrorUtils {
78
79
  const err = error;
79
80
  // Try structured error first (check multiple formats: axios, Angular, etc.)
80
81
  const apiError = err?.response?.data || err?.error || err;
81
- return apiError?.message || apiError?.detail || apiError?.userMessage || err?.message || 'Request failed';
82
+ return apiError?.message || apiError?.detail || err?.message || 'Request failed';
82
83
  }
83
84
  /**
84
85
  * Fast status code extraction
@@ -109,87 +110,73 @@ class ErrorUtils {
109
110
  }
110
111
  /**
111
112
  * Extract detailed error information from backend response
112
- * Centralized method for consistent error structure extraction
113
- *
114
- * Platform-agnostic extraction order:
115
- * 1. React Native: Parses "HTTP xxx: ... - {json}" message format
116
- * 2. Axios/fetch: error.response.data
117
- * 3. Direct backend response: error.status && error.title
118
- * 4. Angular HttpErrorResponse: error.error
119
- * 5. Fallback: constructs generic error from available info
113
+ * Tries multiple extraction strategies to find structured error data
120
114
  */
121
115
  static extractBackendErrorDetails(error) {
122
116
  try {
123
- // Try to extract structured error response from HTTP error
124
- if (error && typeof error === 'object') {
125
- const httpError = error;
126
- // Use centralized parsing for React Native HTTP client format
127
- const parsedError = this.parseHttpClientError(error);
128
- if (parsedError && typeof parsedError === 'object') {
129
- return parsedError;
130
- }
131
- // Check if error has response data (common in HTTP clients)
132
- if (httpError.response?.data) {
133
- return httpError.response.data;
134
- }
135
- // Check if error itself contains the backend structure
136
- if (httpError.status && httpError.title) {
137
- return httpError;
138
- }
139
- // Check for nested error details
140
- if (httpError.error) {
141
- return httpError.error;
117
+ if (!error || typeof error !== 'object') {
118
+ return this.createFallbackError(error);
119
+ }
120
+ const httpError = error;
121
+ // Try extraction strategies in priority order
122
+ const candidates = [
123
+ this.parseHttpClientError(error), // React Native format
124
+ httpError.response?.data, // Axios/fetch format
125
+ httpError.error, // Angular HttpErrorResponse
126
+ httpError // Direct error object
127
+ ];
128
+ for (const candidate of candidates) {
129
+ if (this.hasStructuredErrorFields(candidate)) {
130
+ return candidate;
142
131
  }
143
132
  }
144
- // Fallback to generic error structure matching your backend format
145
- return {
146
- status: this.getStatus(error) || 500,
147
- title: 'Request failed',
148
- message: this.getMessage(error),
149
- userMessage: 'An error occurred. Please try again.',
150
- detail: this.getMessage(error),
151
- code: 'REQUEST_FAILED',
152
- category: 'TECHNICAL',
153
- domain: 'api',
154
- retryable: this.isRetryable(error)
155
- };
133
+ return this.createFallbackError(error);
156
134
  }
157
135
  catch {
158
- // Safe fallback if error extraction fails
159
- return {
160
- status: 500,
161
- message: 'Unknown error occurred',
162
- userMessage: 'An error occurred. Please try again.'
163
- };
136
+ return this.createFallbackError(error);
164
137
  }
165
138
  }
166
139
  /**
167
- * Parse React Native HTTP client error format
168
- * Handles format: "HTTP 401: Unauthorized - {json}"
140
+ * Check if object has structured error fields from backend (StructuredError)
141
+ */
142
+ static hasStructuredErrorFields(obj) {
143
+ return obj && typeof obj === 'object' &&
144
+ ((obj.code && obj.category) || (obj.status && (obj.detail || obj.message || obj.title)));
145
+ }
146
+ /**
147
+ * Create fallback error structure when no structured error found
148
+ */
149
+ static createFallbackError(error) {
150
+ return {
151
+ status: this.getStatus(error) || 500,
152
+ title: 'Request failed',
153
+ message: this.getMessage(error),
154
+ detail: this.getMessage(error),
155
+ code: 'REQUEST_FAILED',
156
+ category: persShared.ErrorCategory.TECHNICAL,
157
+ domain: 'api',
158
+ retryable: this.isRetryable(error)
159
+ };
160
+ }
161
+ /**
162
+ * Parse React Native HTTP client error format: "HTTP 401: Unauthorized - {json}"
169
163
  */
170
164
  static parseHttpClientError(error) {
171
165
  try {
172
- if (typeof error === 'object' && error !== null) {
173
- const err = error;
174
- const message = err?.message || '';
175
- if (typeof message === 'string' && message.includes('HTTP') && message.includes(' - ')) {
176
- // Extract JSON part after " - "
177
- const jsonStart = message.lastIndexOf(' - ');
178
- if (jsonStart !== -1) {
179
- const jsonStr = message.substring(jsonStart + 3);
180
- if (jsonStr.trim()) {
181
- try {
182
- return JSON.parse(jsonStr);
183
- }
184
- catch {
185
- // If JSON parsing fails, return the raw string as message
186
- return { message: jsonStr };
187
- }
188
- }
189
- }
190
- }
166
+ const message = error?.message || '';
167
+ if (typeof message !== 'string' || !message.includes(' - ')) {
168
+ return null;
169
+ }
170
+ const jsonStart = message.lastIndexOf(' - ');
171
+ const jsonStr = message.substring(jsonStart + 3).trim();
172
+ if (!jsonStr)
173
+ return null;
174
+ try {
175
+ return JSON.parse(jsonStr);
176
+ }
177
+ catch {
178
+ return null;
191
179
  }
192
- return null;
193
180
  }
194
181
  catch {
195
182
  return null;
@@ -200,7 +187,7 @@ class ErrorUtils {
200
187
  */
201
188
  static isPersApiError(error) {
202
189
  return typeof error === 'object' && error !== null &&
203
- 'errorCode' in error && 'domain' in error && 'category' in error;
190
+ 'code' in error && 'domain' in error && 'category' in error;
204
191
  }
205
192
  }
206
193
  // SDK-specific error classes for auth flows
@@ -236,115 +223,48 @@ class LogoutRequired extends Error {
236
223
  this.name = 'LogoutRequired';
237
224
  }
238
225
  }
226
+ /**
227
+ * API error with backend StructuredError details
228
+ */
239
229
  class PersApiError extends Error {
240
- constructor(message, endpoint, method, status, retryable = false, backendError) {
241
- // Use clean backend message directly - no prefix!
242
- // Priority: userMessage > message > title > fallback
243
- const cleanMessage = backendError?.userMessage
244
- || backendError?.message
245
- || backendError?.title
246
- || message;
247
- super(cleanMessage);
230
+ constructor(message, endpoint, method, statusCode, backendError) {
231
+ super(backendError?.message || message);
248
232
  this.endpoint = endpoint;
249
233
  this.method = method;
250
- this.status = status;
251
234
  this.name = 'PersApiError';
252
- this.retryable = retryable;
253
- this.backendError = backendError;
254
- // Use backend values when available, SDK defaults otherwise
255
- this.errorCode = backendError?.code || 'PERS_API_ERROR';
235
+ // Use backend error details directly
236
+ this.code = backendError?.code || 'API_ERROR';
256
237
  this.domain = backendError?.domain || 'api';
257
- this.category = backendError?.category || 'TECHNICAL';
258
- }
259
- /**
260
- * Get the backend error code (e.g., 'CAMPAIGN_BUSINESS_REQUIRED')
261
- */
262
- get code() {
263
- return this.errorCode;
238
+ this.category = backendError?.category || persShared.ErrorCategory.TECHNICAL;
239
+ this.retryable = backendError?.retryable ?? (statusCode ? statusCode >= 500 : false);
240
+ this.message = backendError?.message || message;
241
+ this.status = backendError?.status || statusCode || 500;
242
+ this.title = backendError?.title || 'Request failed';
243
+ this.detail = backendError?.detail || backendError?.message || message;
264
244
  }
265
245
  }
266
246
  class AuthenticationError extends PersApiError {
267
- constructor(message, endpoint, method, backendErrorCode, backendUserMessage, backendTitle) {
268
- // Build backendError from auth-specific params
269
- const backendError = {
270
- code: backendErrorCode || 'AUTHENTICATION_ERROR',
271
- userMessage: backendUserMessage,
272
- title: backendTitle,
273
- message: message,
247
+ constructor(message, endpoint, method, backendError) {
248
+ super(message, endpoint, method, 401, {
249
+ ...backendError,
274
250
  domain: 'authentication',
275
- category: 'AUTHENTICATION'
276
- };
277
- super(message, endpoint, method, 401, false, backendError);
251
+ category: persShared.ErrorCategory.SECURITY
252
+ });
278
253
  this.name = 'AuthenticationError';
279
254
  }
280
255
  }
281
- /**
282
- * Error thrown when user has multiple business memberships
283
- * and needs to explicitly select one.
284
- *
285
- * @example Handling multi-business selection
286
- * ```typescript
287
- * try {
288
- * await sdk.auth.loginAsBusiness(jwt);
289
- * } catch (error) {
290
- * if (error instanceof MultipleContextSelectionRequiredError) {
291
- * // Show business selector UI
292
- * const selectedId = await showBusinessSelector(error.availableOptions);
293
- * await sdk.auth.loginAsBusiness(jwt, { businessId: selectedId });
294
- * }
295
- * }
296
- * ```
297
- */
298
- class MultipleContextSelectionRequiredError extends Error {
299
- constructor(message, userMessage, contextType, availableOptions) {
300
- super(message);
301
- this.userMessage = userMessage;
302
- this.contextType = contextType;
303
- this.availableOptions = availableOptions;
304
- this.errorCode = 'MULTIPLE_CONTEXT_SELECTION_REQUIRED';
305
- this.domain = 'auth';
306
- this.category = 'VALIDATION';
307
- this.status = 400;
308
- this.retryable = true;
309
- this.name = 'MultipleContextSelectionRequiredError';
310
- }
311
- /**
312
- * Type guard to check if an error is a MultipleContextSelectionRequiredError
313
- */
314
- static isMultipleContextError(error) {
315
- if (error instanceof MultipleContextSelectionRequiredError) {
316
- return true;
317
- }
318
- // Also check for backend error format
319
- if (typeof error === 'object' && error !== null) {
320
- const err = error;
321
- const errorCode = err?.code || err?.response?.data?.code;
322
- return errorCode === 'MULTIPLE_CONTEXT_SELECTION_REQUIRED';
323
- }
324
- return false;
325
- }
326
- /**
327
- * Extract available options from a backend error response
328
- */
329
- static fromBackendError(error) {
330
- if (typeof error !== 'object' || error === null)
331
- return null;
332
- const err = error;
333
- const data = err?.response?.data || err;
334
- if (data?.code === 'MULTIPLE_CONTEXT_SELECTION_REQUIRED') {
335
- return new MultipleContextSelectionRequiredError(data.message || 'Multiple context selection required', data.userMessage || 'Please select a context to continue.', data.contextType || 'business', data.availableOptions || []);
336
- }
337
- return null;
338
- }
339
- }
340
256
  class NetworkError extends Error {
341
257
  constructor(message) {
342
- super(`Network error: ${message}`);
343
- this.errorCode = 'NETWORK_ERROR';
258
+ super(message);
259
+ this.code = 'NETWORK_ERROR';
344
260
  this.domain = 'api';
345
- this.category = 'INFRASTRUCTURE';
261
+ this.category = persShared.ErrorCategory.INFRASTRUCTURE;
346
262
  this.retryable = true;
263
+ this.status = 0;
264
+ this.title = 'Network error';
347
265
  this.name = 'NetworkError';
266
+ this.message = message;
267
+ this.detail = message;
348
268
  }
349
269
  }
350
270
  const ApiErrorDetector = {
@@ -576,7 +496,6 @@ exports.ApiErrorDetector = ApiErrorDetector;
576
496
  exports.AuthenticationError = AuthenticationError;
577
497
  exports.ErrorUtils = ErrorUtils;
578
498
  exports.LogoutRequired = LogoutRequired;
579
- exports.MultipleContextSelectionRequiredError = MultipleContextSelectionRequiredError;
580
499
  exports.NetworkError = NetworkError;
581
500
  exports.PersApiError = PersApiError;
582
501
  exports.ProviderTokenRefreshNeeded = ProviderTokenRefreshNeeded;
@@ -584,4 +503,4 @@ exports.TokenRefreshNeeded = TokenRefreshNeeded;
584
503
  exports.Web3ChainApi = Web3ChainApi;
585
504
  exports.Web3ChainService = Web3ChainService;
586
505
  exports.isTokenExpired = isTokenExpired;
587
- //# sourceMappingURL=web3-chain-service-6vsVHPjl.cjs.map
506
+ //# sourceMappingURL=web3-chain-service-BeBjALg2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web3-chain-service-BeBjALg2.cjs","sources":["../../src/core/utils/jwt.function.ts","../../src/core/errors/index.ts","../../src/web3-chain/api/web3-chain-api.ts","../../src/web3-chain/services/getWeb3FCD.service.ts","../../src/web3-chain/services/web3-chain-service.ts"],"sourcesContent":[null,null,null,null,null],"names":["ErrorCategory","FetchRequest","JsonRpcProvider","globalCacheService","CacheTTL"],"mappings":"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"}