Merge branch 'main' into UIUX/multi-tool-button-container-styling

This commit is contained in:
EthanHealy01 2025-07-09 11:03:11 +01:00 committed by GitHub
commit 29aebefc03
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 105 additions and 117 deletions

View File

@ -27,21 +27,25 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# Get version number - name: Set up JDK
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
distribution: 'temurin'
java-version: '21'
# ✅ Get version from Gradle
- name: Get version number - name: Get version number
id: versionNumber id: versionNumber
run: | run: |
VERSION=$(grep "^version =" build.gradle | awk -F'"' '{print $2}') VERSION=$(./gradlew printVersion --quiet | tail -1)
echo "versionNumber=$VERSION" >> $GITHUB_OUTPUT echo "versionNumber=$VERSION" >> $GITHUB_OUTPUT
# ✅ Get Mac-specific version from Gradle
- name: Get version number mac - name: Get version number mac
id: versionNumberMac id: versionNumberMac
run: | run: |
VERSION=$(grep "^version =" build.gradle | awk -F'"' '{print $2}') VERSION_MAC=$(./gradlew printMacVersion --quiet | tail -1)
CURRENT_YEAR=$(date +'%Y') echo "versionNumberMac=$VERSION_MAC" >> $GITHUB_OUTPUT
IFS='.' read -r -a VERSION_PARTS <<< "$VERSION"
MAC_VERSION="$CURRENT_YEAR.${VERSION_PARTS[1]:-0}.${VERSION_PARTS[2]:-0}"
echo "versionNumberMac=$MAC_VERSION" >> $GITHUB_OUTPUT
build-portable: build-portable:
needs: read_versions needs: read_versions
@ -82,7 +86,7 @@ jobs:
run: | run: |
mkdir ./binaries mkdir ./binaries
mv ./build/launch4j/Stirling-PDF.exe ./binaries/win-Stirling-PDF-portable-Server${{ matrix.file_suffix }}.exe mv ./build/launch4j/Stirling-PDF.exe ./binaries/win-Stirling-PDF-portable-Server${{ matrix.file_suffix }}.exe
mv ./build/libs/Stirling-PDF-${{ needs.read_versions.outputs.version }}.jar ./binaries/Stirling-PDF${{ matrix.file_suffix }}.jar mv ./stirling-pdf/build/libs/stirling-pdf-${{ needs.read_versions.outputs.version }}.jar ./binaries/Stirling-PDF${{ matrix.file_suffix }}.jar
- name: Upload build artifacts - name: Upload build artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2

View File

