@fidel-tools/core 0.1.0 → 0.1.4

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/dist/index.d.ts CHANGED
@@ -5,6 +5,6 @@ export { sentenceTokenize } from './sentence_tokenizer.js';
5
5
  export { stem } from './stemmer.js';
6
6
  export { removeStopwords } from './stopword_remover.js';
7
7
  export { lexAnalyze } from './lexical_analyzer.js';
8
- export { felig_transliterate, sera_transliterate } from './transliterator.js';
8
+ export { felig_transliterate } from './transliterator.js';
9
9
  export { indexDocuments, indexQuery, indexTerms } from './indexer.js';
10
10
  export { weighTerms, weigh_terms } from './term_weighter.js';
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ export { sentenceTokenize } from './sentence_tokenizer.js';
6
6
  export { stem } from './stemmer.js';
7
7
  export { removeStopwords } from './stopword_remover.js';
8
8
  export { lexAnalyze } from './lexical_analyzer.js';
9
- export { felig_transliterate, sera_transliterate } from './transliterator.js';
9
+ export { felig_transliterate } from './transliterator.js';
10
10
  export { indexDocuments, indexQuery, indexTerms } from './indexer.js';
11
11
  export { weighTerms, weigh_terms } from './term_weighter.js';
12
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,yBAAyB;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,yDAAyD;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,yBAAyB;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,yDAAyD;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA"}
@@ -7,28 +7,30 @@
7
7
  * @returns The normalized string.
8
8
  */
