smartloc 1.2.1 → 2.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/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc +111 -0
- package/.vscode/launch.json +65 -0
- package/.vscode/settings.json +14 -0
- package/.vscode/tasks.json +27 -0
- package/README.md +225 -0
- package/build/README.md +225 -0
- package/build/package.json +60 -0
- package/bun.lock +310 -0
- package/index.js +1 -26
- package/package.json +17 -18
- package/samples/express/main.ts +37 -0
- package/samples/express/package.json +10 -0
- package/samples/graphql/main.ts +73 -0
- package/samples/graphql/package.json +15 -0
- package/src/adapters/adapter-base.ts +58 -0
- package/src/adapters/index.ts +31 -0
- package/src/adapters/json.ts +18 -0
- package/src/adapters/xliff.ts +30 -0
- package/src/cli/cli.ts +137 -0
- package/src/cli/collect.ts +196 -0
- package/src/cli/interfaces.ts +7 -0
- package/src/cli/reconciliate.ts +119 -0
- package/src/cli/utils.ts +36 -0
- package/src/core/default-locale.tsx +54 -0
- package/src/core/interfaces.ts +49 -0
- package/{core/json-utils.js → src/core/json-utils.ts} +45 -34
- package/src/core/literal.ts +66 -0
- package/src/core/load.ts +82 -0
- package/src/core/locale-list.ts +128 -0
- package/src/core/locale.tsx +75 -0
- package/src/core/smartloc.tsx +338 -0
- package/src/core/tag.ts +40 -0
- package/src/core/utils.tsx +24 -0
- package/src/express.ts +93 -0
- package/{graphql.js → src/graphql.ts} +80 -68
- package/src/index.ts +7 -0
- package/src/node/index.ts +1 -0
- package/src/node/load.ts +32 -0
- package/test/collect.spec.ts +45 -0
- package/test/reconciliation.spec.ts +132 -0
- package/test/serialization.spec.ts +162 -0
- package/test/translation.spec.ts +61 -0
- package/tsconfig.json +37 -0
- package/tslint.json +103 -0
- package/adapters/adapter-base.d.ts +0 -10
- package/adapters/adapter-base.js +0 -46
- package/adapters/adapter-base.js.map +0 -1
- package/adapters/index.d.ts +0 -3
- package/adapters/index.js +0 -33
- package/adapters/index.js.map +0 -1
- package/adapters/json.d.ts +0 -6
- package/adapters/json.js +0 -22
- package/adapters/json.js.map +0 -1
- package/adapters/xliff.d.ts +0 -6
- package/adapters/xliff.js +0 -32
- package/adapters/xliff.js.map +0 -1
- package/cli/cli.d.ts +0 -2
- package/cli/cli.js +0 -128
- package/cli/cli.js.map +0 -1
- package/cli/collect.d.ts +0 -12
- package/cli/collect.js +0 -151
- package/cli/collect.js.map +0 -1
- package/cli/interfaces.d.ts +0 -25
- package/cli/interfaces.js +0 -3
- package/cli/interfaces.js.map +0 -1
- package/cli/reconciliate.d.ts +0 -6
- package/cli/reconciliate.js +0 -108
- package/cli/reconciliate.js.map +0 -1
- package/cli/utils.d.ts +0 -7
- package/cli/utils.js +0 -54
- package/cli/utils.js.map +0 -1
- package/core/base-loc.d.ts +0 -3
- package/core/base-loc.js +0 -20
- package/core/base-loc.js.map +0 -1
- package/core/default-locale.d.ts +0 -8
- package/core/default-locale.js +0 -42
- package/core/default-locale.js.map +0 -1
- package/core/interfaces.d.ts +0 -32
- package/core/interfaces.js +0 -3
- package/core/interfaces.js.map +0 -1
- package/core/json-utils.d.ts +0 -19
- package/core/json-utils.js.map +0 -1
- package/core/literal.d.ts +0 -9
- package/core/literal.js +0 -52
- package/core/literal.js.map +0 -1
- package/core/locale-list.d.ts +0 -19
- package/core/locale-list.js +0 -84
- package/core/locale-list.js.map +0 -1
- package/core/locale.d.ts +0 -13
- package/core/locale.js +0 -34
- package/core/locale.js.map +0 -1
- package/core/locstr-array.d.ts +0 -10
- package/core/locstr-array.js +0 -48
- package/core/locstr-array.js.map +0 -1
- package/core/smartloc.d.ts +0 -64
- package/core/smartloc.js +0 -222
- package/core/smartloc.js.map +0 -1
- package/core/tag.d.ts +0 -5
- package/core/tag.js +0 -17
- package/core/tag.js.map +0 -1
- package/core/utils.d.ts +0 -1
- package/core/utils.js +0 -13
- package/core/utils.js.map +0 -1
- package/express.d.ts +0 -12
- package/express.js +0 -85
- package/express.js.map +0 -1
- package/graphql.d.ts +0 -12
- package/graphql.js.map +0 -1
- package/index.d.ts +0 -7
- package/index.js.map +0 -1
- package/node/index.d.ts +0 -1
- package/node/index.js +0 -14
- package/node/index.js.map +0 -1
- package/node/load.d.ts +0 -12
- package/node/load.js +0 -44
- package/node/load.js.map +0 -1
package/core/locale-list.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.listLocales = exports.getLocale = exports.addLocale = exports.removeLocale = exports.clearLocales = exports.getDefaultLocale = exports.setDefaultLocale = void 0;
|
|
4
|
-
const default_locale_1 = require("./default-locale");
|
|
5
|
-
const locale_1 = require("./locale");
|
|
6
|
-
let locales = {};
|
|
7
|
-
let defaultLocale;
|
|
8
|
-
/** Defines the locale used in code */
|
|
9
|
-
function setDefaultLocale(localeId) {
|
|
10
|
-
defaultLocale = new default_locale_1.DefaultLocale(localeId);
|
|
11
|
-
}
|
|
12
|
-
exports.setDefaultLocale = setDefaultLocale;
|
|
13
|
-
function getDefaultLocale() {
|
|
14
|
-
return defaultLocale;
|
|
15
|
-
}
|
|
16
|
-
exports.getDefaultLocale = getDefaultLocale;
|
|
17
|
-
/** Resets all locales */
|
|
18
|
-
function clearLocales() {
|
|
19
|
-
locales = {};
|
|
20
|
-
}
|
|
21
|
-
exports.clearLocales = clearLocales;
|
|
22
|
-
/** Remove a locale */
|
|
23
|
-
function removeLocale(id) {
|
|
24
|
-
id = id.toLowerCase();
|
|
25
|
-
const existing = locales[id];
|
|
26
|
-
if (!existing) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
delete locales[id];
|
|
30
|
-
const bl = baseLocale(id);
|
|
31
|
-
if (bl && locales[bl] === existing) {
|
|
32
|
-
delete locales[bl];
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.removeLocale = removeLocale;
|
|
36
|
-
/**
|
|
37
|
-
* Adds translations
|
|
38
|
-
* @param id Locale ID (ex: 'en', or 'en-US')
|
|
39
|
-
* @param localeDef Translations (string id as key, formatted string as values - ex : {myId: 'Translated {0} text {1}'})
|
|
40
|
-
* @param merge If true, then the translations will be merged with already existing translations.
|
|
41
|
-
*/
|
|
42
|
-
function addLocale(id, localeDef, merge) {
|
|
43
|
-
id = id.toLowerCase();
|
|
44
|
-
let loc = locales[id];
|
|
45
|
-
if (loc) {
|
|
46
|
-
if (!merge) {
|
|
47
|
-
throw new Error(`There already is a locale '${id}' defined. Set the 'merge' argument to 'true' if you want to add translations`);
|
|
48
|
-
}
|
|
49
|
-
loc.localeDef = {
|
|
50
|
-
...loc.localeDef,
|
|
51
|
-
...localeDef,
|
|
52
|
-
};
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
loc = locales[id] = new locale_1.Locale(id, localeDef);
|
|
56
|
-
const bl = baseLocale(id);
|
|
57
|
-
if (bl && !locales[bl]) {
|
|
58
|
-
locales[bl] = loc;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.addLocale = addLocale;
|
|
62
|
-
function getLocale(id) {
|
|
63
|
-
if (!id) {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
const found = locales[id];
|
|
67
|
-
if (found) {
|
|
68
|
-
return found;
|
|
69
|
-
}
|
|
70
|
-
// if given "en-US", then try to downgrade to a non specific language.
|
|
71
|
-
const bl = baseLocale(id);
|
|
72
|
-
return bl && locales[bl] || null;
|
|
73
|
-
}
|
|
74
|
-
exports.getLocale = getLocale;
|
|
75
|
-
function baseLocale(l) {
|
|
76
|
-
const m = /^([a-zA-Z]+)\-[a-zA-Z]+$/.exec(l);
|
|
77
|
-
return (m === null || m === void 0 ? void 0 : m[1]) || null;
|
|
78
|
-
}
|
|
79
|
-
function* listLocales() {
|
|
80
|
-
yield* Object.keys(locales);
|
|
81
|
-
yield defaultLocale.id;
|
|
82
|
-
}
|
|
83
|
-
exports.listLocales = listLocales;
|
|
84
|
-
//# sourceMappingURL=locale-list.js.map
|
package/core/locale-list.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"locale-list.js","sourceRoot":"","sources":["../../src/core/locale-list.ts"],"names":[],"mappings":";;;AACA,qDAAiD;AACjD,qCAAkC;AAElC,IAAI,OAAO,GAA4B,EAAE,CAAC;AAE1C,IAAI,aAAyB,CAAC;AAE9B,sCAAsC;AACtC,SAAgB,gBAAgB,CAAC,QAAgB;IAC7C,aAAa,GAAG,IAAI,8BAAa,CAAC,QAAQ,CAAC,CAAC;AAChD,CAAC;AAFD,4CAEC;AAED,SAAgB,gBAAgB;IAC5B,OAAO,aAAa,CAAC;AACzB,CAAC;AAFD,4CAEC;AAED,yBAAyB;AACzB,SAAgB,YAAY;IACxB,OAAO,GAAG,EAAE,CAAC;AACjB,CAAC;AAFD,oCAEC;AAED,sBAAsB;AACtB,SAAgB,YAAY,CAAC,EAAU;IACnC,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,CAAC,QAAQ,EAAE;QACX,OAAO;KACV;IACD,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;IACnB,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,QAAQ,EAAE;QAChC,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;KACtB;AACL,CAAC;AAXD,oCAWC;AAED;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,EAAU,EAAE,SAAiC,EAAE,KAAe;IACpF,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IACtB,IAAI,GAAG,GAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IACvB,IAAI,GAAG,EAAE;QACL,IAAI,CAAC,KAAK,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,8BAA8B,EAAE,+EAA+E,CAAC,CAAC;SACpI;QACD,GAAG,CAAC,SAAS,GAAG;YACZ,GAAG,GAAG,CAAC,SAAS;YAChB,GAAG,SAAS;SACf,CAAC;QACF,OAAO;KACV;IACD,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,eAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QACpB,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;KACrB;AACL,CAAC;AAlBD,8BAkBC;AAED,SAAgB,SAAS,CAAC,EAAU;IAChC,IAAI,CAAC,EAAE,EAAE;QACL,OAAO,IAAI,CAAC;KACf;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,KAAK,EAAE;QACP,OAAO,KAAK,CAAC;KAChB;IACD,sEAAsE;IACtE,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC1B,OAAO,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AACrC,CAAC;AAXD,8BAWC;AAED,SAAS,UAAU,CAAC,CAAS;IACzB,MAAM,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAG,CAAC,MAAK,IAAI,CAAC;AAC1B,CAAC;AAED,QAAgB,CAAC,CAAA,WAAW;IACxB,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,aAAa,CAAC,EAAE,CAAC;AAC3B,CAAC;AAHD,kCAGC"}
|
package/core/locale.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { ILocaleDef, ILiteralLocalizer, LocLiteral } from './interfaces';
|
|
2
|
-
export declare class Locale implements ILocaleDef {
|
|
3
|
-
readonly id: string;
|
|
4
|
-
localeDef: {
|
|
5
|
-
[id: string]: string;
|
|
6
|
-
};
|
|
7
|
-
readonly literals: ILiteralLocalizer;
|
|
8
|
-
readonly code: string;
|
|
9
|
-
constructor(id: string, localeDef: {
|
|
10
|
-
[id: string]: string;
|
|
11
|
-
});
|
|
12
|
-
localize(id: string, parts: TemplateStringsArray, placeholders: LocLiteral[]): string;
|
|
13
|
-
}
|
package/core/locale.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Locale = void 0;
|
|
4
|
-
const literal_1 = require("./literal");
|
|
5
|
-
const utils_1 = require("../cli/utils");
|
|
6
|
-
class Locale {
|
|
7
|
-
constructor(id, localeDef) {
|
|
8
|
-
this.id = id;
|
|
9
|
-
this.localeDef = localeDef;
|
|
10
|
-
this.literals = new literal_1.LiteralLocalizer(this);
|
|
11
|
-
this.code = utils_1.getLocaleCode(id);
|
|
12
|
-
}
|
|
13
|
-
localize(id, parts, placeholders) {
|
|
14
|
-
const template = this.localeDef[id];
|
|
15
|
-
if (!template) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
const literals = placeholders === null || placeholders === void 0 ? void 0 : placeholders.map(x => this.literals.localize(x));
|
|
19
|
-
return format(template, literals);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.Locale = Locale;
|
|
23
|
-
function format(str, args) {
|
|
24
|
-
if (!args || !args.length) {
|
|
25
|
-
return str;
|
|
26
|
-
}
|
|
27
|
-
return str.replace(/{(\d+)}/g, function (match, number) {
|
|
28
|
-
return typeof args[number] !== 'undefined'
|
|
29
|
-
? args[number]
|
|
30
|
-
: match;
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
;
|
|
34
|
-
//# sourceMappingURL=locale.js.map
|
package/core/locale.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/core/locale.ts"],"names":[],"mappings":";;;AACA,uCAA6C;AAC7C,wCAA6C;AAE7C,MAAa,MAAM;IAIf,YAAqB,EAAU,EAAS,SAAmC;QAAtD,OAAE,GAAF,EAAE,CAAQ;QAAS,cAAS,GAAT,SAAS,CAA0B;QACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,0BAAgB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,qBAAa,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,QAAQ,CAAC,EAAU,EAAE,KAA2B,EAAE,YAA0B;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO,IAAI,CAAC;SACf;QACD,MAAM,QAAQ,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;CACJ;AAjBD,wBAiBC;AAED,SAAS,MAAM,CAAC,GAAW,EAAE,IAAc;IACvC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACvB,OAAO,GAAG,CAAC;KACd;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,KAAK,EAAE,MAAM;QAClD,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,WAAW;YACtC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACd,CAAC,CAAC,KAAK,CACN;IACT,CAAC,CAAC,CAAC;AACP,CAAC;AAAA,CAAC"}
|
package/core/locstr-array.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { LocStr } from './interfaces';
|
|
2
|
-
export declare class LocStringArray {
|
|
3
|
-
private strs;
|
|
4
|
-
constructor(strs: (LocStr | string)[]);
|
|
5
|
-
toJSON(): any[];
|
|
6
|
-
map(fn: (x: LocStr, index: number) => LocStr): LocStringArray;
|
|
7
|
-
slice(start?: number, end?: number): LocStringArray;
|
|
8
|
-
join(join: string): LocStr;
|
|
9
|
-
toArray(): (string | LocStr)[];
|
|
10
|
-
}
|
package/core/locstr-array.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LocStringArray = void 0;
|
|
4
|
-
const smartloc_1 = require("./smartloc");
|
|
5
|
-
const literal_1 = require("./literal");
|
|
6
|
-
class JoinedString {
|
|
7
|
-
constructor(strs, join) {
|
|
8
|
-
this.strs = strs;
|
|
9
|
-
this.join = join;
|
|
10
|
-
literal_1.setIsLoc(this);
|
|
11
|
-
}
|
|
12
|
-
get id() {
|
|
13
|
-
return undefined;
|
|
14
|
-
}
|
|
15
|
-
toString(locale) {
|
|
16
|
-
return this.strs
|
|
17
|
-
.map(x => x && (typeof x === 'string' ? x : x.toString(locale)))
|
|
18
|
-
.join(this.join);
|
|
19
|
-
}
|
|
20
|
-
toJSON() {
|
|
21
|
-
return this.toString();
|
|
22
|
-
}
|
|
23
|
-
transform(transformer) {
|
|
24
|
-
return new smartloc_1.TransformedLoc(this, transformer);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
class LocStringArray {
|
|
28
|
-
constructor(strs) {
|
|
29
|
-
this.strs = strs;
|
|
30
|
-
}
|
|
31
|
-
toJSON() {
|
|
32
|
-
return this.strs.map(x => x && (typeof x === 'string' ? x : x.toJSON()));
|
|
33
|
-
}
|
|
34
|
-
map(fn) {
|
|
35
|
-
return new LocStringArray(this.strs.map(fn));
|
|
36
|
-
}
|
|
37
|
-
slice(start, end) {
|
|
38
|
-
return new LocStringArray(this.strs.slice(start, end));
|
|
39
|
-
}
|
|
40
|
-
join(join) {
|
|
41
|
-
return new JoinedString(this.strs, join);
|
|
42
|
-
}
|
|
43
|
-
toArray() {
|
|
44
|
-
return [...this.strs];
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
exports.LocStringArray = LocStringArray;
|
|
48
|
-
//# sourceMappingURL=locstr-array.js.map
|
package/core/locstr-array.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"locstr-array.js","sourceRoot":"","sources":["../../src/core/locstr-array.ts"],"names":[],"mappings":";;;AACA,yCAA4C;AAC5C,uCAAqC;AAErC,MAAM,YAAY;IAKd,YAAoB,IAAyB,EAAU,IAAY;QAA/C,SAAI,GAAJ,IAAI,CAAqB;QAAU,SAAI,GAAJ,IAAI,CAAQ;QAC/D,kBAAQ,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAND,IAAI,EAAE;QACF,OAAO,SAAS,CAAC;IACrB,CAAC;IAMD,QAAQ,CAAC,MAA4B;QACjC,OAAO,IAAI,CAAC,IAAI;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;aAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,WAAkC;QACxC,OAAO,IAAI,yBAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;CACJ;AAGD,MAAa,cAAc;IACvB,YAAoB,IAAyB;QAAzB,SAAI,GAAJ,IAAI,CAAqB;IAC7C,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,GAAG,CAAC,EAAwC;QAExC,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,KAAc,EAAE,GAAY;QAC9B,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,IAAY;QACb,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACJ;AAxBD,wCAwBC"}
|
package/core/smartloc.d.ts
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { ILocaleDef, LocLiteral, LocStr } from './interfaces';
|
|
2
|
-
export interface SerializationContextOptions {
|
|
3
|
-
/** HOw non self-descriptive (MultiLoc, SingleLoc, ...) will be transformed. Defaults to 'id'.
|
|
4
|
-
*
|
|
5
|
-
* id => will serialize its ID ... the context of deserialization will be required to have the given translation
|
|
6
|
-
* skip => will be left as it (=> serialization will translate it)
|
|
7
|
-
* toMulti => translates to all registered languages, and serializes as a 'multi'
|
|
8
|
-
*/
|
|
9
|
-
nonSelfDescriptive?: 'skip' | 'toMulti' | 'id';
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Execute something in the given locales context.
|
|
13
|
-
* @param acceptLanguages The accepted languages, by order of preference
|
|
14
|
-
* @param action Action to perform (usually a JSON.serialize() or a .toString() operation)
|
|
15
|
-
**/
|
|
16
|
-
export declare function withLocales<T = void>(acceptLanguages: string[], action: () => T): T;
|
|
17
|
-
/**
|
|
18
|
-
* Execute something in a context where .toJson() loc strings
|
|
19
|
-
* will be serialized into a form that is parsable via jsonParseLocalized()
|
|
20
|
-
*/
|
|
21
|
-
export declare function withSerializationContext<T = void>(action: () => T, options?: SerializationContextOptions): T;
|
|
22
|
-
export declare class TransformedLoc implements LocStr {
|
|
23
|
-
private parent;
|
|
24
|
-
private transformer;
|
|
25
|
-
get id(): string;
|
|
26
|
-
constructor(parent: LocStr, transformer: (x: string) => string);
|
|
27
|
-
toJSON(): string;
|
|
28
|
-
toString(locale?: string | ILocaleDef): string;
|
|
29
|
-
transform(transformer: (x: string) => string): LocStr;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* A localizable string instance
|
|
33
|
-
*/
|
|
34
|
-
export declare class SmartLoc implements LocStr {
|
|
35
|
-
id: string;
|
|
36
|
-
private literals;
|
|
37
|
-
private placeholders;
|
|
38
|
-
constructor(id: string, literals: TemplateStringsArray, placeholders: LocLiteral[]);
|
|
39
|
-
toJSON(): {};
|
|
40
|
-
toString(locale?: string | ILocaleDef): string;
|
|
41
|
-
transform(transformer: (x: string) => string): LocStr;
|
|
42
|
-
}
|
|
43
|
-
/** A loc string that has only one translation for all locales */
|
|
44
|
-
export declare class SingleLoc implements LocStr {
|
|
45
|
-
text: string;
|
|
46
|
-
readonly id: string;
|
|
47
|
-
constructor(text: string);
|
|
48
|
-
toJSON(): string;
|
|
49
|
-
toString(): string;
|
|
50
|
-
transform(transformer: (x: string) => string): LocStr;
|
|
51
|
-
}
|
|
52
|
-
/** A given set of translations */
|
|
53
|
-
export declare class MultiLoc implements LocStr {
|
|
54
|
-
translations: {
|
|
55
|
-
[locale: string]: string;
|
|
56
|
-
};
|
|
57
|
-
readonly id: string;
|
|
58
|
-
constructor(translations: {
|
|
59
|
-
[locale: string]: string;
|
|
60
|
-
});
|
|
61
|
-
toJSON(): {};
|
|
62
|
-
toString(locale?: string | ILocaleDef): string;
|
|
63
|
-
transform(transformer: (x: string) => string): LocStr;
|
|
64
|
-
}
|
package/core/smartloc.js
DELETED
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MultiLoc = exports.SingleLoc = exports.SmartLoc = exports.TransformedLoc = exports.withSerializationContext = exports.withLocales = void 0;
|
|
4
|
-
const locale_list_1 = require("./locale-list");
|
|
5
|
-
const literal_1 = require("./literal");
|
|
6
|
-
const utils_1 = require("../cli/utils");
|
|
7
|
-
let langCtx = null;
|
|
8
|
-
let serialContext;
|
|
9
|
-
/**
|
|
10
|
-
* Execute something in the given locales context.
|
|
11
|
-
* @param acceptLanguages The accepted languages, by order of preference
|
|
12
|
-
* @param action Action to perform (usually a JSON.serialize() or a .toString() operation)
|
|
13
|
-
**/
|
|
14
|
-
function withLocales(acceptLanguages, action) {
|
|
15
|
-
if (!acceptLanguages || !acceptLanguages.length) {
|
|
16
|
-
return action();
|
|
17
|
-
}
|
|
18
|
-
const oldLangCtx = langCtx;
|
|
19
|
-
try {
|
|
20
|
-
// set accepted languages
|
|
21
|
-
langCtx = acceptLanguages
|
|
22
|
-
.map(locale_list_1.getLocale)
|
|
23
|
-
.filter(x => !!x);
|
|
24
|
-
// perform action
|
|
25
|
-
return action();
|
|
26
|
-
}
|
|
27
|
-
finally {
|
|
28
|
-
langCtx = oldLangCtx;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.withLocales = withLocales;
|
|
32
|
-
/**
|
|
33
|
-
* Execute something in a context where .toJson() loc strings
|
|
34
|
-
* will be serialized into a form that is parsable via jsonParseLocalized()
|
|
35
|
-
*/
|
|
36
|
-
function withSerializationContext(action, options) {
|
|
37
|
-
const os = serialContext;
|
|
38
|
-
try {
|
|
39
|
-
serialContext = options || {};
|
|
40
|
-
return action();
|
|
41
|
-
}
|
|
42
|
-
finally {
|
|
43
|
-
serialContext = os;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
exports.withSerializationContext = withSerializationContext;
|
|
47
|
-
class TransformedLoc {
|
|
48
|
-
constructor(parent, transformer) {
|
|
49
|
-
this.parent = parent;
|
|
50
|
-
this.transformer = transformer;
|
|
51
|
-
if (typeof transformer !== 'function') {
|
|
52
|
-
throw new Error('transformer must be a function');
|
|
53
|
-
}
|
|
54
|
-
literal_1.setIsLoc(this);
|
|
55
|
-
}
|
|
56
|
-
get id() {
|
|
57
|
-
return this.parent.id;
|
|
58
|
-
}
|
|
59
|
-
toJSON() {
|
|
60
|
-
if (serialContext) {
|
|
61
|
-
throw new Error('Cannot serialize transformed localized strings');
|
|
62
|
-
}
|
|
63
|
-
return this.toString();
|
|
64
|
-
}
|
|
65
|
-
toString(locale) {
|
|
66
|
-
const ret = this.parent.toString(locale);
|
|
67
|
-
return ret && this.transformer(ret);
|
|
68
|
-
}
|
|
69
|
-
transform(transformer) {
|
|
70
|
-
return new TransformedLoc(this, transformer);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
exports.TransformedLoc = TransformedLoc;
|
|
74
|
-
/**
|
|
75
|
-
* A localizable string instance
|
|
76
|
-
*/
|
|
77
|
-
class SmartLoc {
|
|
78
|
-
constructor(id, literals, placeholders) {
|
|
79
|
-
this.id = id;
|
|
80
|
-
this.literals = literals;
|
|
81
|
-
this.placeholders = placeholders;
|
|
82
|
-
literal_1.setIsLoc(this);
|
|
83
|
-
}
|
|
84
|
-
toJSON() {
|
|
85
|
-
var _a;
|
|
86
|
-
if (serialContext) {
|
|
87
|
-
switch (serialContext.nonSelfDescriptive) {
|
|
88
|
-
case 'skip':
|
|
89
|
-
return this;
|
|
90
|
-
case 'toMulti':
|
|
91
|
-
const multi = {};
|
|
92
|
-
for (const l of locale_list_1.listLocales()) {
|
|
93
|
-
multi[l] = this.toString(l);
|
|
94
|
-
}
|
|
95
|
-
// tslint:disable-next-line: no-use-before-declare
|
|
96
|
-
return new MultiLoc(multi).toJSON();
|
|
97
|
-
default:
|
|
98
|
-
if ((_a = this.placeholders) === null || _a === void 0 ? void 0 : _a.length) {
|
|
99
|
-
return {
|
|
100
|
-
i18n: this.id,
|
|
101
|
-
data: this.placeholders,
|
|
102
|
-
};
|
|
103
|
-
// throw new Error(`Cannot serialize smartloc instance "${this.id}" which has placeholders ("\${}" in string definition). Please use another SerializationContextOption.nonSelfDescriptive option`);
|
|
104
|
-
}
|
|
105
|
-
return `i18n/id:${this.id}`;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return this.toString();
|
|
109
|
-
}
|
|
110
|
-
toString(locale) {
|
|
111
|
-
if (typeof locale === 'string') {
|
|
112
|
-
locale = locale_list_1.getLocale(locale);
|
|
113
|
-
}
|
|
114
|
-
if (locale) {
|
|
115
|
-
const localized = locale.localize(this.id, this.literals, this.placeholders);
|
|
116
|
-
if (localized) {
|
|
117
|
-
return localized;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
if (langCtx === null || langCtx === void 0 ? void 0 : langCtx.length) {
|
|
121
|
-
for (const l of langCtx) {
|
|
122
|
-
const localized = l.localize(this.id, this.literals, this.placeholders);
|
|
123
|
-
if (localized) {
|
|
124
|
-
return localized;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
const defaultLocale = locale_list_1.getDefaultLocale();
|
|
129
|
-
if (!defaultLocale) {
|
|
130
|
-
throw new Error('You must specify default locale via setDefaultLocale() before using localization');
|
|
131
|
-
}
|
|
132
|
-
return defaultLocale.localize(this.id, this.literals, this.placeholders);
|
|
133
|
-
}
|
|
134
|
-
transform(transformer) {
|
|
135
|
-
return new TransformedLoc(this, transformer);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
exports.SmartLoc = SmartLoc;
|
|
139
|
-
/** A loc string that has only one translation for all locales */
|
|
140
|
-
class SingleLoc {
|
|
141
|
-
constructor(text) {
|
|
142
|
-
this.text = text;
|
|
143
|
-
this.id = undefined;
|
|
144
|
-
literal_1.setIsLoc(this);
|
|
145
|
-
}
|
|
146
|
-
toJSON() {
|
|
147
|
-
if (serialContext) {
|
|
148
|
-
return 'i18n/single:' + this.text;
|
|
149
|
-
}
|
|
150
|
-
return this.text;
|
|
151
|
-
}
|
|
152
|
-
toString() {
|
|
153
|
-
return this.text;
|
|
154
|
-
}
|
|
155
|
-
transform(transformer) {
|
|
156
|
-
return new TransformedLoc(this, transformer);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
exports.SingleLoc = SingleLoc;
|
|
160
|
-
/** A given set of translations */
|
|
161
|
-
class MultiLoc {
|
|
162
|
-
constructor(translations) {
|
|
163
|
-
this.translations = translations;
|
|
164
|
-
this.id = undefined;
|
|
165
|
-
literal_1.setIsLoc(this);
|
|
166
|
-
}
|
|
167
|
-
toJSON() {
|
|
168
|
-
if (serialContext) {
|
|
169
|
-
const ret = {};
|
|
170
|
-
for (const [k, v] of Object.entries(this.translations)) {
|
|
171
|
-
ret[`i18n:${k}`] = v;
|
|
172
|
-
}
|
|
173
|
-
return ret;
|
|
174
|
-
}
|
|
175
|
-
return this.toString();
|
|
176
|
-
}
|
|
177
|
-
toString(locale) {
|
|
178
|
-
if (locale) {
|
|
179
|
-
if (typeof locale === 'object') {
|
|
180
|
-
if (this.translations[locale.id]) {
|
|
181
|
-
return this.translations[locale.id];
|
|
182
|
-
}
|
|
183
|
-
if (this.translations[locale.code]) {
|
|
184
|
-
return this.translations[locale.code];
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
else if (typeof locale === 'string') {
|
|
188
|
-
for (const l of [locale, utils_1.getLocaleCode(locale)]) {
|
|
189
|
-
if (this.translations[l]) {
|
|
190
|
-
return this.translations[l];
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
if (langCtx === null || langCtx === void 0 ? void 0 : langCtx.length) {
|
|
196
|
-
for (const l of langCtx) {
|
|
197
|
-
if (this.translations[l.id]) {
|
|
198
|
-
return this.translations[l.id];
|
|
199
|
-
}
|
|
200
|
-
if (this.translations[l.code]) {
|
|
201
|
-
return this.translations[l.code];
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
const defaultLocale = locale_list_1.getDefaultLocale();
|
|
206
|
-
if (!defaultLocale) {
|
|
207
|
-
throw new Error('You must specify default locale via setDefaultLocale() before using localization');
|
|
208
|
-
}
|
|
209
|
-
if (this.translations[defaultLocale.id]) {
|
|
210
|
-
return this.translations[defaultLocale.id];
|
|
211
|
-
}
|
|
212
|
-
if (this.translations[defaultLocale.code]) {
|
|
213
|
-
return this.translations[defaultLocale.code];
|
|
214
|
-
}
|
|
215
|
-
return null;
|
|
216
|
-
}
|
|
217
|
-
transform(transformer) {
|
|
218
|
-
return new TransformedLoc(this, transformer);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
exports.MultiLoc = MultiLoc;
|
|
222
|
-
//# sourceMappingURL=smartloc.js.map
|
package/core/smartloc.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"smartloc.js","sourceRoot":"","sources":["../../src/core/smartloc.ts"],"names":[],"mappings":";;;AAAA,+CAAyE;AAEzE,uCAAqC;AACrC,wCAA6C;AAE7C,IAAI,OAAO,GAAiB,IAAI,CAAC;AACjC,IAAI,aAA0C,CAAC;AAW/C;;;;IAII;AACJ,SAAgB,WAAW,CAAW,eAAyB,EAAE,MAAe;IAC5E,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;QAC7C,OAAO,MAAM,EAAE,CAAC;KACnB;IACD,MAAM,UAAU,GAAG,OAAO,CAAC;IAC3B,IAAI;QACA,yBAAyB;QACzB,OAAO,GAAG,eAAe;aACpB,GAAG,CAAC,uBAAS,CAAC;aACd,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtB,iBAAiB;QACjB,OAAO,MAAM,EAAE,CAAC;KACnB;YAAS;QACN,OAAO,GAAG,UAAU,CAAC;KACxB;AACL,CAAC;AAhBD,kCAgBC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CAAW,MAAe,EAAE,OAAqC;IACrG,MAAM,EAAE,GAAG,aAAa,CAAC;IACzB,IAAI;QACA,aAAa,GAAG,OAAO,IAAI,EAAE,CAAC;QAC9B,OAAO,MAAM,EAAE,CAAC;KACnB;YAAS;QACN,aAAa,GAAG,EAAE,CAAC;KACtB;AACL,CAAC;AARD,4DAQC;AAED,MAAa,cAAc;IAMvB,YAAoB,MAAc,EAAU,WAAkC;QAA1D,WAAM,GAAN,MAAM,CAAQ;QAAU,gBAAW,GAAX,WAAW,CAAuB;QAC1E,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACrD;QACD,kBAAQ,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IATD,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,CAAC;IASD,MAAM;QACF,IAAI,aAAa,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACrE;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAGD,QAAQ,CAAC,MAA4B;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,WAAkC;QACxC,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;CACJ;AA7BD,wCA6BC;AAED;;GAEG;AACH,MAAa,QAAQ;IACjB,YAAmB,EAAU,EAAU,QAA8B,EAAU,YAA0B;QAAtF,OAAE,GAAF,EAAE,CAAQ;QAAU,aAAQ,GAAR,QAAQ,CAAsB;QAAU,iBAAY,GAAZ,YAAY,CAAc;QACrG,kBAAQ,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,MAAM;;QACF,IAAI,aAAa,EAAE;YACf,QAAQ,aAAa,CAAC,kBAAkB,EAAE;gBACtC,KAAK,MAAM;oBACP,OAAO,IAAI,CAAC;gBAChB,KAAK,SAAS;oBACV,MAAM,KAAK,GAAG,EAAE,CAAC;oBACjB,KAAK,MAAM,CAAC,IAAI,yBAAW,EAAE,EAAE;wBAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;qBAC/B;oBACD,kDAAkD;oBAClD,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBACxC;oBACI,UAAI,IAAI,CAAC,YAAY,0CAAE,MAAM,EAAE;wBAC3B,OAAO;4BACH,IAAI,EAAE,IAAI,CAAC,EAAE;4BACb,IAAI,EAAE,IAAI,CAAC,YAAY;yBAC1B,CAAC;wBACF,oMAAoM;qBACvM;oBACD,OAAO,WAAW,IAAI,CAAC,EAAE,EAAE,CAAC;aACnC;SACJ;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,MAA4B;QACjC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC5B,MAAM,GAAG,uBAAS,CAAC,MAAM,CAAC,CAAC;SAC9B;QAED,IAAI,MAAM,EAAE;YACR,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7E,IAAI,SAAS,EAAE;gBACX,OAAO,SAAS,CAAC;aACpB;SACJ;QACD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;YACjB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;gBACrB,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBACxE,IAAI,SAAS,EAAE;oBACX,OAAO,SAAS,CAAC;iBACpB;aACJ;SACJ;QACD,MAAM,aAAa,GAAG,8BAAgB,EAAE,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;SACvG;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7E,CAAC;IAED,SAAS,CAAC,WAAkC;QACxC,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;CACJ;AA5DD,4BA4DC;AAED,iEAAiE;AACjE,MAAa,SAAS;IAGlB,YAAmB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;QAFtB,OAAE,GAAW,SAAS,CAAC;QAG5B,kBAAQ,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,MAAM;QACF,IAAI,aAAa,EAAE;YACf,OAAO,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC;SACrC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,WAAkC;QACxC,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;CACJ;AArBD,8BAqBC;AAED,kCAAkC;AAClC,MAAa,QAAQ;IAGjB,YAAmB,YAA0C;QAA1C,iBAAY,GAAZ,YAAY,CAA8B;QAFpD,OAAE,GAAW,SAAS,CAAC;QAG5B,kBAAQ,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,MAAM;QACF,IAAI,aAAa,EAAE;YACf,MAAM,GAAG,GAAG,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBACpD,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;aACxB;YACD,OAAO,GAAG,CAAC;SACd;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,MAA4B;QACjC,IAAI,MAAM,EAAE;YACR,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC5B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;iBACvC;gBACD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;oBAChC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iBACzC;aACJ;iBAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBACnC,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,qBAAa,CAAC,MAAM,CAAC,CAAC,EAAE;oBAC7C,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;wBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;qBAC/B;iBACJ;aACJ;SACJ;QAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;YACjB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;gBACrB,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;oBACzB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBAClC;gBACD,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;oBAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACpC;aACJ;SACJ;QACD,MAAM,aAAa,GAAG,8BAAgB,EAAE,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;SACvG;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;SAC9C;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAChD;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,WAAkC;QACxC,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;CACJ;AA9DD,4BA8DC"}
|
package/core/tag.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { LocLiteral, LocStr } from './interfaces';
|
|
2
|
-
declare type TagSignature = (literals: TemplateStringsArray, ...placeholders: LocLiteral[]) => LocStr;
|
|
3
|
-
export declare function loc(literals: TemplateStringsArray, ...placeholders: LocLiteral[]): LocStr;
|
|
4
|
-
export declare function loc(uniqueStringId: string): TagSignature;
|
|
5
|
-
export {};
|
package/core/tag.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loc = void 0;
|
|
4
|
-
const smartloc_1 = require("./smartloc");
|
|
5
|
-
const utils_1 = require("./utils");
|
|
6
|
-
function loc(idOrLiterals, ...ph) {
|
|
7
|
-
if (typeof idOrLiterals === 'string') {
|
|
8
|
-
const id = idOrLiterals;
|
|
9
|
-
return (literals, ...placeholders) => {
|
|
10
|
-
return new smartloc_1.SmartLoc(id, literals, placeholders);
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
const autoId = utils_1.autoGenerateId(idOrLiterals);
|
|
14
|
-
return new smartloc_1.SmartLoc(autoId, idOrLiterals, ph);
|
|
15
|
-
}
|
|
16
|
-
exports.loc = loc;
|
|
17
|
-
//# sourceMappingURL=tag.js.map
|
package/core/tag.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/core/tag.ts"],"names":[],"mappings":";;;AAAA,yCAAiD;AAEjD,mCAAyC;AAMzC,SAAgB,GAAG,CAAC,YAA4C,EAAE,GAAG,EAAgB;IACjF,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;QAClC,MAAM,EAAE,GAAG,YAAY,CAAC;QACxB,OAAO,CAAC,QAA8B,EAAE,GAAG,YAA0B,EAAE,EAAE;YACrE,OAAO,IAAI,mBAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAW,CAAC;QAC9D,CAAC,CAAC;KACL;IAED,MAAM,MAAM,GAAG,sBAAc,CAAC,YAAY,CAAC,CAAC;IAC5C,OAAO,IAAI,mBAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAW,CAAC;AAC5D,CAAC;AAVD,kBAUC"}
|
package/core/utils.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function autoGenerateId(str: TemplateStringsArray | string[]): string;
|
package/core/utils.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.autoGenerateId = void 0;
|
|
7
|
-
const js_sha1_1 = __importDefault(require("js-sha1"));
|
|
8
|
-
function autoGenerateId(str) {
|
|
9
|
-
const sha = js_sha1_1.default(str.join('|'));
|
|
10
|
-
return 'sha1.' + sha;
|
|
11
|
-
}
|
|
12
|
-
exports.autoGenerateId = autoGenerateId;
|
|
13
|
-
//# sourceMappingURL=utils.js.map
|
package/core/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA2B;AAE3B,SAAgB,cAAc,CAAC,GAAoC;IAC/D,MAAM,GAAG,GAAG,iBAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,OAAO,OAAO,GAAG,GAAG,CAAC;AACzB,CAAC;AAHD,wCAGC"}
|
package/express.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface SmartlocExpressOptions {
|
|
2
|
-
/** (optional) Waits for this promise before performing a translation. This might be for instance the promise that waits all locales to be declared via addLocale() loaded */
|
|
3
|
-
waitFor?: Promise<any>;
|
|
4
|
-
/** Custom resolution (will fall back on accept-language if this function does not return anything) */
|
|
5
|
-
customLocaleResolver?: (req: any) => string | string[] | null | undefined | Promise<string | string[] | null | undefined>;
|
|
6
|
-
/** Error logger (gives a chance to log resolution errors) */
|
|
7
|
-
errorLogger?: (err: any) => void;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Express middleware that will translate calls to .send(), .json() (etc...) based on the Accept-Language request header.
|
|
11
|
-
*/
|
|
12
|
-
export default function (options?: SmartlocExpressOptions): (req: any, res: any, next: any) => void;
|
package/express.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const _1 = require(".");
|
|
7
|
-
const accept_language_parser_1 = __importDefault(require("accept-language-parser"));
|
|
8
|
-
const supportedMethods = [
|
|
9
|
-
{ key: 'json', },
|
|
10
|
-
{ key: 'jsonp', },
|
|
11
|
-
{ key: 'send', fn: (v) => _1.isLocStr(v) ? v.toString() : v },
|
|
12
|
-
];
|
|
13
|
-
/**
|
|
14
|
-
* Express middleware that will translate calls to .send(), .json() (etc...) based on the Accept-Language request header.
|
|
15
|
-
*/
|
|
16
|
-
function default_1(options) {
|
|
17
|
-
const { errorLogger, customLocaleResolver, waitFor } = options !== null && options !== void 0 ? options : {};
|
|
18
|
-
let waiter = waitFor;
|
|
19
|
-
return function (req, res, next) {
|
|
20
|
-
let locales;
|
|
21
|
-
function serve() {
|
|
22
|
-
var _a, _b;
|
|
23
|
-
waiter = null;
|
|
24
|
-
try {
|
|
25
|
-
// === resolve locales from custom resolver
|
|
26
|
-
if (!locales) {
|
|
27
|
-
const cust = customLocaleResolver(req);
|
|
28
|
-
if (typeof cust === 'string') {
|
|
29
|
-
locales = [cust];
|
|
30
|
-
}
|
|
31
|
-
else if (cust instanceof Array) {
|
|
32
|
-
locales = cust;
|
|
33
|
-
}
|
|
34
|
-
else if (cust) {
|
|
35
|
-
cust.then(resCust => {
|
|
36
|
-
if (typeof resCust === 'string') {
|
|
37
|
-
resCust = [resCust];
|
|
38
|
-
}
|
|
39
|
-
locales = resCust !== null && resCust !== void 0 ? resCust : [];
|
|
40
|
-
serve();
|
|
41
|
-
}, e => {
|
|
42
|
-
errorLogger === null || errorLogger === void 0 ? void 0 : errorLogger(e);
|
|
43
|
-
serve();
|
|
44
|
-
});
|
|
45
|
-
return; // defered => method will be called again later.
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// === resolve locales from headers
|
|
49
|
-
if (!locales || !locales.length) {
|
|
50
|
-
const lh = (_a = req === null || req === void 0 ? void 0 : req.headers) === null || _a === void 0 ? void 0 : _a['accept-language'];
|
|
51
|
-
if (!lh) {
|
|
52
|
-
next();
|
|
53
|
-
return; // => no locale... just serve without patching
|
|
54
|
-
}
|
|
55
|
-
locales = (_b = accept_language_parser_1.default.parse(lh)) === null || _b === void 0 ? void 0 : _b.map(x => x.region ? `${x.code}-${x.region}` : x.code);
|
|
56
|
-
}
|
|
57
|
-
// === override methods that sends potentially translatable content
|
|
58
|
-
for (const { key, fn } of supportedMethods) {
|
|
59
|
-
const orig = res[key];
|
|
60
|
-
res[key] = function (fst, ...args) {
|
|
61
|
-
return _1.withLocales(locales, () => {
|
|
62
|
-
return orig.call(this, fn ? fn(fst) : fst, ...args);
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
next();
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
catch (e) {
|
|
70
|
-
errorLogger === null || errorLogger === void 0 ? void 0 : errorLogger(e);
|
|
71
|
-
next();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
;
|
|
75
|
-
// === serve if nothing to wait
|
|
76
|
-
if (!waiter) {
|
|
77
|
-
serve();
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
waiter.then(serve, serve);
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
exports.default = default_1;
|
|
85
|
-
//# sourceMappingURL=express.js.map
|
package/express.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"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"}
|