@salesforce/vscode-i18n 65.5.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.txt +27 -0
- package/README.md +120 -0
- package/out/src/constants.d.ts +5 -0
- package/out/src/constants.d.ts.map +1 -0
- package/out/src/constants.js +13 -0
- package/out/src/i18n/advancedLocalization.d.ts +37 -0
- package/out/src/i18n/advancedLocalization.d.ts.map +1 -0
- package/out/src/i18n/advancedLocalization.js +149 -0
- package/out/src/i18n/localization.d.ts +8 -0
- package/out/src/i18n/localization.d.ts.map +1 -0
- package/out/src/i18n/localization.js +21 -0
- package/out/src/i18n/message.d.ts +10 -0
- package/out/src/i18n/message.d.ts.map +1 -0
- package/out/src/i18n/message.js +62 -0
- package/out/src/index.d.ts +11 -0
- package/out/src/index.d.ts.map +1 -0
- package/out/src/index.js +24 -0
- package/out/src/types/localization/advancedTypes.d.ts +7 -0
- package/out/src/types/localization/advancedTypes.d.ts.map +1 -0
- package/out/src/types/localization/advancedTypes.js +9 -0
- package/out/src/types/localization/config.d.ts +5 -0
- package/out/src/types/localization/config.d.ts.map +1 -0
- package/out/src/types/localization/config.js +9 -0
- package/out/src/types/localization/localizationProvider.d.ts +4 -0
- package/out/src/types/localization/localizationProvider.d.ts.map +1 -0
- package/out/src/types/localization/localizationProvider.js +9 -0
- package/out/src/types/localization/messageArgs.d.ts +5 -0
- package/out/src/types/localization/messageArgs.d.ts.map +1 -0
- package/out/src/types/localization/messageArgs.js +9 -0
- package/out/src/types/localization/messageBundle.d.ts +4 -0
- package/out/src/types/localization/messageBundle.d.ts.map +1 -0
- package/out/src/types/localization/messageBundle.js +3 -0
- package/out/test/jest/i18n/advancedLocalization.test.d.ts +2 -0
- package/out/test/jest/i18n/advancedLocalization.test.d.ts.map +1 -0
- package/out/test/jest/i18n/advancedLocalization.test.js +340 -0
- package/out/test/jest/i18n/localization.test.d.ts +2 -0
- package/out/test/jest/i18n/localization.test.d.ts.map +1 -0
- package/out/test/jest/i18n/localization.test.js +32 -0
- package/out/test/jest/i18n/message.test.d.ts +2 -0
- package/out/test/jest/i18n/message.test.d.ts.map +1 -0
- package/out/test/jest/i18n/message.test.js +153 -0
- package/out/test/jest/types/localization.test.d.ts +2 -0
- package/out/test/jest/types/localization.test.d.ts.map +1 -0
- package/out/test/jest/types/localization.test.js +132 -0
- package/package.json +33 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2024, salesforce.com, inc.
|
|
4
|
+
* All rights reserved.
|
|
5
|
+
* Licensed under the BSD 3-Clause license.
|
|
6
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
describe('Localization Types Unit Tests', () => {
|
|
10
|
+
describe('Locale Type', () => {
|
|
11
|
+
it('should accept valid locale values', () => {
|
|
12
|
+
const enLocale = 'en';
|
|
13
|
+
const jaLocale = 'ja';
|
|
14
|
+
expect(enLocale).toBe('en');
|
|
15
|
+
expect(jaLocale).toBe('ja');
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
describe('Config Type', () => {
|
|
19
|
+
it('should create valid config objects', () => {
|
|
20
|
+
const enConfig = { locale: 'en' };
|
|
21
|
+
const jaConfig = { locale: 'ja' };
|
|
22
|
+
expect(enConfig.locale).toBe('en');
|
|
23
|
+
expect(jaConfig.locale).toBe('ja');
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('MessageBundle Type', () => {
|
|
27
|
+
it('should create valid message bundle objects', () => {
|
|
28
|
+
const messageBundle = {
|
|
29
|
+
hello: 'Hello',
|
|
30
|
+
goodbye: 'Goodbye',
|
|
31
|
+
greeting: 'Hello %s'
|
|
32
|
+
};
|
|
33
|
+
expect(messageBundle.hello).toBe('Hello');
|
|
34
|
+
expect(messageBundle.goodbye).toBe('Goodbye');
|
|
35
|
+
expect(messageBundle.greeting).toBe('Hello %s');
|
|
36
|
+
});
|
|
37
|
+
it('should allow empty message bundles', () => {
|
|
38
|
+
const emptyBundle = {};
|
|
39
|
+
expect(Object.keys(emptyBundle)).toHaveLength(0);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe('AdvancedMessageBundle Type', () => {
|
|
43
|
+
it('should create valid base message bundles', () => {
|
|
44
|
+
const baseBundle = {
|
|
45
|
+
type: 'base',
|
|
46
|
+
messages: {
|
|
47
|
+
'app.title': 'My Application',
|
|
48
|
+
'error.generic': 'An error occurred'
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
expect(baseBundle.type).toBe('base');
|
|
52
|
+
expect(baseBundle.messages['app.title']).toBe('My Application');
|
|
53
|
+
expect(baseBundle.locale).toBeUndefined();
|
|
54
|
+
});
|
|
55
|
+
it('should create valid locale message bundles with explicit locale', () => {
|
|
56
|
+
const localeBundle = {
|
|
57
|
+
type: 'locale',
|
|
58
|
+
locale: 'ja',
|
|
59
|
+
messages: {
|
|
60
|
+
_locale: 'ja',
|
|
61
|
+
'app.title': 'マイアプリケーション',
|
|
62
|
+
'error.generic': 'エラーが発生しました'
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
expect(localeBundle.type).toBe('locale');
|
|
66
|
+
expect(localeBundle.locale).toBe('ja');
|
|
67
|
+
expect(localeBundle.messages['_locale']).toBe('ja');
|
|
68
|
+
expect(localeBundle.messages['app.title']).toBe('マイアプリケーション');
|
|
69
|
+
});
|
|
70
|
+
it('should create valid locale message bundles without explicit locale', () => {
|
|
71
|
+
const localeBundle = {
|
|
72
|
+
type: 'locale',
|
|
73
|
+
messages: {
|
|
74
|
+
_locale: 'ja',
|
|
75
|
+
'app.title': 'マイアプリケーション'
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
expect(localeBundle.type).toBe('locale');
|
|
79
|
+
expect(localeBundle.locale).toBeUndefined();
|
|
80
|
+
expect(localeBundle.messages['_locale']).toBe('ja');
|
|
81
|
+
});
|
|
82
|
+
it('should handle empty message bundles', () => {
|
|
83
|
+
const emptyBaseBundle = {
|
|
84
|
+
type: 'base',
|
|
85
|
+
messages: {}
|
|
86
|
+
};
|
|
87
|
+
const emptyLocaleBundle = {
|
|
88
|
+
type: 'locale',
|
|
89
|
+
locale: 'en',
|
|
90
|
+
messages: {}
|
|
91
|
+
};
|
|
92
|
+
expect(emptyBaseBundle.type).toBe('base');
|
|
93
|
+
expect(Object.keys(emptyBaseBundle.messages)).toHaveLength(0);
|
|
94
|
+
expect(emptyLocaleBundle.type).toBe('locale');
|
|
95
|
+
expect(Object.keys(emptyLocaleBundle.messages)).toHaveLength(0);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('Type Compatibility', () => {
|
|
99
|
+
it('should allow MessageBundle to be used in AdvancedMessageBundle', () => {
|
|
100
|
+
const simpleBundle = {
|
|
101
|
+
key1: 'value1',
|
|
102
|
+
key2: 'value2'
|
|
103
|
+
};
|
|
104
|
+
const advancedBundle = {
|
|
105
|
+
type: 'base',
|
|
106
|
+
messages: simpleBundle
|
|
107
|
+
};
|
|
108
|
+
expect(advancedBundle.messages).toBe(simpleBundle);
|
|
109
|
+
});
|
|
110
|
+
it('should handle complex message structures', () => {
|
|
111
|
+
const complexBundle = {
|
|
112
|
+
type: 'locale',
|
|
113
|
+
locale: 'ja',
|
|
114
|
+
messages: {
|
|
115
|
+
_locale: 'ja',
|
|
116
|
+
'nested.key.deep': 'Deep nested value',
|
|
117
|
+
'format.string': 'Hello %s, you have %d messages',
|
|
118
|
+
'boolean.key': 'true',
|
|
119
|
+
'number.key': '42',
|
|
120
|
+
'special.chars': 'Special chars: !@#$%^&*()',
|
|
121
|
+
'unicode.chars': '日本語のテキスト',
|
|
122
|
+
'empty.value': ''
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
expect(complexBundle.messages['nested.key.deep']).toBe('Deep nested value');
|
|
126
|
+
expect(complexBundle.messages['format.string']).toBe('Hello %s, you have %d messages');
|
|
127
|
+
expect(complexBundle.messages['unicode.chars']).toBe('日本語のテキスト');
|
|
128
|
+
expect(complexBundle.messages['empty.value']).toBe('');
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=localization.test.js.map
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@salesforce/vscode-i18n",
|
|
3
|
+
"version": "65.5.0",
|
|
4
|
+
"description": "Internationalization (i18n) library for Salesforce VS Code extensions",
|
|
5
|
+
"author": "Salesforce",
|
|
6
|
+
"license": "BSD-3-Clause",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/forcedotcom/salesforcedx-vscode"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/forcedotcom/salesforcedx-vscode/issues"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/packages/salesforcedx-vscode-i18n",
|
|
15
|
+
"main": "out/src/index.js",
|
|
16
|
+
"types": "out/src/index.d.ts",
|
|
17
|
+
"files": [
|
|
18
|
+
"out/**/*.js",
|
|
19
|
+
"out/**/*.d.ts",
|
|
20
|
+
"out/**/*.d.ts.map"
|
|
21
|
+
],
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"compile": "tsc -p ./",
|
|
27
|
+
"lint": "eslint .",
|
|
28
|
+
"lint:fix": "npm run lint -- --fix",
|
|
29
|
+
"watch": "tsc -watch -p .",
|
|
30
|
+
"clean": "shx rm -rf node_modules && shx rm -rf out && shx rm -rf coverage",
|
|
31
|
+
"test": "jest --coverage"
|
|
32
|
+
}
|
|
33
|
+
}
|