@solarpunkltd/swarm-chat-js 6.0.0 → 6.0.2
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/index.d.ts +1 -1
- package/dist/index.esm.js +56092 -0
- package/dist/index.js +85 -4
- package/dist/interfaces/chat.d.ts +2 -2
- package/dist/lib/history.d.ts +1 -1
- package/dist/lib/utils.d.ts +1 -1
- package/dist/swarm-chat-umd.js +85 -0
- package/dist/utils/bee.d.ts +1 -1
- package/dist/waku/Waku.d.ts +1 -1
- package/package.json +2 -2
- package/dist/index.js.map +0 -1
- package/dist/interfaces/chat.js +0 -2
- package/dist/interfaces/chat.js.map +0 -1
- package/dist/interfaces/index.js +0 -3
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/message.js +0 -7
- package/dist/interfaces/message.js.map +0 -1
- package/dist/lib/constants.js +0 -11
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/core.js +0 -225
- package/dist/lib/core.js.map +0 -1
- package/dist/lib/history.js +0 -140
- package/dist/lib/history.js.map +0 -1
- package/dist/lib/utils.js +0 -205
- package/dist/lib/utils.js.map +0 -1
- package/dist/scripts/mine.js +0 -13
- package/dist/scripts/mine.js.map +0 -1
- package/dist/utils/bee.js +0 -64
- package/dist/utils/bee.js.map +0 -1
- package/dist/utils/common.js +0 -33
- package/dist/utils/common.js.map +0 -1
- package/dist/utils/error.js +0 -20
- package/dist/utils/error.js.map +0 -1
- package/dist/utils/eventEmitter.js +0 -32
- package/dist/utils/eventEmitter.js.map +0 -1
- package/dist/utils/logger.js +0 -31
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/validation.js +0 -187
- package/dist/utils/validation.js.map +0 -1
- package/dist/waku/ProtoMessage.js +0 -35
- package/dist/waku/ProtoMessage.js.map +0 -1
- package/dist/waku/Waku.js +0 -84
- package/dist/waku/Waku.js.map +0 -1
package/dist/lib/utils.js
DELETED
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import { Bytes, Identifier, PrivateKey, Stamper, Topic } from '@ethersphere/bee-js';
|
|
2
|
-
import { Binary, MerkleTree } from 'cafe-utility';
|
|
3
|
-
import { makeContentAddressedChunk, makeFeedIdentifier, makeSingleOwnerChunk } from '../utils/bee';
|
|
4
|
-
import { remove0x } from '../utils/common';
|
|
5
|
-
import { ErrorHandler } from '../utils/error';
|
|
6
|
-
export class SwarmChatUtils {
|
|
7
|
-
constructor(userDetails, swarmSettings) {
|
|
8
|
-
this.userDetails = userDetails;
|
|
9
|
-
this.swarmSettings = swarmSettings;
|
|
10
|
-
this.depth = 26;
|
|
11
|
-
this.errorHandler = ErrorHandler.getInstance();
|
|
12
|
-
this.UPLOAD_GSOC_TIMEOUT = 2000;
|
|
13
|
-
}
|
|
14
|
-
generateUserOwnedFeedId(topic, userAddress) {
|
|
15
|
-
return `${topic}_EthercastChat_${userAddress}`;
|
|
16
|
-
}
|
|
17
|
-
isNotFoundError(error) {
|
|
18
|
-
return (error.stack.includes('404') ||
|
|
19
|
-
error.message.includes('Not Found') ||
|
|
20
|
-
error.message.includes('404') ||
|
|
21
|
-
error.code === 404);
|
|
22
|
-
}
|
|
23
|
-
async writeOwnFeedDataByIndex(index, data) {
|
|
24
|
-
const { enveloped, stamp } = this.swarmSettings;
|
|
25
|
-
if (!enveloped) {
|
|
26
|
-
await this.writeOwnFeedDataByIndexOwned(index, data);
|
|
27
|
-
}
|
|
28
|
-
else if (stamp) {
|
|
29
|
-
await this.writeOwnFeedDataByIndexEnvelope(index, data);
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
throw new Error('Enveloped mode is enabled, but stamp is not provided');
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
async writeOwnFeedDataByIndexOwned(index, data) {
|
|
36
|
-
const { bee, stamp, chatTopic } = this.swarmSettings;
|
|
37
|
-
const { privateKey, ownAddress } = this.userDetails;
|
|
38
|
-
const feedID = this.generateUserOwnedFeedId(chatTopic, ownAddress);
|
|
39
|
-
const topic = Topic.fromString(feedID);
|
|
40
|
-
const feedWriter = bee.makeFeedWriter(topic, new PrivateKey(privateKey));
|
|
41
|
-
await feedWriter.uploadPayload(stamp, JSON.stringify(data), {
|
|
42
|
-
index,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
async writeOwnFeedDataByIndexEnvelope(index, data) {
|
|
46
|
-
const { bee, stamp, chatTopic } = this.swarmSettings;
|
|
47
|
-
const { privateKey, ownAddress } = this.userDetails;
|
|
48
|
-
const signer = new PrivateKey(privateKey);
|
|
49
|
-
const stamper = Stamper.fromBlank(privateKey, stamp, this.depth);
|
|
50
|
-
const feedID = this.generateUserOwnedFeedId(chatTopic, ownAddress);
|
|
51
|
-
const topic = Topic.fromString(feedID);
|
|
52
|
-
const identifier = makeFeedIdentifier(topic, index);
|
|
53
|
-
const cac = makeContentAddressedChunk(data);
|
|
54
|
-
const soc = makeSingleOwnerChunk(cac, identifier, signer);
|
|
55
|
-
const stampReadyChunk = {
|
|
56
|
-
hash: () => soc.address.toUint8Array(),
|
|
57
|
-
};
|
|
58
|
-
const envelope = stamper.stamp(stampReadyChunk);
|
|
59
|
-
const { upload } = bee.makeSOCWriter(signer);
|
|
60
|
-
const payload = Bytes.fromUtf8(data);
|
|
61
|
-
const result = await upload(envelope, identifier, payload.toUint8Array());
|
|
62
|
-
return result.reference.toHex();
|
|
63
|
-
}
|
|
64
|
-
orderMessages(messages) {
|
|
65
|
-
return messages.sort((a, b) => a.timestamp - b.timestamp);
|
|
66
|
-
}
|
|
67
|
-
async downloadObjectFromBee(reference) {
|
|
68
|
-
try {
|
|
69
|
-
const { bee } = this.swarmSettings;
|
|
70
|
-
const data = await bee.downloadData(reference);
|
|
71
|
-
return data ? data.toJSON() : null;
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
this.errorHandler.handleError(error, 'Utils.downloadObjectFromBee');
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
async uploadObjectToBee(jsObject) {
|
|
79
|
-
const { enveloped, stamp } = this.swarmSettings;
|
|
80
|
-
if (!enveloped) {
|
|
81
|
-
return this.uploadObjectToBeeOwn(jsObject);
|
|
82
|
-
}
|
|
83
|
-
else if (stamp) {
|
|
84
|
-
return this.uploadObjectToBeeEnvelope(jsObject);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
throw new Error('Enveloped mode is enabled, but stamp is not provided');
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
async uploadObjectToBeeOwn(jsObject) {
|
|
91
|
-
try {
|
|
92
|
-
const { bee, stamp } = this.swarmSettings;
|
|
93
|
-
const result = await bee.uploadData(stamp, JSON.stringify(jsObject), { redundancyLevel: 4 });
|
|
94
|
-
return result.reference.toString();
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
this.errorHandler.handleError(error, 'Utils.uploadObjectToBee');
|
|
98
|
-
return null;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
async uploadObjectToBeeEnvelope(jsObject) {
|
|
102
|
-
try {
|
|
103
|
-
const { bee, stamp } = this.swarmSettings;
|
|
104
|
-
const { privateKey } = this.userDetails;
|
|
105
|
-
const stamper = Stamper.fromBlank(privateKey, stamp, this.depth);
|
|
106
|
-
const payload = Bytes.fromUtf8(JSON.stringify(jsObject));
|
|
107
|
-
const tree = new MerkleTree(async (chunk) => {
|
|
108
|
-
await bee.uploadChunk(stamper.stamp(chunk), chunk.build());
|
|
109
|
-
});
|
|
110
|
-
await tree.append(payload.toUint8Array());
|
|
111
|
-
const rootChunk = await tree.finalize();
|
|
112
|
-
return Binary.uint8ArrayToHex(rootChunk.hash());
|
|
113
|
-
}
|
|
114
|
-
catch (error) {
|
|
115
|
-
this.errorHandler.handleError(error, 'Utils.uploadObjectToBee');
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
async getOwnLatestFeedIndex() {
|
|
120
|
-
try {
|
|
121
|
-
const { bee, chatTopic } = this.swarmSettings;
|
|
122
|
-
const { ownAddress } = this.userDetails;
|
|
123
|
-
const feedID = this.generateUserOwnedFeedId(chatTopic, ownAddress);
|
|
124
|
-
const topic = Topic.fromString(feedID);
|
|
125
|
-
const feedReader = bee.makeFeedReader(topic, ownAddress);
|
|
126
|
-
const feedEntry = await feedReader.downloadPayload();
|
|
127
|
-
const latestIndex = Number(feedEntry.feedIndex.toBigInt());
|
|
128
|
-
const nextIndex = latestIndex + 1;
|
|
129
|
-
return { latestIndex, nextIndex };
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
if (this.isNotFoundError(error)) {
|
|
133
|
-
return { latestIndex: -1, nextIndex: 0 };
|
|
134
|
-
}
|
|
135
|
-
throw error;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
async fetchLatestChatMessage() {
|
|
139
|
-
const { bee, chatTopic, chatAddress } = this.swarmSettings;
|
|
140
|
-
const reader = bee.makeFeedReader(Topic.fromString(chatTopic), remove0x(chatAddress));
|
|
141
|
-
const res = await reader.downloadPayload();
|
|
142
|
-
return { data: res.payload.toJSON(), index: res.feedIndex };
|
|
143
|
-
}
|
|
144
|
-
async fetchChatMessage(index) {
|
|
145
|
-
const { bee, chatTopic, chatAddress } = this.swarmSettings;
|
|
146
|
-
const reader = bee.makeFeedReader(Topic.fromString(chatTopic), remove0x(chatAddress));
|
|
147
|
-
const res = await reader.downloadPayload({ index });
|
|
148
|
-
return res.payload.toJSON();
|
|
149
|
-
}
|
|
150
|
-
async sendMessageToGsoc(message) {
|
|
151
|
-
const { enveloped, stamp } = this.swarmSettings;
|
|
152
|
-
if (!enveloped) {
|
|
153
|
-
await this.sendMessageToGsocOwn(message);
|
|
154
|
-
}
|
|
155
|
-
else if (stamp) {
|
|
156
|
-
await this.sendMessageToGsocEnvelope(message);
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
throw new Error('Enveloped mode is enabled, but stamp is not provided');
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
async rawSocDownload(owner, id) {
|
|
163
|
-
const { beeUrl } = this.swarmSettings;
|
|
164
|
-
const response = await fetch(`${beeUrl}/soc/${owner}/${id}`, {
|
|
165
|
-
headers: {
|
|
166
|
-
'swarm-chunk-retrieval-timeout': '2000ms',
|
|
167
|
-
},
|
|
168
|
-
});
|
|
169
|
-
if (!response.ok) {
|
|
170
|
-
const error = new Error(`Failed to fetch: ${owner}/${id} [${response.status}]`);
|
|
171
|
-
error.status = response.status;
|
|
172
|
-
throw error;
|
|
173
|
-
}
|
|
174
|
-
return response.text();
|
|
175
|
-
}
|
|
176
|
-
async sendMessageToGsocOwn(message) {
|
|
177
|
-
const { bee, stamp, gsocTopic, gsocResourceId } = this.swarmSettings;
|
|
178
|
-
const signer = new PrivateKey(gsocResourceId);
|
|
179
|
-
const identifier = Identifier.fromString(gsocTopic);
|
|
180
|
-
const data = Bytes.fromUtf8(message);
|
|
181
|
-
const { upload } = bee.makeSOCWriter(signer, {
|
|
182
|
-
timeout: this.UPLOAD_GSOC_TIMEOUT,
|
|
183
|
-
});
|
|
184
|
-
await upload(stamp, identifier, data.toUint8Array());
|
|
185
|
-
}
|
|
186
|
-
async sendMessageToGsocEnvelope(message) {
|
|
187
|
-
const { bee, stamp, gsocTopic, gsocResourceId } = this.swarmSettings;
|
|
188
|
-
const { privateKey } = this.userDetails;
|
|
189
|
-
const stamper = Stamper.fromBlank(privateKey, stamp, this.depth);
|
|
190
|
-
const signer = new PrivateKey(gsocResourceId);
|
|
191
|
-
const identifier = Identifier.fromString(gsocTopic);
|
|
192
|
-
const data = Bytes.fromUtf8(message);
|
|
193
|
-
const cac = makeContentAddressedChunk(data.toUint8Array());
|
|
194
|
-
const soc = makeSingleOwnerChunk(cac, identifier, signer);
|
|
195
|
-
const stampReadyChunk = {
|
|
196
|
-
hash: () => soc.address.toUint8Array(),
|
|
197
|
-
};
|
|
198
|
-
const envelope = stamper.stamp(stampReadyChunk);
|
|
199
|
-
const { upload } = bee.makeSOCWriter(signer, {
|
|
200
|
-
timeout: this.UPLOAD_GSOC_TIMEOUT,
|
|
201
|
-
});
|
|
202
|
-
await upload(envelope, identifier, data.toUint8Array());
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/lib/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/scripts/mine.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { Bee, Identifier } from '@ethersphere/bee-js';
|
|
3
|
-
async function mine(beeUrl, topic) {
|
|
4
|
-
const BEE = new Bee(beeUrl);
|
|
5
|
-
const addresses = await BEE.getNodeAddresses();
|
|
6
|
-
const identifier = Identifier.fromString(topic);
|
|
7
|
-
const privateKey = BEE.gsocMine(addresses.overlay, identifier);
|
|
8
|
-
console.log(privateKey.toString());
|
|
9
|
-
}
|
|
10
|
-
const beeUrl = process.argv[2] || 'http://localhost:1633';
|
|
11
|
-
const topic = process.argv[3] || 'DOOMSDAY';
|
|
12
|
-
mine(beeUrl, topic);
|
|
13
|
-
//# sourceMappingURL=mine.js.map
|
package/dist/scripts/mine.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mine.js","sourceRoot":"","sources":["../../src/scripts/mine.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,KAAK,UAAU,IAAI,CAAC,MAAc,EAAE,KAAa;IAC/C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,uBAAuB,CAAC;AAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;AAC5C,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC"}
|
package/dist/utils/bee.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { BeeArgumentError, Bytes, FeedIndex, Identifier, PrivateKey, Reference, Span, } from '@ethersphere/bee-js';
|
|
2
|
-
import { Binary } from 'cafe-utility';
|
|
3
|
-
const ENCODER = new TextEncoder();
|
|
4
|
-
const MIN_PAYLOAD_SIZE = 1;
|
|
5
|
-
const MAX_PAYLOAD_SIZE = 4096;
|
|
6
|
-
const MAX_CHUNK_PAYLOAD_SIZE = 4096;
|
|
7
|
-
const SEGMENT_SIZE = 32;
|
|
8
|
-
export function makeFeedIdentifier(topic, index) {
|
|
9
|
-
index = typeof index === 'number' ? FeedIndex.fromBigInt(BigInt(index)) : index;
|
|
10
|
-
return new Identifier(Binary.keccak256(Binary.concatBytes(topic.toUint8Array(), index.toUint8Array())));
|
|
11
|
-
}
|
|
12
|
-
export function calculateChunkAddress(chunkContent) {
|
|
13
|
-
const span = chunkContent.slice(0, Span.LENGTH);
|
|
14
|
-
const payload = chunkContent.slice(Span.LENGTH);
|
|
15
|
-
const rootHash = calculateBmtRootHash(payload);
|
|
16
|
-
const chunkHash = Binary.keccak256(Binary.concatBytes(span, rootHash));
|
|
17
|
-
return new Reference(chunkHash);
|
|
18
|
-
}
|
|
19
|
-
function calculateBmtRootHash(payload) {
|
|
20
|
-
if (payload.length > MAX_CHUNK_PAYLOAD_SIZE) {
|
|
21
|
-
throw new BeeArgumentError(`payload size ${payload.length} exceeds maximum chunk payload size ${MAX_CHUNK_PAYLOAD_SIZE}`, payload);
|
|
22
|
-
}
|
|
23
|
-
const input = new Uint8Array(MAX_CHUNK_PAYLOAD_SIZE);
|
|
24
|
-
input.set(payload);
|
|
25
|
-
return Binary.log2Reduce(Binary.partition(input, SEGMENT_SIZE), (a, b) => Binary.keccak256(Binary.concatBytes(a, b)));
|
|
26
|
-
}
|
|
27
|
-
export function makeContentAddressedChunk(payloadBytes) {
|
|
28
|
-
if (!(payloadBytes instanceof Uint8Array)) {
|
|
29
|
-
payloadBytes = ENCODER.encode(payloadBytes);
|
|
30
|
-
}
|
|
31
|
-
if (payloadBytes.length < MIN_PAYLOAD_SIZE || payloadBytes.length > MAX_PAYLOAD_SIZE) {
|
|
32
|
-
throw new RangeError(`payload size ${payloadBytes.length} exceeds limits [${MIN_PAYLOAD_SIZE}, ${MAX_PAYLOAD_SIZE}]`);
|
|
33
|
-
}
|
|
34
|
-
const span = Span.fromBigInt(BigInt(payloadBytes.length));
|
|
35
|
-
const data = Binary.concatBytes(span.toUint8Array(), payloadBytes);
|
|
36
|
-
return {
|
|
37
|
-
data,
|
|
38
|
-
span,
|
|
39
|
-
payload: Bytes.fromSlice(data, Span.LENGTH),
|
|
40
|
-
address: calculateChunkAddress(data),
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
export function makeSOCAddress(identifier, address) {
|
|
44
|
-
return new Reference(Binary.keccak256(Binary.concatBytes(identifier.toUint8Array(), address.toUint8Array())));
|
|
45
|
-
}
|
|
46
|
-
export function makeSingleOwnerChunk(chunk, identifier, signer) {
|
|
47
|
-
identifier = new Identifier(identifier);
|
|
48
|
-
signer = new PrivateKey(signer);
|
|
49
|
-
const address = makeSOCAddress(identifier, signer.publicKey().address());
|
|
50
|
-
const signature = signer.sign(Binary.concatBytes(identifier.toUint8Array(), chunk.address.toUint8Array()));
|
|
51
|
-
const data = Binary.concatBytes(identifier.toUint8Array(), signature.toUint8Array(), chunk.data);
|
|
52
|
-
const span = Span.fromSlice(chunk.data, 0);
|
|
53
|
-
const payload = Bytes.fromSlice(chunk.data, Span.LENGTH);
|
|
54
|
-
return {
|
|
55
|
-
data,
|
|
56
|
-
identifier,
|
|
57
|
-
signature,
|
|
58
|
-
span,
|
|
59
|
-
payload,
|
|
60
|
-
address,
|
|
61
|
-
owner: signer.publicKey().address(),
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=bee.js.map
|
package/dist/utils/bee.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bee.js","sourceRoot":"","sources":["../../src/utils/bee.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/common.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { ErrorHandler } from './error';
|
|
2
|
-
import { Logger } from './logger';
|
|
3
|
-
const logger = Logger.getInstance();
|
|
4
|
-
const errorHandler = ErrorHandler.getInstance();
|
|
5
|
-
export function sleep(delay) {
|
|
6
|
-
return new Promise((resolve) => {
|
|
7
|
-
setTimeout(resolve, delay);
|
|
8
|
-
});
|
|
9
|
-
}
|
|
10
|
-
export function remove0x(hex) {
|
|
11
|
-
return (hex.startsWith('0x') ? hex.slice(2) : hex).toLowerCase();
|
|
12
|
-
}
|
|
13
|
-
export async function retryAwaitableAsync(fn, retries = 3, delay = 250) {
|
|
14
|
-
return new Promise((resolve, reject) => {
|
|
15
|
-
fn()
|
|
16
|
-
.then(resolve)
|
|
17
|
-
.catch((error) => {
|
|
18
|
-
if (retries > 0) {
|
|
19
|
-
logger.info(`Retrying... Attempts left: ${retries}. Error: ${error.message}`);
|
|
20
|
-
setTimeout(() => {
|
|
21
|
-
retryAwaitableAsync(fn, retries - 1, delay)
|
|
22
|
-
.then(resolve)
|
|
23
|
-
.catch(reject);
|
|
24
|
-
}, delay);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
errorHandler.handleError(error, 'Utils.retryAwaitableAsync');
|
|
28
|
-
reject(error);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=common.js.map
|
package/dist/utils/common.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;AACpC,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;AAEhD,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAoB,EACpB,UAAkB,CAAC,EACnB,QAAgB,GAAG;IAEnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,EAAE,EAAE;aACD,IAAI,CAAC,OAAO,CAAC;aACb,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,8BAA8B,OAAO,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9E,UAAU,CAAC,GAAG,EAAE;oBACd,mBAAmB,CAAC,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC;yBACxC,IAAI,CAAC,OAAO,CAAC;yBACb,KAAK,CAAC,MAAM,CAAC,CAAC;gBACnB,CAAC,EAAE,KAAK,CAAC,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;gBAC7D,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/utils/error.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Logger } from './logger';
|
|
2
|
-
export class ErrorHandler {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.logger = Logger.getInstance();
|
|
5
|
-
}
|
|
6
|
-
static getInstance() {
|
|
7
|
-
if (!ErrorHandler.instance) {
|
|
8
|
-
ErrorHandler.instance = new ErrorHandler();
|
|
9
|
-
}
|
|
10
|
-
return ErrorHandler.instance;
|
|
11
|
-
}
|
|
12
|
-
handleError(error, context) {
|
|
13
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
14
|
-
const stackTrace = error instanceof Error ? error.stack : null;
|
|
15
|
-
this.logger.error(`Error in ${context || 'unknown context'}: ${errorMessage}`, {
|
|
16
|
-
stack: stackTrace,
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=error.js.map
|
package/dist/utils/error.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,OAAO,YAAY;IAIvB;QAFQ,WAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEf,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3B,YAAY,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,KAAc,EAAE,OAAgB;QAC1C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;QACvF,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAE/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,OAAO,IAAI,iBAAiB,KAAK,YAAY,EAAE,EAAE;YAC7E,KAAK,EAAE,UAAU;SAClB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export class EventEmitter {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.events = {};
|
|
4
|
-
this.on = this.on.bind(this);
|
|
5
|
-
this.off = this.off.bind(this);
|
|
6
|
-
this.cleanAll = this.cleanAll.bind(this);
|
|
7
|
-
this.emit = this.emit.bind(this);
|
|
8
|
-
}
|
|
9
|
-
on(event, listener) {
|
|
10
|
-
if (!this.events[event]) {
|
|
11
|
-
this.events[event] = [];
|
|
12
|
-
}
|
|
13
|
-
this.events[event].push(listener);
|
|
14
|
-
}
|
|
15
|
-
off(event, listener) {
|
|
16
|
-
if (!this.events[event])
|
|
17
|
-
return;
|
|
18
|
-
const index = this.events[event].indexOf(listener);
|
|
19
|
-
if (index > -1) {
|
|
20
|
-
this.events[event].splice(index, 1);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
cleanAll() {
|
|
24
|
-
this.events = {};
|
|
25
|
-
}
|
|
26
|
-
emit(event, data) {
|
|
27
|
-
if (!this.events[event])
|
|
28
|
-
return;
|
|
29
|
-
this.events[event].forEach((listener) => listener(data));
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=eventEmitter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eventEmitter.js","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,YAAY;IAGvB;QAFQ,WAAM,GAAW,EAAE,CAAC;QAG1B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAEM,EAAE,CAAU,KAAa,EAAE,QAAqB;QACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEM,GAAG,CAAU,KAAa,EAAE,QAAqB;QACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAEM,IAAI,CAAU,KAAa,EAAE,IAAO;QACzC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF"}
|
package/dist/utils/logger.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export class Logger {
|
|
2
|
-
constructor() { }
|
|
3
|
-
static getInstance() {
|
|
4
|
-
if (!Logger.instance) {
|
|
5
|
-
Logger.instance = new Logger();
|
|
6
|
-
}
|
|
7
|
-
return Logger.instance;
|
|
8
|
-
}
|
|
9
|
-
formatMessage(level, ...args) {
|
|
10
|
-
const timestamp = new Date().toISOString();
|
|
11
|
-
return `[${timestamp}] [${level.toUpperCase()}] - ${args
|
|
12
|
-
.map((arg) => (typeof arg === 'object' ? JSON.stringify(arg) : arg))
|
|
13
|
-
.join(' ')}`;
|
|
14
|
-
}
|
|
15
|
-
log(...args) {
|
|
16
|
-
console.log(this.formatMessage('log', ...args));
|
|
17
|
-
}
|
|
18
|
-
info(...args) {
|
|
19
|
-
console.info(this.formatMessage('info', ...args));
|
|
20
|
-
}
|
|
21
|
-
warn(...args) {
|
|
22
|
-
console.warn(this.formatMessage('warn', ...args));
|
|
23
|
-
}
|
|
24
|
-
error(...args) {
|
|
25
|
-
console.error(this.formatMessage('error', ...args));
|
|
26
|
-
}
|
|
27
|
-
debug(...args) {
|
|
28
|
-
console.debug(this.formatMessage('debug', ...args));
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=logger.js.map
|
package/dist/utils/logger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,MAAM;IAGjB,gBAAuB,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,QAAQ,GAAG,IAAI,MAAM,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEO,aAAa,CAAC,KAAa,EAAE,GAAG,IAAW;QACjD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,IAAI,SAAS,MAAM,KAAK,CAAC,WAAW,EAAE,OAAO,IAAI;aACrD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aACnE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,GAAG,IAAW;QAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,GAAG,IAAW;QACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,GAAG,IAAW;QACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,GAAG,IAAW;QAClB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,GAAG,IAAW;QAClB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;CACF"}
|
package/dist/utils/validation.js
DELETED
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import { Signature } from '@ethersphere/bee-js';
|
|
2
|
-
import { Binary } from 'cafe-utility';
|
|
3
|
-
import { z } from 'zod';
|
|
4
|
-
import { MessageType } from '../interfaces/message';
|
|
5
|
-
import { Logger } from './logger';
|
|
6
|
-
const logger = Logger.getInstance();
|
|
7
|
-
export const CORE_MESSAGE_PROPERTIES = [
|
|
8
|
-
'id',
|
|
9
|
-
'targetMessageId',
|
|
10
|
-
'type',
|
|
11
|
-
'message',
|
|
12
|
-
'username',
|
|
13
|
-
'address',
|
|
14
|
-
'timestamp',
|
|
15
|
-
'signature',
|
|
16
|
-
'index',
|
|
17
|
-
'chatTopic',
|
|
18
|
-
'userTopic',
|
|
19
|
-
'additionalProps',
|
|
20
|
-
];
|
|
21
|
-
const MessageSchema = z
|
|
22
|
-
.object({
|
|
23
|
-
id: z.string(),
|
|
24
|
-
targetMessageId: z.string().optional(),
|
|
25
|
-
type: z.nativeEnum(MessageType),
|
|
26
|
-
message: z.string(),
|
|
27
|
-
username: z.string(),
|
|
28
|
-
address: z.string(),
|
|
29
|
-
timestamp: z.number(),
|
|
30
|
-
signature: z.string(),
|
|
31
|
-
index: z.number(),
|
|
32
|
-
chatTopic: z.string(),
|
|
33
|
-
userTopic: z.string(),
|
|
34
|
-
additionalProps: z.record(z.any()).optional(),
|
|
35
|
-
})
|
|
36
|
-
.refine((data) => {
|
|
37
|
-
if (!data.additionalProps || Object.keys(data.additionalProps).length === 0) {
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
const validation = validateAdditionalPropertiesInternal(data.additionalProps);
|
|
41
|
-
return validation.isValid;
|
|
42
|
-
}, {
|
|
43
|
-
message: 'Invalid additional properties in message',
|
|
44
|
-
});
|
|
45
|
-
const StateRefSchema = z.object({
|
|
46
|
-
reference: z.string(),
|
|
47
|
-
timestamp: z.number(),
|
|
48
|
-
});
|
|
49
|
-
const StatefulMessageSchema = z.object({
|
|
50
|
-
message: MessageSchema,
|
|
51
|
-
messageStateRefs: z.array(StateRefSchema).nullable(),
|
|
52
|
-
});
|
|
53
|
-
export function validateGsocMessage(message) {
|
|
54
|
-
const result = StatefulMessageSchema.safeParse(message);
|
|
55
|
-
if (!result.success) {
|
|
56
|
-
logger.warn('GSOC message validation failed:', result.error.format());
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
if (!validateUserSignature(message.message)) {
|
|
60
|
-
logger.warn('Invalid main message signature');
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
export function validateMessageState(messageState) {
|
|
66
|
-
if (!Array.isArray(messageState)) {
|
|
67
|
-
logger.warn('Message state must be an array');
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
for (const message of messageState) {
|
|
71
|
-
if (!validateMessageData(message)) {
|
|
72
|
-
logger.warn('Invalid message in message state:', message.id);
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
export function validateMessageData(message) {
|
|
79
|
-
const result = MessageSchema.safeParse(message);
|
|
80
|
-
if (!result.success) {
|
|
81
|
-
logger.warn('Message data validation failed:', result.error.format());
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
if (!validateUserSignature(message)) {
|
|
85
|
-
logger.warn('Invalid message signature');
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
|
-
export function validateUserSignature(validatedUser) {
|
|
91
|
-
try {
|
|
92
|
-
const message = {
|
|
93
|
-
username: validatedUser.username,
|
|
94
|
-
address: validatedUser.address,
|
|
95
|
-
timestamp: validatedUser.timestamp,
|
|
96
|
-
message: validatedUser.message,
|
|
97
|
-
};
|
|
98
|
-
const ENCODER = new TextEncoder();
|
|
99
|
-
const digest = Binary.concatBytes(ENCODER.encode(`\x19Ethereum Signed Message:\n32`), Binary.keccak256(ENCODER.encode(JSON.stringify(message))));
|
|
100
|
-
const isValidSig = new Signature(validatedUser.signature).isValid(digest, validatedUser.address);
|
|
101
|
-
if (isValidSig) {
|
|
102
|
-
throw new Error('Signature verification failed!');
|
|
103
|
-
}
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
logger.warn('Error in validateUserSignature', error);
|
|
108
|
-
return false;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
export function validateAdditionalPropertiesInternal(additionalProps) {
|
|
112
|
-
const errors = [];
|
|
113
|
-
if (additionalProps === null || additionalProps === undefined) {
|
|
114
|
-
return { isValid: true, errors: [] };
|
|
115
|
-
}
|
|
116
|
-
if (typeof additionalProps !== 'object' || Array.isArray(additionalProps)) {
|
|
117
|
-
errors.push('Additional properties must be a plain object');
|
|
118
|
-
return { isValid: false, errors };
|
|
119
|
-
}
|
|
120
|
-
for (const key of Object.keys(additionalProps)) {
|
|
121
|
-
if (CORE_MESSAGE_PROPERTIES.includes(key)) {
|
|
122
|
-
errors.push(`Property '${key}' is reserved and cannot be overridden`);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
const serialized = JSON.stringify(additionalProps);
|
|
126
|
-
const sizeInBytes = new TextEncoder().encode(serialized).length;
|
|
127
|
-
const MAX_SIZE = 1 * 1024;
|
|
128
|
-
if (sizeInBytes > MAX_SIZE) {
|
|
129
|
-
errors.push(`Additional properties too large: ${sizeInBytes} bytes (max: ${MAX_SIZE} bytes)`);
|
|
130
|
-
}
|
|
131
|
-
const MAX_DEPTH = 5;
|
|
132
|
-
function checkDepth(obj, depth = 0) {
|
|
133
|
-
if (depth > MAX_DEPTH)
|
|
134
|
-
return false;
|
|
135
|
-
if (typeof obj === 'object' && obj !== null && !Array.isArray(obj)) {
|
|
136
|
-
for (const value of Object.values(obj)) {
|
|
137
|
-
if (!checkDepth(value, depth + 1))
|
|
138
|
-
return false;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return true;
|
|
142
|
-
}
|
|
143
|
-
if (!checkDepth(additionalProps)) {
|
|
144
|
-
errors.push(`Additional properties nested too deeply (max depth: ${MAX_DEPTH})`);
|
|
145
|
-
}
|
|
146
|
-
for (const [key, value] of Object.entries(additionalProps)) {
|
|
147
|
-
if (key.length > 100) {
|
|
148
|
-
errors.push(`Property key '${key}' too long (max: 100 characters)`);
|
|
149
|
-
}
|
|
150
|
-
if (typeof value === 'string' && value.length > 1000) {
|
|
151
|
-
errors.push(`Property '${key}' value too long (max: 1000 characters)`);
|
|
152
|
-
}
|
|
153
|
-
if (typeof value === 'string') {
|
|
154
|
-
const dangerousPatterns = [
|
|
155
|
-
/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
|
|
156
|
-
/javascript:/gi,
|
|
157
|
-
/data:text\/html/gi,
|
|
158
|
-
/vbscript:/gi,
|
|
159
|
-
/on\w+\s*=/gi,
|
|
160
|
-
];
|
|
161
|
-
for (const pattern of dangerousPatterns) {
|
|
162
|
-
if (pattern.test(value)) {
|
|
163
|
-
errors.push(`Property '${key}' contains potentially dangerous content`);
|
|
164
|
-
break;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
const MAX_PROPERTIES = 20;
|
|
170
|
-
if (Object.keys(additionalProps).length > MAX_PROPERTIES) {
|
|
171
|
-
errors.push(`Too many additional properties: ${Object.keys(additionalProps).length} (max: ${MAX_PROPERTIES})`);
|
|
172
|
-
}
|
|
173
|
-
return { isValid: errors.length === 0, errors };
|
|
174
|
-
}
|
|
175
|
-
export function validateAdditionalProperties(additionalProps) {
|
|
176
|
-
return validateAdditionalPropertiesInternal(additionalProps);
|
|
177
|
-
}
|
|
178
|
-
export function validateMessageWithAdditionalProperties(message) {
|
|
179
|
-
const result = MessageSchema.safeParse(message);
|
|
180
|
-
if (!result.success) {
|
|
181
|
-
const errors = result.error.issues.map((issue) => issue.path.length > 0 ? `${issue.path.join('.')}: ${issue.message}` : issue.message);
|
|
182
|
-
logger.warn('Message validation failed:', result.error.format());
|
|
183
|
-
return { isValid: false, errors };
|
|
184
|
-
}
|
|
185
|
-
return { isValid: true, errors: [] };
|
|
186
|
-
}
|
|
187
|
-
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
|