@ -15,6 +15,8 @@ plugins {
import com.github.jk1.license.render.* import com.github.jk1.license.render.*
import org.gradle.internal.os.OperatingSystem import org.gradle.internal.os.OperatingSystem
import org.panteleyev.jpackage.ImageType
import java.nio.file.Files import java.nio.file.Files
import java.time.Year import java.time.Year
@ -43,9 +45,19 @@ bootJar {
enabled = false enabled = false
} }
// Configure main class for the root project
springBoot {
mainClass = 'stirling.software.SPDF.SPDFApplication'
}
repositories {
mavenCentral()
maven { url = 'https://build.shibboleth.net/maven/releases' }
}
allprojects { allprojects {
group = 'stirling.software' group = 'stirling.software'
version = '1.0.0' version = '1.0.2'
configurations.configureEach { configurations.configureEach {
exclude group: 'commons-logging', module: 'commons-logging' exclude group: 'commons-logging', module: 'commons-logging'
@ -53,7 +65,6 @@ allprojects {
} }
} }
tasks.register('writeVersion') { tasks.register('writeVersion') {
def propsFile = file("$projectDir/common/src/main/resources/version.properties") def propsFile = file("$projectDir/common/src/main/resources/version.properties")
def propsDir = propsFile.parentFile def propsDir = propsFile.parentFile
@ -78,6 +89,10 @@ tasks.register('writeVersion') {
} }
} }
tasks.named('createExe') {
dependsOn(":stirling-pdf:bootJar")
}
subprojects { subprojects {
apply plugin: 'java' apply plugin: 'java'
apply plugin: 'java-library' apply plugin: 'java-library'
@ -90,9 +105,11 @@ subprojects {
sourceCompatibility = JavaVersion.VERSION_17 sourceCompatibility = JavaVersion.VERSION_17
} }
if (project.name != "stirling-pdf") {
bootJar { bootJar {
enabled = false enabled = false
} }
}
repositories { repositories {
mavenCentral() mavenCentral()
@ -194,6 +211,14 @@ openApi {
waitTimeInSeconds = 60 // Increase the wait time to 60 seconds waitTimeInSeconds = 60 // Increase the wait time to 60 seconds
} }
// Configure the forked spring boot run task to properly delegate to the stirling-pdf module
tasks.named('forkedSpringBootRun') {
dependsOn ':stirling-pdf:bootRun'
doFirst {
println "Delegating forkedSpringBootRun to :stirling-pdf:bootRun"
}
}
//0.11.5 to 2024.11.5 //0.11.5 to 2024.11.5
static def getMacVersion(String version) { static def getMacVersion(String version) {
def currentYear = Year.now().getValue() def currentYear = Year.now().getValue()
@ -202,6 +227,7 @@ static def getMacVersion(String version) {
} }
jpackage { jpackage {
dependsOn(":stirling-pdf:bootJar")
input = layout.projectDirectory.dir("stirling-pdf/build/libs") input = layout.projectDirectory.dir("stirling-pdf/build/libs")
destination = layout.projectDirectory.dir("build/jpackage") destination = layout.projectDirectory.dir("build/jpackage")
mainJar = "Stirling-PDF-${project.version}.jar" mainJar = "Stirling-PDF-${project.version}.jar"
@ -244,7 +270,7 @@ jpackage {
winUpgradeUuid = "2a43ed0c-b8c2-40cf-89e1-751129b87641" // Unique identifier for updates winUpgradeUuid = "2a43ed0c-b8c2-40cf-89e1-751129b87641" // Unique identifier for updates
winHelpUrl = "https://github.com/Stirling-Tools/Stirling-PDF" winHelpUrl = "https://github.com/Stirling-Tools/Stirling-PDF"
winUpdateUrl = "https://github.com/Stirling-Tools/Stirling-PDF/releases" winUpdateUrl = "https://github.com/Stirling-Tools/Stirling-PDF/releases"
type = "exe" type = ImageType.EXE
installDir = "C:/Program Files/Stirling-PDF" installDir = "C:/Program Files/Stirling-PDF"
} }
@ -252,7 +278,7 @@ jpackage {
mac { mac {
appVersion = getMacVersion(project.version.toString()) appVersion = getMacVersion(project.version.toString())
icon = layout.projectDirectory.file("stirling-pdf/src/main/resources/static/favicon.icns") icon = layout.projectDirectory.file("stirling-pdf/src/main/resources/static/favicon.icns")
type = "dmg" type = ImageType.DMG
macPackageIdentifier = "Stirling PDF" macPackageIdentifier = "Stirling PDF"
macPackageName = "Stirling PDF" macPackageName = "Stirling PDF"
macAppCategory = "public.app-category.productivity" macAppCategory = "public.app-category.productivity"
@ -274,7 +300,7 @@ jpackage {
linux { linux {
appVersion = project.version appVersion = project.version
icon = layout.projectDirectory.file("stirling-pdf/src/main/resources/static/favicon.png") icon = layout.projectDirectory.file("stirling-pdf/src/main/resources/static/favicon.png")
type = "deb" // Can also use "rpm" for Red Hat-based systems type = ImageType.DEB // Can also use "rpm" for Red Hat-based systems
// Debian package configuration // Debian package configuration
//linuxPackageName = "stirlingpdf" //linuxPackageName = "stirlingpdf"
@ -445,7 +471,7 @@ launch4j {
} else { } else {
headerType = "console" headerType = "console"
} }
jarTask = tasks.bootJar jarTask = project(":stirling-pdf").tasks.bootJar
errTitle="Encountered error, do you have Java 21?" errTitle="Encountered error, do you have Java 21?"
downloadUrl="https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.exe" downloadUrl="https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.exe"
@ -507,6 +533,14 @@ swaggerhubUpload {
} }
dependencies { dependencies {
implementation project(':stirling-pdf')
implementation project(':common')
if (System.getenv('DISABLE_ADDITIONAL_FEATURES') != 'true'
|| (project.hasProperty('DISABLE_ADDITIONAL_FEATURES')
&& System.getProperty('DISABLE_ADDITIONAL_FEATURES') != 'true')) {
implementation project(':proprietary')
}
testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.12.2' testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.12.2'
} }

View File

@ -21,6 +21,7 @@ import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.ResourceLoader;
import org.springframework.util.ClassUtils;
import org.thymeleaf.spring6.SpringTemplateEngine; import org.thymeleaf.spring6.SpringTemplateEngine;
import lombok.Getter; import lombok.Getter;
@ -148,23 +149,11 @@ public class AppConfig {
} }
@Bean(name = "activeSecurity") @Bean(name = "activeSecurity")
public boolean activeSecurity() {
String disableAdditionalFeatures = env.getProperty("DISABLE_ADDITIONAL_FEATURES");
if (disableAdditionalFeatures != null) {
// DISABLE_ADDITIONAL_FEATURES=true means security OFF, so return false
// DISABLE_ADDITIONAL_FEATURES=false means security ON, so return true
return !Boolean.parseBoolean(disableAdditionalFeatures);
}
return env.getProperty("DOCKER_ENABLE_SECURITY", Boolean.class, true);
}
@Bean(name = "missingActiveSecurity")
@ConditionalOnMissingClass(
"stirling.software.proprietary.security.configuration.SecurityConfiguration")
public boolean missingActiveSecurity() { public boolean missingActiveSecurity() {
return true; return ClassUtils.isPresent(
"stirling.software.proprietary.security.configuration.SecurityConfiguration",
this.getClass().getClassLoader()
);
} }
@Bean(name = "directoryFilter") @Bean(name = "directoryFilter")

View File

@ -17,7 +17,6 @@ services:
- ./stirling/latest/config:/configs:rw - ./stirling/latest/config:/configs:rw
- ./stirling/latest/logs:/logs:rw - ./stirling/latest/logs:/logs:rw
environment: environment:
DISABLE_ADDITIONAL_FEATURES: "true"
SECURITY_ENABLELOGIN: "false" SECURITY_ENABLELOGIN: "false"
SYSTEM_DEFAULTLOCALE: en-US SYSTEM_DEFAULTLOCALE: en-US
UI_APPNAME: Stirling-PDF-Ultra-lite UI_APPNAME: Stirling-PDF-Ultra-lite

View File

@ -18,7 +18,6 @@ services:
- ./stirling/latest/config:/configs:rw - ./stirling/latest/config:/configs:rw
- ./stirling/latest/logs:/logs:rw - ./stirling/latest/logs:/logs:rw
environment: environment:
DISABLE_ADDITIONAL_FEATURES: "true"
SECURITY_ENABLELOGIN: "false" SECURITY_ENABLELOGIN: "false"
LANGS: "en_GB,en_US,ar_AR,de_DE,fr_FR,es_ES,zh_CN,zh_TW,ca_CA,it_IT,sv_SE,pl_PL,ro_RO,ko_KR,pt_BR,ru_RU,el_GR,hi_IN,hu_HU,tr_TR,id_ID" LANGS: "en_GB,en_US,ar_AR,de_DE,fr_FR,es_ES,zh_CN,zh_TW,ca_CA,it_IT,sv_SE,pl_PL,ro_RO,ko_KR,pt_BR,ru_RU,el_GR,hi_IN,hu_HU,tr_TR,id_ID"
SYSTEM_DEFAULTLOCALE: en-US SYSTEM_DEFAULTLOCALE: en-US

View File

@ -1,6 +1,7 @@
echo "Running Stirling PDF with DISABLE_ADDITIONAL_FEATURES=${DISABLE_ADDITIONAL_FEATURES} and VERSION_TAG=${VERSION_TAG}" echo "Running Stirling PDF with DISABLE_ADDITIONAL_FEATURES=${DISABLE_ADDITIONAL_FEATURES} and VERSION_TAG=${VERSION_TAG}"
# Check for DISABLE_ADDITIONAL_FEATURES and download the appropriate JAR if required # Check for DISABLE_ADDITIONAL_FEATURES and download the appropriate JAR if required
if [ "$DISABLE_ADDITIONAL_FEATURES" = "false" ] && [ "$VERSION_TAG" != "alpha" ]; then if [ "$VERSION_TAG" != "alpha" ] && [ "$VERSION_TAG" != "ALPHA" ]; then
if [ "$DISABLE_ADDITIONAL_FEATURES" = "false" ] || [ "$DISABLE_ADDITIONAL_FEATURES" = "FALSE" ] || [ "$DOCKER_ENABLE_SECURITY" = "true" ] || [ "$DOCKER_ENABLE_SECURITY" = "TRUE" ]; then
if [ ! -f app-security.jar ]; then if [ ! -f app-security.jar ]; then
echo "Trying to download from: https://files.stirlingpdf.com/v$VERSION_TAG/Stirling-PDF-with-login.jar" echo "Trying to download from: https://files.stirlingpdf.com/v$VERSION_TAG/Stirling-PDF-with-login.jar"
curl -L -o app-security.jar https://files.stirlingpdf.com/v$VERSION_TAG/Stirling-PDF-with-login.jar curl -L -o app-security.jar https://files.stirlingpdf.com/v$VERSION_TAG/Stirling-PDF-with-login.jar
@ -18,4 +19,5 @@ if [ "$DISABLE_ADDITIONAL_FEATURES" = "false" ] && [ "$VERSION_TAG" != "alpha" ]
chmod 755 app.jar || true chmod 755 app.jar || true
fi fi
fi fi
fi
fi fi

View File

@ -146,5 +146,10 @@ bootJar {
} }
} }
// Configure main class for Spring Boot
springBoot {
mainClass = 'stirling.software.SPDF.SPDFApplication'
}
bootJar.dependsOn ':common:jar' bootJar.dependsOn ':common:jar'
bootJar.dependsOn ':proprietary:jar' bootJar.dependsOn ':proprietary:jar'

View File

@ -26,8 +26,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
registry.addResourceHandler("/**") registry.addResourceHandler("/**")
.addResourceLocations( .addResourceLocations(
"file:" + InstallationPathConfig.getStaticPath(), "classpath:/static/"); "file:" + InstallationPathConfig.getStaticPath(), "classpath:/static/");
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/");
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");
// .setCachePeriod(0); // Optional: disable caching // .setCachePeriod(0); // Optional: disable caching
} }
} }

