alfred-spell 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/fetchers.js +14 -5
- package/index.js +22 -5
- package/info.plist +79 -9
- package/package.json +1 -1
- package/prefs.plist +5 -0
package/README.md
CHANGED
package/fetchers.js
CHANGED
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* References: https://onelook.com/thesaurus/ and https://www.datamuse.com/api/
|
|
5
5
|
*
|
|
6
6
|
* @param {{ s: string; max?: number }} input
|
|
7
|
-
* @returns {Promise<Array<{ word: string; score: number }>>}
|
|
7
|
+
* @returns {Promise<Array<{ word: string; score: number, defs: Array<string> }>>}
|
|
8
8
|
*/
|
|
9
9
|
export async function sug(input) {
|
|
10
10
|
const { s, max = 10 } = input;
|
|
11
11
|
|
|
12
12
|
const query = new URLSearchParams({
|
|
13
|
-
|
|
14
|
-
max: String(max),
|
|
13
|
+
k: "olthes_ac3", // unclear
|
|
14
|
+
max: String(max), // page size
|
|
15
|
+
md: "d", // metadata flags
|
|
16
|
+
s, // keyword
|
|
17
|
+
v: "ol_gte2_suggest", // custom vocabulary set
|
|
15
18
|
});
|
|
16
19
|
|
|
17
|
-
const res = await fetch(`https://
|
|
20
|
+
const res = await fetch(`https://onelook.com/api/sug?${query}`, {
|
|
21
|
+
headers: new Headers({
|
|
22
|
+
"User-Agent":
|
|
23
|
+
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36",
|
|
24
|
+
Referer: "https://onelook.com/thesaurus/",
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
18
27
|
|
|
19
28
|
return await res.json();
|
|
20
29
|
}
|
package/index.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
import alfy from "alfy";
|
|
4
4
|
import { sug } from "./fetchers.js";
|
|
5
5
|
|
|
6
|
+
const DEF_PATTERN = /^(?<def>.*?)\s+\[(?<syns>[^\]]+)\]$/;
|
|
7
|
+
|
|
6
8
|
async function main() {
|
|
7
9
|
const input = alfy.input?.trim();
|
|
8
10
|
|
|
@@ -31,33 +33,48 @@ async function main() {
|
|
|
31
33
|
sortedData.unshift({
|
|
32
34
|
word: input,
|
|
33
35
|
score: -1,
|
|
36
|
+
defs: [],
|
|
34
37
|
});
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
alfy.output(
|
|
38
41
|
sortedData.map((x) => {
|
|
39
42
|
const isShowingTopScoreCandidate = x.score === topScore;
|
|
40
|
-
const isShowingExactMatch = x.word === input;
|
|
41
43
|
const isShowingRawInputAsIs = x.score < 0;
|
|
42
44
|
|
|
45
|
+
let definition = "";
|
|
46
|
+
let synonyms = "";
|
|
47
|
+
|
|
48
|
+
if ((x.defs ?? []).length === 1) {
|
|
49
|
+
const rawDef = x.defs[0].trim().replace(/^u\t/, "");
|
|
50
|
+
|
|
51
|
+
const match = rawDef.match(DEF_PATTERN);
|
|
52
|
+
|
|
53
|
+
definition = match?.groups?.def ?? "";
|
|
54
|
+
synonyms = match?.groups?.syns ?? "";
|
|
55
|
+
}
|
|
56
|
+
|
|
43
57
|
let prefix = "";
|
|
44
58
|
if (isShowingTopScoreCandidate) {
|
|
45
|
-
prefix =
|
|
59
|
+
prefix = x.word === input ? "✅ " : "✍️ ";
|
|
46
60
|
}
|
|
47
61
|
|
|
48
|
-
const displayScore = (x.score / topScore).toFixed(3);
|
|
49
|
-
|
|
50
62
|
return {
|
|
51
63
|
title: x.word,
|
|
52
64
|
subtitle: isShowingRawInputAsIs
|
|
53
65
|
? "💬 Raw input"
|
|
54
|
-
: `${prefix}
|
|
66
|
+
: `${prefix}${synonyms}`,
|
|
55
67
|
text: {
|
|
56
68
|
copy: x.word,
|
|
57
69
|
largetype: x.word,
|
|
58
70
|
},
|
|
59
71
|
arg: x.word,
|
|
60
72
|
autocomplete: x.word,
|
|
73
|
+
mods: {
|
|
74
|
+
cmd: {
|
|
75
|
+
arg: `### Definition\n\n${definition}\n\n### Synonyms\n\n${synonyms}`,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
61
78
|
};
|
|
62
79
|
}),
|
|
63
80
|
);
|
package/info.plist
CHANGED
|
@@ -20,6 +20,16 @@
|
|
|
20
20
|
<key>vitoclose</key>
|
|
21
21
|
<false/>
|
|
22
22
|
</dict>
|
|
23
|
+
<dict>
|
|
24
|
+
<key>destinationuid</key>
|
|
25
|
+
<string>9CF7FDC9-F6B5-4D65-89D1-69681D74B9DD</string>
|
|
26
|
+
<key>modifiers</key>
|
|
27
|
+
<integer>1048576</integer>
|
|
28
|
+
<key>modifiersubtext</key>
|
|
29
|
+
<string>↗ View full definition…</string>
|
|
30
|
+
<key>vitoclose</key>
|
|
31
|
+
<false/>
|
|
32
|
+
</dict>
|
|
23
33
|
</array>
|
|
24
34
|
</dict>
|
|
25
35
|
<key>createdby</key>
|
|
@@ -67,11 +77,11 @@
|
|
|
67
77
|
<key>escaping</key>
|
|
68
78
|
<integer>102</integer>
|
|
69
79
|
<key>keyword</key>
|
|
70
|
-
<string>
|
|
80
|
+
<string>{var:trigger_keyword}</string>
|
|
71
81
|
<key>queuedelaycustom</key>
|
|
72
82
|
<integer>3</integer>
|
|
73
83
|
<key>queuedelayimmediatelyinitially</key>
|
|
74
|
-
<
|
|
84
|
+
<false/>
|
|
75
85
|
<key>queuedelaymode</key>
|
|
76
86
|
<integer>1</integer>
|
|
77
87
|
<key>queuemode</key>
|
|
@@ -100,30 +110,90 @@
|
|
|
100
110
|
<key>version</key>
|
|
101
111
|
<integer>3</integer>
|
|
102
112
|
</dict>
|
|
113
|
+
<dict>
|
|
114
|
+
<key>config</key>
|
|
115
|
+
<dict>
|
|
116
|
+
<key>behaviour</key>
|
|
117
|
+
<integer>2</integer>
|
|
118
|
+
<key>fontmode</key>
|
|
119
|
+
<integer>0</integer>
|
|
120
|
+
<key>fontsizing</key>
|
|
121
|
+
<integer>3</integer>
|
|
122
|
+
<key>footertext</key>
|
|
123
|
+
<string></string>
|
|
124
|
+
<key>inputfile</key>
|
|
125
|
+
<string></string>
|
|
126
|
+
<key>inputtype</key>
|
|
127
|
+
<integer>0</integer>
|
|
128
|
+
<key>loadingtext</key>
|
|
129
|
+
<string></string>
|
|
130
|
+
<key>outputmode</key>
|
|
131
|
+
<integer>0</integer>
|
|
132
|
+
<key>scriptinput</key>
|
|
133
|
+
<integer>0</integer>
|
|
134
|
+
<key>spellchecking</key>
|
|
135
|
+
<integer>0</integer>
|
|
136
|
+
<key>stackview</key>
|
|
137
|
+
<true/>
|
|
138
|
+
</dict>
|
|
139
|
+
<key>type</key>
|
|
140
|
+
<string>alfred.workflow.userinterface.text</string>
|
|
141
|
+
<key>uid</key>
|
|
142
|
+
<string>9CF7FDC9-F6B5-4D65-89D1-69681D74B9DD</string>
|
|
143
|
+
<key>version</key>
|
|
144
|
+
<integer>1</integer>
|
|
145
|
+
</dict>
|
|
103
146
|
</array>
|
|
104
147
|
<key>readme</key>
|
|
105
148
|
<string></string>
|
|
106
149
|
<key>uidata</key>
|
|
107
150
|
<dict>
|
|
151
|
+
<key>9CF7FDC9-F6B5-4D65-89D1-69681D74B9DD</key>
|
|
152
|
+
<dict>
|
|
153
|
+
<key>xpos</key>
|
|
154
|
+
<real>310</real>
|
|
155
|
+
<key>ypos</key>
|
|
156
|
+
<real>250</real>
|
|
157
|
+
</dict>
|
|
108
158
|
<key>BAF05B57-A8EF-45EC-82D6-8C624C22E515</key>
|
|
109
159
|
<dict>
|
|
110
160
|
<key>xpos</key>
|
|
111
|
-
<real>
|
|
161
|
+
<real>95</real>
|
|
112
162
|
<key>ypos</key>
|
|
113
|
-
<real>
|
|
163
|
+
<real>130</real>
|
|
114
164
|
</dict>
|
|
115
165
|
<key>D22FAA64-890B-42FC-99EE-60BF083CEFE8</key>
|
|
116
166
|
<dict>
|
|
117
167
|
<key>xpos</key>
|
|
118
|
-
<real>
|
|
168
|
+
<real>310</real>
|
|
119
169
|
<key>ypos</key>
|
|
120
|
-
<real>
|
|
170
|
+
<real>130</real>
|
|
121
171
|
</dict>
|
|
122
172
|
</dict>
|
|
123
173
|
<key>userconfigurationconfig</key>
|
|
124
|
-
<array
|
|
125
|
-
|
|
126
|
-
|
|
174
|
+
<array>
|
|
175
|
+
<dict>
|
|
176
|
+
<key>config</key>
|
|
177
|
+
<dict>
|
|
178
|
+
<key>default</key>
|
|
179
|
+
<string>s</string>
|
|
180
|
+
<key>placeholder</key>
|
|
181
|
+
<string></string>
|
|
182
|
+
<key>required</key>
|
|
183
|
+
<true/>
|
|
184
|
+
<key>trim</key>
|
|
185
|
+
<true/>
|
|
186
|
+
</dict>
|
|
187
|
+
<key>description</key>
|
|
188
|
+
<string></string>
|
|
189
|
+
<key>label</key>
|
|
190
|
+
<string>Keyword</string>
|
|
191
|
+
<key>type</key>
|
|
192
|
+
<string>textfield</string>
|
|
193
|
+
<key>variable</key>
|
|
194
|
+
<string>trigger_keyword</string>
|
|
195
|
+
</dict>
|
|
196
|
+
</array>
|
|
127
197
|
<key>version</key>
|
|
128
198
|
<string></string>
|
|
129
199
|
<key>webaddress</key>
|
package/package.json
CHANGED