wakz-sdk 1.0.0

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 (56) hide show
  1. package/README.md +264 -0
  2. package/dist/client.d.ts +124 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +323 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/crypto.d.ts +26 -0
  7. package/dist/crypto.d.ts.map +1 -0
  8. package/dist/crypto.js +161 -0
  9. package/dist/crypto.js.map +1 -0
  10. package/dist/esm/client.js.map +1 -0
  11. package/dist/esm/client.mjs +319 -0
  12. package/dist/esm/crypto.js.map +1 -0
  13. package/dist/esm/crypto.mjs +123 -0
  14. package/dist/esm/events.js.map +1 -0
  15. package/dist/esm/events.mjs +100 -0
  16. package/dist/esm/http.js.map +1 -0
  17. package/dist/esm/http.mjs +159 -0
  18. package/dist/esm/index.js.map +1 -0
  19. package/dist/esm/index.mjs +32 -0
  20. package/dist/esm/session.js.map +1 -0
  21. package/dist/esm/session.mjs +186 -0
  22. package/dist/esm/types.js.map +1 -0
  23. package/dist/esm/types.mjs +5 -0
  24. package/dist/esm/utils.js.map +1 -0
  25. package/dist/esm/utils.mjs +139 -0
  26. package/dist/esm/websocket.js.map +1 -0
  27. package/dist/esm/websocket.mjs +363 -0
  28. package/dist/events.d.ts +38 -0
  29. package/dist/events.d.ts.map +1 -0
  30. package/dist/events.js +104 -0
  31. package/dist/events.js.map +1 -0
  32. package/dist/http.d.ts +37 -0
  33. package/dist/http.d.ts.map +1 -0
  34. package/dist/http.js +163 -0
  35. package/dist/http.js.map +1 -0
  36. package/dist/index.d.ts +27 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +49 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/session.d.ts +75 -0
  41. package/dist/session.d.ts.map +1 -0
  42. package/dist/session.js +190 -0
  43. package/dist/session.js.map +1 -0
  44. package/dist/types.d.ts +149 -0
  45. package/dist/types.d.ts.map +1 -0
  46. package/dist/types.js +6 -0
  47. package/dist/types.js.map +1 -0
  48. package/dist/utils.d.ts +56 -0
  49. package/dist/utils.d.ts.map +1 -0
  50. package/dist/utils.js +153 -0
  51. package/dist/utils.js.map +1 -0
  52. package/dist/websocket.d.ts +93 -0
  53. package/dist/websocket.d.ts.map +1 -0
  54. package/dist/websocket.js +367 -0
  55. package/dist/websocket.js.map +1 -0
  56. package/package.json +50 -0
