add component.json
support abort() for browser side code