refactor: reformat files to require parens around params (#316)

This commit is contained in:
Dan Orlando 2023-05-18 11:44:07 -07:00 committed by GitHub
parent 91ef4872d6
commit a17b878617
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
50 changed files with 106 additions and 106 deletions

View file

@ -45,7 +45,7 @@ class GoogleAgent {
} }
this.options.examples = this.options.examples.filter( this.options.examples = this.options.examples.filter(
obj => obj.input.content !== '' && obj.output.content !== '' (obj) => obj.input.content !== '' && obj.output.content !== ''
); );
const modelOptions = this.options.modelOptions || {}; const modelOptions = this.options.modelOptions || {};
@ -375,7 +375,7 @@ class GoogleAgent {
let currentMessageId = parentMessageId; let currentMessageId = parentMessageId;
while (currentMessageId) { while (currentMessageId) {
// eslint-disable-next-line no-loop-func // eslint-disable-next-line no-loop-func
const message = messages.find(m => m.messageId === currentMessageId); const message = messages.find((m) => m.messageId === currentMessageId);
if (!message) { if (!message) {
break; break;
} }
@ -387,7 +387,7 @@ class GoogleAgent {
return []; return [];
} }
return orderedMessages.map(msg => ({ return orderedMessages.map((msg) => ({
isCreatedByUser: msg.isCreatedByUser, isCreatedByUser: msg.isCreatedByUser,
content: msg.text content: msg.text
})); }));

View file

@ -110,7 +110,7 @@ async function migrateDb() {
ret[0] = await migrateToStrictFollowParentMessageIdChain(); ret[0] = await migrateToStrictFollowParentMessageIdChain();
ret[1] = await migrateToSupportBetterCustomization(); ret[1] = await migrateToSupportBetterCustomization();
const isMigrated = !!ret.find(element => !element?.noNeed); const isMigrated = !!ret.find((element) => !element?.noNeed);
if (!isMigrated) console.log('[Migrate] Nothing to migrate'); if (!isMigrated) console.log('[Migrate] Nothing to migrate');
} }

View file

@ -7,7 +7,7 @@ const getCitations = (res) => {
if (!textBlocks) return ''; if (!textBlocks) return '';
let links = textBlocks[textBlocks.length - 1]?.text.match(regex); let links = textBlocks[textBlocks.length - 1]?.text.match(regex);
if (links?.length === 0 || !links) return ''; if (links?.length === 0 || !links) return '';
links = links.map(link => link.trim()); links = links.map((link) => link.trim());
return links.join('\n'); return links.join('\n');
}; };

View file

