@explorins/pers-sdk 2.0.5 → 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 (65) 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-DiRtm_VD.js → pers-sdk-JIExM712.js} +96 -161
  20. package/dist/chunks/pers-sdk-JIExM712.js.map +1 -0
  21. package/dist/chunks/{pers-sdk-OV5kUFLD.cjs → pers-sdk-h-uoLpBx.cjs} +95 -164
  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 +13 -5
  32. package/dist/core/pers-api-client.d.ts.map +1 -1
  33. package/dist/core/version.d.ts +3 -3
  34. package/dist/core/version.d.ts.map +1 -1
  35. package/dist/core.cjs +8 -8
  36. package/dist/core.js +4 -3
  37. package/dist/core.js.map +1 -1
  38. package/dist/index.cjs +10 -9
  39. package/dist/index.cjs.map +1 -1
  40. package/dist/index.js +6 -4
  41. package/dist/index.js.map +1 -1
  42. package/dist/managers/auth-manager.d.ts +31 -0
  43. package/dist/managers/auth-manager.d.ts.map +1 -1
  44. package/dist/managers/campaign-manager.d.ts +36 -1
  45. package/dist/managers/campaign-manager.d.ts.map +1 -1
  46. package/dist/node.cjs +100 -0
  47. package/dist/node.cjs.map +1 -0
  48. package/dist/node.d.ts +70 -0
  49. package/dist/node.d.ts.map +1 -0
  50. package/dist/node.js +94 -0
  51. package/dist/node.js.map +1 -0
  52. package/dist/package.json +9 -2
  53. package/dist/pers-sdk.d.ts.map +1 -1
  54. package/dist/platform-adapters/node-http-client.d.ts.map +1 -1
  55. package/dist/platform-adapters.cjs +3 -66
  56. package/dist/platform-adapters.cjs.map +1 -1
  57. package/dist/platform-adapters.js +3 -66
  58. package/dist/platform-adapters.js.map +1 -1
  59. package/dist/web3-chain.cjs +1 -1
  60. package/dist/web3-chain.js +1 -1
  61. package/package.json +9 -2
  62. package/dist/chunks/pers-sdk-DiRtm_VD.js.map +0 -1
  63. package/dist/chunks/pers-sdk-OV5kUFLD.cjs.map +0 -1
  64. package/dist/chunks/web3-chain-service-6vsVHPjl.cjs.map +0 -1
  65. package/dist/chunks/web3-chain-service-BcUeeujC.js.map +0 -1
