Skip to content

Commit 79aff26

Browse files
committed
lint: auto fix
1 parent 1383106 commit 79aff26

21 files changed

+126
-127
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
"dev:lan": "tiddlywiki-plugin-dev dev --lan",
99
"test": "tiddlywiki-plugin-dev test",
1010
"build": "npm run clean && tiddlywiki-plugin-dev build",
11+
"lint": "eslint ./src --ext js,ts,tsx,json",
12+
"lint:fix": "eslint ./src --ext ts,tsx,json --fix",
1113
"publish": "npm run clean && tiddlywiki-plugin-dev publish",
1214
"reset": "rimraf ./**/node_modules",
1315
"clean": "rimraf dist",

src/autocomplete/widgets/build-in-sub-plugins/command-action-string.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
/* eslint-disable unicorn/no-null */
2-
/* eslint-disable @typescript-eslint/strict-boolean-expressions */
31
import type { AutocompletePlugin } from '@algolia/autocomplete-js';
42
import { ITiddlerFields } from 'tiddlywiki';
53
import { checkIsSearchSystem, checkIsUnderFilter } from '../utils/checkPrefix';
@@ -23,7 +21,7 @@ export const plugin = {
2321
const { widget } = parameters.state.context as IContext;
2422
const onSelect = (item: ITiddlerFields) => {
2523
const newContext = { noNavigate: true } satisfies IContext;
26-
parameters.setContext?.(newContext);
24+
parameters.setContext(newContext);
2725
// this calls `invokeActions` under the hood
2826
widget?.invokeActionString(item.text, widget, null, variables);
2927
parameters.navigator.navigate({ item, itemUrl: item.title, state: { ...parameters.state, context: { ...parameters.state.context, ...newContext } } });
@@ -37,23 +35,23 @@ export const plugin = {
3735
}
3836
// If there are search text, filter each tiddler one by one (so we could filter by rendered caption).
3937
const realQuery = query.substring(1);
40-
41-
const tempWidget = (parameters.state.context as IContext).widget?.makeFakeWidgetWithVariables?.(variables);
38+
39+
const temporaryWidget = (parameters.state.context as IContext).widget?.makeFakeWidgetWithVariables(variables);
4240
// Filter tiddlers based on search query and condition field
4341
const filteredTiddlers = cachedTiddlers.filter(tiddler => {
4442
// Check if the tiddler has a condition field
4543
if (tiddler.condition) {
4644
// Evaluate the condition using TiddlyWiki's filter mechanism
47-
const result = $tw.wiki.filterTiddlers(tiddler.condition as string, tempWidget);
45+
const result = $tw.wiki.filterTiddlers(tiddler.condition as string, temporaryWidget);
4846
// Only show tiddlers where the condition evaluates to a non-empty result
4947
if (result.length === 0) {
5048
return false;
5149
}
5250
}
53-
51+
5452
// If no search query or condition passed, include the tiddler
5553
if (!realQuery) return true;
56-
54+
5755
// Otherwise filter by search text
5856
return $tw.wiki.filterTiddlers(
5957
`[search[${realQuery}]]`,
@@ -65,7 +63,7 @@ export const plugin = {
6563
]),
6664
).length > 0;
6765
});
68-
66+
6967
return filteredTiddlers;
7068
},
7169
getItemUrl({ item }) {
@@ -77,7 +75,7 @@ export const plugin = {
7775
templates: {
7876
header() {
7977
// get rendered caption of focused tiddler
80-
let caption = focusedTiddler ? $tw.wiki.getTiddler(focusedTiddler)?.fields?.caption as string | undefined : '';
78+
let caption = focusedTiddler ? $tw.wiki.getTiddler(focusedTiddler)?.fields.caption as string | undefined : '';
8179
if (caption) {
8280
caption = `(${renderTextWithCache(caption, widget, variables)})`;
8381
}

src/autocomplete/widgets/build-in-sub-plugins/command-message.ts

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* eslint-disable @typescript-eslint/strict-boolean-expressions */
21
import type { AutocompletePlugin } from '@algolia/autocomplete-js';
32
import { ITiddlerFields } from 'tiddlywiki';
43
import { checkIsSearchSystem, checkIsUnderFilter } from '../utils/checkPrefix';
@@ -22,8 +21,8 @@ export const plugin = {
2221
const { widget } = parameters.state.context as IContext;
2322
const onSelect = (item: ITiddlerFields) => {
2423
const newContext = { noNavigate: true } satisfies IContext;
25-
parameters.setContext?.(newContext);
26-
widget?.dispatchEvent?.({
24+
parameters.setContext(newContext);
25+
widget?.dispatchEvent({
2726
type: item.text.trim(),
2827
tiddlerTitle: focusedTiddler,
2928
// TODO: if need param, into param input mode like vscode does. Or Listen on right arrow key in onActive, and open a side panel to input params.
@@ -40,26 +39,28 @@ export const plugin = {
4039
}
4140
// If there are search text, filter each tiddler one by one (so we could filter by rendered caption).
4241
const realQuery = query.substring(1);
43-
return realQuery ? cachedTiddlers
44-
.filter((tiddler): tiddler is ITiddlerFields => {
45-
const filter = tiddler['command-palette-filter'] as string | undefined;
46-
// if no filter, just pass. If user didn't install `$:/plugins/Gk0Wk/focused-tiddler`, also pass.
47-
if (!filter || !focusedTiddler) return true;
48-
const passTheFilterOnTiddler = $tw.wiki.filterTiddlers(filter, undefined, $tw.wiki.makeTiddlerIterator([focusedTiddler])).length > 0;
49-
return passTheFilterOnTiddler;
50-
})
51-
.filter(tiddler =>
52-
// TODO: add pinyinfuse
53-
$tw.wiki.filterTiddlers(
54-
`[search[${realQuery}]]`,
55-
undefined,
56-
$tw.wiki.makeTiddlerIterator([
57-
tiddler.title.replace('$:/plugins/linonetwo/autocomplete/', ''),
58-
renderTextWithCache(tiddler.caption, widget),
59-
renderTextWithCache(tiddler.description, widget),
60-
]),
61-
).length > 0
62-
) : cachedTiddlers;
42+
return realQuery
43+
? cachedTiddlers
44+
.filter((tiddler): tiddler is ITiddlerFields => {
45+
const filter = tiddler['command-palette-filter'] as string | undefined;
46+
// if no filter, just pass. If user didn't install `$:/plugins/Gk0Wk/focused-tiddler`, also pass.
47+
if (!filter || !focusedTiddler) return true;
48+
const passTheFilterOnTiddler = $tw.wiki.filterTiddlers(filter, undefined, $tw.wiki.makeTiddlerIterator([focusedTiddler])).length > 0;
49+
return passTheFilterOnTiddler;
50+
})
51+
.filter(tiddler =>
52+
// TODO: add pinyinfuse
53+
$tw.wiki.filterTiddlers(
54+
`[search[${realQuery}]]`,
55+
undefined,
56+
$tw.wiki.makeTiddlerIterator([
57+
tiddler.title.replace('$:/plugins/linonetwo/autocomplete/', ''),
58+
renderTextWithCache(tiddler.caption, widget),
59+
renderTextWithCache(tiddler.description, widget),
60+
]),
61+
).length > 0
62+
)
63+
: cachedTiddlers;
6364
},
6465
getItemUrl({ item }) {
6566
return item.title;
@@ -70,7 +71,7 @@ export const plugin = {
7071
templates: {
7172
header() {
7273
// get rendered caption of focused tiddler
73-
let caption = focusedTiddler ? $tw.wiki.getTiddler(focusedTiddler)?.fields?.caption as string | undefined : '';
74+
let caption = focusedTiddler ? $tw.wiki.getTiddler(focusedTiddler)?.fields.caption as string | undefined : '';
7475
if (caption) {
7576
caption = `(${renderTextWithCache(caption, widget, variables)})`;
7677
}

src/autocomplete/widgets/build-in-sub-plugins/search-config.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* eslint-disable @typescript-eslint/strict-boolean-expressions */
21
import type { AutocompletePlugin } from '@algolia/autocomplete-js';
32
import { ITiddlerFields } from 'tiddlywiki';
43
import { checkIsSearchSystem, checkIsUnderFilter } from '../utils/checkPrefix';
@@ -26,16 +25,18 @@ export const plugin = {
2625
cachedTiddlers = await filterTiddlersAsync(`[all[shadows]tag[$:/tags/ControlPanel/SettingsTab]]`, { system: true });
2726
}
2827
const realQuery = query.substring(1);
29-
return realQuery ? cachedTiddlers
30-
.filter((tiddler): tiddler is ITiddlerFields => {
31-
// TODO: add pinyinfuse
32-
return $tw.wiki.filterTiddlers(
33-
`[search[${realQuery}]]`,
34-
undefined,
35-
// note that `tiddler.text` is undefined on TidGi desktop, but it is OK to not search its text
36-
$tw.wiki.makeTiddlerIterator([renderTextWithCache(tiddler.caption, widget), tiddler.text, tiddler.title.replace('$:/plugins/', '')]),
37-
).length > 0;
38-
}) : cachedTiddlers;
28+
return realQuery
29+
? cachedTiddlers
30+
.filter((tiddler): tiddler is ITiddlerFields => {
31+
// TODO: add pinyinfuse
32+
return $tw.wiki.filterTiddlers(
33+
`[search[${realQuery}]]`,
34+
undefined,
35+
// note that `tiddler.text` is undefined on TidGi desktop, but it is OK to not search its text
36+
$tw.wiki.makeTiddlerIterator([renderTextWithCache(tiddler.caption, widget), tiddler.text, tiddler.title.replace('$:/plugins/', '')]),
37+
).length > 0;
38+
})
39+
: cachedTiddlers;
3940
},
4041
getItemUrl({ item }) {
4142
return item.title;

src/autocomplete/widgets/build-in-sub-plugins/search-filter.ts

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* eslint-disable @typescript-eslint/strict-boolean-expressions */
21
import type { AutocompletePlugin, AutocompleteSource } from '@algolia/autocomplete-js';
32
import { ITiddlerFields } from 'tiddlywiki';
43
import { checkIsFilter, checkIsSearchSystem, checkIsUnderFilter } from '../utils/checkPrefix';
@@ -29,28 +28,30 @@ export const plugin = {
2928
if (cachedTiddlers.length === 0 || !cacheSystemTiddlers()) {
3029
cachedTiddlers = await filterTiddlersAsync(`[all[tiddlers+shadows]tag[$:/tags/Filter]]`, { system: true });
3130
}
32-
31+
3332
const validFilterTiddlers = cachedTiddlers.filter((tiddler): tiddler is ITiddlerFields => {
3433
if (tiddler === undefined) return false;
3534
if (!tiddler.filter || typeof tiddler.filter !== 'string') return false;
3635
return true;
3736
});
38-
37+
3938
const realQuery = query.substring(1);
40-
const buildInFilters = realQuery ? validFilterTiddlers.filter(tiddler =>
41-
// TODO: add pinyinfuse
42-
$tw.wiki.filterTiddlers(
43-
`[search[${realQuery}]]`,
44-
undefined,
45-
$tw.wiki.makeTiddlerIterator([
46-
tiddler.title.replace('$:/plugins/', '').replace('linonetwo/commandpalette/', ''),
47-
renderTextWithCache(tiddler.caption, widget),
48-
renderTextWithCache(tiddler.description, widget),
49-
(tiddler.filter as string).trim().replaceAll('[', '').replaceAll(']', ''),
50-
]),
51-
).length > 0
52-
) : validFilterTiddlers;
53-
39+
const buildInFilters = realQuery
40+
? validFilterTiddlers.filter(tiddler =>
41+
// TODO: add pinyinfuse
42+
$tw.wiki.filterTiddlers(
43+
`[search[${realQuery}]]`,
44+
undefined,
45+
$tw.wiki.makeTiddlerIterator([
46+
tiddler.title.replace('$:/plugins/', '').replace('linonetwo/commandpalette/', ''),
47+
renderTextWithCache(tiddler.caption, widget),
48+
renderTextWithCache(tiddler.description, widget),
49+
(tiddler.filter as string).trim().replaceAll('[', '').replaceAll(']', ''),
50+
]),
51+
).length > 0
52+
)
53+
: validFilterTiddlers;
54+
5455
// allow user input a custom filter to search under it
5556
const userInputFilter = { filter: query, title: '', type: '', text: '' } satisfies ITiddlerFields;
5657
if (query.length > 1) {
@@ -100,24 +101,24 @@ export const plugin = {
100101
const system = checkIsSearchSystem(parameters);
101102
const realQuery = system ? query.substring(1) : query;
102103
const context = state.context as IContext;
103-
104+
104105
// 构建基本过滤器字符串
105106
const baseFilter = `[all[tiddlers+shadows]]+${context.filter} ${context.applyExclusion ? titleTextExclusionFilter() : ''}`;
106-
107-
return realQuery ?
108-
await filterTiddlersAsync(
107+
108+
return realQuery
109+
? await filterTiddlersAsync(
109110
`${baseFilter} +[search[${realQuery}]]`,
110111
{
111112
system,
112113
toTiddler: (context.filterGetTiddler ?? true),
113-
}
114-
) :
115-
await filterTiddlersAsync(
114+
},
115+
)
116+
: await filterTiddlersAsync(
116117
baseFilter,
117118
{
118119
system,
119120
toTiddler: (context.filterGetTiddler ?? true),
120-
}
121+
},
121122
);
122123
},
123124
getItemUrl({ item }) {

src/autocomplete/widgets/build-in-sub-plugins/search-help.ts

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* eslint-disable @typescript-eslint/strict-boolean-expressions */
21
import type { AutocompletePlugin } from '@algolia/autocomplete-js';
32
import { ITiddlerFields } from 'tiddlywiki';
43
import { checkIsHelp, checkIsUnderFilter } from '../utils/checkPrefix';
@@ -25,20 +24,22 @@ export const plugin = {
2524
const allHelpTiddlers = cachedTiddlers
2625
.map((title) => $tw.wiki.getTiddler(title)?.fields)
2726
.filter(Boolean) as ITiddlerFields[];
28-
27+
2928
const realQuery = query.substring(1);
30-
return realQuery ? allHelpTiddlers.filter((tiddler) =>
31-
// TODO: add pinyinfuse
32-
$tw.wiki.filterTiddlers(
33-
`[search[${realQuery}]]`,
34-
undefined,
35-
$tw.wiki.makeTiddlerIterator([
36-
tiddler.title.replace('$:/plugins/linonetwo/autocomplete/commands/help/', ''),
37-
renderTextWithCache(tiddler.caption, widget),
38-
renderTextWithCache(tiddler.description, widget),
39-
]),
40-
).length > 0
41-
) : allHelpTiddlers;
29+
return realQuery
30+
? allHelpTiddlers.filter((tiddler) =>
31+
// TODO: add pinyinfuse
32+
$tw.wiki.filterTiddlers(
33+
`[search[${realQuery}]]`,
34+
undefined,
35+
$tw.wiki.makeTiddlerIterator([
36+
tiddler.title.replace('$:/plugins/linonetwo/autocomplete/commands/help/', ''),
37+
renderTextWithCache(tiddler.caption, widget),
38+
renderTextWithCache(tiddler.description, widget),
39+
]),
40+
).length > 0
41+
)
42+
: allHelpTiddlers;
4243
},
4344
getItemUrl({ item }) {
4445
return item.title;

src/autocomplete/widgets/build-in-sub-plugins/search-layout.ts

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* eslint-disable @typescript-eslint/strict-boolean-expressions */
21
import { AutocompleteState } from '@algolia/autocomplete-core';
32
import type { AutocompletePlugin } from '@algolia/autocomplete-js';
43
import { ITiddlerFields } from 'tiddlywiki';
@@ -21,7 +20,7 @@ export const plugin = {
2120
const { widget } = parameters.state.context as IContext;
2221
const onSelect = (item: ITiddlerFields, state: AutocompleteState<ITiddlerFields>, isClick: boolean) => {
2322
const newContext = { noNavigate: true } satisfies IContext;
24-
parameters.setContext?.(newContext);
23+
parameters.setContext(newContext);
2524
$tw.wiki.setText('$:/layout', 'text', undefined, item.title, { suppressTimestamp: true });
2625
// When Enter, it will call the navigator.navigate, so we don't need to call it here, otherwise it will called twice and second time without context, causing the layout tiddler to be opened.
2726
if (isClick) {
@@ -33,22 +32,27 @@ export const plugin = {
3332
sourceId: 'layout',
3433
async getItems({ query }) {
3534
if (cachedTiddlers.length === 0 || !cacheSystemTiddlers()) {
36-
cachedTiddlers = await filterTiddlersAsync(`[all[tiddlers+shadows]tag[$:/tags/Layout]] [[$:/core/ui/PageTemplate]] +[!is[draft]sort[name]]`, { system: true, exclude: [] });
35+
cachedTiddlers = await filterTiddlersAsync(`[all[tiddlers+shadows]tag[$:/tags/Layout]] [[$:/core/ui/PageTemplate]] +[!is[draft]sort[name]]`, {
36+
system: true,
37+
exclude: [],
38+
});
3739
}
3840
// If there are search text, filter each tiddler one by one (so we could filter by rendered caption).
3941
const realQuery = query.substring(1);
40-
return realQuery ? cachedTiddlers.filter((tiddler): tiddler is ITiddlerFields => {
41-
// TODO: add pinyinfuse
42-
return $tw.wiki.filterTiddlers(
43-
`[search[${realQuery}]]`,
44-
undefined,
45-
$tw.wiki.makeTiddlerIterator([
46-
renderTextWithCache(tiddler.name, widget),
47-
renderTextWithCache(tiddler.description, widget),
48-
tiddler.title.replace('$:/plugins/', ''),
49-
]),
50-
).length > 0;
51-
}) : cachedTiddlers;
42+
return realQuery
43+
? cachedTiddlers.filter((tiddler): tiddler is ITiddlerFields => {
44+
// TODO: add pinyinfuse
45+
return $tw.wiki.filterTiddlers(
46+
`[search[${realQuery}]]`,
47+
undefined,
48+
$tw.wiki.makeTiddlerIterator([
49+
renderTextWithCache(tiddler.name, widget),
50+
renderTextWithCache(tiddler.description, widget),
51+
tiddler.title.replace('$:/plugins/', ''),
52+
]),
53+
).length > 0;
54+
})
55+
: cachedTiddlers;
5256
},
5357
getItemUrl({ item }) {
5458
return item.title;
@@ -59,7 +63,7 @@ export const plugin = {
5963
templates: {
6064
header() {
6165
const currentLayoutTitle = $tw.wiki.getTiddlerText('$:/layout', '');
62-
const rawLayoutName = $tw.wiki.getTiddler(currentLayoutTitle)?.fields?.name;
66+
const rawLayoutName = $tw.wiki.getTiddler(currentLayoutTitle)?.fields.name;
6367
const currentLayoutName = rawLayoutName
6468
? renderTextWithCache(rawLayoutName, widget)
6569
: $tw.wiki.getTiddlerText('$:/language/PageTemplate/Name');

src/autocomplete/widgets/build-in-sub-plugins/search-recent.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export const plugin = (id: string): AutocompletePlugin<RecentSearchesItem, Recen
1717
const recentSearchesPlugin = createLocalStorageRecentSearchesPlugin({
1818
key: `recent-${id}`,
1919
subscribe(parameters) {
20-
parameters.setContext?.({ addHistoryItem: (text: string) => recentSearchesPlugin.data?.addItem({ id: text, label: text }) } satisfies IContext);
20+
parameters.setContext({ addHistoryItem: (text: string) => recentSearchesPlugin.data?.addItem({ id: text, label: text }) } satisfies IContext);
2121
setContext = parameters.setContext as unknown as StateUpdater<IContext>;
2222
navigator = parameters.navigator;
2323
refresh = parameters.refresh.bind(parameters);
@@ -27,7 +27,7 @@ export const plugin = (id: string): AutocompletePlugin<RecentSearchesItem, Recen
2727
const newContext = { newQuery: item.id, noClose: true, noNavigate: true } satisfies IContext;
2828
setContext?.(newContext);
2929
if (isClick) {
30-
navigator?.navigate?.({ item, itemUrl: item.id, state: { ...state, context: { ...state.context, ...newContext } } });
30+
navigator?.navigate({ item, itemUrl: item.id, state: { ...state, context: { ...state.context, ...newContext } } });
3131
}
3232
};
3333
return {
@@ -51,7 +51,7 @@ export const plugin = (id: string): AutocompletePlugin<RecentSearchesItem, Recen
5151
item({ item, createElement }) {
5252
const onDelete = () => {
5353
recentSearchesPlugin.data?.removeItem(item.id);
54-
void refresh?.()?.catch?.(error => {
54+
void refresh()?.catch(error => {
5555
console.error('Error in search-recent refresh', error);
5656
});
5757
};

0 commit comments

Comments
 (0)