| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 00:22:24 -08:00
										 |  |  | set -u -e -o pipefail | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 01:49:10 -08:00
										 |  |  | readonly currentDir=$(cd $(dirname $0); pwd) | 
					
						
							|  |  |  | source ${currentDir}/scripts/ci/_travis-fold.sh | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 01:49:10 -08:00
										 |  |  | # TODO(i): wrap into subshell, so that we don't pollute CWD, but not yet to minimize diff collision with Jason | 
					
						
							|  |  |  | cd ${currentDir} | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  | PACKAGES=(core | 
					
						
							|  |  |  |   compiler | 
					
						
							|  |  |  |   common | 
					
						
							| 
									
										
										
										
											2017-02-22 15:14:49 -08:00
										 |  |  |   animations | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  |   platform-browser | 
					
						
							|  |  |  |   platform-browser-dynamic | 
					
						
							| 
									
										
											  
											
												fix(forms): make composition event buffering configurable (#15256)
This commit fixes a regression where `ngModel` no longer syncs
letter by letter on Android devices, and instead syncs at the
end of every word. This broke when we introduced buffering of
IME events so IMEs like Pinyin keyboards or Katakana keyboards
wouldn't display composition strings. Unfortunately, iOS devices
and Android devices have opposite event behavior. Whereas iOS
devices fire composition events for IME keyboards only, Android
fires composition events for Latin-language keyboards. For
this reason, languages like English don't work as expected on
Android if we always buffer. So to support both platforms,
composition string buffering will only be turned on by default
for non-Android devices.
However, we have also added a `COMPOSITION_BUFFER_MODE` token
to make this configurable by the application. In some cases, apps
might might still want to receive intermediate values. For example,
some inputs begin searching based on Latin letters before a
character selection is made.
As a provider, this is fairly flexible. If you want to turn
composition buffering off, simply provide the token at the top
level:
```ts
providers: [
   {provide: COMPOSITION_BUFFER_MODE, useValue: false}
]
```
Or, if you want to change the mode  based on locale or platform,
you can use a factory:
```ts
import {shouldUseBuffering} from 'my/lib';
....
providers: [
   {provide: COMPOSITION_BUFFER_MODE, useFactory: shouldUseBuffering}
]
```
Closes #15079.
PR Close #15256
											
										 
											2017-03-20 17:38:33 -07:00
										 |  |  |   forms | 
					
						
							| 
									
										
										
										
											2017-02-10 17:00:27 -08:00
										 |  |  |   http | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  |   platform-server | 
					
						
							|  |  |  |   platform-webworker | 
					
						
							|  |  |  |   platform-webworker-dynamic | 
					
						
							|  |  |  |   upgrade | 
					
						
							| 
									
										
										
										
											2016-11-09 13:33:33 -08:00
										 |  |  |   router | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  |   compiler-cli | 
					
						
							| 
									
										
										
										
											2016-11-22 09:10:23 -08:00
										 |  |  |   language-service | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  |   benchpress) | 
					
						
							| 
									
										
										
										
											2017-01-27 17:39:48 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  | NODE_PACKAGES=(compiler-cli | 
					
						
							|  |  |  |   benchpress) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  | BUILD_ALL=true | 
					
						
							|  |  |  | BUNDLE=true | 
					
						
							| 
									
										
										
										
											2016-11-18 09:24:57 -08:00
										 |  |  | VERSION_PREFIX=$(node -p "require('./package.json').version") | 
					
						
							|  |  |  | VERSION_SUFFIX="-$(git log --oneline -1 | awk '{print $1}')" | 
					
						
							|  |  |  | REMOVE_BENCHPRESS=false | 
					
						
							| 
									
										
										
										
											2017-01-27 17:39:48 -08:00
										 |  |  | BUILD_EXAMPLES=true | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  | COMPILE_SOURCE=true | 
					
						
							|  |  |  | TYPECHECK_ALL=true | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  | BUILD_TOOLS=true | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | for ARG in "$@"; do | 
					
						
							|  |  |  |   case "$ARG" in | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  |     --quick-bundle=*) | 
					
						
							|  |  |  |       COMPILE_SOURCE=false | 
					
						
							|  |  |  |       TYPECHECK_ALL=false | 
					
						
							|  |  |  |       BUILD_EXAMPLES=false | 
					
						
							|  |  |  |       BUILD_TOOLS=false | 
					
						
							|  |  |  |       ;; | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  |     --packages=*) | 
					
						
							|  |  |  |       PACKAGES_STR=${ARG#--packages=} | 
					
						
							|  |  |  |       PACKAGES=( ${PACKAGES_STR//,/ } ) | 
					
						
							|  |  |  |       BUILD_ALL=false | 
					
						
							|  |  |  |       ;; | 
					
						
							|  |  |  |     --bundle=*) | 
					
						
							|  |  |  |       BUNDLE=( "${ARG#--bundle=}" ) | 
					
						
							|  |  |  |       ;; | 
					
						
							| 
									
										
										
										
											2016-11-18 09:24:57 -08:00
										 |  |  |     --publish) | 
					
						
							|  |  |  |       VERSION_SUFFIX="" | 
					
						
							|  |  |  |       REMOVE_BENCHPRESS=true | 
					
						
							|  |  |  |       ;; | 
					
						
							| 
									
										
										
										
											2017-01-27 17:39:48 -08:00
										 |  |  |     --examples=*) | 
					
						
							|  |  |  |       BUILD_EXAMPLES=${ARG#--examples=} | 
					
						
							|  |  |  |       ;; | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |     --compile=*) | 
					
						
							|  |  |  |       COMPILE_SOURCE=${ARG#--compile=} | 
					
						
							|  |  |  |       ;; | 
					
						
							|  |  |  |     --typecheck=*) | 
					
						
							|  |  |  |       TYPECHECK_ALL=${ARG#--typecheck=} | 
					
						
							|  |  |  |       ;; | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  |     --tools=*) | 
					
						
							|  |  |  |       BUILD_TOOLS=${ARG#--tools=} | 
					
						
							|  |  |  |       ;; | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  |     *) | 
					
						
							|  |  |  |       echo "Unknown option $ARG." | 
					
						
							|  |  |  |       exit 1 | 
					
						
							|  |  |  |       ;; | 
					
						
							|  |  |  |   esac | 
					
						
							|  |  |  | done | 
					
						
							| 
									
										
										
										
											2016-05-01 22:54:19 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  | ####################################### | 
					
						
							|  |  |  | # Verifies a directory isn't in the ignored list | 
					
						
							|  |  |  | # Arguments: | 
					
						
							|  |  |  | #   param1 - Path to check | 
					
						
							|  |  |  | # Returns: | 
					
						
							|  |  |  | #   Boolean | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | isIgnoredDirectory() { | 
					
						
							|  |  |  |   name=$(basename ${1}) | 
					
						
							|  |  |  |   if [[ -f "${1}" || "${name}" == "src" || "${name}" == "test" || "${name}" == "integrationtest" ]]; then | 
					
						
							|  |  |  |     return 0 | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     return 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | # Check if array contains an element | 
					
						
							|  |  |  | # Arguments: | 
					
						
							|  |  |  | #   param1 - Element to check | 
					
						
							|  |  |  | #   param2 - Array to look for element in | 
					
						
							|  |  |  | # Returns: | 
					
						
							|  |  |  | #   None | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | containsElement () { | 
					
						
							|  |  |  |   local e | 
					
						
							|  |  |  |   for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done | 
					
						
							|  |  |  |   return 1 | 
					
						
							| 
									
										
										
										
											2017-01-27 17:39:48 -08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 16:39:44 -08:00
										 |  |  | ####################################### | 
					
						
							|  |  |  | # Downlevel ES2015 to ESM/ES5 | 
					
						
							|  |  |  | # Arguments: | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  | #   param1 - Source folder | 
					
						
							|  |  |  | #   param2 - Naming suffix to apply. Must end in ".ts" (defaults to .es5.ts) | 
					
						
							| 
									
										
										
										
											2017-02-23 16:39:44 -08:00
										 |  |  | # Returns: | 
					
						
							|  |  |  | #   None | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | downlevelES2015() { | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |   # Iterate over the files in this directory, converting to .es5.ts | 
					
						
							|  |  |  |   regex="(.+).js" | 
					
						
							|  |  |  |   for file in ${1}/*.js ; do | 
					
						
							|  |  |  |     if [[ ${file} =~ $regex ]]; then | 
					
						
							|  |  |  |       ts_file="${BASH_REMATCH[1]}${2:-".es5.ts"}" | 
					
						
							|  |  |  |       cp ${file} ${ts_file} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-23 13:01:39 -07:00
										 |  |  |       echo "======           $TSC ${ts_file} --target es5 --module es2015 --noLib --sourceMap --importHelpers" | 
					
						
							|  |  |  |       ($TSC ${ts_file} --target es5 --module es2015 --noLib --sourceMap --importHelpers) > /dev/null 2>&1 || true | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  |       mapSources "${BASH_REMATCH[1]}${2:-".es5.js"}" | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |       rm -f ${ts_file} | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Recurse for sub directories | 
					
						
							|  |  |  |   for DIR in ${1}/* ; do | 
					
						
							|  |  |  |     isIgnoredDirectory ${DIR} && continue | 
					
						
							|  |  |  |     downlevelES2015 ${DIR} | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | # Rollup index files recursively, ignoring blacklisted directories | 
					
						
							|  |  |  | # Arguments: | 
					
						
							|  |  |  | #   param1 - Base source folder | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  | #   param2 - Destination directory | 
					
						
							|  |  |  | #   param3 - Config file | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  | # Returns: | 
					
						
							|  |  |  | #   None | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | rollupIndex() { | 
					
						
							|  |  |  |   # Iterate over the files in this directory, rolling up each into ${2} directory | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  |   local regex=".+/(.+)/index.js" | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |   if [[ "${1}/index.js" =~ $regex ]]; then | 
					
						
							|  |  |  |     in_file="${1}/index.js" | 
					
						
							|  |  |  |     out_file="${2}/${BASH_REMATCH[1]}.js" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     echo "======           $ROLLUP -i ${in_file} -o ${out_file}" | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if [[ -f "${3}" ]]; then | 
					
						
							|  |  |  |       $ROLLUP -i ${in_file} -o ${out_file} -c ${3} --sourcemap | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       $ROLLUP -i ${in_file} -o ${out_file} --sourcemap | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |     cat ${LICENSE_BANNER} > ${out_file}.tmp | 
					
						
							|  |  |  |     cat ${out_file} >> ${out_file}.tmp | 
					
						
							|  |  |  |     mv ${out_file}.tmp ${out_file} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  |     mapSources "${out_file}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |     # Recurse for sub directories | 
					
						
							|  |  |  |     for DIR in ${1}/* ; do | 
					
						
							|  |  |  |       isIgnoredDirectory ${DIR} && continue | 
					
						
							|  |  |  |       # NOTE: We need to re-run this regex and use the new match as Bash doesn't have closures | 
					
						
							|  |  |  |       if [[ "${1}/index.js" =~ $regex ]]; then | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  |         rollupIndex ${DIR} ${2}/${BASH_REMATCH[1]} "$(dirname $3)/${BASH_REMATCH[1]}/rollup.config.js" | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |       fi | 
					
						
							|  |  |  |     done | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | # Recursively runs rollup on any entry point that has a "rollup.config.js" file | 
					
						
							|  |  |  | # Arguments: | 
					
						
							|  |  |  | #   param1 - Base source folder containing rollup.config.js | 
					
						
							|  |  |  | # Returns: | 
					
						
							|  |  |  | #   None | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | runRollup() { | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  |   local regex="dest: ['\"](.+)['\"],*" | 
					
						
							|  |  |  |   if [[ -f "${1}/rollup.config.js" ]]; then | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |     cd ${1} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     echo "======           $ROLLUP -c ${1}/rollup.config.js" | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  |     $ROLLUP -c rollup.config.js --sourcemap | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     local dest_line=$(cat "${1}/rollup.config.js" | grep 'dest:') | 
					
						
							|  |  |  |     if [[ ${dest_line} =~ $regex ]]; then | 
					
						
							|  |  |  |       mapSources "${BASH_REMATCH[1]}" | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # Recurse for sub directories | 
					
						
							|  |  |  |     for DIR in ${1}/* ; do | 
					
						
							|  |  |  |       isIgnoredDirectory ${DIR} && continue | 
					
						
							|  |  |  |       runRollup ${DIR} | 
					
						
							|  |  |  |     done | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | # Adds banners to all files in a directory | 
					
						
							|  |  |  | # Arguments: | 
					
						
							|  |  |  | #   param1 - Directory to add license banners to | 
					
						
							|  |  |  | # Returns: | 
					
						
							|  |  |  | #   None | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | addBanners() { | 
					
						
							|  |  |  |   for file in ${1}/*; do | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  |     if [[ -f ${file} && "${file##*.}" != "map" ]]; then | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |       cat ${LICENSE_BANNER} > ${file}.tmp | 
					
						
							|  |  |  |       cat ${file} >> ${file}.tmp | 
					
						
							|  |  |  |       mv ${file}.tmp ${file} | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | # Minifies files in a directory | 
					
						
							|  |  |  | # Arguments: | 
					
						
							|  |  |  | #   param1 - Directory to minify | 
					
						
							|  |  |  | # Returns: | 
					
						
							|  |  |  | #   None | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | minify() { | 
					
						
							|  |  |  |   # Iterate over the files in this directory, rolling up each into ${2} directory | 
					
						
							|  |  |  |   regex="(.+).js" | 
					
						
							|  |  |  |   files=(${1}/*) | 
					
						
							|  |  |  |   echo "${files[@]}" | 
					
						
							|  |  |  |   for file in "${files[@]}"; do | 
					
						
							|  |  |  |     echo "${file}" | 
					
						
							|  |  |  |     base_file=$( basename "${file}" ) | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  |     if [[ "${base_file}" =~ $regex && "${base_file##*.}" != "map" ]]; then | 
					
						
							|  |  |  |       local out_file=$(dirname "${file}")/${BASH_REMATCH[1]}.min.js | 
					
						
							|  |  |  |       $UGLIFYJS -c --screw-ie8 --comments -o ${out_file} --source-map ${out_file}.map --source-map-include-sources ${file} | 
					
						
							|  |  |  |       mapSources "${out_file}" | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |     fi | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | # Recursively compile package | 
					
						
							|  |  |  | # Arguments: | 
					
						
							|  |  |  | #   param1 - Source directory | 
					
						
							|  |  |  | #   param2 - Out dir | 
					
						
							|  |  |  | #   param3 - Package Name | 
					
						
							|  |  |  | #   param4 - Is child (are we recursing?) | 
					
						
							|  |  |  | # Returns: | 
					
						
							|  |  |  | #   None | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | compilePackage() { | 
					
						
							|  |  |  |   echo "======      [${3}]: COMPILING: ${NGC} -p ${1}/tsconfig-build.json" | 
					
						
							|  |  |  |   # For NODE_PACKAGES items (not getting rolled up) | 
					
						
							|  |  |  |   if containsElement "${PACKAGE}" "${NODE_PACKAGES[@]}"; then | 
					
						
							|  |  |  |     $TSC -p ${1}/tsconfig-build.json | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     local package_name=$(basename "${2}") | 
					
						
							|  |  |  |     $NGC -p ${1}/tsconfig-build.json | 
					
						
							|  |  |  |     echo "======           Create ${1}/../${package_name}.d.ts re-export file for Closure" | 
					
						
							|  |  |  |     echo "$(cat ${LICENSE_BANNER}) ${N} export * from './${package_name}/index'" > ${2}/../${package_name}.d.ts | 
					
						
							| 
									
										
										
										
											2017-05-25 18:02:35 -07:00
										 |  |  |     echo "{\"__symbolic\":\"module\",\"version\":3,\"metadata\":{},\"exports\":[{\"from\":\"./${package_name}/index\"}],\"flatModuleIndexRedirect\":true}" > ${2}/../${package_name}.metadata.json | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   for DIR in ${1}/* ; do | 
					
						
							|  |  |  |     [ -d "${DIR}" ] || continue | 
					
						
							|  |  |  |     BASE_DIR=$(basename "${DIR}") | 
					
						
							|  |  |  |     # Skip over directories that are not nested entry points | 
					
						
							|  |  |  |     [[ -e ${DIR}/tsconfig-build.json && "${BASE_DIR}" != "integrationtest" ]] || continue | 
					
						
							|  |  |  |     compilePackage ${DIR} ${2}/${BASE_DIR} ${3} true | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ####################################### | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  | # Moves typings and metadata files appropriately | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  | # Arguments: | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  | #   param1 - Source of typings & metadata files | 
					
						
							|  |  |  | #   param2 - Root of destination directory | 
					
						
							|  |  |  | #   param3 - Package name (needed to correspond to name of d.ts and metadata.json files) | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  | # Returns: | 
					
						
							|  |  |  | #   None | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | moveTypings() { | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  |   if [[ -f ${1}/index.d.ts && -f ${1}/index.metadata.json ]]; then | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |     mv ${1}/index.d.ts ${1}/${2}.d.ts | 
					
						
							|  |  |  |     mv ${1}/index.metadata.json ${1}/${2}.metadata.json | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | # Adds a package.json in directories where needed (secondary entry point typings). | 
					
						
							|  |  |  | # This is read by NGC to be able to find the flat module index. | 
					
						
							|  |  |  | # Arguments: | 
					
						
							|  |  |  | #   param1 - Source directory of typings files | 
					
						
							|  |  |  | # Returns: | 
					
						
							|  |  |  | #   None | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | addNgcPackageJson() { | 
					
						
							|  |  |  |   for DIR in ${1}/* ; do | 
					
						
							|  |  |  |     [ -d "${DIR}" ] || continue | 
					
						
							|  |  |  |     # Confirm there is an index.d.ts and index.metadata.json file. If so, create | 
					
						
							|  |  |  |     # the package.json and recurse. | 
					
						
							|  |  |  |     if [[ -f ${DIR}/index.d.ts && -f ${DIR}/index.metadata.json ]]; then | 
					
						
							|  |  |  |       echo '{"typings": "index.d.ts"}' > ${DIR}/package.json | 
					
						
							|  |  |  |       addNgcPackageJson ${DIR} | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |   done | 
					
						
							| 
									
										
										
										
											2017-01-27 17:39:48 -08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  | ####################################### | 
					
						
							|  |  |  | # This is read by NGC to be able to find the flat module index. | 
					
						
							|  |  |  | # Arguments: | 
					
						
							|  |  |  | #   param1 - JavaScript file on which to re-map sources | 
					
						
							|  |  |  | # Returns: | 
					
						
							|  |  |  | #   None | 
					
						
							|  |  |  | ####################################### | 
					
						
							|  |  |  | mapSources() { | 
					
						
							|  |  |  |   if [[ -f "${1}.map" ]]; then | 
					
						
							|  |  |  |     $MAP_SOURCES -f "${1}" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-18 09:24:57 -08:00
										 |  |  | VERSION="${VERSION_PREFIX}${VERSION_SUFFIX}" | 
					
						
							| 
									
										
										
										
											2017-05-23 02:06:46 +09:00
										 |  |  | echo "====== BUILDING: Version ${VERSION}" | 
					
						
							| 
									
										
										
										
											2016-11-18 09:24:57 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  | N="
 | 
					
						
							|  |  |  | "
 | 
					
						
							|  |  |  | TSC=`pwd`/node_modules/.bin/tsc | 
					
						
							| 
									
										
										
										
											2017-07-16 10:47:46 -07:00
										 |  |  | NGC="node --max-old-space-size=3000 dist/packages-dist/tsc-wrapped/src/main" | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  | MAP_SOURCES="node `pwd`/scripts/build/map_sources.js " | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  | UGLIFYJS=`pwd`/node_modules/.bin/uglifyjs | 
					
						
							| 
									
										
										
										
											2016-05-19 15:28:25 -07:00
										 |  |  | TSCONFIG=./tools/tsconfig.json | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  | ROLLUP=`pwd`/node_modules/.bin/rollup | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  | if [[ ${BUILD_TOOLS} == true ]]; then | 
					
						
							|  |  |  |   travisFoldStart "build tools" "no-xtrace" | 
					
						
							|  |  |  |     echo "====== (tools)COMPILING: \$(npm bin)/tsc -p ${TSCONFIG} =====" | 
					
						
							|  |  |  |     rm -rf ./dist/tools/ | 
					
						
							|  |  |  |     mkdir -p ./dist/tools/ | 
					
						
							|  |  |  |     $(npm bin)/tsc -p ${TSCONFIG} | 
					
						
							|  |  |  |   travisFoldEnd "build tools" | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2017-03-02 00:22:24 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-19 15:28:25 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  | if [[ ${BUILD_ALL} == true && ${TYPECHECK_ALL} == true ]]; then | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  |   travisFoldStart "clean dist" "no-xtrace" | 
					
						
							| 
									
										
										
										
											2017-03-02 00:22:24 -08:00
										 |  |  |     rm -rf ./dist/all/ | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |     rm -rf ./dist/packages | 
					
						
							| 
									
										
										
										
											2017-03-02 00:22:24 -08:00
										 |  |  |   travisFoldEnd "clean dist" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  |   travisFoldStart "copy e2e files" "no-xtrace" | 
					
						
							| 
									
										
										
										
											2017-03-02 00:22:24 -08:00
										 |  |  |     mkdir -p ./dist/all/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-12 22:07:51 +03:00
										 |  |  |     ( | 
					
						
							|  |  |  |       echo "====== Copying files needed for e2e tests =====" | 
					
						
							|  |  |  |       cp -r ./modules/playground ./dist/all/ | 
					
						
							|  |  |  |       cp -r ./modules/playground/favicon.ico ./dist/ | 
					
						
							|  |  |  |       #rsync -aP ./modules/playground/* ./dist/all/playground/ | 
					
						
							|  |  |  |       mkdir ./dist/all/playground/vendor | 
					
						
							|  |  |  |       cd ./dist/all/playground/vendor | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/core-js/client/core.js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/zone.js/dist/zone.js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/zone.js/dist/long-stack-trace-zone.js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/systemjs/dist/system.src.js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/base64-js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/reflect-metadata/Reflect.js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/rxjs . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/angular/angular.js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/hammerjs/hammer.js . | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ( | 
					
						
							|  |  |  |       echo "====== Copying files needed for benchmarks =====" | 
					
						
							|  |  |  |       cp -r ./modules/benchmarks ./dist/all/ | 
					
						
							|  |  |  |       cp -r ./modules/benchmarks/favicon.ico ./dist/ | 
					
						
							|  |  |  |       mkdir ./dist/all/benchmarks/vendor | 
					
						
							|  |  |  |       cd ./dist/all/benchmarks/vendor | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/core-js/client/core.js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/zone.js/dist/zone.js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/zone.js/dist/long-stack-trace-zone.js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/systemjs/dist/system.src.js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/reflect-metadata/Reflect.js . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/rxjs . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/angular/angular.js . | 
					
						
							|  |  |  |       ln -s ../../../../bower_components/polymer . | 
					
						
							|  |  |  |       ln -s ../../../../node_modules/incremental-dom/dist/incremental-dom-cjs.js | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2017-03-02 00:22:24 -08:00
										 |  |  |   travisFoldEnd "copy e2e files" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |   TSCONFIG="packages/tsconfig.json" | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  |   travisFoldStart "tsc -p ${TSCONFIG}" "no-xtrace" | 
					
						
							| 
									
										
										
										
											2017-07-16 10:47:46 -07:00
										 |  |  |     $TSC -p ${TSCONFIG} | 
					
						
							| 
									
										
										
										
											2017-03-02 00:22:24 -08:00
										 |  |  |   travisFoldEnd "tsc -p ${TSCONFIG}" | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |   TSCONFIG="modules/tsconfig.json" | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  |   travisFoldStart "tsc -p ${TSCONFIG}" "no-xtrace" | 
					
						
							| 
									
										
										
										
											2017-07-16 10:47:46 -07:00
										 |  |  |     $TSC -p ${TSCONFIG} | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |   travisFoldEnd "tsc -p ${TSCONFIG}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ ${BUILD_ALL} == true ]]; then | 
					
						
							|  |  |  |   rm -rf ./dist/packages | 
					
						
							|  |  |  |   if [[ ${BUNDLE} == true ]]; then | 
					
						
							|  |  |  |     rm -rf ./dist/packages-dist | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-16 10:47:46 -07:00
										 |  |  | if [[ ${BUILD_TOOLS} == true || ${BUILD_ALL} == true ]]; then | 
					
						
							|  |  |  |   echo "====== (tsc-wrapped)COMPILING: \$(npm bin)/tsc -p packages/tsc-wrapped/tsconfig.json =====" | 
					
						
							|  |  |  |   $(npm bin)/tsc -p packages/tsc-wrapped/tsconfig.json | 
					
						
							|  |  |  |   echo "====== (tsc-wrapped)COMPILING: \$(npm bin)/tsc -p packages/tsc-wrapped/tsconfig-build.json =====" | 
					
						
							|  |  |  |   $(npm bin)/tsc -p packages/tsc-wrapped/tsconfig-build.json | 
					
						
							|  |  |  |   cp ./packages/tsc-wrapped/package.json ./dist/packages-dist/tsc-wrapped | 
					
						
							|  |  |  |   cp ./packages/tsc-wrapped/README.md ./dist/packages-dist/tsc-wrapped | 
					
						
							| 
									
										
										
										
											2017-07-18 12:52:48 -07:00
										 |  |  |   ( | 
					
						
							|  |  |  |     cd dist/packages-dist/tsc-wrapped | 
					
						
							|  |  |  |     echo "======       EXECUTE: perl -p -i -e \"s/0\.0\.0\-PLACEHOLDER/${VERSION}/g\" $""(grep -ril 0\.0\.0\-PLACEHOLDER .)" | 
					
						
							|  |  |  |     perl -p -i -e "s/0\.0\.0\-PLACEHOLDER/${VERSION}/g" $(grep -ril 0\.0\.0\-PLACEHOLDER .) < /dev/null 2> /dev/null | 
					
						
							|  |  |  |   ) | 
					
						
							| 
									
										
										
										
											2017-07-16 10:47:46 -07:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  | for PACKAGE in ${PACKAGES[@]} | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | do | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  |   travisFoldStart "build package: ${PACKAGE}" "no-xtrace" | 
					
						
							| 
									
										
										
										
											2016-08-30 18:07:40 -07:00
										 |  |  |   PWD=`pwd` | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |   ROOT_DIR=${PWD}/packages | 
					
						
							|  |  |  |   SRC_DIR=${ROOT_DIR}/${PACKAGE} | 
					
						
							|  |  |  |   ROOT_OUT_DIR=${PWD}/dist/packages | 
					
						
							|  |  |  |   OUT_DIR=${ROOT_OUT_DIR}/${PACKAGE} | 
					
						
							|  |  |  |   NPM_DIR=${PWD}/dist/packages-dist/${PACKAGE} | 
					
						
							|  |  |  |   MODULES_DIR=${NPM_DIR}/@angular | 
					
						
							|  |  |  |   BUNDLES_DIR=${NPM_DIR}/bundles | 
					
						
							| 
									
										
										
										
											2016-11-16 09:17:19 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-23 02:06:46 +09:00
										 |  |  |   LICENSE_BANNER=${ROOT_DIR}/license-banner.txt | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |   if [[ ${COMPILE_SOURCE} == true ]]; then | 
					
						
							|  |  |  |     rm -rf ${OUT_DIR} | 
					
						
							|  |  |  |     rm -f ${ROOT_OUT_DIR}/${PACKAGE}.js | 
					
						
							|  |  |  |     compilePackage ${SRC_DIR} ${OUT_DIR} ${PACKAGE} | 
					
						
							| 
									
										
										
										
											2017-01-12 17:35:02 -08:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-05-03 14:43:35 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |   if [[ ${BUNDLE} == true ]]; then | 
					
						
							|  |  |  |     echo "======      BUNDLING ${PACKAGE}: ${SRC_DIR} =====" | 
					
						
							|  |  |  |     rm -rf ${NPM_DIR} && mkdir -p ${NPM_DIR} | 
					
						
							| 
									
										
										
										
											2017-01-27 17:39:48 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |     if ! containsElement "${PACKAGE}" "${NODE_PACKAGES[@]}"; then | 
					
						
							| 
									
										
										
										
											2016-11-09 13:33:33 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |       echo "======        Copy ${PACKAGE} typings" | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  |       rsync -a --exclude=*.js --exclude=*.js.map ${OUT_DIR}/ ${NPM_DIR} | 
					
						
							|  |  |  |       moveTypings ${NPM_DIR} ${PACKAGE} | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |       ( | 
					
						
							|  |  |  |         cd  ${SRC_DIR} | 
					
						
							|  |  |  |         echo "======         Rollup ${PACKAGE}" | 
					
						
							| 
									
										
										
										
											2017-03-16 12:55:15 -07:00
										 |  |  |         rollupIndex ${OUT_DIR} ${MODULES_DIR} ${ROOT_DIR} | 
					
						
							| 
									
										
										
										
											2017-01-27 17:39:48 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |         echo "======         Downleveling ES2015 to ESM/ES5" | 
					
						
							|  |  |  |         downlevelES2015 ${MODULES_DIR} | 
					
						
							| 
									
										
										
										
											2017-01-27 17:39:48 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |         echo "======         Run rollup conversions on ${PACKAGE}" | 
					
						
							|  |  |  |         runRollup ${SRC_DIR} | 
					
						
							|  |  |  |         addBanners ${BUNDLES_DIR} | 
					
						
							|  |  |  |         minify ${BUNDLES_DIR} | 
					
						
							| 
									
										
										
										
											2017-02-22 15:14:49 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |       ) 2>&1 | grep -v "as external dependency" | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       echo "======        Copy ${PACKAGE} node tool" | 
					
						
							|  |  |  |       rsync -a ${OUT_DIR}/ ${NPM_DIR} | 
					
						
							| 
									
										
										
										
											2017-02-22 15:14:49 -08:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-19 19:28:21 -07:00
										 |  |  |     echo "======        Copy ${PACKAGE} package.json and .externs.js files" | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |     rsync -am --include="package.json" --include="*/" --exclude=* ${SRC_DIR}/ ${NPM_DIR}/ | 
					
						
							| 
									
										
										
										
											2017-04-19 19:28:21 -07:00
										 |  |  |     rsync -am --include="*.externs.js" --include="*/" --exclude=* ${SRC_DIR}/ ${NPM_DIR}/ | 
					
						
							| 
									
										
										
										
											2016-12-02 14:34:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |     cp ${ROOT_DIR}/README.md ${NPM_DIR}/ | 
					
						
							| 
									
										
										
										
											2016-09-13 09:49:23 -07:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-20 09:08:39 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |   if [[ -d ${NPM_DIR} ]]; then | 
					
						
							| 
									
										
										
										
											2016-06-21 14:44:36 -07:00
										 |  |  |     ( | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |       echo "======      VERSION: Updating version references" | 
					
						
							|  |  |  |       cd ${NPM_DIR} | 
					
						
							|  |  |  |       echo "======       EXECUTE: perl -p -i -e \"s/0\.0\.0\-PLACEHOLDER/${VERSION}/g\" $""(grep -ril 0\.0\.0\-PLACEHOLDER .)" | 
					
						
							|  |  |  |       perl -p -i -e "s/0\.0\.0\-PLACEHOLDER/${VERSION}/g" $(grep -ril 0\.0\.0\-PLACEHOLDER .) < /dev/null 2> /dev/null | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2016-05-03 14:43:35 -06:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2017-01-12 17:35:02 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 00:22:24 -08:00
										 |  |  |   travisFoldEnd "build package: ${PACKAGE}" | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | done | 
					
						
							| 
									
										
										
										
											2016-09-07 16:04:33 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-27 17:39:48 -08:00
										 |  |  | if [[ ${BUILD_EXAMPLES} == true ]]; then | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  |   travisFoldStart "build examples" "no-xtrace" | 
					
						
							| 
									
										
										
										
											2017-03-02 13:54:35 -08:00
										 |  |  |     echo "====== Building examples: ./packages/examples/build.sh =====" | 
					
						
							|  |  |  |     ./packages/examples/build.sh | 
					
						
							| 
									
										
										
										
											2017-03-02 00:22:24 -08:00
										 |  |  |   travisFoldEnd "build examples" | 
					
						
							| 
									
										
										
										
											2017-01-27 17:39:48 -08:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-11-18 09:24:57 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | if [[ ${REMOVE_BENCHPRESS} == true ]]; then | 
					
						
							| 
									
										
										
										
											2017-03-15 13:26:09 -07:00
										 |  |  |   travisFoldStart "remove benchpress" "no-xtrace" | 
					
						
							| 
									
										
										
										
											2017-03-02 00:22:24 -08:00
										 |  |  |     echo "" | 
					
						
							|  |  |  |     echo "==== Removing benchpress from publication" | 
					
						
							|  |  |  |     rm -r dist/packages-dist/benchpress | 
					
						
							|  |  |  |   travisFoldEnd "remove benchpress" | 
					
						
							| 
									
										
										
										
											2016-11-18 09:24:57 -08:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2017-03-02 00:22:24 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Print return arrows as a log separator | 
					
						
							|  |  |  | travisFoldReturnArrows |