View File

@ -283,7 +283,7 @@
{ {
"moduleName": "com.opencsv:opencsv", "moduleName": "com.opencsv:opencsv",
"moduleUrl": "http://opencsv.sf.net", "moduleUrl": "http://opencsv.sf.net",
"moduleVersion": "5.11.1", "moduleVersion": "5.11.2",
"moduleLicense": "Apache 2", "moduleLicense": "Apache 2",
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
}, },
@ -800,13 +800,6 @@
"moduleLicense": "GPL2 w/ CPE", "moduleLicense": "GPL2 w/ CPE",
"moduleLicenseUrl": "https://oss.oracle.com/licenses/CDDL+GPL-1.1" "moduleLicenseUrl": "https://oss.oracle.com/licenses/CDDL+GPL-1.1"
}, },
{
"moduleName": "junit:junit",
"moduleUrl": "http://junit.org",
"moduleVersion": "4.13.2",
"moduleLicense": "Eclipse Public License 1.0",
"moduleLicenseUrl": "http://www.eclipse.org/legal/epl-v10.html"
},
{ {
"moduleName": "me.friwi:gluegen-rt", "moduleName": "me.friwi:gluegen-rt",
"moduleUrl": "http://jogamp.org/gluegen/www/", "moduleUrl": "http://jogamp.org/gluegen/www/",
@ -1310,20 +1303,6 @@
"moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception",
"moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html"
}, },
{
"moduleName": "org.hamcrest:hamcrest",
"moduleUrl": "http://hamcrest.org/JavaHamcrest/",
"moduleVersion": "3.0",
"moduleLicense": "BSD-3-Clause",
"moduleLicenseUrl": "https://raw.githubusercontent.com/hamcrest/JavaHamcrest/master/LICENSE"
},
{
"moduleName": "org.hamcrest:hamcrest-core",
"moduleUrl": "http://hamcrest.org/JavaHamcrest/",
"moduleVersion": "3.0",
"moduleLicense": "BSD-3-Clause",
"moduleLicenseUrl": "https://raw.githubusercontent.com/hamcrest/JavaHamcrest/master/LICENSE"
},
{ {
"moduleName": "org.hdrhistogram:HdrHistogram", "moduleName": "org.hdrhistogram:HdrHistogram",
"moduleUrl": "http://hdrhistogram.github.io/HdrHistogram/", "moduleUrl": "http://hdrhistogram.github.io/HdrHistogram/",
@ -1379,34 +1358,6 @@
"moduleLicense": "The Apache License, Version 2.0", "moduleLicense": "The Apache License, Version 2.0",
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
}, },
{
"moduleName": "org.junit.platform:junit-platform-commons",
"moduleUrl": "https://junit.org/junit5/",
"moduleVersion": "1.12.2",
"moduleLicense": "Eclipse Public License v2.0",
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-v20.html"
},
{
"moduleName": "org.junit.platform:junit-platform-engine",
"moduleUrl": "https://junit.org/junit5/",
"moduleVersion": "1.12.2",
"moduleLicense": "Eclipse Public License v2.0",
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-v20.html"
},
{
"moduleName": "org.junit.vintage:junit-vintage-engine",
"moduleUrl": "https://junit.org/junit5/",
"moduleVersion": "5.12.2",
"moduleLicense": "Eclipse Public License v2.0",
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-v20.html"
},
{
"moduleName": "org.junit:junit-bom",
"moduleUrl": "https://junit.org/junit5/",
"moduleVersion": "5.12.2",
"moduleLicense": "Eclipse Public License v2.0",
"moduleLicenseUrl": "https://www.eclipse.org/legal/epl-v20.html"
},
{ {
"moduleName": "org.latencyutils:LatencyUtils", "moduleName": "org.latencyutils:LatencyUtils",
"moduleUrl": "http://latencyutils.github.io/LatencyUtils/", "moduleUrl": "http://latencyutils.github.io/LatencyUtils/",
@ -1516,13 +1467,6 @@
"moduleLicense": "The Apache Software License, Version 2.0", "moduleLicense": "The Apache Software License, Version 2.0",
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
}, },
{
"moduleName": "org.opentest4j:opentest4j",
"moduleUrl": "https://github.com/ota4j-team/opentest4j",
"moduleVersion": "1.3.0",
"moduleLicense": "The Apache License, Version 2.0",
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
},
{ {
"moduleName": "org.ow2.asm:asm", "moduleName": "org.ow2.asm:asm",
"moduleUrl": "http://asm.ow2.org", "moduleUrl": "http://asm.ow2.org",

View File

@ -2,6 +2,13 @@
if (window.isDownloadScriptInitialized) return; // Prevent re-execution if (window.isDownloadScriptInitialized) return; // Prevent re-execution
window.isDownloadScriptInitialized = true; window.isDownloadScriptInitialized = true;
// Global PDF processing count tracking for survey system
window.incrementPdfProcessingCount = function() {
let pdfProcessingCount = parseInt(localStorage.getItem('pdfProcessingCount') || '0');
pdfProcessingCount++;
localStorage.setItem('pdfProcessingCount', pdfProcessingCount.toString());
};
const { const {
pdfPasswordPrompt, pdfPasswordPrompt,
multipleInputsForSingleRequest, multipleInputsForSingleRequest,
@ -312,6 +319,11 @@
pdf_pages: pageCount, pdf_pages: pageCount,
}); });
} }
// Increment PDF processing count for survey tracking
if (success && typeof window.incrementPdfProcessingCount === 'function') {
window.incrementPdfProcessingCount();
}
} }
} }

