diff --git a/index.ts b/index.ts index 8af30b8..11b552c 100644 --- a/index.ts +++ b/index.ts @@ -1,35 +1,50 @@ import ts = require("typescript"); -function isJsxOpeningLike(node: ts.Node): node is ts.JsxOpeningLikeElement { +function isDefineMessages(el: ts.Declaration, tagName: string): el is ts.VariableDeclaration { return ( - node.kind === ts.SyntaxKind.JsxOpeningElement || - node.kind === ts.SyntaxKind.JsxSelfClosingElement - ); -} - -function isDefineMessages(el, tagName) { - return ( - el.kind === ts.SyntaxKind.VariableDeclaration && + ts.isVariableDeclaration(el) && el.initializer && + ts.isCallExpression(el.initializer) && el.initializer.expression && + ts.isIdentifier(el.initializer.expression) && el.initializer.expression.text === tagName ); } -function findProps(node) { - var res = []; +// Should be pretty fast: https://stackoverflow.com/a/34491287/14379 +function emptyObject(obj: any) { + for (var x in obj) { + return false; + } + return true; +} + +interface LooseObject { + [key: string]: any +} + +function findProps(node: ts.Node): LooseObject[] { + var res: LooseObject[] = []; find(node); - function find(node) { + function find(node: ts.Node): LooseObject[] { if (!node) { return undefined; } - if (node.kind === ts.SyntaxKind.ObjectLiteralExpression) { + if (ts.isObjectLiteralExpression(node)) { node.properties.forEach(p => { - var props = {}; - var prop = {}; - if (p.initializer.properties) { + var prop: LooseObject = {}; + if ( + ts.isPropertyAssignment(p) && + ts.isObjectLiteralExpression(p.initializer) && + p.initializer.properties + ) { p.initializer.properties.forEach(ip => { - prop[ip.name.text] = ip.initializer.text; + if (ts.isIdentifier(ip.name)) { + let name = ip.name.text + if (ts.isPropertyAssignment(ip) && ts.isStringLiteral(ip.initializer)) { + prop[name] = ip.initializer.text; + } + } }); res.push(prop); } @@ -41,43 +56,51 @@ function findProps(node) { return res; } +function forAllVarDecls(node: ts.Node, cb: (el: ts.VariableDeclaration) => void) { + if (ts.isVariableDeclaration(node)) { + cb(node) + } else { + ts.forEachChild(node, n => forAllVarDecls(n, cb)) + } +} + function findFirstJsxOpeningLikeElementWithName( - node, + node: ts.SourceFile, tagName: string, dm?: boolean ) { - var res = []; + var res: LooseObject[] = []; find(node); - function find(node) { + function find(node: ts.Node | ts.SourceFile): undefined { if (!node) { return undefined; } - if (dm && node.getNamedDeclarations) { - var nd = node.getNamedDeclarations(); - nd.forEach(element => { - element.forEach(el => { - if (isDefineMessages(el, tagName)) { - if ( - el.initializer.kind === ts.SyntaxKind.CallExpression && - el.initializer.arguments.length - ) { - var nodeProps = el.initializer.arguments[0]; - var props = findProps(nodeProps); - res = res.concat(props); - } + if (dm && ts.isSourceFile(node)) { + // getNamedDeclarations is not currently public + forAllVarDecls(node, (el: ts.Declaration) => { + if (isDefineMessages(el, tagName)) { + if ( + ts.isCallExpression(el.initializer) && + el.initializer.arguments.length + ) { + var nodeProps = el.initializer.arguments[0]; + var props = findProps(nodeProps); + // props is an array of LooseObject + res = res.concat(props); } - }); - }); + } + }) } else { // Is this a JsxElement with an identifier name? if ( - isJsxOpeningLike(node) && - node.tagName.kind === ts.SyntaxKind.Identifier + ts.isJsxOpeningLikeElement(node) && + ts.isIdentifier(node.tagName) ) { // Does the tag name match what we're looking for? - const childTagName = node.tagName as any; + const childTagName = node.tagName; if (childTagName.text === tagName) { + // node is a JsxOpeningLikeElement res.push(node); } } @@ -95,7 +118,7 @@ function findFirstJsxOpeningLikeElementWithName( * @param {string} contents * @returns {array} */ -function main(contents: string) { +function main(contents: string): {}[] { var sourceFile = ts.createSourceFile( "file.ts", contents, @@ -114,13 +137,12 @@ function main(contents: string) { true ); - const emptyObject = o => JSON.stringify(o) === "{}"; var res = elements .map(element => { - var msg = {}; + var msg: LooseObject = {}; debugger; element.attributes && - element.attributes.properties.forEach(attr => { + element.attributes.properties.forEach((attr: LooseObject) => { // found nothing if (!attr.name || !attr.initializer) return; msg[attr.name.text] = diff --git a/lib/index.js b/lib/index.js index 1bba61f..2c9e544 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,16 +1,20 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var ts = require("typescript"); -function isJsxOpeningLike(node) { - return (node.kind === ts.SyntaxKind.JsxOpeningElement || - node.kind === ts.SyntaxKind.JsxSelfClosingElement); -} function isDefineMessages(el, tagName) { - return (el.kind === ts.SyntaxKind.VariableDeclaration && + return (ts.isVariableDeclaration(el) && el.initializer && + ts.isCallExpression(el.initializer) && el.initializer.expression && + ts.isIdentifier(el.initializer.expression) && el.initializer.expression.text === tagName); } +function emptyObject(obj) { + for (var x in obj) { + return false; + } + return true; +} function findProps(node) { var res = []; find(node); @@ -18,13 +22,19 @@ function findProps(node) { if (!node) { return undefined; } - if (node.kind === ts.SyntaxKind.ObjectLiteralExpression) { + if (ts.isObjectLiteralExpression(node)) { node.properties.forEach(function (p) { - var props = {}; var prop = {}; - if (p.initializer.properties) { + if (ts.isPropertyAssignment(p) && + ts.isObjectLiteralExpression(p.initializer) && + p.initializer.properties) { p.initializer.properties.forEach(function (ip) { - prop[ip.name.text] = ip.initializer.text; + if (ts.isIdentifier(ip.name)) { + var name_1 = ip.name.text; + if (ts.isPropertyAssignment(ip) && ts.isStringLiteral(ip.initializer)) { + prop[name_1] = ip.initializer.text; + } + } }); res.push(prop); } @@ -34,6 +44,14 @@ function findProps(node) { } return res; } +function forAllVarDecls(node, cb) { + if (ts.isVariableDeclaration(node)) { + cb(node); + } + else { + ts.forEachChild(node, function (n) { return forAllVarDecls(n, cb); }); + } +} function findFirstJsxOpeningLikeElementWithName(node, tagName, dm) { var res = []; find(node); @@ -41,24 +59,21 @@ function findFirstJsxOpeningLikeElementWithName(node, tagName, dm) { if (!node) { return undefined; } - if (dm && node.getNamedDeclarations) { - var nd = node.getNamedDeclarations(); - nd.forEach(function (element) { - element.forEach(function (el) { - if (isDefineMessages(el, tagName)) { - if (el.initializer.kind === ts.SyntaxKind.CallExpression && - el.initializer.arguments.length) { - var nodeProps = el.initializer.arguments[0]; - var props = findProps(nodeProps); - res = res.concat(props); - } + if (dm && ts.isSourceFile(node)) { + forAllVarDecls(node, function (el) { + if (isDefineMessages(el, tagName)) { + if (ts.isCallExpression(el.initializer) && + el.initializer.arguments.length) { + var nodeProps = el.initializer.arguments[0]; + var props = findProps(nodeProps); + res = res.concat(props); } - }); + } }); } else { - if (isJsxOpeningLike(node) && - node.tagName.kind === ts.SyntaxKind.Identifier) { + if (ts.isJsxOpeningLikeElement(node) && + ts.isIdentifier(node.tagName)) { var childTagName = node.tagName; if (childTagName.text === tagName) { res.push(node); @@ -73,7 +88,6 @@ function main(contents) { var sourceFile = ts.createSourceFile("file.ts", contents, ts.ScriptTarget.ES2015, false, ts.ScriptKind.TSX); var elements = findFirstJsxOpeningLikeElementWithName(sourceFile, "FormattedMessage"); var dm = findFirstJsxOpeningLikeElementWithName(sourceFile, "defineMessages", true); - var emptyObject = function (o) { return JSON.stringify(o) === "{}"; }; var res = elements .map(function (element) { var msg = {}; diff --git a/lib/index.js.map b/lib/index.js.map index 9dbaa0c..75d5297 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;AAAA,+BAAkC;AAElC,0BAA0B,IAAa;IACrC,MAAM,CAAC,CACL,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,iBAAiB;QAC7C,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAClD,CAAC;AACJ,CAAC;AAED,0BAA0B,EAAE,EAAE,OAAO;IACnC,MAAM,CAAC,CACL,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,mBAAmB;QAC7C,EAAE,CAAC,WAAW;QACd,EAAE,CAAC,WAAW,CAAC,UAAU;QACzB,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAC3C,CAAC;AACJ,CAAC;AAED,mBAAmB,IAAI;IACrB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,cAAc,IAAI;QAChB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,SAAS,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,CAAC;gBACvB,IAAI,KAAK,GAAG,EAAE,CAAC;gBACf,IAAI,IAAI,GAAG,EAAE,CAAC;gBACd,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC7B,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,EAAE;wBACjC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;oBAC3C,CAAC,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,GAAG,CAAC;AACb,CAAC;AAED,gDACE,IAAI,EACJ,OAAe,EACf,EAAY;IAEZ,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,IAAI,CAAC,CAAC;IAEX,cAAc,IAAI;QAChB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,SAAS,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACpC,IAAI,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrC,EAAE,CAAC,OAAO,CAAC,UAAA,OAAO;gBAChB,OAAO,CAAC,OAAO,CAAC,UAAA,EAAE;oBAChB,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;wBAClC,EAAE,CAAC,CACD,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc;4BACpD,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,MAC3B,CAAC,CAAC,CAAC;4BACD,IAAI,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;4BAC5C,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;4BACjC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC1B,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,IAAI,CAAC,CAAC;YAEN,EAAE,CAAC,CACD,gBAAgB,CAAC,IAAI,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,UACtC,CAAC,CAAC,CAAC;gBAED,IAAM,YAAY,GAAG,IAAI,CAAC,OAAc,CAAC;gBACzC,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC;oBAClC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,GAAG,CAAC;AACb,CAAC;AAQD,cAAc,QAAgB;IAC5B,IAAI,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAClC,SAAS,EACT,QAAQ,EACR,EAAE,CAAC,YAAY,CAAC,MAAM,EACF,KAAK,EACzB,EAAE,CAAC,UAAU,CAAC,GAAG,CAClB,CAAC;IAEF,IAAI,QAAQ,GAAG,sCAAsC,CACnD,UAAU,EACV,kBAAkB,CACnB,CAAC;IACF,IAAI,EAAE,GAAG,sCAAsC,CAC7C,UAAU,EACV,gBAAgB,EAChB,IAAI,CACL,CAAC;IAEF,IAAM,WAAW,GAAG,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAA1B,CAA0B,CAAC;IACpD,IAAI,GAAG,GAAG,QAAQ;SACf,GAAG,CAAC,UAAA,OAAO;QACV,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC;QACT,OAAO,CAAC,UAAU;YAChB,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,IAAI;gBAExC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;oBAAC,MAAM,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACjB,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,MAAM,CAAC,GAAG,CAAC;IACb,CAAC,CAAC;SACD,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,WAAW,CAAC,CAAC,CAAC,EAAf,CAAe,CAAC,CAAC;IAEhC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,kBAAe,IAAI,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 0926a02..4cd52a9 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "homepage": "https://github.com/bang88/typescript-react-intl#readme", "dependencies": { - "typescript": "^2.3.4" + "typescript": "^2.6.2" }, "devDependencies": { "@types/react": "^15.0.27", diff --git a/test/app/defineMessages.ts b/test/app/defineMessages.ts index af28ea7..5b508cf 100644 --- a/test/app/defineMessages.ts +++ b/test/app/defineMessages.ts @@ -11,4 +11,12 @@ const lang = defineMessages({ }, }) +// NB not a variable declaration; should be ignored +defineMessages({ + ignored: { + id: 'ignored.title', + defaultMessage: "Ignore me" + }, +}) + export default lang \ No newline at end of file diff --git a/test/app/index.tsx b/test/app/index.tsx index 93dbe98..aac15bd 100644 --- a/test/app/index.tsx +++ b/test/app/index.tsx @@ -7,6 +7,9 @@ export class App extends React.Component{ return
+ + + {/* Not currently supported: */}
} } diff --git a/test/index.js b/test/index.js index 653a6df..c7bd3c9 100644 --- a/test/index.js +++ b/test/index.js @@ -13,10 +13,18 @@ test("", t => { { id: "app", defaultMessage: "the defualt message" + }, + { + id: "expr", + defaultMessage: "a jsx expression" } + // { + // id: "concat", + // defaultMessage: "concatenated strings" + // } ]; - t.is(res.length, 1); + t.is(res.length, 2); t.deepEqual(res, expected); }); diff --git a/tsconfig.json b/tsconfig.json index d6f6a05..ffd7bcf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ "noEmitOnError": false, "target": "es5", "declaration": true, - "noImplicitAny": false, + "noImplicitAny": true, "removeComments": true, "rootDir": "." }, diff --git a/yarn.lock b/yarn.lock index 78dc6ab..9d45e6e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2693,9 +2693,9 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" -typescript@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.4.tgz#3d38321828231e434f287514959c37a82b629f42" +typescript@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" uid-number@~0.0.6: version "0.0.6"