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.
- package/LICENSE +21 -0
- package/README.md +9 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/LanguageKey.d.ts +1 -0
- package/dist/lib/LanguageKey.js +1 -0
- package/dist/lib/LanguageKey.js.map +1 -0
- package/dist/lib/LanguagePack/English/Features.d.ts +2 -0
- package/dist/lib/LanguagePack/English/Features.js +1 -0
- package/dist/lib/LanguagePack/English/Features.js.map +1 -0
- package/dist/lib/LanguagePack/English/PipelineFunctions/Article.d.ts +2 -0
- package/dist/lib/LanguagePack/English/PipelineFunctions/Article.js +1 -0
- package/dist/lib/LanguagePack/English/PipelineFunctions/Article.js.map +1 -0
- package/dist/lib/LanguagePack/English/index.d.ts +6 -0
- package/dist/lib/LanguagePack/English/index.js +1 -0
- package/dist/lib/LanguagePack/English/index.js.map +1 -0
- package/dist/lib/LanguagePack/German/Features.d.ts +10 -0
- package/dist/lib/LanguagePack/German/Features.js +1 -0
- package/dist/lib/LanguagePack/German/Features.js.map +1 -0
- package/dist/lib/LanguagePack/German/PipelineFunctions/Article.d.ts +8 -0
- package/dist/lib/LanguagePack/German/PipelineFunctions/Article.js +1 -0
- package/dist/lib/LanguagePack/German/PipelineFunctions/Article.js.map +1 -0
- package/dist/lib/LanguagePack/German/index.d.ts +6 -0
- package/dist/lib/LanguagePack/German/index.js +1 -0
- package/dist/lib/LanguagePack/German/index.js.map +1 -0
- package/dist/lib/LanguagePack/LanguagePack.d.ts +6 -0
- package/dist/lib/LanguagePack/LanguagePack.js +1 -0
- package/dist/lib/LanguagePack/LanguagePack.js.map +1 -0
- package/dist/lib/LanguagePack/index.d.ts +6 -0
- package/dist/lib/LanguagePack/index.js +1 -0
- package/dist/lib/LanguagePack/index.js.map +1 -0
- package/dist/lib/LexoraContext.d.ts +92 -0
- package/dist/lib/LexoraContext.js +1 -0
- package/dist/lib/LexoraContext.js.map +1 -0
- package/dist/lib/LingoContext.d.ts +92 -0
- package/dist/lib/LingoContext.js +1 -0
- package/dist/lib/LingoContext.js.map +1 -0
- package/dist/lib/Parser/PlaceholderParser.d.ts +3 -0
- package/dist/lib/Parser/PlaceholderParser.js +1 -0
- package/dist/lib/Parser/PlaceholderParser.js.map +1 -0
- package/dist/lib/PipelineFunction/DefaultPipelinesFunctions.d.ts +2 -0
- package/dist/lib/PipelineFunction/DefaultPipelinesFunctions.js +1 -0
- package/dist/lib/PipelineFunction/DefaultPipelinesFunctions.js.map +1 -0
- package/dist/lib/PipelineFunction/PipelineFunction.d.ts +14 -0
- package/dist/lib/PipelineFunction/PipelineFunction.js +1 -0
- package/dist/lib/PipelineFunction/PipelineFunction.js.map +1 -0
- package/dist/lib/PipelineFunction/PipelineProcessor.d.ts +11 -0
- package/dist/lib/PipelineFunction/PipelineProcessor.js +1 -0
- package/dist/lib/PipelineFunction/PipelineProcessor.js.map +1 -0
- package/dist/lib/StringResource.d.ts +3 -0
- package/dist/lib/StringResource.js +1 -0
- package/dist/lib/StringResource.js.map +1 -0
- package/dist/lib/Template.d.ts +4 -0
- package/dist/lib/Template.js +1 -0
- package/dist/lib/Template.js.map +1 -0
- package/dist/lib/WatchableString.d.ts +11 -0
- package/dist/lib/WatchableString.js +1 -0
- package/dist/lib/WatchableString.js.map +1 -0
- 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
|
+
[](https://www.npmjs.com/package/lexora)
|
|
4
|
+
[](https://www.npmjs.com/package/lexora)
|
|
5
|
+
[](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.
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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":";;;AAQA,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAE7C,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AAC7D,CAAC;AACD,SAAS,UAAU,CAAC,CAAS;IAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,CACL,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,MAAM;QACpC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,MAAM;QACpC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,MAAM;QACrC,CAAC,KAAK,GAAG;QACT,CAAC,KAAK,GAAG,CACV,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,KAAa;IACpD,IAAI,CAAC,GAAG,KAAK,CAAC;IACd,IAAI,KAAK,GAAqB,IAAI,CAAC;IAEnC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;QACvB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,KAAK,EAAE;YACT,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;aACV;YACD,IAAI,EAAE,KAAK,KAAK,EAAE;gBAChB,KAAK,GAAG,IAAI,CAAC;gBACb,CAAC,EAAE,CAAC;gBACJ,SAAS;aACV;YACD,CAAC,EAAE,CAAC;YACJ,SAAS;SACV;QAED,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE;YAC5B,KAAK,GAAG,EAAE,CAAC;YACX,CAAC,EAAE,CAAC;YACJ,SAAS;SACV;QAED,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,CAAC,CAAC;QAEzB,CAAC,EAAE,CAAC;KACL;IAED,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;IACrD,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAW,EAAE;QAChC,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,GAAG,KAAK,CAAC;QACd,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,CAAY,EAAU,EAAE;QAC1C,CAAC,EAAE,CAAC;QACJ,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;YACzB,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAEtB,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5B,IAAI,IAAI,IAAI,IAAI,EAAE;oBAChB,WAAW;oBACX,GAAG,IAAI,IAAI,CAAC;oBACZ,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS;iBACV;gBACD,CAAC,EAAE,CAAC,CAAC,qBAAqB;gBAC1B,SAAS;aACV;YAED,IAAI,EAAE,KAAK,CAAC,EAAE;gBACZ,CAAC,EAAE,CAAC,CAAC,gBAAgB;gBACrB,OAAO,GAAG,CAAC;aACZ;YAED,GAAG,IAAI,EAAE,CAAC;YACV,CAAC,EAAE,CAAC;SACL;QACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;QACzB,MAAM,EAAE,CAAC;QACT,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM;QAE/B,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE;YAC5B,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;YACvB,MAAM,EAAE,CAAC;SACV;aAAM;YACL,KAAK,GAAG,YAAY,EAAE,CAAC;SACxB;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,EAAE,CAAC;QACT,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,CAAC,EAAE,CAAC;KAC7B;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,GAAG,EAAE;QACnC,MAAM,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;YAAE,CAAC,EAAE,CAAC;QAC/F,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACzC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAE5D,MAAM,SAAS,GAA2B,EAAE,CAAC;IAE7C,OAAO,IAAI,EAAE;QACX,MAAM,EAAE,CAAC;QACT,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;YAAE,MAAM;QACvD,CAAC,IAAI,CAAC,CAAC;QAEP,MAAM,EAAE,CAAC;QACT,MAAM,SAAS,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAEpD,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,IAAI,MAAM,GAAa,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACpB,CAAC,EAAE,CAAC;YACJ,MAAM,SAAS,GAAG,CAAC,CAAC;YAEpB,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzC,IAAI,KAAK,KAAK,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YAEjD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAElC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;SACf;QACD,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;KAClC;IAED,MAAM,EAAE,CAAC;IACT,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACrF,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC5B,CAAC;AAED,SAAgB,uBAAuB,CACrC,KAAa,EACb,QAA6B;IAE7B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;YACf,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM;SACP;QAED,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAE5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM;SACP;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAE3C,IAAI,WAAmB,CAAC;QACxB,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACjD,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAE5C,GAAG,IAAI,WAAW,CAAC;QACnB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;KACf;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAlCD,0DAkCC"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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
|
+
}
|