@vdegenne/links 1.5.2 → 1.6.1

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/lib/index.d.ts CHANGED
@@ -8,13 +8,17 @@
8
8
  */
9
9
  export type GoogleImagesSize = 'l' | 'm' | 'i' | 'qsvga' | 'vga' | 'svga' | 'xga' | '2mp' | '4mp' | '6mp' | '8mp' | '10mp' | '12mp' | '15mp' | '20mp' | '40mp' | '70mp';
10
10
  export type GoogleImagesDate = 'd' | 'w' | 'm' | 'y';
11
- export declare function googleImagesUrl(input: string, size?: GoogleImagesSize, date?: GoogleImagesDate, excludeWords?: string[]): string;
12
- export declare function googleImagesOpen(input: string, size?: GoogleImagesSize, date?: GoogleImagesDate, excludeWords?: string[]): void;
13
- export interface GoogleImagesSearchContext {
14
- query: string[];
15
- excluded: string[];
11
+ export type GoogleImagesType = 'animated' | 'face' | 'clipart' | 'lineart' | 'photo';
12
+ export interface GoogleImagesOptions {
16
13
  size?: GoogleImagesSize;
17
14
  date?: GoogleImagesDate;
15
+ type?: GoogleImagesType;
16
+ excludedWords?: string[];
17
+ }
18
+ export declare function googleImagesUrl(input: string, options?: GoogleImagesOptions): string;
19
+ export declare function googleImagesOpen(input: string, options?: GoogleImagesOptions): void;
20
+ export interface GoogleImagesSearchContext extends GoogleImagesOptions {
21
+ query: string[];
18
22
  }
19
23
  export declare function googleImagesUrlAnalyzer(gImgUrl: string): GoogleImagesSearchContext;
20
24
  export declare function googleTranslateUrl(input: string, lang?: string, source?: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;GAEG;AAEH,MAAM,MAAM,gBAAgB,GACzB,GAAG,GACH,GAAG,GACH,GAAG,GACH,OAAO,GACP,KAAK,GACL,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEV,MAAM,MAAM,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAErD,wBAAgB,eAAe,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,gBAAgB,EACvB,IAAI,CAAC,EAAE,gBAAgB,EACvB,YAAY,CAAC,EAAE,MAAM,EAAE,UA4BvB;AAED,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,gBAAgB,EACvB,IAAI,CAAC,EAAE,gBAAgB,EACvB,YAAY,CAAC,EAAE,MAAM,EAAE,QAGvB;AAED,MAAM,WAAW,yBAAyB;IACzC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACxB;AAED,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,MAAM,GACb,yBAAyB,CAsC3B;AAGD,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,SAAO,EACX,MAAM,SAAS,UAKf;AACD,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,QAGf;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,UAIvC;AACD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,QAExC;AAED;;GAEG;AAEH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,UAErC;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,QAEtC;AAGD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,UAKnC;AACD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,QAEpC;AAGD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,UAEtC;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,QAEvC;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAExC;AACD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,QAEzC;AAGD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,UAIpC;AACD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,QAErC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;GAEG;AAEH,MAAM,MAAM,gBAAgB,GACzB,GAAG,GACH,GAAG,GACH,GAAG,GACH,OAAO,GACP,KAAK,GACL,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEV,MAAM,MAAM,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACrD,MAAM,MAAM,gBAAgB,GACzB,UAAU,GACV,MAAM,GACN,SAAS,GACT,SAAS,GACT,OAAO,CAAC;AAEX,MAAM,WAAW,mBAAmB;IACnC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wBAAgB,eAAe,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,UAqC7B;AAED,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,QAM7B;AAED,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACrE,KAAK,EAAE,MAAM,EAAE,CAAC;CAKhB;AAED,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,MAAM,GACb,yBAAyB,CA4C3B;AAGD,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,SAAO,EACX,MAAM,SAAS,UAKf;AACD,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,QAGf;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,UAIvC;AACD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,QAExC;AAED;;GAEG;AAEH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,UAErC;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,QAEtC;AAGD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,UAKnC;AACD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,QAEpC;AAGD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,UAEtC;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,QAEvC;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAExC;AACD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,QAEzC;AAGD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,UAIpC;AACD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,QAErC"}
package/lib/index.js CHANGED
@@ -11,26 +11,30 @@ function open(url, newTab = true) {
11
11
  window.open(url);
12
12
  }
13
13
  }
14
- export function googleImagesUrl(input, size, date, excludeWords) {
14
+ export function googleImagesUrl(input, options) {
15
+ options ??= {};
15
16
  const base = new URL('http://www.google.com/search');
16
17
  let params = new URLSearchParams();
17
- params.append('tbm', 'isch');
18
+ params.append('udm', '2');
18
19
  params.append('as_q', input);
19
- if (excludeWords && excludeWords.length) {
20
- params.append('as_eq', excludeWords.join(' '));
20
+ if (options.excludedWords && options.excludedWords.length) {
21
+ params.append('as_eq', options.excludedWords.join(' '));
21
22
  }
22
23
  let tbsParams = [];
23
- if (size) {
24
- if (!['s', 'm', 'l'].includes(size)) {
24
+ if (options.size) {
25
+ if (!['s', 'm', 'l'].includes(options.size)) {
25
26
  tbsParams.push('isz:lt');
26
- tbsParams.push(`islt:${size}`);
27
+ tbsParams.push(`islt:${options.size}`);
27
28
  }
28
29
  else {
29
- tbsParams.push(`isz:${size}`);
30
+ tbsParams.push(`isz:${options.size}`);
30
31
  }
31
32
  }
32
- if (date) {
33
- tbsParams.push(`qdr:${date}`);
33
+ if (options.date) {
34
+ tbsParams.push(`qdr:${options.date}`);
35
+ }
36
+ if (options.type) {
37
+ tbsParams.push(`itp:${options.type}`);
34
38
  }
35
39
  if (tbsParams.length > 0) {
36
40
  params.append('tbs', tbsParams.join(','));
@@ -38,14 +42,17 @@ export function googleImagesUrl(input, size, date, excludeWords) {
38
42
  base.search = params.toString();
39
43
  return base.toString();
40
44
  }
41
- export function googleImagesOpen(input, size, date, excludeWords) {
42
- open(googleImagesUrl(input, size, date, excludeWords));
45
+ export function googleImagesOpen(input, options) {
46
+ open(googleImagesUrl(input, options));
43
47
  }
44
48
  export function googleImagesUrlAnalyzer(gImgUrl) {
45
49
  const url = new URL(gImgUrl);
46
- const info = { query: [], excluded: [] };
50
+ const info = {
51
+ query: [],
52
+ excludedWords: [],
53
+ };
47
54
  const params = url.searchParams;
48
- if (!params.get('tbm') || params.get('tbm') !== 'isch') {
55
+ if (!params.get('udm') || params.get('udm') !== '2') {
49
56
  throw new Error('Not a Google Images search');
50
57
  }
51
58
  const getKeywords = (paramName) => (params.get(paramName) || '').split(' ').filter((v) => v);
@@ -57,7 +64,7 @@ export function googleImagesUrlAnalyzer(gImgUrl) {
57
64
  // Search keywords
58
65
  info.query = keywords.filter((v) => !v.startsWith('-'));
59
66
  // Excluded search keywords
60
- info.excluded = keywords
67
+ info.excludedWords = keywords
61
68
  .filter((v) => v.startsWith('-'))
62
69
  .map((v) => v.slice(1));
63
70
  const tbs = params.get('tbs');
@@ -72,6 +79,9 @@ export function googleImagesUrlAnalyzer(gImgUrl) {
72
79
  if (tbsInfo.qdr) {
73
80
  info.date = tbsInfo.qdr;
74
81
  }
82
+ if (tbsInfo.itp) {
83
+ info.type = tbsInfo.itp;
84
+ }
75
85
  }
76
86
  return info;
77
87
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright (c) 2023 Valentin Degenne\n * SPDX-License-Identifier: MIT\n */\n\nfunction open(url: string, newTab = true) {\n\tif (newTab) {\n\t\twindow.open(url, '_blank');\n\t} else {\n\t\twindow.open(url);\n\t}\n}\n\n/**\n * Google related links\n */\n// google images\nexport type GoogleImagesSize =\n\t| 'l'\n\t| 'm'\n\t| 'i'\n\t| 'qsvga'\n\t| 'vga'\n\t| 'svga'\n\t| 'xga'\n\t| '2mp'\n\t| '4mp'\n\t| '6mp'\n\t| '8mp'\n\t| '10mp'\n\t| '12mp'\n\t| '15mp'\n\t| '20mp'\n\t| '40mp'\n\t| '70mp';\n\nexport type GoogleImagesDate = 'd' | 'w' | 'm' | 'y';\n\nexport function googleImagesUrl(\n\tinput: string,\n\tsize?: GoogleImagesSize,\n\tdate?: GoogleImagesDate,\n\texcludeWords?: string[],\n) {\n\tconst base = new URL('http://www.google.com/search');\n\tlet params = new URLSearchParams();\n\tparams.append('tbm', 'isch');\n\tparams.append('as_q', input);\n\tif (excludeWords && excludeWords.length) {\n\t\tparams.append('as_eq', excludeWords.join(' '));\n\t}\n\n\tlet tbsParams = [];\n\tif (size) {\n\t\tif (!['s', 'm', 'l'].includes(size)) {\n\t\t\ttbsParams.push('isz:lt');\n\t\t\ttbsParams.push(`islt:${size}`);\n\t\t} else {\n\t\t\ttbsParams.push(`isz:${size}`);\n\t\t}\n\t}\n\tif (date) {\n\t\ttbsParams.push(`qdr:${date}`);\n\t}\n\tif (tbsParams.length > 0) {\n\t\tparams.append('tbs', tbsParams.join(','));\n\t}\n\n\tbase.search = params.toString();\n\treturn base.toString();\n}\n\nexport function googleImagesOpen(\n\tinput: string,\n\tsize?: GoogleImagesSize,\n\tdate?: GoogleImagesDate,\n\texcludeWords?: string[],\n) {\n\topen(googleImagesUrl(input, size, date, excludeWords));\n}\n\nexport interface GoogleImagesSearchContext {\n\tquery: string[];\n\texcluded: string[];\n\tsize?: GoogleImagesSize;\n\tdate?: GoogleImagesDate;\n}\n\nexport function googleImagesUrlAnalyzer(\n\tgImgUrl: string,\n): GoogleImagesSearchContext {\n\tconst url = new URL(gImgUrl);\n\tconst info: GoogleImagesSearchContext = {query: [], excluded: []};\n\tconst params = url.searchParams;\n\tif (!params.get('tbm') || params.get('tbm') !== 'isch') {\n\t\tthrow new Error('Not a Google Images search');\n\t}\n\tconst getKeywords = (paramName: string) =>\n\t\t(params.get(paramName) || '').split(' ').filter((v) => v);\n\tconst keywords = [\n\t\t...getKeywords('q'),\n\t\t...getKeywords('as_q'),\n\t\t...getKeywords('as_eq').map((v) => `-${v}`),\n\t];\n\n\t// Search keywords\n\tinfo.query = keywords.filter((v) => !v.startsWith('-'));\n\t// Excluded search keywords\n\tinfo.excluded = keywords\n\t\t.filter((v) => v.startsWith('-'))\n\t\t.map((v) => v.slice(1));\n\n\tconst tbs = params.get('tbs');\n\tif (tbs) {\n\t\tconst tbsInfo = Object.fromEntries(\n\t\t\ttbs.split(',').map((p) => p.split(':')),\n\t\t);\n\t\tif (tbsInfo.isz) {\n\t\t\tinfo.size =\n\t\t\t\ttbsInfo.isz === 'lt' && tbsInfo.islt\n\t\t\t\t\t? tbsInfo.islt\n\t\t\t\t\t: tbsInfo.isz;\n\t\t}\n\t\tif (tbsInfo.qdr) {\n\t\t\tinfo.date = tbsInfo.qdr;\n\t\t}\n\t}\n\treturn info;\n}\n\n// google translate\nexport function googleTranslateUrl(\n\tinput: string,\n\tlang = 'en',\n\tsource = 'auto',\n) {\n\treturn `https://translate.google.com/?sl=${source}&tl=${lang}&text=${encodeURIComponent(\n\t\tinput,\n\t)}&op=translate`;\n}\nexport function googleTranslateOpen(\n\tinput: string,\n\tlang?: string,\n\tsource?: string,\n) {\n\topen(googleTranslateUrl(input, lang, source));\n}\nexport function youtubeUrl(input: string) {\n\treturn `https://www.youtube.com/results?search_query=${encodeURIComponent(\n\t\tinput,\n\t)}`;\n}\nexport function youtubeOpen(input: string) {\n\topen(youtubeUrl(input));\n}\n\n/**\n * Japanese related\n */\n// jisho\nexport function jishoUrl(input: string) {\n\treturn `https://jisho.org/search/${encodeURIComponent(input)}`;\n}\nexport function jishoOpen(input: string) {\n\topen(jishoUrl(input));\n}\n\n// goo\nexport function gooUrl(input: string) {\n\t// return `https://dictionary.goo.ne.jp/word/${encodeURIComponent(word)}/`;\n\treturn `https://dictionary.goo.ne.jp/srch/all/${encodeURIComponent(\n\t\tinput,\n\t)}/m0u/`;\n}\nexport function gooOpen(input: string) {\n\topen(gooUrl(input));\n}\n\n// weblio\nexport function weblioUrl(input: string) {\n\treturn `https://www.weblio.jp/content/${encodeURIComponent(input)}`;\n}\nexport function weblioOpen(input: string) {\n\topen(weblioUrl(input));\n}\n\n// kotobank\nexport function kotobankUrl(input: string) {\n\treturn `https://kotobank.jp/word/${encodeURIComponent(input)}`;\n}\nexport function kotobankOpen(input: string) {\n\topen(kotobankUrl(input));\n}\n\n// Mdbg\nexport function mdbgUrl(input: string) {\n\treturn `https://www.mdbg.net/chinese/dictionary?page=worddict&wdrst=0&wdqb=${encodeURIComponent(\n\t\tinput,\n\t)}`;\n}\nexport function mdbgOpen(input: string) {\n\topen(mdbgUrl(input));\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright (c) 2023 Valentin Degenne\n * SPDX-License-Identifier: MIT\n */\n\nfunction open(url: string, newTab = true) {\n\tif (newTab) {\n\t\twindow.open(url, '_blank');\n\t} else {\n\t\twindow.open(url);\n\t}\n}\n\n/**\n * Google related links\n */\n// google images\nexport type GoogleImagesSize =\n\t| 'l'\n\t| 'm'\n\t| 'i'\n\t| 'qsvga'\n\t| 'vga'\n\t| 'svga'\n\t| 'xga'\n\t| '2mp'\n\t| '4mp'\n\t| '6mp'\n\t| '8mp'\n\t| '10mp'\n\t| '12mp'\n\t| '15mp'\n\t| '20mp'\n\t| '40mp'\n\t| '70mp';\n\nexport type GoogleImagesDate = 'd' | 'w' | 'm' | 'y';\nexport type GoogleImagesType =\n\t| 'animated'\n\t| 'face'\n\t| 'clipart'\n\t| 'lineart'\n\t| 'photo';\n\nexport interface GoogleImagesOptions {\n\tsize?: GoogleImagesSize;\n\tdate?: GoogleImagesDate;\n\ttype?: GoogleImagesType;\n\texcludedWords?: string[];\n}\n\nexport function googleImagesUrl(\n\tinput: string,\n\toptions?: GoogleImagesOptions,\n\t// size?: GoogleImagesSize,\n\t// date?: GoogleImagesDate,\n\t// excludeWords?: string[],\n) {\n\toptions ??= {};\n\n\tconst base = new URL('http://www.google.com/search');\n\tlet params = new URLSearchParams();\n\tparams.append('udm', '2');\n\tparams.append('as_q', input);\n\tif (options.excludedWords && options.excludedWords.length) {\n\t\tparams.append('as_eq', options.excludedWords.join(' '));\n\t}\n\n\tlet tbsParams = [];\n\tif (options.size) {\n\t\tif (!['s', 'm', 'l'].includes(options.size)) {\n\t\t\ttbsParams.push('isz:lt');\n\t\t\ttbsParams.push(`islt:${options.size}`);\n\t\t} else {\n\t\t\ttbsParams.push(`isz:${options.size}`);\n\t\t}\n\t}\n\tif (options.date) {\n\t\ttbsParams.push(`qdr:${options.date}`);\n\t}\n\tif (options.type) {\n\t\ttbsParams.push(`itp:${options.type}`);\n\t}\n\n\tif (tbsParams.length > 0) {\n\t\tparams.append('tbs', tbsParams.join(','));\n\t}\n\n\tbase.search = params.toString();\n\treturn base.toString();\n}\n\nexport function googleImagesOpen(\n\tinput: string,\n\toptions?: GoogleImagesOptions,\n\t// size?: GoogleImagesSize,\n\t// date?: GoogleImagesDate,\n\t// excludeWords?: string[],\n) {\n\topen(googleImagesUrl(input, options));\n}\n\nexport interface GoogleImagesSearchContext extends GoogleImagesOptions {\n\tquery: string[];\n\t// excluded: string[];\n\t// size?: GoogleImagesSize;\n\t// date?: GoogleImagesDate;\n\t// type?: GoogleImagesType;\n}\n\nexport function googleImagesUrlAnalyzer(\n\tgImgUrl: string,\n): GoogleImagesSearchContext {\n\tconst url = new URL(gImgUrl);\n\tconst info: GoogleImagesSearchContext = {\n\t\tquery: [],\n\t\texcludedWords: [],\n\t};\n\tconst params = url.searchParams;\n\tif (!params.get('udm') || params.get('udm') !== '2') {\n\t\tthrow new Error('Not a Google Images search');\n\t}\n\tconst getKeywords = (paramName: string) =>\n\t\t(params.get(paramName) || '').split(' ').filter((v) => v);\n\tconst keywords = [\n\t\t...getKeywords('q'),\n\t\t...getKeywords('as_q'),\n\t\t...getKeywords('as_eq').map((v) => `-${v}`),\n\t];\n\n\t// Search keywords\n\tinfo.query = keywords.filter((v) => !v.startsWith('-'));\n\t// Excluded search keywords\n\tinfo.excludedWords = keywords\n\t\t.filter((v) => v.startsWith('-'))\n\t\t.map((v) => v.slice(1));\n\n\tconst tbs = params.get('tbs');\n\tif (tbs) {\n\t\tconst tbsInfo = Object.fromEntries(\n\t\t\ttbs.split(',').map((p) => p.split(':')),\n\t\t);\n\t\tif (tbsInfo.isz) {\n\t\t\tinfo.size =\n\t\t\t\ttbsInfo.isz === 'lt' && tbsInfo.islt\n\t\t\t\t\t? tbsInfo.islt\n\t\t\t\t\t: tbsInfo.isz;\n\t\t}\n\t\tif (tbsInfo.qdr) {\n\t\t\tinfo.date = tbsInfo.qdr;\n\t\t}\n\t\tif (tbsInfo.itp) {\n\t\t\tinfo.type = tbsInfo.itp;\n\t\t}\n\t}\n\treturn info;\n}\n\n// google translate\nexport function googleTranslateUrl(\n\tinput: string,\n\tlang = 'en',\n\tsource = 'auto',\n) {\n\treturn `https://translate.google.com/?sl=${source}&tl=${lang}&text=${encodeURIComponent(\n\t\tinput,\n\t)}&op=translate`;\n}\nexport function googleTranslateOpen(\n\tinput: string,\n\tlang?: string,\n\tsource?: string,\n) {\n\topen(googleTranslateUrl(input, lang, source));\n}\nexport function youtubeUrl(input: string) {\n\treturn `https://www.youtube.com/results?search_query=${encodeURIComponent(\n\t\tinput,\n\t)}`;\n}\nexport function youtubeOpen(input: string) {\n\topen(youtubeUrl(input));\n}\n\n/**\n * Japanese related\n */\n// jisho\nexport function jishoUrl(input: string) {\n\treturn `https://jisho.org/search/${encodeURIComponent(input)}`;\n}\nexport function jishoOpen(input: string) {\n\topen(jishoUrl(input));\n}\n\n// goo\nexport function gooUrl(input: string) {\n\t// return `https://dictionary.goo.ne.jp/word/${encodeURIComponent(word)}/`;\n\treturn `https://dictionary.goo.ne.jp/srch/all/${encodeURIComponent(\n\t\tinput,\n\t)}/m0u/`;\n}\nexport function gooOpen(input: string) {\n\topen(gooUrl(input));\n}\n\n// weblio\nexport function weblioUrl(input: string) {\n\treturn `https://www.weblio.jp/content/${encodeURIComponent(input)}`;\n}\nexport function weblioOpen(input: string) {\n\topen(weblioUrl(input));\n}\n\n// kotobank\nexport function kotobankUrl(input: string) {\n\treturn `https://kotobank.jp/word/${encodeURIComponent(input)}`;\n}\nexport function kotobankOpen(input: string) {\n\topen(kotobankUrl(input));\n}\n\n// Mdbg\nexport function mdbgUrl(input: string) {\n\treturn `https://www.mdbg.net/chinese/dictionary?page=worddict&wdrst=0&wdqb=${encodeURIComponent(\n\t\tinput,\n\t)}`;\n}\nexport function mdbgOpen(input: string) {\n\topen(mdbgUrl(input));\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vdegenne/links",
3
- "version": "1.5.2",
3
+ "version": "1.6.1",
4
4
  "author": "Valentin Degenne <vdegenne@gmail.com>",
5
5
  "license": "MIT",
6
6
  "type": "module",