@formatjs/ts-transformer 2.8.0 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,9 @@
1
1
 
2
- // /home/longlho/.cache/bazel/_bazel_longlho/576c18efaac10246ec115c72af79fca6/sandbox/linux-sandbox/123/execroot/formatjs/node_modules/@bazel/typescript/internal/ts_project_options_validator.js checked attributes for //packages/ts-transformer:dist-base
2
+ // /home/longlho/.cache/bazel/_bazel_longlho/576c18efaac10246ec115c72af79fca6/sandbox/linux-sandbox/3224/execroot/formatjs/node_modules/@bazel/typescript/internal/ts_project_options_validator.js checked attributes for //packages/ts-transformer:dist-base
3
3
  // composite: false
4
4
  // declaration: true
5
5
  // declaration_map: true
6
6
  // incremental: false
7
7
  // source_map: false
8
8
  // emit_declaration_only: false
9
+ // ts_build_info_file:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formatjs/ts-transformer",
3
- "version": "2.8.0",
3
+ "version": "2.10.1",
4
4
  "description": "TS Compiler transformer for formatjs",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -17,7 +17,7 @@
17
17
  "react-intl"
18
18
  ],
19
19
  "dependencies": {
20
- "intl-messageformat-parser": "^6.0.5",
20
+ "intl-messageformat-parser": "^6.0.7",
21
21
  "typescript": "^4.0"
22
22
  },
23
23
  "author": "Long Ho <holevietlong@gmail.com>",
@@ -1,8 +1,9 @@
1
- import * as ts from 'typescript';
1
+ import * as typescript from 'typescript';
2
2
  import { MessageDescriptor } from './types';
3
3
  export declare type Extractor = (filePath: string, msgs: MessageDescriptor[]) => void;
4
4
  export declare type MetaExtractor = (filePath: string, meta: Record<string, string>) => void;
5
5
  export declare type InterpolateNameFn = (id?: string, defaultMessage?: string, description?: string, filePath?: string) => string;
6
+ declare type TypeScript = typeof typescript;
6
7
  export interface Opts {
7
8
  /**
8
9
  * Parse specific additional custom pragma.
@@ -66,5 +67,7 @@ export interface Opts {
66
67
  */
67
68
  ast?: boolean;
68
69
  }
69
- export declare function transform(opts: Opts): ts.TransformerFactory<ts.SourceFile>;
70
+ export declare function transformWithTs(ts: TypeScript, opts: Opts): typescript.TransformerFactory<typescript.SourceFile>;
71
+ export declare function transform(opts: Opts): typescript.TransformerFactory<typescript.SourceFile>;
72
+ export {};
70
73
  //# sourceMappingURL=transform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../../../../packages/ts-transformer/src/transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAG1C,oBAAY,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;AAC9E,oBAAY,aAAa,GAAG,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACzB,IAAI,CAAC;AAEV,oBAAY,iBAAiB,GAAG,CAC9B,EAAE,CAAC,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,KACd,MAAM,CAAC;AAuCZ,MAAM,WAAW,IAAI;IACnB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC;IAChC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAC1C;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAoXD,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,wCAwBnC"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../../../../packages/ts-transformer/src/transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AACzC,OAAO,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAG1C,oBAAY,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;AAC9E,oBAAY,aAAa,GAAG,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACzB,IAAI,CAAC;AAEV,oBAAY,iBAAiB,GAAG,CAC9B,EAAE,CAAC,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,KACd,MAAM,CAAC;AAQZ,aAAK,UAAU,GAAG,OAAO,UAAU,CAAC;AAmCpC,MAAM,WAAW,IAAI;IACnB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC;IAChC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAC1C;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAwZD,wBAAgB,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,wDAwBzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,wDAEnC"}
package/src/transform.js CHANGED
@@ -37,8 +37,8 @@ var __spreadArrays = (this && this.__spreadArrays) || function () {
37
37
  return r;
38
38
  };
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.transform = void 0;
41
- var ts = __importStar(require("typescript"));
40
+ exports.transform = exports.transformWithTs = void 0;
41
+ var typescript = __importStar(require("typescript"));
42
42
  var interpolate_name_1 = require("./interpolate-name");
43
43
  var intl_messageformat_parser_1 = require("intl-messageformat-parser");
