Class JSXIntrinsicTranspiler
java.lang.Object
org.nustaq.kontraktor.webapp.transpiler.JSXIntrinsicTranspiler
- All Implemented Interfaces:
TranspilerHook
public class JSXIntrinsicTranspiler extends java.lang.Object implements TranspilerHook
transpiles jsx without requiring babel.
-
Field Summary
Fields Modifier and Type Field Description protected booleanautoJNPMstatic booleanBUNDLE_NODE_ALWAYSprotected booleandevprotected java.lang.StringglobalPrologueprotected booleanhmrprotected JNPMConfigjnpmConfigprotected java.lang.StringjnpmConfigFileprotected JNPMConfigjnpmConfigFileCachedprotected java.io.FilejnpmNodeModulesDirprotected java.util.Map<java.lang.String,java.io.File>nodeDirResolveCacheprotected java.util.Map<java.lang.String,java.io.File>nodeTopLevelImportsprotected java.util.List<WatchedFile>readFilesprotected TimeStampedFileCache<JSXGenerator.ParseResult>transpiledCachestatic booleanUSE_CUSTOM_RELOADFUNprotected FileWatcherwatcher -
Constructor Summary
Constructors Constructor Description JSXIntrinsicTranspiler(boolean dev) -
Method Summary
Modifier and Type Method Description JSXIntrinsicTranspilerautoJNPM(boolean b)automatically import unknown modules via jnpmJSXIntrinsicTranspilerconfigureJNPM(java.lang.String nodeModulesDir, java.lang.String pathToJNPMConfigKsonFile)JSXIntrinsicTranspilerconfigureJNPM(java.lang.String nodeModulesDir, JNPMConfig config)protected java.lang.StringconstructLibName(java.io.File f, FileResolver resolver)JSXIntrinsicTranspilerdev(boolean dev)JSXIntrinsicTranspilerfalseFile(java.io.File falseFile)protected java.lang.StringgenerateCommonJSEnd(java.io.File f, JSXGenerator.ParseResult result, FileResolver resolver)protected java.lang.StringgenerateCommonJSPrologue(java.io.File f, JSXGenerator.ParseResult result, FileResolver resolver)protected java.lang.StringgenerateImportEnd(JSXGenerator.ParseResult result, FileResolver resolver)protected java.lang.StringgenerateImportPrologue(JSXGenerator.ParseResult result, FileResolver resolver)protected JNPMConfiggetConfig()java.lang.StringgetGlobalPrologue()protected java.lang.StringgetHMRFunWrapper()protected java.lang.StringgetHMRReloadFun()protected java.lang.StringgetInitialShims()static java.lang.StringgetLookupLibName(java.lang.String required)JSXIntrinsicTranspilerglobalPrologue(java.lang.String globalPrologue)JSXIntrinsicTranspilerhmr(boolean hmr)enable hot module reloading, requires exposure of FileWatcher as a json websocket actor like: .websocket("/hotreloading", FileWatcher.get()) .serType(SerializerType.JsonNoRef) .buildWebsocket()static booleanisNotInNodeModules(java.io.File f)JSXIntrinsicTranspilerjnpmConfig(JNPMConfig jnpmConfig)JSXIntrinsicTranspilerjnpmConfigFile(java.lang.String jnpmConfigFile)JSXIntrinsicTranspilerjnpmConfigFileCached(JNPMConfig jnpmConfigFileCached)JSXIntrinsicTranspilerjnpmNodeModulesDir(java.io.File jnpmNodeModulesDir)JSXIntrinsicTranspilernodeModulesDir(java.io.File jnpmNodeModulesDir)protected byte[]processJSX(boolean dev, java.io.File f, FileResolver resolver, java.util.Map<java.lang.String,java.lang.Object> alreadyResolved)JSXIntrinsicTranspilerreadFiles(java.util.List<WatchedFile> readFiles)byte[]transpile(java.io.File f)indicates a file is being accessed. in dev mode this is called always (so its up to the implementation to check for filedate/modification).byte[]transpile(java.io.File f, FileResolver resolver, java.util.Map<java.lang.String,java.lang.Object> alreadyResolved)byte[]updateJSX(java.io.File f, FileResolver resolver)JSXIntrinsicTranspilerwatcher(FileWatcher watcher)
-
Field Details
-
BUNDLE_NODE_ALWAYS
public static boolean BUNDLE_NODE_ALWAYS -
dev
protected boolean dev -
jnpmNodeModulesDir
protected java.io.File jnpmNodeModulesDir -
autoJNPM
protected boolean autoJNPM -
jnpmConfig
-
jnpmConfigFile
protected java.lang.String jnpmConfigFile -
jnpmConfigFileCached
-
readFiles
-
nodeTopLevelImports
protected java.util.Map<java.lang.String,java.io.File> nodeTopLevelImports -
watcher
-
transpiledCache
-
nodeDirResolveCache
protected java.util.Map<java.lang.String,java.io.File> nodeDirResolveCache -
hmr
protected boolean hmr -
globalPrologue
protected java.lang.String globalPrologue -
USE_CUSTOM_RELOADFUN
public static boolean USE_CUSTOM_RELOADFUN
-
-
Constructor Details
-
JSXIntrinsicTranspiler
public JSXIntrinsicTranspiler(boolean dev)
-
-
Method Details
-
transpile
Description copied from interface:TranspilerHookindicates a file is being accessed. in dev mode this is called always (so its up to the implementation to check for filedate/modification). In order to run an external transpiler, just run transpilation synchronous such that the given file is updated and return null. Alternatively an implementation might choose to just transpile dynamically and directly return byte[]. NOTE: transpilation is static. this means in production mode it will be called once on first resource access.- Specified by:
transpilein interfaceTranspilerHook- Parameters:
f- - the file being accessed (after resourcepath resolvment)- Returns:
- either (transpiled) file content or null. Should throw an exception in case an error occured during transpile.
- Throws:
TranspileException
-
globalPrologue
-
getGlobalPrologue
public java.lang.String getGlobalPrologue() -
transpile
public byte[] transpile(java.io.File f, FileResolver resolver, java.util.Map<java.lang.String,java.lang.Object> alreadyResolved)- Specified by:
transpilein interfaceTranspilerHook
-
updateJSX
-
processJSX
protected byte[] processJSX(boolean dev, java.io.File f, FileResolver resolver, java.util.Map<java.lang.String,java.lang.Object> alreadyResolved) -
isNotInNodeModules
public static boolean isNotInNodeModules(java.io.File f) -
getLookupLibName
public static java.lang.String getLookupLibName(java.lang.String required) -
getConfig
-
generateCommonJSPrologue
protected java.lang.String generateCommonJSPrologue(java.io.File f, JSXGenerator.ParseResult result, FileResolver resolver) -
generateCommonJSEnd
protected java.lang.String generateCommonJSEnd(java.io.File f, JSXGenerator.ParseResult result, FileResolver resolver) -
generateImportEnd
protected java.lang.String generateImportEnd(JSXGenerator.ParseResult result, FileResolver resolver) -
generateImportPrologue
protected java.lang.String generateImportPrologue(JSXGenerator.ParseResult result, FileResolver resolver) -
constructLibName
-
getInitialShims
protected java.lang.String getInitialShims() -
getHMRFunWrapper
protected java.lang.String getHMRFunWrapper() -
getHMRReloadFun
protected java.lang.String getHMRReloadFun() -
nodeModulesDir
-
configureJNPM
public JSXIntrinsicTranspiler configureJNPM(java.lang.String nodeModulesDir, java.lang.String pathToJNPMConfigKsonFile) -
configureJNPM
-
autoJNPM
automatically import unknown modules via jnpm- Parameters:
b-- Returns:
-
dev
-
jnpmNodeModulesDir
-
jnpmConfig
-
jnpmConfigFile
-
jnpmConfigFileCached
-
readFiles
-
watcher
-
hmr
enable hot module reloading, requires exposure of FileWatcher as a json websocket actor like: .websocket("/hotreloading", FileWatcher.get()) .serType(SerializerType.JsonNoRef) .buildWebsocket()- Parameters:
hmr-- Returns:
-
falseFile
-