{ "id": "105182", "key": "TIMOB-11817", "fields": { "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "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": [], "resolution": null, "resolutiondate": null, "created": "2012-11-19T04:05:07.000+0000", "epic": { "id": 172628, "key": "TIMOB-26570", "name": "Node Compatibility", "summary": "Node compatibility and developer experience", "color": { "key": "color_3" }, "done": false }, "priority": { "name": "Low", "id": "4" }, "labels": [ "rock_solid", "ti.next" ], "versions": [], "issuelinks": [ { "id": "57011", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "144873", "key": "TIMOB-18583", "fields": { "summary": "TiAPI: Create Node-compatible filesystem module API", "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": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updated": "2018-11-16T15:28:26.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "10224", "name": "TiAPI", "description": "This component is used for cross-platform API work. Specifications are most likely to use this component." } ], "description": "We need to rework the FileSystem API, perhaps as a module\n\nThe biggest problem with the FileSystem API is parity. You can't even tell if something is a file or a directory on iOS. As far as Mobile Web is concerned, the FileSystem architecture supports multiple backends. The one and only backend today is local storage. I'd like to add a IndexedDB backed storage system, but IndexedDB is completely async, so it's not compatible with the Titanium FileSystem API.\n\nWe should make it like node.js. This means Ti.FileSystem goes bye bye. You would require('fs') to get the FileSystem API. We should expose methods that are async friendly. Doing it this way allows us to:\n\n# ship both the existing FileSystem API and the new one\n# pave the way for ripping modules out of the Titanium namespace\n# introduce async versions of filesystem functions\n# mimic node.js's FileSystem API\n\nOn Mobile Web, it will be tricky/impossible to have a hybrid filesystem layer where local storage is used for synchronous api calls and IndexedDB is used for async calls. If the backend is IndexedDB, we could just have all sync functions fail in combination with the code processor detecting sync filesystem calls being made when IndexedDB is the backend.", "attachment": [], "flagged": false, "summary": "Rework FileSystem API", "creator": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [], "maxResults": 3, "total": 3, "startAt": 0 } } }