move typescript compile into scons to optimize no-op build case