@formatjs/cli-lib 5.0.6 → 5.0.7
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/BUILD +118 -0
- package/CHANGELOG.md +1097 -0
- package/LICENSE.md +0 -0
- package/README.md +0 -0
- package/index.ts +7 -0
- package/main.ts +5 -0
- package/package.json +61 -61
- package/src/cli.ts +240 -0
- package/src/compile.ts +141 -0
- package/src/compile_folder.ts +15 -0
- package/src/console_utils.ts +78 -0
- package/src/extract.ts +273 -0
- package/src/formatters/crowdin.ts +34 -0
- package/src/formatters/default.ts +19 -0
- package/src/formatters/index.ts +46 -0
- package/src/formatters/lokalise.ts +33 -0
- package/src/formatters/simple.ts +12 -0
- package/src/formatters/smartling.ts +73 -0
- package/src/formatters/transifex.ts +33 -0
- package/src/parse_script.ts +49 -0
- package/src/pseudo_locale.ts +113 -0
- package/src/vue_extractor.ts +96 -0
- package/tests/unit/__snapshots__/unit.test.ts.snap +42 -0
- package/tests/unit/__snapshots__/vue_extractor.test.ts.snap +36 -0
- package/tests/unit/fixtures/bind.vue +46 -0
- package/tests/unit/fixtures/comp.vue +17 -0
- package/tests/unit/unit.test.ts +44 -0
- package/tests/unit/vue_extractor.test.ts +38 -0
- package/tsconfig.json +5 -0
- package/index.d.ts +0 -8
- package/index.d.ts.map +0 -1
- package/index.js +0 -12
- package/main.d.ts +0 -2
- package/main.d.ts.map +0 -1
- package/main.js +0 -3
- package/src/cli.d.ts +0 -3
- package/src/cli.d.ts.map +0 -1
- package/src/cli.js +0 -142
- package/src/compile.d.ts +0 -48
- package/src/compile.d.ts.map +0 -1
- package/src/compile.js +0 -122
- package/src/compile_folder.d.ts +0 -3
- package/src/compile_folder.d.ts.map +0 -1
- package/src/compile_folder.js +0 -22
- package/src/console_utils.d.ts +0 -9
- package/src/console_utils.d.ts.map +0 -1
- package/src/console_utils.js +0 -141
- package/src/extract.d.ts +0 -75
- package/src/extract.d.ts.map +0 -1
- package/src/extract.js +0 -220
- package/src/formatters/crowdin.d.ts +0 -8
- package/src/formatters/crowdin.d.ts.map +0 -1
- package/src/formatters/crowdin.js +0 -29
- package/src/formatters/default.d.ts +0 -6
- package/src/formatters/default.d.ts.map +0 -1
- package/src/formatters/default.js +0 -13
- package/src/formatters/index.d.ts +0 -9
- package/src/formatters/index.d.ts.map +0 -1
- package/src/formatters/index.js +0 -46
- package/src/formatters/lokalise.d.ts +0 -10
- package/src/formatters/lokalise.d.ts.map +0 -1
- package/src/formatters/lokalise.js +0 -26
- package/src/formatters/simple.d.ts +0 -5
- package/src/formatters/simple.d.ts.map +0 -1
- package/src/formatters/simple.js +0 -12
- package/src/formatters/smartling.d.ts +0 -24
- package/src/formatters/smartling.d.ts.map +0 -1
- package/src/formatters/smartling.js +0 -52
- package/src/formatters/transifex.d.ts +0 -10
- package/src/formatters/transifex.d.ts.map +0 -1
- package/src/formatters/transifex.js +0 -26
- package/src/parse_script.d.ts +0 -8
- package/src/parse_script.d.ts.map +0 -1
- package/src/parse_script.js +0 -50
- package/src/pseudo_locale.d.ts +0 -7
- package/src/pseudo_locale.d.ts.map +0 -1
- package/src/pseudo_locale.js +0 -104
- package/src/vue_extractor.d.ts +0 -3
- package/src/vue_extractor.d.ts.map +0 -1
- package/src/vue_extractor.js +0 -62
package/src/compile.js
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.compile = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var icu_messageformat_parser_1 = require("@formatjs/icu-messageformat-parser");
|
|
6
|
-
var fs_extra_1 = require("fs-extra");
|
|
7
|
-
var json_stable_stringify_1 = (0, tslib_1.__importDefault)(require("json-stable-stringify"));
|
|
8
|
-
var console_utils_1 = require("./console_utils");
|
|
9
|
-
var formatters_1 = require("./formatters");
|
|
10
|
-
var pseudo_locale_1 = require("./pseudo_locale");
|
|
11
|
-
/**
|
|
12
|
-
* Aggregate `inputFiles` into a single JSON blob and compile.
|
|
13
|
-
* Also checks for conflicting IDs.
|
|
14
|
-
* Then returns the serialized result as a `string` since key order
|
|
15
|
-
* makes a difference in some vendor.
|
|
16
|
-
* @param inputFiles Input files
|
|
17
|
-
* @param opts Options
|
|
18
|
-
* @returns serialized result in string format
|
|
19
|
-
*/
|
|
20
|
-
function compile(inputFiles, opts) {
|
|
21
|
-
if (opts === void 0) { opts = {}; }
|
|
22
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
23
|
-
var ast, format, pseudoLocale, skipErrors, formatter, messages, messageAsts, idsWithFileName, compiledFiles, i, inputFile, compiled, id, msgAst;
|
|
24
|
-
return (0, tslib_1.__generator)(this, function (_a) {
|
|
25
|
-
switch (_a.label) {
|
|
26
|
-
case 0:
|
|
27
|
-
(0, console_utils_1.debug)('Compiling files:', inputFiles);
|
|
28
|
-
ast = opts.ast, format = opts.format, pseudoLocale = opts.pseudoLocale, skipErrors = opts.skipErrors;
|
|
29
|
-
return [4 /*yield*/, (0, formatters_1.resolveBuiltinFormatter)(format)];
|
|
30
|
-
case 1:
|
|
31
|
-
formatter = _a.sent();
|
|
32
|
-
messages = {};
|
|
33
|
-
messageAsts = {};
|
|
34
|
-
idsWithFileName = {};
|
|
35
|
-
return [4 /*yield*/, Promise.all(inputFiles.map(function (f) { return (0, fs_extra_1.readJSON)(f).then(formatter.compile); }))];
|
|
36
|
-
case 2:
|
|
37
|
-
compiledFiles = _a.sent();
|
|
38
|
-
(0, console_utils_1.debug)('Compiled files:', compiledFiles);
|
|
39
|
-
for (i = 0; i < inputFiles.length; i++) {
|
|
40
|
-
inputFile = inputFiles[i];
|
|
41
|
-
(0, console_utils_1.debug)('Processing file:', inputFile);
|
|
42
|
-
compiled = compiledFiles[i];
|
|
43
|
-
for (id in compiled) {
|
|
44
|
-
if (messages[id] && messages[id] !== compiled[id]) {
|
|
45
|
-
throw new Error("Conflicting ID \"".concat(id, "\" with different translation found in these 2 files:\nID: ").concat(id, "\nMessage from ").concat(idsWithFileName[id], ": ").concat(messages[id], "\nMessage from ").concat(compiled[id], ": ").concat(inputFile, "\n"));
|
|
46
|
-
}
|
|
47
|
-
try {
|
|
48
|
-
msgAst = (0, icu_messageformat_parser_1.parse)(compiled[id]);
|
|
49
|
-
messages[id] = compiled[id];
|
|
50
|
-
switch (pseudoLocale) {
|
|
51
|
-
case 'xx-LS':
|
|
52
|
-
messageAsts[id] = (0, pseudo_locale_1.generateXXLS)(msgAst);
|
|
53
|
-
break;
|
|
54
|
-
case 'xx-AC':
|
|
55
|
-
messageAsts[id] = (0, pseudo_locale_1.generateXXAC)(msgAst);
|
|
56
|
-
break;
|
|
57
|
-
case 'xx-HA':
|
|
58
|
-
messageAsts[id] = (0, pseudo_locale_1.generateXXHA)(msgAst);
|
|
59
|
-
break;
|
|
60
|
-
case 'en-XA':
|
|
61
|
-
messageAsts[id] = (0, pseudo_locale_1.generateENXA)(msgAst);
|
|
62
|
-
break;
|
|
63
|
-
case 'en-XB':
|
|
64
|
-
messageAsts[id] = (0, pseudo_locale_1.generateENXB)(msgAst);
|
|
65
|
-
break;
|
|
66
|
-
default:
|
|
67
|
-
messageAsts[id] = msgAst;
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
idsWithFileName[id] = inputFile;
|
|
71
|
-
}
|
|
72
|
-
catch (e) {
|
|
73
|
-
(0, console_utils_1.warn)('Error validating message "%s" with ID "%s" in file "%s"', compiled[id], id, inputFile);
|
|
74
|
-
if (!skipErrors) {
|
|
75
|
-
throw e;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return [2 /*return*/, (0, json_stable_stringify_1.default)(ast ? messageAsts : messages, {
|
|
81
|
-
space: 2,
|
|
82
|
-
cmp: formatter.compareMessages || undefined,
|
|
83
|
-
})];
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
exports.compile = compile;
|
|
89
|
-
/**
|
|
90
|
-
* Aggregate `inputFiles` into a single JSON blob and compile.
|
|
91
|
-
* Also checks for conflicting IDs and write output to `outFile`.
|
|
92
|
-
* @param inputFiles Input files
|
|
93
|
-
* @param compileOpts options
|
|
94
|
-
* @returns A `Promise` that resolves if file was written successfully
|
|
95
|
-
*/
|
|
96
|
-
function compileAndWrite(inputFiles, compileOpts) {
|
|
97
|
-
if (compileOpts === void 0) { compileOpts = {}; }
|
|
98
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
99
|
-
var outFile, opts, serializedResult;
|
|
100
|
-
return (0, tslib_1.__generator)(this, function (_a) {
|
|
101
|
-
switch (_a.label) {
|
|
102
|
-
case 0:
|
|
103
|
-
outFile = compileOpts.outFile, opts = (0, tslib_1.__rest)(compileOpts, ["outFile"]);
|
|
104
|
-
return [4 /*yield*/, compile(inputFiles, opts)];
|
|
105
|
-
case 1:
|
|
106
|
-
serializedResult = _a.sent();
|
|
107
|
-
if (outFile) {
|
|
108
|
-
(0, console_utils_1.debug)('Writing output file:', outFile);
|
|
109
|
-
return [2 /*return*/, (0, fs_extra_1.outputFile)(outFile, serializedResult)];
|
|
110
|
-
}
|
|
111
|
-
return [4 /*yield*/, (0, console_utils_1.writeStdout)(serializedResult)];
|
|
112
|
-
case 2:
|
|
113
|
-
_a.sent();
|
|
114
|
-
return [4 /*yield*/, (0, console_utils_1.writeStdout)('\n')];
|
|
115
|
-
case 3:
|
|
116
|
-
_a.sent();
|
|
117
|
-
return [2 /*return*/];
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
exports.default = compileAndWrite;
|
package/src/compile_folder.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compile_folder.d.ts","sourceRoot":"","sources":["../../../../../../packages/cli-lib/src/compile_folder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAU,MAAM,WAAW,CAAA;AAGvC,wBAA8B,aAAa,CACzC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,IAAS,mBAQhB"}
|
package/src/compile_folder.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var tslib_1 = require("tslib");
|
|
4
|
-
var compile_1 = require("./compile");
|
|
5
|
-
var path_1 = require("path");
|
|
6
|
-
var fs_extra_1 = require("fs-extra");
|
|
7
|
-
function compileFolder(files, outFolder, opts) {
|
|
8
|
-
if (opts === void 0) { opts = {}; }
|
|
9
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
10
|
-
var results, outFiles;
|
|
11
|
-
return (0, tslib_1.__generator)(this, function (_a) {
|
|
12
|
-
switch (_a.label) {
|
|
13
|
-
case 0: return [4 /*yield*/, Promise.all(files.map(function (f) { return (0, compile_1.compile)([f], opts); }))];
|
|
14
|
-
case 1:
|
|
15
|
-
results = _a.sent();
|
|
16
|
-
outFiles = files.map(function (f) { return (0, path_1.join)(outFolder, (0, path_1.basename)(f)); });
|
|
17
|
-
return [2 /*return*/, Promise.all(outFiles.map(function (outFile, i) { return (0, fs_extra_1.outputFile)(outFile, results[i]); }))];
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
exports.default = compileFolder;
|
package/src/console_utils.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
export declare const writeStderr: (arg1: string | Uint8Array) => Promise<void>;
|
|
3
|
-
export declare const writeStdout: (arg1: string | Uint8Array) => Promise<void>;
|
|
4
|
-
export declare function clearLine(terminal: typeof process['stderr']): Promise<void>;
|
|
5
|
-
export declare function debug(message: string, ...args: any[]): Promise<void>;
|
|
6
|
-
export declare function warn(message: string, ...args: any[]): Promise<void>;
|
|
7
|
-
export declare function error(message: string, ...args: any[]): Promise<void>;
|
|
8
|
-
export declare function getStdinAsString(): Promise<string>;
|
|
9
|
-
//# sourceMappingURL=console_utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"console_utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/cli-lib/src/console_utils.ts"],"names":[],"mappings":";AAMA,eAAO,MAAM,WAAW,8CAAuD,CAAA;AAC/E,eAAO,MAAM,WAAW,8CAAuD,CAAA;AAO/E,wBAAsB,SAAS,CAAC,QAAQ,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,iBAcjE;AAcD,wBAAsB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,iBAO1D;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,iBAIzD;AAED,wBAAsB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,iBAI1D;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAclD"}
|
package/src/console_utils.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getStdinAsString = exports.error = exports.warn = exports.debug = exports.clearLine = exports.writeStdout = exports.writeStderr = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var chalk_1 = require("chalk");
|
|
6
|
-
var readline_1 = (0, tslib_1.__importDefault)(require("readline"));
|
|
7
|
-
var util_1 = require("util");
|
|
8
|
-
var CLEAR_WHOLE_LINE = 0;
|
|
9
|
-
exports.writeStderr = (0, util_1.promisify)(process.stderr.write).bind(process.stderr);
|
|
10
|
-
exports.writeStdout = (0, util_1.promisify)(process.stdout.write).bind(process.stdout);
|
|
11
|
-
var nativeClearLine = (0, util_1.promisify)(readline_1.default.clearLine).bind(readline_1.default);
|
|
12
|
-
var nativeCursorTo = (0, util_1.promisify)(readline_1.default.cursorTo).bind(readline_1.default);
|
|
13
|
-
// From:
|
|
14
|
-
// https://github.com/yarnpkg/yarn/blob/53d8004229f543f342833310d5af63a4b6e59c8a/src/reporters/console/util.js
|
|
15
|
-
function clearLine(terminal) {
|
|
16
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
17
|
-
return (0, tslib_1.__generator)(this, function (_a) {
|
|
18
|
-
switch (_a.label) {
|
|
19
|
-
case 0:
|
|
20
|
-
if (!!chalk_1.supportsColor) return [3 /*break*/, 5];
|
|
21
|
-
if (!terminal.isTTY) return [3 /*break*/, 4];
|
|
22
|
-
if (!(terminal.columns > 0)) return [3 /*break*/, 2];
|
|
23
|
-
return [4 /*yield*/, (0, exports.writeStderr)("\r".concat(' '.repeat(terminal.columns - 1)))];
|
|
24
|
-
case 1:
|
|
25
|
-
_a.sent();
|
|
26
|
-
_a.label = 2;
|
|
27
|
-
case 2: return [4 /*yield*/, (0, exports.writeStderr)("\r")];
|
|
28
|
-
case 3:
|
|
29
|
-
_a.sent();
|
|
30
|
-
_a.label = 4;
|
|
31
|
-
case 4: return [3 /*break*/, 8];
|
|
32
|
-
case 5: return [4 /*yield*/, nativeClearLine(terminal, CLEAR_WHOLE_LINE)];
|
|
33
|
-
case 6:
|
|
34
|
-
_a.sent();
|
|
35
|
-
return [4 /*yield*/, nativeCursorTo(terminal, 0, undefined)];
|
|
36
|
-
case 7:
|
|
37
|
-
_a.sent();
|
|
38
|
-
_a.label = 8;
|
|
39
|
-
case 8: return [2 /*return*/];
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
exports.clearLine = clearLine;
|
|
45
|
-
var LEVEL_COLORS = {
|
|
46
|
-
debug: chalk_1.green,
|
|
47
|
-
warn: chalk_1.yellow,
|
|
48
|
-
error: chalk_1.red,
|
|
49
|
-
};
|
|
50
|
-
function label(level, message) {
|
|
51
|
-
return "[@formatjs/cli] [".concat(LEVEL_COLORS[level](level.toUpperCase()), "] ").concat(message);
|
|
52
|
-
}
|
|
53
|
-
function debug(message) {
|
|
54
|
-
var args = [];
|
|
55
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
56
|
-
args[_i - 1] = arguments[_i];
|
|
57
|
-
}
|
|
58
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
59
|
-
return (0, tslib_1.__generator)(this, function (_a) {
|
|
60
|
-
switch (_a.label) {
|
|
61
|
-
case 0:
|
|
62
|
-
if (process.env.LOG_LEVEL !== 'debug') {
|
|
63
|
-
return [2 /*return*/];
|
|
64
|
-
}
|
|
65
|
-
return [4 /*yield*/, clearLine(process.stderr)];
|
|
66
|
-
case 1:
|
|
67
|
-
_a.sent();
|
|
68
|
-
return [4 /*yield*/, (0, exports.writeStderr)(util_1.format.apply(void 0, (0, tslib_1.__spreadArray)([label('debug', message)], args, false)))];
|
|
69
|
-
case 2:
|
|
70
|
-
_a.sent();
|
|
71
|
-
return [4 /*yield*/, (0, exports.writeStderr)('\n')];
|
|
72
|
-
case 3:
|
|
73
|
-
_a.sent();
|
|
74
|
-
return [2 /*return*/];
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
exports.debug = debug;
|
|
80
|
-
function warn(message) {
|
|
81
|
-
var args = [];
|
|
82
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
83
|
-
args[_i - 1] = arguments[_i];
|
|
84
|
-
}
|
|
85
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
86
|
-
return (0, tslib_1.__generator)(this, function (_a) {
|
|
87
|
-
switch (_a.label) {
|
|
88
|
-
case 0: return [4 /*yield*/, clearLine(process.stderr)];
|
|
89
|
-
case 1:
|
|
90
|
-
_a.sent();
|
|
91
|
-
return [4 /*yield*/, (0, exports.writeStderr)(util_1.format.apply(void 0, (0, tslib_1.__spreadArray)([label('warn', message)], args, false)))];
|
|
92
|
-
case 2:
|
|
93
|
-
_a.sent();
|
|
94
|
-
return [4 /*yield*/, (0, exports.writeStderr)('\n')];
|
|
95
|
-
case 3:
|
|
96
|
-
_a.sent();
|
|
97
|
-
return [2 /*return*/];
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
exports.warn = warn;
|
|
103
|
-
function error(message) {
|
|
104
|
-
var args = [];
|
|
105
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
106
|
-
args[_i - 1] = arguments[_i];
|
|
107
|
-
}
|
|
108
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
109
|
-
return (0, tslib_1.__generator)(this, function (_a) {
|
|
110
|
-
switch (_a.label) {
|
|
111
|
-
case 0: return [4 /*yield*/, clearLine(process.stderr)];
|
|
112
|
-
case 1:
|
|
113
|
-
_a.sent();
|
|
114
|
-
return [4 /*yield*/, (0, exports.writeStderr)(util_1.format.apply(void 0, (0, tslib_1.__spreadArray)([label('error', message)], args, false)))];
|
|
115
|
-
case 2:
|
|
116
|
-
_a.sent();
|
|
117
|
-
return [4 /*yield*/, (0, exports.writeStderr)('\n')];
|
|
118
|
-
case 3:
|
|
119
|
-
_a.sent();
|
|
120
|
-
return [2 /*return*/];
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
exports.error = error;
|
|
126
|
-
function getStdinAsString() {
|
|
127
|
-
var result = '';
|
|
128
|
-
return new Promise(function (resolve) {
|
|
129
|
-
process.stdin.setEncoding('utf-8');
|
|
130
|
-
process.stdin.on('readable', function () {
|
|
131
|
-
var chunk;
|
|
132
|
-
while ((chunk = process.stdin.read())) {
|
|
133
|
-
result += chunk;
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
process.stdin.on('end', function () {
|
|
137
|
-
resolve(result);
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
exports.getStdinAsString = getStdinAsString;
|
package/src/extract.d.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
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
|
package/src/extract.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,220 +0,0 @@
|
|
|
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 ((0, json_stable_stringify_1.default)(description) !== (0, json_stable_stringify_1.default)(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;
|
|
@@ -1,8 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
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;
|
|
@@ -1,6 +0,0 @@
|
|
|
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
|