1
0

[DURACOM-344] refactor solution to avoid double slashes

This commit is contained in:
FrancescoMolinaro
2025-05-12 17:34:07 +02:00
parent 4c9638150a
commit c442d35505
6 changed files with 77 additions and 45 deletions

View File

@@ -25,18 +25,21 @@ ssr:
inlineCriticalCss: false
# Patterns to be run as regexes against the path of the page to check if SSR is allowed.
# If the path match any of the regexes it will be served directly in CSR.
# By default, excludes community and collection browse, global browse, global search, community list, and statistics.
# By default, excludes community and collection browse, global browse, global search, community list, statistics and various administrative tools.
excludePathPatterns:
- /^\/communities\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/browse(\/.*)?$/i
- /^\/collections\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/browse(\/.*)?$/i
- /^\/browse\//
- /^\/search$/
- /^\/community-list$/
- /^\/statistics\//
- /^\/admin$/
- /^\/processes$/
- /^\/notifications$/
- /^\/health$/
- pattern: "^/communities/[a-f0-9-]{36}/browse(/.*)?$",
flag: "i"
- pattern: "^/collections/[a-f0-9-]{36}/browse(/.*)?$"
flag: "i"
- pattern: "^/browse/"
- pattern: "^/search$"
- pattern: "^/community-list$"
- pattern: "^/admin/"
- pattern: "^/processes/?"
- pattern: "^/notifications/"
- pattern: "^/statistics/?"
- pattern: "^/access-control/"
- pattern: "^/health$"
# Whether to enable rendering of Search component on SSR.
# If set to true the component will be included in the HTML returned from the server side rendering.

View File

@@ -58,6 +58,7 @@ import {
REQUEST,
RESPONSE,
} from './src/express.tokens';
import { SsrExcludePatterns } from "./src/config/ssr-config.interface";
/*
* Set path for the browser application's dist folder
@@ -633,9 +634,11 @@ function start() {
* @param path
* @param excludePathPattern
*/
function isExcludedFromSsr(path: string, excludePathPattern: (string | RegExp)[]): boolean {
return excludePathPattern.some((pattern) => {
const regex = new RegExp(pattern);
function isExcludedFromSsr(path: string, excludePathPattern: SsrExcludePatterns[]): boolean {
const patterns = excludePathPattern.map(p =>
new RegExp(p.pattern, p.flag || '')
);
return patterns.some((regex) => {
return regex.test(path)
});
}

View File

@@ -1,5 +1,10 @@
import { Config } from './config.interface';
export interface SsrExcludePatterns {
pattern: string | RegExp;
flag?: string;
}
export interface SSRConfig extends Config {
/**
* A boolean flag indicating whether the SSR configuration is enabled
@@ -41,7 +46,7 @@ export interface SSRConfig extends Config {
/**
* Patterns to be used as regexes to match url's path and check if SSR is disabled for it.
*/
excludePathPatterns: (string | RegExp)[];
excludePathPatterns: SsrExcludePatterns[];
/**
* Whether to enable rendering of search component on SSR

View File

@@ -11,16 +11,23 @@ export const environment: Partial<BuildConfig> = {
transferState: true,
replaceRestUrl: true,
excludePathPatterns: [
/^\/communities\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/browse(\/.*)?$/i,
/^\/collections\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/browse(\/.*)?$/i,
/^\/browse\//,
/^\/search$/,
/^\/community-list$/,
/^\/statistics\//,
/^\/admin$/,
/^\/processes$/,
/^\/notifications$/,
/^\/health$/,
{
pattern: '^/communities/[a-f0-9-]{36}/browse(/.*)?$',
flag: 'i',
},
{
pattern: '^/collections/[a-f0-9-]{36}/browse(/.*)?$',
flag: 'i',
},
{ pattern: '^/browse/' },
{ pattern: '^/search' },
{ pattern: '^/community-list$' },
{ pattern: '^/statistics/?' },
{ pattern: '^/admin/' },
{ pattern: '^/processes/?' },
{ pattern: '^/notifications/' },
{ pattern: '^/access-control/' },
{ pattern: '^/health$' },
],
enableSearchComponent: false,
enableBrowseComponent: false,

View File

@@ -15,16 +15,23 @@ export const environment: BuildConfig = {
transferState: true,
replaceRestUrl: false,
excludePathPatterns: [
/^\/communities\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/browse(\/.*)?$/i,
/^\/collections\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/browse(\/.*)?$/i,
/^\/browse\//,
/^\/search$/,
/^\/community-list$/,
/^\/statistics\//,
/^\/admin$/,
/^\/processes$/,
/^\/notifications$/,
/^\/health$/,
{
pattern: '^/communities/[a-f0-9-]{36}/browse(/.*)?$',
flag: 'i',
},
{
pattern: '^/collections/[a-f0-9-]{36}/browse(/.*)?$',
flag: 'i',
},
{ pattern: '^/browse/' },
{ pattern: '^/search' },
{ pattern: '^/community-list$' },
{ pattern: '^/statistics/?' },
{ pattern: '^/admin/' },
{ pattern: '^/processes/?' },
{ pattern: '^/notifications/' },
{ pattern: '^/access-control/' },
{ pattern: '^/health$' },
],
enableSearchComponent: false,
enableBrowseComponent: false,

View File

@@ -16,16 +16,23 @@ export const environment: Partial<BuildConfig> = {
transferState: true,
replaceRestUrl: false,
excludePathPatterns: [
/^\/communities\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/browse(\/.*)?$/i,
/^\/collections\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/browse(\/.*)?$/i,
/^\/browse\//,
/^\/search$/,
/^\/community-list$/,
/^\/statistics\//,
/^\/admin$/,
/^\/processes$/,
/^\/notifications$/,
/^\/health$/,
{
pattern: '^/communities/[a-f0-9-]{36}/browse(/.*)?$',
flag: 'i',
},
{
pattern: '^/collections/[a-f0-9-]{36}/browse(/.*)?$',
flag: 'i',
},
{ pattern: '^/browse/' },
{ pattern: '^/search' },
{ pattern: '^/community-list$' },
{ pattern: '^/statistics/?' },
{ pattern: '^/admin/' },
{ pattern: '^/processes/?' },
{ pattern: '^/notifications/' },
{ pattern: '^/access-control/' },
{ pattern: '^/health$' },
],
enableSearchComponent: false,
enableBrowseComponent: false,