44
44
  var MESSAGE_DESC_KEYS = [
@@ -46,7 +46,7 @@ var MESSAGE_DESC_KEYS = [
46
46
  'defaultMessage',
47
47
  'description',
48
48
  ];
49
- function primitiveToTSNode(v) {
49
+ function primitiveToTSNode(ts, v) {
50
50
  return typeof v === 'string'
51
51
  ? ts.createStringLiteral(v)
52
52
  : typeof v === 'number'
@@ -57,30 +57,30 @@ function primitiveToTSNode(v) {
57
57
  : ts.createFalse()
58
58
  : undefined;
59
59
  }
60
- function objToTSNode(obj) {
60
+ function objToTSNode(ts, obj) {
61
61
  var props = Object.entries(obj).map(function (_a) {
62
62
  var k = _a[0], v = _a[1];
63
- return ts.createPropertyAssignment(k, primitiveToTSNode(v) ||
63
+ return ts.createPropertyAssignment(k, primitiveToTSNode(ts, v) ||
64
64
  (Array.isArray(v)
65
- ? ts.createArrayLiteral(v.map(objToTSNode))
65
+ ? ts.createArrayLiteral(v.map(function (n) { return objToTSNode(ts, n); }))
66
66
  : typeof v === 'object'
67
- ? objToTSNode(v)
67
+ ? objToTSNode(ts, v)
68
68
  : ts.createNull()));
69
69
  });
70
70
  return ts.createObjectLiteral(props);
71
71
  }
72
- function messageASTToTSNode(ast) {
73
- return ts.createArrayLiteral(ast.map(function (el) { return objToTSNode(el); }));
72
+ function messageASTToTSNode(ts, ast) {
73
+ return ts.createArrayLiteral(ast.map(function (el) { return objToTSNode(ts, el); }));
74
74
  }
75
75
  var DEFAULT_OPTS = {
76
76
  onMsgExtracted: function () { return undefined; },
77
77
  onMetaExtracted: function () { return undefined; },
78
78
  };
79
- function isMultipleMessageDecl(node) {
79
+ function isMultipleMessageDecl(ts, node) {
80
80
  return (ts.isIdentifier(node.expression) &&
81
81
  node.expression.text === 'defineMessages');
82
82
  }
83
- function isSingularMessageDecl(node, additionalComponentNames) {
83
+ function isSingularMessageDecl(ts, node, additionalComponentNames) {
84
84
  var compNames = new Set(__spreadArrays([
85
85
  'FormattedMessage',
86
86
  'defineMessage'
@@ -98,7 +98,7 @@ function isSingularMessageDecl(node, additionalComponentNames) {
98
98
  }
99
99
  return compNames.has(fnName);
100
100
  }
101
- function extractMessageDescriptor(node, _a, sf) {
101
+ function extractMessageDescriptor(ts, node, _a, sf) {
102
102
  var overrideIdFn = _a.overrideIdFn, extractSourceLocation = _a.extractSourceLocation;
103
103
  var properties = undefined;
104
104
  if (ts.isObjectLiteralExpression(node)) {
@@ -116,28 +116,42 @@ function extractMessageDescriptor(node, _a, sf) {
116
116
  var initializer = ts.isPropertyAssignment(prop) || ts.isJsxAttribute(prop)
117
117
  ? prop.initializer
118
118
  : undefined;
119
- if (!initializer ||
120
- !ts.isStringLiteral(initializer) ||
121
- !name ||
122
- !ts.isIdentifier(name)) {
123
- return;
124
- }
125
- switch (name.text) {
126
- case 'id':
127
- msg.id = initializer.text;
128
- break;
129
- case 'defaultMessage':
130
- msg.defaultMessage = initializer.text;
131
- break;
132
- case 'description':
133
- msg.description = initializer.text;
134
- break;
119
+ if (name && ts.isIdentifier(name) && initializer) {
120
+ if (ts.isStringLiteral(initializer)) {
121
+ switch (name.text) {
122
+ case 'id':
123
+ msg.id = initializer.text;
124
+ break;
125
+ case 'defaultMessage':
126
+ msg.defaultMessage = initializer.text;
127
+ break;
128
+ case 'description':
129
+ msg.description = initializer.text;
130
+ break;
131
+ }
132
+ }
133
+ else if (ts.isNoSubstitutionTemplateLiteral(initializer)) {
134
+ switch (name.text) {
135
+ case 'id':
136
+ msg.id = initializer.text;
137
+ break;
138
+ case 'defaultMessage':
139
+ msg.defaultMessage = initializer.text;
140
+ break;
141
+ case 'description':
142
+ msg.description = initializer.text;
143
+ break;
144
+ }
145
+ }
135
146
  }
136
147
  });
137
148
  // We extracted nothing
138
149
  if (!msg.defaultMessage && !msg.id) {
139
150
  return;
140
151
  }
152
+ if (msg.defaultMessage) {
153
+ msg.defaultMessage = msg.defaultMessage.trim().replace(/\s+/gm, ' ');
154
+ }
141
155
  if (msg.defaultMessage && overrideIdFn) {
142
156
  switch (typeof overrideIdFn) {
143
157
  case 'string':
@@ -164,7 +178,7 @@ function extractMessageDescriptor(node, _a, sf) {
164
178
  * @param node
165
179
  * @param sf
166
180
  */
167
- function isIntlFormatMessageCall(node) {
181
+ function isIntlFormatMessageCall(ts, node) {
168
182
  var method = node.expression;
169
183
  // Handle intl.formatMessage()
170
184
  if (ts.isPropertyAccessExpression(method)) {
@@ -177,19 +191,19 @@ function isIntlFormatMessageCall(node) {
177
191
  // Handle formatMessage()
178
192
  return ts.isIdentifier(method) && method.text === 'formatMessage';
179
193
  }
180
- function extractMessageFromJsxComponent(node, opts, sf) {
194
+ function extractMessageFromJsxComponent(ts, node, opts, sf) {
181
195
  var onMsgExtracted = opts.onMsgExtracted;
182
- if (!isSingularMessageDecl(node, opts.additionalComponentNames || [])) {
196
+ if (!isSingularMessageDecl(ts, node, opts.additionalComponentNames || [])) {
183
197
  return node;
184
198
  }
185
- var msg = extractMessageDescriptor(node, opts, sf);
199
+ var msg = extractMessageDescriptor(ts, node, opts, sf);
186
200
  if (!msg) {
187
201
  return node;
188
202
  }
189
203
  if (typeof onMsgExtracted === 'function') {
190
204
  onMsgExtracted(sf.fileName, [msg]);
191
205
  }
192
- var attrs = setAttributesInJsxAttributes(node.attributes, {
206
+ var attrs = setAttributesInJsxAttributes(ts, node.attributes, {
193
207
  defaultMessage: opts.removeDefaultMessage
194
208
  ? undefined
195
209
  : msg.defaultMessage,
@@ -199,13 +213,13 @@ function extractMessageFromJsxComponent(node, opts, sf) {
199
213
  ? ts.createJsxOpeningElement(node.tagName, node.typeArguments, attrs)
200
214
  : ts.createJsxSelfClosingElement(node.tagName, node.typeArguments, attrs);
201
215
  }
202
- function setAttributesInObject(node, msg, ast) {
216
+ function setAttributesInObject(ts, node, msg, ast) {
203
217
  var newProps = __spreadArrays([
204
218
  ts.createPropertyAssignment('id', ts.createStringLiteral(msg.id))
205
219
  ], (msg.defaultMessage
206
220
  ? [
207
221
  ts.createPropertyAssignment('defaultMessage', ast
208
- ? messageASTToTSNode(intl_messageformat_parser_1.parse(msg.defaultMessage))
222
+ ? messageASTToTSNode(ts, intl_messageformat_parser_1.parse(msg.defaultMessage))
209
223
  : ts.createStringLiteral(msg.defaultMessage)),
210
224
  ]
211
225
  : []));
@@ -222,13 +236,13 @@ function setAttributesInObject(node, msg, ast) {
222
236
  }
223
237
  return ts.createObjectLiteral(ts.createNodeArray(newProps));
224
238
  }
225
- function setAttributesInJsxAttributes(node, msg, ast) {
239
+ function setAttributesInJsxAttributes(ts, node, msg, ast) {
226
240
  var newProps = __spreadArrays([
227
241
  ts.createJsxAttribute(ts.createIdentifier('id'), ts.createStringLiteral(msg.id))
228
242
  ], (msg.defaultMessage
229
243
  ? [
230
244
  ts.createJsxAttribute(ts.createIdentifier('defaultMessage'), ast
231
- ? ts.createJsxExpression(undefined, messageASTToTSNode(intl_messageformat_parser_1.parse(msg.defaultMessage)))
245
+ ? ts.createJsxExpression(undefined, messageASTToTSNode(ts, intl_messageformat_parser_1.parse(msg.defaultMessage)))
232
246
  : ts.createStringLiteral(msg.defaultMessage)),
233
247
  ]
234
248
  : []));
@@ -245,9 +259,9 @@ function setAttributesInJsxAttributes(node, msg, ast) {
245
259
  }
246
260
  return ts.createJsxAttributes(ts.createNodeArray(newProps));
247
261
  }
248
- function extractMessagesFromCallExpression(node, opts, sf) {
262
+ function extractMessagesFromCallExpression(ts, node, opts, sf) {
249
263
  var onMsgExtracted = opts.onMsgExtracted;
250
- if (isMultipleMessageDecl(node)) {
264
+ if (isMultipleMessageDecl(ts, node)) {
251
265
  var _a = node.arguments, arg = _a[0], restArgs = _a.slice(1);
252
266
  var descriptorsObj = void 0;
253
267
  if (ts.isObjectLiteralExpression(arg)) {
@@ -265,7 +279,7 @@ function extractMessagesFromCallExpression(node, opts, sf) {
265
279
  })
266
280
  .map(function (prop) {
267
281
  return ts.isObjectLiteralExpression(prop.initializer) &&
268
- extractMessageDescriptor(prop.initializer, opts, sf);
282
+ extractMessageDescriptor(ts, prop.initializer, opts, sf);
269
283
  })
270
284
  .filter(function (msg) { return !!msg; });
271
285
  if (!msgs_1.length) {
@@ -279,7 +293,7 @@ function extractMessagesFromCallExpression(node, opts, sf) {
279
293
  !ts.isObjectLiteralExpression(prop.initializer)) {
280
294
  return prop;
281
295
  }
282
- return ts.createPropertyAssignment(prop.name, setAttributesInObject(prop.initializer, {
296
+ return ts.createPropertyAssignment(prop.name, setAttributesInObject(ts, prop.initializer, {
283
297
  defaultMessage: opts.removeDefaultMessage
284
298
  ? undefined
285
299
  : msgs_1[i].defaultMessage,
@@ -290,11 +304,11 @@ function extractMessagesFromCallExpression(node, opts, sf) {
290
304
  return ts.createCall(node.expression, node.typeArguments, ts.createNodeArray(__spreadArrays([clonedDescriptorsObj], restArgs)));
291
305
  }
292
306
  }
293
- else if (isSingularMessageDecl(node, opts.additionalComponentNames || []) ||
294
- (opts.extractFromFormatMessageCall && isIntlFormatMessageCall(node))) {
307
+ else if (isSingularMessageDecl(ts, node, opts.additionalComponentNames || []) ||
308
+ (opts.extractFromFormatMessageCall && isIntlFormatMessageCall(ts, node))) {
295
309
  var _b = node.arguments, descriptorsObj = _b[0], restArgs = _b.slice(1);
296
310
  if (ts.isObjectLiteralExpression(descriptorsObj)) {
297
- var msg = extractMessageDescriptor(descriptorsObj, opts, sf);
311
+ var msg = extractMessageDescriptor(ts, descriptorsObj, opts, sf);
298
312
  if (!msg) {
299
313
  return node;
300
314
  }
@@ -302,7 +316,7 @@ function extractMessagesFromCallExpression(node, opts, sf) {
302
316
  onMsgExtracted(sf.fileName, [msg]);
303
317
  }
304
318
  return ts.createCall(node.expression, node.typeArguments, ts.createNodeArray(__spreadArrays([
305
- setAttributesInObject(descriptorsObj, {
319
+ setAttributesInObject(ts, descriptorsObj, {
306
320
  defaultMessage: opts.removeDefaultMessage
307
321
  ? undefined
308
322
  : msg.defaultMessage,
@@ -314,18 +328,18 @@ function extractMessagesFromCallExpression(node, opts, sf) {
314
328
  return node;
315
329
  }
316
330
  var PRAGMA_REGEX = /^\/\/ @([^\s]*) (.*)$/m;
317
- function getVisitor(ctx, sf, opts) {
331
+ function getVisitor(ts, ctx, sf, opts) {
318
332
  var visitor = function (node) {
319
333
  var newNode = ts.isCallExpression(node)
320
- ? extractMessagesFromCallExpression(node, opts, sf)
334
+ ? extractMessagesFromCallExpression(ts, node, opts, sf)
321
335
  : ts.isJsxOpeningElement(node) || ts.isJsxSelfClosingElement(node)
322
- ? extractMessageFromJsxComponent(node, opts, sf)
336
+ ? extractMessageFromJsxComponent(ts, node, opts, sf)
323
337
  : node;
324
338
  return ts.visitEachChild(newNode, visitor, ctx);
325
339
  };
326
340
  return visitor;
327
341
  }
328
- function transform(opts) {
342
+ function transformWithTs(ts, opts) {
329
343
  opts = __assign(__assign({}, DEFAULT_OPTS), opts);
330
344
  var transformFn = function (ctx) {
331
345
  return function (sf) {
@@ -345,9 +359,13 @@ function transform(opts) {
345
359
  }
346
360
  }
347
361
  }
348
- return ts.visitNode(sf, getVisitor(ctx, sf, opts));
362
+ return ts.visitNode(sf, getVisitor(ts, ctx, sf, opts));
349
363
  };
350
364
  };
351
365
  return transformFn;
352
366
  }
367
+ exports.transformWithTs = transformWithTs;
368
+ function transform(opts) {
369
+ return transformWithTs(typescript, opts);
370
+ }
353
371
  exports.transform = transform;