remix-nlux
Version:
Remix IDE NLUX integration. Remix IDE is the leading IDE for building and deploying smart contracts on Ethereum. NLUX is a JavaScript and React library for building conversational AI experiences.
32 lines (27 loc) • 983 B
text/typescript
import {debug} from '@shared/utils/debug';
import {warn} from '@shared/utils/warn';
export const parseStreamedEvent = (event: string): {
event: 'data' | 'end';
data: unknown;
} | undefined => {
const regEx = /^event:\s+(?<event>[\w]+)((\r?)\n(\r?)data: (?<data>(.|\n)*))?/gm;
const match = regEx.exec(event);
if (!match) {
return undefined;
}
const {event: eventName, data: rawData} = match.groups || {};
if (!eventName) {
return undefined;
}
if (eventName !== 'data' && eventName !== 'end') {
debug(`LangServe stream adapter received unsupported event "${eventName}"`);
return undefined;
}
try {
const data = rawData ? JSON.parse(rawData) : undefined;
return {event: eventName, data};
} catch (_error) {
warn(`LangServe stream adapter failed to parse data for chunk event "${eventName}" | Data: ${rawData}`);
return {event: eventName, data: undefined};
}
};