@soulcraft/brainy 0.58.0 → 0.59.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.
- package/bin/brainy.js +539 -387
- package/dist/augmentations/conduitAugmentations.js +1 -1
- package/dist/augmentations/conduitAugmentations.js.map +1 -1
- package/dist/augmentations/cortexSense.js +3 -3
- package/dist/augmentations/cortexSense.js.map +1 -1
- package/dist/brainyData.js +2 -1
- package/dist/brainyData.js.map +1 -1
- package/dist/browserFramework.minimal.d.ts +14 -0
- package/dist/browserFramework.minimal.js +31 -0
- package/dist/browserFramework.minimal.js.map +1 -0
- package/dist/cortex/backupRestore.js +2 -2
- package/dist/cortex/backupRestore.js.map +1 -1
- package/dist/cortex/cortex.d.ts +17 -2
- package/dist/cortex/cortex.js +262 -103
- package/dist/cortex/cortex.js.map +1 -1
- package/dist/cortex/neuralImport.js +2 -2
- package/dist/cortex/neuralImport.js.map +1 -1
- package/dist/cortex/serviceIntegration.js +2 -2
- package/dist/cortex/serviceIntegration.js.map +1 -1
- package/dist/distributed/configManager.js +1 -1
- package/dist/distributed/configManager.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp/brainyMCPAdapter.js +1 -1
- package/dist/mcp/brainyMCPAdapter.js.map +1 -1
- package/dist/mcp/brainyMCPBroadcast.d.ts +82 -0
- package/dist/mcp/brainyMCPBroadcast.js +303 -0
- package/dist/mcp/brainyMCPBroadcast.js.map +1 -0
- package/dist/mcp/brainyMCPClient.d.ts +92 -0
- package/dist/mcp/brainyMCPClient.js +254 -0
- package/dist/mcp/brainyMCPClient.js.map +1 -0
- package/dist/mcp/brainyMCPService.js +1 -1
- package/dist/mcp/brainyMCPService.js.map +1 -1
- package/dist/mcp/mcpAugmentationToolset.js +1 -1
- package/dist/mcp/mcpAugmentationToolset.js.map +1 -1
- package/dist/universal/crypto.d.ts +64 -0
- package/dist/universal/crypto.js +215 -0
- package/dist/universal/crypto.js.map +1 -0
- package/dist/universal/events.d.ts +31 -0
- package/dist/universal/events.js +156 -0
- package/dist/universal/events.js.map +1 -0
- package/dist/universal/fs.d.ts +102 -0
- package/dist/universal/fs.js +304 -0
- package/dist/universal/fs.js.map +1 -0
- package/dist/universal/index.d.ts +16 -0
- package/dist/universal/index.js +23 -0
- package/dist/universal/index.js.map +1 -0
- package/dist/universal/path.d.ts +51 -0
- package/dist/universal/path.js +161 -0
- package/dist/universal/path.js.map +1 -0
- package/dist/universal/uuid.d.ts +10 -0
- package/dist/universal/uuid.js +21 -0
- package/dist/universal/uuid.js.map +1 -0
- package/package.json +55 -2
- package/dist/augmentationFactory.d.ts.map +0 -1
- package/dist/augmentationPipeline.d.ts.map +0 -1
- package/dist/augmentationRegistry.d.ts.map +0 -1
- package/dist/augmentationRegistryLoader.d.ts.map +0 -1
- package/dist/augmentations/conduitAugmentations.d.ts.map +0 -1
- package/dist/augmentations/memoryAugmentations.d.ts.map +0 -1
- package/dist/augmentations/serverSearchAugmentations.d.ts.map +0 -1
- package/dist/brainyData.d.ts.map +0 -1
- package/dist/browserFramework.d.ts.map +0 -1
- package/dist/coreTypes.d.ts.map +0 -1
- package/dist/cortex/cli.d.ts +0 -8
- package/dist/cortex/cli.js +0 -207
- package/dist/cortex/cli.js.map +0 -1
- package/dist/cortex/commands/index.d.ts +0 -79
- package/dist/cortex/commands/index.js +0 -614
- package/dist/cortex/commands/index.js.map +0 -1
- package/dist/cortex/config.d.ts +0 -112
- package/dist/cortex/config.js +0 -312
- package/dist/cortex/config.js.map +0 -1
- package/dist/cortex/licensingSystem.d.ts +0 -126
- package/dist/cortex/licensingSystem.js +0 -474
- package/dist/cortex/licensingSystem.js.map +0 -1
- package/dist/cortex/webhookManager.d.ts +0 -39
- package/dist/cortex/webhookManager.js +0 -326
- package/dist/cortex/webhookManager.js.map +0 -1
- package/dist/demo.d.ts.map +0 -1
- package/dist/distributed/configManager.d.ts.map +0 -1
- package/dist/distributed/domainDetector.d.ts.map +0 -1
- package/dist/distributed/hashPartitioner.d.ts.map +0 -1
- package/dist/distributed/healthMonitor.d.ts.map +0 -1
- package/dist/distributed/index.d.ts.map +0 -1
- package/dist/distributed/operationalModes.d.ts.map +0 -1
- package/dist/errors/brainyError.d.ts.map +0 -1
- package/dist/examples/basicUsage.d.ts.map +0 -1
- package/dist/hnsw/distributedSearch.d.ts.map +0 -1
- package/dist/hnsw/hnswIndex.d.ts.map +0 -1
- package/dist/hnsw/hnswIndexOptimized.d.ts.map +0 -1
- package/dist/hnsw/optimizedHNSWIndex.d.ts.map +0 -1
- package/dist/hnsw/partitionedHNSWIndex.d.ts.map +0 -1
- package/dist/hnsw/scaledHNSWSystem.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/mcp/brainyMCPAdapter.d.ts.map +0 -1
- package/dist/mcp/brainyMCPService.d.ts.map +0 -1
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/mcpAugmentationToolset.d.ts.map +0 -1
- package/dist/pipeline.d.ts.map +0 -1
- package/dist/sequentialPipeline.d.ts.map +0 -1
- package/dist/setup.d.ts.map +0 -1
- package/dist/storage/adapters/baseStorageAdapter.d.ts.map +0 -1
- package/dist/storage/adapters/batchS3Operations.d.ts.map +0 -1
- package/dist/storage/adapters/fileSystemStorage.d.ts.map +0 -1
- package/dist/storage/adapters/memoryStorage.d.ts.map +0 -1
- package/dist/storage/adapters/opfsStorage.d.ts.map +0 -1
- package/dist/storage/adapters/optimizedS3Search.d.ts.map +0 -1
- package/dist/storage/adapters/s3CompatibleStorage.d.ts.map +0 -1
- package/dist/storage/baseStorage.d.ts.map +0 -1
- package/dist/storage/cacheManager.d.ts.map +0 -1
- package/dist/storage/enhancedCacheManager.d.ts.map +0 -1
- package/dist/storage/readOnlyOptimizations.d.ts.map +0 -1
- package/dist/storage/storageFactory.d.ts.map +0 -1
- package/dist/types/augmentations.d.ts.map +0 -1
- package/dist/types/brainyDataInterface.d.ts.map +0 -1
- package/dist/types/distributedTypes.d.ts.map +0 -1
- package/dist/types/fileSystemTypes.d.ts.map +0 -1
- package/dist/types/graphTypes.d.ts.map +0 -1
- package/dist/types/mcpTypes.d.ts.map +0 -1
- package/dist/types/paginationTypes.d.ts.map +0 -1
- package/dist/types/pipelineTypes.d.ts.map +0 -1
- package/dist/types/tensorflowTypes.d.ts +0 -26
- package/dist/types/tensorflowTypes.d.ts.map +0 -1
- package/dist/types/tensorflowTypes.js +0 -6
- package/dist/types/tensorflowTypes.js.map +0 -1
- package/dist/unified.d.ts.map +0 -1
- package/dist/utils/autoConfiguration.d.ts.map +0 -1
- package/dist/utils/cacheAutoConfig.d.ts.map +0 -1
- package/dist/utils/crypto.d.ts.map +0 -1
- package/dist/utils/distance.d.ts.map +0 -1
- package/dist/utils/embedding.d.ts.map +0 -1
- package/dist/utils/environment.d.ts.map +0 -1
- package/dist/utils/fieldNameTracking.d.ts.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/jsonProcessing.d.ts.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/operationUtils.d.ts.map +0 -1
- package/dist/utils/robustModelLoader.d.ts +0 -112
- package/dist/utils/robustModelLoader.d.ts.map +0 -1
- package/dist/utils/robustModelLoader.js +0 -624
- package/dist/utils/robustModelLoader.js.map +0 -1
- package/dist/utils/searchCache.d.ts.map +0 -1
- package/dist/utils/statistics.d.ts.map +0 -1
- package/dist/utils/statisticsCollector.d.ts.map +0 -1
- package/dist/utils/textEncoding.d.ts.map +0 -1
- package/dist/utils/typeUtils.d.ts.map +0 -1
- package/dist/utils/version.d.ts.map +0 -1
- package/dist/utils/workerUtils.d.ts.map +0 -1
- package/dist/webhooks/webhookSystem.d.ts +0 -114
- package/dist/webhooks/webhookSystem.js +0 -321
- package/dist/webhooks/webhookSystem.js.map +0 -1
- 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
|
+
};
|