From 96730c0314beb4ca5dba2e4e80910c477b76f6f1 Mon Sep 17 00:00:00 2001 From: rymsha Date: Tue, 14 Jan 2025 14:35:07 +0100 Subject: [PATCH] Remove nashornPolyfills #1544 --- .../lib/react4xp/ssr/ServerSideRenderer.java | 7 +- .../ssr/engine/EngineBuilderPlatform.java | 74 ---------- .../react4xp/ssr/engine/EngineFactory.java | 39 +++++- .../lib/react4xp/ssr/renderer/Renderer.java | 28 +--- .../ssr/renderer/RendererFactory.java | 8 +- .../polyfill-react4xp/nashornPolyfills.ts | 131 ------------------ .../lib/enonic/react4xp/asset/cache.ts | 122 ---------------- .../enonic/react4xp/asset/cacheKnownAssets.ts | 29 ---- .../lib/enonic/react4xp/asset/getETag.ts | 14 -- .../lib/enonic/react4xp/constants.ts | 2 - .../lib/enonic/react4xp/ssr/SSRreact4xp.ts | 1 - .../lib/enonic/react4xp/ssr/setup.ts | 12 +- .../lib/enonic/react4xp/types/Application.ts | 2 - .../resources/services/react4xp/react4xp.ts | 1 - 14 files changed, 43 insertions(+), 427 deletions(-) delete mode 100644 src/main/java/com/enonic/lib/react4xp/ssr/engine/EngineBuilderPlatform.java delete mode 100644 src/main/resources/lib/enonic/polyfill-react4xp/nashornPolyfills.ts delete mode 100644 src/main/resources/lib/enonic/react4xp/asset/cache.ts delete mode 100644 src/main/resources/lib/enonic/react4xp/asset/cacheKnownAssets.ts delete mode 100644 src/main/resources/lib/enonic/react4xp/asset/getETag.ts diff --git a/src/main/java/com/enonic/lib/react4xp/ssr/ServerSideRenderer.java b/src/main/java/com/enonic/lib/react4xp/ssr/ServerSideRenderer.java index 59e3dab8..ab3e06de 100644 --- a/src/main/java/com/enonic/lib/react4xp/ssr/ServerSideRenderer.java +++ b/src/main/java/com/enonic/lib/react4xp/ssr/ServerSideRenderer.java @@ -11,7 +11,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.enonic.lib.react4xp.ssr.engine.EngineFactory; import com.enonic.lib.react4xp.ssr.errors.ErrorHandler; import com.enonic.lib.react4xp.ssr.renderer.Renderer; import com.enonic.lib.react4xp.ssr.renderer.RendererFactory; @@ -43,8 +42,7 @@ public void initialize( BeanContext context ) } public void setup( String appName, String scriptsHome, String libraryName, String chunkfilesHome, String entriesJsonFilename, - String chunksGlobalsJsonFilename, String statsComponentsFilename, Integer ssrMaxThreads, - String engineName ) + String chunksGlobalsJsonFilename, String statsComponentsFilename, Integer ssrMaxThreads ) { if ( isInitialized.compareAndSet( false, true ) ) { @@ -59,8 +57,7 @@ public void setup( String appName, String scriptsHome, String libraryName, Strin statsComponentsFilename ); final ResourceReader resourceReader = new ResourceReaderImpl( resourceServiceSupplier, ApplicationKey.from( config.APP_NAME ) ); - final EngineFactory engineFactory = new EngineFactory( engineName ); - final RendererFactory rendererFactory = new RendererFactory( engineFactory, resourceReader, config ); + final RendererFactory rendererFactory = new RendererFactory( resourceReader, config ); rendererPool = new GenericObjectPool<>( rendererFactory, createPoolConfig( poolSize ) ); } diff --git a/src/main/java/com/enonic/lib/react4xp/ssr/engine/EngineBuilderPlatform.java b/src/main/java/com/enonic/lib/react4xp/ssr/engine/EngineBuilderPlatform.java deleted file mode 100644 index 67c21a5d..00000000 --- a/src/main/java/com/enonic/lib/react4xp/ssr/engine/EngineBuilderPlatform.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.enonic.lib.react4xp.ssr.engine; - -import java.util.Objects; - -import javax.script.ScriptEngine; -import javax.script.ScriptEngineFactory; -import javax.script.ScriptEngineManager; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Created on 10/05/2021 as part of - */ -public class EngineBuilderPlatform -{ - private final static Logger LOG = LoggerFactory.getLogger( EngineBuilderPlatform.class ); - - private final String engineName; - - private static final ScriptEngineManager SCRIPT_ENGINE_MANAGER; - - private static final String PREFERRED_ENGINE; - - public EngineBuilderPlatform( final String engineName ) - { - this.engineName = engineName; - } - - static - { - final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - Thread.currentThread().setContextClassLoader( ClassLoader.getSystemClassLoader() ); - try - { - SCRIPT_ENGINE_MANAGER = new ScriptEngineManager(); - } - finally - { - Thread.currentThread().setContextClassLoader( classLoader ); - } - - PREFERRED_ENGINE = hasScriptEngine( "Graal.js" ) ? "Graal.js" : hasScriptEngine( "Nashorn" ) ? "Nashorn" : "JavaScript"; - } - - private static boolean hasScriptEngine( final String engineName ) - { - return SCRIPT_ENGINE_MANAGER.getEngineFactories() - .stream() - .map( ScriptEngineFactory::getEngineName ) - .anyMatch( name -> name.contains( engineName ) ); - } - - public ScriptEngine buildEngine() - { - final String resolvedEngineName = Objects.requireNonNullElse( engineName, PREFERRED_ENGINE ); - - LOG.debug( "Init script engine: platform {}", resolvedEngineName ); - final ScriptEngine engineByName; - - final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - Thread.currentThread().setContextClassLoader( ClassLoader.getSystemClassLoader() ); - try - { - engineByName = SCRIPT_ENGINE_MANAGER.getEngineByName( resolvedEngineName ); - } - finally - { - Thread.currentThread().setContextClassLoader( classLoader ); - } - LOG.debug( "Got platform engine {}", engineByName.getFactory().getEngineName() ); - return engineByName; - } -} diff --git a/src/main/java/com/enonic/lib/react4xp/ssr/engine/EngineFactory.java b/src/main/java/com/enonic/lib/react4xp/ssr/engine/EngineFactory.java index f93ed532..b02667f1 100644 --- a/src/main/java/com/enonic/lib/react4xp/ssr/engine/EngineFactory.java +++ b/src/main/java/com/enonic/lib/react4xp/ssr/engine/EngineFactory.java @@ -1,18 +1,47 @@ package com.enonic.lib.react4xp.ssr.engine; import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class EngineFactory { - private final EngineBuilderPlatform engineBuilder; + private final static Logger LOG = LoggerFactory.getLogger( EngineFactory.class ); + + private static final ScriptEngineManager SCRIPT_ENGINE_MANAGER; - public EngineFactory( String engineName ) + static { - this.engineBuilder = new EngineBuilderPlatform( engineName ); + final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + Thread.currentThread().setContextClassLoader( ClassLoader.getSystemClassLoader() ); + try + { + SCRIPT_ENGINE_MANAGER = new ScriptEngineManager(); + } + finally + { + Thread.currentThread().setContextClassLoader( classLoader ); + } } - public ScriptEngine buildEngine() + public static ScriptEngine buildEngine() { - return engineBuilder.buildEngine(); + LOG.debug( "Init script engine"); + final ScriptEngine engineByName; + + final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + Thread.currentThread().setContextClassLoader( ClassLoader.getSystemClassLoader() ); + try + { + engineByName = SCRIPT_ENGINE_MANAGER.getEngineByName( "Graal.js" ); + } + finally + { + Thread.currentThread().setContextClassLoader( classLoader ); + } + LOG.debug( "Got engine {}", engineByName.getFactory().getEngineName() ); + return engineByName; } } diff --git a/src/main/java/com/enonic/lib/react4xp/ssr/renderer/Renderer.java b/src/main/java/com/enonic/lib/react4xp/ssr/renderer/Renderer.java index c6bda2ab..37525169 100644 --- a/src/main/java/com/enonic/lib/react4xp/ssr/renderer/Renderer.java +++ b/src/main/java/com/enonic/lib/react4xp/ssr/renderer/Renderer.java @@ -1,13 +1,11 @@ package com.enonic.lib.react4xp.ssr.renderer; import java.util.Arrays; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; -import javax.script.Bindings; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptException; @@ -32,12 +30,8 @@ public class Renderer { private static final String POLYFILL_BASICS_FILE = "/lib/enonic/polyfill-react4xp/polyfillBasics.js"; - private static final String POLYFILL_REACT4XP_NASHORN_FILE = "/lib/enonic/polyfill-react4xp/nashornPolyfills.js"; - private static final String POLYFILL_REACT4XP_NODE_FILE = "/lib/enonic/polyfill-react4xp/nodePolyfills.js"; - private static final String POLYFILL_REACT4XP_USER_ADDED_FILE = "/lib/enonic/react4xp/nashornPolyfills.userAdded.js"; - private final long id; private final ScriptEngine engine; @@ -46,26 +40,21 @@ public class Renderer { private final AssetLoader assetLoader; - public Renderer( final EngineFactory engineFactory, final ResourceReader resourceReader, final Config config, final long id ) + public Renderer( final ResourceReader resourceReader, final Config config, final long id ) { this.id = id; this.libraryName = config.LIBRARY_NAME; LOG.debug( "#{}:{} starting init...", this.id, this.libraryName ); - this.engine = engineFactory.buildEngine(); + this.engine = EngineFactory.buildEngine(); this.assetLoader = new AssetLoader( resourceReader, config.SCRIPTS_HOME, id, engine ); LOG.debug( "#{}:{} loading polyfills ...", this.id, this.libraryName ); this.assetLoader.loadAssetIntoEngine( POLYFILL_BASICS_FILE, true ); - if ( this.engine.getFactory().getEngineName().contains( "Nashorn" ) ) - { - this.assetLoader.loadAssetIntoEngine( POLYFILL_REACT4XP_NASHORN_FILE, true ); - } this.assetLoader.loadAssetIntoEngine( POLYFILL_REACT4XP_NODE_FILE, true ); - this.assetLoader.loadAssetIntoEngine( POLYFILL_REACT4XP_USER_ADDED_FILE, false ); LOG.debug( "#{}:{} loading globals...", this.id, this.libraryName ); @@ -114,17 +103,12 @@ public Map render( final String entryName, final String props, f final Object propsJson = parseJson( props ); final Object entryWithProps; - if ( entryObject.get( "default" ) instanceof Function ) - { // Graal.js fails to find "default" method when invokeMethod is used. Call directly // Hopefully will be fixed in future versions of Graal.js + // entryWithProps = invocable.invokeMethod( entryObject, "default", propsJson ); + final var defaultFunction = (Function) entryObject.get( "default" ); entryWithProps = defaultFunction.apply( new Object[]{propsJson} ); - } - else - { - entryWithProps = invocable.invokeMethod( entryObject, "default", propsJson ); - } final String renderedHtml = (String) invocable.invokeMethod( this.engine.get( "ReactDOMServer" ), "renderToString", entryWithProps ); @@ -197,10 +181,6 @@ private static List adaptList( final Object object ) { return (List) object; } - else if ( object instanceof Bindings ) // Nashorn case - { - return List.copyOf( (Collection) ( (Bindings) object ).values() ); - } else { throw new IllegalArgumentException( "object is not a list" ); diff --git a/src/main/java/com/enonic/lib/react4xp/ssr/renderer/RendererFactory.java b/src/main/java/com/enonic/lib/react4xp/ssr/renderer/RendererFactory.java index aa166305..ea931f72 100644 --- a/src/main/java/com/enonic/lib/react4xp/ssr/renderer/RendererFactory.java +++ b/src/main/java/com/enonic/lib/react4xp/ssr/renderer/RendererFactory.java @@ -7,22 +7,18 @@ import org.apache.commons.pool2.impl.DefaultPooledObject; import com.enonic.lib.react4xp.ssr.Config; -import com.enonic.lib.react4xp.ssr.engine.EngineFactory; import com.enonic.lib.react4xp.ssr.resources.ResourceReader; public class RendererFactory extends BasePooledObjectFactory { - private final EngineFactory engineFactory; - private final ResourceReader resourceReader; private final Config config; private final AtomicLong id = new AtomicLong(0); - public RendererFactory( EngineFactory engineFactory, ResourceReader resourceReader, Config config ) + public RendererFactory( ResourceReader resourceReader, Config config ) { - this.engineFactory = engineFactory; this.resourceReader = resourceReader; this.config = config; } @@ -30,7 +26,7 @@ public RendererFactory( EngineFactory engineFactory, ResourceReader resourceRead @Override public Renderer create() { - return new Renderer( engineFactory, resourceReader, config, id.incrementAndGet() ); + return new Renderer( resourceReader, config, id.incrementAndGet() ); } @Override diff --git a/src/main/resources/lib/enonic/polyfill-react4xp/nashornPolyfills.ts b/src/main/resources/lib/enonic/polyfill-react4xp/nashornPolyfills.ts deleted file mode 100644 index 66b8a62f..00000000 --- a/src/main/resources/lib/enonic/polyfill-react4xp/nashornPolyfills.ts +++ /dev/null @@ -1,131 +0,0 @@ -// COMPILE AND RUN IN NASHORN - -//────────────────────────────────────────────────────────────────────────────── -// core-js Only required features (global namespace pollution) -//────────────────────────────────────────────────────────────────────────────── -//import 'core-js/actual/map'; // Expected an operand but found import -//import * from 'core-js/actual/map'; // ReferenceError: "Map" is not defined -//import * from 'core-js/actual/set'; - -//────────────────────────────────────────────────────────────────────────────── -// core-js Without global namespace pollution -//────────────────────────────────────────────────────────────────────────────── -import Map from 'core-js-pure/actual/map'; -import Set from 'core-js-pure/actual/set'; -import Symbol from 'core-js-pure/actual/symbol'; - -//────────────────────────────────────────────────────────────────────────────── -// @mrhenry/core-web -//────────────────────────────────────────────────────────────────────────────── -//import '@mrhenry/core-web'; // Expected an operand but found import -//import '@mrhenry/core-web/lib'; // Expected an operand but found import -//import '@mrhenry/core-web/modules/TextEncoder'; // ReferenceError: "self" is not defined - - -//────────────────────────────────────────────────────────────────────────────── -// es6-set-and-map -//────────────────────────────────────────────────────────────────────────────── -/*import { // This works - map as Map//, - //set as Set -} from 'es6-set-and-map';*/ -//import {map, set} from 'es6-set-and-map'; -//import * as SetAndMap from 'es6-set-and-map'; -//import SetAndMap from 'es6-set-and-map'; // Error: 'default' is not exported -//const setAndMap = SetAndMap(); - -//────────────────────────────────────────────────────────────────────────────── -// es6-symbol -//────────────────────────────────────────────────────────────────────────────── -//const Symbol = require('es6-symbol'); // Ponyfill // rollup doesn't bundle require? -//import Symbol from 'es6-symbol'; // Ponyfill // Doesn't appear in transpiled file -//require('es6-symbol/implement'); // rollup doesn't bundle require? - -//import Symbol from 'es6-symbol/polyfill'; // Since I have a undefined check below: Import the Polyfill rather than the Ponyfill. - -//@ts-expect-error TS2695: Left side of comma operator is unused and has no side effects. -const context = (1, eval)('this'); // https://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript; - - -// Polyfills Set, Map and empty event listener (since nashorn is only used for SSR, where event listener is irrelevant): - -//@ts-ignore TS2451: Cannot redeclare block-scoped variable -//const Map = require('es6-set-and-map').map; -//const Map = map; -//const Map = setAndMap.map; -//@ts-ignore TS2451: Cannot redeclare block-scoped variable -//const Set = require('es6-set-and-map').set; -//const Set = set; -//const Set = setAndMap.set; -(function (context) { - if (typeof context.Map === 'undefined') context.Map = Map; // eslint-disable-line no-param-reassign - if (typeof context.Set === 'undefined') context.Set = Set; // eslint-disable-line no-param-reassign - if (typeof context.Symbol === 'undefined') context.Symbol = Symbol; -})(context); - -// NOTE: These are not used locally in this file, neither exported, no idea why they are even here... -// type PhaserConstructor = () => void; -// interface PhaserInstance { -// arriveAndDeregister: () => void -// forceTermination: () => void -// register: () => void -// } - -// type TimerConstructor = (name: string, isDaemon: boolean) => void; -// interface TimerInstance { -// cancel: () => void -// schedule: ( -// fn: () => void, -// millis: number -// ) => void -// } - -// Object.assign -// Polyfill from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#polyfill -// // @ts-expect-error TS2550: Property 'assign' does not exist on type 'ObjectConstructor'. -if (typeof Object.assign !== 'function') { - Object.defineProperty(Object, "assign", { - //@ts-expect-error TS6133: 'varArgs' is declared but its value is never read. - value: function assign(target, varArgs) { - 'use strict'; - - if (target === null || target === undefined) { - throw new TypeError('Cannot convert undefined or null to object'); - } - - const to = Object(target); - - for (let index = 1; index < arguments.length; index++) { - const nextSource = arguments[index]; - - if (nextSource !== null && nextSource !== undefined) { - for (let nextKey in nextSource) { - // Avoid bugs when hasOwnProperty is shadowed - if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { - to[nextKey] = nextSource[nextKey]; - } - } // for source - } // if - } // for arguments - return to; - }, - writable: true, - configurable: true - }); -} - -/*if (!Array.prototype.flat) { - Object.defineProperty(Array.prototype, 'flat', { - value: function(depth = 1) { - return this.reduce(function (flat :Array, toFlatten :Array) { - return flat.concat((Array.isArray(toFlatten) && (depth>1)) ? toFlatten.flat(depth-1) : toFlatten); - }, []); - } - }); -} - -Number.isInteger = Number.isInteger || function(value) { - return typeof value === 'number' && - isFinite(value) && - Math.floor(value) === value; -};*/ diff --git a/src/main/resources/lib/enonic/react4xp/asset/cache.ts b/src/main/resources/lib/enonic/react4xp/asset/cache.ts deleted file mode 100644 index 4e6ae402..00000000 --- a/src/main/resources/lib/enonic/react4xp/asset/cache.ts +++ /dev/null @@ -1,122 +0,0 @@ -import type { - Request, - Response -} from '@enonic-types/core'; - - -import {includes} from '@enonic/js-utils/array/includes'; -import lcKeys from '@enonic/js-utils/object/lcKeys'; -import {cleanAnyDoubleQuoteWrap} from '@enonic/js-utils/string/cleanAnyDoubleQuoteWrap'; -import {startsWith} from '@enonic/js-utils/string/startsWith'; -//import {toStr} from '@enonic/js-utils/value/toStr'; -//@ts-ignore -import {newCache} from '/lib/cache'; -import {eTagGetter} from './eTagGetter'; -import {getImmutables} from './getImmutables'; -import {getEntries} from './getEntries'; -import {immutableGetter} from './immutableGetter'; - - -const ENTRIES = getEntries(); -//log.debug('handleAssetRequest ENTRIES:%s', toStr(ENTRIES)); -const IMMUTABLES = getImmutables(ENTRIES); -//log.debug('handleAssetRequest IMMUTABLES:%s', toStr(IMMUTABLES)); - - -const assetResponseCache = newCache({ - size: 300, - expire: 60*60*24*365 // 1 year -}); - - -const eTagCache = newCache({ - size: 300, - //expire: 60 // 1 minute - expire: 60*60 // 1 hour -}); - - -export function clearAssetResponseCache() { - assetResponseCache.clear() -} - - -export function clearETagCache() { - eTagCache.clear() -} - - -export function expireETag(ETag :string) { - return eTagCache.remove(ETag); -} - - -export function expireAsset({ - assetPath, - ETag -}) { - const cacheKey = `${assetPath}?ETag=${ETag}`; - return assetResponseCache.remove(cacheKey); -} - - -export function getCachedETag(assetPath :string) { - //let fromCache = true; - const etag = eTagCache.get(assetPath, () => { - //fromCache = false; - const response = eTagGetter({ rawPath: assetPath }); - const {headers} = response; - const lcHeaders = lcKeys(headers) as typeof headers; - const {etag} = lcHeaders; // Starts and ends with double quotes - const cleanedETag = cleanAnyDoubleQuoteWrap(etag); - //log.debug('getCachedETag(%s) --> %s (added to cache)', assetPath, ETag); - return cleanedETag; - }) as string; - /*if (fromCache) { - log.debug('getCachedETag(%s) --> %s (from cache)', assetPath, ETag); - }*/ - return etag; -} // getCachedETag - - -export function getCachedAssetResponse(request: Partial) { - //log.debug('getCachedAssetResponse() request:%s', toStr(request)); - const { - contextPath = '', - /*headers: { - 'If-None-Match': ifNoneMatch // "4b9707302f03e8ba--gzip" // Same as ETag from previous Response - } = {},*/ - params: { - ETag - } = {}, - //path, - rawPath - } = request; - - //const cleanIfNoneMatch = cleanAnyDoubleQuoteWrap(ifNoneMatch); // 4b9707302f03e8ba - //log.debug('getCachedAssetResponse() cleanIfNoneMatch:%s', toStr(cleanIfNoneMatch)); - - let cleanPath = rawPath.substring(contextPath.length); - if (startsWith(cleanPath, '/')) { - cleanPath = cleanPath.substring(1); - } - - if (ETag) { - const cacheKey = `${cleanPath}?ETag=${ETag}`; - const cachedResponse = assetResponseCache.get(cacheKey, () => { - //log.debug('getCachedAssetResponse() caching cacheKey:%s to response', cacheKey); - return immutableGetter(request); - }) as Response; - return cachedResponse; - } - - if (IMMUTABLES[cleanPath]) { - return immutableGetter(request); - } - - if (!includes(ENTRIES, cleanPath)) { - log.debug('handleAssetRequest() unable to determine whether immutable falling back to eTagGetter cleanPath:%s', cleanPath); - } - - return eTagGetter(request); // Handles ifNoneMatch requests? -} diff --git a/src/main/resources/lib/enonic/react4xp/asset/cacheKnownAssets.ts b/src/main/resources/lib/enonic/react4xp/asset/cacheKnownAssets.ts deleted file mode 100644 index 0e17e7c7..00000000 --- a/src/main/resources/lib/enonic/react4xp/asset/cacheKnownAssets.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { - clearAssetResponseCache, - clearETagCache, - getCachedAssetResponse, - getCachedETag -} from './cache'; -import {getEntries} from './getEntries'; -//import {getImmutables} from './getImmutables'; - - -const ENTRIES = getEntries(); -//const IMMUTABLES = getImmutables(ENTRIES); - - -export function cacheKnownAssets() { - clearAssetResponseCache(); - clearETagCache(); - for (let i = 0; i < ENTRIES.length; i++) { - const entry = ENTRIES[i]; - const ETag = getCachedETag(entry); - log.debug('cacheKnownAssets(): Caching entry:%s ETag:%s', entry, ETag); - getCachedAssetResponse({ - params: { - ETag - }, - rawPath: entry - }); - } // for ENTRIES -} // cacheKnownAssets diff --git a/src/main/resources/lib/enonic/react4xp/asset/getETag.ts b/src/main/resources/lib/enonic/react4xp/asset/getETag.ts deleted file mode 100644 index 635ae3bf..00000000 --- a/src/main/resources/lib/enonic/react4xp/asset/getETag.ts +++ /dev/null @@ -1,14 +0,0 @@ -import {cleanAnyDoubleQuoteWrap} from '@enonic/js-utils/string/cleanAnyDoubleQuoteWrap'; -import lcKeys from '@enonic/js-utils/object/lcKeys'; -//import {toStr} from '@enonic/js-utils/value/toStr'; -import {eTagGetter} from './eTagGetter'; - - -export function getETag(assetPath :string) { - const response = eTagGetter({ rawPath: assetPath }); - const { headers } = response; - const lcHeaders = lcKeys(headers) as typeof headers; - const { etag } = lcHeaders; // Starts and ends with double quotes - //log.debug('buildAssetUrl() ETag:%s', toStr(ETag)); - return cleanAnyDoubleQuoteWrap(etag); -} diff --git a/src/main/resources/lib/enonic/react4xp/constants.ts b/src/main/resources/lib/enonic/react4xp/constants.ts index fee3be63..07516177 100644 --- a/src/main/resources/lib/enonic/react4xp/constants.ts +++ b/src/main/resources/lib/enonic/react4xp/constants.ts @@ -6,8 +6,6 @@ const RESOURCE_NAME_EXECUTOR_MANIFEST_JSON = 'executor.manifest.json'; export const RESOURCE_PATH_ABSOLUTE_CLIENT_MANIFEST_JSON = `/${R4X_TARGETSUBDIR}/${RESOURCE_NAME_CLIENT_MANIFEST_JSON}`; export const RESOURCE_PATH_ABSOLUTE_EXECUTOR_MANIFEST_JSON = `/${R4X_TARGETSUBDIR}/${RESOURCE_NAME_EXECUTOR_MANIFEST_JSON}`; -//export const RESOURCE_PATH_ABSOLUTE_NASHORNPOLYFILLS_DEFAULT = '/lib/enonic/react4xp/nashornPolyfills.js'; // Hardcoded in Java - export enum REQUEST_METHOD { GET = 'GET', POST = 'POST', diff --git a/src/main/resources/lib/enonic/react4xp/ssr/SSRreact4xp.ts b/src/main/resources/lib/enonic/react4xp/ssr/SSRreact4xp.ts index 61fe7b7d..68be1e40 100644 --- a/src/main/resources/lib/enonic/react4xp/ssr/SSRreact4xp.ts +++ b/src/main/resources/lib/enonic/react4xp/ssr/SSRreact4xp.ts @@ -13,7 +13,6 @@ const SSRreact4xp = __.newBean<{ chunksGlobalsJsonFilename: string, statsComponentsFilename: string, ssrMaxThreads: number, - engineName: string ) => void }>('com.enonic.lib.react4xp.ssr.ServerSideRenderer'); diff --git a/src/main/resources/lib/enonic/react4xp/ssr/setup.ts b/src/main/resources/lib/enonic/react4xp/ssr/setup.ts index 44e231b3..cce6c906 100644 --- a/src/main/resources/lib/enonic/react4xp/ssr/setup.ts +++ b/src/main/resources/lib/enonic/react4xp/ssr/setup.ts @@ -22,15 +22,6 @@ const appConfig = app.config as AppConfig; const SSR_MAX_THREADS = appConfig['react4xp.ssr.maxThreads']; // log.debug(`SSR_MAX_THREADS:%s`, SSR_MAX_THREADS); -const SSR_ENGINE_SETTINGS = appConfig['react4xp.ssr.settings']; -// log.debug(`SSR_ENGINE_SETTINGS:%s`, SSR_ENGINE_SETTINGS); - -const SSR_ENGINE_NAME = appConfig['react4xp.ssr.engineName']; - -// const resourceChunksGlobalsJson = getResource(FULL_GLOBALS_CHUNKS_FILENAME); -// const booleanChunksGlobalsJsonExist = resourceChunksGlobalsJson && resourceChunksGlobalsJson.exists(); - - export function setup({ ssrMaxThreads }: { @@ -53,7 +44,6 @@ export function setup({ normalizeSSRMaxThreads(isSet(ssrMaxThreads) ? ssrMaxThreads : SSR_MAX_THREADS - ), - __.nullOrValue(SSR_ENGINE_NAME) + ) ); } diff --git a/src/main/resources/lib/enonic/react4xp/types/Application.ts b/src/main/resources/lib/enonic/react4xp/types/Application.ts index 57563bab..135bae71 100644 --- a/src/main/resources/lib/enonic/react4xp/types/Application.ts +++ b/src/main/resources/lib/enonic/react4xp/types/Application.ts @@ -5,7 +5,5 @@ export interface AppConfig { 'react4xp.hydrate'?: 'true'|'false' 'react4xp.ssr'?: 'true'|'false' 'react4xp.ssr.maxThreads'?: number|string|unknown - 'react4xp.ssr.settings'?: string - 'react4xp.ssr.engineName'?: 'Graal.js'|'Nashorn' 'react4xp.urlType'?: UrlType } diff --git a/src/main/resources/services/react4xp/react4xp.ts b/src/main/resources/services/react4xp/react4xp.ts index 11f5ff71..ffad4c9e 100644 --- a/src/main/resources/services/react4xp/react4xp.ts +++ b/src/main/resources/services/react4xp/react4xp.ts @@ -1,2 +1 @@ export {handleAssetRequest as get} from '/lib/enonic/react4xp/asset/handleAssetRequest'; -//export {getCachedAssetResponse as get} from '/lib/enonic/react4xp/asset/cache';