# HG changeset patch # User cin # Date 2025-12-04 13:51:16 # Node ID b00d3153045c92a45d9e3103c0539ba031958fd6 # Parent 3843ec3ca8f80048dc58b8e3f8fa7ea2e571eefc wip migrating on new typescript build plugin diff --git a/.project b/.project --- a/.project +++ b/.project @@ -16,12 +16,12 @@ - 1599549685358 + 1678653378261 30 org.eclipse.core.resources.regexFilterMatcher - node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs --- a/.settings/org.eclipse.buildship.core.prefs +++ b/.settings/org.eclipse.buildship.core.prefs @@ -1,11 +1,11 @@ -arguments= +arguments=--init-script /home/sergey/.config/Code/User/globalStorage/redhat.java/1.21.0/config_linux/org.eclipse.osgi/51/0/.cp/gradle/init/init.gradle --init-script /home/sergey/.config/Code/User/globalStorage/redhat.java/1.21.0/config_linux/org.eclipse.osgi/51/0/.cp/gradle/protobuf/init.gradle auto.sync=false build.scans.enabled=false connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= -java.home=/usr/lib64/jvm/java +java.home=/usr/lib64/jvm/java-11-openjdk-11 jvm.arguments= offline.mode=false override.workspace.settings=true diff --git a/build.gradle b/build.gradle --- a/build.gradle +++ b/build.gradle @@ -1,224 +1,97 @@ plugins { - id "org.implab.gradle-typescript" version "1.3.3" - id "org.implab.gradle-hg" - id "ivy-publish" -} - -if (!symbols in ['local', 'pack', 'none']) - throw new Exception("The symbols property value is invalid: $symbols"); - -if (!flavour in ['browser', 'node']) - throw new Exception("The flavour property value is invalid: $flavour"); - -ext { - packageName = flavour == 'browser' ? "@$npmScope/$name-amd" : "@$npmScope/$name" - lint = project.hasProperty('lint') ? project.lint ?: true : false + id "org.implab.gradle-typescript" + id "org.implab.gradle-npm-package" + id "ivy-publish" } -sources { - amd { - typings { - srcDir main.output.typingsDir - } - } - - cjs { - typings { - srcDir main.output.typingsDir - } - } +typescript { + useTsc npm.bin("tsc") - testAmd { - typings { - srcDir main.output.typingsDir - srcDir amd.output.typingsDir - srcDir test.output.typingsDir - } - } - - testCjs { - typings { - srcDir main.output.typingsDir - srcDir cjs.output.typingsDir - srcDir test.output.typingsDir - } + compilerOptions { + incremental = true } } -typescript { - compilerOptions { - types = [] - declaration = true - experimentalDecorators = true - strict = true - // dojo-typings are sick - skipLibCheck = true - - if(symbols != 'none') { - sourceMap = true - sourceRoot = "pack:${packageName}" - } - - if (flavour == 'node') { - module = "commonjs" - target = "es2017" - lib = ["es2017", "dom", "scripthost"] - } else if (flavour == 'browser') { - module = "amd" - target = "es5" - lib = ["es5", "dom", "scripthost", "es2015.promise", "es2015.symbol", "es2015.iterable" ] - } - } - tscCmd = "$projectDir/node_modules/.bin/tsc" - tsLintCmd = "$projectDir/node_modules/.bin/tslint" - esLintCmd = "$projectDir/node_modules/.bin/eslint" -} - -tasks.matching{ it.name =~ /^lint/ }.configureEach { - onlyIf { lint } -} - -if (symbols == 'local') { - tasks.matching{ it.name =~ /^configureTs/ }.configureEach { - compilerOptions { - sourceRoot = "file://" + it.rootDir +def typingsFromMain = { + sets { + named("compileOnlyTypings") { + srcDir main.output("typings") } } } -task printVersion { - doLast { - println "packageName: $packageName"; - println "version: $version"; - println "flavour: $flavour"; - println "target: $typescript.compilerOptions.target"; - println "module: $typescript.compilerOptions.module"; - println "lint: $lint"; - println "symbols: $symbols"; - } -} +variants { + configureEach { variant -> + def sourceSetLocation = { setName, self -> + self.sourceSetDir = layout.projectDirectory.dir("src/${setName}") + self.outputsDir = layout.buildDirectory.dir("${variant.name}/${setName}") + } -npmPackMeta { - meta { - name = packageName - } -} + def main = sources.register("${variant.name}Main", sourceSetLocation.curry("main")) + def test = sources.register("${variant.name}Test", sourceSetLocation.curry("test")) -configureTsCjs { - dependsOn sources.main.output - compilerOptions { - types += [ "node" ] + sourceSets { + add(main) { + role "main" + } + add(test) { + role "test" + } + } } -} + register("browser") { + def srcAmd = sources.register("amd", typingsFromMain) + def srcTestAmd = sources.register("testAmd", typingsFromMain) + + // advice to all TypescriptCompile tasks + typescriptCompile { + baseTsConfig = file("src/tsconfig.browser.json") + } -configureTsAmd { - dependsOn sources.main.output - compilerOptions { - types += [ "requirejs", "dojo-typings" ] - } -} + // creates npmPackBrowser, npmPublishBrowser + npmPackage { + usePackageJson() + metadata { + name = "@implab/core-amd" + } + content { + from sourceSets.byRoles("main").allOutputs() + } + } -test { - workingDir layout.buildDirectory.dir("test"); - commandLine "node", "tests/index.js" -} + sourceSets { + add(srcAmd) { + role "main" + } + add(srcTestAmd) { + role "test" + } + } + } + register("node") { + def srcCjs = sources.register("cjs", typingsFromMain) + def srcTestCjs = sources.register("testCjs", typingsFromMain) -assemble { - if (flavour == 'browser') { - dependsOn sources.amd.output - from sources.amd.output.compiledDir - from sources.amd.resources - } - if (flavour == 'node') { - dependsOn sources.cjs.output - from sources.cjs.output.compiledDir - from sources.cjs.resources - } + compileTasks { + baseTsConfig = file("src/tsconfig.node.json") + } + + npmPackage { + name = "@implab/core" + } + + sourceSets { + add srcAmd + add srcTestAmd + } } -assembleTest { - if (flavour == 'browser') { - dependsOn sources.amd.output, sources.testAmd.output - - from sources.amd.output.compiledDir - from sources.testAmd.output.compiledDir - from sources.amd.resources - from sources.testAmd.resources - } - if (flavour == 'node') { - dependsOn sources.cjs.output, sources.testCjs.output - - from sources.cjs.output.compiledDir - from sources.testCjs.output.compiledDir - from sources.cjs.resources - from sources.testCjs.resources - } -} - -typings { - if (flavour == 'browser') { - dependsOn sources.amd.output - from sources.amd.output.typingsDir - } - if (flavour == 'node') { - dependsOn sources.cjs.output - from sources.cjs.output.typingsDir - } -} - -task npmPackTypings(type: Copy) { - npmPackContents.dependsOn it - dependsOn sources.main.output - - from sources.main.output.typingsDir - - if (flavour == 'browser') { - dependsOn sources.amd.output - from sources.amd.output.typingsDir +npmPackage { + usePackageJson() + metadata { + name = "@implab/core" + version = project.provider { project.version.toString() } } - if (flavour == 'node') { - dependsOn sources.cjs.output - from sources.cjs.output.typingsDir - } - - into npm.packageDir -} - -task npmPackSources(type: Copy) { - from sources.main.ts - if (symbols == 'pack') { - npmPackContents.dependsOn npmPackSources - } - - if (flavour == 'browser') { - from sources.amd.ts - } - if (flavour == 'node') { - from sources.cjs.ts - } - - into npm.packageDir.dir("_src") -} - - - -task packJsTar(type: Tar) { - dependsOn assemble; - - archiveBaseName = provider { packageName } - - destinationDirectory = buildDir - archiveClassifier = provider { typescript.compilerOptions.module } - compression = Compression.GZIP - - from(assemble.outputs) - - doLast { - println archiveName; - } -} - -task packTypingsTar(type: Tar) { } publishing { diff --git a/gradle.properties b/gradle.properties --- a/gradle.properties +++ b/gradle.properties @@ -1,9 +1,6 @@ group=org.implab version= -author=Implab team -description=Dependency injection, logging, simple and fast text processing tools -license=BSD-2-Clause -repository=https://bitbucket.org/implab/implabjs-core -npmScope=implab -flavour=browser -symbols=pack \ No newline at end of file + +org.gradle.parallel=true +org.gradle.configuration-cache.parallel=true +org.gradle.configuration-cache=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 5c2d1cf016b3885f6930543d57b744ea8c220a1a..8bdaf60c75ab801e22807dde59e12a8735a34077 GIT binary patch literal 45457 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -97,92 +131,118 @@ Please set the JAVA_HOME variable in you location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" fi fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done fi + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat --- a/gradlew.bat +++ b/gradlew.bat @@ -13,8 +13,10 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,10 +27,14 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @@ -37,13 +43,13 @@ if defined JAVA_HOME goto findJavaFromJa set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -51,48 +57,35 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/src/cjs/tsconfig.json b/src/cjs/tsconfig.json --- a/src/cjs/tsconfig.json +++ b/src/cjs/tsconfig.json @@ -4,10 +4,9 @@ "types": [ "node" ], - "rootDir": "ts", "rootDirs": [ "ts", - "../typings/main" + "../main/ts" ] }, "include": [ diff --git a/src/main/ts/interfaces.ts b/src/main/ts/interfaces.ts --- a/src/main/ts/interfaces.ts +++ b/src/main/ts/interfaces.ts @@ -100,8 +100,7 @@ export interface IActivatable { * @param controller The activation controller * * Activation controller checks whether this component - * can be activated and manages the active state of the - * component + * can be activated and manages the active state of it. */ setActivationController(controller: IActivationController): void;