@ -57,7 +57,7 @@ module.exports = {
// will handle a syncing solution soon // will handle a syncing solution soon
const deletedConvoIds = []; const deletedConvoIds = [];
convoIds.forEach(convo => convoIds.forEach((convo) =>
promises.push( promises.push(
Conversation.findOne({ Conversation.findOne({
user, user,
@ -120,7 +120,7 @@ module.exports = {
}, },
deleteConvos: async (user, filter) => { deleteConvos: async (user, filter) => {
let toRemove = await Conversation.find({ ...filter, user }).select('conversationId'); let toRemove = await Conversation.find({ ...filter, user }).select('conversationId');
const ids = toRemove.map(instance => instance.conversationId); const ids = toRemove.map((instance) => instance.conversationId);
let deleteCount = await Conversation.deleteMany({ ...filter, user }).exec(); let deleteCount = await Conversation.deleteMany({ ...filter, user }).exec();
deleteCount.messages = await deleteMessages({ conversationId: { $in: ids } }); deleteCount.messages = await deleteMessages({ conversationId: { $in: ids } });
return deleteCount; return deleteCount;

View file

@ -39,7 +39,7 @@ module.exports = {
}, },
deletePresets: async (user, filter) => { deletePresets: async (user, filter) => {
let toRemove = await Preset.find({ ...filter, user }).select('presetId'); let toRemove = await Preset.find({ ...filter, user }).select('presetId');
const ids = toRemove.map(instance => instance.presetId); const ids = toRemove.map((instance) => instance.presetId);
let deleteCount = await Preset.deleteMany({ ...filter, user }).exec(); let deleteCount = await Preset.deleteMany({ ...filter, user }).exec();
return deleteCount; return deleteCount;
} }

View file

@ -54,7 +54,7 @@ const createMeiliMongooseModel = function ({ index, indexName, client, attribute
// Find objects into mongodb matching `objectID` from Meili search // Find objects into mongodb matching `objectID` from Meili search
const query = {}; const query = {};
// query[primaryKey] = { $in: _.map(data.hits, primaryKey) }; // query[primaryKey] = { $in: _.map(data.hits, primaryKey) };
query[primaryKey] = _.map(data.hits, hit => cleanUpPrimaryKeyValue(hit[primaryKey])); query[primaryKey] = _.map(data.hits, (hit) => cleanUpPrimaryKeyValue(hit[primaryKey]));
// console.log('query', query); // console.log('query', query);
const hitsFromMongoose = await this.find( const hitsFromMongoose = await this.find(
query, query,

View file

@ -10,8 +10,8 @@ const handleDuplicateKeyError = (err, res) => {
//handle validation errors //handle validation errors
const handleValidationError = (err, res) => { const handleValidationError = (err, res) => {
console.log('congrats you hit the validation middleware'); console.log('congrats you hit the validation middleware');
let errors = Object.values(err.errors).map(el => el.message); let errors = Object.values(err.errors).map((el) => el.message);
let fields = Object.values(err.errors).map(el => el.path); let fields = Object.values(err.errors).map((el) => el.path);
let code = 400; let code = 400;
if (errors.length > 1) { if (errors.length > 1) {
const formattedErrors = errors.join(' '); const formattedErrors = errors.join(' ');

View file

@ -164,7 +164,7 @@ const ask = async ({
text: await handleText(response, true), text: await handleText(response, true),
suggestions: suggestions:
response.details.suggestedResponses && response.details.suggestedResponses &&
response.details.suggestedResponses.map(s => s.text), response.details.suggestedResponses.map((s) => s.text),
unfinished: false, unfinished: false,
cancelled: false, cancelled: false,
error: false error: false

View file

@ -39,7 +39,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
}; };
const availableModels = getChatGPTBrowserModels(); const availableModels = getChatGPTBrowserModels();
if (availableModels.find(model => model === endpointOption.model) === undefined) if (availableModels.find((model) => model === endpointOption.model) === undefined)
return handleError(res, { text: 'Illegal request: model' }); return handleError(res, { text: 'Illegal request: model' });
console.log('ask log', { console.log('ask log', {

View file

@ -27,7 +27,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
}; };
const availableModels = ['chat-bison', 'text-bison']; const availableModels = ['chat-bison', 'text-bison'];
if (availableModels.find(model => model === endpointOption.modelOptions.model) === undefined) { if (availableModels.find((model) => model === endpointOption.modelOptions.model) === undefined) {
return handleError(res, { text: `Illegal request: model` }); return handleError(res, { text: `Illegal request: model` });
} }

View file

@ -64,7 +64,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
}; };
const availableModels = getOpenAIModels(); const availableModels = getOpenAIModels();
if (availableModels.find(model => model === endpointOption.model) === undefined) if (availableModels.find((model) => model === endpointOption.model) === undefined)
return handleError(res, { text: 'Illegal request: model' }); return handleError(res, { text: 'Illegal request: model' });
console.log('ask log', { console.log('ask log', {

View file

@ -40,7 +40,7 @@ router.post('/delete', requireJwtAuth, async (req, res) => {
try { try {
await deletePresets(req.user.id, filter); await deletePresets(req.user.id, filter);
const presets = (await getPresets(req.user.id)).map(preset => preset.toObject()); const presets = (await getPresets(req.user.id)).map((preset) => preset.toObject());
// console.log('delete preset response', presets); // console.log('delete preset response', presets);
res.status(201).send(presets); res.status(201).send(presets);

View file

@ -26,7 +26,7 @@ const loginUser = async (user) => {
const logoutUser = async (user, refreshToken) => { const logoutUser = async (user, refreshToken) => {
User.findById(user._id).then((user) => { User.findById(user._id).then((user) => {
const tokenIndex = user.refreshToken.findIndex(item => item.refreshToken === refreshToken); const tokenIndex = user.refreshToken.findIndex((item) => item.refreshToken === refreshToken);
if (tokenIndex !== -1) { if (tokenIndex !== -1) {
user.refreshToken.id(user.refreshToken[tokenIndex]._id).remove(); user.refreshToken.id(user.refreshToken[tokenIndex]._id).remove();

View file

@ -64,7 +64,7 @@ let level = levels.INFO;
module.exports = { module.exports = {
levels, levels,
setLevel: l => (level = l), setLevel: (l) => (level = l),
log: { log: {
trace: (msg) => { trace: (msg) => {
if (level <= levels.TRACE) return; if (level <= levels.TRACE) return;

View file

@ -42,7 +42,7 @@ function Login() {
className="mt-6" className="mt-6"
aria-label="Login form" aria-label="Login form"
method="POST" method="POST"
onSubmit={handleSubmit(data => login(data))} onSubmit={handleSubmit((data) => login(data))}
> >
<div className="mb-2"> <div className="mb-2">
<div className="relative"> <div className="relative">

View file

@ -55,7 +55,7 @@ function Registration() {
className="mt-6" className="mt-6"
aria-label="Registration form" aria-label="Registration form"
method="POST" method="POST"
onSubmit={handleSubmit(data => onRegisterUserFormSubmit(data))} onSubmit={handleSubmit((data) => onRegisterUserFormSubmit(data))}
> >
<div className="mb-2"> <div className="mb-2">
<div className="relative"> <div className="relative">
@ -225,7 +225,7 @@ function Registration() {
return false; return false;
}} }}
{...register('confirm_password', { {...register('confirm_password', {
validate: value => value === password || 'Passwords do not match' validate: (value) => value === password || 'Passwords do not match'
})} })}
aria-invalid={!!errors.confirm_password} aria-invalid={!!errors.confirm_password}
className="peer block w-full appearance-none rounded-t-md border-0 border-b-2 border-gray-300 bg-gray-50 px-2.5 pb-2.5 pt-5 text-sm text-gray-900 focus:border-green-500 focus:outline-none focus:ring-0" className="peer block w-full appearance-none rounded-t-md border-0 border-b-2 border-gray-300 bg-gray-50 px-2.5 pb-2.5 pt-5 text-sm text-gray-900 focus:border-green-500 focus:outline-none focus:ring-0"

View file

@ -129,7 +129,7 @@ function ResetPassword() {
return false; return false;
}} }}
{...register('confirm_password', { {...register('confirm_password', {
validate: value => value === password || 'Passwords do not match' validate: (value) => value === password || 'Passwords do not match'
})} })}
aria-invalid={!!errors.confirm_password} aria-invalid={!!errors.confirm_password}
className="peer block w-full appearance-none rounded-t-md border-0 border-b-2 border-gray-300 bg-gray-50 px-2.5 pb-2.5 pt-5 text-sm text-gray-900 focus:border-green-500 focus:outline-none focus:ring-0" className="peer block w-full appearance-none rounded-t-md border-0 border-b-2 border-gray-300 bg-gray-50 px-2.5 pb-2.5 pt-5 text-sm text-gray-900 focus:border-green-500 focus:outline-none focus:ring-0"

View file

@ -65,7 +65,7 @@ export default function Conversation({ conversation, retainView }) {
if (updateConvoMutation.isSuccess) { if (updateConvoMutation.isSuccess) {
refreshConversations(); refreshConversations();
if (conversationId == currentConversation?.conversationId) { if (conversationId == currentConversation?.conversationId) {
setCurrentConversation(prevState => ({ setCurrentConversation((prevState) => ({
...prevState, ...prevState,
title: titleInput title: titleInput
})); }));
@ -99,7 +99,7 @@ export default function Conversation({ conversation, retainView }) {
type="text" type="text"
className="m-0 mr-0 w-full border border-blue-500 bg-transparent p-0 text-sm leading-tight outline-none" className="m-0 mr-0 w-full border border-blue-500 bg-transparent p-0 text-sm leading-tight outline-none"
value={titleInput} value={titleInput}
onChange={e => setTitleInput(e.target.value)} onChange={(e) => setTitleInput(e.target.value)}
onBlur={onRename} onBlur={onRename}
onKeyDown={handleKeyDown} onKeyDown={handleKeyDown}
/> />

View file

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
export default function Pages({ pageNumber, pages, nextPage, previousPage }) { export default function Pages({ pageNumber, pages, nextPage, previousPage }) {
const clickHandler = func => async (e) => { const clickHandler = (func) => async (e) => {
e.preventDefault(); e.preventDefault();
await func(); await func();
}; };

View file

@ -17,7 +17,7 @@ function Settings(props) {
const setContext = setOption('context'); const setContext = setOption('context');
const setSystemMessage = setOption('systemMessage'); const setSystemMessage = setOption('systemMessage');
const setJailbreak = setOption('jailbreak'); const setJailbreak = setOption('jailbreak');
const setToneStyle = value => setOption('toneStyle')(value.toLowerCase()); const setToneStyle = (value) => setOption('toneStyle')(value.toLowerCase());
const debouncedContext = useDebounce(context, 250); const debouncedContext = useDebounce(context, 250);
const updateTokenCountMutation = useUpdateTokenCountMutation(); const updateTokenCountMutation = useUpdateTokenCountMutation();
@ -71,7 +71,7 @@ function Settings(props) {
id="context" id="context"
disabled={readonly} disabled={readonly}
value={context || ''} value={context || ''}
onChange={e => setContext(e.target.value || null)} onChange={(e) => setContext(e.target.value || null)}
placeholder="Bing can use up to 7k tokens for 'context', which it can reference for the conversation. The specific limit is not known but may run into errors exceeding 7k tokens" placeholder="Bing can use up to 7k tokens for 'context', which it can reference for the conversation. The specific limit is not known but may run into errors exceeding 7k tokens"
className={cn( className={cn(
defaultTextProps, defaultTextProps,
@ -123,7 +123,7 @@ function Settings(props) {
id="systemMessage" id="systemMessage"
disabled={readonly} disabled={readonly}
value={systemMessage || ''} value={systemMessage || ''}
onChange={e => setSystemMessage(e.target.value || null)} onChange={(e) => setSystemMessage(e.target.value || null)}
placeholder="WARNING: Misuse of this feature can get you BANNED from using Bing! Click on 'System Message' for full instructions and the default message if omitted, which is the 'Sydney' preset that is considered safe." placeholder="WARNING: Misuse of this feature can get you BANNED from using Bing! Click on 'System Message' for full instructions and the default message if omitted, which is the 'Sydney' preset that is considered safe."
className={cn( className={cn(
defaultTextProps, defaultTextProps,

View file

@ -131,7 +131,7 @@ const EditPresetDialog = ({ open, onOpenChange, preset: _preset, title }) => {
useEffect(() => { useEffect(() => {
setPreset(_preset); setPreset(_preset);
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, [open]); }, [open]);
return ( return (

View file

@ -22,10 +22,10 @@ const EndpointOptionsDialog = ({ open, onOpenChange, preset: _preset, title }) =
setEndpointName('PaLM'); setEndpointName('PaLM');
} }
const setOption = param => (newValue) => { const setOption = (param) => (newValue) => {
let update = {}; let update = {};
update[param] = newValue; update[param] = newValue;
setPreset(prevState => ({ setPreset((prevState) => ({
...prevState, ...prevState,
...update ...update
})); }));

View file

@ -29,7 +29,7 @@ function Examples({ readonly, examples, setExample, addExample, removeExample, e
id={`input-${idx}`} id={`input-${idx}`}
disabled={readonly} disabled={readonly}
value={example?.input?.content || ''} value={example?.input?.content || ''}
onChange={e => setExample(idx, 'input', e.target.value || null)} onChange={(e) => setExample(idx, 'input', e.target.value || null)}
placeholder="Set example input. Example is ignored if empty." placeholder="Set example input. Example is ignored if empty."
className={cn( className={cn(
defaultTextProps, defaultTextProps,
@ -53,7 +53,7 @@ function Examples({ readonly, examples, setExample, addExample, removeExample, e
id={`output-${idx}`} id={`output-${idx}`}
disabled={readonly} disabled={readonly}
value={example?.output?.content || ''} value={example?.output?.content || ''}
onChange={e => setExample(idx, 'output', e.target.value || null)} onChange={(e) => setExample(idx, 'output', e.target.value || null)}
placeholder={`Set example output. Example is ignored if empty.`} placeholder={`Set example output. Example is ignored if empty.`}
className={cn( className={cn(
defaultTextProps, defaultTextProps,

View file

@ -66,7 +66,7 @@ function Settings(props) {
id="chatGptLabel" id="chatGptLabel"
disabled={readonly} disabled={readonly}
value={chatGptLabel || ''} value={chatGptLabel || ''}
onChange={e => setChatGptLabel(e.target.value || null)} onChange={(e) => setChatGptLabel(e.target.value || null)}
placeholder="Set a custom name for ChatGPT" placeholder="Set a custom name for ChatGPT"
className={cn( className={cn(
defaultTextProps, defaultTextProps,
@ -82,7 +82,7 @@ function Settings(props) {
id="promptPrefix" id="promptPrefix"
disabled={readonly} disabled={readonly}
value={promptPrefix || ''} value={promptPrefix || ''}
onChange={e => setPromptPrefix(e.target.value || null)} onChange={(e) => setPromptPrefix(e.target.value || null)}
placeholder="Set custom instructions. Defaults to: 'You are ChatGPT, a large language model trained by OpenAI.'" placeholder="Set custom instructions. Defaults to: 'You are ChatGPT, a large language model trained by OpenAI.'"
className={cn( className={cn(
defaultTextProps, defaultTextProps,
@ -102,7 +102,7 @@ function Settings(props) {
id="temp-int" id="temp-int"
disabled={readonly} disabled={readonly}
value={temperature} value={temperature}
onChange={value => setTemperature(value)} onChange={(value) => setTemperature(value)}
max={2} max={2}
min={0} min={0}
step={0.01} step={0.01}
@ -119,7 +119,7 @@ function Settings(props) {
<Slider <Slider
disabled={readonly} disabled={readonly}
value={[temperature]} value={[temperature]}
onValueChange={value => setTemperature(value[0])} onValueChange={(value) => setTemperature(value[0])}
doubleClickHandler={() => setTemperature(1)} doubleClickHandler={() => setTemperature(1)}
max={2} max={2}
min={0} min={0}
@ -139,7 +139,7 @@ function Settings(props) {
id="top-p-int" id="top-p-int"
disabled={readonly} disabled={readonly}
value={topP} value={topP}
onChange={value => setTopP(value)} onChange={(value) => setTopP(value)}
max={1} max={1}
min={0} min={0}
step={0.01} step={0.01}
@ -156,7 +156,7 @@ function Settings(props) {
<Slider <Slider
disabled={readonly} disabled={readonly}
value={[topP]} value={[topP]}
onValueChange={value => setTopP(value[0])} onValueChange={(value) => setTopP(value[0])}
doubleClickHandler={() => setTopP(1)} doubleClickHandler={() => setTopP(1)}
max={1} max={1}
min={0} min={0}
@ -177,7 +177,7 @@ function Settings(props) {
id="freq-penalty-int" id="freq-penalty-int"
disabled={readonly} disabled={readonly}
value={freqP} value={freqP}
onChange={value => setFreqP(value)} onChange={(value) => setFreqP(value)}
max={2} max={2}
min={-2} min={-2}
step={0.01} step={0.01}
@ -194,7 +194,7 @@ function Settings(props) {
<Slider <Slider
disabled={readonly} disabled={readonly}
value={[freqP]} value={[freqP]}
onValueChange={value => setFreqP(value[0])} onValueChange={(value) => setFreqP(value[0])}
doubleClickHandler={() => setFreqP(0)} doubleClickHandler={() => setFreqP(0)}
max={2} max={2}
min={-2} min={-2}
@ -215,7 +215,7 @@ function Settings(props) {
id="pres-penalty-int" id="pres-penalty-int"
disabled={readonly} disabled={readonly}
value={presP} value={presP}
onChange={value => setPresP(value)} onChange={(value) => setPresP(value)}
max={2} max={2}
min={-2} min={-2}
step={0.01} step={0.01}
@ -232,7 +232,7 @@ function Settings(props) {
<Slider <Slider
disabled={readonly} disabled={readonly}
value={[presP]} value={[presP]}
onValueChange={value => setPresP(value[0])} onValueChange={(value) => setPresP(value[0])}
doubleClickHandler={() => setPresP(0)} doubleClickHandler={() => setPresP(0)}
max={2} max={2}
min={-2} min={-2}

View file

@ -44,7 +44,7 @@ const SaveAsPresetDialog = ({ open, onOpenChange, preset }) => {
<Input <Input
id="chatGptLabel" id="chatGptLabel"
value={title || ''} value={title || ''}
onChange={e => setTitle(e.target.value || '')} onChange={(e) => setTitle(e.target.value || '')}
placeholder="Set a custom name, in case you can find this preset" placeholder="Set a custom name, in case you can find this preset"
className={cn( className={cn(
defaultTextProps, defaultTextProps,

View file

@ -21,7 +21,7 @@ function BingAIOptions({ show }) {
if (endpoint !== 'bingAI') return null; if (endpoint !== 'bingAI') return null;
if (conversationId !== 'new' && !show) return null; if (conversationId !== 'new' && !show) return null;
const triggerAdvancedMode = () => setAdvancedMode(prev => !prev); const triggerAdvancedMode = () => setAdvancedMode((prev) => !prev);
const switchToSimpleMode = () => { const switchToSimpleMode = () => {
setAdvancedMode(false); setAdvancedMode(false);
@ -31,10 +31,10 @@ function BingAIOptions({ show }) {
setSaveAsDialogShow(true); setSaveAsDialogShow(true);
}; };
const setOption = param => (newValue) => { const setOption = (param) => (newValue) => {
let update = {}; let update = {};
update[param] = newValue; update[param] = newValue;
setConversation(prevState => ({ setConversation((prevState) => ({
...prevState, ...prevState,
...update ...update
})); }));
@ -48,7 +48,7 @@ function BingAIOptions({ show }) {
defaultClasses, defaultClasses,
'font-medium data-[state=active]:text-white text-xs text-white' 'font-medium data-[state=active]:text-white text-xs text-white'
); );
const selectedClass = val => val + '-tab ' + defaultSelected; const selectedClass = (val) => val + '-tab ' + defaultSelected;
return ( return (
<> <>
@ -61,7 +61,7 @@ function BingAIOptions({ show }) {
<SelectDropDown <SelectDropDown
title="Mode" title="Mode"
value={jailbreak ? 'Sydney' : 'BingAI'} value={jailbreak ? 'Sydney' : 'BingAI'}
setValue={value => setOption('jailbreak')(value === 'Sydney')} setValue={(value) => setOption('jailbreak')(value === 'Sydney')}
availableValues={['BingAI', 'Sydney']} availableValues={['BingAI', 'Sydney']}
showAbove={true} showAbove={true}
showLabel={false} showLabel={false}
@ -78,7 +78,7 @@ function BingAIOptions({ show }) {
cardStyle + cardStyle +
' z-50 flex h-[40px] flex-none items-center justify-center px-0 hover:bg-slate-50 dark:hover:bg-gray-600' ' z-50 flex h-[40px] flex-none items-center justify-center px-0 hover:bg-slate-50 dark:hover:bg-gray-600'
} }
onValueChange={value => setOption('toneStyle')(value.toLowerCase())} onValueChange={(value) => setOption('toneStyle')(value.toLowerCase())}
> >
<TabsList className="bg-white/[.60] dark:bg-gray-700"> <TabsList className="bg-white/[.60] dark:bg-gray-700">
<TabsTrigger <TabsTrigger

View file

@ -17,10 +17,10 @@ function ChatGPTOptions() {
const models = endpointsConfig?.['chatGPTBrowser']?.['availableModels'] || []; const models = endpointsConfig?.['chatGPTBrowser']?.['availableModels'] || [];
const setOption = param => (newValue) => { const setOption = (param) => (newValue) => {
let update = {}; let update = {};
update[param] = newValue; update[param] = newValue;
setConversation(prevState => ({ setConversation((prevState) => ({
...prevState, ...prevState,
...update ...update
})); }));

View file

@ -29,8 +29,8 @@ function GoogleOptions() {
const models = endpointsConfig?.['google']?.['availableModels'] || []; const models = endpointsConfig?.['google']?.['availableModels'] || [];
const triggerAdvancedMode = () => setAdvancedMode(prev => !prev); const triggerAdvancedMode = () => setAdvancedMode((prev) => !prev);
const triggerExamples = () => setShowExamples(prev => !prev); const triggerExamples = () => setShowExamples((prev) => !prev);
const switchToSimpleMode = () => { const switchToSimpleMode = () => {
setAdvancedMode(false); setAdvancedMode(false);
@ -40,10 +40,10 @@ function GoogleOptions() {
setSaveAsDialogShow(true); setSaveAsDialogShow(true);
}; };
const setOption = param => (newValue) => { const setOption = (param) => (newValue) => {
let update = {}; let update = {};
update[param] = newValue; update[param] = newValue;
setConversation(prevState => ({ setConversation((prevState) => ({
...prevState, ...prevState,
...update ...update
})); }));
@ -56,7 +56,7 @@ function GoogleOptions() {
currentExample[type] = { content: newValue }; currentExample[type] = { content: newValue };
current[i] = currentExample; current[i] = currentExample;
update.examples = current; update.examples = current;
setConversation(prevState => ({ setConversation((prevState) => ({
...prevState, ...prevState,
...update ...update
})); }));
@ -67,7 +67,7 @@ function GoogleOptions() {
let current = conversation?.examples.slice() || []; let current = conversation?.examples.slice() || [];
current.push({ input: { content: '' }, output: { content: '' } }); current.push({ input: { content: '' }, output: { content: '' } });
update.examples = current; update.examples = current;
setConversation(prevState => ({ setConversation((prevState) => ({
...prevState, ...prevState,
...update ...update
})); }));
@ -78,7 +78,7 @@ function GoogleOptions() {
let current = conversation?.examples.slice() || []; let current = conversation?.examples.slice() || [];
if (current.length <= 1) { if (current.length <= 1) {
update.examples = [{ input: { content: '' }, output: { content: '' } }]; update.examples = [{ input: { content: '' }, output: { content: '' } }];
setConversation(prevState => ({ setConversation((prevState) => ({
...prevState, ...prevState,
...update ...update
})); }));
@ -86,7 +86,7 @@ function GoogleOptions() {
} }
current.pop(); current.pop();
update.examples = current; update.examples = current;
setConversation(prevState => ({ setConversation((prevState) => ({
...prevState, ...prevState,
...update ...update
})); }));

View file

@ -37,7 +37,7 @@ export default function ModelItem({ endpoint, value, onSelect }) {
> >
{icon} {icon}
{alternateName[endpoint] || endpoint} {alternateName[endpoint] || endpoint}
{!!['azureOpenAI', 'openAI'].find(e => e === endpoint) && <sup>$</sup>} {!!['azureOpenAI', 'openAI'].find((e) => e === endpoint) && <sup>$</sup>}
<div className="flex w-4 flex-1" /> <div className="flex w-4 flex-1" />
{isUserProvided ? ( {isUserProvided ? (
<button <button

View file

@ -4,7 +4,7 @@ import EndpointItem from './EndpointItem.jsx';
export default function EndpointItems({ endpoints, onSelect }) { export default function EndpointItems({ endpoints, onSelect }) {
return ( return (
<> <>
{endpoints.map(endpoint => ( {endpoints.map((endpoint) => (
<EndpointItem key={endpoint} value={endpoint} onSelect={onSelect} endpoint={endpoint} /> <EndpointItem key={endpoint} value={endpoint} onSelect={onSelect} endpoint={endpoint} />
))} ))}
</> </>

View file

@ -4,7 +4,7 @@ import PresetItem from './PresetItem.jsx';
export default function PresetItems({ presets, onSelect, onChangePreset, onDeletePreset }) { export default function PresetItems({ presets, onSelect, onChangePreset, onDeletePreset }) {
return ( return (
<> <>
{presets.map(preset => ( {presets.map((preset) => (
<PresetItem <PresetItem
key={preset?.presetId} key={preset?.presetId}
value={preset} value={preset}

View file

@ -61,7 +61,7 @@ export default function NewConversationMenu() {
// update the default model when availableModels changes // update the default model when availableModels changes
// typically, availableModels changes => modelsFilter or customGPTModels changes // typically, availableModels changes => modelsFilter or customGPTModels changes
useEffect(() => { useEffect(() => {
const isInvalidConversation = !availableEndpoints.find(e => e === endpoint); const isInvalidConversation = !availableEndpoints.find((e) => e === endpoint);
if (conversationId == 'new' && isInvalidConversation) { if (conversationId == 'new' && isInvalidConversation) {
newConversation(); newConversation();
} }
@ -135,7 +135,7 @@ export default function NewConversationMenu() {
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent <DropdownMenuContent
className="min-w-[300px] dark:bg-gray-700" className="min-w-[300px] dark:bg-gray-700"
onCloseAutoFocus={event => event.preventDefault()} onCloseAutoFocus={(event) => event.preventDefault()}
> >
<DropdownMenuLabel className="dark:text-gray-300">Select an Endpoint</DropdownMenuLabel> <DropdownMenuLabel className="dark:text-gray-300">Select an Endpoint</DropdownMenuLabel>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
@ -156,7 +156,7 @@ export default function NewConversationMenu() {
<div className="mt-6 w-full" /> <div className="mt-6 w-full" />
<DropdownMenuLabel className="flex items-center dark:text-gray-300"> <DropdownMenuLabel className="flex items-center dark:text-gray-300">
<span className="cursor-pointer" onClick={() => setShowPresets(prev => !prev)}> <span className="cursor-pointer" onClick={() => setShowPresets((prev) => !prev)}>
{showPresets ? 'Hide ' : 'Show '} Presets {showPresets ? 'Hide ' : 'Show '} Presets
</span> </span>
<div className="flex-1" /> <div className="flex-1" />

View file

@ -33,7 +33,7 @@ function OpenAIOptions() {
const models = endpointsConfig?.['openAI']?.['availableModels'] || []; const models = endpointsConfig?.['openAI']?.['availableModels'] || [];
const triggerAdvancedMode = () => setAdvancedMode(prev => !prev); const triggerAdvancedMode = () => setAdvancedMode((prev) => !prev);
const switchToSimpleMode = () => { const switchToSimpleMode = () => {
setAdvancedMode(false); setAdvancedMode(false);
@ -43,10 +43,10 @@ function OpenAIOptions() {
setSaveAsDialogShow(true); setSaveAsDialogShow(true);
}; };
const setOption = param => (newValue) => { const setOption = (param) => (newValue) => {
let update = {}; let update = {};
update[param] = newValue; update[param] = newValue;
setConversation(prevState => ({ setConversation((prevState) => ({
...prevState, ...prevState,
...update ...update
})); }));

View file

@ -176,7 +176,7 @@ const SetTokenDialog = ({ open, onOpenChange, endpoint }) => {
<InputWithLabel <InputWithLabel
id={'chatGPTLabel'} id={'chatGPTLabel'}
value={token || ''} value={token || ''}
onChange={e => setToken(e.target.value || '')} onChange={(e) => setToken(e.target.value || '')}
label={'OpenAI API Key'} label={'OpenAI API Key'}
/> />
</> </>
@ -185,28 +185,28 @@ const SetTokenDialog = ({ open, onOpenChange, endpoint }) => {
<InputWithLabel <InputWithLabel
id={'instanceNameLabel'} id={'instanceNameLabel'}
value={getAzure('instanceName') || ''} value={getAzure('instanceName') || ''}
onChange={e => setAzure('instanceName', e.target.value || '')} onChange={(e) => setAzure('instanceName', e.target.value || '')}
label={'Azure OpenAI Instance Name'} label={'Azure OpenAI Instance Name'}
/> />
<InputWithLabel <InputWithLabel
id={'deploymentNameLabel'} id={'deploymentNameLabel'}
value={getAzure('deploymentName') || ''} value={getAzure('deploymentName') || ''}
onChange={e => setAzure('deploymentName', e.target.value || '')} onChange={(e) => setAzure('deploymentName', e.target.value || '')}
label={'Azure OpenAI Deployment Name'} label={'Azure OpenAI Deployment Name'}
/> />
<InputWithLabel <InputWithLabel
id={'versionLabel'} id={'versionLabel'}
value={getAzure('version') || ''} value={getAzure('version') || ''}
onChange={e => setAzure('version', e.target.value || '')} onChange={(e) => setAzure('version', e.target.value || '')}
label={'Azure OpenAI API Version'} label={'Azure OpenAI API Version'}
/> />
<InputWithLabel <InputWithLabel
id={'apiKeyLabel'} id={'apiKeyLabel'}
value={getAzure('apiKey') || ''} value={getAzure('apiKey') || ''}
onChange={e => setAzure('apiKey', e.target.value || '')} onChange={(e) => setAzure('apiKey', e.target.value || '')}
label={'Azure OpenAI API Key'} label={'Azure OpenAI API Key'}
/> />
</> </>
@ -236,7 +236,7 @@ const SetTokenDialog = ({ open, onOpenChange, endpoint }) => {
<InputWithLabel <InputWithLabel
id={'chatGPTLabel'} id={'chatGPTLabel'}
value={token || ''} value={token || ''}
onChange={e => setToken(e.target.value || '')} onChange={(e) => setToken(e.target.value || '')}
label={'Token Name'} label={'Token Name'}
/> />
</> </>

View file

@ -128,7 +128,7 @@ export default function TextChat({ isSearchView = false }) {
}; };
const handleBingToneSetting = () => { const handleBingToneSetting = () => {
setShowBingToneSetting(show => !show); setShowBingToneSetting((show) => !show);
}; };
if (isSearchView) return <></>; if (isSearchView) return <></>;

View file

@ -72,7 +72,7 @@ export default function MessageHandler() {
}, 5000); }, 5000);
} }
setConversation(prevState => ({ setConversation((prevState) => ({
...prevState, ...prevState,
...conversation ...conversation
})); }));
@ -104,7 +104,7 @@ export default function MessageHandler() {
]); ]);
const { conversationId } = message; const { conversationId } = message;
setConversation(prevState => ({ setConversation((prevState) => ({
...prevState, ...prevState,
conversationId conversationId
})); }));
@ -133,7 +133,7 @@ export default function MessageHandler() {
}, 5000); }, 5000);
} }
setConversation(prevState => ({ setConversation((prevState) => ({
...prevState, ...prevState,
...conversation ...conversation
})); }));
@ -167,7 +167,7 @@ export default function MessageHandler() {
abortKey: conversationId abortKey: conversationId
}) })
}) })
.then(response => response.json()) .then((response) => response.json())
.then((data) => { .then((data) => {
console.log('aborted', data); console.log('aborted', data);
cancelHandler(data, submission); cancelHandler(data, submission);

View file

@ -18,7 +18,7 @@ export default function HoverButtons({
const branchingSupported = const branchingSupported =
// azureOpenAI, openAI, chatGPTBrowser support branching, so edit enabled // azureOpenAI, openAI, chatGPTBrowser support branching, so edit enabled
!!['azureOpenAI', 'openAI', 'chatGPTBrowser', 'google'].find(e => e === endpoint) || !!['azureOpenAI', 'openAI', 'chatGPTBrowser', 'google'].find((e) => e === endpoint) ||
// Sydney in bingAI supports branching, so edit enabled // Sydney in bingAI supports branching, so edit enabled
(endpoint === 'bingAI' && jailbreak); (endpoint === 'bingAI' && jailbreak);

View file

@ -63,7 +63,7 @@ export default function Message({
} }
}, [last, message]); }, [last, message]);
const enterEdit = cancel => setCurrentEditId(cancel ? -1 : message.messageId); const enterEdit = (cancel) => setCurrentEditId(cancel ? -1 : message.messageId);
const handleWheel = () => { const handleWheel = () => {
if (blinker) { if (blinker) {

View file

@ -41,7 +41,7 @@ export default function MultiMessage({
return ( return (
<> <>
{messagesTree {messagesTree
? messagesTree.map(message => ( ? messagesTree.map((message) => (
<Message <Message
key={message.messageId} key={message.messageId}
conversation={conversation} conversation={conversation}

View file

@ -31,7 +31,7 @@ export default function ExportModel({ open, onOpenChange }) {
const getSiblingIdx = useRecoilCallback( const getSiblingIdx = useRecoilCallback(
({ snapshot }) => ({ snapshot }) =>
async messageId => async (messageId) =>
await snapshot.getPromise(store.messagesSiblingIdxFamily(messageId)), await snapshot.getPromise(store.messagesSiblingIdxFamily(messageId)),
[] []
); );
@ -142,39 +142,39 @@ export default function ExportModel({ open, onOpenChange }) {
fileName: filename, fileName: filename,
extension: 'csv', extension: 'csv',
exportType: exportFromJSON.types.csv, exportType: exportFromJSON.types.csv,
beforeTableEncode: entries => [ beforeTableEncode: (entries) => [
{ {
fieldName: 'sender', fieldName: 'sender',
fieldValues: entries.find(e => e.fieldName == 'sender').fieldValues fieldValues: entries.find((e) => e.fieldName == 'sender').fieldValues
}, },
{ fieldName: 'text', fieldValues: entries.find(e => e.fieldName == 'text').fieldValues }, { fieldName: 'text', fieldValues: entries.find((e) => e.fieldName == 'text').fieldValues },
{ {
fieldName: 'isCreatedByUser', fieldName: 'isCreatedByUser',
fieldValues: entries.find(e => e.fieldName == 'isCreatedByUser').fieldValues fieldValues: entries.find((e) => e.fieldName == 'isCreatedByUser').fieldValues
}, },
{ {
fieldName: 'error', fieldName: 'error',
fieldValues: entries.find(e => e.fieldName == 'error').fieldValues fieldValues: entries.find((e) => e.fieldName == 'error').fieldValues
}, },
{ {
fieldName: 'unfinished', fieldName: 'unfinished',
fieldValues: entries.find(e => e.fieldName == 'unfinished').fieldValues fieldValues: entries.find((e) => e.fieldName == 'unfinished').fieldValues
}, },
{ {
fieldName: 'cancelled', fieldName: 'cancelled',
fieldValues: entries.find(e => e.fieldName == 'cancelled').fieldValues fieldValues: entries.find((e) => e.fieldName == 'cancelled').fieldValues
}, },
{ {
fieldName: 'messageId', fieldName: 'messageId',
fieldValues: entries.find(e => e.fieldName == 'messageId').fieldValues fieldValues: entries.find((e) => e.fieldName == 'messageId').fieldValues
}, },
{ {
fieldName: 'parentMessageId', fieldName: 'parentMessageId',
fieldValues: entries.find(e => e.fieldName == 'parentMessageId').fieldValues fieldValues: entries.find((e) => e.fieldName == 'parentMessageId').fieldValues
}, },
{ {
fieldName: 'createdAt', fieldName: 'createdAt',
fieldValues: entries.find(e => e.fieldName == 'createdAt').fieldValues fieldValues: entries.find((e) => e.fieldName == 'createdAt').fieldValues
} }
] ]
}); });
@ -322,7 +322,7 @@ export default function ExportModel({ open, onOpenChange }) {
<Input <Input
id="filename" id="filename"
value={filename} value={filename}
onChange={e => setFileName(filenamify(e.target.value || ''))} onChange={(e) => setFileName(filenamify(e.target.value || ''))}
placeholder="Set the filename" placeholder="Set the filename"
className={cn( className={cn(
defaultTextProps, defaultTextProps,

View file

@ -13,7 +13,7 @@ export default function MobileNav({ setNavVisible }) {
<button <button
type="button" type="button"
className="-ml-0.5 -mt-0.5 inline-flex h-10 w-10 items-center justify-center rounded-md hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white dark:hover:text-white" className="-ml-0.5 -mt-0.5 inline-flex h-10 w-10 items-center justify-center rounded-md hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white dark:hover:text-white"
onClick={() => setNavVisible(prev => !prev)} onClick={() => setNavVisible((prev) => !prev)}
> >
<span className="sr-only">Open sidebar</span> <span className="sr-only">Open sidebar</span>
<svg <svg

View file

@ -20,7 +20,7 @@ export default function SearchBar({ clearSearch }) {
type="text" type="text"
className="m-0 mr-0 w-full border-none bg-transparent p-0 text-sm leading-tight outline-none" className="m-0 mr-0 w-full border-none bg-transparent p-0 text-sm leading-tight outline-none"
value={searchQuery} value={searchQuery}
onChange={e => setSearchQuery(e.target.value)} onChange={(e) => setSearchQuery(e.target.value)}
placeholder="Search messages" placeholder="Search messages"
onKeyUp={handleKeyUp} onKeyUp={handleKeyUp}
/> />

View file

@ -119,7 +119,7 @@ export default function Nav({ navVisible, setNavVisible }) {
}; };
const toggleNavVisible = () => { const toggleNavVisible = () => {
setNavVisible(prev => !prev); setNavVisible((prev) => !prev);
}; };
useEffect(() => { useEffect(() => {

View file

@ -5,7 +5,7 @@ import { cn } from '~/utils/';
function Dropdown({ value, onChange, options, className, containerClassName }) { function Dropdown({ value, onChange, options, className, containerClassName }) {
const currentOption = const currentOption =
options.find(element => element === value || element?.value === value) ?? value; options.find((element) => element === value || element?.value === value) ?? value;
return ( return (
<div className={cn('flex items-center justify-center gap-2', containerClassName)}> <div className={cn('flex items-center justify-center gap-2', containerClassName)}>
<div className="relative w-full"> <div className="relative w-full">

View file

@ -22,12 +22,12 @@ const ModelSelect = ({ model, onChange, availableModels, ...props }) => {
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent <DropdownMenuContent
className="w-56 dark:bg-gray-700" className="w-56 dark:bg-gray-700"
onCloseAutoFocus={event => event.preventDefault()} onCloseAutoFocus={(event) => event.preventDefault()}
> >
<DropdownMenuLabel className="dark:text-gray-300">Select a model</DropdownMenuLabel> <DropdownMenuLabel className="dark:text-gray-300">Select a model</DropdownMenuLabel>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuRadioGroup value={model} onValueChange={onChange} className="overflow-y-auto"> <DropdownMenuRadioGroup value={model} onValueChange={onChange} className="overflow-y-auto">
{availableModels.map(model => ( {availableModels.map((model) => (
<DropdownMenuRadioItem <DropdownMenuRadioItem
key={model} key={model}
value={model} value={model}

View file

@ -16,7 +16,7 @@ const refreshConversationsHint = atom({
const useConversations = () => { const useConversations = () => {
const setRefreshConversationsHint = useSetRecoilState(refreshConversationsHint); const setRefreshConversationsHint = useSetRecoilState(refreshConversationsHint);
const refreshConversations = () => setRefreshConversationsHint(prevState => prevState + 1); const refreshConversations = () => setRefreshConversationsHint((prevState) => prevState + 1);
return { refreshConversations }; return { refreshConversations };
}; };

View file

@ -27,7 +27,7 @@ const availableEndpoints = selector({
get: ({ get }) => { get: ({ get }) => {
const endpoints = ['azureOpenAI', 'openAI', 'chatGPTBrowser', 'bingAI', 'google']; const endpoints = ['azureOpenAI', 'openAI', 'chatGPTBrowser', 'bingAI', 'google'];
const f = get(endpointsFilter); const f = get(endpointsFilter);
return endpoints.filter(endpoint => f[endpoint]); return endpoints.filter((endpoint) => f[endpoint]);
} }
}); });
// const modelAvailable // const modelAvailable

View file

@ -10,7 +10,7 @@ const useToken = (endpoint) => {
const getToken = () => localStorage.getItem(`${endpoint}_token`); const getToken = () => localStorage.getItem(`${endpoint}_token`);
const saveToken = (value) => { const saveToken = (value) => {
localStorage.setItem(`${endpoint}_token`, value); localStorage.setItem(`${endpoint}_token`, value);
setHints(prev => prev + 1); setHints((prev) => prev + 1);
}; };
return { token: getToken(), getToken, saveToken }; return { token: getToken(), getToken, saveToken };

View file

@ -128,7 +128,7 @@ const getDefaultConversation = ({ conversation, prevConversation, endpointsConfi
// if anything happens, reset to default model // if anything happens, reset to default model
const endpoint = ['openAI', 'azureOpenAI', 'bingAI', 'chatGPTBrowser', 'google'].find( const endpoint = ['openAI', 'azureOpenAI', 'bingAI', 'chatGPTBrowser', 'google'].find(
e => endpointsConfig?.[e] (e) => endpointsConfig?.[e]
); );
if (endpoint) { if (endpoint) {
conversation = buildDefaultConversation({ conversation, endpoint, endpointsConfig }); conversation = buildDefaultConversation({ conversation, endpoint, endpointsConfig });

View file

@ -159,7 +159,7 @@ const useMessageHandler = () => {
}; };
const regenerate = ({ parentMessageId }) => { const regenerate = ({ parentMessageId }) => {
const parentMessage = messages?.find(element => element.messageId == parentMessageId); const parentMessage = messages?.find((element) => element.messageId == parentMessageId);
if (parentMessage && parentMessage.isCreatedByUser) if (parentMessage && parentMessage.isCreatedByUser)
ask({ ...parentMessage }, { isRegenerate: true }); ask({ ...parentMessage }, { isRegenerate: true });