Class JSXIntrinsicTranspiler
java.lang.Object
org.nustaq.kontraktor.webapp.transpiler.JSXIntrinsicTranspiler
- All Implemented Interfaces:
TranspilerHook
transpiles jsx without requiring babel.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanstatic booleanprotected booleanprotected Stringprotected booleanprotected JNPMConfigprotected Stringprotected JNPMConfigprotected Fileprotected List<WatchedFile>protected TimeStampedFileCache<JSXGenerator.ParseResult>static booleanprotected FileWatcher -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionautoJNPM(boolean b) automatically import unknown modules via jnpmconfigureJNPM(String nodeModulesDir, String pathToJNPMConfigKsonFile) configureJNPM(String nodeModulesDir, JNPMConfig config) protected StringconstructLibName(File f, FileResolver resolver) dev(boolean dev) protected StringgenerateCommonJSEnd(File f, JSXGenerator.ParseResult result, FileResolver resolver) protected StringgenerateCommonJSPrologue(File f, JSXGenerator.ParseResult result, FileResolver resolver) protected StringgenerateImportEnd(JSXGenerator.ParseResult result, FileResolver resolver) protected StringgenerateImportPrologue(JSXGenerator.ParseResult result, FileResolver resolver) protected JNPMConfigprotected Stringprotected Stringprotected Stringstatic StringgetLookupLibName(String required) globalPrologue(String globalPrologue) hmr(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 booleanjnpmConfig(JNPMConfig jnpmConfig) jnpmConfigFile(String jnpmConfigFile) jnpmConfigFileCached(JNPMConfig jnpmConfigFileCached) jnpmNodeModulesDir(File jnpmNodeModulesDir) nodeModulesDir(File jnpmNodeModulesDir) protected byte[]processJSX(boolean dev, File f, FileResolver resolver, Map<String, Object> alreadyResolved) readFiles(List<WatchedFile> readFiles) byte[]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[]byte[]updateJSX(File f, FileResolver resolver) watcher(FileWatcher watcher)
-
Field Details
-
BUNDLE_NODE_ALWAYS
public static boolean BUNDLE_NODE_ALWAYS -
dev
protected boolean dev -
jnpmNodeModulesDir
-
autoJNPM
protected boolean autoJNPM -
jnpmConfig
-
jnpmConfigFile
-
jnpmConfigFileCached
-
readFiles
-
nodeTopLevelImports
-
watcher
-
transpiledCache
-
nodeDirResolveCache
-
hmr
protected boolean hmr -
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
-
transpile
- Specified by:
transpilein interfaceTranspilerHook
-
updateJSX
-
processJSX
protected byte[] processJSX(boolean dev, File f, FileResolver resolver, Map<String, Object> alreadyResolved) -
isNotInNodeModules
-
getLookupLibName
-
getConfig
-
generateCommonJSPrologue
protected String generateCommonJSPrologue(File f, JSXGenerator.ParseResult result, FileResolver resolver) -
generateCommonJSEnd
protected String generateCommonJSEnd(File f, JSXGenerator.ParseResult result, FileResolver resolver) -
generateImportEnd
-
generateImportPrologue
-
constructLibName
-
getInitialShims
-
getHMRFunWrapper
-
getHMRReloadFun
-
nodeModulesDir
-
configureJNPM
-
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
-