lexora 1.0.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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/index.d.ts +8 -0
  4. package/dist/index.js +1 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/LanguageKey.d.ts +1 -0
  7. package/dist/lib/LanguageKey.js +1 -0
  8. package/dist/lib/LanguageKey.js.map +1 -0
  9. package/dist/lib/LanguagePack/English/Features.d.ts +2 -0
  10. package/dist/lib/LanguagePack/English/Features.js +1 -0
  11. package/dist/lib/LanguagePack/English/Features.js.map +1 -0
  12. package/dist/lib/LanguagePack/English/PipelineFunctions/Article.d.ts +2 -0
  13. package/dist/lib/LanguagePack/English/PipelineFunctions/Article.js +1 -0
  14. package/dist/lib/LanguagePack/English/PipelineFunctions/Article.js.map +1 -0
  15. package/dist/lib/LanguagePack/English/index.d.ts +6 -0
  16. package/dist/lib/LanguagePack/English/index.js +1 -0
  17. package/dist/lib/LanguagePack/English/index.js.map +1 -0
  18. package/dist/lib/LanguagePack/German/Features.d.ts +10 -0
  19. package/dist/lib/LanguagePack/German/Features.js +1 -0
  20. package/dist/lib/LanguagePack/German/Features.js.map +1 -0
  21. package/dist/lib/LanguagePack/German/PipelineFunctions/Article.d.ts +8 -0
  22. package/dist/lib/LanguagePack/German/PipelineFunctions/Article.js +1 -0
  23. package/dist/lib/LanguagePack/German/PipelineFunctions/Article.js.map +1 -0
  24. package/dist/lib/LanguagePack/German/index.d.ts +6 -0
  25. package/dist/lib/LanguagePack/German/index.js +1 -0
  26. package/dist/lib/LanguagePack/German/index.js.map +1 -0
  27. package/dist/lib/LanguagePack/LanguagePack.d.ts +6 -0
  28. package/dist/lib/LanguagePack/LanguagePack.js +1 -0
  29. package/dist/lib/LanguagePack/LanguagePack.js.map +1 -0
  30. package/dist/lib/LanguagePack/index.d.ts +6 -0
  31. package/dist/lib/LanguagePack/index.js +1 -0
  32. package/dist/lib/LanguagePack/index.js.map +1 -0
  33. package/dist/lib/LexoraContext.d.ts +92 -0
  34. package/dist/lib/LexoraContext.js +1 -0
  35. package/dist/lib/LexoraContext.js.map +1 -0
  36. package/dist/lib/LingoContext.d.ts +92 -0
  37. package/dist/lib/LingoContext.js +1 -0
  38. package/dist/lib/LingoContext.js.map +1 -0
  39. package/dist/lib/Parser/PlaceholderParser.d.ts +3 -0
  40. package/dist/lib/Parser/PlaceholderParser.js +1 -0
  41. package/dist/lib/Parser/PlaceholderParser.js.map +1 -0
  42. package/dist/lib/PipelineFunction/DefaultPipelinesFunctions.d.ts +2 -0
  43. package/dist/lib/PipelineFunction/DefaultPipelinesFunctions.js +1 -0
  44. package/dist/lib/PipelineFunction/DefaultPipelinesFunctions.js.map +1 -0
  45. package/dist/lib/PipelineFunction/PipelineFunction.d.ts +14 -0
  46. package/dist/lib/PipelineFunction/PipelineFunction.js +1 -0
  47. package/dist/lib/PipelineFunction/PipelineFunction.js.map +1 -0
  48. package/dist/lib/PipelineFunction/PipelineProcessor.d.ts +11 -0
  49. package/dist/lib/PipelineFunction/PipelineProcessor.js +1 -0
  50. package/dist/lib/PipelineFunction/PipelineProcessor.js.map +1 -0
  51. package/dist/lib/StringResource.d.ts +3 -0
  52. package/dist/lib/StringResource.js +1 -0
  53. package/dist/lib/StringResource.js.map +1 -0
  54. package/dist/lib/Template.d.ts +4 -0
  55. package/dist/lib/Template.js +1 -0
  56. package/dist/lib/Template.js.map +1 -0
  57. package/dist/lib/WatchableString.d.ts +11 -0
  58. package/dist/lib/WatchableString.js +1 -0
  59. package/dist/lib/WatchableString.js.map +1 -0
  60. package/package.json +46 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Ing. Luca Gian Scaringella
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # Lexora 🌍
2
+
3
+ [![Downloads](https://img.shields.io/npm/dm/lexora)](https://www.npmjs.com/package/lexora)
4
+ [![Minzipped size](https://img.shields.io/bundlephobia/minzip/lexora)](https://www.npmjs.com/package/lexora)
5
+ [![Test coverage](https://img.shields.io/badge/test%20coverage-100%20%25-brightgreen)](https://www.npmjs.com/package/lexora)
6
+
7
+ ## What is Lexora
8
+
9
+ ***Lexora*** is a lightweight TypeScript helper for managing multi-language strings with optional grammatical support.
@@ -0,0 +1,8 @@
1
+ import { LanguageKey } from "./lib/LanguageKey";
2
+ import { LanguagePacks } from "./lib/LanguagePack";
3
+ import { LanguagePack } from "./lib/LanguagePack/LanguagePack";
4
+ import { LexoraContext, TranslateCallContext } from "./lib/LexoraContext";
5
+ import { PipelineFunction } from "./lib/PipelineFunction/PipelineFunction";
6
+ import { StringResource, StringResourceMap } from "./lib/StringResource";
7
+ import { WatchableString } from "./lib/WatchableString";
8
+ export { LanguageKey, LanguagePack, LanguagePacks, LexoraContext, StringResource, StringResourceMap, PipelineFunction, WatchableString, TranslateCallContext };
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.WatchableString=exports.LexoraContext=exports.LanguagePacks=void 0;const LanguagePack_1=require("./lib/LanguagePack");Object.defineProperty(exports,"LanguagePacks",{enumerable:!0,get:function(){return LanguagePack_1.LanguagePacks}});const LexoraContext_1=require("./lib/LexoraContext");Object.defineProperty(exports,"LexoraContext",{enumerable:!0,get:function(){return LexoraContext_1.LexoraContext}});const WatchableString_1=require("./lib/WatchableString");Object.defineProperty(exports,"WatchableString",{enumerable:!0,get:function(){return WatchableString_1.WatchableString}});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,qDAAmD;AAU/C,8FAVK,4BAAa,OAUL;AARjB,uDAA0E;AAStE,8FATK,6BAAa,OASL;AANjB,2DAAwD;AAUpD,gGAVK,iCAAe,OAUL"}
@@ -0,0 +1 @@
1
+ export declare type LanguageKey = "de" | "en" | string;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageKey.js","sourceRoot":"","sources":["../../src/lib/LanguageKey.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
@@ -0,0 +1,2 @@
1
+ export declare namespace Features {
2
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Features.js","sourceRoot":"","sources":["../../../../src/lib/LanguagePack/English/Features.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { PipelineFunction } from "../../../PipelineFunction/PipelineFunction";
2
+ export declare const ArticlePipelineFunction: PipelineFunction;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ArticlePipelineFunction=void 0,exports.ArticlePipelineFunction={name:"article",process:e=>{const i=e.parameters?.[0],t=e.value?.trim();if(!t)throw new Error("article: empty noun");if("definite"===i||!i)return`the ${t}`;if("indefinite"===i){const e=t[0].toLowerCase();return`${["a","e","i","o","u"].includes(e)?"an":"a"} ${t}`}throw new Error('article: invalid type (expected "definite" | "indefinite")')}};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Article.js","sourceRoot":"","sources":["../../../../../src/lib/LanguagePack/English/PipelineFunctions/Article.ts"],"names":[],"mappings":";;;AAGa,QAAA,uBAAuB,GAAqB;IACrD,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;QAClE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAElD,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI,EAAE;YAC9B,OAAO,OAAO,IAAI,EAAE,CAAC;SACxB;QACD,IAAI,IAAI,KAAK,YAAY,EAAE;YACvB,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAEzC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1D,OAAO,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;SAC/B;QACD,MAAM,IAAI,KAAK,CACX,4DAA4D,CAC/D,CAAC;IACN,CAAC;CACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { LanguagePack } from "./../LanguagePack";
2
+ import { Features as EnglishFeatures } from "./Features";
3
+ export declare namespace EnglishLanguagePack {
4
+ export import Features = EnglishFeatures;
5
+ const pack: LanguagePack;
6
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.EnglishLanguagePack=void 0;const Article_1=require("./PipelineFunctions/Article");var EnglishLanguagePack;!function(e){e.pack={language:"en",pipelineFunctions:[Article_1.ArticlePipelineFunction]}}(EnglishLanguagePack=exports.EnglishLanguagePack||(exports.EnglishLanguagePack={}));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/LanguagePack/English/index.ts"],"names":[],"mappings":";;;AACA,yDAAsE;AAGtE,IAAiB,mBAAmB,CAMnC;AAND,WAAiB,mBAAmB;IAErB,wBAAI,GAAiB;QAChC,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,CAAC,iCAAuB,CAAC;KAC7C,CAAC;AACJ,CAAC,EANgB,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAMnC"}
@@ -0,0 +1,10 @@
1
+ export declare namespace Features {
2
+ interface NounFeatures {
3
+ gender: GrammaticalGender;
4
+ }
5
+ enum GrammaticalGender {
6
+ Masculine = "masculine",
7
+ Feminine = "feminine",
8
+ Neuter = "neuter"
9
+ }
10
+ }
@@ -0,0 +1 @@
1
+ "use strict";var Features;Object.defineProperty(exports,"__esModule",{value:!0}),exports.Features=void 0,function(e){let t;!function(e){e.Masculine="masculine",e.Feminine="feminine",e.Neuter="neuter"}(t=e.GrammaticalGender||(e.GrammaticalGender={}))}(Features=exports.Features||(exports.Features={}));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Features.js","sourceRoot":"","sources":["../../../../src/lib/LanguagePack/German/Features.ts"],"names":[],"mappings":";;;AAAA,IAAiB,QAAQ,CASxB;AATD,WAAiB,QAAQ;IAIrB,IAAY,iBAIX;IAJD,WAAY,iBAAiB;QACzB,4CAAuB,CAAA;QACvB,0CAAqB,CAAA;QACrB,sCAAiB,CAAA;IACrB,CAAC,EAJW,iBAAiB,GAAjB,0BAAiB,KAAjB,0BAAiB,QAI5B;AACL,CAAC,EATgB,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QASxB"}
@@ -0,0 +1,8 @@
1
+ import { PipelineFunction } from "../../../PipelineFunction/PipelineFunction";
2
+ export declare enum DeGrammaticalCase {
3
+ Nominative = "nominative",
4
+ Accusative = "accusative",
5
+ Dative = "dative",
6
+ Genitive = "genitive"
7
+ }
8
+ export declare const ArticlePipelineFunction: PipelineFunction;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ArticlePipelineFunction=exports.DeGrammaticalCase=void 0;const Features_1=require("../Features");var DeGrammaticalCase;function isDeGrammaticalCase(e){return e===DeGrammaticalCase.Nominative||e===DeGrammaticalCase.Accusative||e===DeGrammaticalCase.Dative||e===DeGrammaticalCase.Genitive}!function(e){e.Nominative="nominative",e.Accusative="accusative",e.Dative="dative",e.Genitive="genitive"}(DeGrammaticalCase=exports.DeGrammaticalCase||(exports.DeGrammaticalCase={}));const DEFINITE_ARTICLES={[DeGrammaticalCase.Nominative]:{[Features_1.Features.GrammaticalGender.Masculine]:"der",[Features_1.Features.GrammaticalGender.Feminine]:"die",[Features_1.Features.GrammaticalGender.Neuter]:"das"},[DeGrammaticalCase.Accusative]:{[Features_1.Features.GrammaticalGender.Masculine]:"den",[Features_1.Features.GrammaticalGender.Feminine]:"die",[Features_1.Features.GrammaticalGender.Neuter]:"das"},[DeGrammaticalCase.Dative]:{[Features_1.Features.GrammaticalGender.Masculine]:"dem",[Features_1.Features.GrammaticalGender.Feminine]:"der",[Features_1.Features.GrammaticalGender.Neuter]:"dem"},[DeGrammaticalCase.Genitive]:{[Features_1.Features.GrammaticalGender.Masculine]:"des",[Features_1.Features.GrammaticalGender.Feminine]:"der",[Features_1.Features.GrammaticalGender.Neuter]:"des"}};exports.ArticlePipelineFunction={name:"article",process:e=>{const a=e.parameters?.[0];if(!a)throw new Error(`article: missing parameter[0] grammatical case (expected one of: ${Object.values(DeGrammaticalCase).join(", ")})`);if(!isDeGrammaticalCase(a))throw new Error(`article: invalid grammatical case "${a}" (expected one of: ${Object.values(DeGrammaticalCase).join(", ")})`);const r=e.stringResource?.metadata?.gender;if(r!==Features_1.Features.GrammaticalGender.Masculine&&r!==Features_1.Features.GrammaticalGender.Feminine&&r!==Features_1.Features.GrammaticalGender.Neuter)throw new Error(`article: missing/invalid gender in stringResource.metadata.gender (expected: "${Features_1.Features.GrammaticalGender.Masculine}" | "${Features_1.Features.GrammaticalGender.Feminine}" | "${Features_1.Features.GrammaticalGender.Neuter}")`);const t=DEFINITE_ARTICLES[a][r],i=e.value??e.stringResource?.value??"";if(!i.trim())throw new Error("article: empty noun value in context");return`${t} ${i}`}};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Article.js","sourceRoot":"","sources":["../../../../../src/lib/LanguagePack/German/PipelineFunctions/Article.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { LanguagePack } from "./../LanguagePack";
2
+ import { Features as GermanFeautures } from "./Features";
3
+ export declare namespace GermanLanguagePack {
4
+ export import Features = GermanFeautures;
5
+ const pack: LanguagePack;
6
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.GermanLanguagePack=void 0;const Article_1=require("./PipelineFunctions/Article"),Features_1=require("./Features");var GermanLanguagePack;!function(e){e.Features=Features_1.Features,e.pack={language:"de",pipelineFunctions:[Article_1.ArticlePipelineFunction]}}(GermanLanguagePack=exports.GermanLanguagePack||(exports.GermanLanguagePack={}));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/LanguagePack/German/index.ts"],"names":[],"mappings":";;;AACA,yDAAsE;AACtE,yCAAuD;AAEvD,IAAiB,kBAAkB,CAMlC;AAND,WAAiB,kBAAkB;IACnB,2BAAQ,GAAG,mBAAe,CAAC;IAC5B,uBAAI,GAAiB;QAChC,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,CAAC,iCAAuB,CAAC;KAC7C,CAAC;AACJ,CAAC,EANgB,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAMlC"}
@@ -0,0 +1,6 @@
1
+ import { LanguageKey } from "../LanguageKey";
2
+ import { PipelineFunction } from "../PipelineFunction/PipelineFunction";
3
+ export interface LanguagePack {
4
+ language: LanguageKey;
5
+ pipelineFunctions: PipelineFunction[];
6
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguagePack.js","sourceRoot":"","sources":["../../../src/lib/LanguagePack/LanguagePack.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { EnglishLanguagePack } from "./English";
2
+ import { GermanLanguagePack } from "./German";
3
+ export declare namespace LanguagePacks {
4
+ const German: typeof GermanLanguagePack;
5
+ const English: typeof EnglishLanguagePack;
6
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LanguagePacks=void 0;const English_1=require("./English"),German_1=require("./German");var LanguagePacks;!function(a){a.German=German_1.GermanLanguagePack,a.English=English_1.EnglishLanguagePack}(LanguagePacks=exports.LanguagePacks||(exports.LanguagePacks={}));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/LanguagePack/index.ts"],"names":[],"mappings":";;;AACA,uCAAgD;AAChD,qCAA8C;AAE9C,IAAiB,aAAa,CAG7B;AAHD,WAAiB,aAAa;IACb,oBAAM,GAAG,2BAAkB,CAAC;IAC5B,qBAAO,GAAG,6BAAmB,CAAC;AAC/C,CAAC,EAHgB,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAG7B"}
@@ -0,0 +1,92 @@
1
+ import { LanguageKey } from "./LanguageKey";
2
+ import { LanguagePack } from "./LanguagePack/LanguagePack";
3
+ import { PipelineFunction } from "./PipelineFunction/PipelineFunction";
4
+ import { StringResource, StringResourceMap } from "./StringResource";
5
+ import EventEmitter from "emitix";
6
+ import { WatchableString } from "./WatchableString";
7
+ export declare type TranslateCallContext = Record<string, StringResourceMap | StringResource>;
8
+ interface LexoraContextOptions {
9
+ ignoreMissingKeys?: boolean;
10
+ defaultValueForMissingKeys?: string;
11
+ skipFailedPipelineFunctions?: boolean;
12
+ ignoreMissingPipelineFunctions?: boolean;
13
+ }
14
+ export declare class LexoraContext extends EventEmitter.Protected<{
15
+ update: [];
16
+ }> {
17
+ private _options;
18
+ private _defaultPipelineFunctions;
19
+ private _currentLanguage;
20
+ private _currentPipelineFunctionsMap;
21
+ private _languagePacks;
22
+ private _stringResources;
23
+ private _watchableStrings;
24
+ private _finalizeWatchableStrings;
25
+ constructor(options?: LexoraContextOptions);
26
+ private _trackWatchableString;
27
+ static createWithDefaults(options?: LexoraContextOptions): LexoraContext;
28
+ /**
29
+ * Loads default pipeline function or functions that are applied to all translations.
30
+ * @param pipelineFunction
31
+ */
32
+ loadDefaultPipelineFunction(pipelineFunction: PipelineFunction[] | PipelineFunction): void;
33
+ /**
34
+ * Loads a language pack or multiple language packs.
35
+ * @param languagePack
36
+ */
37
+ loadLanguagePack(languagePack: LanguagePack | LanguagePack[]): void;
38
+ /**
39
+ * Loads a map of string resources for a specific language.
40
+ * @example
41
+ * Language: "en"
42
+ * {
43
+ * "greeting": "Hello",
44
+ * "farewell": "Goodbye",
45
+ * //Substring resource map
46
+ * "gameCategory.adventure": "Adventure",
47
+ * }
48
+ * @param language
49
+ * @param map
50
+ */
51
+ loadLanguageStringResources(language: LanguageKey, map: Record<string, StringResource>): void;
52
+ /**
53
+ * Loads a map of string resource translations for a specific key.
54
+ * @example
55
+ * Key: "gameCategory.adventure"
56
+ * {
57
+ * "en": "Adventure",
58
+ * "de": "Abenteur",
59
+ * }
60
+ * @param key
61
+ * @param map
62
+ */
63
+ loadStringResourceTranslations(key: string, map: StringResourceMap): void;
64
+ /**
65
+ * Loads multiple string resource translations for multiple keys and languages.
66
+ * @example
67
+ * {
68
+ * "gameCategory.adventure": {
69
+ * "en": "Adventure",
70
+ * "de": "Abenteur",
71
+ * },
72
+ * "gameCategory.horror": {
73
+ * "en": "Horror",
74
+ * "de": "Horror",
75
+ * },
76
+ * }
77
+ * @param resources
78
+ */
79
+ loadMultipleStringResourceTranslations(resources: Record<string, StringResourceMap>): void;
80
+ /**
81
+ * Set the current language.
82
+ */
83
+ set language(language: LanguageKey);
84
+ private _updateCurrentLanguagePipelineFunctions;
85
+ private _processStringResource;
86
+ private _resolveKeyFromCallContext;
87
+ get(key: string, context?: TranslateCallContext): string;
88
+ getWatch(key: string, context?: TranslateCallContext): WatchableString<LexoraContext>;
89
+ translate(template: StringResourceMap | string, context?: TranslateCallContext): string;
90
+ translateWatch(template: StringResourceMap | string, context?: TranslateCallContext): WatchableString<LexoraContext>;
91
+ }
92
+ export {};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LexoraContext=void 0;const LanguagePack_1=require("./LanguagePack"),DefaultPipelinesFunctions_1=require("./PipelineFunction/DefaultPipelinesFunctions"),emitix_1=require("emitix"),WatchableString_1=require("./WatchableString"),PlaceholderParser_1=require("./Parser/PlaceholderParser"),PipelineProcessor_1=require("./PipelineFunction/PipelineProcessor");class LexoraContext extends emitix_1.default.Protected{constructor(e){super(),this._options={skipFailedPipelineFunctions:!1,ignoreMissingKeys:!0,ignoreMissingPipelineFunctions:!1,defaultValueForMissingKeys:"?"},this._defaultPipelineFunctions=[],this._currentLanguage="en",this._currentPipelineFunctionsMap={},this._languagePacks={},this._stringResources={},this._watchableStrings=new Set,this._finalizeWatchableStrings=new FinalizationRegistry((e=>{this._watchableStrings.delete(e)})),e&&(this._options={...this._options,...e}),this.on("update",(()=>{for(const e of this._watchableStrings){const t=e.deref();t?t._update(this):this._watchableStrings.delete(e)}}))}_trackWatchableString(e){const t=new WeakRef(e);this._watchableStrings.add(t),this._finalizeWatchableStrings.register(e,t)}static createWithDefaults(e){const t=new LexoraContext(e);return t.loadDefaultPipelineFunction(Object.values(DefaultPipelinesFunctions_1.DefaultPipelineFunctions)),t.loadLanguagePack(Object.values(LanguagePack_1.LanguagePacks).map((e=>e.pack))),t}loadDefaultPipelineFunction(e){Array.isArray(e)?this._defaultPipelineFunctions.push(...e):this._defaultPipelineFunctions.push(e),this._updateCurrentLanguagePipelineFunctions(),this.emit("update")}loadLanguagePack(e){Array.isArray(e)?e.forEach((e=>{this._languagePacks[e.language]=e})):this._languagePacks[e.language]=e,this._updateCurrentLanguagePipelineFunctions(),this.emit("update")}loadLanguageStringResources(e,t){this._stringResources[e]={...this._stringResources[e],...t},this.emit("update")}loadStringResourceTranslations(e,t){for(const i in t)this._stringResources[i]={...this._stringResources[i],[e]:t[i]};this.emit("update")}loadMultipleStringResourceTranslations(e){for(const t in e){const i=e[t];for(const e in i)this._stringResources[e]={...this._stringResources[e],[t]:i[e]}}this.emit("update")}set language(e){const t=this._currentLanguage;this._currentLanguage=e,t!==e&&(this._updateCurrentLanguagePipelineFunctions(),this.emit("update"))}_updateCurrentLanguagePipelineFunctions(){const e={};for(const t of this._defaultPipelineFunctions)e[t.name]=t.process;const t=this._languagePacks[this._currentLanguage];if(t)for(const i of t.pipelineFunctions)e[i.name]=i.process;this._currentPipelineFunctionsMap=e}_processStringResource(e,t,i){const n="string"==typeof e?e:e[0];if(-1===n.indexOf("{{"))return n;const s=this._stringResources[this._currentLanguage]??{};return(0,PlaceholderParser_1.replacePlaceholdersFast)(n,((e,n)=>{if(i.includes(e))throw new Error(`Circular reference detected for key '${e}' in call path '${[...i,e].join("->")}'`);let r=this._resolveKeyFromCallContext(e,t)??s[e];if(null==r){if(this._options.ignoreMissingKeys)return this._options.defaultValueForMissingKeys??"?";throw new Error(`Can not resolve key '${e}' with language '${this._currentLanguage}'`)}const a=this._processStringResource(r,t,[...i,e]);return 0===n.length?a:(0,PipelineProcessor_1.processPipeline)(a,r,this._currentPipelineFunctionsMap,n,this._options)}))}_resolveKeyFromCallContext(e,t){const i=t[e];return null==i?null:"string"==typeof i||Array.isArray(i)?i:i[this._currentLanguage]}get(e,t={}){let i=(this._stringResources[this._currentLanguage]??{})[e];if(null==i){if(this._options.ignoreMissingKeys)return this._options.defaultValueForMissingKeys??"?";throw new Error(`Can not resolve key '${e}' with language '${this._currentLanguage}'`)}return this._processStringResource(i,t,[e])}getWatch(e,t={}){const i={...t},n=t=>t.get(e,i),s=new WatchableString_1.WatchableString(n(this),n);return this._trackWatchableString(s),s}translate(e,t={}){let i;if("object"==typeof e){if(i=e[this._currentLanguage],null==i){if(this._options.ignoreMissingKeys)return this._options.defaultValueForMissingKeys??"?";throw new Error(`Can not resolve template for language '${this._currentLanguage}'`)}}else i=e;return this._processStringResource(i,t,["[template]"])}translateWatch(e,t={}){const i={...t},n="string"==typeof e?e:{...e},s=e=>e.translate(n,i),r=new WatchableString_1.WatchableString(s(this),s);return this._trackWatchableString(r),r}}exports.LexoraContext=LexoraContext;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LexoraContext.js","sourceRoot":"","sources":["../../src/lib/LexoraContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { LanguageKey } from "./LanguageKey";
2
+ import { LanguagePack } from "./LanguagePack/LanguagePack";
3
+ import { PipelineFunction } from "./PipelineFunction/PipelineFunction";
4
+ import { StringResource, StringResourceMap } from "./StringResource";
5
+ import EventEmitter from "emitix";
6
+ import { WatchableString } from "./WatchableString";
7
+ export declare type TranslateCallContext = Record<string, StringResourceMap | StringResource>;
8
+ interface LingoContextOptions {
9
+ ignoreMissingKeys?: boolean;
10
+ defaultValueForMissingKeys?: string;
11
+ skipFailedPipelineFunctions?: boolean;
12
+ ignoreMissingPipelineFunctions?: boolean;
13
+ }
14
+ export declare class LingoContext extends EventEmitter.Protected<{
15
+ update: [];
16
+ }> {
17
+ private _options;
18
+ private _defaultPipelineFunctions;
19
+ private _currentLanguage;
20
+ private _currentPipelineFunctionsMap;
21
+ private _languagePacks;
22
+ private _stringResources;
23
+ private _watchableStrings;
24
+ private _finalizeWatchableStrings;
25
+ constructor(options?: LingoContextOptions);
26
+ private _trackWatchableString;
27
+ static createWithDefaults(options?: LingoContextOptions): LingoContext;
28
+ /**
29
+ * Loads default pipeline function or functions that are applied to all translations.
30
+ * @param pipelineFunction
31
+ */
32
+ loadDefaultPipelineFunction(pipelineFunction: PipelineFunction[] | PipelineFunction): void;
33
+ /**
34
+ * Loads a language pack or multiple language packs.
35
+ * @param languagePack
36
+ */
37
+ loadLanguagePack(languagePack: LanguagePack | LanguagePack[]): void;
38
+ /**
39
+ * Loads a map of string resources for a specific language.
40
+ * @example
41
+ * Language: "en"
42
+ * {
43
+ * "greeting": "Hello",
44
+ * "farewell": "Goodbye",
45
+ * //Substring resource map
46
+ * "gameCategory.adventure": "Adventure",
47
+ * }
48
+ * @param language
49
+ * @param map
50
+ */
51
+ loadLanguageStringResources(language: LanguageKey, map: Record<string, StringResource>): void;
52
+ /**
53
+ * Loads a map of string resource translations for a specific key.
54
+ * @example
55
+ * Key: "gameCategory.adventure"
56
+ * {
57
+ * "en": "Adventure",
58
+ * "de": "Abenteur",
59
+ * }
60
+ * @param key
61
+ * @param map
62
+ */
63
+ loadStringResourceTranslations(key: string, map: StringResourceMap): void;
64
+ /**
65
+ * Loads multiple string resource translations for multiple keys and languages.
66
+ * @example
67
+ * {
68
+ * "gameCategory.adventure": {
69
+ * "en": "Adventure",
70
+ * "de": "Abenteur",
71
+ * },
72
+ * "gameCategory.horror": {
73
+ * "en": "Horror",
74
+ * "de": "Horror",
75
+ * },
76
+ * }
77
+ * @param resources
78
+ */
79
+ loadMultipleStringResourceTranslations(resources: Record<string, StringResourceMap>): void;
80
+ /**
81
+ * Set the current language.
82
+ */
83
+ set language(language: LanguageKey);
84
+ private _updateCurrentLanguagePipelineFunctions;
85
+ private _processStringResource;
86
+ private _resolveKeyFromCallContext;
87
+ get(key: string, context?: TranslateCallContext): string;
88
+ getWatch(key: string, context?: TranslateCallContext): WatchableString<LingoContext>;
89
+ translate(template: StringResourceMap | string, context?: TranslateCallContext): string;
90
+ translateWatch(template: StringResourceMap | string, context?: TranslateCallContext): WatchableString<LingoContext>;
91
+ }
92
+ export {};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LingoContext=void 0;const LanguagePack_1=require("./LanguagePack"),DefaultPipelinesFunctions_1=require("./PipelineFunction/DefaultPipelinesFunctions"),emitix_1=require("emitix"),WatchableString_1=require("./WatchableString"),PlaceholderParser_1=require("./Parser/PlaceholderParser"),PipelineProcessor_1=require("./PipelineFunction/PipelineProcessor");class LingoContext extends emitix_1.default.Protected{constructor(e){super(),this._options={skipFailedPipelineFunctions:!1,ignoreMissingKeys:!0,ignoreMissingPipelineFunctions:!1,defaultValueForMissingKeys:"?"},this._defaultPipelineFunctions=[],this._currentLanguage="en",this._currentPipelineFunctionsMap={},this._languagePacks={},this._stringResources={},this._watchableStrings=new Set,this._finalizeWatchableStrings=new FinalizationRegistry((e=>{this._watchableStrings.delete(e)})),e&&(this._options={...this._options,...e}),this.on("update",(()=>{for(const e of this._watchableStrings){const t=e.deref();t?t._update(this):this._watchableStrings.delete(e)}}))}_trackWatchableString(e){const t=new WeakRef(e);this._watchableStrings.add(t),this._finalizeWatchableStrings.register(e,t)}static createWithDefaults(e){const t=new LingoContext(e);return t.loadDefaultPipelineFunction(Object.values(DefaultPipelinesFunctions_1.DefaultPipelineFunctions)),t.loadLanguagePack(Object.values(LanguagePack_1.LanguagePacks).map((e=>e.pack))),t}loadDefaultPipelineFunction(e){Array.isArray(e)?this._defaultPipelineFunctions.push(...e):this._defaultPipelineFunctions.push(e),this._updateCurrentLanguagePipelineFunctions(),this.emit("update")}loadLanguagePack(e){Array.isArray(e)?e.forEach((e=>{this._languagePacks[e.language]=e})):this._languagePacks[e.language]=e,this._updateCurrentLanguagePipelineFunctions(),this.emit("update")}loadLanguageStringResources(e,t){this._stringResources[e]={...this._stringResources[e],...t},this.emit("update")}loadStringResourceTranslations(e,t){for(const i in t)this._stringResources[i]={...this._stringResources[i],[e]:t[i]};this.emit("update")}loadMultipleStringResourceTranslations(e){for(const t in e){const i=e[t];for(const e in i)this._stringResources[e]={...this._stringResources[e],[t]:i[e]}}this.emit("update")}set language(e){const t=this._currentLanguage;this._currentLanguage=e,t!==e&&(this._updateCurrentLanguagePipelineFunctions(),this.emit("update"))}_updateCurrentLanguagePipelineFunctions(){const e={};for(const t of this._defaultPipelineFunctions)e[t.name]=t.process;const t=this._languagePacks[this._currentLanguage];if(t)for(const i of t.pipelineFunctions)e[i.name]=i.process;this._currentPipelineFunctionsMap=e}_processStringResource(e,t,i){const n="string"==typeof e?e:e[0];if(-1===n.indexOf("{{"))return n;const s=this._stringResources[this._currentLanguage]??{};return(0,PlaceholderParser_1.replacePlaceholdersFast)(n,((e,n)=>{if(i.includes(e))throw new Error(`Circular reference detected for key '${e}' in call path '${[...i,e].join("->")}'`);let r=this._resolveKeyFromCallContext(e,t)??s[e];if(null==r){if(this._options.ignoreMissingKeys)return this._options.defaultValueForMissingKeys??"?";throw new Error(`Can not resolve key '${e}' with language '${this._currentLanguage}'`)}const a=this._processStringResource(r,t,[...i,e]);return 0===n.length?a:(0,PipelineProcessor_1.processPipeline)(a,r,this._currentPipelineFunctionsMap,n,this._options)}))}_resolveKeyFromCallContext(e,t){const i=t[e];return null==i?null:"string"==typeof i||Array.isArray(i)?i:i[this._currentLanguage]}get(e,t={}){let i=(this._stringResources[this._currentLanguage]??{})[e];if(null==i){if(this._options.ignoreMissingKeys)return this._options.defaultValueForMissingKeys??"?";throw new Error(`Can not resolve key '${e}' with language '${this._currentLanguage}'`)}return this._processStringResource(i,t,[e])}getWatch(e,t={}){const i={...t},n=t=>t.get(e,i),s=new WatchableString_1.WatchableString(n(this),n);return this._trackWatchableString(s),s}translate(e,t={}){let i;if("object"==typeof e){if(i=e[this._currentLanguage],null==i){if(this._options.ignoreMissingKeys)return this._options.defaultValueForMissingKeys??"?";throw new Error(`Can not resolve template for language '${this._currentLanguage}'`)}}else i=e;return this._processStringResource(i,t,["[template]"])}translateWatch(e,t={}){const i={...t},n="string"==typeof e?e:{...e},s=e=>e.translate(n,i),r=new WatchableString_1.WatchableString(s(this),s);return this._trackWatchableString(r),r}}exports.LingoContext=LingoContext;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LingoContext.js","sourceRoot":"","sources":["../../src/lib/LingoContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { PipelineFunctionCall } from "../PipelineFunction/PipelineProcessor";
2
+ export declare type PlaceholderResolver = (key: string, pipelines: PipelineFunctionCall[], raw: string) => string;
3
+ export declare function replacePlaceholdersFast(input: string, resolver: PlaceholderResolver): string;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.replacePlaceholdersFast=void 0;const KEY_FORBIDDEN=/->|\(|\)|,|\{\{|\}\}/;function isWs(e){return" "===e||"\n"===e||"\r"===e||"\t"===e}function isNameChar(e){const n=e.charCodeAt(0);return n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122||"_"===e||"-"===e}function findClosingParen(e,n){let t=n,r=null;for(;t<e.length;){const n=e[t];if(r){if("\\"===n){t+=2;continue}if(n===r){r=null,t++;continue}t++}else if("'"!==n&&'"'!==n){if(")"===n)return t;t++}else r=n,t++}return-1}function splitArgsQuoted(e){const n=[];let t=0;const r=()=>{for(;t<e.length&&isWs(e[t]);)t++},s=()=>{const n=t;for(;t<e.length&&","!==e[t];)t++;let r=n,s=t;for(;r<s&&isWs(e[r]);)r++;for(;s>r&&isWs(e[s-1]);)s--;return e.slice(r,s)},i=n=>{t++;let r="";for(;t<e.length;){const s=e[t];if("\\"!==s){if(s===n)return t++,r;r+=s,t++}else{const n=e[t+1];if(null!=n){r+=n,t+=2;continue}t++}}throw new Error("Unterminated quoted parameter")};for(;t<e.length&&(r(),!(t>=e.length));){let o="";const l=e[t];"'"===l||'"'===l?(o=i(l),r()):o=s(),o.length>0&&n.push(o),r(),","===e[t]&&t++}return n}function parseInnerFast(e){let n=0;const t=()=>{for(;n<e.length&&isWs(e[n]);)n++},r=(()=>{t();const r=n;for(;n<e.length&&!isWs(e[n])&&("-"!==e[n]||">"!==e[n+1]);)n++;return e.slice(r,n)})().trim();if(!r)throw new Error("Missing key");if(KEY_FORBIDDEN.test(r))throw new Error("Invalid key");const s=[];for(;t(),"-"===e[n]&&">"===e[n+1];){n+=2,t();const r=n;for(;n<e.length&&isNameChar(e[n]);)n++;const i=e.slice(r,n);if(!i)throw new Error("Missing pipeline name");t(),t();let o=[];if("("===e[n]){n++;const t=n,r=findClosingParen(e,n);if(-1===r)throw new Error("Missing ')'");o=splitArgsQuoted(e.slice(t,r)),n=r+1}s.push({name:i,params:o})}if(t(),n<e.length&&e.slice(n).trim())throw new Error("Unexpected content");return{key:r,pipelines:s}}function replacePlaceholdersFast(e,n){let t="",r=0;for(;r<e.length;){const s=e.indexOf("{{",r);if(-1===s){t+=e.slice(r);break}t+=e.slice(r,s);const i=e.indexOf("}}",s+2);if(-1===i){t+=e.slice(s);break}const o=e.slice(s,i+2),l=e.slice(s+2,i);let c;const{key:f,pipelines:a}=parseInnerFast(l);c=n(f,a,o),t+=c,r=i+2}return t}exports.replacePlaceholdersFast=replacePlaceholdersFast;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaceholderParser.js","sourceRoot":"","sources":["../../../src/lib/Parser/PlaceholderParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { PipelineFunction } from "./PipelineFunction";
2
+ export declare const DefaultPipelineFunctions: Record<string, PipelineFunction>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DefaultPipelineFunctions=void 0,exports.DefaultPipelineFunctions={upper:{name:"upper",process:e=>e.value.toUpperCase()},lower:{name:"lower",process:e=>e.value.toLowerCase()},capitalize:{name:"capitalize",process:e=>e.value?e.value.charAt(0).toUpperCase()+e.value.slice(1):e.value},trim:{name:"trim",process:e=>e.value.trim()},prefix:{name:"prefix",process:e=>(e.parameters?.[0]??"")+e.value},suffix:{name:"suffix",process:e=>{const r=e.parameters?.[0]??"";return e.value+r}}};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultPipelinesFunctions.js","sourceRoot":"","sources":["../../../src/lib/PipelineFunction/DefaultPipelinesFunctions.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAqC;IACtE,KAAK,EAAE;QACH,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACjB,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,CAAC;KACJ;IAED,KAAK,EAAE;QACH,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACjB,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,CAAC;KACJ;IAED,UAAU,EAAE;QACR,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC;YACzC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;KACJ;IAED,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACjB,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;KACJ;IAED,MAAM,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACjB,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAClC,CAAC;KACJ;IAED,MAAM,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACjB,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;QAClC,CAAC;KACJ;CAEJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface PipelineProcessContext {
2
+ value: string;
3
+ parameters: string[];
4
+ stringResource: {
5
+ value: string;
6
+ metadata: Record<string, any>;
7
+ };
8
+ }
9
+ export declare type PipelineProcessFunction = (context: PipelineProcessContext) => string;
10
+ export interface PipelineFunction {
11
+ name: string;
12
+ process: PipelineProcessFunction;
13
+ }
14
+ export declare type PipelineFunctionsMap = Record<string, PipelineProcessFunction>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PipelineFunction.js","sourceRoot":"","sources":["../../../src/lib/PipelineFunction/PipelineFunction.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { StringResource } from "../StringResource";
2
+ import { PipelineFunctionsMap } from "./PipelineFunction";
3
+ export declare type PipelineFunctionCall = {
4
+ name: string;
5
+ params: string[];
6
+ };
7
+ export interface PipelineProcessOptions {
8
+ skipFailedPipelineFunctions?: boolean;
9
+ ignoreMissingPipelineFunctions?: boolean;
10
+ }
11
+ export declare function processPipeline(value: string, originalStringResource: StringResource, pipelineFunctionsMap: PipelineFunctionsMap, pipelineFunctionCalls?: PipelineFunctionCall[], options?: PipelineProcessOptions): string;
@@ -0,0 +1 @@
1
+ "use strict";function processPipeline(e,n,i,t=[],o){const r="string"==typeof n?n:n[0];if(0===t.length)return r;const s="string"==typeof n?{}:n[1]??{},c=Object.freeze({value:r,metadata:s});let p=e;for(const e of t){const n=i[e.name];if(!n){if(o?.ignoreMissingPipelineFunctions)continue;throw new Error(`Pipeline function '${e.name}' not found`)}try{p=n({value:p,parameters:e.params,stringResource:c})}catch(e){if(o?.skipFailedPipelineFunctions)continue;throw e}}return p}Object.defineProperty(exports,"__esModule",{value:!0}),exports.processPipeline=void 0,exports.processPipeline=processPipeline;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PipelineProcessor.js","sourceRoot":"","sources":["../../../src/lib/PipelineFunction/PipelineProcessor.ts"],"names":[],"mappings":";;;AAUA,SAAgB,eAAe,CAAC,KAAa,EAAE,sBAAsC,EAAE,oBAA0C,EAAE,wBAAgD,EAAE,EAAE,OAAgC;IACnN,MAAM,mBAAmB,GAAG,OAAO,sBAAsB,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC5H,IAAG,qBAAqB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,mBAAmB,CAAC;IAClE,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjH,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;QACxC,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,sBAAsB;KACnC,CAAC,CAAC;IAEH,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,KAAI,MAAM,oBAAoB,IAAI,qBAAqB,EAAE;QACrD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACzE,IAAG,CAAC,gBAAgB,EAAE;YAClB,IAAG,OAAO,EAAE,8BAA8B;gBAAE,SAAS;;gBAChD,MAAM,IAAI,KAAK,CAAC,sBAAsB,oBAAoB,CAAC,IAAI,aAAa,CAAC,CAAC;SACtF;QACD,IAAI;YACA,YAAY,GAAG,gBAAgB,CAAC;gBAC5B,KAAK,EAAE,YAAY;gBACnB,UAAU,EAAE,oBAAoB,CAAC,MAAM;gBACvC,cAAc,EAAE,qBAAqB;aACxC,CAAC,CAAC;SACN;QACD,OAAO,GAAG,EAAE;YACR,IAAG,OAAO,EAAE,2BAA2B;gBAAE,SAAS;;gBAC7C,MAAM,GAAG,CAAC;SAClB;KACJ;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AA9BD,0CA8BC"}
@@ -0,0 +1,3 @@
1
+ import { LanguageKey } from "./LanguageKey";
2
+ export declare type StringResource = string | [string, Record<string, any>];
3
+ export declare type StringResourceMap = Record<LanguageKey, StringResource>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringResource.js","sourceRoot":"","sources":["../../src/lib/StringResource.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
@@ -0,0 +1,4 @@
1
+ /***
2
+ * Returns a placeholder for a template.
3
+ */
4
+ export declare function ph(name: string, ...args: (number | string)[]): string;
@@ -0,0 +1 @@
1
+ "use strict";function ph(e,...t){return`{{${e}${t.length>0?"("+t.map((e=>JSON.stringify(e))).join(",")+")":""}}}`}Object.defineProperty(exports,"__esModule",{value:!0}),exports.ph=void 0,exports.ph=ph;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Template.js","sourceRoot":"","sources":["../../src/lib/Template.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;GAEG;AACH,SAAgB,EAAE,CAAC,IAAY,EAAE,GAAG,IAAyB;IACzD,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AAC3G,CAAC;AAFD,gBAEC"}
@@ -0,0 +1,11 @@
1
+ import { EventEmitter } from "emitix";
2
+ import { LexoraContext } from "./LexoraContext";
3
+ export declare class WatchableString<T = LexoraContext> extends EventEmitter.Protected<{
4
+ update: [string];
5
+ error: [Error];
6
+ }> {
7
+ private _value;
8
+ private _updater;
9
+ constructor(value: string, updater: (context: T) => string);
10
+ get value(): string;
11
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.WatchableString=void 0;const emitix_1=require("emitix");class WatchableString extends emitix_1.EventEmitter.Protected{constructor(t,e){super(),this._value=t,this._updater=e}_update(t){try{const e=this._updater(t);e!==this._value&&(this._value=e,this.emit("update",this._value))}catch(t){this.emit("error",t instanceof Error?t:new Error(String(t)))}}get value(){return this._value}}exports.WatchableString=WatchableString;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WatchableString.js","sourceRoot":"","sources":["../../src/lib/WatchableString.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAGtC,MAAa,eAAmC,SAAQ,qBAAY,CAAC,SAGnE;IAIE,YAAY,KAAa,EAAE,OAA+B;QACtD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAU;QACd,IAAI;YACA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,EAAE;gBAC1B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACpC;SACJ;QACD,OAAO,KAAK,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACjF;IACL,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAhCD,0CAgCC"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "lexora",
3
+ "version": "1.0.0",
4
+ "description": "A lightweight TypeScript helper for managing multi-language strings with optional grammatical support.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "prepublishOnly": "npm run build",
9
+ "start": "node dist/index.js",
10
+ "build": "gulp compile",
11
+ "test": "nyc --reporter=html --reporter=text mocha --exit -r ts-node/register test/**/*.ts"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/LucaCode/lingo.git"
16
+ },
17
+ "author": {
18
+ "name": "Ing. Luca Gian Scaringella",
19
+ "email": "lucacode1@gmail.com"
20
+ },
21
+ "files": [
22
+ "dist/**/*",
23
+ "!.DS_Store"
24
+ ],
25
+ "keywords": [
26
+ "esay",
27
+ "multilanguage",
28
+ "i18n",
29
+ "lightweight"
30
+ ],
31
+ "dependencies": {
32
+ "emitix": "^2.3.2"
33
+ },
34
+ "devDependencies": {
35
+ "@types/mocha": "^9.0.0",
36
+ "@types/node": "^12.7.2",
37
+ "chai": "4.3.4",
38
+ "gulp": "^5.0.1",
39
+ "gulp-terser": "2.1.0",
40
+ "gulp-typescript": "5.0.1",
41
+ "mocha": "^9.1.3",
42
+ "nyc": "^15.1.0",
43
+ "ts-node": "^8.0.3",
44
+ "typescript": "^4.5.4"
45
+ }
46
+ }