TypeScript obfuscator for your applications
TS2JS is a TypeScript preprocessor that allows replacing names of all identifiers making the code unreadable yet completely functional. All identifiers are renamed (classes, methods, variables and so on). Also, the developer still has the ability to debug the script based on user reports thanks to a generated map-file that sheds light on what happened on the production server. Our obfuscator is already used in all JS+ products: starting from CKEditor/TinyMCE plugins to various SDK.
We offer cooperation to software and web service development companies. Our basic offer is a web service fully adapted to your project and its build specifics. For big companies with strict security policies we are ready to provide an enterprise solution deployed on company's own servers.
TS2JS is compatible with any products written on TypeScript regardless of the execution environment (client side / Node server), framework (Angular, ReactJS, Vue.js or others, or an in-house solution) or a builder (Webpack or any other including own solutions).
On contrary, TS2JS uses all information it can extract using the API of the TypeScript compiler. On one side all identifiers are renamed, on the other side identifiers with the same name declared in different visibility scopes (modules, classes etc) will never be confused. You can build the obfuscated sources using Webpack or other builder the same way as before.
All your JS-products are obfuscated, but you still can figure out the error users report a bug about. This is thanks to a map-file created during obfuscation.
When the developer receives a bug report from a customer, he can always restore the stack trace including information about identifiers and line numbers. The map-file is generated on the first build, and you can use it with the further releases too (the file is appended), which allows for uniformity of the naming (optional).
If your product has API external scripts can use to interact with it, you may leave some variables, functions, classes, class methods and properties non-obfuscated.
Also, forced suppression of obfuscation is available by using brackets notation instead of arrowed notation to access the object. For example:
`person->id` - will be obfuscated completely
`person['id']` - the id field of the object will remain non-obfuscated
For projects with complex structure, an individual approach to select non-obfuscated zones and exclusion can be designed.