@formatjs/cli-lib 5.0.3
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.md +9 -0
- package/README.md +3 -0
- package/index.d.ts +8 -0
- package/index.d.ts.map +1 -0
- package/index.js +12 -0
- package/main.d.ts +2 -0
- package/main.d.ts.map +1 -0
- package/main.js +3 -0
- package/package.json +64 -0
- package/src/cli.d.ts +3 -0
- package/src/cli.d.ts.map +1 -0
- package/src/cli.js +142 -0
- package/src/compile.d.ts +48 -0
- package/src/compile.d.ts.map +1 -0
- package/src/compile.js +122 -0
- package/src/compile_folder.d.ts +3 -0
- package/src/compile_folder.d.ts.map +1 -0
- package/src/compile_folder.js +22 -0
- package/src/console_utils.d.ts +9 -0
- package/src/console_utils.d.ts.map +1 -0
- package/src/console_utils.js +141 -0
- package/src/extract.d.ts +75 -0
- package/src/extract.d.ts.map +1 -0
- package/src/extract.js +220 -0
- package/src/formatters/crowdin.d.ts +8 -0
- package/src/formatters/crowdin.d.ts.map +1 -0
- package/src/formatters/crowdin.js +29 -0
- package/src/formatters/default.d.ts +6 -0
- package/src/formatters/default.d.ts.map +1 -0
- package/src/formatters/default.js +13 -0
- package/src/formatters/index.d.ts +9 -0
- package/src/formatters/index.d.ts.map +1 -0
- package/src/formatters/index.js +45 -0
- package/src/formatters/lokalise.d.ts +10 -0
- package/src/formatters/lokalise.d.ts.map +1 -0
- package/src/formatters/lokalise.js +26 -0
- package/src/formatters/simple.d.ts +5 -0
- package/src/formatters/simple.d.ts.map +1 -0
- package/src/formatters/simple.js +12 -0
- package/src/formatters/smartling.d.ts +24 -0
- package/src/formatters/smartling.d.ts.map +1 -0
- package/src/formatters/smartling.js +52 -0
- package/src/formatters/transifex.d.ts +10 -0
- package/src/formatters/transifex.d.ts.map +1 -0
- package/src/formatters/transifex.js +26 -0
- package/src/parse_script.d.ts +8 -0
- package/src/parse_script.d.ts.map +1 -0
- package/src/parse_script.js +50 -0
- package/src/pseudo_locale.d.ts +7 -0
- package/src/pseudo_locale.d.ts.map +1 -0
- package/src/pseudo_locale.js +104 -0
- package/src/vue_extractor.d.ts +3 -0
- package/src/vue_extractor.d.ts.map +1 -0
- package/src/vue_extractor.js +62 -0
package/src/extract.d.ts
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Opts, MessageDescriptor } from '@formatjs/ts-transformer';
|
|
2
|
+
import { Formatter } from './formatters';
|
|
3
|
+
export interface ExtractionResult<M = Record<string, string>> {
|
|
4
|
+
/**
|
|
5
|
+
* List of extracted messages
|
|
6
|
+
*/
|
|
7
|
+
messages: MessageDescriptor[];
|
|
8
|
+
/**
|
|
9
|
+
* Metadata extracted w/ `pragma`
|
|
10
|
+
*/
|
|
11
|
+
meta?: M;
|
|
12
|
+
}
|
|
13
|
+
export interface ExtractedMessageDescriptor extends MessageDescriptor {
|
|
14
|
+
/**
|
|
15
|
+
* Line number
|
|
16
|
+
*/
|
|
17
|
+
line?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Column number
|
|
20
|
+
*/
|
|
21
|
+
col?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Metadata extracted from pragma
|
|
24
|
+
*/
|
|
25
|
+
meta?: Record<string, string>;
|
|
26
|
+
}
|
|
27
|
+
export declare type ExtractCLIOptions = Omit<ExtractOpts, 'overrideIdFn' | 'onMsgExtracted' | 'onMetaExtracted'> & {
|
|
28
|
+
/**
|
|
29
|
+
* Output File
|
|
30
|
+
*/
|
|
31
|
+
outFile?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Ignore file glob pattern
|
|
34
|
+
*/
|
|
35
|
+
ignore?: string[];
|
|
36
|
+
};
|
|
37
|
+
export declare type ExtractOpts = Opts & {
|
|
38
|
+
/**
|
|
39
|
+
* Whether to throw an error if we had any issues with
|
|
40
|
+
* 1 of the source files
|
|
41
|
+
*/
|
|
42
|
+
throws?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Message ID interpolation pattern
|
|
45
|
+
*/
|
|
46
|
+
idInterpolationPattern?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Whether we read from stdin instead of a file
|
|
49
|
+
*/
|
|
50
|
+
readFromStdin?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Path to a formatter file that controls the shape of JSON file from `outFile`.
|
|
53
|
+
*/
|
|
54
|
+
format?: string | Formatter;
|
|
55
|
+
/**
|
|
56
|
+
* Whether to hoist selectors & flatten sentences
|
|
57
|
+
*/
|
|
58
|
+
flatten?: boolean;
|
|
59
|
+
} & Pick<Opts, 'onMsgExtracted' | 'onMetaExtracted'>;
|
|
60
|
+
/**
|
|
61
|
+
* Extract strings from source files
|
|
62
|
+
* @param files list of files
|
|
63
|
+
* @param extractOpts extract options
|
|
64
|
+
* @returns messages serialized as JSON string since key order
|
|
65
|
+
* matters for some `format`
|
|
66
|
+
*/
|
|
67
|
+
export declare function extract(files: readonly string[], extractOpts: ExtractOpts): Promise<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Extract strings from source files, also writes to a file.
|
|
70
|
+
* @param files list of files
|
|
71
|
+
* @param extractOpts extract options
|
|
72
|
+
* @returns A Promise that resolves if output file was written successfully
|
|
73
|
+
*/
|
|
74
|
+
export default function extractAndWrite(files: readonly string[], extractOpts: ExtractCLIOptions): Promise<void>;
|
|
75
|
+
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../../../../packages/cli-lib/src/extract.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,IAAI,EACJ,iBAAiB,EAClB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAA0B,SAAS,EAAC,MAAM,cAAc,CAAA;AAM/D,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAC1D;;OAEG;IACH,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,CAAA;CACT;AAED,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B;AAED,oBAAY,iBAAiB,GAAG,IAAI,CAClC,WAAW,EACX,cAAc,GAAG,gBAAgB,GAAG,iBAAiB,CACtD,GAAG;IACF;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED,oBAAY,WAAW,GAAG,IAAI,GAAG;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,IAAI,CAAC,IAAI,EAAE,gBAAgB,GAAG,iBAAiB,CAAC,CAAA;AAqFpD;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,WAAW,EAAE,WAAW,mBAmFzB;AAED;;;;;GAKG;AACH,wBAA8B,eAAe,CAC3C,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,WAAW,EAAE,iBAAiB,iBAS/B"}
|
package/src/extract.js
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extract = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var console_utils_1 = require("./console_utils");
|
|
6
|
+
var fs_extra_1 = require("fs-extra");
|
|
7
|
+
var ts_transformer_1 = require("@formatjs/ts-transformer");
|
|
8
|
+
var formatters_1 = require("./formatters");
|
|
9
|
+
var json_stable_stringify_1 = (0, tslib_1.__importDefault)(require("json-stable-stringify"));
|
|
10
|
+
var parse_script_1 = require("./parse_script");
|
|
11
|
+
var printer_1 = require("@formatjs/icu-messageformat-parser/printer");
|
|
12
|
+
var manipulator_1 = require("@formatjs/icu-messageformat-parser/manipulator");
|
|
13
|
+
var icu_messageformat_parser_1 = require("@formatjs/icu-messageformat-parser");
|
|
14
|
+
function calculateLineColFromOffset(text, start) {
|
|
15
|
+
if (!start) {
|
|
16
|
+
return { line: 1, col: 1 };
|
|
17
|
+
}
|
|
18
|
+
var chunk = text.slice(0, start);
|
|
19
|
+
var lines = chunk.split('\n');
|
|
20
|
+
var lastLine = lines[lines.length - 1];
|
|
21
|
+
return { line: lines.length, col: lastLine.length };
|
|
22
|
+
}
|
|
23
|
+
function processFile(source, fn, _a) {
|
|
24
|
+
var idInterpolationPattern = _a.idInterpolationPattern, opts = (0, tslib_1.__rest)(_a, ["idInterpolationPattern"]);
|
|
25
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
26
|
+
var messages, meta, scriptParseFn, parseFile;
|
|
27
|
+
return (0, tslib_1.__generator)(this, function (_b) {
|
|
28
|
+
switch (_b.label) {
|
|
29
|
+
case 0:
|
|
30
|
+
messages = [];
|
|
31
|
+
opts = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, opts), { additionalComponentNames: (0, tslib_1.__spreadArray)([
|
|
32
|
+
'$formatMessage'
|
|
33
|
+
], (opts.additionalComponentNames || []), true), onMsgExtracted: function (_, msgs) {
|
|
34
|
+
if (opts.extractSourceLocation) {
|
|
35
|
+
msgs = msgs.map(function (msg) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, msg), calculateLineColFromOffset(source, msg.start))); });
|
|
36
|
+
}
|
|
37
|
+
messages = messages.concat(msgs);
|
|
38
|
+
}, onMetaExtracted: function (_, m) {
|
|
39
|
+
meta = m;
|
|
40
|
+
} });
|
|
41
|
+
if (!opts.overrideIdFn && idInterpolationPattern) {
|
|
42
|
+
opts = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, opts), { overrideIdFn: function (id, defaultMessage, description, fileName) {
|
|
43
|
+
return id ||
|
|
44
|
+
(0, ts_transformer_1.interpolateName)({
|
|
45
|
+
resourcePath: fileName,
|
|
46
|
+
}, idInterpolationPattern, {
|
|
47
|
+
content: description
|
|
48
|
+
? "".concat(defaultMessage, "#").concat(typeof description === 'string'
|
|
49
|
+
? description
|
|
50
|
+
: (0, json_stable_stringify_1.default)(description))
|
|
51
|
+
: defaultMessage,
|
|
52
|
+
});
|
|
53
|
+
} });
|
|
54
|
+
}
|
|
55
|
+
(0, console_utils_1.debug)('Processing opts for %s: %s', fn, opts);
|
|
56
|
+
scriptParseFn = (0, parse_script_1.parseScript)(opts, fn);
|
|
57
|
+
if (!fn.endsWith('.vue')) return [3 /*break*/, 2];
|
|
58
|
+
(0, console_utils_1.debug)('Processing %s using vue extractor', fn);
|
|
59
|
+
return [4 /*yield*/, Promise.resolve().then(function () { return (0, tslib_1.__importStar)(require('./vue_extractor')); })];
|
|
60
|
+
case 1:
|
|
61
|
+
parseFile = (_b.sent()).parseFile;
|
|
62
|
+
parseFile(source, fn, scriptParseFn);
|
|
63
|
+
return [3 /*break*/, 3];
|
|
64
|
+
case 2:
|
|
65
|
+
(0, console_utils_1.debug)('Processing %s using typescript extractor', fn);
|
|
66
|
+
scriptParseFn(source);
|
|
67
|
+
_b.label = 3;
|
|
68
|
+
case 3:
|
|
69
|
+
(0, console_utils_1.debug)('Done extracting %s messages: %s', fn, messages);
|
|
70
|
+
if (meta) {
|
|
71
|
+
(0, console_utils_1.debug)('Extracted meta:', meta);
|
|
72
|
+
messages.forEach(function (m) { return (m.meta = meta); });
|
|
73
|
+
}
|
|
74
|
+
return [2 /*return*/, { messages: messages, meta: meta }];
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Extract strings from source files
|
|
81
|
+
* @param files list of files
|
|
82
|
+
* @param extractOpts extract options
|
|
83
|
+
* @returns messages serialized as JSON string since key order
|
|
84
|
+
* matters for some `format`
|
|
85
|
+
*/
|
|
86
|
+
function extract(files, extractOpts) {
|
|
87
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
88
|
+
var throws, readFromStdin, flatten, opts, rawResults, stdinSource, formatter, extractionResults, extractedMessages, _i, extractionResults_1, messages_3, _a, messages_1, message, id, description, defaultMessage, error, existing, error, results, messages, _b, messages_2, _c, id, msg;
|
|
89
|
+
var _this = this;
|
|
90
|
+
return (0, tslib_1.__generator)(this, function (_d) {
|
|
91
|
+
switch (_d.label) {
|
|
92
|
+
case 0:
|
|
93
|
+
throws = extractOpts.throws, readFromStdin = extractOpts.readFromStdin, flatten = extractOpts.flatten, opts = (0, tslib_1.__rest)(extractOpts, ["throws", "readFromStdin", "flatten"]);
|
|
94
|
+
if (!readFromStdin) return [3 /*break*/, 3];
|
|
95
|
+
(0, console_utils_1.debug)("Reading input from stdin");
|
|
96
|
+
// Read from stdin
|
|
97
|
+
if (process.stdin.isTTY) {
|
|
98
|
+
(0, console_utils_1.warn)('Reading source file from TTY.');
|
|
99
|
+
}
|
|
100
|
+
return [4 /*yield*/, (0, console_utils_1.getStdinAsString)()];
|
|
101
|
+
case 1:
|
|
102
|
+
stdinSource = _d.sent();
|
|
103
|
+
return [4 /*yield*/, processFile(stdinSource, 'dummy', opts)];
|
|
104
|
+
case 2:
|
|
105
|
+
rawResults = [_d.sent()];
|
|
106
|
+
return [3 /*break*/, 5];
|
|
107
|
+
case 3: return [4 /*yield*/, Promise.all(files.map(function (fn) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
|
|
108
|
+
var source, e_1;
|
|
109
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
110
|
+
switch (_a.label) {
|
|
111
|
+
case 0:
|
|
112
|
+
(0, console_utils_1.debug)('Extracting file:', fn);
|
|
113
|
+
_a.label = 1;
|
|
114
|
+
case 1:
|
|
115
|
+
_a.trys.push([1, 3, , 4]);
|
|
116
|
+
return [4 /*yield*/, (0, fs_extra_1.readFile)(fn, 'utf8')];
|
|
117
|
+
case 2:
|
|
118
|
+
source = _a.sent();
|
|
119
|
+
return [2 /*return*/, processFile(source, fn, opts)];
|
|
120
|
+
case 3:
|
|
121
|
+
e_1 = _a.sent();
|
|
122
|
+
if (throws) {
|
|
123
|
+
throw e_1;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
(0, console_utils_1.warn)(String(e_1));
|
|
127
|
+
}
|
|
128
|
+
return [3 /*break*/, 4];
|
|
129
|
+
case 4: return [2 /*return*/];
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}); }))];
|
|
133
|
+
case 4:
|
|
134
|
+
rawResults = _d.sent();
|
|
135
|
+
_d.label = 5;
|
|
136
|
+
case 5: return [4 /*yield*/, (0, formatters_1.resolveBuiltinFormatter)(opts.format)];
|
|
137
|
+
case 6:
|
|
138
|
+
formatter = _d.sent();
|
|
139
|
+
extractionResults = rawResults.filter(function (r) { return !!r; });
|
|
140
|
+
extractedMessages = new Map();
|
|
141
|
+
for (_i = 0, extractionResults_1 = extractionResults; _i < extractionResults_1.length; _i++) {
|
|
142
|
+
messages_3 = extractionResults_1[_i].messages;
|
|
143
|
+
for (_a = 0, messages_1 = messages_3; _a < messages_1.length; _a++) {
|
|
144
|
+
message = messages_1[_a];
|
|
145
|
+
id = message.id, description = message.description, defaultMessage = message.defaultMessage;
|
|
146
|
+
if (!id) {
|
|
147
|
+
error = new Error("[FormatJS CLI] Missing message id for message: \n".concat(JSON.stringify(message, undefined, 2)));
|
|
148
|
+
if (throws) {
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
(0, console_utils_1.warn)(error.message);
|
|
153
|
+
}
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (extractedMessages.has(id)) {
|
|
157
|
+
existing = extractedMessages.get(id);
|
|
158
|
+
if (description !== existing.description ||
|
|
159
|
+
defaultMessage !== existing.defaultMessage) {
|
|
160
|
+
error = new Error("[FormatJS CLI] Duplicate message id: \"".concat(id, "\", ") +
|
|
161
|
+
'but the `description` and/or `defaultMessage` are different.');
|
|
162
|
+
if (throws) {
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
(0, console_utils_1.warn)(error.message);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
extractedMessages.set(id, message);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
results = {};
|
|
174
|
+
messages = Array.from(extractedMessages.values());
|
|
175
|
+
for (_b = 0, messages_2 = messages; _b < messages_2.length; _b++) {
|
|
176
|
+
_c = messages_2[_b];
|
|
177
|
+
id = _c.id, msg = (0, tslib_1.__rest)(_c, ["id"]);
|
|
178
|
+
if (flatten && msg.defaultMessage) {
|
|
179
|
+
msg.defaultMessage = (0, printer_1.printAST)((0, manipulator_1.hoistSelectors)((0, icu_messageformat_parser_1.parse)(msg.defaultMessage)));
|
|
180
|
+
}
|
|
181
|
+
results[id] = msg;
|
|
182
|
+
}
|
|
183
|
+
return [2 /*return*/, (0, json_stable_stringify_1.default)(formatter.format(results), {
|
|
184
|
+
space: 2,
|
|
185
|
+
cmp: formatter.compareMessages || undefined,
|
|
186
|
+
})];
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
exports.extract = extract;
|
|
192
|
+
/**
|
|
193
|
+
* Extract strings from source files, also writes to a file.
|
|
194
|
+
* @param files list of files
|
|
195
|
+
* @param extractOpts extract options
|
|
196
|
+
* @returns A Promise that resolves if output file was written successfully
|
|
197
|
+
*/
|
|
198
|
+
function extractAndWrite(files, extractOpts) {
|
|
199
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
200
|
+
var outFile, opts, serializedResult;
|
|
201
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
202
|
+
switch (_a.label) {
|
|
203
|
+
case 0:
|
|
204
|
+
outFile = extractOpts.outFile, opts = (0, tslib_1.__rest)(extractOpts, ["outFile"]);
|
|
205
|
+
return [4 /*yield*/, extract(files, opts)];
|
|
206
|
+
case 1:
|
|
207
|
+
serializedResult = (_a.sent()) + '\n';
|
|
208
|
+
if (outFile) {
|
|
209
|
+
(0, console_utils_1.debug)('Writing output file:', outFile);
|
|
210
|
+
return [2 /*return*/, (0, fs_extra_1.outputFile)(outFile, serializedResult)];
|
|
211
|
+
}
|
|
212
|
+
return [4 /*yield*/, (0, console_utils_1.writeStdout)(serializedResult)];
|
|
213
|
+
case 2:
|
|
214
|
+
_a.sent();
|
|
215
|
+
return [2 /*return*/];
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
exports.default = extractAndWrite;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CompileFn, FormatFn } from './default';
|
|
2
|
+
export declare type SmartlingJson = Record<string, {
|
|
3
|
+
message: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
}>;
|
|
6
|
+
export declare const format: FormatFn<SmartlingJson>;
|
|
7
|
+
export declare const compile: CompileFn<SmartlingJson>;
|
|
8
|
+
//# sourceMappingURL=crowdin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crowdin.d.ts","sourceRoot":"","sources":["../../../../../../../packages/cli-lib/src/formatters/crowdin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAA;AAE7C,oBAAY,aAAa,GAAG,MAAM,CAChC,MAAM,EACN;IACE,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CACF,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,aAAa,CAY1C,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,aAAa,CAS5C,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compile = exports.format = void 0;
|
|
4
|
+
var format = function (msgs) {
|
|
5
|
+
var results = {};
|
|
6
|
+
for (var _i = 0, _a = Object.entries(msgs); _i < _a.length; _i++) {
|
|
7
|
+
var _b = _a[_i], id = _b[0], msg = _b[1];
|
|
8
|
+
results[id] = {
|
|
9
|
+
message: msg.defaultMessage,
|
|
10
|
+
description: typeof msg.description === 'string'
|
|
11
|
+
? msg.description
|
|
12
|
+
: JSON.stringify(msg.description),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
return results;
|
|
16
|
+
};
|
|
17
|
+
exports.format = format;
|
|
18
|
+
var compile = function (msgs) {
|
|
19
|
+
var results = {};
|
|
20
|
+
for (var _i = 0, _a = Object.entries(msgs); _i < _a.length; _i++) {
|
|
21
|
+
var _b = _a[_i], id = _b[0], msg = _b[1];
|
|
22
|
+
if (id === 'smartling') {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
results[id] = msg.message;
|
|
26
|
+
}
|
|
27
|
+
return results;
|
|
28
|
+
};
|
|
29
|
+
exports.compile = compile;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { MessageDescriptor } from '@formatjs/ts-transformer';
|
|
2
|
+
export declare type FormatFn<T = Record<string, MessageDescriptor>> = (msgs: Record<string, MessageDescriptor>) => T;
|
|
3
|
+
export declare type CompileFn<T = Record<string, MessageDescriptor>> = (msgs: T) => Record<string, string>;
|
|
4
|
+
export declare const format: FormatFn;
|
|
5
|
+
export declare const compile: CompileFn;
|
|
6
|
+
//# sourceMappingURL=default.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../../../../../packages/cli-lib/src/formatters/default.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAA;AAE1D,oBAAY,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAC5D,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,KACpC,CAAC,CAAA;AAEN,oBAAY,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAC7D,IAAI,EAAE,CAAC,KACJ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE3B,eAAO,MAAM,MAAM,EAAE,QAAuB,CAAA;AAE5C,eAAO,MAAM,OAAO,EAAE,SAMrB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compile = exports.format = void 0;
|
|
4
|
+
var format = function (msgs) { return msgs; };
|
|
5
|
+
exports.format = format;
|
|
6
|
+
var compile = function (msgs) {
|
|
7
|
+
var results = {};
|
|
8
|
+
for (var k in msgs) {
|
|
9
|
+
results[k] = msgs[k].defaultMessage;
|
|
10
|
+
}
|
|
11
|
+
return results;
|
|
12
|
+
};
|
|
13
|
+
exports.compile = compile;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FormatFn, CompileFn } from './default';
|
|
2
|
+
import { Comparator } from 'json-stable-stringify';
|
|
3
|
+
export interface Formatter {
|
|
4
|
+
format: FormatFn;
|
|
5
|
+
compile: CompileFn;
|
|
6
|
+
compareMessages?: Comparator;
|
|
7
|
+
}
|
|
8
|
+
export declare function resolveBuiltinFormatter(format?: string | Formatter): Promise<any>;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/cli-lib/src/formatters/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,WAAW,CAAA;AAM7C,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAGhD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,CAAA;IAChB,OAAO,EAAE,SAAS,CAAA;IAClB,eAAe,CAAC,EAAE,UAAU,CAAA;CAC7B;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,GAAG,CAAC,CA0Bd"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveBuiltinFormatter = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var defaultFormatter = (0, tslib_1.__importStar)(require("./default"));
|
|
6
|
+
var transifex = (0, tslib_1.__importStar)(require("./transifex"));
|
|
7
|
+
var smartling = (0, tslib_1.__importStar)(require("./smartling"));
|
|
8
|
+
var simple = (0, tslib_1.__importStar)(require("./simple"));
|
|
9
|
+
var lokalise = (0, tslib_1.__importStar)(require("./lokalise"));
|
|
10
|
+
var crowdin = (0, tslib_1.__importStar)(require("./crowdin"));
|
|
11
|
+
var path_1 = require("path");
|
|
12
|
+
function resolveBuiltinFormatter(format) {
|
|
13
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
14
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
15
|
+
if (!format) {
|
|
16
|
+
return [2 /*return*/, defaultFormatter];
|
|
17
|
+
}
|
|
18
|
+
if (typeof format !== 'string') {
|
|
19
|
+
return [2 /*return*/, format];
|
|
20
|
+
}
|
|
21
|
+
switch (format) {
|
|
22
|
+
case 'transifex':
|
|
23
|
+
return [2 /*return*/, transifex];
|
|
24
|
+
case 'smartling':
|
|
25
|
+
return [2 /*return*/, smartling];
|
|
26
|
+
case 'simple':
|
|
27
|
+
return [2 /*return*/, simple];
|
|
28
|
+
case 'lokalise':
|
|
29
|
+
return [2 /*return*/, lokalise];
|
|
30
|
+
case 'crowdin':
|
|
31
|
+
return [2 /*return*/, crowdin];
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
// eslint-disable-next-line import/dynamic-import-chunkname
|
|
35
|
+
return [2 /*return*/, Promise.resolve().then(function () { return (0, tslib_1.__importStar)(require((0, path_1.resolve)(process.cwd(), format))); })];
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
console.error("Cannot resolve formatter ".concat(format));
|
|
39
|
+
throw e;
|
|
40
|
+
}
|
|
41
|
+
return [2 /*return*/];
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
exports.resolveBuiltinFormatter = resolveBuiltinFormatter;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CompileFn, FormatFn } from './default';
|
|
2
|
+
export declare type StructuredJson = Record<string, {
|
|
3
|
+
translation: string;
|
|
4
|
+
notes?: string;
|
|
5
|
+
context?: string;
|
|
6
|
+
limit?: string;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const format: FormatFn<StructuredJson>;
|
|
9
|
+
export declare const compile: CompileFn<StructuredJson>;
|
|
10
|
+
//# sourceMappingURL=lokalise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lokalise.d.ts","sourceRoot":"","sources":["../../../../../../../packages/cli-lib/src/formatters/lokalise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAA;AAE7C,oBAAY,cAAc,GAAG,MAAM,CACjC,MAAM,EACN;IACE,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CACF,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,cAAc,CAY3C,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,cAAc,CAM7C,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compile = exports.format = void 0;
|
|
4
|
+
var format = function (msgs) {
|
|
5
|
+
var results = {};
|
|
6
|
+
for (var _i = 0, _a = Object.entries(msgs); _i < _a.length; _i++) {
|
|
7
|
+
var _b = _a[_i], id = _b[0], msg = _b[1];
|
|
8
|
+
results[id] = {
|
|
9
|
+
translation: msg.defaultMessage,
|
|
10
|
+
notes: typeof msg.description === 'string'
|
|
11
|
+
? msg.description
|
|
12
|
+
: JSON.stringify(msg.description),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
return results;
|
|
16
|
+
};
|
|
17
|
+
exports.format = format;
|
|
18
|
+
var compile = function (msgs) {
|
|
19
|
+
var results = {};
|
|
20
|
+
for (var _i = 0, _a = Object.entries(msgs); _i < _a.length; _i++) {
|
|
21
|
+
var _b = _a[_i], id = _b[0], msg = _b[1];
|
|
22
|
+
results[id] = msg.translation;
|
|
23
|
+
}
|
|
24
|
+
return results;
|
|
25
|
+
};
|
|
26
|
+
exports.compile = compile;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple.d.ts","sourceRoot":"","sources":["../../../../../../../packages/cli-lib/src/formatters/simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAA;AAE7C,oBAAY,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE/C,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,UAAU,CAKvC,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,UAAU,CAAgB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compile = exports.format = void 0;
|
|
4
|
+
var format = function (msgs) {
|
|
5
|
+
return Object.keys(msgs).reduce(function (all, k) {
|
|
6
|
+
all[k] = msgs[k].defaultMessage;
|
|
7
|
+
return all;
|
|
8
|
+
}, {});
|
|
9
|
+
};
|
|
10
|
+
exports.format = format;
|
|
11
|
+
var compile = function (msgs) { return msgs; };
|
|
12
|
+
exports.compile = compile;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Comparator } from 'json-stable-stringify';
|
|
2
|
+
import { CompileFn, FormatFn } from './default';
|
|
3
|
+
export interface SmartlingDirectives {
|
|
4
|
+
translate_paths: [
|
|
5
|
+
{
|
|
6
|
+
path: string;
|
|
7
|
+
key: string;
|
|
8
|
+
instruction: string;
|
|
9
|
+
}
|
|
10
|
+
];
|
|
11
|
+
variants_enabled: boolean;
|
|
12
|
+
string_format: string;
|
|
13
|
+
[k: string]: any;
|
|
14
|
+
}
|
|
15
|
+
export declare type SmartlingJson = {
|
|
16
|
+
smartling: SmartlingDirectives;
|
|
17
|
+
} & Record<string, {
|
|
18
|
+
message: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
}>;
|
|
21
|
+
export declare const format: FormatFn<SmartlingJson>;
|
|
22
|
+
export declare const compareMessages: Comparator;
|
|
23
|
+
export declare const compile: CompileFn<SmartlingJson>;
|
|
24
|
+
//# sourceMappingURL=smartling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smartling.d.ts","sourceRoot":"","sources":["../../../../../../../packages/cli-lib/src/formatters/smartling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAA;AAE7C,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE;QACf;YACE,IAAI,EAAE,MAAM,CAAA;YACZ,GAAG,EAAE,MAAM,CAAA;YACX,WAAW,EAAE,MAAM,CAAA;SACpB;KACF,CAAA;IACD,gBAAgB,EAAE,OAAO,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACjB;AAED,oBAAY,aAAa,GAAG;IAC1B,SAAS,EAAE,mBAAmB,CAAA;CAC/B,GAAG,MAAM,CACR,MAAM,EACN;IACE,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CACF,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,aAAa,CAwB1C,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,UAS7B,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,aAAa,CAS5C,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compile = exports.compareMessages = exports.format = void 0;
|
|
4
|
+
var format = function (msgs) {
|
|
5
|
+
var results = {
|
|
6
|
+
smartling: {
|
|
7
|
+
translate_paths: [
|
|
8
|
+
{
|
|
9
|
+
path: '*/message',
|
|
10
|
+
key: '{*}/message',
|
|
11
|
+
instruction: '*/description',
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
variants_enabled: true,
|
|
15
|
+
string_format: 'icu',
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
for (var _i = 0, _a = Object.entries(msgs); _i < _a.length; _i++) {
|
|
19
|
+
var _b = _a[_i], id = _b[0], msg = _b[1];
|
|
20
|
+
results[id] = {
|
|
21
|
+
message: msg.defaultMessage,
|
|
22
|
+
description: typeof msg.description === 'string'
|
|
23
|
+
? msg.description
|
|
24
|
+
: JSON.stringify(msg.description),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return results;
|
|
28
|
+
};
|
|
29
|
+
exports.format = format;
|
|
30
|
+
var compareMessages = function (el1, el2) {
|
|
31
|
+
// `smartling` has to be the 1st key
|
|
32
|
+
if (el1.key === 'smartling') {
|
|
33
|
+
return -1;
|
|
34
|
+
}
|
|
35
|
+
if (el2.key === 'smartling') {
|
|
36
|
+
return 1;
|
|
37
|
+
}
|
|
38
|
+
return el1.key < el2.key ? -1 : el1.key === el2.key ? 0 : 1;
|
|
39
|
+
};
|
|
40
|
+
exports.compareMessages = compareMessages;
|
|
41
|
+
var compile = function (msgs) {
|
|
42
|
+
var results = {};
|
|
43
|
+
for (var _i = 0, _a = Object.entries(msgs); _i < _a.length; _i++) {
|
|
44
|
+
var _b = _a[_i], id = _b[0], msg = _b[1];
|
|
45
|
+
if (id === 'smartling') {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
results[id] = msg.message;
|
|
49
|
+
}
|
|
50
|
+
return results;
|
|
51
|
+
};
|
|
52
|
+
exports.compile = compile;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CompileFn, FormatFn } from './default';
|
|
2
|
+
export declare type StructuredJson = Record<string, {
|
|
3
|
+
string: string;
|
|
4
|
+
developer_comment?: string;
|
|
5
|
+
context?: string;
|
|
6
|
+
character_limit?: string;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const format: FormatFn<StructuredJson>;
|
|
9
|
+
export declare const compile: CompileFn<StructuredJson>;
|
|
10
|
+
//# sourceMappingURL=transifex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transifex.d.ts","sourceRoot":"","sources":["../../../../../../../packages/cli-lib/src/formatters/transifex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAA;AAE7C,oBAAY,cAAc,GAAG,MAAM,CACjC,MAAM,EACN;IACE,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CACF,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,cAAc,CAY3C,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,cAAc,CAM7C,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compile = exports.format = void 0;
|
|
4
|
+
var format = function (msgs) {
|
|
5
|
+
var results = {};
|
|
6
|
+
for (var _i = 0, _a = Object.entries(msgs); _i < _a.length; _i++) {
|
|
7
|
+
var _b = _a[_i], id = _b[0], msg = _b[1];
|
|
8
|
+
results[id] = {
|
|
9
|
+
string: msg.defaultMessage,
|
|
10
|
+
developer_comment: typeof msg.description === 'string'
|
|
11
|
+
? msg.description
|
|
12
|
+
: JSON.stringify(msg.description),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
return results;
|
|
16
|
+
};
|
|
17
|
+
exports.format = format;
|
|
18
|
+
var compile = function (msgs) {
|
|
19
|
+
var results = {};
|
|
20
|
+
for (var _i = 0, _a = Object.entries(msgs); _i < _a.length; _i++) {
|
|
21
|
+
var _b = _a[_i], id = _b[0], msg = _b[1];
|
|
22
|
+
results[id] = msg.string;
|
|
23
|
+
}
|
|
24
|
+
return results;
|
|
25
|
+
};
|
|
26
|
+
exports.compile = compile;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Opts } from '@formatjs/ts-transformer';
|
|
2
|
+
/**
|
|
3
|
+
* Invoid TypeScript module transpilation with our TS transformer
|
|
4
|
+
* @param opts Formatjs TS Transformer opt
|
|
5
|
+
* @param fn filename
|
|
6
|
+
*/
|
|
7
|
+
export declare function parseScript(opts: Opts, fn?: string): (source: string) => void;
|
|
8
|
+
//# sourceMappingURL=parse_script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse_script.d.ts","sourceRoot":"","sources":["../../../../../../packages/cli-lib/src/parse_script.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAkB,MAAM,0BAA0B,CAAA;AAG9D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,YACjC,MAAM,UAuCvB"}
|