@@ -8,7 +8,7 @@ please see the README file.
88
99To run any of the steps below, first verify that you have the following available;
1010[ sdkman] ( https://sdkman.io/ ) is recommended for installing and maintaining versions of Java:
11- * Java 8 .x
11+ * Java 17 .x
1212
1313You will also need to clone this repository locally and open a CLI in the root directory of the cloned project.
1414
@@ -21,7 +21,6 @@ instance available for testing.
2121
2222If you are able to use Docker, run the following:
2323
24- cd test-app
2524 docker-compose up -d --build
2625
2726This will create a container with the MarkLogic service. The MarkLogic service will take a minute or two to initialize.
@@ -31,7 +30,9 @@ username and password are in the docker-compose.yaml file in the /test-app direc
3130Once the container is finished initializing, you need to deploy the test application to the MarkLogic service.
3231While still in the test-app directory run the following gradle command.
3332
33+ cd test-app
3434 ./gradlew -i mlDeploy
35+ ./gradlew -i -Penv=e2e mlLoadData mlLoadModules
3536
3637Once the deploy has completed successfully, use "cd .." to return to the root directory of the project.
3738
@@ -53,3 +54,110 @@ contained in either the "it" function or the "describe" function, respectively.
5354or
5455
5556 mocha test-basic -timeout 0 -g 'test bindParam with qualifier'
57+
58+ There are also tests in the ` test-complete ` folder. The setup for these is more complicated and can
59+ be found in the ` Jenkinsfile ` file in this repository in the ` runE2ETests ` function.
60+
61+ ## Generating documentation
62+
63+ After installing the project dependencies, you can build the reference documentation locally from the root
64+ directory of the marklogic package:
65+
66+ npm run doc
67+
68+ The documentation is generated in the ` ./doc ` gitignored directory. The documentation can also be
69+ accessed online at < https://docs.marklogic.com/jsdoc/index.html > .
70+
71+ ## Explanation of overrides in package.json
72+
73+ Each override is being documented here so we have some ability in the future to remove an override as needed.
74+ These explanations have been copied from a Copilot analysis.
75+
76+ braces: "3.0.3"
77+ - Purpose: Fixes ReDoS vulnerability in brace expansion
78+ - Affects: mocha, gulp, and test infrastructure
79+ - Why needed: Older braces versions vulnerable to regex attacks
80+ - CVE/Issue: CVE-2024 -4068 - ReDoS vulnerability
81+
82+ brace-expansion: "2.0.2"
83+ - Purpose: Fixes ReDoS in brace expansion patterns
84+ - Affects: minimatch → brace-expansion
85+ - Why needed: Prevents regex denial of service attacks
86+ - CVE/Issue: Related to minimatch vulnerabilities
87+
88+ glob: "10.3.11"
89+ - Purpose: Fixes ReDoS and security issues in file globbing
90+ - Affects: mocha, gulp-mocha build tooling
91+ - Why needed: Older glob versions have pattern matching vulnerabilities
92+ - CVE/Issue: Multiple vulnerabilities in older glob versions
93+
94+ glob-parent: "6.0.2"
95+ - Purpose: Fixes ReDoS in path parsing
96+ - Affects: Transitive dependency through glob
97+ - Why needed: Older versions vulnerable to regex attacks
98+ - CVE/Issue: CVE-2020 -28469 - ReDoS vulnerability
99+
100+ minimatch: "5.1.0"
101+ - Purpose: Fixes ReDoS (Regular Expression Denial of Service) vulnerability
102+ - Affects: mocha, gulp-mocha, and other build tools
103+ - Why needed: Older minimatch versions have catastrophic backtracking vulnerability
104+ - CVE/Issue: CVE-2022 -3517 - ReDoS vulnerability
105+
106+ semver: "7.5.3"
107+ - Purpose: Fixes ReDoS in version parsing
108+ - Affects: Multiple packages across dependency tree
109+ - Why needed: Older semver versions have regex vulnerabilities
110+ - CVE/Issue: CVE-2022 -25883 - ReDoS vulnerability
111+
112+ tar-fs: "2.1.4"
113+ - Purpose: Fixes directory traversal vulnerability
114+ - Affects: kerberos → prebuild-install → tar-fs
115+ - Why needed: Older tar-fs allows extracting files outside intended directory
116+ - CVE/Issue: CVE-2024 -28861 - Path traversal
117+
118+ The following are related to this npm supply chain attack - https://orca.security/resources/blog/qix-npm-attack/ .
119+
120+ ansi-styles: "4.3.0"
121+ - Purpose: Protect against supply chain attack variants
122+ - Affects: chalk → ansi-styles, eslint toolchain
123+
124+ ansi-regex: "5.0.1"
125+ - Purpose: Protect against supply chain attack variants
126+ - Affects: strip-ansi → ansi-regex
127+
128+ chalk: "4.1.2"
129+ - Purpose: Avoid compromised chalk 5.6.1, maintain ESLint compatibility
130+ - Affects: eslint, mocha, gulp-mocha
131+ - Why needed: Chalk 5.6.1 was compromised in supply chain attack. ESLint 9.x requires chalk 4.x (incompatible with chalk 5.x API)
132+
133+ color-convert: "3.1.0"
134+ - Purpose: Protect against supply chain attack variants
135+ - Affects: ansi-styles → color-convert
136+
137+ color-name: "2.0.0"
138+ - Purpose: Protect against supply chain attack variants
139+ - Affects: color-convert → color-name
140+
141+ cross-spawn: "7.0.6"
142+ - Purpose: Protect against supply chain attack variants
143+ - Affects: eslint → cross-spawn
144+
145+ debug: "4.3.6"
146+ - Purpose: Protect against supply chain attack variants
147+ - Affects: eslint, mocha, multiple packages
148+
149+ supports-color: "7.2.0"
150+ - Purpose: Protect against supply chain attack variants
151+ - Affects: mocha, chalk
152+
153+ strip-ansi: "6.0.0"
154+ - Purpose: Protect against supply chain attack variants
155+ - Affects: mocha, cliui in test infrastructure
156+
157+ wrap-ansi: "6.2.0"
158+ - Purpose: Protect against supply chain attack variants
159+ - Affects: mocha → cliui → wrap-ansi
160+
161+ Also, we are using @fastify/busboy because it has a forked copy of dicer that apparently does not
162+ have the same high security vulnerability that the 0.3.1 release of dicer has.
163+
0 commit comments