View File

@ -271,6 +271,11 @@ class PdfContainer {
pdf_pages: pageCount, pdf_pages: pageCount,
}); });
} }
// Increment PDF processing count for survey tracking
if (success && typeof window.incrementPdfProcessingCount === 'function') {
window.incrementPdfProcessingCount();
}
} catch { } } catch { }
} }

View File

@ -66,19 +66,16 @@ document.addEventListener('DOMContentLoaded', function () {
const dontShowAgain = document.getElementById('dontShowAgain'); const dontShowAgain = document.getElementById('dontShowAgain');
const takeSurveyButton = document.getElementById('takeSurvey'); const takeSurveyButton = document.getElementById('takeSurvey');
const viewThresholds = [5, 10, 15, 22, 30, 50, 75, 100, 150, 200]; const pdfProcessingThresholds = [8, 15, 22, 35, 50, 75, 100, 150];
// Check if survey version changed and reset page views if it did // Check if survey version changed and reset PDF processing count if it did
const storedVersion = localStorage.getItem('surveyVersion'); const storedVersion = localStorage.getItem('surveyVersion');
if (storedVersion && storedVersion !== surveyVersion) { if (storedVersion && storedVersion !== surveyVersion) {
localStorage.setItem('pageViews', '0'); localStorage.setItem('pdfProcessingCount', '0');
localStorage.setItem('surveyVersion', surveyVersion); localStorage.setItem('surveyVersion', surveyVersion);
} }
let pageViews = parseInt(localStorage.getItem('pageViews') || '0'); let pdfProcessingCount = parseInt(localStorage.getItem('pdfProcessingCount') || '0');
pageViews++;
localStorage.setItem('pageViews', pageViews.toString());
function shouldShowSurvey() { function shouldShowSurvey() {
if(!window.showSurvey) { if(!window.showSurvey) {
@ -90,11 +87,11 @@ document.addEventListener('DOMContentLoaded', function () {
} }
// If survey version changed and we hit a threshold, show the survey // If survey version changed and we hit a threshold, show the survey
if (localStorage.getItem('surveyVersion') !== surveyVersion && viewThresholds.includes(pageViews)) { if (localStorage.getItem('surveyVersion') !== surveyVersion && pdfProcessingThresholds.includes(pdfProcessingCount)) {
return true; return true;
} }
return viewThresholds.includes(pageViews); return pdfProcessingThresholds.includes(pdfProcessingCount);
} }
if (shouldShowSurvey()) { if (shouldShowSurvey()) {