@@ -0,0 +1,140 @@
1
+ class IndexedDBTokenStorage {
2
+ constructor() {
3
+ this.supportsObjects = true;
4
+ this.dbPromise = null;
5
+ if (typeof indexedDB === 'undefined') {
6
+ console.warn('IndexedDB is not available in this environment');
7
+ }
8
+ }
9
+ getDB() {
10
+ if (this.dbPromise)
11
+ return this.dbPromise;
12
+ this.dbPromise = new Promise((resolve, reject) => {
13
+ if (typeof indexedDB === 'undefined') {
14
+ return reject(new Error('IndexedDB not supported'));
15
+ }
16
+ const request = indexedDB.open(IndexedDBTokenStorage.DB_NAME, IndexedDBTokenStorage.DB_VERSION);
17
+ request.onupgradeneeded = (event) => {
18
+ const db = event.target.result;
19
+ if (!db.objectStoreNames.contains(IndexedDBTokenStorage.STORE_NAME)) {
20
+ db.createObjectStore(IndexedDBTokenStorage.STORE_NAME);
21
+ }
22
+ };
23
+ request.onsuccess = (event) => {
24
+ resolve(event.target.result);
25
+ };
26
+ request.onerror = (event) => {
27
+ reject(event.target.error);
28
+ };
29
+ });
30
+ return this.dbPromise;
31
+ }
32
+ async get(key) {
33
+ try {
34
+ const db = await this.getDB();
35
+ return new Promise((resolve, reject) => {
36
+ const transaction = db.transaction(IndexedDBTokenStorage.STORE_NAME, 'readonly');
37
+ const store = transaction.objectStore(IndexedDBTokenStorage.STORE_NAME);
38
+ const request = store.get(key);
39
+ request.onsuccess = () => resolve(request.result || null);
40
+ request.onerror = () => reject(request.error);
41
+ });
42
+ }
43
+ catch (e) {
44
+ console.warn('[IndexedDBTokenStorage] Failed to get key', key, e);
45
+ return null;
46
+ }
47
+ }
48
+ async set(key, value) {
49
+ try {
50
+ const db = await this.getDB();
51
+ return new Promise((resolve, reject) => {
52
+ const transaction = db.transaction(IndexedDBTokenStorage.STORE_NAME, 'readwrite');
53
+ const store = transaction.objectStore(IndexedDBTokenStorage.STORE_NAME);
54
+ const request = store.put(value, key);
55
+ request.onsuccess = () => resolve();
56
+ request.onerror = () => reject(request.error);
57
+ });
58
+ }
59
+ catch (e) {
60
+ console.error('[IndexedDBTokenStorage] Failed to set key', key, e);
61
+ throw e;
62
+ }
63
+ }
64
+ async remove(key) {
65
+ try {
66
+ const db = await this.getDB();
67
+ return new Promise((resolve, reject) => {
68
+ const transaction = db.transaction(IndexedDBTokenStorage.STORE_NAME, 'readwrite');
69
+ const store = transaction.objectStore(IndexedDBTokenStorage.STORE_NAME);
70
+ const request = store.delete(key);
71
+ request.onsuccess = () => resolve();
72
+ request.onerror = () => reject(request.error);
73
+ });
74
+ }
75
+ catch (e) {
76
+ console.warn('[IndexedDBTokenStorage] Failed to remove key', key, e);
77
+ }
78
+ }
79
+ async clear() {
80
+ try {
81
+ const db = await this.getDB();
82
+ return new Promise((resolve, reject) => {
83
+ const transaction = db.transaction(IndexedDBTokenStorage.STORE_NAME, 'readwrite');
84
+ const store = transaction.objectStore(IndexedDBTokenStorage.STORE_NAME);
85
+ const request = store.clear();
86
+ request.onsuccess = () => resolve();
87
+ request.onerror = () => reject(request.error);
88
+ });
89
+ }
90
+ catch (e) {
91
+ console.warn('[IndexedDBTokenStorage] Failed to clear storage', e);
92
+ }
93
+ }
94
+ }
95
+ IndexedDBTokenStorage.DB_NAME = 'pers-sdk-storage';
96
+ IndexedDBTokenStorage.STORE_NAME = 'auth-tokens';
97
+ IndexedDBTokenStorage.DB_VERSION = 1;
98
+
99
+ /**
100
+ * Environment Detection Utility
101
+ * Detects runtime environment for platform-specific behaviors
102
+ */
103
+ /**
104
+ * Detects the current runtime environment
105
+ */
106
+ function detectEnvironment() {
107
+ const global = globalThis;
108
+ const isNode = typeof process !== 'undefined' &&
109
+ process.versions?.node != null &&
110
+ typeof global.window === 'undefined';
111
+ const isBrowser = typeof global.window !== 'undefined' &&
112
+ typeof global.document !== 'undefined';
113
+ const isReactNative = typeof global.navigator?.product === 'string' &&
114
+ global.navigator.product.toLowerCase() === 'reactnative';
115
+ const isWeb = isBrowser || isReactNative;
116
+ const needsNodeStreamPolyfills = isWeb;
117
+ return {
118
+ isNode,
119
+ isBrowser,
120
+ isReactNative,
121
+ isWeb,
122
+ needsNodeStreamPolyfills
123
+ };
124
+ }
125
+ /**
126
+ * Global environment info (cached)
127
+ */
128
+ const environment = detectEnvironment();
129
+ /**
130
+ * Warns if environment might have bundling issues
131
+ */
132
+ function warnIfProblematicEnvironment(feature) {
133
+ if (environment.needsNodeStreamPolyfills) {
134
+ console.warn(`[PERS SDK] ${feature} may require additional polyfills in web environments. ` +
135
+ `If you encounter 'readable-stream' errors, ensure proper polyfills are configured.`);
136
+ }
137
+ }
138
+
139
+ export { IndexedDBTokenStorage as I, detectEnvironment as d, environment as e, warnIfProblematicEnvironment as w };
140
+ //# sourceMappingURL=environment-CKVwRAEL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-CKVwRAEL.js","sources":["../../src/core/auth/indexed-db-storage.ts","../../src/core/environment.ts"],"sourcesContent":[null,null],"names":[],"mappings":"MAWa,qBAAqB,CAAA;AAOhC,IAAA,WAAA,GAAA;QANS,IAAA,CAAA,eAAe,GAAG,IAAI;QAIvB,IAAA,CAAA,SAAS,GAAgC,IAAI;AAGnD,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AACpC,YAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC;QAChE;IACF;IAEQ,KAAK,GAAA;QACX,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS;QAEzC,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AAC/C,YAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;gBACpC,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACrD;AAEA,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,CAAC,UAAU,CAAC;AAE/F,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;AAClC,gBAAA,MAAM,EAAE,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM;AACpD,gBAAA,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE;AACnE,oBAAA,EAAE,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,UAAU,CAAC;gBACxD;AACF,YAAA,CAAC;AAED,YAAA,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,KAAI;AAC5B,gBAAA,OAAO,CAAE,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;AACpD,YAAA,CAAC;AAED,YAAA,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,KAAI;AAC1B,gBAAA,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;AAClD,YAAA,CAAC;AACH,QAAA,CAAC,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,MAAM,GAAG,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI;AACF,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE;YAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,gBAAA,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC;gBAChF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,CAAC;gBACvE,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAE9B,gBAAA,OAAO,CAAC,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;AACzD,gBAAA,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/C,YAAA,CAAC,CAAC;QACJ;QAAE,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE,CAAC,CAAC;AACjE,YAAA,OAAO,IAAI;QACb;IACF;AAEA,IAAA,MAAM,GAAG,CAAC,GAAW,EAAE,KAAc,EAAA;AACnC,QAAA,IAAI;AACF,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE;YAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,gBAAA,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC;gBACjF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,CAAC;gBACvE,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC;gBAErC,OAAO,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE;AACnC,gBAAA,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/C,YAAA,CAAC,CAAC;QACJ;QAAE,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,EAAE,CAAC,CAAC;AAClE,YAAA,MAAM,CAAC;QACT;IACF;IAEA,MAAM,MAAM,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE;YAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,gBAAA,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC;gBACjF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,CAAC;gBACvE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;gBAEjC,OAAO,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE;AACnC,gBAAA,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/C,YAAA,CAAC,CAAC;QACJ;QAAE,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE,CAAC,CAAC;QACtE;IACF;AAEA,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI;AACF,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE;YAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,gBAAA,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC;gBACjF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,CAAC;AACvE,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE;gBAE7B,OAAO,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE;AACnC,gBAAA,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/C,YAAA,CAAC,CAAC;QACJ;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,CAAC,CAAC;QACpE;IACF;;AAxGwB,qBAAA,CAAA,OAAO,GAAG,kBAAH;AACP,qBAAA,CAAA,UAAU,GAAG,aAAH;AACV,qBAAA,CAAA,UAAU,GAAG,CAAH;;ACfpC;;;AAGG;AAUH;;AAEG;SACa,iBAAiB,GAAA;IAC/B,MAAM,MAAM,GAAG,UAAiB;AAEhC,IAAA,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,WAAW;AAC9B,QAAA,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI;AAC9B,QAAA,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW;AAEnD,IAAA,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW;AACpC,QAAA,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW;IAExD,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,SAAS,EAAE,OAAO,KAAK,QAAQ;QAC7C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,aAAa;AAE9E,IAAA,MAAM,KAAK,GAAG,SAAS,IAAI,aAAa;IACxC,MAAM,wBAAwB,GAAG,KAAK;IAEtC,OAAO;QACL,MAAM;QACN,SAAS;QACT,aAAa;QACb,KAAK;QACL;KACD;AACH;AAEA;;AAEG;AACI,MAAM,WAAW,GAAG,iBAAiB;AAE5C;;AAEG;AACG,SAAU,4BAA4B,CAAC,OAAe,EAAA;AAC1D,IAAA,IAAI,WAAW,CAAC,wBAAwB,EAAE;AACxC,QAAA,OAAO,CAAC,IAAI,CACV,CAAA,WAAA,EAAc,OAAO,CAAA,uDAAA,CAAyD;AAC9E,YAAA,CAAA,kFAAA,CAAoF,CACrF;IACH;AACF;;;;"}
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Node.js HTTP Client adapter for PERS SDK
5
+ *
6
+ * Simple HTTP client for Node.js environments using native fetch (Node 18+) or a polyfill.
7
+ * Works with Express, Next.js API routes, or any Node.js-based backend.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { createPersSDK } from '@explorins/pers-sdk';
12
+ * import { NodeHttpClientAdapter } from '@explorins/pers-sdk/platform-adapters';
13
+ *
14
+ * const sdk = createPersSDK(
15
+ * new NodeHttpClientAdapter(),
16
+ * { environment: 'production', apiProjectKey: 'your-key' }
17
+ * );
18
+ *
19
+ * // Use managers directly
20
+ * await sdk.user.getCurrentUser();
21
+ * ```
22
+ */
23
+ class NodeHttpClientAdapter {
24
+ async get(url, options = {}) {
25
+ return this.request(url, 'GET', undefined, options);
26
+ }
27
+ async post(url, data = null, options = {}) {
28
+ return this.request(url, 'POST', data, options);
29
+ }
30
+ async put(url, data = null, options = {}) {
31
+ return this.request(url, 'PUT', data, options);
32
+ }
33
+ async delete(url, options = {}) {
34
+ return this.request(url, 'DELETE', undefined, options);
35
+ }
36
+ async patch(url, data = null, options = {}) {
37
+ return this.request(url, 'PATCH', data, options);
38
+ }
39
+ async request(url, method, data, options = {}) {
40
+ // Use native fetch in Node 18+ or require a polyfill for older versions
41
+ const fetchImpl = globalThis.fetch || require('node-fetch');
42
+ const headers = {
43
+ 'Content-Type': 'application/json',
44
+ 'User-Agent': 'PERS-SDK-Node/1.0',
45
+ ...options.headers
46
+ };
47
+ const fetchOptions = {
48
+ method,
49
+ headers,
50
+ ...options
51
+ };
52
+ if (data !== undefined && method !== 'GET') {
53
+ fetchOptions.body = JSON.stringify(data);
54
+ }
55
+ const response = await fetchImpl(url, fetchOptions);
56
+ if (!response.ok) {
57
+ // Extract backend error response if available
58
+ let errorData;
59
+ try {
60
+ const contentType = response.headers.get('content-type');
61
+ if (contentType?.includes('application/json')) {
62
+ errorData = await response.json();
63
+ }
64
+ }
65
+ catch {
66
+ // If parsing fails, continue with basic error
67
+ }
68
+ // Create error with backend data attached
69
+ const error = new Error(errorData?.message || `HTTP ${response.status}: ${response.statusText}`);
70
+ error.status = response.status;
71
+ error.statusText = response.statusText;
72
+ // Attach backend error response for extraction
73
+ if (errorData) {
74
+ Object.assign(error, errorData);
75
+ }
76
+ throw error;
77
+ }
78
+ // Handle different response types
79
+ const contentType = response.headers.get('content-type');
80
+ if (contentType?.includes('application/json')) {
81
+ return response.json();
82
+ }
83
+ return response.text();
84
+ }
85
+ }
86
+
87
+ exports.NodeHttpClientAdapter = NodeHttpClientAdapter;
88
+ //# sourceMappingURL=node-http-client-D_avaa5F.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-http-client-D_avaa5F.cjs","sources":["../../src/platform-adapters/node-http-client.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Node.js HTTP Client adapter for PERS SDK
3
+ *
4
+ * Simple HTTP client for Node.js environments using native fetch (Node 18+) or a polyfill.
5
+ * Works with Express, Next.js API routes, or any Node.js-based backend.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createPersSDK } from '@explorins/pers-sdk';
10
+ * import { NodeHttpClientAdapter } from '@explorins/pers-sdk/platform-adapters';
11
+ *
12
+ * const sdk = createPersSDK(
13
+ * new NodeHttpClientAdapter(),
14
+ * { environment: 'production', apiProjectKey: 'your-key' }
15
+ * );
16
+ *
17
+ * // Use managers directly
18
+ * await sdk.user.getCurrentUser();
19
+ * ```
20
+ */
21
+ class NodeHttpClientAdapter {
22
+ async get(url, options = {}) {
23
+ return this.request(url, 'GET', undefined, options);
24
+ }
25
+ async post(url, data = null, options = {}) {
26
+ return this.request(url, 'POST', data, options);
27
+ }
28
+ async put(url, data = null, options = {}) {
29
+ return this.request(url, 'PUT', data, options);
30
+ }
31
+ async delete(url, options = {}) {
32
+ return this.request(url, 'DELETE', undefined, options);
33
+ }
34
+ async patch(url, data = null, options = {}) {
35
+ return this.request(url, 'PATCH', data, options);
36
+ }
37
+ async request(url, method, data, options = {}) {
38
+ // Use native fetch in Node 18+ or require a polyfill for older versions
39
+ const fetchImpl = globalThis.fetch || require('node-fetch');
40
+ const headers = {
41
+ 'Content-Type': 'application/json',
42
+ 'User-Agent': 'PERS-SDK-Node/1.0',
43
+ ...options.headers
44
+ };
45
+ const fetchOptions = {
46
+ method,
47
+ headers,
48
+ ...options
49
+ };
50
+ if (data !== undefined && method !== 'GET') {
51
+ fetchOptions.body = JSON.stringify(data);
52
+ }
53
+ const response = await fetchImpl(url, fetchOptions);
54
+ if (!response.ok) {
55
+ // Extract backend error response if available
56
+ let errorData;
57
+ try {
58
+ const contentType = response.headers.get('content-type');
59
+ if (contentType?.includes('application/json')) {
60
+ errorData = await response.json();
61
+ }
62
+ }
63
+ catch {
64
+ // If parsing fails, continue with basic error
65
+ }
66
+ // Create error with backend data attached
67
+ const error = new Error(errorData?.message || `HTTP ${response.status}: ${response.statusText}`);
68
+ error.status = response.status;
69
+ error.statusText = response.statusText;
70
+ // Attach backend error response for extraction
71
+ if (errorData) {
72
+ Object.assign(error, errorData);
73
+ }
74
+ throw error;
75
+ }
76
+ // Handle different response types
77
+ const contentType = response.headers.get('content-type');
78
+ if (contentType?.includes('application/json')) {
79
+ return response.json();
80
+ }
81
+ return response.text();
82
+ }
83
+ }
84
+
85
+ export { NodeHttpClientAdapter as N };
86
+ //# sourceMappingURL=node-http-client-DloDLfm9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-http-client-DloDLfm9.js","sources":["../../src/platform-adapters/node-http-client.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}