{ "id": "101321", "key": "ALOY-274", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "11113", "key": "ALOY", "name": "Alloy", "projectCategory": { "id": "10400", "description": "Tools for developing applications", "name": "Tooling" } }, "fixVersions": [ { "id": "14632", "description": "Alloy 0.3.2", "name": "Alloy 0.3.2", "archived": false, "released": true, "releaseDate": "2012-11-16" }, { "id": "14600", "description": "2012 Sprint 23", "name": "2012 Sprint 23", "archived": true, "released": true, "releaseDate": "2012-11-19" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-11-15T16:12:15.000+0000", "created": "2012-09-17T08:19:19.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [], "versions": [ { "id": "14171", "description": "", "name": "2012 Sprint 19", "archived": true, "released": true, "releaseDate": "2012-09-24" } ], "issuelinks": [ { "id": "22319", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "outwardIssue": { "id": "101314", "key": "ALOY-273", "fields": { "summary": "uglifyjs improperly handles if/else without curly braces", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "21039", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "outwardIssue": { "id": "100953", "key": "ALOY-261", "fields": { "summary": "Re-evaluate use of uglifyjs vs. code-processor", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "23108", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "inwardIssue": { "id": "105047", "key": "ALOY-393", "fields": { "summary": "Enable optimizer.js", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "22813", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "105043", "key": "ALOY-392", "fields": { "summary": "optimizer.js only optimizes platform conditionals if Ti.Platform is on left hand side", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "22781", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "104946", "key": "ALOY-385", "fields": { "summary": "Standardize unit testing for optimizer.js", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } } ], "assignee": null, "updated": "2018-03-07T22:26:16.000+0000", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "12326", "name": "XML", "description": "View XML and parsing" } ], "description": "The original issue that pointed to the need for revisiting the optimizer.js code was ALOY-273, a very difficult to debug issue reported by a developer. In light of the optimizer's minimal impact on code and the fact that it has more than once made valid JS parse as invalid, it has been disabled.\r\n\r\nWe need to evaluate whether the optimizer.js code is necessary, and if its rewards outweigh its risks. A few failing test cases exist in the optimizer.js now that would need to be resolved before it could be re-enabled, but when they are resolved, should it be re-enabled? What other potential test cases could we be missing that will break otherwise valid JS? Is it worth a few compile time optimizations to potentially create hard to debug issues with valid JS in the future?\r\n\r\nWe need to determine if more judicious use of uglifyjs should be enforced, perhaps only using it for managing our TSS format and providing our compile time directives (OS_IOS, ENV_DEV, etc...). ", "attachment": [], "flagged": false, "summary": "Improve optimizer.js code and testing", "creator": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "227487", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "optimizer.js is now far more stable. This is a result of a major simplification of the optimizer.js code in combination with allowing uglifyjs to remove dead code based on string to string comparisons. All tests pass, including new ones designed to test all the existing known edge cases. The commit(s) can be seen here:\r\n\r\n* refactored code:\r\n** https://github.com/appcelerator/alloy/commit/bcaffef93fada754103f4e1b8927133bb41f250a\r\n** https://github.com/appcelerator/alloy/commit/a2e3294d6ab695b9a2f44d229f969a7fd9933453", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-15T16:12:15.000+0000", "updated": "2012-11-15T16:12:15.000+0000" } ], "maxResults": 1, "total": 1, "startAt": 0 } } }