henkan 0.7.0 → 0.8.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.
Files changed (63) hide show
  1. package/README.md +3 -1
  2. package/dist/index.cjs.js +2 -133
  3. package/dist/index.cjs.js.map +2 -2
  4. package/dist/index.mjs +2 -129
  5. package/dist/index.mjs.map +2 -2
  6. package/dist/types/constants.d.ts +0 -3
  7. package/dist/types/constants.d.ts.map +1 -1
  8. package/dist/types/types.d.ts +0 -6
  9. package/dist/types/types.d.ts.map +1 -1
  10. package/dist/types/utils.d.ts +2 -9
  11. package/dist/types/utils.d.ts.map +1 -1
  12. package/docs/api/README.md +0 -1
  13. package/docs/api/functions/capitalizeString.md +1 -1
  14. package/docs/api/functions/convertJMdict.md +1 -1
  15. package/docs/api/functions/convertKanjiDic.md +1 -1
  16. package/docs/api/functions/convertKradFile.md +1 -1
  17. package/docs/api/functions/convertRadkFile.md +1 -1
  18. package/docs/api/functions/convertTanakaCorpus.md +1 -1
  19. package/docs/api/functions/generateAnkiNote.md +1 -1
  20. package/docs/api/functions/generateAnkiNotesFile.md +1 -1
  21. package/docs/api/functions/getKanji.md +1 -1
  22. package/docs/api/functions/getKanjiExtended.md +1 -1
  23. package/docs/api/functions/getWord.md +1 -1
  24. package/docs/api/functions/isStringArray.md +1 -1
  25. package/docs/api/functions/isValidArray.md +1 -1
  26. package/docs/api/functions/isValidArrayWithFirstElement.md +1 -1
  27. package/docs/api/functions/shuffleArray.md +1 -1
  28. package/docs/api/functions/synthesizeSpeech.md +4 -4
  29. package/docs/api/interfaces/DictKanji.md +5 -5
  30. package/docs/api/interfaces/DictKanjiForm.md +4 -4
  31. package/docs/api/interfaces/DictKanjiMisc.md +5 -5
  32. package/docs/api/interfaces/DictKanjiReading.md +3 -3
  33. package/docs/api/interfaces/DictKanjiReadingMeaning.md +3 -3
  34. package/docs/api/interfaces/DictKanjiReadingMeaningGroup.md +3 -3
  35. package/docs/api/interfaces/DictKanjiWithRadicals.md +3 -3
  36. package/docs/api/interfaces/DictMeaning.md +11 -11
  37. package/docs/api/interfaces/DictRadical.md +4 -4
  38. package/docs/api/interfaces/DictReading.md +5 -5
  39. package/docs/api/interfaces/DictWord.md +8 -8
  40. package/docs/api/interfaces/ExamplePart.md +7 -7
  41. package/docs/api/interfaces/GlossSpecificNumber.md +3 -3
  42. package/docs/api/interfaces/Grammar.md +15 -15
  43. package/docs/api/interfaces/GrammarMeaning.md +3 -3
  44. package/docs/api/interfaces/Kana.md +11 -11
  45. package/docs/api/interfaces/Kanji.md +22 -22
  46. package/docs/api/interfaces/KanjiComponent.md +3 -3
  47. package/docs/api/interfaces/KanjiForm.md +4 -4
  48. package/docs/api/interfaces/NoteAndTag.md +3 -3
  49. package/docs/api/interfaces/Phrase.md +5 -5
  50. package/docs/api/interfaces/Radical.md +16 -16
  51. package/docs/api/interfaces/Reading.md +5 -5
  52. package/docs/api/interfaces/ResultEntry.md +7 -7
  53. package/docs/api/interfaces/TanakaExample.md +7 -7
  54. package/docs/api/interfaces/Translation.md +3 -3
  55. package/docs/api/interfaces/UsefulRegExps.md +8 -20
  56. package/docs/api/interfaces/Word.md +14 -14
  57. package/docs/api/type-aliases/Dict.md +1 -1
  58. package/docs/api/type-aliases/DictName.md +1 -1
  59. package/docs/api/type-aliases/EntryType.md +1 -1
  60. package/docs/api/type-aliases/JLPT.md +1 -1
  61. package/docs/api/type-aliases/Result.md +1 -1
  62. package/package.json +1 -1
  63. package/docs/api/functions/makeSSML.md +0 -33
