From 3c4e6ead42b3f7d5e352c2b4a2e25ede49581613 Mon Sep 17 00:00:00 2001 From: Daniel Friesen Date: Wed, 20 May 2020 13:09:25 -0700 Subject: [PATCH] Add transforms for TypeScript --- lib/extract-transforms/index.js | 4 ++- ...cript-globalize1-default-into-globalize.js | 30 +++++++++++++++++++ ...balize_runtime_1-default-into-globalize.js | 30 +++++++++++++++++++ 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 lib/extract-transforms/typescript-globalize1-default-into-globalize.js create mode 100644 lib/extract-transforms/typescript-globalize_runtime_1-default-into-globalize.js diff --git a/lib/extract-transforms/index.js b/lib/extract-transforms/index.js index 31c291e..ee38aa0 100644 --- a/lib/extract-transforms/index.js +++ b/lib/extract-transforms/index.js @@ -1,3 +1,5 @@ module.exports = [ - require( "./babel-globalize2-default-into-globalize" ) + require( "./babel-globalize2-default-into-globalize" ), + require( "./typescript-globalize1-default-into-globalize" ), + require( "./typescript-globalize_runtime_1-default-into-globalize" ) ]; diff --git a/lib/extract-transforms/typescript-globalize1-default-into-globalize.js b/lib/extract-transforms/typescript-globalize1-default-into-globalize.js new file mode 100644 index 0000000..9894b22 --- /dev/null +++ b/lib/extract-transforms/typescript-globalize1-default-into-globalize.js @@ -0,0 +1,30 @@ +var esprima = require( "esprima" ); + +var Syntax = esprima.Syntax; + +function isDefaultProperty(prop) { + return (prop.type === Syntax.Literal && prop.value === "default") || + (prop.type === Syntax.Identifier && prop.name === "default"); +} + +/** + * Transform `globalize_1["default"].` or `globalize_1.default.` + * (commonly generated when transpiling TypeScript) into `Globalize.`. + */ +module.exports = { + test: function( node ) { + return node.type === Syntax.CallExpression && + node.callee.type === Syntax.MemberExpression && + node.callee.object.type === Syntax.MemberExpression && + node.callee.object.object.type === Syntax.Identifier && + node.callee.object.object.name === "globalize_1" && + isDefaultProperty(node.callee.object.property); + }, + + transform: function( node ) { + node.callee.object = { + type: Syntax.Identifier, + name: "Globalize" + }; + } +}; diff --git a/lib/extract-transforms/typescript-globalize_runtime_1-default-into-globalize.js b/lib/extract-transforms/typescript-globalize_runtime_1-default-into-globalize.js new file mode 100644 index 0000000..248161b --- /dev/null +++ b/lib/extract-transforms/typescript-globalize_runtime_1-default-into-globalize.js @@ -0,0 +1,30 @@ +var esprima = require( "esprima" ); + +var Syntax = esprima.Syntax; + +function isDefaultProperty(prop) { + return (prop.type === Syntax.Literal && prop.value === "default") || + (prop.type === Syntax.Identifier && prop.name === "default"); +} + +/** + * Transform `globalize_runtime_1["default"].` or `globalize_runtime_1.default.` + * (commonly generated by transpiling TypeScript when using the globalize-runtime modules directly) into `Globalize.`. + */ +module.exports = { + test: function( node ) { + return node.type === Syntax.CallExpression && + node.callee.type === Syntax.MemberExpression && + node.callee.object.type === Syntax.MemberExpression && + node.callee.object.object.type === Syntax.Identifier && + node.callee.object.object.name === "globalize_runtime_1" && + isDefaultProperty(node.callee.object.property); + }, + + transform: function( node ) { + node.callee.object = { + type: Syntax.Identifier, + name: "Globalize" + }; + } +};