package/dist/client.js ADDED
@@ -0,0 +1,323 @@
1
+ "use strict";
2
+ // ═══════════════════════════════════════════════════════════════
3
+ // WAKZ SDK — Main Client
4
+ // ═══════════════════════════════════════════════════════════════
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WAKZClient = void 0;
7
+ const events_1 = require("./events");
8
+ const websocket_1 = require("./websocket");
9
+ const http_1 = require("./http");
10
+ const session_1 = require("./session");
11
+ const utils_1 = require("./utils");
12
+ /**
13
+ * WAKZ SDK Client — The main entry point for integrating WAKZ AI.
14
+ *
15
+ * Features:
16
+ * - Dual transport: WebSocket (primary) with HTTP/REST fallback
17
+ * - Automatic reconnection with exponential backoff
18
+ * - API key authentication with HMAC-SHA256 request signing
19
+ * - Typed event emitter for real-time updates
20
+ * - Session management with visitor fingerprinting
21
+ * - Works in both browser and Node.js environments
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const client = new WAKZClient({
26
+ * apiKey: 'wakz_live_xxxxx',
27
+ * });
28
+ *
29
+ * await client.connect();
30
+ * client.on('message', (msg) => console.log(msg));
31
+ * const response = await client.sendMessage('Hello!');
32
+ * ```
33
+ */
34
+ class WAKZClient extends events_1.WAKZEventEmitter {
35
+ /**
36
+ * Create a new WAKZ SDK client instance.
37
+ *
38
+ * @param options - Client configuration options
39
+ */
40
+ constructor(options) {
41
+ super();
42
+ this.wsTransport = null;
43
+ this._status = 'disconnected';
44
+ this._currentTransport = 'http';
45
+ if (!options.apiKey || typeof options.apiKey !== 'string') {
46
+ throw new Error('[WAKZ SDK] A valid API key is required. API keys start with "wakz_live_".');
47
+ }
48
+ if (!options.apiKey.startsWith('wakz_live_')) {
49
+ this.warn('[WAKZ SDK] API key does not start with "wakz_live_". Please verify your key.');
50
+ }
51
+ this.options = {
52
+ apiKey: options.apiKey,
53
+ baseUrl: (0, utils_1.normalizeUrl)(options.baseUrl || 'https://api.wakz.dev'),
54
+ websocketUrl: options.websocketUrl || (0, utils_1.httpToWsUrl)(options.baseUrl || 'https://api.wakz.dev'),
55
+ autoReconnect: options.autoReconnect ?? true,
56
+ maxRetries: options.maxRetries ?? 5,
57
+ initialRetryDelay: options.initialRetryDelay ?? 1000,
58
+ maxRetryDelay: options.maxRetryDelay ?? 30000,
59
+ visitorId: options.visitorId,
60
+ metadata: options.metadata,
61
+ timeout: options.timeout ?? 30000,
62
+ debug: options.debug ?? false,
63
+ };
64
+ this.logger = new utils_1.Logger(this.options.debug);
65
+ // Initialize HTTP transport (always available as fallback)
66
+ this.httpTransport = new http_1.HttpTransport(this.options.apiKey, this.options.baseUrl, this.options.timeout, this.options.debug);
67
+ // Initialize session manager
68
+ this.sessionManager = new session_1.SessionManager(this.options.visitorId, this.options.metadata);
69
+ }
70
+ /**
71
+ * Connect to the WAKZ API.
72
+ *
73
+ * Attempts WebSocket connection first. Falls back to HTTP if:
74
+ * - WebSocket is not available in the environment
75
+ * - WebSocket connection fails after max retries
76
+ *
77
+ * @returns Promise that resolves when connected
78
+ */
79
+ async connect() {
80
+ this._status = 'connecting';
81
+ this.logger.info('Connecting to WAKZ API...');
82
+ // Resolve the best available transport
83
+ const preferredTransport = (0, utils_1.resolveTransportMode)();
84
+ if (preferredTransport === 'websocket') {
85
+ try {
86
+ await this.connectWebSocket();
87
+ return;
88
+ }
89
+ catch (err) {
90
+ this.logger.warn('WebSocket connection failed, falling back to HTTP:', err);
91
+ }
92
+ }
93
+ // Fallback to HTTP transport
94
+ this._currentTransport = 'http';
95
+ this._status = 'connected';
96
+ this.logger.info('Connected via HTTP transport');
97
+ this.emit('connected', undefined);
98
+ // Initialize session
99
+ const session = await this.sessionManager.getSession();
100
+ this.emit('session_start', session);
101
+ }
102
+ /**
103
+ * Send a chat message.
104
+ *
105
+ * Uses the current active transport (WebSocket or HTTP).
106
+ *
107
+ * @param content - The message text to send
108
+ * @returns Promise resolving to the assistant's reply
109
+ */
110
+ async sendMessage(content) {
111
+ if (!content || typeof content !== 'string') {
112
+ return { success: false, error: 'Message content is required' };
113
+ }
114
+ const session = await this.sessionManager.getSession();
115
+ // Try WebSocket first
116
+ if (this._currentTransport === 'websocket' && this.wsTransport?.isConnected) {
117
+ try {
118
+ const message = await this.wsTransport.sendMessage(content, session.id, session.visitorId);
119
+ this.sessionManager.incrementMessageCount();
120
+ return { success: true, message };
121
+ }
122
+ catch (err) {
123
+ this.logger.warn('WebSocket send failed, falling back to HTTP:', err);
124
+ // Fall through to HTTP
125
+ }
126
+ }
127
+ // HTTP fallback
128
+ try {
129
+ const result = await this.httpTransport.sendMessage(content, session.id, session.visitorId);
130
+ if (result.success) {
131
+ this.sessionManager.incrementMessageCount();
132
+ if (result.message) {
133
+ this.emit('message', result.message);
134
+ }
135
+ }
136
+ return result;
137
+ }
138
+ catch (err) {
139
+ return {
140
+ success: false,
141
+ error: err instanceof Error ? err.message : 'Failed to send message',
142
+ };
143
+ }
144
+ }
145
+ /**
146
+ * Disconnect from the WAKZ API.
147
+ */
148
+ disconnect() {
149
+ this._status = 'disconnected';
150
+ this.wsTransport?.disconnect();
151
+ this.sessionManager.endSession();
152
+ this.logger.info('Disconnected');
153
+ }
154
+ /**
155
+ * Register an event listener.
156
+ */
157
+ on(event, callback) {
158
+ super.on(event, callback);
159
+ return this;
160
+ }
161
+ /**
162
+ * Register a one-time event listener.
163
+ */
164
+ once(event, callback) {
165
+ super.once(event, callback);
166
+ return this;
167
+ }
168
+ /**
169
+ * Remove an event listener.
170
+ */
171
+ off(event, callback) {
172
+ super.off(event, callback);
173
+ return this;
174
+ }
175
+ /**
176
+ * Get the current session information.
177
+ */
178
+ async getSession() {
179
+ return this.sessionManager.getSession();
180
+ }
181
+ /**
182
+ * Get the current visitor ID.
183
+ */
184
+ getVisitorId() {
185
+ return this.sessionManager.getVisitorId();
186
+ }
187
+ /**
188
+ * Get the current connection status.
189
+ */
190
+ getStatus() {
191
+ return this._status;
192
+ }
193
+ /**
194
+ * Get the current transport mode.
195
+ */
196
+ getTransport() {
197
+ return this._currentTransport;
198
+ }
199
+ /**
200
+ * Fetch the widget configuration from the API.
201
+ */
202
+ async getWidgetConfig() {
203
+ return this.httpTransport.fetchWidgetConfig();
204
+ }
205
+ /**
206
+ * Perform a health check against the WAKZ API.
207
+ */
208
+ async healthCheck() {
209
+ // Use the active transport for health check
210
+ if (this._currentTransport === 'websocket' && this.wsTransport?.isConnected) {
211
+ return this.wsTransport.healthCheck();
212
+ }
213
+ return this.httpTransport.healthCheck();
214
+ }
215
+ /**
216
+ * Update visitor metadata.
217
+ */
218
+ updateMetadata(metadata) {
219
+ this.sessionManager.updateMetadata(metadata);
220
+ }
221
+ /**
222
+ * Destroy the client — disconnect and clean up all resources.
223
+ */
224
+ destroy() {
225
+ this.disconnect();
226
+ this.wsTransport = null;
227
+ this.sessionManager.destroy();
228
+ this.removeAllListeners();
229
+ this.logger.info('Client destroyed');
230
+ }
231
+ /**
232
+ * ─── Static Methods ──────────────────────────────────────
233
+ */
234
+ /**
235
+ * Perform a quick health check against a WAKZ API endpoint.
236
+ * Useful for checking connectivity before creating a client instance.
237
+ *
238
+ * @param baseUrl - The API base URL to check
239
+ * @param timeout - Request timeout in ms (default: 10000)
240
+ * @returns Health check result
241
+ */
242
+ static async healthCheck(baseUrl = 'https://api.wakz.dev', timeout = 10000) {
243
+ const startTime = Date.now();
244
+ try {
245
+ const url = `${(0, utils_1.normalizeUrl)(baseUrl)}/api/v1/embed/health`;
246
+ const controller = new AbortController();
247
+ const timer = setTimeout(() => controller.abort(), timeout);
248
+ const response = await fetch(url, {
249
+ method: 'GET',
250
+ signal: controller.signal,
251
+ }).finally(() => clearTimeout(timer));
252
+ const data = await response.json().catch(() => ({}));
253
+ return {
254
+ healthy: response.ok,
255
+ latency: Date.now() - startTime,
256
+ version: data.version,
257
+ };
258
+ }
259
+ catch {
260
+ return {
261
+ healthy: false,
262
+ latency: Date.now() - startTime,
263
+ };
264
+ }
265
+ }
266
+ // ─── Private Methods ──────────────────────────────────────
267
+ /**
268
+ * Connect via WebSocket transport.
269
+ */
270
+ async connectWebSocket() {
271
+ this._currentTransport = 'websocket';
272
+ // Create WebSocket transport and forward events
273
+ this.wsTransport = new websocket_1.WebSocketTransport(this.options.apiKey, this.options.websocketUrl, {
274
+ autoReconnect: this.options.autoReconnect,
275
+ maxRetries: this.options.maxRetries,
276
+ initialRetryDelay: this.options.initialRetryDelay,
277
+ maxRetryDelay: this.options.maxRetryDelay,
278
+ debug: this.options.debug,
279
+ });
280
+ // Forward WebSocket events to client
281
+ this.wsTransport.on('connected', () => {
282
+ this._status = 'connected';
283
+ this.emit('connected', undefined);
284
+ // Start session
285
+ this.sessionManager.getSession().then((session) => {
286
+ this.emit('session_start', session);
287
+ });
288
+ });
289
+ this.wsTransport.on('disconnected', (data) => {
290
+ if (this._status === 'connected') {
291
+ this._status = 'disconnected';
292
+ }
293
+ this.emit('disconnected', data);
294
+ });
295
+ this.wsTransport.on('reconnecting', (data) => {
296
+ this._status = 'reconnecting';
297
+ this.emit('reconnecting', data);
298
+ });
299
+ this.wsTransport.on('reconnect_failed', (data) => {
300
+ this.logger.warn('WebSocket reconnect failed, switching to HTTP');
301
+ this.emit('reconnect_failed', data);
302
+ // Auto-switch to HTTP transport
303
+ this._currentTransport = 'http';
304
+ this._status = 'connected';
305
+ this.emit('transport_change', { from: 'websocket', to: 'http' });
306
+ this.emit('connected', undefined);
307
+ });
308
+ this.wsTransport.on('message', (msg) => {
309
+ this.sessionManager.incrementMessageCount();
310
+ this.emit('message', msg);
311
+ });
312
+ this.wsTransport.on('error', (err) => {
313
+ this.emit('error', err);
314
+ });
315
+ // Connect
316
+ await this.wsTransport.connect();
317
+ }
318
+ warn(msg) {
319
+ console.warn(msg);
320
+ }
321
+ }
322
+ exports.WAKZClient = WAKZClient;
323
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { SignedHeaders } from './types';
2
+ /**
3
+ * Sign an API request payload for authentication.
4
+ *
5
+ * The signing process:
6
+ * 1. Create a timestamp string (ISO 8601)
7
+ * 2. Build the signing payload: `${timestamp}.${JSON.stringify(body)}`
8
+ * 3. HMAC-SHA256 sign with the API key
9
+ *
10
+ * Headers produced:
11
+ * - `X-API-Key`: The raw API key
12
+ * - `X-Timestamp`: ISO timestamp
13
+ * - `X-Signature`: HMAC hex digest
14
+ * - `Content-Type`: application/json
15
+ */
16
+ export declare function signRequest(apiKey: string, body: Record<string, unknown>): Promise<SignedHeaders>;
17
+ /**
18
+ * Simple hash function for visitor fingerprinting.
19
+ * NOT cryptographically secure — used only for session identification.
20
+ */
21
+ export declare function simpleHash(input: string): Promise<string>;
22
+ /**
23
+ * Generate a random hex string of specified byte length.
24
+ */
25
+ export declare function randomHex(bytes: number): string;
26
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA0D7C;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,aAAa,CAAC,CAWxB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB/D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA8B/C"}
package/dist/crypto.js ADDED
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ // ═══════════════════════════════════════════════════════════════
3
+ // WAKZ SDK — Cryptographic Utilities
4
+ // ═══════════════════════════════════════════════════════════════
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.signRequest = signRequest;
40
+ exports.simpleHash = simpleHash;
41
+ exports.randomHex = randomHex;
42
+ /**
43
+ * Cryptographic utilities for API request signing and verification.
44
+ * Uses the Web Crypto API (browser) or Node.js crypto (server).
45
+ */
46
+ // ── Platform Detection ──────────────────────────────────────────
47
+ const isNode = typeof process !== 'undefined' &&
48
+ typeof process.versions !== 'undefined' &&
49
+ typeof process.versions.node !== 'undefined';
50
+ const isBrowser = typeof window !== 'undefined' && typeof window.crypto !== 'undefined';
51
+ // ── HMAC-SHA256 Implementation ──────────────────────────────────
52
+ /**
53
+ * Create HMAC-SHA256 signature using the best available crypto API.
54
+ * Works in both browser (Web Crypto) and Node.js environments.
55
+ */
56
+ async function hmacSha256(key, message) {
57
+ if (isNode) {
58
+ // Node.js crypto
59
+ const nodeCrypto = await Promise.resolve().then(() => __importStar(require('crypto')));
60
+ return nodeCrypto
61
+ .createHmac('sha256', key)
62
+ .update(message)
63
+ .digest('hex');
64
+ }
65
+ if (isBrowser && typeof window.crypto.subtle !== 'undefined') {
66
+ // Web Crypto API (async)
67
+ const encoder = new TextEncoder();
68
+ const keyData = encoder.encode(key);
69
+ const msgData = encoder.encode(message);
70
+ const cryptoKey = await window.crypto.subtle.importKey('raw', keyData, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
71
+ const signature = await window.crypto.subtle.sign('HMAC', cryptoKey, msgData);
72
+ return Array.from(new Uint8Array(signature))
73
+ .map((b) => b.toString(16).padStart(2, '0'))
74
+ .join('');
75
+ }
76
+ throw new Error('[WAKZ SDK] No cryptographic implementation available. ' +
77
+ 'Requires Node.js >= 16 or a modern browser with Web Crypto API support.');
78
+ }
79
+ /**
80
+ * Sign an API request payload for authentication.
81
+ *
82
+ * The signing process:
83
+ * 1. Create a timestamp string (ISO 8601)
84
+ * 2. Build the signing payload: `${timestamp}.${JSON.stringify(body)}`
85
+ * 3. HMAC-SHA256 sign with the API key
86
+ *
87
+ * Headers produced:
88
+ * - `X-API-Key`: The raw API key
89
+ * - `X-Timestamp`: ISO timestamp
90
+ * - `X-Signature`: HMAC hex digest
91
+ * - `Content-Type`: application/json
92
+ */
93
+ async function signRequest(apiKey, body) {
94
+ const timestamp = new Date().toISOString();
95
+ const signingPayload = `${timestamp}.${JSON.stringify(body)}`;
96
+ const signature = await hmacSha256(apiKey, signingPayload);
97
+ return {
98
+ 'X-API-Key': apiKey,
99
+ 'X-Timestamp': timestamp,
100
+ 'X-Signature': signature,
101
+ 'Content-Type': 'application/json',
102
+ };
103
+ }
104
+ /**
105
+ * Simple hash function for visitor fingerprinting.
106
+ * NOT cryptographically secure — used only for session identification.
107
+ */
108
+ async function simpleHash(input) {
109
+ if (isNode) {
110
+ const nodeCrypto = await Promise.resolve().then(() => __importStar(require('crypto')));
111
+ return nodeCrypto.createHash('sha256').update(input).digest('hex').slice(0, 16);
112
+ }
113
+ if (isBrowser && typeof window.crypto.subtle !== 'undefined') {
114
+ const encoder = new TextEncoder();
115
+ const data = encoder.encode(input);
116
+ const hash = await window.crypto.subtle.digest('SHA-256', data);
117
+ return Array.from(new Uint8Array(hash))
118
+ .map((b) => b.toString(16).padStart(2, '0'))
119
+ .join('')
120
+ .slice(0, 16);
121
+ }
122
+ // Fallback: simple string hash (non-crypto)
123
+ let hash = 0;
124
+ for (let i = 0; i < input.length; i++) {
125
+ const char = input.charCodeAt(i);
126
+ hash = ((hash << 5) - hash + char) | 0;
127
+ }
128
+ return Math.abs(hash).toString(16).padStart(16, '0');
129
+ }
130
+ /**
131
+ * Generate a random hex string of specified byte length.
132
+ */
133
+ function randomHex(bytes) {
134
+ const isNodeEnv = typeof process !== 'undefined' &&
135
+ typeof process.versions !== 'undefined' &&
136
+ typeof process.versions.node !== 'undefined';
137
+ if (isNodeEnv) {
138
+ try {
139
+ const nodeCrypto = require('crypto');
140
+ return nodeCrypto.randomBytes(bytes).toString('hex');
141
+ }
142
+ catch {
143
+ // Fallback below
144
+ }
145
+ }
146
+ if (typeof crypto !== 'undefined' && typeof crypto.getRandomValues !== 'undefined') {
147
+ const array = new Uint8Array(bytes);
148
+ crypto.getRandomValues(array);
149
+ return Array.from(array)
150
+ .map((b) => b.toString(16).padStart(2, '0'))
151
+ .join('');
152
+ }
153
+ // Math.random fallback (not cryptographically secure)
154
+ const chars = '0123456789abcdef';
155
+ let result = '';
156
+ for (let i = 0; i < bytes * 2; i++) {
157
+ result += chars[Math.floor(Math.random() * chars.length)];
158
+ }
159
+ return result;
160
+ }
161
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}