@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.
- package/dist/campaign/api/campaign-api.d.ts +19 -8
- package/dist/campaign/api/campaign-api.d.ts.map +1 -1
- package/dist/campaign/services/campaign-service.d.ts +10 -2
- package/dist/campaign/services/campaign-service.d.ts.map +1 -1
- package/dist/campaign.cjs +1 -1
- package/dist/campaign.js +1 -1
- package/dist/chunks/{campaign-service-Ae164xl8.cjs → campaign-service-CdEz0jpP.cjs} +29 -16
- package/dist/chunks/{campaign-service-Ae164xl8.cjs.map → campaign-service-CdEz0jpP.cjs.map} +1 -1
- package/dist/chunks/{campaign-service-rlK4WeSY.js → campaign-service-DrTAqFZM.js} +29 -16
- package/dist/chunks/{campaign-service-rlK4WeSY.js.map → campaign-service-DrTAqFZM.js.map} +1 -1
- package/dist/chunks/environment-C73snhIJ.cjs +145 -0
- package/dist/chunks/environment-C73snhIJ.cjs.map +1 -0
- package/dist/chunks/environment-CKVwRAEL.js +140 -0
- package/dist/chunks/environment-CKVwRAEL.js.map +1 -0
- package/dist/chunks/node-http-client-D_avaa5F.cjs +88 -0
- package/dist/chunks/node-http-client-D_avaa5F.cjs.map +1 -0
- package/dist/chunks/node-http-client-DloDLfm9.js +86 -0
- package/dist/chunks/node-http-client-DloDLfm9.js.map +1 -0
- package/dist/chunks/{pers-sdk-DiRtm_VD.js → pers-sdk-JIExM712.js} +96 -161
- package/dist/chunks/pers-sdk-JIExM712.js.map +1 -0
- package/dist/chunks/{pers-sdk-OV5kUFLD.cjs → pers-sdk-h-uoLpBx.cjs} +95 -164
- package/dist/chunks/pers-sdk-h-uoLpBx.cjs.map +1 -0
- package/dist/chunks/{web3-chain-service-6vsVHPjl.cjs → web3-chain-service-BeBjALg2.cjs} +82 -163
- package/dist/chunks/web3-chain-service-BeBjALg2.cjs.map +1 -0
- package/dist/chunks/{web3-chain-service-BcUeeujC.js → web3-chain-service-DKHCnHQX.js} +83 -163
- package/dist/chunks/web3-chain-service-DKHCnHQX.js.map +1 -0
- package/dist/core/auth/static-jwt-auth-provider.d.ts +5 -0
- package/dist/core/auth/static-jwt-auth-provider.d.ts.map +1 -1
- package/dist/core/errors/index.d.ts +30 -83
- package/dist/core/errors/index.d.ts.map +1 -1
- package/dist/core/pers-api-client.d.ts +13 -5
- package/dist/core/pers-api-client.d.ts.map +1 -1
- package/dist/core/version.d.ts +3 -3
- package/dist/core/version.d.ts.map +1 -1
- package/dist/core.cjs +8 -8
- package/dist/core.js +4 -3
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +10 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/managers/auth-manager.d.ts +31 -0
- package/dist/managers/auth-manager.d.ts.map +1 -1
- package/dist/managers/campaign-manager.d.ts +36 -1
- package/dist/managers/campaign-manager.d.ts.map +1 -1
- package/dist/node.cjs +100 -0
- package/dist/node.cjs.map +1 -0
- package/dist/node.d.ts +70 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +94 -0
- package/dist/node.js.map +1 -0
- package/dist/package.json +9 -2
- package/dist/pers-sdk.d.ts.map +1 -1
- package/dist/platform-adapters/node-http-client.d.ts.map +1 -1
- package/dist/platform-adapters.cjs +3 -66
- package/dist/platform-adapters.cjs.map +1 -1
- package/dist/platform-adapters.js +3 -66
- package/dist/platform-adapters.js.map +1 -1
- package/dist/web3-chain.cjs +1 -1
- package/dist/web3-chain.js +1 -1
- package/package.json +9 -2
- package/dist/chunks/pers-sdk-DiRtm_VD.js.map +0 -1
- package/dist/chunks/pers-sdk-OV5kUFLD.cjs.map +0 -1
- package/dist/chunks/web3-chain-service-6vsVHPjl.cjs.map +0 -1
- 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":"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"}
|
|
@@ -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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"}
|