Skip to content

Commit

Permalink
fix(doc): improves package type exports (#876)
Browse files Browse the repository at this point in the history
## Description

- swaps the order of the `types` and `import` exports in package.json
(which is less incorrect)
- renames all .d.ts files to .d.mts (as package.json doesn't tell it's
ESM, we have to do that with the module names)
- adds a rule to .dependency-cruiser.json to ensure all dependencies in
.d.mts files are _type only_
- adds type definitions for the sample reporter plugins (even though I'm
pretty sure they're never used as they weren't bundled
- updates here, there and everywhere to reflect usage of .d.mts (/.mjs)
instead of .d.ts (.js/ no extension)

This _does not_ integrate the _are the types wrong_ cli in the ci - _it
does not work_. The online one does, though so that's what we've used
for validation.

## Motivation and Context

- For API consumers should make dependency-cruiser easier to use.
- A love for green tickboxes

## How Has This Been Tested?

- [x] green ci
- [x] checked against [are the types
wrong](https://github.com/arethetypeswrong/arethetypeswrong.github.io)

#### With this PR
<img width="2840" alt="screen shot from Are the types wrong that
evaluated the packed version of dependency-cruiser in the state of this
RP"
src="https://github.com/sverweij/dependency-cruiser/assets/4822597/d65520af-ed4f-4a67-8333-2afa0fec6bed">

#### before

<img width="2840" alt="screen shot from Are the types wrong that
evaluated dependency-cruiser@latest"
src="https://github.com/sverweij/dependency-cruiser/assets/4822597/5ae58d2d-0708-4ef6-8a25-2265f7207c54">
  • Loading branch information
sverweij committed Nov 24, 2023
1 parent 8aa2a3d commit 6d808db
Show file tree
Hide file tree
Showing 61 changed files with 1,551 additions and 571 deletions.
17 changes: 14 additions & 3 deletions .dependency-cruiser.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"orphan": true,
"pathNot": [
"(^|/)\\.[^/]+\\.(js|cjs|mjs|ts|json)$",
"\\.d\\.ts$",
"[.]d[.]m?ts$",
"(^|/)tsconfig\\.json$",
"(^|/)(babel|webpack)\\.config\\.(js|cjs|mjs|ts|json)$",
"-reporter-plugin\\.mjs$",
Expand Down Expand Up @@ -243,6 +243,17 @@
"severity": "info",
"from": { "path": "^src" },
"module": { "path": "^src/utl", "numberOfDependentsLessThan": 3 }
},
{
"name": "only-type-only-in-types",
"comment": "This module in the types/ folder depends on something that is not type-only. That's not allowed.",
"severity": "error",
"from": {
"path": "[.]d[.]m?ts$"
},
"to": {
"dependencyTypesNot": ["type-only"]
}
}
],
"options": {
Expand Down Expand Up @@ -320,9 +331,9 @@
// ".cts",
// ".mts",
// ".tsx",
".d.ts"
".d.ts",
// ".d.cts",
// ".d.mts",
".d.mts"
// ".coffee",
// ".litcoffee",
// "cofee.md",
Expand Down
50 changes: 30 additions & 20 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,39 +51,49 @@
},
"exports": {
".": {
"import": "./src/main/index.mjs",
"types": "./types/dependency-cruiser.d.ts"
"types": "./types/dependency-cruiser.d.mts",
"import": "./src/main/index.mjs"
},
"./config-utl/extract-babel-config": {
"import": "./src/config-utl/extract-babel-config.mjs",
"types": "./types/extract-babel-config.d.ts"
"types": "./types/extract-babel-config.d.mts",
"import": "./src/config-utl/extract-babel-config.mjs"
},
"./config-utl/extract-depcruise-config": {
"import": "./src/config-utl/extract-depcruise-config/index.mjs",
"types": "./types/extract-depcruise-config.d.ts"
"types": "./types/extract-depcruise-config.d.mts",
"import": "./src/config-utl/extract-depcruise-config/index.mjs"
},
"./config-utl/extract-ts-config": {
"import": "./src/config-utl/extract-ts-config.mjs",
"types": "./types/extract-ts-config.d.ts"
"types": "./types/extract-ts-config.d.mts",
"import": "./src/config-utl/extract-ts-config.mjs"
},
"./config-utl/extract-webpack-resolve-config": {
"import": "./src/config-utl/extract-webpack-resolve-config.mjs",
"types": "./types/extract-webpack-resolve-config.d.ts"
"types": "./types/extract-webpack-resolve-config.d.mts",
"import": "./src/config-utl/extract-webpack-resolve-config.mjs"
},
"./sample-reporter-plugin": "./configs/plugins/stats-reporter-plugin.mjs",
"./sample-3d-reporter-plugin": "./configs/plugins/3d-reporter-plugin.mjs",
"./mermaid-reporter-plugin": "./src/report/mermaid.mjs"
"./sample-reporter-plugin": {
"types": "./types/stats-reporter-plugin.d.mts",
"import": "./configs/plugins/stats-reporter-plugin.mjs"
},
"./sample-3d-reporter-plugin": {
"types": "./types/3d-reporter-plugin.d.mts",
"import": "./configs/plugins/3d-reporter-plugin.mjs"
},
"./mermaid-reporter-plugin": {
"types": "./types/mermaid-reporter-plugin.d.mts",
"import": "./src/report/mermaid.mjs"
}
},
"types": "types/dependency-cruiser.d.ts",
"types": "types/dependency-cruiser.d.mts",
"files": [
"bin",
"configs/**/*.js",
"configs/plugins/",
"src",
"!src/**/*.json",
"!src/**/*.hbs",
"!src/**/*.md",
"!**/*.DS_Store",
"types/*.d.ts",
"types/*.d.mts",
"LICENSE",
"package.json",
"README.md"
Expand All @@ -103,7 +113,7 @@
"depcruise:graph:doc:fmt-archi": "./bin/depcruise-fmt.mjs -T archi -f - node_modules/.cache/tmp_graph_deps.json | dot -T svg -Gordering=in -Grankdir=TD | tee doc/real-world-samples/dependency-cruiser-archi-graph.svg | node bin/wrap-stream-in-html.mjs > docs/dependency-cruiser-archi-graph.html",
"depcruise:graph:doc:fmt-dir": "./bin/depcruise-fmt.mjs -T ddot -f - node_modules/.cache/tmp_graph_deps.json | dot -T svg -Grankdir=TD | tee doc/real-world-samples/dependency-cruiser-dir-graph.svg | node bin/wrap-stream-in-html.mjs > docs/dependency-cruiser-dir-graph.html",
"depcruise:graph:doc:fmt-schema": "cd tools/schema && node ../../bin/dependency-cruise.mjs . --output-type dot | dot -T svg | tee ../overview.svg | node ../../bin/wrap-stream-in-html.mjs > ../../docs/schema-overview.html && cd -",
"depcruise:graph:doc:fmt-types": "cd types && node ../bin/dependency-cruise.mjs . --output-type dot | dot -T svg > overview.svg && cd -",
"depcruise:graph:doc:fmt-types": "cd types && node ../bin/dependency-cruise.mjs . --output-type dot | dot -T svg | tee overview.svg | ../bin/wrap-stream-in-html.mjs > overview.html && cd -",
"depcruise:graph:doc:samples": "sh tools/generate-samples.sh",
"depcruise:graph:mermaid": "node ./bin/dependency-cruise.mjs bin src --include-only ^src/ --collapse 2 --output-type mermaid",
"depcruise:graph:mermaid:diff": "node ./bin/dependency-cruise.mjs bin src test types tools --config configs/.dependency-cruiser-unlimited.mjs --output-type mermaid --reaches \"$(watskeburt $SHA)\"",
Expand All @@ -113,17 +123,17 @@
"depcruise:report:view": "node ./bin/dependency-cruise.mjs src bin test configs types --output-type err-html --config configs/.dependency-cruiser-show-metrics-config.mjs --output-to - | browser",
"depcruise:focus": "node ./bin/dependency-cruise.mjs src bin test configs types tools --progress --no-cache --output-type text --focus",
"depcruise:reaches": "node ./bin/dependency-cruise.mjs src bin test configs types tools --progress --no-cache --config configs/.dependency-cruiser-unlimited.mjs --output-type text --reaches",
"format": "prettier --log-level warn --write \"src/**/*.js\" \"configs/**/*.js\" \"tools/**/*.mjs\" \"bin/*\" \"types/*.d.ts\" \"test/**/*.spec.{cjs,js}\" \"test/**/*.{spec,utl}.mjs\"",
"format:check": "prettier --log-level warn --check \"src/**/*.js\" \"configs/**/*.js\" \"tools/**/*.mjs\" \"bin/*\" \"types/*.d.ts\" \"test/**/*.spec.{cjs,js}\" \"test/**/*.{spec,utl}.mjs\"",
"format": "prettier --log-level warn --write \"src/**/*.js\" \"configs/**/*.js\" \"tools/**/*.mjs\" \"bin/*\" \"types/*.d.mts\" \"test/**/*.spec.{cjs,js}\" \"test/**/*.{spec,utl}.mjs\"",
"format:check": "prettier --log-level warn --check \"src/**/*.js\" \"configs/**/*.js\" \"tools/**/*.mjs\" \"bin/*\" \"types/*.d.mts\" \"test/**/*.spec.{cjs,js}\" \"test/**/*.{spec,utl}.mjs\"",
"lint": "npm-run-all --parallel --aggregate-output lint:eslint format:check lint:types",
"lint:eslint": "eslint bin/dependency-cruise.mjs bin src test configs tools/**/*.mjs --cache --cache-location node_modules/.cache/eslint/",
"lint:eslint:fix": "eslint --fix bin src test configs tools/**/*.mjs --cache --cache-location node_modules/.cache/eslint/",
"lint:eslint:clear-caches": "rm -rf node_modules/.cache/eslint/",
"lint:fix": "npm-run-all lint:eslint:fix format lint:types:fix",
"lint:types": "npm-run-all lint:types:tsc lint:types:lint",
"lint:types:tsc": "tsc --project types/tsconfig.json",
"lint:types:lint": "eslint --no-ignore --config types/.eslintrc.json types/*.d.ts",
"lint:types:fix": "eslint --no-ignore --config types/.eslintrc.json --fix types/*.d.ts",
"lint:types:lint": "eslint --no-ignore --config types/.eslintrc.json types/*.d.mts",
"lint:types:fix": "eslint --no-ignore --config types/.eslintrc.json --fix types/*.d.mts",
"prepare": "husky install",
"scm:push": "run-p --aggregate-output scm:push:*",
"scm:push:bitbucket-mirror": "run-p --aggregate-output scm:push:bitbucket-mirror:*",
Expand Down
2 changes: 1 addition & 1 deletion src/cache/metadata-strategy.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { bus } from "#utl/bus.mjs";
export default class MetaDataStrategy {
/**
* @param {string} _pDirectory
* @param {import("../../types/cruise-result.js").ICruiseResult} _pCachedCruiseResult
* @param {import("../../types/cruise-result.mjs").ICruiseResult} _pCachedCruiseResult
* @param {Object} pOptions
* @param {Set<string>} pOptions.extensions
* @param {Set<import("watskeburt").changeTypeType>=} pOptions.interestingChangeTypes
Expand Down
2 changes: 1 addition & 1 deletion src/config-utl/extract-depcruise-config/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ async function processExtends(pReturnValue, pAlreadyVisited, pBaseDirectory) {
* @param {string} pConfigFileName
* @param {Set?} pAlreadyVisited
* @param {string?} pBaseDirectory
* @return {import('../../../types/options.js').ICruiseOptions} dependency-cruiser options
* @return {import('../../../types/options.mjs').ICruiseOptions} dependency-cruiser options
* @throws {Error} when the config is not valid (/ does not exist/ isn't readable)
*/
export default async function extractDepcruiseConfig(
Expand Down
6 changes: 3 additions & 3 deletions src/enrich/add-validations.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ function addDependencyViolations(pModule, pDependency, pRuleSet, pValidate) {
* - when there's a transgression: adds it
* - when everything is hunky-dory: adds the dependency is valid
*
* @param {Partial<import("../../types/cruise-result.js").IModule>[]} pModules array of modules
* @param {import("../../types/rule-set.js").IFlattenedRuleSet} pRuleSet normalized & validated rule set
* @param {Partial<import("../../types/cruise-result.mjs").IModule>[]} pModules array of modules
* @param {import("../../types/rule-set.mjs").IFlattenedRuleSet} pRuleSet normalized & validated rule set
* @param {boolean} pValidate - whether or not to validate (typically you want to pass 'true' here)
* @return {import("../../types/cruise-result.js").IModule[]} the same array of modules, with for each
* @return {import("../../types/cruise-result.mjs").IModule[]} the same array of modules, with for each
* of them added whether or not it is
* valid and if not which rules were violated
*/
Expand Down
8 changes: 4 additions & 4 deletions src/enrich/soften-known-violations.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ function softenDependencyViolations(
}
/**
*
* @param {import("../../types/cruise-result.js").IModule} pModule
* @param {import("../../types/cruise-result.mjs").IModule} pModule
* @param {import("../../types/baseline-violations.js").IBaselineViolations} pKnownViolations
* @param {import("../../types/shared-types.js").SeverityType} pSoftenedSeverity
* @returns {import("../../types/cruise-result.js").IModule}
* @returns {import("../../types/cruise-result.mjs").IModule}
*/
function softenKnownViolation(pModule, pKnownViolations, pSoftenedSeverity) {
let lReturnValue = pModule;
Expand Down Expand Up @@ -106,10 +106,10 @@ function softenKnownViolation(pModule, pKnownViolations, pSoftenedSeverity) {

/**
*
* @param {import("../../types/cruise-result.js").IModule[]} pModules
* @param {import("../../types/cruise-result.mjs").IModule[]} pModules
* @param {import("../../types/baseline-violations.js").IBaselineViolations} pKnownViolations
* @param {import("../../types/shared-types.js").SeverityType} pSoftenedSeverity
* @returns {import("../../types/cruise-result.js").IModule[]}
* @returns {import("../../types/cruise-result.mjs").IModule[]}
*/
export default function softenKnownViolations(
pModules,
Expand Down
6 changes: 3 additions & 3 deletions src/enrich/summarize/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ import compare from "#graph-utl/compare.mjs";

/**
*
* @param {import("../../../types/cruise-result.js").IModule[]} pModules -
* @param {import("../../../types/cruise-result.mjs").IModule[]} pModules -
* cruised modules that have been enriched with mandatory attributes &
* have been validated against rules as passed in the options
* @param {import("../../../types/options.js").IStrictCruiseOptions} pOptions -
* @param {import("../../../types/options.mjs").IStrictCruiseOptions} pOptions -
* @param {string[]} pFileDirectoryArray -
* the files/ directories originally passed to be cruised
* @param {import("../../../types/dependency-cruiser.js").IFolder[]} pFolders -
* the pModules collapsed to folders, with their own metrics & deps
*
* @returns {import("../../../types/cruise-result.js").ISummary} -
* @returns {import("../../../types/cruise-result.mjs").ISummary} -
* a summary of the found modules, dependencies and any violations
*/
export default function summarize(
Expand Down
4 changes: 2 additions & 2 deletions src/extract/gather-initial-sources.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import pathToPosix from "#utl/path-to-posix.mjs";

/**
*
* @param {import('../../types/options.js').IStrictCruiseOptions} pOptions
* @param {import('../../types/options.mjs').IStrictCruiseOptions} pOptions
* @returns {string[]}
*/
function getScannableExtensions(pOptions) {
Expand Down Expand Up @@ -39,7 +39,7 @@ function shouldNotBeExcluded(pFullPathToFile, pOptions) {
/**
*
* @param {string} pDirectoryName
* @param {import('../../types/options.js').IStrictCruiseOptions} pOptions options that
* @param {import('../../types/options.mjs').IStrictCruiseOptions} pOptions options that
* @returns {string[]}
*/
function gatherScannableFilesFromDirectory(pDirectoryName, pOptions) {
Expand Down
4 changes: 2 additions & 2 deletions src/extract/get-dependencies.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,10 @@ function extractWithTsc(pCruiseOptions, pFileName, pTranspileOptions) {
* @param {import('../../types/dependency-cruiser.js').IStrictCruiseOptions} pCruiseOptions
* @param {string} pFileName
* @param {any} pTranspileOptions
* @returns {import('../../types/cruise-result.js').IDependency[]}
* @returns {import('../../types/cruise-result.mjs').IDependency[]}
*/
function extractDependencies(pCruiseOptions, pFileName, pTranspileOptions) {
/** @type import('../../types/cruise-result.js').IDependency[] */
/** @type import('../../types/cruise-result.mjs').IDependency[] */
let lDependencies = [];

if (!pCruiseOptions.extraExtensionsToScan.includes(extname(pFileName))) {
Expand Down
6 changes: 3 additions & 3 deletions src/extract/resolve/determine-dependency-types.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ function determineNodeModuleDependencyTypes(

/**
*
* @param {import("../../../types/cruise-result.js").IDependency} pDependency
* @param {import("../../../types/cruise-result.mjs").IDependency} pDependency
* @param {string} pModuleName
* @param {any} pPackageDeps
* @param {string} pFileDirectory
Expand Down Expand Up @@ -165,11 +165,11 @@ function determineExternalModuleDependencyTypes(
/* eslint max-params:0, complexity:0 */
/**
*
* @param {import("../../../types/cruise-result.js").IDependency} pDependency the dependency object with all information found hitherto
* @param {import("../../../types/cruise-result.mjs").IDependency} pDependency the dependency object with all information found hitherto
* @param {string} pModuleName the module name as found in the source
* @param {any} pManifest a package.json, in object format
* @param {string} pFileDirectory the directory relative to which to resolve (only used for npm deps here)
* @param {import("../../../types/resolve-options.js").IResolveOptions} pResolveOptions an enhanced resolve 'resolve' key
* @param {import("../../../types/resolve-options.mjs").IResolveOptions} pResolveOptions an enhanced resolve 'resolve' key
* @param {string} pBaseDirectory the base directory dependency cruise is run on
*
* @return {import("../../../types/shared-types.js").DependencyType[]} an array of dependency types for the dependency
Expand Down
6 changes: 3 additions & 3 deletions src/extract/resolve/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -154,13 +154,13 @@ function resolveWithRetry(
/**
* resolves the module name of the pDependency to a file on disk.
*
* @param {Partial <import("../../../types/cruise-result.js").IDependency>} pDependency
* @param {Partial <import("../../../types/cruise-result.mjs").IDependency>} pDependency
* @param {string} pBaseDirectory the directory to consider as base (or 'root')
* for resolved files.
* @param {string} pFileDirectory the directory of the file the dependency was
* detected in
* @param {import("../../../types/resolve-options.js").IResolveOptions} pResolveOptions
* @return {Partial <import("../../../types/cruise-result.js").IDependency>}
* @param {import("../../../types/resolve-options.mjs").IResolveOptions} pResolveOptions
* @return {Partial <import("../../../types/cruise-result.mjs").IDependency>}
*
*/
// eslint-disable-next-line max-lines-per-function
Expand Down
2 changes: 1 addition & 1 deletion src/extract/transpile/meta.d.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type {
IAvailableExtension,
IAvailableTranspiler,
} from "../../../types/dependency-cruiser.d.ts";
} from "../../../types/dependency-cruiser.d.mts";

export interface ITranspilerWrapper {
isAvailable: () => boolean;
Expand Down
4 changes: 2 additions & 2 deletions src/graph-utl/filter-bank.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ function exclude(pModules, pExcludeFilter) {
}
/**
*
* @param {import("../../types/cruise-result.js").IModule[]} pModules
* @param {import("../../types/cruise-result.mjs").IModule[]} pModules
* @param {import("../../types/strict-filter-types.js").IStrictReachesType} pReachesFilter
* @returns {import("../../types/cruise-result.js").IModule[]}
* @returns {import("../../types/cruise-result.mjs").IModule[]}
*/
function filterReaches(pModules, pReachesFilter) {
const lModuleNamesToReach = pModules
Expand Down
2 changes: 1 addition & 1 deletion src/main/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// workaround to nodenext shenanigans with the TypeScript compiler
// see https://github.com/sverweij/dependency-cruiser/issues/754
// eslint-disable-next-line node/no-unpublished-import
export * from "../../types/dependency-cruiser";
export type * from "../../types/dependency-cruiser.mjs";
2 changes: 1 addition & 1 deletion src/main/options/normalize.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ function normalizeCacheOptions(pCacheOptions) {

/**
*
* @param {import('../../../types/options.js').ICruiseOptions} pOptions
* @param {import('../../../types/options.mjs').ICruiseOptions} pOptions
* @param {string[]} pFileAndDirectoryArray
* @returns {import('../../../types/strict-options.js').IStrictCruiseOptions}
*/
Expand Down
2 changes: 1 addition & 1 deletion src/main/rule-set/normalize.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ function normalizeScope(pScope) {

/**
*
* @param {import("../../../types/rule-set.js").IAnyRuleType} pRule
* @param {import("../../../types/rule-set.mjs").IAnyRuleType} pRule
* @returns {import("../../../types/strict-rule-set.js").IStrictAnyRuleType}
*/
function normalizeRule(pRule) {
Expand Down
14 changes: 7 additions & 7 deletions src/report/anon/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ function anonymizeReaches(pReachesArray, pWordList) {

/**
*
* @param {import("../../../types/cruise-result.js").IModule[]} pModules
* @param {import("../../../types/cruise-result.mjs").IModule[]} pModules
* @param {string[]} pWordList
* @returns {import("../../../types/cruise-result.js").IModule[]}
* @returns {import("../../../types/cruise-result.mjs").IModule[]}
*/
function anonymizeModules(pModules, pWordList) {
return pModules.map((pModule) => {
Expand All @@ -57,9 +57,9 @@ function anonymizeModules(pModules, pWordList) {
}
/**
*
* @param {import("../../../types/cruise-result.js").IFolder[]} pFolders
* @param {import("../../../types/cruise-result.mjs").IFolder[]} pFolders
* @param {string[]} pWordList
* @returns {import("../../../types/cruise-result.js").IFolder[]}
* @returns {import("../../../types/cruise-result.mjs").IFolder[]}
*/
function anonymizeFolders(pFolders, pWordList) {
return pFolders.map((pFolder) => {
Expand Down Expand Up @@ -108,9 +108,9 @@ function anonymizeViolations(pViolations, pWordList) {
}
/**
*
* @param {import("../../../types/cruise-result.js").ICruiseResult} pResults
* @param {import("../../../types/cruise-result.mjs").ICruiseResult} pResults
* @param {string[]} pWordList
* @returns {import("../../../types/cruise-result.js").ICruiseResult}
* @returns {import("../../../types/cruise-result.mjs").ICruiseResult}
*/
function anonymize(pResults, pWordList) {
const lResults = structuredClone(pResults);
Expand Down Expand Up @@ -148,7 +148,7 @@ function sanitizeWordList(pWordList) {
* (note: the algorith _removes_ elements from pWordList to prevent duplicates,
* so if the word list is precious to you - pass a clone)
*
* @param {import("../../../types/cruise-result.js").ICruiseResult} pResults - the output of a dependency-cruise adhering to ../schema/cruise-result.schema.json
* @param {import("../../../types/cruise-result.mjs").ICruiseResult} pResults - the output of a dependency-cruise adhering to ../schema/cruise-result.schema.json
* @param {{wordlist?: String[]}} pAnonymousReporterOptions of words to use as replacement strings. If
* not passed the reporter uses the string passed
* in the options (reporterOptions.anon.wordlist)
Expand Down

0 comments on commit 6d808db

Please sign in to comment.