canopy-i18n 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bindLocale.d.ts +2 -2
- package/dist/bindLocale.js +6 -10
- package/dist/chainBuilder.d.ts +2 -2
- package/dist/chainBuilder.js +7 -12
- package/dist/index.d.ts +5 -5
- package/dist/index.js +3 -12
- package/dist/message.d.ts +1 -1
- package/dist/message.js +4 -9
- package/dist/types.js +1 -4
- package/package.json +2 -3
package/dist/bindLocale.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ChainBuilder } from "./chainBuilder";
|
|
2
|
-
import { I18nMessage } from "./message";
|
|
1
|
+
import { ChainBuilder } from "./chainBuilder.js";
|
|
2
|
+
import { I18nMessage } from "./message.js";
|
|
3
3
|
export declare function isChainBuilder(x: unknown): x is ChainBuilder<any, any>;
|
|
4
4
|
type DeepUnwrapChainBuilders<T> = T extends I18nMessage<any, any, any> ? T : T extends ChainBuilder<any, infer Messages> ? Messages : T extends readonly any[] ? {
|
|
5
5
|
[K in keyof T]: DeepUnwrapChainBuilders<T[K]>;
|
package/dist/bindLocale.js
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const chainBuilder_1 = require("./chainBuilder");
|
|
6
|
-
const message_1 = require("./message");
|
|
7
|
-
function isChainBuilder(x) {
|
|
8
|
-
return x instanceof chainBuilder_1.ChainBuilder;
|
|
1
|
+
import { ChainBuilder } from "./chainBuilder.js";
|
|
2
|
+
import { isI18nMessage } from "./message.js";
|
|
3
|
+
export function isChainBuilder(x) {
|
|
4
|
+
return x instanceof ChainBuilder;
|
|
9
5
|
}
|
|
10
|
-
function bindLocale(obj, locale) {
|
|
6
|
+
export function bindLocale(obj, locale) {
|
|
11
7
|
function visit(v) {
|
|
12
8
|
if (isChainBuilder(v)) {
|
|
13
9
|
return v.build(locale);
|
|
14
10
|
}
|
|
15
|
-
if (
|
|
11
|
+
if (isI18nMessage(v)) {
|
|
16
12
|
v.setLocale(locale);
|
|
17
13
|
return v;
|
|
18
14
|
}
|
package/dist/chainBuilder.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { I18nMessage } from "./message";
|
|
2
|
-
import type { LocalizedMessage } from "./message";
|
|
1
|
+
import { I18nMessage } from "./message.js";
|
|
2
|
+
import type { LocalizedMessage } from "./message.js";
|
|
3
3
|
export declare class ChainBuilder<const Ls extends readonly string[], Messages extends Record<string, I18nMessage<Ls, any, any>> = {}> {
|
|
4
4
|
private readonly locales;
|
|
5
5
|
private messages;
|
package/dist/chainBuilder.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.ChainBuilder = void 0;
|
|
4
|
-
exports.createI18n = createI18n;
|
|
5
|
-
const message_1 = require("./message");
|
|
6
|
-
class ChainBuilder {
|
|
1
|
+
import { I18nMessage, isI18nMessage } from "./message.js";
|
|
2
|
+
export class ChainBuilder {
|
|
7
3
|
locales;
|
|
8
4
|
messages;
|
|
9
5
|
constructor(locales, messages) {
|
|
@@ -17,7 +13,7 @@ class ChainBuilder {
|
|
|
17
13
|
add(entries) {
|
|
18
14
|
const newMessages = { ...this.messages };
|
|
19
15
|
for (const [key, data] of Object.entries(entries)) {
|
|
20
|
-
const msg = new
|
|
16
|
+
const msg = new I18nMessage(this.locales, this.locales[0]).setData(data);
|
|
21
17
|
newMessages[key] = msg;
|
|
22
18
|
}
|
|
23
19
|
return new ChainBuilder(this.locales, newMessages);
|
|
@@ -29,14 +25,14 @@ class ChainBuilder {
|
|
|
29
25
|
return (entries) => {
|
|
30
26
|
const newMessages = { ...this.messages };
|
|
31
27
|
for (const [key, data] of Object.entries(entries)) {
|
|
32
|
-
const msg = new
|
|
28
|
+
const msg = new I18nMessage(this.locales, this.locales[0]).setData(data);
|
|
33
29
|
newMessages[key] = msg;
|
|
34
30
|
}
|
|
35
31
|
return new ChainBuilder(this.locales, newMessages);
|
|
36
32
|
};
|
|
37
33
|
}
|
|
38
34
|
deepCloneWithLocale(obj, locale) {
|
|
39
|
-
if (
|
|
35
|
+
if (isI18nMessage(obj)) {
|
|
40
36
|
const cloned = Object.create(Object.getPrototypeOf(obj));
|
|
41
37
|
Object.assign(cloned, obj);
|
|
42
38
|
cloned.setLocale(locale);
|
|
@@ -66,7 +62,7 @@ class ChainBuilder {
|
|
|
66
62
|
clone() {
|
|
67
63
|
const clonedMessages = {};
|
|
68
64
|
for (const [key, msg] of Object.entries(this.messages)) {
|
|
69
|
-
if (
|
|
65
|
+
if (isI18nMessage(msg)) {
|
|
70
66
|
// I18nMessageをクローン
|
|
71
67
|
const cloned = Object.create(Object.getPrototypeOf(msg));
|
|
72
68
|
Object.assign(cloned, msg);
|
|
@@ -79,7 +75,6 @@ class ChainBuilder {
|
|
|
79
75
|
return new ChainBuilder(this.locales, clonedMessages);
|
|
80
76
|
}
|
|
81
77
|
}
|
|
82
|
-
|
|
83
|
-
function createI18n(locales) {
|
|
78
|
+
export function createI18n(locales) {
|
|
84
79
|
return new ChainBuilder(locales);
|
|
85
80
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { bindLocale, isChainBuilder } from "./bindLocale";
|
|
2
|
-
export { ChainBuilder, createI18n } from "./chainBuilder";
|
|
3
|
-
export { I18nMessage, isI18nMessage } from "./message";
|
|
4
|
-
export type { LocalizedMessage } from "./message";
|
|
5
|
-
export type { Template } from "./types";
|
|
1
|
+
export { bindLocale, isChainBuilder } from "./bindLocale.js";
|
|
2
|
+
export { ChainBuilder, createI18n } from "./chainBuilder.js";
|
|
3
|
+
export { I18nMessage, isI18nMessage } from "./message.js";
|
|
4
|
+
export type { LocalizedMessage } from "./message.js";
|
|
5
|
+
export type { Template } from "./types.js";
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var bindLocale_1 = require("./bindLocale");
|
|
5
|
-
Object.defineProperty(exports, "bindLocale", { enumerable: true, get: function () { return bindLocale_1.bindLocale; } });
|
|
6
|
-
Object.defineProperty(exports, "isChainBuilder", { enumerable: true, get: function () { return bindLocale_1.isChainBuilder; } });
|
|
7
|
-
var chainBuilder_1 = require("./chainBuilder");
|
|
8
|
-
Object.defineProperty(exports, "ChainBuilder", { enumerable: true, get: function () { return chainBuilder_1.ChainBuilder; } });
|
|
9
|
-
Object.defineProperty(exports, "createI18n", { enumerable: true, get: function () { return chainBuilder_1.createI18n; } });
|
|
10
|
-
var message_1 = require("./message");
|
|
11
|
-
Object.defineProperty(exports, "I18nMessage", { enumerable: true, get: function () { return message_1.I18nMessage; } });
|
|
12
|
-
Object.defineProperty(exports, "isI18nMessage", { enumerable: true, get: function () { return message_1.isI18nMessage; } });
|
|
1
|
+
export { bindLocale, isChainBuilder } from "./bindLocale.js";
|
|
2
|
+
export { ChainBuilder, createI18n } from "./chainBuilder.js";
|
|
3
|
+
export { I18nMessage, isI18nMessage } from "./message.js";
|
package/dist/message.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Template } from "./types";
|
|
1
|
+
import type { Template } from "./types.js";
|
|
2
2
|
export type LocalizedMessage<Ls extends readonly string[], C, R = string> = I18nMessage<Ls, C, R>;
|
|
3
3
|
export declare function isI18nMessage(x: unknown): x is I18nMessage<any, any, any>;
|
|
4
4
|
export declare class I18nMessage<Ls extends readonly string[], C, R = string> {
|
package/dist/message.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.I18nMessage = void 0;
|
|
4
|
-
exports.isI18nMessage = isI18nMessage;
|
|
5
|
-
const types_1 = require("./types");
|
|
6
|
-
function isI18nMessage(x) {
|
|
1
|
+
import { isTemplateFunction } from "./types.js";
|
|
2
|
+
export function isI18nMessage(x) {
|
|
7
3
|
return x instanceof I18nMessage;
|
|
8
4
|
}
|
|
9
|
-
class I18nMessage {
|
|
5
|
+
export class I18nMessage {
|
|
10
6
|
locales;
|
|
11
7
|
_locale;
|
|
12
8
|
_data;
|
|
@@ -30,10 +26,9 @@ class I18nMessage {
|
|
|
30
26
|
}
|
|
31
27
|
render(ctx) {
|
|
32
28
|
const v = this._data[this._locale];
|
|
33
|
-
if (
|
|
29
|
+
if (isTemplateFunction(v)) {
|
|
34
30
|
return v(ctx);
|
|
35
31
|
}
|
|
36
32
|
return v;
|
|
37
33
|
}
|
|
38
34
|
}
|
|
39
|
-
exports.I18nMessage = I18nMessage;
|
package/dist/types.js
CHANGED
package/package.json
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "canopy-i18n",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "A tiny, type-safe i18n helper",
|
|
5
|
-
"type": "
|
|
5
|
+
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
11
11
|
"import": "./dist/index.js",
|
|
12
|
-
"require": "./dist/index.js",
|
|
13
12
|
"default": "./dist/index.js"
|
|
14
13
|
}
|
|
15
14
|
},
|