@formatjs/cli 5.0.1 → 5.0.5

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.
Files changed (53) hide show
  1. package/bin/formatjs +38 -37
  2. package/package.json +46 -44
  3. package/index.d.ts +0 -8
  4. package/index.d.ts.map +0 -1
  5. package/index.js +0 -12
  6. package/main.d.ts +0 -2
  7. package/main.d.ts.map +0 -1
  8. package/main.js +0 -3
  9. package/src/cli.d.ts +0 -3
  10. package/src/cli.d.ts.map +0 -1
  11. package/src/cli.js +0 -142
  12. package/src/compile.d.ts +0 -48
  13. package/src/compile.d.ts.map +0 -1
  14. package/src/compile.js +0 -122
  15. package/src/compile_folder.d.ts +0 -3
  16. package/src/compile_folder.d.ts.map +0 -1
  17. package/src/compile_folder.js +0 -22
  18. package/src/console_utils.d.ts +0 -9
  19. package/src/console_utils.d.ts.map +0 -1
  20. package/src/console_utils.js +0 -141
  21. package/src/extract.d.ts +0 -75
  22. package/src/extract.d.ts.map +0 -1
  23. package/src/extract.js +0 -220
  24. package/src/formatters/crowdin.d.ts +0 -8
  25. package/src/formatters/crowdin.d.ts.map +0 -1
  26. package/src/formatters/crowdin.js +0 -29
  27. package/src/formatters/default.d.ts +0 -6
  28. package/src/formatters/default.d.ts.map +0 -1
  29. package/src/formatters/default.js +0 -13
  30. package/src/formatters/index.d.ts +0 -9
  31. package/src/formatters/index.d.ts.map +0 -1
  32. package/src/formatters/index.js +0 -45
  33. package/src/formatters/lokalise.d.ts +0 -10
  34. package/src/formatters/lokalise.d.ts.map +0 -1
  35. package/src/formatters/lokalise.js +0 -26
  36. package/src/formatters/simple.d.ts +0 -5
  37. package/src/formatters/simple.d.ts.map +0 -1
  38. package/src/formatters/simple.js +0 -12
  39. package/src/formatters/smartling.d.ts +0 -24
  40. package/src/formatters/smartling.d.ts.map +0 -1
  41. package/src/formatters/smartling.js +0 -52
  42. package/src/formatters/transifex.d.ts +0 -10
  43. package/src/formatters/transifex.d.ts.map +0 -1
  44. package/src/formatters/transifex.js +0 -26
  45. package/src/parse_script.d.ts +0 -8
  46. package/src/parse_script.d.ts.map +0 -1
  47. package/src/parse_script.js +0 -50
  48. package/src/pseudo_locale.d.ts +0 -7
  49. package/src/pseudo_locale.d.ts.map +0 -1
  50. package/src/pseudo_locale.js +0 -104
  51. package/src/vue_extractor.d.ts +0 -3
  52. package/src/vue_extractor.d.ts.map +0 -1
  53. 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;
@@ -1,3 +0,0 @@
1
- import { Opts } from './compile';
2
- export default function compileFolder(files: string[], outFolder: string, opts?: Opts): Promise<void[]>;
3
- //# sourceMappingURL=compile_folder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compile_folder.d.ts","sourceRoot":"","sources":["../../../../../../packages/cli/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"}
@@ -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;
@@ -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/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"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../../../../packages/cli/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 (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;
@@ -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/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