package/dist/index.mjs CHANGED
@@ -10,60 +10,11 @@ var regexps = {
10
10
  hiragana: /[\u{3040}-\u{309F}]/u,
11
11
  katakana: /[\u{30A0}-\u{30FF}]/u,
12
12
  kanji: new RegExp("\\p{Script=Han}+", "u"),
13
- scriptSplit: /([\p{sc=Han}]+|[\p{sc=Hiragana}]+|[\p{sc=Katakana}]+|[^\p{sc=Han}\p{sc=Hiragana}\p{sc=Katakana}]+)/u,
14
13
  regExChars: /[-\/\\^$*+?.()|[\]{}]/,
15
14
  tanakaID: /#ID=(?<id>\d+_\d+)$/,
16
15
  tanakaPart: /(?<base>[^()\[\]\{\}\s]+)(?:\((?<reading>[\S]+)\))?(?:\[(?<glossnum>[\S]+)\])?(?:\{(?<inflection>[\S]+)\})?/,
17
16
  tanakaReferenceID: /#(?<entryid>[\d]+)/
18
17
  };
19
- var romajiMap = {
20
- A: "\u30A8\u30FC",
21
- B: "\u30D3\u30FC",
22
- C: "\u30B7\u30FC",
23
- D: "\u30C7\u30A3\u30FC",
24
- E: "\u30A4\u30FC",
25
- F: "\u30A8\u30D5",
26
- G: "\u30B8\u30FC",
27
- H: "\u30A8\u30A4\u30C1",
28
- I: "\u30A2\u30A4",
29
- J: "\u30B8\u30A7\u30FC",
30
- K: "\u30B1\u30FC",
31
- L: "\u30A8\u30EB",
32
- M: "\u30A8\u30E0",
33
- N: "\u30A8\u30CC",
34
- O: "\u30AA\u30FC",
35
- P: "\u30D4\u30FC",
36
- Q: "\u30AD\u30E5\u30FC",
37
- R: "\u30A2\u30FC\u30EB",
38
- S: "\u30A8\u30B9",
39
- T: "\u30C6\u30A3\u30FC",
40
- U: "\u30E6\u30FC",
41
- V: "\u30D6\u30A4",
42
- W: "\u30C0\u30D6\u30EA\u30E5\u30FC",
43
- X: "\u30A8\u30C3\u30AF\u30B9",
44
- Y: "\u30EF\u30A4",
45
- Z: "\u30BC\u30C3\u30C8"
46
- };
47
- var numberMap = {
48
- "0": "\u30BC\u30ED",
49
- "1": "\u30A4\u30C1",
50
- "2": "\u30CB",
51
- "3": "\u30B5\u30F3",
52
- "4": "\u30E8\u30F3",
53
- "5": "\u30B4",
54
- "6": "\u30ED\u30AF",
55
- "7": "\u30CA\u30CA",
56
- "8": "\u30CF\u30C1",
57
- "9": "\u30AD\u30E5\u30A6"
58
- };
59
- var symbolMap = {
60
- "\uFF04": "\u30C9\u30EB",
61
- "%": "\u30D1\u30FC\u30BB\u30F3\u30C8",
62
- "\xA5": "\u30A8\u30F3",
63
- "#": "\u30B7\u30E3\u30FC\u30D7",
64
- "@": "\u30A2\u30C3\u30C8",
65
- "&": "\u30A2\u30F3\u30C9"
66
- };
67
18
  var notSearchedForms = /* @__PURE__ */ new Set([
68
19
  "search-only kana form",
69
20
  "Search-only kana form",
@@ -1994,88 +1945,14 @@ function getKanjiExtended(kanjiChar, info, dict, useJpdbWords, jmDict, svgList,
1994
1945
  throw err;
1995
1946
  }
1996
1947
  }
1997
- var getCharType = (char) => {
1998
- if (regexps.kanji.test(char)) return "kanji";
1999
- if (regexps.hiragana.test(char)) return "hiragana";
2000
- if (regexps.katakana.test(char)) return "katakana";
2001
- return "other";
2002
- };
2003
- var splitByScript = (text) => text.match(regexps.scriptSplit) || [];
2004
- var convertToHiragana = (str) => str.replace(
2005
- regexps.katakana,
2006
- (c) => String.fromCharCode(c.charCodeAt(0) - 96)
2007
- );
2008
- var convertOtherToKatakana = (str) => str.split("").map((c) => {
2009
- if (romajiMap[c.toUpperCase()]) return romajiMap[c.toUpperCase()];
2010
- if (numberMap[c]) return numberMap[c];
2011
- if (symbolMap[c]) return symbolMap[c];
2012
- return c;
2013
- }).join("");
2014
- function makeSSML(formText, fullReading) {
2015
- let ssml = "";
2016
- const allTypes = Array.from(
2017
- formText
2018
- ).map((c) => getCharType(c));
2019
- const uniqueTypes = Array.from(new Set(allTypes));
2020
- if (uniqueTypes.length === 1)
2021
- switch (uniqueTypes[0]) {
2022
- case "kanji":
2023
- ssml = `<speak><phoneme alphabet="x-amazon-yomigana" ph="${fullReading}">${formText}</phoneme></speak>`;
2024
- break;
2025
- case "katakana":
2026
- ssml = `<speak><phoneme alphabet="x-amazon-pron-kana" ph="${formText}">${formText}</phoneme></speak>`;
2027
- break;
2028
- case "hiragana":
2029
- default:
2030
- ssml = `<speak>${formText}</speak>`;
2031
- }
2032
- else {
2033
- const segments = splitByScript(formText);
2034
- let pureKanjiReading = convertToHiragana(fullReading);
2035
- segments.forEach((seg) => {
2036
- const type = getCharType(
2037
- seg[0]
2038
- );
2039
- if (type !== "kanji") {
2040
- const converted = type === "other" ? convertToHiragana(convertOtherToKatakana(seg)) : convertToHiragana(seg);
2041
- pureKanjiReading = pureKanjiReading.replace(converted, "");
2042
- }
2043
- });
2044
- const kanjiSegments = segments.filter(
2045
- (seg) => getCharType(seg[0]) === "kanji"
2046
- );
2047
- let readingPointer = 0;
2048
- const ssmlSegments = segments.map((seg) => {
2049
- const type = getCharType(
2050
- seg[0]
2051
- );
2052
- if (type === "kanji") {
2053
- const expectedLength = pureKanjiReading.length / kanjiSegments.length;
2054
- const allocated = pureKanjiReading.slice(
2055
- readingPointer,
2056
- readingPointer + Math.ceil(expectedLength)
2057
- );
2058
- readingPointer += allocated.length;
2059
- return `<phoneme alphabet="x-amazon-yomigana" ph="${allocated}">${seg}</phoneme>`;
2060
- } else if (type === "katakana")
2061
- return `<phoneme alphabet="x-amazon-pron-kana" ph="${seg}">${seg}</phoneme>`;
2062
- else if (type === "other") {
2063
- const katakanaReading = convertOtherToKatakana(seg);
2064
- return `<phoneme alphabet="x-amazon-pron-kana" ph="${katakanaReading}">${seg}</phoneme>`;
2065
- } else return seg;
2066
- });
2067
- ssml = `<speak>${ssmlSegments.join("")}</speak>`;
2068
- }
2069
- return ssml;
2070
- }
2071
- async function synthesizeSpeech(ssmlText, apiKey, options) {
1948
+ async function synthesizeSpeech(textOrSSML, apiKey, options) {
2072
1949
  return await new Promise(
2073
1950
  async (resolve, reject) => {
2074
1951
  try {
2075
1952
  const res = await fetch("https://ttsfree.com/api/v1/tts", {
2076
1953
  method: "POST",
2077
1954
  body: JSON.stringify({
2078
- text: ssmlText,
1955
+ text: textOrSSML,
2079
1956
  ...options
2080
1957
  }),
2081
1958
  headers: {
@@ -2336,14 +2213,10 @@ export {
2336
2213
  isValidArray,
2337
2214
  isValidArrayWithFirstElement,
2338
2215
  isWord,
2339
- makeSSML,
2340
2216
  notSearchedForms,
2341
2217
  noteMap,
2342
- numberMap,
2343
2218
  regexps,
2344
- romajiMap,
2345
2219
  shuffleArray,
2346
- symbolMap,
2347
2220
  synthesizeSpeech
2348
2221
  };
2349
2222
  //# sourceMappingURL=index.mjs.map