smartloc 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/adapter-base.d.ts +12 -0
- package/adapters/adapter-base.js +56 -0
- package/adapters/adapter-base.js.map +1 -0
- package/adapters/index.d.ts +4 -0
- package/adapters/index.js +32 -0
- package/adapters/index.js.map +1 -0
- package/adapters/json.d.ts +6 -0
- package/adapters/json.js +23 -0
- package/adapters/json.js.map +1 -0
- package/adapters/xliff.d.ts +6 -0
- package/adapters/xliff.js +35 -0
- package/adapters/xliff.js.map +1 -0
- package/cli/cli.d.ts +2 -0
- package/cli/cli.js +129 -0
- package/cli/cli.js.map +1 -0
- package/cli/collect.d.ts +14 -0
- package/{src/cli/collect.ts → cli/collect.js} +59 -75
- package/cli/collect.js.map +1 -0
- package/cli/interfaces.js +3 -0
- package/cli/interfaces.js.map +1 -0
- package/cli/reconciliate.d.ts +6 -0
- package/{src/cli/reconciliate.ts → cli/reconciliate.js} +35 -40
- package/cli/reconciliate.js.map +1 -0
- package/cli/utils.d.ts +6 -0
- package/{src/cli/utils.ts → cli/utils.js} +16 -12
- package/cli/utils.js.map +1 -0
- package/core/default-locale.d.ts +10 -0
- package/{src/core/default-locale.tsx → core/default-locale.js} +23 -28
- package/core/default-locale.js.map +1 -0
- package/{src/core/interfaces.ts → core/interfaces.d.ts} +15 -20
- package/core/interfaces.js +3 -0
- package/core/interfaces.js.map +1 -0
- package/core/json-utils.d.ts +19 -0
- package/{src/core/json-utils.ts → core/json-utils.js} +27 -33
- package/core/json-utils.js.map +1 -0
- package/core/literal.d.ts +13 -0
- package/{src/core/literal.ts → core/literal.js} +20 -19
- package/core/literal.js.map +1 -0
- package/core/load.d.ts +32 -0
- package/core/load.js +50 -0
- package/core/load.js.map +1 -0
- package/core/locale-list.d.ts +27 -0
- package/{src/core/locale-list.ts → core/locale-list.js} +35 -38
- package/core/locale-list.js.map +1 -0
- package/core/locale.d.ts +15 -0
- package/{src/core/locale.tsx → core/locale.js} +29 -28
- package/core/locale.js.map +1 -0
- package/core/smartloc.d.ts +39 -0
- package/{src/core/smartloc.tsx → core/smartloc.js} +104 -122
- package/core/smartloc.js.map +1 -0
- package/core/tag.d.ts +13 -0
- package/core/tag.js +26 -0
- package/core/tag.js.map +1 -0
- package/core/utils.d.ts +4 -0
- package/core/utils.js +30 -0
- package/core/utils.js.map +1 -0
- package/express.d.ts +12 -0
- package/{src/express.ts → express.js} +33 -41
- package/express.js.map +1 -0
- package/graphql.d.ts +13 -0
- package/{src/graphql.ts → graphql.js} +62 -74
- package/graphql.js.map +1 -0
- package/index.js +30 -1
- package/index.js.map +1 -0
- package/node/index.d.ts +1 -0
- package/node/index.js +18 -0
- package/node/index.js.map +1 -0
- package/node/load.d.ts +12 -0
- package/node/load.js +37 -0
- package/node/load.js.map +1 -0
- package/package.json +3 -22
- package/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc +0 -111
- package/.vscode/launch.json +0 -65
- package/.vscode/settings.json +0 -14
- package/.vscode/tasks.json +0 -27
- package/build/README.md +0 -225
- package/build/package.json +0 -60
- package/bun.lock +0 -310
- package/samples/express/main.ts +0 -37
- package/samples/express/package.json +0 -10
- package/samples/graphql/main.ts +0 -73
- package/samples/graphql/package.json +0 -15
- package/src/adapters/adapter-base.ts +0 -58
- package/src/adapters/index.ts +0 -31
- package/src/adapters/json.ts +0 -18
- package/src/adapters/xliff.ts +0 -30
- package/src/cli/cli.ts +0 -137
- package/src/core/load.ts +0 -82
- package/src/core/tag.ts +0 -48
- package/src/core/utils.tsx +0 -24
- package/src/node/index.ts +0 -1
- package/src/node/load.ts +0 -32
- package/test/collect.spec.ts +0 -45
- package/test/reconciliation.spec.ts +0 -132
- package/test/serialization.spec.ts +0 -162
- package/test/translation.spec.ts +0 -61
- package/tsconfig.json +0 -37
- package/tslint.json +0 -103
- /package/{src/cli/interfaces.ts → cli/interfaces.d.ts} +0 -0
- /package/{src/index.ts → index.d.ts} +0 -0
|
@@ -1,40 +1,65 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.multiLoc = exports.transformed = exports.smartLoc = void 0;
|
|
37
|
+
exports.useAsString = useAsString;
|
|
38
|
+
exports.withLocales = withLocales;
|
|
39
|
+
exports.withSerializationContext = withSerializationContext;
|
|
40
|
+
exports.singleLoc = singleLoc;
|
|
41
|
+
exports.joinArray = joinArray;
|
|
42
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
43
|
+
const locale_list_1 = require("./locale-list");
|
|
44
|
+
const literal_1 = require("./literal");
|
|
45
|
+
const react_1 = __importStar(require("react"));
|
|
46
|
+
const utils_1 = require("./utils");
|
|
47
|
+
let langCtx = null;
|
|
48
|
+
let serialContext = null;
|
|
49
|
+
function useAsString(loc) {
|
|
50
|
+
const [, setCount] = (0, react_1.useState)(0);
|
|
51
|
+
react_1.default.useEffect(() => {
|
|
52
|
+
const unsub = (0, locale_list_1.subscribeToLocaleChange)(() => setCount(c => c + 1));
|
|
17
53
|
return unsub;
|
|
18
54
|
}, []);
|
|
19
55
|
return loc?.toString();
|
|
20
56
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export interface SerializationContextOptions {
|
|
24
|
-
/** HOw non self-descriptive (MultiLoc, SingleLoc, ...) will be transformed. Defaults to 'id'.
|
|
25
|
-
*
|
|
26
|
-
* id => will serialize its ID ... the context of deserialization will be required to have the given translation
|
|
27
|
-
* skip => will be left as it (=> serialization will translate it)
|
|
28
|
-
* toMulti => translates to all registered languages, and serializes as a 'multi'
|
|
29
|
-
*/
|
|
30
|
-
nonSelfDescriptive?: 'skip' | 'toMulti' | 'id';
|
|
31
|
-
}
|
|
32
57
|
/**
|
|
33
58
|
* Execute something in the given locales context.
|
|
34
59
|
* @param acceptLanguages The accepted languages, by order of preference
|
|
35
60
|
* @param action Action to perform (usually a JSON.serialize() or a .toString() operation)
|
|
36
61
|
**/
|
|
37
|
-
|
|
62
|
+
function withLocales(acceptLanguages, action) {
|
|
38
63
|
if (!acceptLanguages || !acceptLanguages.length) {
|
|
39
64
|
return action();
|
|
40
65
|
}
|
|
@@ -42,62 +67,43 @@ export function withLocales<T = void>(acceptLanguages: string[], action: () => T
|
|
|
42
67
|
try {
|
|
43
68
|
// set accepted languages
|
|
44
69
|
langCtx = acceptLanguages
|
|
45
|
-
.map(getLocale)
|
|
70
|
+
.map(locale_list_1.getLocale)
|
|
46
71
|
.filter(x => !!x);
|
|
47
|
-
|
|
48
72
|
// perform action
|
|
49
73
|
return action();
|
|
50
|
-
}
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
51
76
|
langCtx = oldLangCtx;
|
|
52
77
|
}
|
|
53
78
|
}
|
|
54
|
-
|
|
55
79
|
/**
|
|
56
80
|
* Execute something in a context where .toJson() loc strings
|
|
57
81
|
* will be serialized into a form that is parsable via jsonParseLocalized()
|
|
58
82
|
*/
|
|
59
|
-
|
|
83
|
+
function withSerializationContext(action, options) {
|
|
60
84
|
const os = serialContext;
|
|
61
85
|
try {
|
|
62
86
|
serialContext = options || {};
|
|
63
87
|
return action();
|
|
64
|
-
}
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
65
90
|
serialContext = os;
|
|
66
91
|
}
|
|
67
92
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
interface SmartlocProps {
|
|
71
|
-
id: string,
|
|
72
|
-
literals: TemplateStringsArray | null;
|
|
73
|
-
placeholders: LocLiteral[] | null;
|
|
74
|
-
count: number | undefined;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function createKind<props extends object>(opts: {
|
|
78
|
-
name: string;
|
|
79
|
-
render: (props: props, locale: ILocaleDef) => React.ReactNode | null;
|
|
80
|
-
toString: (props: props, locale: ILocaleDef) => string | null;
|
|
81
|
-
toJson: (props: props) => any;
|
|
82
|
-
}) {
|
|
83
|
-
|
|
93
|
+
function createKind(opts) {
|
|
84
94
|
const Renderer = {
|
|
85
|
-
[opts.name]: class extends
|
|
86
|
-
|
|
87
|
-
locale: getCurrentLocale(),
|
|
95
|
+
[opts.name]: class extends react_1.default.Component {
|
|
96
|
+
rerender = () => this.setState({
|
|
97
|
+
locale: (0, locale_list_1.getCurrentLocale)(),
|
|
88
98
|
});
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
this.unsub = subscribeToLocaleChange(this.rerender);
|
|
93
|
-
|
|
99
|
+
unsub;
|
|
100
|
+
componentDidMount() {
|
|
101
|
+
this.unsub = (0, locale_list_1.subscribeToLocaleChange)(this.rerender);
|
|
94
102
|
}
|
|
95
|
-
|
|
96
|
-
override componentWillUnmount() {
|
|
103
|
+
componentWillUnmount() {
|
|
97
104
|
this.unsub?.();
|
|
98
105
|
}
|
|
99
|
-
|
|
100
|
-
override render(): React.ReactNode {
|
|
106
|
+
render() {
|
|
101
107
|
const locale = this.state?.locale;
|
|
102
108
|
if (locale) {
|
|
103
109
|
const rendered = opts.render(this.props, locale);
|
|
@@ -105,14 +111,14 @@ function createKind<props extends object>(opts: {
|
|
|
105
111
|
return rendered;
|
|
106
112
|
}
|
|
107
113
|
}
|
|
108
|
-
const currentLocale = getCurrentLocale(true);
|
|
114
|
+
const currentLocale = (0, locale_list_1.getCurrentLocale)(true);
|
|
109
115
|
if (currentLocale) {
|
|
110
116
|
const rendered = opts.render(this.props, currentLocale);
|
|
111
117
|
if (rendered) {
|
|
112
118
|
return rendered;
|
|
113
119
|
}
|
|
114
120
|
}
|
|
115
|
-
const defaultLocale = getDefaultLocale();
|
|
121
|
+
const defaultLocale = (0, locale_list_1.getDefaultLocale)();
|
|
116
122
|
if (defaultLocale) {
|
|
117
123
|
const rendered = opts.render(this.props, defaultLocale);
|
|
118
124
|
if (rendered) {
|
|
@@ -123,29 +129,25 @@ function createKind<props extends object>(opts: {
|
|
|
123
129
|
}
|
|
124
130
|
},
|
|
125
131
|
}[opts.name];
|
|
126
|
-
|
|
127
132
|
const Proto = {
|
|
128
|
-
[opts.name]: class
|
|
133
|
+
[opts.name]: class {
|
|
129
134
|
get locKind() {
|
|
130
135
|
return opts.name;
|
|
131
136
|
}
|
|
132
137
|
// will be set the hackky way, see creator below
|
|
133
|
-
props
|
|
134
|
-
|
|
138
|
+
props;
|
|
135
139
|
toJSON() {
|
|
136
140
|
if (!serialContext) {
|
|
137
141
|
return this.toString();
|
|
138
142
|
}
|
|
139
143
|
return opts.toJson(this.props);
|
|
140
144
|
}
|
|
141
|
-
|
|
142
|
-
toString(locale?: string | ILocaleDef | null): string {
|
|
145
|
+
toString(locale) {
|
|
143
146
|
if (typeof locale === 'string') {
|
|
144
|
-
locale = getLocale(locale);
|
|
147
|
+
locale = (0, locale_list_1.getLocale)(locale);
|
|
145
148
|
}
|
|
146
|
-
|
|
147
149
|
if (locale) {
|
|
148
|
-
const localized = opts.toString(this.props, locale)
|
|
150
|
+
const localized = opts.toString(this.props, locale);
|
|
149
151
|
if (localized) {
|
|
150
152
|
return localized;
|
|
151
153
|
}
|
|
@@ -158,18 +160,16 @@ function createKind<props extends object>(opts: {
|
|
|
158
160
|
}
|
|
159
161
|
}
|
|
160
162
|
}
|
|
161
|
-
|
|
162
163
|
// try current locale
|
|
163
|
-
const currentLocale = getCurrentLocale(true);
|
|
164
|
+
const currentLocale = (0, locale_list_1.getCurrentLocale)(true);
|
|
164
165
|
if (currentLocale) {
|
|
165
166
|
const localized = opts.toString(this.props, currentLocale);
|
|
166
167
|
if (localized) {
|
|
167
168
|
return localized;
|
|
168
169
|
}
|
|
169
170
|
}
|
|
170
|
-
|
|
171
171
|
// fallback to default locale
|
|
172
|
-
const defaultLocale = getDefaultLocale();
|
|
172
|
+
const defaultLocale = (0, locale_list_1.getDefaultLocale)();
|
|
173
173
|
if (!defaultLocale) {
|
|
174
174
|
throw new Error('You must specify default locale via setDefaultLocale() before using localization');
|
|
175
175
|
}
|
|
@@ -180,56 +180,44 @@ function createKind<props extends object>(opts: {
|
|
|
180
180
|
}
|
|
181
181
|
return def;
|
|
182
182
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
return transformed({
|
|
183
|
+
transform(transformer) {
|
|
184
|
+
return (0, exports.transformed)({
|
|
186
185
|
parent: this,
|
|
187
186
|
transformer,
|
|
188
187
|
});
|
|
189
188
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const unsub = subscribeToLocaleChange(() => setCount(c => c + 1));
|
|
189
|
+
useAsString() {
|
|
190
|
+
const [, setCount] = (0, react_1.useState)(0);
|
|
191
|
+
react_1.default.useEffect(() => {
|
|
192
|
+
const unsub = (0, locale_list_1.subscribeToLocaleChange)(() => setCount(c => c + 1));
|
|
195
193
|
return unsub;
|
|
196
194
|
}, []);
|
|
197
195
|
return this.toString();
|
|
198
196
|
}
|
|
199
197
|
}
|
|
200
198
|
}[opts.name];
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
199
|
// trick to create a function that is named like the given name
|
|
205
200
|
const creator = {
|
|
206
|
-
[opts.name](props
|
|
201
|
+
[opts.name](props) {
|
|
207
202
|
// This is a dirty hack to create some item that will both be recognized by React as a valid element,
|
|
208
203
|
// but that also behaves as a LocStr with the appropriate methods.
|
|
209
204
|
// 1) create a react element
|
|
210
|
-
const e =
|
|
211
|
-
|
|
205
|
+
const e = react_1.default.createElement(Renderer, props);
|
|
212
206
|
// 2) create a new instance of our LocStr kind
|
|
213
207
|
const ret = Object.create(Proto.prototype);
|
|
214
|
-
|
|
215
208
|
// 3) raw-copy what the react element has as properties
|
|
216
209
|
// ... this work because React.createElement() actually only creates a raw frozen object with some properties.
|
|
217
210
|
// see createElement() source code
|
|
218
211
|
const eProps = Object.getOwnPropertyDescriptors(e);
|
|
219
212
|
Object.defineProperties(ret, eProps);
|
|
220
|
-
|
|
221
213
|
// 4) set the isLoc flag to true so isLocStr() will recognize this instance
|
|
222
|
-
setIsLoc(ret); // this will freeze the object
|
|
214
|
+
(0, literal_1.setIsLoc)(ret); // this will freeze the object
|
|
223
215
|
return ret;
|
|
224
216
|
}
|
|
225
217
|
}[opts.name];
|
|
226
|
-
|
|
227
218
|
return creator;
|
|
228
219
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
export const smartLoc = createKind<SmartlocProps>({
|
|
220
|
+
exports.smartLoc = createKind({
|
|
233
221
|
name: 'SmartLoc',
|
|
234
222
|
render(props, locale) {
|
|
235
223
|
return locale.localize(props.id, props.count ?? null, props.literals, props.placeholders, true);
|
|
@@ -238,19 +226,19 @@ export const smartLoc = createKind<SmartlocProps>({
|
|
|
238
226
|
return locale.localize(props.id, props.count ?? null, props.literals, props.placeholders, false);
|
|
239
227
|
},
|
|
240
228
|
toJson(props) {
|
|
241
|
-
switch (serialContext
|
|
229
|
+
switch (serialContext.nonSelfDescriptive) {
|
|
242
230
|
case 'skip':
|
|
243
231
|
return this;
|
|
244
232
|
case 'toMulti':
|
|
245
|
-
const multi
|
|
246
|
-
for (const l of listLocaleDefs()) {
|
|
233
|
+
const multi = {};
|
|
234
|
+
for (const l of (0, locale_list_1.listLocaleDefs)()) {
|
|
247
235
|
const str = this.toString(props, l);
|
|
248
236
|
if (str) {
|
|
249
237
|
multi[l.id] = str;
|
|
250
238
|
}
|
|
251
239
|
}
|
|
252
240
|
// tslint:disable-next-line: no-use-before-declare
|
|
253
|
-
return multiLoc(multi).toJSON();
|
|
241
|
+
return (0, exports.multiLoc)(multi).toJSON();
|
|
254
242
|
default:
|
|
255
243
|
if (props.placeholders?.length || props.count !== undefined) {
|
|
256
244
|
return {
|
|
@@ -263,14 +251,12 @@ export const smartLoc = createKind<SmartlocProps>({
|
|
|
263
251
|
return `i18n/id:${props.id}`;
|
|
264
252
|
}
|
|
265
253
|
},
|
|
266
|
-
|
|
267
254
|
});
|
|
268
|
-
|
|
269
|
-
export const transformed = createKind<{ parent: InternalLocStr; transformer: (x: string) => string; }>({
|
|
255
|
+
exports.transformed = createKind({
|
|
270
256
|
name: 'TransformedLoc',
|
|
271
257
|
render(props, _) {
|
|
272
258
|
console.warn('Transformed localized string cannot be rendered as React nodes => fallback to parent rendering');
|
|
273
|
-
return
|
|
259
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: props.parent });
|
|
274
260
|
},
|
|
275
261
|
toString(props, locale) {
|
|
276
262
|
const ret = props.parent.toString(locale);
|
|
@@ -283,11 +269,10 @@ export const transformed = createKind<{ parent: InternalLocStr; transformer: (x:
|
|
|
283
269
|
return props.parent.toJSON();
|
|
284
270
|
},
|
|
285
271
|
});
|
|
286
|
-
|
|
272
|
+
function singleLoc(text) {
|
|
287
273
|
return _singleLoc({ text });
|
|
288
274
|
}
|
|
289
|
-
|
|
290
|
-
const _singleLoc = createKind<{ text: string }>({
|
|
275
|
+
const _singleLoc = createKind({
|
|
291
276
|
name: 'SingleLoc',
|
|
292
277
|
render(props) {
|
|
293
278
|
return props.text;
|
|
@@ -299,14 +284,12 @@ const _singleLoc = createKind<{ text: string }>({
|
|
|
299
284
|
return 'i18n/single:' + props.text;
|
|
300
285
|
},
|
|
301
286
|
});
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
export const multiLoc = createKind<Record<string, string>>({
|
|
287
|
+
exports.multiLoc = createKind({
|
|
305
288
|
name: 'MultiLoc',
|
|
306
289
|
render(props, locale) {
|
|
307
290
|
const t = this.toString(props, locale);
|
|
308
291
|
if (!t) {
|
|
309
|
-
return
|
|
292
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
|
|
310
293
|
}
|
|
311
294
|
return t;
|
|
312
295
|
},
|
|
@@ -314,22 +297,20 @@ export const multiLoc = createKind<Record<string, string>>({
|
|
|
314
297
|
return props[locale.id] ?? props[locale.code ?? ''];
|
|
315
298
|
},
|
|
316
299
|
toJson(props) {
|
|
317
|
-
const ret
|
|
300
|
+
const ret = {};
|
|
318
301
|
for (const [k, v] of Object.entries(props)) {
|
|
319
302
|
ret[`i18n:${k}`] = v;
|
|
320
303
|
}
|
|
321
304
|
return ret;
|
|
322
305
|
}
|
|
323
306
|
});
|
|
324
|
-
|
|
325
|
-
export function joinArray(separator: string | LocStr, items: (string | LocStr)[]): LocStr {
|
|
307
|
+
function joinArray(separator, items) {
|
|
326
308
|
return _joinedArray({ items, separator });
|
|
327
309
|
}
|
|
328
|
-
|
|
329
|
-
const _joinedArray = createKind<{ separator: string | LocStr, items: (string | LocStr)[] }>({
|
|
310
|
+
const _joinedArray = createKind({
|
|
330
311
|
name: 'LocStringArray',
|
|
331
312
|
render(props) {
|
|
332
|
-
const elts
|
|
313
|
+
const elts = [];
|
|
333
314
|
// locstrings are react-elements
|
|
334
315
|
for (let i = 0; i < props.items.length; i++) {
|
|
335
316
|
if (i) {
|
|
@@ -337,7 +318,7 @@ const _joinedArray = createKind<{ separator: string | LocStr, items: (string | L
|
|
|
337
318
|
}
|
|
338
319
|
elts.push(props.items[i]);
|
|
339
320
|
}
|
|
340
|
-
return asFragment(elts);
|
|
321
|
+
return (0, utils_1.asFragment)(elts);
|
|
341
322
|
},
|
|
342
323
|
toString(props, locale) {
|
|
343
324
|
const sep = typeof props.separator === 'string' ? props.separator : props.separator.toString(locale);
|
|
@@ -346,4 +327,5 @@ const _joinedArray = createKind<{ separator: string | LocStr, items: (string | L
|
|
|
346
327
|
toJson() {
|
|
347
328
|
throw new Error('Cannot transform a joined array to json');
|
|
348
329
|
}
|
|
349
|
-
});
|
|
330
|
+
});
|
|
331
|
+
//# sourceMappingURL=smartloc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smartloc.js","sourceRoot":"","sources":["../../src/core/smartloc.tsx"],"names":[],"mappings":"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"}
|
package/core/tag.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { LocLiteral, LocStr } from './interfaces';
|
|
2
|
+
type Templater = (literals: TemplateStringsArray, ...placeholders: LocLiteral[]) => LocStr;
|
|
3
|
+
declare function _tagSig(id: string): Templater;
|
|
4
|
+
declare function _tagSig(literals: TemplateStringsArray, ...placeholders: LocLiteral[]): LocStr;
|
|
5
|
+
type TagSignature = typeof _tagSig;
|
|
6
|
+
type LocTag = TagSignature & {
|
|
7
|
+
/** Creates a pluralizable string (will have two versions to be translated based on the given count: singlular & plural) */
|
|
8
|
+
plural(count: number): TagSignature;
|
|
9
|
+
/** Does nothing, except that the translation will not be collected (use for formatting purposes) */
|
|
10
|
+
readonly nocollect: LocTag;
|
|
11
|
+
};
|
|
12
|
+
export declare const loc: LocTag;
|
|
13
|
+
export {};
|
package/core/tag.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
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(count, idOrLiterals, ...ph) {
|
|
7
|
+
if (typeof idOrLiterals === 'string') {
|
|
8
|
+
const id = idOrLiterals;
|
|
9
|
+
return (literals, ...placeholders) => {
|
|
10
|
+
return (0, smartloc_1.smartLoc)({ id, literals, placeholders, count });
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
return (0, smartloc_1.smartLoc)({ id: (0, utils_1.autoGenerateId)(idOrLiterals), literals: idOrLiterals, placeholders: ph, count });
|
|
14
|
+
}
|
|
15
|
+
function _loc(idOrLiteralsOrCount, ...ph) {
|
|
16
|
+
return __loc(undefined, idOrLiteralsOrCount, ...ph);
|
|
17
|
+
}
|
|
18
|
+
_loc.plural = (count) => {
|
|
19
|
+
function templater(idOrLiterals, ...ph) {
|
|
20
|
+
return __loc(count, idOrLiterals, ...ph);
|
|
21
|
+
}
|
|
22
|
+
return templater;
|
|
23
|
+
};
|
|
24
|
+
_loc.nocollect = _loc;
|
|
25
|
+
exports.loc = _loc;
|
|
26
|
+
//# sourceMappingURL=tag.js.map
|
package/core/tag.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/core/tag.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC,mCAAyC;AAkBzC,SAAS,KAAK,CAAC,KAAyB,EAAE,YAA2C,EAAE,GAAG,EAAgB;IACtG,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,YAAY,CAAC;QACxB,OAAO,CAAC,QAA8B,EAAE,GAAG,YAA0B,EAAE,EAAE;YACrE,OAAO,IAAA,mBAAQ,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC;IACN,CAAC;IACD,OAAO,IAAA,mBAAQ,EAAC,EAAE,EAAE,EAAE,IAAA,sBAAc,EAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3G,CAAC;AAID,SAAS,IAAI,CAAC,mBAAkD,EAAE,GAAG,EAAgB;IACjF,OAAO,KAAK,CAAC,SAAS,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;AACxD,CAAC;AACD,IAAI,CAAC,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;IAG5B,SAAS,SAAS,CAAC,YAA2C,EAAE,GAAG,EAAgB;QAC/E,OAAO,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAET,QAAA,GAAG,GAAW,IAAW,CAAC"}
|
package/core/utils.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare function autoGenerateId(str: TemplateStringsArray | string[]): string;
|
|
3
|
+
export declare function getLocaleCode(locale: string): string | undefined;
|
|
4
|
+
export declare function asFragment(children: React.ReactNode[]): React.ReactNode;
|
package/core/utils.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
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 = autoGenerateId;
|
|
7
|
+
exports.getLocaleCode = getLocaleCode;
|
|
8
|
+
exports.asFragment = asFragment;
|
|
9
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
10
|
+
const js_sha1_1 = require("js-sha1");
|
|
11
|
+
const react_1 = __importDefault(require("react"));
|
|
12
|
+
function autoGenerateId(str) {
|
|
13
|
+
const sha = (0, js_sha1_1.sha1)(str.join('|'));
|
|
14
|
+
return 'sha1.' + sha;
|
|
15
|
+
}
|
|
16
|
+
function getLocaleCode(locale) {
|
|
17
|
+
return locale && /^[a-z]+/.exec(locale.toLowerCase())?.[0] || undefined;
|
|
18
|
+
}
|
|
19
|
+
function asFragment(children) {
|
|
20
|
+
if (children.length === 1) {
|
|
21
|
+
return children[0];
|
|
22
|
+
}
|
|
23
|
+
return (0, jsx_runtime_1.jsx)(react_1.default.Fragment, { children: children.map((x, i) => {
|
|
24
|
+
if (react_1.default.isValidElement(x) && !x.key) {
|
|
25
|
+
return (0, jsx_runtime_1.jsx)(react_1.default.Fragment, { children: x }, i);
|
|
26
|
+
}
|
|
27
|
+
return x;
|
|
28
|
+
}) });
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.tsx"],"names":[],"mappings":";;;;;AAGA,wCAGC;AAED,sCAEC;AAGD,gCAUC;;AAvBD,qCAA+B;AAC/B,kDAA0B;AAE1B,SAAgB,cAAc,CAAC,GAAoC;IAC/D,MAAM,GAAG,GAAG,IAAA,cAAI,EAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,OAAO,OAAO,GAAG,GAAG,CAAC;AACzB,CAAC;AAED,SAAgB,aAAa,CAAC,MAAc;IACxC,OAAO,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AAC5E,CAAC;AAGD,SAAgB,UAAU,CAAC,QAA2B;IAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,uBAAC,eAAK,CAAC,QAAQ,cAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,eAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBACpC,OAAO,uBAAC,eAAK,CAAC,QAAQ,cAAU,CAAC,IAAL,CAAC,CAAsB,CAAC;YACxD,CAAC;YACD,OAAO,CAAC,CAAC;QACb,CAAC,CAAC,GAAkB,CAAC;AACzB,CAAC"}
|
package/express.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
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;
|