9
9
  export function normalize(text, pack) {
10
+ if (!text) {
11
+ return "";
12
+ }
10
13
  if (!pack.normalization) {
11
14
  return text;
12
15
  }
13
16
  let normalized = text;
14
- // 1. Apply char_map
17
+ // 1 & 2. Apply char_map and labialized_map in a single pass over characters
15
18
  const charMap = pack.normalization.char_map || {};
16
- let chars = normalized.split("");
17
- for (let i = 0; i < chars.length; i++) {
18
- if (charMap[chars[i]] !== undefined) {
19
- chars[i] = charMap[chars[i]];
20
- }
21
- }
22
- normalized = chars.join("");
23
- // 2. Apply labialized_map
24
19
  const labializedMap = pack.normalization.labialized_map || {};
25
- let chars2 = normalized.split("");
26
- for (let i = 0; i < chars2.length; i++) {
27
- if (labializedMap[chars2[i]] !== undefined) {
28
- chars2[i] = labializedMap[chars2[i]];
20
+ if (Object.keys(charMap).length > 0 || Object.keys(labializedMap).length > 0) {
21
+ const chars = normalized.split("");
22
+ for (let i = 0; i < chars.length; i++) {
23
+ let char = chars[i];
24
+ if (charMap[char] !== undefined) {
25
+ char = charMap[char];
26
+ }
27
+ if (labializedMap[char] !== undefined) {
28
+ char = labializedMap[char];
29
+ }
30
+ chars[i] = char;
29
31
  }
32
+ normalized = chars.join("");
30
33
  }
31
- normalized = chars2.join("");
32
34
  // 3. Collapse gemination
33
35
  const threshold = pack.normalization.gemination_threshold;
34
36
  if (threshold !== undefined && threshold > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"normalizer.js","sourceRoot":"","sources":["../src/normalizer.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAkB;IACxD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,UAAU,GAAG,IAAI,CAAA;IAErB,oBAAoB;IACpB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAA;IACjD,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACpC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IACD,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAE3B,0BAA0B;IAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,IAAI,EAAE,CAAA;IAC7D,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IACD,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAE5B,yBAAyB;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAA;IACzD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,eAAe,SAAS,IAAI,EAAE,GAAG,CAAC,CAAA;QAC3D,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"normalizer.js","sourceRoot":"","sources":["../src/normalizer.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAkB;IACxD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,UAAU,GAAG,IAAI,CAAA;IAErB,4EAA4E;IAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAA;IACjD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,IAAI,EAAE,CAAA;IAE7D,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACnB,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;YACtB,CAAC;YACD,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACtC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC;YACD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QACjB,CAAC;QACD,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC;IAED,yBAAyB;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAA;IACzD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,eAAe,SAAS,IAAI,EAAE,GAAG,CAAC,CAAA;QAC3D,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,eAAe,SAAS,CAAA"}
@@ -1,5 +1,5 @@
1
- import type { LanguagePack } from './types.js';
2
- import type { DocIndexData, QueryIndexData } from './indexer.js';
1
+ import type { LanguagePack } from "./types.js";
2
+ import type { DocIndexData, QueryIndexData } from "./indexer.js";
3
3
  export declare class Pipeline {
4
4
  private pack;
5
5
  constructor(pack: LanguagePack);
@@ -15,5 +15,5 @@ export declare class Pipeline {
15
15
  content: string;
16
16
  }>): DocIndexData;
17
17
  indexQuery(query: string): QueryIndexData;
18
- weighTerms(index: DocIndexData | QueryIndexData, type: "doc" | "query"): Record<string, any>;
18
+ weighTerms(index: DocIndexData | QueryIndexData, type: "doc" | "query"): Record<string, any> | null;
19
19
  }
package/dist/pipeline.js CHANGED
@@ -1,43 +1,66 @@
1
- import { stem } from './stemmer.js';
2
- import { removeStopwords } from './stopword_remover.js';
3
- import { lexAnalyze } from './lexical_analyzer.js';
4
- import { felig_transliterate, sera_transliterate } from './transliterator.js';
5
- import { indexDocuments, indexQuery } from './indexer.js';
6
- import { weighTerms } from './term_weighter.js';
7
- import { normalize } from './normalizer.js';
8
- import { sentenceTokenize } from './sentence_tokenizer.js';
1
+ import { stem } from "./stemmer.js";
2
+ import { removeStopwords } from "./stopword_remover.js";
3
+ import { lexAnalyze } from "./lexical_analyzer.js";
4
+ import { felig_transliterate, sera_transliterate } from "./transliterator.js";
5
+ import { indexDocuments, indexQuery } from "./indexer.js";
6
+ import { weighTerms } from "./term_weighter.js";
7
+ import { normalize } from "./normalizer.js";
8
+ import { sentenceTokenize } from "./sentence_tokenizer.js";
9
9
  export class Pipeline {
10
10
  constructor(pack) {
11
11
  this.pack = pack;
12
12
  }
13
13
  normalize(text) {
14
+ if (!text)
15
+ return "";
14
16
  return normalize(text, this.pack);
15
17
  }
16
18
  sentenceTokenize(text) {
19
+ if (!text)
20
+ return [];
17
21
  return sentenceTokenize(text, this.pack);
18
22
  }
19
23
  stem(word) {
24
+ if (!word)
25
+ return "";
20
26
  return stem(word, this.pack);
21
27
  }
22
28
  removeStopwords(corpus) {
29
+ if (!corpus)
30
+ return "";
23
31
  return removeStopwords(corpus, this.pack);
24
32
  }
25
33
  lexAnalyze(corpus) {
34
+ if (!corpus)
35
+ return "";
26
36
  return lexAnalyze(corpus, this.pack);
27
37
  }
28
38
  feligTransliterate(word, lang) {
39
+ if (!word)
40
+ return "";
29
41
  return felig_transliterate(word, lang, this.pack);
30
42
  }
43
+ // Depreciated : Not used across our toolset (just here so we can fix it later)
31
44
  seraTransliterate(word, lang) {
45
+ if (!word)
46
+ return "";
32
47
  return sera_transliterate(word, lang, this.pack);
33
48
  }
34
49
  indexDocuments(docs) {
50
+ if (!docs || docs.length === 0) {
51
+ return { corpus_size: 0, corpus_word_count: {}, words: {} };
52
+ }
35
53
  return indexDocuments(docs, this.pack);
36
54
  }
37
55
  indexQuery(query) {
56
+ if (!query) {
57
+ return { corpus_size: 0, corpus_word_count: 0, words: {} };
58
+ }
38
59
  return indexQuery(query, this.pack);
39
60
  }
40
61
  weighTerms(index, type) {
62
+ if (!index)
63
+ return null;
41
64
  return weighTerms(index, type);
42
65
  }
43
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,MAAM,OAAO,QAAQ;IACnB,YAAoB,IAAkB;QAAlB,SAAI,GAAJ,IAAI,CAAc;IAAG,CAAC;IAE1C,SAAS,CAAC,IAAY;QACpB,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IACD,eAAe,CAAC,MAAc;QAC5B,OAAO,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IACD,UAAU,CAAC,MAAc;QACvB,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IACD,kBAAkB,CAAC,IAAY,EAAE,IAAiB;QAChD,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACnD,CAAC;IACD,iBAAiB,CAAC,IAAY,EAAE,IAAiB;QAC/C,OAAO,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC;IACD,cAAc,CAAC,IAA4C;QACzD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IACD,UAAU,CAAC,KAAa;QACtB,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IACD,UAAU,CAAC,KAAoC,EAAE,IAAqB;QACpE,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,OAAO,QAAQ;IACjB,YAAoB,IAAkB;QAAlB,SAAI,GAAJ,IAAI,CAAc;IAAG,CAAC;IAE1C,SAAS,CAAC,IAAY;QAClB,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,gBAAgB,CAAC,IAAY;QACzB,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,IAAY;QACb,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,eAAe,CAAC,MAAc;QAC1B,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,OAAO,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,kBAAkB,CAAC,IAAY,EAAE,IAAiB;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,+EAA+E;IAC/E,iBAAiB,CAAC,IAAY,EAAE,IAAiB;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,cAAc,CAAC,IAA4C;QACvD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAChE,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,UAAU,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,KAAoC,EAAE,IAAqB;QAClE,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACJ"}
@@ -1,6 +1,6 @@
1
1
  import type { LanguagePack } from './types.js';
2
2
  /**
3
- *@deprecated Use {@link felig_transliterate} function instead.
3
+ * @deprecated Internal fallback only. Use {@link felig_transliterate} instead.
4
4
  */
5
5
  export declare function sera_transliterate(word: string, lang: "am" | "en", pack: LanguagePack): string;
6
6
  /**
@@ -9,8 +9,8 @@ export declare function sera_transliterate(word: string, lang: "am" | "en", pack
9
9
  * @param lang : language to transliterate form
10
10
  * @returns : a transliterated string
11
11
  *
12
- * @example{ transliterate Amharic word to English}
13
- * flig_transliterate("ወንበር","am") // returns "wenber"
12
+ * @example { transliterate Amharic word to English }
13
+ * felig_transliterate("ወንበር","am") // returns "wenber"
14
14
  */
15
15
  export declare function felig_transliterate(word: string, lang: "am" | "en", pack: LanguagePack): string;
16
16
  declare const transliterate: {
@@ -1,5 +1,20 @@
1
+ // Cache for reverse maps to ensure O(1) lookups instead of O(n) linear scans
2
+ const reverseMapCache = new WeakMap();
3
+ function getReverseMap(map) {
4
+ let reverseMap = reverseMapCache.get(map);
5
+ if (!reverseMap) {
6
+ reverseMap = {};
7
+ for (const [key, value] of Object.entries(map)) {
8
+ if (reverseMap[value] === undefined) {
9
+ reverseMap[value] = key;
10
+ }
11
+ }
12
+ reverseMapCache.set(map, reverseMap);
13
+ }
14
+ return reverseMap;
15
+ }
1
16
  /**
2
- *@deprecated Use {@link felig_transliterate} function instead.
17
+ * @deprecated Internal fallback only. Use {@link felig_transliterate} instead.
3
18
  */
4
19
  export function sera_transliterate(word, lang, pack) {
5
20
  let trans_word = "";
@@ -15,8 +30,9 @@ export function sera_transliterate(word, lang, pack) {
15
30
  else if (lang === "en") {
16
31
  let tokens = word.match(/.{1,2}/g);
17
32
  if (tokens) {
33
+ const reverseTable = getReverseMap(sera_transliteration_lookup_table);
18
34
  tokens.forEach((letter) => {
19
- let en_letter = Object.keys(sera_transliteration_lookup_table).find((key) => sera_transliteration_lookup_table[key] === letter);
35
+ const en_letter = reverseTable[letter];
20
36
  if (en_letter !== undefined) {
21
37
  trans_word += en_letter;
22
38
  }
@@ -31,8 +47,8 @@ export function sera_transliterate(word, lang, pack) {
31
47
  * @param lang : language to transliterate form
32
48
  * @returns : a transliterated string
33
49
  *
34
- * @example{ transliterate Amharic word to English}
35
- * flig_transliterate("ወንበር","am") // returns "wenber"
50
+ * @example { transliterate Amharic word to English }
51
+ * felig_transliterate("ወንበር","am") // returns "wenber"
36
52
  */
37
53
  export function felig_transliterate(word, lang, pack) {
38
54
  let trans_word = "";
@@ -50,14 +66,15 @@ export function felig_transliterate(word, lang, pack) {
50
66
  if (tokens === null) {
51
67
  return "";
52
68
  }
69
+ const reverseTable = getReverseMap(felig_transliteration_lookup_table);
53
70
  tokens.forEach((letter) => {
54
71
  if (/[^aeiou][aeiou]/i.test(letter)) {
55
72
  let am_letter = "";
56
73
  if (/[W][a]/g.test(letter)) {
57
- am_letter = Object.keys(felig_transliteration_lookup_table).find((key) => felig_transliteration_lookup_table[key] === letter.toLowerCase());
74
+ am_letter = reverseTable[letter.toLowerCase()];
58
75
  }
59
76
  else {
60
- am_letter = Object.keys(felig_transliteration_lookup_table).find((key) => felig_transliteration_lookup_table[key] === letter);
77
+ am_letter = reverseTable[letter];
61
78
  }
62
79
  if (am_letter !== undefined) {
63
80
  trans_word += am_letter;
@@ -67,7 +84,7 @@ export function felig_transliterate(word, lang, pack) {
67
84
  let ltrs = letter.split("");
68
85
  let am_letter = "";
69
86
  ltrs.forEach((ltr) => {
70
- const found = Object.keys(felig_transliteration_lookup_table).find((key) => felig_transliteration_lookup_table[key] === ltr);
87
+ const found = reverseTable[ltr];
71
88
  if (found !== undefined) {
72
89
  am_letter += found;
73
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transliterator.js","sourceRoot":"","sources":["../src/transliterator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transliterator.js","sourceRoot":"","sources":["../src/transliterator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fidel-tools/core",
3
- "version": "0.1.0",
3
+ "version": "0.1.4",
4
4
  "description": "Amharic Language Pre-processor toolkit",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",