@soulcraft/brainy 0.57.1 → 0.58.1

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 (165) hide show
  1. package/README.md +2 -0
  2. package/bin/brainy.js +260 -389
  3. package/dist/augmentations/conduitAugmentations.js +1 -1
  4. package/dist/augmentations/conduitAugmentations.js.map +1 -1
  5. package/dist/augmentations/cortexSense.js +3 -3
  6. package/dist/augmentations/cortexSense.js.map +1 -1
  7. package/dist/brainyData.js +9 -3
  8. package/dist/brainyData.js.map +1 -1
  9. package/dist/browserFramework.minimal.d.ts +14 -0
  10. package/dist/browserFramework.minimal.js +31 -0
  11. package/dist/browserFramework.minimal.js.map +1 -0
  12. package/dist/coreTypes.d.ts +35 -0
  13. package/dist/cortex/backupRestore.js +2 -2
  14. package/dist/cortex/backupRestore.js.map +1 -1
  15. package/dist/cortex/cortex.d.ts +17 -2
  16. package/dist/cortex/cortex.js +262 -103
  17. package/dist/cortex/cortex.js.map +1 -1
  18. package/dist/cortex/neuralImport.js +2 -2
  19. package/dist/cortex/neuralImport.js.map +1 -1
  20. package/dist/cortex/serviceIntegration.js +2 -2
  21. package/dist/cortex/serviceIntegration.js.map +1 -1
  22. package/dist/distributed/configManager.js +1 -1
  23. package/dist/distributed/configManager.js.map +1 -1
  24. package/dist/index.d.ts +0 -1
  25. package/dist/index.js +2 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/mcp/brainyMCPAdapter.js +1 -1
  28. package/dist/mcp/brainyMCPAdapter.js.map +1 -1
  29. package/dist/mcp/brainyMCPBroadcast.d.ts +82 -0
  30. package/dist/mcp/brainyMCPBroadcast.js +303 -0
  31. package/dist/mcp/brainyMCPBroadcast.js.map +1 -0
  32. package/dist/mcp/brainyMCPClient.d.ts +92 -0
  33. package/dist/mcp/brainyMCPClient.js +254 -0
  34. package/dist/mcp/brainyMCPClient.js.map +1 -0
  35. package/dist/mcp/brainyMCPService.js +1 -1
  36. package/dist/mcp/brainyMCPService.js.map +1 -1
  37. package/dist/mcp/mcpAugmentationToolset.js +1 -1
  38. package/dist/mcp/mcpAugmentationToolset.js.map +1 -1
  39. package/dist/storage/adapters/baseStorageAdapter.d.ts +59 -0
  40. package/dist/storage/adapters/baseStorageAdapter.js +199 -0
  41. package/dist/storage/adapters/baseStorageAdapter.js.map +1 -1
  42. package/dist/storage/adapters/s3CompatibleStorage.d.ts +4 -9
  43. package/dist/storage/adapters/s3CompatibleStorage.js +18 -33
  44. package/dist/storage/adapters/s3CompatibleStorage.js.map +1 -1
  45. package/dist/universal/crypto.d.ts +64 -0
  46. package/dist/universal/crypto.js +215 -0
  47. package/dist/universal/crypto.js.map +1 -0
  48. package/dist/universal/events.d.ts +31 -0
  49. package/dist/universal/events.js +156 -0
  50. package/dist/universal/events.js.map +1 -0
  51. package/dist/universal/fs.d.ts +102 -0
  52. package/dist/universal/fs.js +304 -0
  53. package/dist/universal/fs.js.map +1 -0
  54. package/dist/universal/index.d.ts +16 -0
  55. package/dist/universal/index.js +23 -0
  56. package/dist/universal/index.js.map +1 -0
  57. package/dist/universal/path.d.ts +51 -0
  58. package/dist/universal/path.js +161 -0
  59. package/dist/universal/path.js.map +1 -0
  60. package/dist/universal/uuid.d.ts +10 -0
  61. package/dist/universal/uuid.js +21 -0
  62. package/dist/universal/uuid.js.map +1 -0
  63. package/dist/utils/statisticsCollector.d.ts +37 -0
  64. package/dist/utils/statisticsCollector.js +142 -0
  65. package/dist/utils/statisticsCollector.js.map +1 -1
  66. package/package.json +54 -2
  67. package/dist/augmentationFactory.d.ts.map +0 -1
  68. package/dist/augmentationPipeline.d.ts.map +0 -1
  69. package/dist/augmentationRegistry.d.ts.map +0 -1
  70. package/dist/augmentationRegistryLoader.d.ts.map +0 -1
  71. package/dist/augmentations/conduitAugmentations.d.ts.map +0 -1
  72. package/dist/augmentations/memoryAugmentations.d.ts.map +0 -1
  73. package/dist/augmentations/serverSearchAugmentations.d.ts.map +0 -1
  74. package/dist/brainyData.d.ts.map +0 -1
  75. package/dist/browserFramework.d.ts.map +0 -1
  76. package/dist/coreTypes.d.ts.map +0 -1
  77. package/dist/cortex/cli.d.ts +0 -8
  78. package/dist/cortex/cli.js +0 -207
  79. package/dist/cortex/cli.js.map +0 -1
  80. package/dist/cortex/commands/index.d.ts +0 -79
  81. package/dist/cortex/commands/index.js +0 -614
  82. package/dist/cortex/commands/index.js.map +0 -1
  83. package/dist/cortex/config.d.ts +0 -112
  84. package/dist/cortex/config.js +0 -312
  85. package/dist/cortex/config.js.map +0 -1
  86. package/dist/cortex/licensingSystem.d.ts +0 -126
  87. package/dist/cortex/licensingSystem.js +0 -474
  88. package/dist/cortex/licensingSystem.js.map +0 -1
  89. package/dist/cortex/webhookManager.d.ts +0 -39
  90. package/dist/cortex/webhookManager.js +0 -326
  91. package/dist/cortex/webhookManager.js.map +0 -1
  92. package/dist/demo.d.ts.map +0 -1
  93. package/dist/distributed/configManager.d.ts.map +0 -1
  94. package/dist/distributed/domainDetector.d.ts.map +0 -1
  95. package/dist/distributed/hashPartitioner.d.ts.map +0 -1
  96. package/dist/distributed/healthMonitor.d.ts.map +0 -1
  97. package/dist/distributed/index.d.ts.map +0 -1
  98. package/dist/distributed/operationalModes.d.ts.map +0 -1
  99. package/dist/errors/brainyError.d.ts.map +0 -1
  100. package/dist/examples/basicUsage.d.ts.map +0 -1
  101. package/dist/hnsw/distributedSearch.d.ts.map +0 -1
  102. package/dist/hnsw/hnswIndex.d.ts.map +0 -1
  103. package/dist/hnsw/hnswIndexOptimized.d.ts.map +0 -1
  104. package/dist/hnsw/optimizedHNSWIndex.d.ts.map +0 -1
  105. package/dist/hnsw/partitionedHNSWIndex.d.ts.map +0 -1
  106. package/dist/hnsw/scaledHNSWSystem.d.ts.map +0 -1
  107. package/dist/index.d.ts.map +0 -1
  108. package/dist/mcp/brainyMCPAdapter.d.ts.map +0 -1
  109. package/dist/mcp/brainyMCPService.d.ts.map +0 -1
  110. package/dist/mcp/index.d.ts.map +0 -1
  111. package/dist/mcp/mcpAugmentationToolset.d.ts.map +0 -1
  112. package/dist/pipeline.d.ts.map +0 -1
  113. package/dist/sequentialPipeline.d.ts.map +0 -1
  114. package/dist/setup.d.ts.map +0 -1
  115. package/dist/storage/adapters/baseStorageAdapter.d.ts.map +0 -1
  116. package/dist/storage/adapters/batchS3Operations.d.ts.map +0 -1
  117. package/dist/storage/adapters/fileSystemStorage.d.ts.map +0 -1
  118. package/dist/storage/adapters/memoryStorage.d.ts.map +0 -1
  119. package/dist/storage/adapters/opfsStorage.d.ts.map +0 -1
  120. package/dist/storage/adapters/optimizedS3Search.d.ts.map +0 -1
  121. package/dist/storage/adapters/s3CompatibleStorage.d.ts.map +0 -1
  122. package/dist/storage/baseStorage.d.ts.map +0 -1
  123. package/dist/storage/cacheManager.d.ts.map +0 -1
  124. package/dist/storage/enhancedCacheManager.d.ts.map +0 -1
  125. package/dist/storage/readOnlyOptimizations.d.ts.map +0 -1
  126. package/dist/storage/storageFactory.d.ts.map +0 -1
  127. package/dist/types/augmentations.d.ts.map +0 -1
  128. package/dist/types/brainyDataInterface.d.ts.map +0 -1
  129. package/dist/types/distributedTypes.d.ts.map +0 -1
  130. package/dist/types/fileSystemTypes.d.ts.map +0 -1
  131. package/dist/types/graphTypes.d.ts.map +0 -1
  132. package/dist/types/mcpTypes.d.ts.map +0 -1
  133. package/dist/types/paginationTypes.d.ts.map +0 -1
  134. package/dist/types/pipelineTypes.d.ts.map +0 -1
  135. package/dist/types/tensorflowTypes.d.ts +0 -26
  136. package/dist/types/tensorflowTypes.d.ts.map +0 -1
  137. package/dist/types/tensorflowTypes.js +0 -6
  138. package/dist/types/tensorflowTypes.js.map +0 -1
  139. package/dist/unified.d.ts.map +0 -1
  140. package/dist/utils/autoConfiguration.d.ts.map +0 -1
  141. package/dist/utils/cacheAutoConfig.d.ts.map +0 -1
  142. package/dist/utils/crypto.d.ts.map +0 -1
  143. package/dist/utils/distance.d.ts.map +0 -1
  144. package/dist/utils/embedding.d.ts.map +0 -1
  145. package/dist/utils/environment.d.ts.map +0 -1
  146. package/dist/utils/fieldNameTracking.d.ts.map +0 -1
  147. package/dist/utils/index.d.ts.map +0 -1
  148. package/dist/utils/jsonProcessing.d.ts.map +0 -1
  149. package/dist/utils/logger.d.ts.map +0 -1
  150. package/dist/utils/operationUtils.d.ts.map +0 -1
  151. package/dist/utils/robustModelLoader.d.ts +0 -112
  152. package/dist/utils/robustModelLoader.d.ts.map +0 -1
  153. package/dist/utils/robustModelLoader.js +0 -624
  154. package/dist/utils/robustModelLoader.js.map +0 -1
  155. package/dist/utils/searchCache.d.ts.map +0 -1
  156. package/dist/utils/statistics.d.ts.map +0 -1
  157. package/dist/utils/statisticsCollector.d.ts.map +0 -1
  158. package/dist/utils/textEncoding.d.ts.map +0 -1
  159. package/dist/utils/typeUtils.d.ts.map +0 -1
  160. package/dist/utils/version.d.ts.map +0 -1
  161. package/dist/utils/workerUtils.d.ts.map +0 -1
  162. package/dist/webhooks/webhookSystem.d.ts +0 -114
  163. package/dist/webhooks/webhookSystem.js +0 -321
  164. package/dist/webhooks/webhookSystem.js.map +0 -1
  165. package/dist/worker.d.ts.map +0 -1
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Universal Crypto implementation
3
+ * Works in all environments: Browser, Node.js, Serverless
4
+ */
5
+ import { isBrowser, isNode } from '../utils/environment.js';
6
+ let nodeCrypto = null;
7
+ // Dynamic import for Node.js crypto (only in Node.js environment)
8
+ if (isNode()) {
9
+ try {
10
+ nodeCrypto = await import('crypto');
11
+ }
12
+ catch {
13
+ // Ignore import errors in non-Node environments
14
+ }
15
+ }
16
+ /**
17
+ * Generate random bytes
18
+ */
19
+ export function randomBytes(size) {
20
+ if (isBrowser() || typeof crypto !== 'undefined') {
21
+ // Use Web Crypto API (available in browsers and modern Node.js)
22
+ const array = new Uint8Array(size);
23
+ crypto.getRandomValues(array);
24
+ return array;
25
+ }
26
+ else if (nodeCrypto) {
27
+ // Use Node.js crypto as fallback
28
+ return new Uint8Array(nodeCrypto.randomBytes(size));
29
+ }
30
+ else {
31
+ // Fallback for environments without crypto
32
+ const array = new Uint8Array(size);
33
+ for (let i = 0; i < size; i++) {
34
+ array[i] = Math.floor(Math.random() * 256);
35
+ }
36
+ return array;
37
+ }
38
+ }
39
+ /**
40
+ * Generate random UUID
41
+ */
42
+ export function randomUUID() {
43
+ if (typeof crypto !== 'undefined' && crypto.randomUUID) {
44
+ return crypto.randomUUID();
45
+ }
46
+ else if (nodeCrypto && nodeCrypto.randomUUID) {
47
+ return nodeCrypto.randomUUID();
48
+ }
49
+ else {
50
+ // Fallback UUID generation
51
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
52
+ const r = Math.random() * 16 | 0;
53
+ const v = c === 'x' ? r : (r & 0x3 | 0x8);
54
+ return v.toString(16);
55
+ });
56
+ }
57
+ }
58
+ /**
59
+ * Create hash (simplified interface)
60
+ */
61
+ export function createHash(algorithm) {
62
+ if (nodeCrypto && nodeCrypto.createHash) {
63
+ return nodeCrypto.createHash(algorithm);
64
+ }
65
+ else {
66
+ // Simple fallback hash for browsers (not cryptographically secure)
67
+ let hash = 0;
68
+ const hashObj = {
69
+ update: (data) => {
70
+ const text = typeof data === 'string' ? data : new TextDecoder().decode(data);
71
+ for (let i = 0; i < text.length; i++) {
72
+ const char = text.charCodeAt(i);
73
+ hash = ((hash << 5) - hash) + char;
74
+ hash = hash & hash; // Convert to 32-bit integer
75
+ }
76
+ return hashObj;
77
+ },
78
+ digest: (encoding) => {
79
+ return Math.abs(hash).toString(16);
80
+ }
81
+ };
82
+ return hashObj;
83
+ }
84
+ }
85
+ /**
86
+ * Create HMAC
87
+ */
88
+ export function createHmac(algorithm, key) {
89
+ if (nodeCrypto && nodeCrypto.createHmac) {
90
+ return nodeCrypto.createHmac(algorithm, key);
91
+ }
92
+ else {
93
+ // Fallback HMAC implementation (simplified)
94
+ return createHash(algorithm);
95
+ }
96
+ }
97
+ /**
98
+ * PBKDF2 synchronous
99
+ */
100
+ export function pbkdf2Sync(password, salt, iterations, keylen, digest) {
101
+ if (nodeCrypto && nodeCrypto.pbkdf2Sync) {
102
+ return new Uint8Array(nodeCrypto.pbkdf2Sync(password, salt, iterations, keylen, digest));
103
+ }
104
+ else {
105
+ // Simplified fallback (not cryptographically secure)
106
+ const result = new Uint8Array(keylen);
107
+ const passwordStr = typeof password === 'string' ? password : new TextDecoder().decode(password);
108
+ const saltStr = typeof salt === 'string' ? salt : new TextDecoder().decode(salt);
109
+ let hash = 0;
110
+ const combined = passwordStr + saltStr;
111
+ for (let i = 0; i < combined.length; i++) {
112
+ hash = ((hash << 5) - hash) + combined.charCodeAt(i);
113
+ hash = hash & hash;
114
+ }
115
+ for (let i = 0; i < keylen; i++) {
116
+ result[i] = (Math.abs(hash + i) % 256);
117
+ }
118
+ return result;
119
+ }
120
+ }
121
+ /**
122
+ * Scrypt synchronous
123
+ */
124
+ export function scryptSync(password, salt, keylen, options) {
125
+ if (nodeCrypto && nodeCrypto.scryptSync) {
126
+ return new Uint8Array(nodeCrypto.scryptSync(password, salt, keylen, options));
127
+ }
128
+ else {
129
+ // Fallback to pbkdf2Sync
130
+ return pbkdf2Sync(password, salt, 10000, keylen, 'sha256');
131
+ }
132
+ }
133
+ /**
134
+ * Create cipher
135
+ */
136
+ export function createCipheriv(algorithm, key, iv) {
137
+ if (nodeCrypto && nodeCrypto.createCipheriv) {
138
+ return nodeCrypto.createCipheriv(algorithm, key, iv);
139
+ }
140
+ else {
141
+ // Fallback encryption (XOR-based, not secure)
142
+ let encrypted = '';
143
+ return {
144
+ update: (data, inputEncoding, outputEncoding) => {
145
+ for (let i = 0; i < data.length; i++) {
146
+ const char = data.charCodeAt(i);
147
+ const keyByte = key[i % key.length];
148
+ const ivByte = iv[i % iv.length];
149
+ encrypted += String.fromCharCode(char ^ keyByte ^ ivByte);
150
+ }
151
+ return outputEncoding === 'hex' ? Buffer.from(encrypted, 'binary').toString('hex') : encrypted;
152
+ },
153
+ final: (outputEncoding) => {
154
+ return outputEncoding === 'hex' ? '' : '';
155
+ }
156
+ };
157
+ }
158
+ }
159
+ /**
160
+ * Create decipher
161
+ */
162
+ export function createDecipheriv(algorithm, key, iv) {
163
+ if (nodeCrypto && nodeCrypto.createDecipheriv) {
164
+ return nodeCrypto.createDecipheriv(algorithm, key, iv);
165
+ }
166
+ else {
167
+ // Fallback decryption (XOR-based, matches createCipheriv)
168
+ let decrypted = '';
169
+ return {
170
+ update: (data, inputEncoding, outputEncoding) => {
171
+ const input = inputEncoding === 'hex' ? Buffer.from(data, 'hex').toString('binary') : data;
172
+ for (let i = 0; i < input.length; i++) {
173
+ const char = input.charCodeAt(i);
174
+ const keyByte = key[i % key.length];
175
+ const ivByte = iv[i % iv.length];
176
+ decrypted += String.fromCharCode(char ^ keyByte ^ ivByte);
177
+ }
178
+ return decrypted;
179
+ },
180
+ final: (outputEncoding) => {
181
+ return '';
182
+ }
183
+ };
184
+ }
185
+ }
186
+ /**
187
+ * Timing safe equal
188
+ */
189
+ export function timingSafeEqual(a, b) {
190
+ if (nodeCrypto && nodeCrypto.timingSafeEqual) {
191
+ return nodeCrypto.timingSafeEqual(a, b);
192
+ }
193
+ else {
194
+ // Fallback implementation
195
+ if (a.length !== b.length)
196
+ return false;
197
+ let result = 0;
198
+ for (let i = 0; i < a.length; i++) {
199
+ result |= a[i] ^ b[i];
200
+ }
201
+ return result === 0;
202
+ }
203
+ }
204
+ export default {
205
+ randomBytes,
206
+ randomUUID,
207
+ createHash,
208
+ createHmac,
209
+ pbkdf2Sync,
210
+ scryptSync,
211
+ createCipheriv,
212
+ createDecipheriv,
213
+ timingSafeEqual
214
+ };
215
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/universal/crypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Universal Events implementation
3
+ * Browser: Uses EventTarget API
4
+ * Node.js: Uses built-in events module
5
+ */
6
+ /**
7
+ * Universal EventEmitter interface
8
+ */
9
+ export interface UniversalEventEmitter {
10
+ on(event: string, listener: (...args: any[]) => void): this;
11
+ off(event: string, listener: (...args: any[]) => void): this;
12
+ emit(event: string, ...args: any[]): boolean;
13
+ once(event: string, listener: (...args: any[]) => void): this;
14
+ removeAllListeners(event?: string): this;
15
+ listenerCount(event: string): number;
16
+ }
17
+ /**
18
+ * Universal EventEmitter class
19
+ */
20
+ export declare class EventEmitter implements UniversalEventEmitter {
21
+ private emitter;
22
+ constructor();
23
+ on(event: string, listener: (...args: any[]) => void): this;
24
+ off(event: string, listener: (...args: any[]) => void): this;
25
+ emit(event: string, ...args: any[]): boolean;
26
+ once(event: string, listener: (...args: any[]) => void): this;
27
+ removeAllListeners(event?: string): this;
28
+ listenerCount(event: string): number;
29
+ }
30
+ export { EventEmitter as default };
31
+ export declare const NodeEventEmitterClass: any;
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Universal Events implementation
3
+ * Browser: Uses EventTarget API
4
+ * Node.js: Uses built-in events module
5
+ */
6
+ import { isBrowser, isNode } from '../utils/environment.js';
7
+ let nodeEvents = null;
8
+ // Dynamic import for Node.js events (only in Node.js environment)
9
+ if (isNode()) {
10
+ try {
11
+ nodeEvents = await import('events');
12
+ }
13
+ catch {
14
+ // Ignore import errors in non-Node environments
15
+ }
16
+ }
17
+ /**
18
+ * Browser implementation using EventTarget
19
+ */
20
+ class BrowserEventEmitter extends EventTarget {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.listeners = new Map();
24
+ }
25
+ on(event, listener) {
26
+ if (!this.listeners.has(event)) {
27
+ this.listeners.set(event, new Set());
28
+ }
29
+ this.listeners.get(event).add(listener);
30
+ const handler = (e) => {
31
+ const customEvent = e;
32
+ listener(...(customEvent.detail || []));
33
+ };
34
+ listener.__handler = handler;
35
+ this.addEventListener(event, handler);
36
+ return this;
37
+ }
38
+ off(event, listener) {
39
+ const eventListeners = this.listeners.get(event);
40
+ if (eventListeners) {
41
+ eventListeners.delete(listener);
42
+ const handler = listener.__handler;
43
+ if (handler) {
44
+ this.removeEventListener(event, handler);
45
+ delete listener.__handler;
46
+ }
47
+ }
48
+ return this;
49
+ }
50
+ emit(event, ...args) {
51
+ const customEvent = new CustomEvent(event, { detail: args });
52
+ this.dispatchEvent(customEvent);
53
+ const eventListeners = this.listeners.get(event);
54
+ return eventListeners ? eventListeners.size > 0 : false;
55
+ }
56
+ once(event, listener) {
57
+ const onceListener = (...args) => {
58
+ this.off(event, onceListener);
59
+ listener(...args);
60
+ };
61
+ return this.on(event, onceListener);
62
+ }
63
+ removeAllListeners(event) {
64
+ if (event) {
65
+ const eventListeners = this.listeners.get(event);
66
+ if (eventListeners) {
67
+ for (const listener of eventListeners) {
68
+ this.off(event, listener);
69
+ }
70
+ }
71
+ }
72
+ else {
73
+ for (const [eventName] of this.listeners) {
74
+ this.removeAllListeners(eventName);
75
+ }
76
+ }
77
+ return this;
78
+ }
79
+ listenerCount(event) {
80
+ const eventListeners = this.listeners.get(event);
81
+ return eventListeners ? eventListeners.size : 0;
82
+ }
83
+ }
84
+ /**
85
+ * Node.js implementation using events.EventEmitter
86
+ */
87
+ class NodeEventEmitter {
88
+ constructor() {
89
+ this.emitter = new nodeEvents.EventEmitter();
90
+ }
91
+ on(event, listener) {
92
+ this.emitter.on(event, listener);
93
+ return this;
94
+ }
95
+ off(event, listener) {
96
+ this.emitter.off(event, listener);
97
+ return this;
98
+ }
99
+ emit(event, ...args) {
100
+ return this.emitter.emit(event, ...args);
101
+ }
102
+ once(event, listener) {
103
+ this.emitter.once(event, listener);
104
+ return this;
105
+ }
106
+ removeAllListeners(event) {
107
+ this.emitter.removeAllListeners(event);
108
+ return this;
109
+ }
110
+ listenerCount(event) {
111
+ return this.emitter.listenerCount(event);
112
+ }
113
+ }
114
+ /**
115
+ * Universal EventEmitter class
116
+ */
117
+ export class EventEmitter {
118
+ constructor() {
119
+ if (isBrowser()) {
120
+ this.emitter = new BrowserEventEmitter();
121
+ }
122
+ else if (isNode() && nodeEvents) {
123
+ this.emitter = new NodeEventEmitter();
124
+ }
125
+ else {
126
+ this.emitter = new BrowserEventEmitter();
127
+ }
128
+ }
129
+ on(event, listener) {
130
+ this.emitter.on(event, listener);
131
+ return this;
132
+ }
133
+ off(event, listener) {
134
+ this.emitter.off(event, listener);
135
+ return this;
136
+ }
137
+ emit(event, ...args) {
138
+ return this.emitter.emit(event, ...args);
139
+ }
140
+ once(event, listener) {
141
+ this.emitter.once(event, listener);
142
+ return this;
143
+ }
144
+ removeAllListeners(event) {
145
+ this.emitter.removeAllListeners(event);
146
+ return this;
147
+ }
148
+ listenerCount(event) {
149
+ return this.emitter.listenerCount(event);
150
+ }
151
+ }
152
+ // Named export for compatibility
153
+ export { EventEmitter as default };
154
+ // Re-export Node.js EventEmitter class if available
155
+ export const NodeEventEmitterClass = nodeEvents?.EventEmitter || null;
156
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/universal/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Universal File System implementation
3
+ * Browser: Uses OPFS (Origin Private File System)
4
+ * Node.js: Uses built-in fs/promises
5
+ * Serverless: Uses memory-based fallback
6
+ */
7
+ /**
8
+ * Universal file operations interface
9
+ */
10
+ export interface UniversalFS {
11
+ readFile(path: string, encoding?: string): Promise<string>;
12
+ writeFile(path: string, data: string, encoding?: string): Promise<void>;
13
+ mkdir(path: string, options?: {
14
+ recursive?: boolean;
15
+ }): Promise<void>;
16
+ exists(path: string): Promise<boolean>;
17
+ readdir(path: string): Promise<string[]>;
18
+ readdir(path: string, options: {
19
+ withFileTypes: true;
20
+ }): Promise<{
21
+ name: string;
22
+ isDirectory(): boolean;
23
+ isFile(): boolean;
24
+ }[]>;
25
+ unlink(path: string): Promise<void>;
26
+ stat(path: string): Promise<{
27
+ isFile(): boolean;
28
+ isDirectory(): boolean;
29
+ }>;
30
+ access(path: string, mode?: number): Promise<void>;
31
+ }
32
+ export declare const readFile: (path: string, encoding?: string) => Promise<string>;
33
+ export declare const writeFile: (path: string, data: string, encoding?: string) => Promise<void>;
34
+ export declare const mkdir: (path: string, options?: {
35
+ recursive?: boolean;
36
+ }) => Promise<void>;
37
+ export declare const exists: (path: string) => Promise<boolean>;
38
+ export declare const readdir: {
39
+ (path: string): Promise<string[]>;
40
+ (path: string, options: {
41
+ withFileTypes: true;
42
+ }): Promise<{
43
+ name: string;
44
+ isDirectory(): boolean;
45
+ isFile(): boolean;
46
+ }[]>;
47
+ };
48
+ export declare const unlink: (path: string) => Promise<void>;
49
+ export declare const stat: (path: string) => Promise<{
50
+ isFile(): boolean;
51
+ isDirectory(): boolean;
52
+ }>;
53
+ export declare const access: (path: string, mode?: number) => Promise<void>;
54
+ declare const _default: {
55
+ readFile: (path: string, encoding?: string) => Promise<string>;
56
+ writeFile: (path: string, data: string, encoding?: string) => Promise<void>;
57
+ mkdir: (path: string, options?: {
58
+ recursive?: boolean;
59
+ }) => Promise<void>;
60
+ exists: (path: string) => Promise<boolean>;
61
+ readdir: {
62
+ (path: string): Promise<string[]>;
63
+ (path: string, options: {
64
+ withFileTypes: true;
65
+ }): Promise<{
66
+ name: string;
67
+ isDirectory(): boolean;
68
+ isFile(): boolean;
69
+ }[]>;
70
+ };
71
+ unlink: (path: string) => Promise<void>;
72
+ stat: (path: string) => Promise<{
73
+ isFile(): boolean;
74
+ isDirectory(): boolean;
75
+ }>;
76
+ access: (path: string, mode?: number) => Promise<void>;
77
+ };
78
+ export default _default;
79
+ export declare const promises: {
80
+ readFile: (path: string, encoding?: string) => Promise<string>;
81
+ writeFile: (path: string, data: string, encoding?: string) => Promise<void>;
82
+ mkdir: (path: string, options?: {
83
+ recursive?: boolean;
84
+ }) => Promise<void>;
85
+ exists: (path: string) => Promise<boolean>;
86
+ readdir: {
87
+ (path: string): Promise<string[]>;
88
+ (path: string, options: {
89
+ withFileTypes: true;
90
+ }): Promise<{
91
+ name: string;
92
+ isDirectory(): boolean;
93
+ isFile(): boolean;
94
+ }[]>;
95
+ };
96
+ unlink: (path: string) => Promise<void>;
97
+ stat: (path: string) => Promise<{
98
+ isFile(): boolean;
99
+ isDirectory(): boolean;
100
+ }>;
101
+ access: (path: string, mode?: number) => Promise<void>;
102
+ };