{ "id": "87069", "key": "TIMOB-7833", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "12097", "description": "", "name": "Sprint 2012-05", "archived": true, "released": true, "releaseDate": "2012-03-11" }, { "id": "12593", "name": "Release 2.0.0", "archived": false, "released": true, "releaseDate": "2012-03-30" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-03-09T14:49:57.000+0000", "created": "2012-02-27T19:16:16.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "look1", "release-note-2.0.0" ], "versions": [ { "id": "12593", "name": "Release 2.0.0", "archived": false, "released": true, "releaseDate": "2012-03-30" } ], "issuelinks": [ { "id": "15424", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "inwardIssue": { "id": "86860", "key": "MOD-502", "fields": { "summary": "Cloud Module Integration with TiSDK", "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": "Critical", "id": "1" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "15833", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "88229", "key": "TIMOB-8099", "fields": { "summary": "module.xcconfig file is not processed", "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": "Critical", "id": "1" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-16T22:03:45.000+0000", "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" } }, "components": [ { "id": "10207", "name": "Tooling" } ], "description": "With our current module system, modules must either be installed into a project or in the system Titanium folder. In both cases, modules are platform-specific compiled binaries (a static lib for iOS, shared lib for Android).\r\n\r\nIt would be nice to allow pure Javascript / CommonJS modules in a common place that could simply be distributed as JS files, for example a {{common}} or {{commonjs}} folder under the system Titanium directory that would be analogous to today's {{iphone}} and {{android}} directories.", "attachment": [], "flagged": false, "summary": "Tooling: Add support for a \"common\" CommonJS module installation folder", "creator": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "184508", "author": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "body": "We chatted about implementation today, some notes:\r\n\r\n* We will also need a new \"CommonJS\" module project type that only has the common module structure (i.e. documentation, and assets), but no native code generation\r\n* We can safely copy the CommonJS module source code from the \"common\" module folder into the app's staging area unless the app has it's own version of the module. This allows the app to override with their own version if/when necessary, and for Android should ensure the JS gets properly obfuscated and embedded.\r\n", "updateAuthor": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-28T10:51:57.000+0000", "updated": "2012-02-28T10:51:57.000+0000" }, { "id": "185154", "author": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "body": "One more quick update: We don't need to support CommonJS module creation via module.py (or a project template) on this first revision, just pre-packaged CommonJS modules are good enough. Jeff plans to just modify the project template from an iOS or Android module project.", "updateAuthor": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-03-06T09:17:17.000+0000", "updated": "2012-03-06T09:17:17.000+0000" }, { "id": "185418", "author": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "body": "The installed commonjs module structure should be similar to the android and iphone module structure:\r\n\r\n{code}\r\nmodules\r\n commonjs\r\n ti.cloud\r\n 2.0\r\n documentation (folder)\r\n example (folder)\r\n LICENSE\r\n manifest\r\n ti.cloud.js\r\n{code}", "updateAuthor": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "created": "2012-03-07T14:43:54.000+0000", "updated": "2012-03-07T14:43:54.000+0000" }, { "id": "185525", "author": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "body": "CommonJS modules will be referenced in the tiapp.xml as:\r\n\r\n{code}\r\nti.cloud\r\n{code}", "updateAuthor": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "created": "2012-03-08T09:11:42.000+0000", "updated": "2012-03-08T09:11:42.000+0000" }, { "id": "185527", "author": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "body": "Let us know if the .js files are okay in the module folder or if they should be moved into an 'assets' folder. It is possible that there will be multiple .js files and perhaps even images/assets that need to be used with the module.", "updateAuthor": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "created": "2012-03-08T09:14:40.000+0000", "updated": "2012-03-08T09:14:40.000+0000" }, { "id": "185609", "author": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Would using a \"Resources\" folder like we do in the application folder structure work?\r\nHaving all the resources (JavaScript, images, etc) in one folder would probably make copying\r\nof the files during packaging easier.", "updateAuthor": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-03-08T14:25:15.000+0000", "updated": "2012-03-08T14:25:15.000+0000" }, { "id": "185612", "author": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "body": "I suggested 'assets' because that is where we tell developers to put their javascript files when building a 'compiled' javascript module on iOS. 'assets' is the existing concept for module developers.", "updateAuthor": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "created": "2012-03-08T14:32:23.000+0000", "updated": "2012-03-08T14:32:23.000+0000" }, { "id": "185614", "author": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "body": "How would multiple JavaScript files work with our require()?\r\nI can see how a single file (ex: ti.cloud.js -> require('ti.clould')) would work.\r\nIf you have multiple files, is there only one \"index\" file that is public.\r\nAll the others are just for internal use in the module?", "updateAuthor": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-03-08T14:34:19.000+0000", "updated": "2012-03-08T14:34:19.000+0000" }, { "id": "185615", "author": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "body": "Yea, just the top-level module js file would be 'require'd by the developer. *If* there are any other js files they would be 'require'd internally by the module.", "updateAuthor": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "created": "2012-03-08T14:36:12.000+0000", "updated": "2012-03-08T14:36:12.000+0000" }, { "id": "185617", "author": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "body": "We have decided just to implement the single JS file use case for now.\r\nTo support the more advance multiple file case will require a formal specification first\r\nand platform changes to support it.\r\n\r\nThe only file that will be packaged then into the application is the .js file in the root\r\nof the module folder.", "updateAuthor": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-03-08T14:48:08.000+0000", "updated": "2012-03-08T14:48:08.000+0000" }, { "id": "185632", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "Mobile Web supports loading CommonJS and AMD modules synchronously and returns the module you requested (or undefined if it can't load it).\r\n\r\n{code}\r\n// sync\r\nvar mymodule = require(\"my/module\");\r\n{code}\r\n\r\nMobile Web also supports loading AMD formatted modules asynchronously like this:\r\n\r\n{code}\r\n// async\r\nrequire([\"my/module1\", \"my/module2\", \"my/module3\"], function(module1, module2, module3) {\r\n // do magical things\r\n});\r\n{code}", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2012-03-08T15:18:36.000+0000", "updated": "2012-03-08T15:18:36.000+0000" }, { "id": "185828", "author": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Resolved by PR 1625", "updateAuthor": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2012-03-09T14:49:57.000+0000", "updated": "2012-03-09T14:49:57.000+0000" }, { "id": "413255", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-16T22:03:45.000+0000", "updated": "2017-03-16T22:03:45.000+0000" } ], "maxResults": 13, "total": 13, "startAt": 0 } } }