[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","title":"StrykerOptions","description":"JSON schema for the Stryker Mutator configuration file","type":"object","definitions":{"commandRunnerOptions":{"title":"CommandRunnerOptions","type":"object","properties":{"command":{"description":"The command to test each mutant. For example \"npm run mocha\". Defaults to \"npm test\".","type":"string","default":"npm test"}}},"logLevel":{"title":"LogLevel","type":"string","enum":["off","fatal","error","warn","info","debug","trace"],"tsEnumNames":["Off","Fatal","Error","Warning","Information","Debug","Trace"]},"coverageAnalysis":{"title":"CoverageAnalysis","type":"string","enum":["off","all","perTest"]},"reportType":{"title":"ReportType","type":"string","enum":["full","mutationScore"],"tsEnumNames":["Full","MutationScore"]},"clearTextReporterOptions":{"title":"ClearTextReporterOptions","type":"object","properties":{"allowColor":{"description":"Indicates whether or not to use color coding in output.","type":"boolean","default":true},"allowEmojis":{"description":"Enable emojis in your clear text report (experimental).","type":"boolean","default":false},"logTests":{"description":"Indicates whether or not to log which tests were executed for a given mutant.","type":"boolean","default":true},"maxTestsToLog":{"description":"Indicates the maximum amount of test to log when `logTests` is enabled","type":"integer","minimum":0,"default":3},"reportTests":{"description":"Indicates whether or not to log all tests.","type":"boolean","default":true},"reportMutants":{"description":"Indicates whether or not to log all mutants.","type":"boolean","default":true},"reportScoreTable":{"description":"Indicates whether or not to log score table.","type":"boolean","default":true},"skipFull":{"description":"Indicates whether rows with 100% mutation score are hidden in the score table.","type":"boolean","default":false}}},"dashboardOptions":{"title":"DashboardOptions","additionalProperties":false,"type":"object","properties":{"project":{"description":"Indicates which project to use if the \"dashboard\" reporter is enabled.","type":"string"},"version":{"description":"Indicates which version to use if the \"dashboard\" reporter is enabled.","type":"string"},"module":{"description":"Indicates which module to use if the \"dashboard\" reporter is enabled.","type":"string"},"baseUrl":{"description":"Indicates the base url of the stryker dashboard.","type":"string","default":"https://dashboard.stryker-mutator.io/api/reports"},"reportType":{"description":"Indicates wether to send a full report (inc. source code and mutant results) or only the mutation score.","$ref":"#/definitions/reportType","default":"full"}}},"eventRecorderOptions":{"title":"EventRecorderOptions","additionalProperties":false,"type":"object","properties":{"baseDir":{"description":"The base dir to write the events to","type":"string","default":"reports/mutation/events"}}},"htmlReporterOptions":{"title":"HtmlReporterOptions","additionalProperties":false,"type":"object","properties":{"fileName":{"description":"The `fileName` of the html report.","type":"string","default":"reports/mutation/mutation.html"}}},"jsonReporterOptions":{"title":"JsonReporterOptions","additionalProperties":false,"type":"object","properties":{"fileName":{"description":"The relative filename for the json report.","type":"string","default":"reports/mutation/mutation.json"}}},"mutationScoreThresholds":{"title":"MutationScoreThresholds","additionalProperties":false,"type":"object","properties":{"high":{"$ref":"#/definitions/percentage","default":80},"low":{"$ref":"#/definitions/percentage","default":60},"break":{"oneOf":[{"type":"null"},{"$ref":"#/definitions/percentage"}],"default":null}}},"percentage":{"type":"number","minimum":0,"maximum":100},"mutatorDescriptor":{"type":"object","additionalProperties":false,"properties":{"plugins":{"description":"Override the default babel plugins Stryker uses to parse your JavaScript files. The default list of plugins is extensive and normally doesn't need overriding. Stryker also loads your babel plugins by default (if you have them). If Stryker's default babel plugins conflicts with your plugins, try to override this list with an empty array.","anyOf":[{"type":"array","items":{"type":["string","array"]}},{"type":"null"}],"default":null},"excludedMutations":{"type":"array","items":{"type":"string"},"default":[]}}},"warningOptions":{"title":"WarningOptions","type":"object","default":{},"properties":{"unknownOptions":{"description":"decide whether or not to log warnings when additional stryker options are configured","type":"boolean","default":true},"preprocessorErrors":{"description":"decide whether or not to log warnings when a preprocessor error occurs. For example, when the disabling of type errors fails.","type":"boolean","default":true},"unserializableOptions":{"description":"decide whether or not to log warnings when a configuration options are unserializable. For example, using a `/regex/` or `function` in your configuration options.","type":"boolean","default":true},"slow":{"description":"decide whether or not to log warnings when Stryker detects a slow part of mutation that can be sped up by changing some configuration. For example using `--ignoreStatic`.","type":"boolean","default":true}}}},"properties":{"allowConsoleColors":{"description":"The 'allowConsoleColors' value indicates whether Stryker should use colors in console.","type":"boolean","default":true},"buildCommand":{"type":"string","description":"Configure a build command to run after mutating the code, but before mutants are tested. This is generally used to transpile your code before testing. Only configure this if your test runner doesn't take care of this already and you're not using just-in-time transpiler like `babel/register` or `ts-node`.","examples":["tsc -b","babel src --out-dir lib","npm run build"]},"checkers":{"description":"Enable checker plugins here. A checker plugin will be invoked for each mutant before it is run in a test runner. It can check to see of a given mutant is valid, by for example validate that it won't result in a type error","type":"array","items":{"type":"string"},"default":[]},"checkerNodeArgs":{"description":"Configure arguments to be passed as exec arguments to the checker child process(es). For example, running Stryker with `--concurrency 1 --checkerNodeArgs --inspect-brk` will allow you to debug the checker child process. See `execArgv` of [`child_process.fork`](https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options)","type":"array","default":[],"items":{"type":"string"}},"concurrency":{"description":"Set the concurrency of workers. Stryker will always run checkers and test runners in parallel by creating worker processes (note, not `worker_threads`). This defaults to `n-1` where `n` is the number of logical CPU cores available on your machine, unless `n <= 4`, in that case it uses `n`. This is a sane default for most use cases.","type":"number"},"commandRunner":{"description":"Options used by the command test runner. Note: these options will only be used when the command test runner is activated (this is the default)","$ref":"#/definitions/commandRunnerOptions","default":{}},"coverageAnalysis":{"$ref":"#/definitions/coverageAnalysis","description":"Indicates which coverage analysis strategy to use. During mutation testing, Stryker will try to only run the tests that cover a particular mutant.\n\n'perTest': Analyse coverage per test.\n'all': Analyse the coverage for the entire test suite.\n'off' (default): Don't use coverage analysis","default":"perTest"},"clearTextReporter":{"description":"The options for the clear text reporter.","$ref":"#/definitions/clearTextReporterOptions","default":{}},"dashboard":{"description":"The options for the dashboard reporter.","$ref":"#/definitions/dashboardOptions","default":{}},"dryRunOnly":{"description":"Execute the initial test run only without doing actual mutation testing. Dry run only will still mutate your code before doing the dry run without those mutants being active, thus can be used to test that StrykerJS can run your test setup. This can be useful, for example, in CI pipelines.","type":"boolean","default":false},"eventReporter":{"description":"The options for the event recorder reporter.","$ref":"#/definitions/eventRecorderOptions","default":{}},"ignorePatterns":{"description":"A comma separated list of patterns used for specifying which files need to be ignored. This should only be used in cases where you experience a slow Stryker startup, because too many (or too large) files are copied to the sandbox that are not needed to run the tests. For example, image or movie directories. Note: This option will have NO effect when using the `--inPlace` option. The directories `node_modules`, `.git` and some others are always ignored. Example: `--ignorePatterns dist`. These patterns are ALWAYS ignored: [`node_modules`, `.git`, `/reports`, `*.tsbuildinfo`, `/stryker.log`, `.stryker-tmp`]. Because Stryker always ignores these, you should rarely have to adjust the `ignorePatterns` setting at all. This is useful to speed up Stryker by ignoring big directories/files you might have in your repo that has nothing to do with your code. For example, 1.5GB of movie/image files. Specify the patterns to all files or directories that are not used to run your tests and thus should NOT be copied to the sandbox directory for mutation testing. Each patterns in this array should be a [glob pattern](#usage-of-globbing-expressions-on-options). If a glob pattern starts with `/`, the pattern is relative to the current working directory. For example, `/foo.js` matches to `foo.js` but not `subdir/foo.js`. However to SELECT specific files TO BE mutated, you better use `--mutate`.","type":"array","items":{"type":"string"},"default":[]},"ignoreStatic":{"description":"Ignore static mutants. Static mutants are mutants which are only executed during the loading of a file. This means that Stryker has to reload the entire environment in order to test the mutant AND has to run all tests. Therefore, it might make sense to ignore static mutants.","type":"boolean","default":false},"incremental":{"description":"Enable 'incremental mode'. Stryker will store results in a file and use that file to speed up the next --incremental run","type":"boolean","default":false},"incrementalFile":{"description":"Specify the file to use for incremental mode.","type":"string","default":"reports/stryker-incremental.json"},"force":{"description":"Run all mutants, even if --incremental is provided and an incremental file exists. Can be used to force a rebuild of the incremental file.","type":"boolean","default":false},"fileLogLevel":{"description":"Set the log level that Stryker uses to write to the \"stryker.log\" file","$ref":"#/definitions/logLevel","default":"off"},"inPlace":{"type":"boolean","description":"Determines whether or not Stryker should mutate your files in place. Note: mutating your files in place is generally not needed for mutation testing, unless you have a dependency in your project that is really dependent on the file locations (like \"app-root-path\" for example).\n\nWhen `true`, Stryker will override your files, but it will keep a copy of the originals in the temp directory (using `tempDirName`) and it will place the originals back after it is done. Also with `true` the `ignorePatterns` has no effect any more.\n\nWhen `false` (default) Stryker will work in the copy of your code inside the temp directory.","default":false},"logLevel":{"description":"Set the log level that Stryker uses to write to the console.","$ref":"#/definitions/logLevel","default":"info"},"maxConcurrentTestRunners":{"description":"[DEPRECATED please use \"concurrency\" instead]. Specifies the maximum number of concurrent test runners to spawn. Mutation testing is time consuming. By default, Stryker tries to make the most of your CPU's, by spawning as many test runners as you have CPU cores (`Number.MAX_SAFE_INTEGER`).","type":"number","default":9007199254740991},"maxTestRunnerReuse":{"description":"Restart each test runner worker process after `n` runs. Not recommended unless you are experiencing memory leaks that you are unable to resolve. Configuring `0` here means infinite reuse.","type":"number","default":0},"mutate":{"description":"With `mutate` you configure the subset of files or just one specific file to be mutated. These should be your _production code files_, and definitely not your test files.\n(Whereas with `ignorePatterns` you prevent non-relevant files from being copied to the sandbox directory in the first place)\nThe default will try to guess your production code files based on sane defaults. It reads like this:\n- Include all js-like files inside the `src` or `lib` dir\n- Except files inside `__tests__` directories and file names ending with `test` or `spec`.\nIf the defaults are not sufficient for you, for example in a angular project you might want to\n **exclude** not only the `*.spec.ts` files but other files too, just like the default already does.\nIt is possible to specify exactly which code blocks to mutate by means of a _mutation range_. This can be done postfixing your file with `:startLine[:startColumn]-endLine[:endColumn]`. Example: src/index.js:1:3-1:5","type":"array","items":{"type":"string"},"default":["{src,lib}/**/!(*.+(s|S)pec|*.+(t|T)est).+(cjs|mjs|js|ts|mts|cts|jsx|tsx|html|vue|svelte)","!{src,lib}/**/__tests__/**/*.+(cjs|mjs|js|ts|mts|cts|jsx|tsx|html|vue|svelte)"]},"mutator":{"description":"Configure how Stryker mutates your code.","$ref":"#/definitions/mutatorDescriptor","default":{}},"packageManager":{"enum":["npm","yarn","pnpm"],"description":"The package manager Stryker can use to install missing dependencies."},"plugins":{"description":"With 'plugins', you can add additional Node modules for Stryker to load (or require). By default, all node_modules starting with @stryker-mutator/* will be loaded, so you would normally not need to specify this option. These modules should be installed right next to stryker. For a current list of plugins, you can consult 'npm' or 'stryker-mutator.io.'","type":"array","items":{"type":"string"},"default":["@stryker-mutator/*"]},"appendPlugins":{"description":"A list of additional plugins you want Stryker to load (`require`) without overwriting the (default) `plugins`.","type":"array","items":{"type":"string"},"default":[]},"reporters":{"description":"With reporters, you can set the reporters for stryker to use.","type":"array","items":{"type":"string"},"default":["clear-text","progress","html"]},"htmlReporter":{"description":"The options for the html reporter","$ref":"#/definitions/htmlReporterOptions","default":{}},"jsonReporter":{"description":"The options for the json reporter","$ref":"#/definitions/jsonReporterOptions","default":{}},"disableTypeChecks":{"description":"Set to 'true' to disable type checking, or 'false' to enable it. For more control, configure a pattern that matches the files of which type checking has to be disabled. This is needed because Stryker will create (typescript) type errors when inserting the mutants in your code. Stryker disables type checking by inserting `// @ts-nocheck` atop those files and removing other `// @ts-xxx` directives (so they won't interfere with `@ts-nocheck`). The default setting allows these directives to be stripped from all JavaScript and friend files in `lib`, `src` and `test` directories.","oneOf":[{"type":"boolean"},{"type":"string"}],"examples":["{test,src,lib}/**/*.{js,ts,jsx,tsx,html,vue,cts,mts}"],"default":true},"symlinkNodeModules":{"description":"The 'symlinkNodeModules' value indicates whether Stryker should create a symbolic link to your current node_modules directory in the sandbox directories. This makes running your tests by Stryker behave more like your would run the tests yourself in your project directory. Only disable this setting if you really know what you are doing.","type":"boolean","default":true},"tempDirName":{"description":"Choose a different temp dir that Stryker uses for mutation testing. This directory will contain copies of your source code during a mutation test run. It will be created if it not exists and is *entirely deleted* after a successful run, so change this with caution.","type":"string","default":".stryker-tmp"},"cleanTempDir":{"description":"Choose whether or not to clean the temp dir (which is \".stryker-tmp\" inside the current working directory by default).\n - false: Never delete the temp dir;\n - true: Delete the tmp dir after a successful run;\n - \"always\": Always delete the temp dir, regardless of whether the run was successful.","enum":["always",false,true],"default":true},"testRunner":{"description":"With 'testRunner' you specify the test runner that Stryker uses to run your tests. The default value is command. The command runner runs a configurable bash/cmd command and bases the result on the exit code of that program (0 for success, otherwise failed). You can configure this command via the config file using the 'commandRunner: { command: 'npm run mocha' }'. It uses 'npm test' as the command by default.","type":"string","default":"command"},"testRunnerNodeArgs":{"description":"Configure arguments to be passed as exec arguments to the test runner child process. For example, running Stryker with `--timeoutMS 9999999 --concurrency 1 --testRunnerNodeArgs --inspect-brk` will allow you to debug the test runner child process. See `execArgv` of [`child_process.fork`](https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options)","type":"array","default":[],"items":{"type":"string"}},"thresholds":{"description":"Specify the thresholds for mutation score.","$ref":"#/definitions/mutationScoreThresholds","default":{}},"timeoutFactor":{"description":"Configure the allowed timeout deviation relative to the time of a normal test run. Tweak this if you notice that mutants are prone to creating slower code, but not infinite loops (for that, use `timeoutMS`)","type":"number","default":1.5},"timeoutMS":{"description":"Configure an absolute timeout deviation. Tweak this if you run Stryker on a busy machine and you need to wait longer to make sure that the code indeed entered an infinite loop.","type":"number","default":5000},"dryRunTimeoutMinutes":{"description":"Configure an absolute timeout for the initial test run. (It can take a while, therefore we use minutes as time unit.)","type":"number","minimum":0,"default":5},"tsconfigFile":{"description":"Configure the (root) tsconfig file for typescript projects. This will allow Stryker to rewrite the `extends` and `references` settings in this and related tsconfig files in your sandbox. Defaults to `tsconfig.json`. This setting is also used when you enable the `@stryker-mutator/typescript-checker plugin","type":"string","default":"tsconfig.json"},"warnings":{"default":true,"oneOf":[{"type":"boolean"},{"$ref":"#/definitions/warningOptions"}],"description":"Enable or disable certain warnings"},"disableBail":{"description":"Disables the default of bailing after first failing test. When true runs all tests covering a mutant. Useful when the subject under test is not completely isolated by mocks and you want to know which tests are killing the mutants. This will impact performance.","type":"boolean","default":false},"allowEmpty":{"description":"Allows stryker to exit without any errors in cases where no tests are found","type":"boolean","default":false},"ignorers":{"description":"Specify which ignore-plugins to use. With an ignore-plugin you can ignore mutants inside common code patterns that you don't want to test for some reason. For example, you can use this to ignore all `console.debug()` statements from being mutated.","type":"array","items":{"type":"string"},"default":[]}}}
</schema>

[User] Provide a JSON object that satisfies the schema "StrykerOptions". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

StrykerOptions

JSON schema for the Stryker Mutator configuration file

CommandRunnerOptions

The command to test each mutant. For example "npm run mocha". Defaults to "npm test".

LogLevel

Off Fatal Error Warning Information Debug Trace

CoverageAnalysis

ReportType

ClearTextReporterOptions

Indicates whether or not to use color coding in output.

Enable emojis in your clear text report (experimental).

Indicates whether or not to log which tests were executed for a given mutant.

Indicates the maximum amount of test to log when `logTests` is enabled

Indicates whether or not to log all tests.

Indicates whether or not to log all mutants.

Indicates whether or not to log score table.

Indicates whether rows with 100% mutation score are hidden in the score table.

DashboardOptions

Indicates which project to use if the "dashboard" reporter is enabled.

Indicates which version to use if the "dashboard" reporter is enabled.

Indicates which module to use if the "dashboard" reporter is enabled.

Indicates the base url of the stryker dashboard.

Indicates wether to send a full report (inc. source code and mutant results) or only the mutation score.

EventRecorderOptions

The base dir to write the events to

HtmlReporterOptions

The `fileName` of the html report.

JsonReporterOptions

The relative filename for the json report.

MutationScoreThresholds

Override the default babel plugins Stryker uses to parse your JavaScript files. The default list of plugins is extensive and normally doesn't need overriding. Stryker also loads your babel plugins by default (if you have them). If Stryker's default babel plugins conflicts with your plugins, try to override this list with an empty array.

WarningOptions

decide whether or not to log warnings when additional stryker options are configured

decide whether or not to log warnings when a preprocessor error occurs. For example, when the disabling of type errors fails.

decide whether or not to log warnings when a configuration options are unserializable. For example, using a `/regex/` or `function` in your configuration options.

decide whether or not to log warnings when Stryker detects a slow part of mutation that can be sped up by changing some configuration. For example using `--ignoreStatic`.

The 'allowConsoleColors' value indicates whether Stryker should use colors in console.

Configure a build command to run after mutating the code, but before mutants are tested. This is generally used to transpile your code before testing. Only configure this if your test runner doesn't take care of this already and you're not using just-in-time transpiler like `babel/register` or `ts-node`.

tsc -b
babel src --out-dir lib
npm run build

Enable checker plugins here. A checker plugin will be invoked for each mutant before it is run in a test runner. It can check to see of a given mutant is valid, by for example validate that it won't result in a type error

Configure arguments to be passed as exec arguments to the checker child process(es). For example, running Stryker with `--concurrency 1 --checkerNodeArgs --inspect-brk` will allow you to debug the checker child process. See `execArgv` of [`child_process.fork`](https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options)

Set the concurrency of workers. Stryker will always run checkers and test runners in parallel by creating worker processes (note, not `worker_threads`). This defaults to `n-1` where `n` is the number of logical CPU cores available on your machine, unless `n <= 4`, in that case it uses `n`. This is a sane default for most use cases.

Options used by the command test runner. Note: these options will only be used when the command test runner is activated (this is the default)

Indicates which coverage analysis strategy to use. During mutation testing, Stryker will try to only run the tests that cover a particular mutant.

'perTest': Analyse coverage per test.
'all': Analyse the coverage for the entire test suite.
'off' (default): Don't use coverage analysis

The options for the clear text reporter.

The options for the dashboard reporter.

Execute the initial test run only without doing actual mutation testing. Dry run only will still mutate your code before doing the dry run without those mutants being active, thus can be used to test that StrykerJS can run your test setup. This can be useful, for example, in CI pipelines.

The options for the event recorder reporter.

A comma separated list of patterns used for specifying which files need to be ignored. This should only be used in cases where you experience a slow Stryker startup, because too many (or too large) files are copied to the sandbox that are not needed to run the tests. For example, image or movie directories. Note: This option will have NO effect when using the `--inPlace` option. The directories `node_modules`, `.git` and some others are always ignored. Example: `--ignorePatterns dist`. These patterns are ALWAYS ignored: [`node_modules`, `.git`, `/reports`, `*.tsbuildinfo`, `/stryker.log`, `.stryker-tmp`]. Because Stryker always ignores these, you should rarely have to adjust the `ignorePatterns` setting at all. This is useful to speed up Stryker by ignoring big directories/files you might have in your repo that has nothing to do with your code. For example, 1.5GB of movie/image files. Specify the patterns to all files or directories that are not used to run your tests and thus should NOT be copied to the sandbox directory for mutation testing. Each patterns in this array should be a [glob pattern](#usage-of-globbing-expressions-on-options). If a glob pattern starts with `/`, the pattern is relative to the current working directory. For example, `/foo.js` matches to `foo.js` but not `subdir/foo.js`. However to SELECT specific files TO BE mutated, you better use `--mutate`.

Ignore static mutants. Static mutants are mutants which are only executed during the loading of a file. This means that Stryker has to reload the entire environment in order to test the mutant AND has to run all tests. Therefore, it might make sense to ignore static mutants.

Enable 'incremental mode'. Stryker will store results in a file and use that file to speed up the next --incremental run

Specify the file to use for incremental mode.

Run all mutants, even if --incremental is provided and an incremental file exists. Can be used to force a rebuild of the incremental file.

Set the log level that Stryker uses to write to the "stryker.log" file

Determines whether or not Stryker should mutate your files in place. Note: mutating your files in place is generally not needed for mutation testing, unless you have a dependency in your project that is really dependent on the file locations (like "app-root-path" for example).

When `true`, Stryker will override your files, but it will keep a copy of the originals in the temp directory (using `tempDirName`) and it will place the originals back after it is done. Also with `true` the `ignorePatterns` has no effect any more.

When `false` (default) Stryker will work in the copy of your code inside the temp directory.

Set the log level that Stryker uses to write to the console.

[DEPRECATED please use "concurrency" instead]. Specifies the maximum number of concurrent test runners to spawn. Mutation testing is time consuming. By default, Stryker tries to make the most of your CPU's, by spawning as many test runners as you have CPU cores (`Number.MAX_SAFE_INTEGER`).

Restart each test runner worker process after `n` runs. Not recommended unless you are experiencing memory leaks that you are unable to resolve. Configuring `0` here means infinite reuse.

With `mutate` you configure the subset of files or just one specific file to be mutated. These should be your _production code files_, and definitely not your test files.
(Whereas with `ignorePatterns` you prevent non-relevant files from being copied to the sandbox directory in the first place)
The default will try to guess your production code files based on sane defaults. It reads like this:
- Include all js-like files inside the `src` or `lib` dir
- Except files inside `__tests__` directories and file names ending with `test` or `spec`.
If the defaults are not sufficient for you, for example in a angular project you might want to
 **exclude** not only the `*.spec.ts` files but other files too, just like the default already does.
It is possible to specify exactly which code blocks to mutate by means of a _mutation range_. This can be done postfixing your file with `:startLine[:startColumn]-endLine[:endColumn]`. Example: src/index.js:1:3-1:5

Configure how Stryker mutates your code.

The package manager Stryker can use to install missing dependencies.

With 'plugins', you can add additional Node modules for Stryker to load (or require). By default, all node_modules starting with @stryker-mutator/* will be loaded, so you would normally not need to specify this option. These modules should be installed right next to stryker. For a current list of plugins, you can consult 'npm' or 'stryker-mutator.io.'

A list of additional plugins you want Stryker to load (`require`) without overwriting the (default) `plugins`.

With reporters, you can set the reporters for stryker to use.

The options for the html reporter

The options for the json reporter

Set to 'true' to disable type checking, or 'false' to enable it. For more control, configure a pattern that matches the files of which type checking has to be disabled. This is needed because Stryker will create (typescript) type errors when inserting the mutants in your code. Stryker disables type checking by inserting `// @ts-nocheck` atop those files and removing other `// @ts-xxx` directives (so they won't interfere with `@ts-nocheck`). The default setting allows these directives to be stripped from all JavaScript and friend files in `lib`, `src` and `test` directories.

The 'symlinkNodeModules' value indicates whether Stryker should create a symbolic link to your current node_modules directory in the sandbox directories. This makes running your tests by Stryker behave more like your would run the tests yourself in your project directory. Only disable this setting if you really know what you are doing.

Choose a different temp dir that Stryker uses for mutation testing. This directory will contain copies of your source code during a mutation test run. It will be created if it not exists and is *entirely deleted* after a successful run, so change this with caution.

Choose whether or not to clean the temp dir (which is ".stryker-tmp" inside the current working directory by default).
 - false: Never delete the temp dir;
 - true: Delete the tmp dir after a successful run;
 - "always": Always delete the temp dir, regardless of whether the run was successful.

With 'testRunner' you specify the test runner that Stryker uses to run your tests. The default value is command. The command runner runs a configurable bash/cmd command and bases the result on the exit code of that program (0 for success, otherwise failed). You can configure this command via the config file using the 'commandRunner: { command: 'npm run mocha' }'. It uses 'npm test' as the command by default.

Configure arguments to be passed as exec arguments to the test runner child process. For example, running Stryker with `--timeoutMS 9999999 --concurrency 1 --testRunnerNodeArgs --inspect-brk` will allow you to debug the test runner child process. See `execArgv` of [`child_process.fork`](https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options)

Specify the thresholds for mutation score.

Configure the allowed timeout deviation relative to the time of a normal test run. Tweak this if you notice that mutants are prone to creating slower code, but not infinite loops (for that, use `timeoutMS`)

Configure an absolute timeout deviation. Tweak this if you run Stryker on a busy machine and you need to wait longer to make sure that the code indeed entered an infinite loop.

Configure an absolute timeout for the initial test run. (It can take a while, therefore we use minutes as time unit.)

Configure the (root) tsconfig file for typescript projects. This will allow Stryker to rewrite the `extends` and `references` settings in this and related tsconfig files in your sandbox. Defaults to `tsconfig.json`. This setting is also used when you enable the `@stryker-mutator/typescript-checker plugin

Enable or disable certain warnings

Disables the default of bailing after first failing test. When true runs all tests covering a mutant. Useful when the subject under test is not completely isolated by mocks and you want to know which tests are killing the mutants. This will impact performance.

Allows stryker to exit without any errors in cases where no tests are found

Specify which ignore-plugins to use. With an ignore-plugin you can ignore mutants inside common code patterns that you don't want to test for some reason. For example, you can use this to ignore all `console.debug()` statements from being mutated.

Provide a JSON object that satisfies the schema "StrykerOptions". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-04/schema#","id":"https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json","title":"StyleCop Analyzers Configuration","description":"Configuration file for StyleCop Analyzers","type":"object","properties":{"settings":{"type":"object","description":"The top-level object containing configuration properties for built-in rules.","additionalProperties":false,"properties":{"indentation":{"type":"object","description":"Indentation configuration","additionalProperties":false,"properties":{"indentationSize":{"description":"Specifies the indentation size.","type":"integer","minimum":0,"default":4},"tabSize":{"description":"Specifies the tab width.","type":"integer","minimum":0,"default":4},"useTabs":{"description":"Specifies whether indentation should use hard tabs instead of spaces.","type":"boolean","default":false}}},"spacingRules":{"type":"object","description":"Configuration for spacing rules (SA1000-)","additionalProperties":false,"properties":{}},"readabilityRules":{"type":"object","description":"Configuration for readability rules (SA1100-)","additionalProperties":false,"properties":{"allowBuiltInTypeAliases":{"type":"boolean","description":"When true, diagnostics will not be reported for using aliases of built-in types.","default":false}}},"orderingRules":{"type":"object","description":"Configuration for ordering rules (SA1200-)","additionalProperties":false,"properties":{"elementOrder":{"type":"array","description":"Specifies the traits used for ordering elements within a document, along with their precedence.","default":["kind","accessibility","constant","static","readonly"],"items":{"type":"string","description":"","enum":["accessibility","kind","constant","static","readonly"]},"uniqueItems":true},"systemUsingDirectivesFirst":{"type":"boolean","description":"When true, System using directives should be placed before other using directives.","default":true},"usingDirectivesPlacement":{"type":"string","description":"Specifies the desired placement of using directives.\r\ninsideNamespace: Place using directives inside the namespace definition\r\noutsideNamespace: Place using directives outside the namespace definition\r\npreserve: Allow using directives inside or outside the namespace definition","enum":["insideNamespace","outsideNamespace","preserve"],"default":"insideNamespace"},"blankLinesBetweenUsingGroups":{"type":"string","description":"Specifies if using groups should be separated by a blank line.\r\nallow: A blank line is allowed, but not required\r\nrequire: A blank line is required\r\nomit: A blank line is not allowed","enum":["allow","require","omit"],"default":"allow"}}},"namingRules":{"type":"object","description":"Configuration for naming rules (SA1300-)","additionalProperties":false,"properties":{"allowCommonHungarianPrefixes":{"type":"boolean","description":"Determines whether common Hungarian notation prefixes should be allowed.","default":true},"allowedHungarianPrefixes":{"type":"array","description":"Allowed Hungarian notation prefixes.","default":[],"items":{"type":"string","pattern":"^[a-z]{1,2}$","uniqueItems":true}},"allowedNamespaceComponents":{"type":"array","description":"Allowed namespace components, such as ones beginning with a lowercase letter.","default":[],"items":{"type":"string","uniqueItems":true}},"includeInferredTupleElementNames":{"type":"boolean","description":"Specifies whether inferred tuple element names will be analyzed as well.","default":false},"tupleElementNameCasing":{"type":"string","description":"Specifies the casing convention used for tuple element names.","enum":["camelCase","PascalCase"],"default":"PascalCase"}}},"maintainabilityRules":{"type":"object","description":"Configuration for ordering rules (SA1400-)","additionalProperties":false,"properties":{"topLevelTypes":{"type":"array","description":"The set of type kinds which should be placed in separate files according to the type name.","default":["class"],"items":{"type":"string","enum":["class","interface","struct","delegate","enum"]},"uniqueItems":true}}},"layoutRules":{"type":"object","description":"Configuration for layout rules (SA1500-)","additionalProperties":false,"properties":{"newlineAtEndOfFile":{"type":"string","description":"Specifies the handling for newline characters which appear at the end of a file\r\nallow: Files are allowed to end with a single newline character, but it is not required\r\nrequire: Files are required to end with a single newline character\r\nomit: Files may not end with a newline character","enum":["allow","require","omit"],"default":"allow"},"allowConsecutiveUsings":{"type":"boolean","description":"Specifies if SA1519 will allow consecutive using statements without braces","default":true},"allowDoWhileOnClosingBrace":{"type":"boolean","description":"Specifies if SA1500 will allow the 'while' expression of a 'do'/'while' loop to be on the same line as the closing brace.","default":false}}},"documentationRules":{"type":"object","description":"Configuration for documentation rules (SA1600-)","additionalProperties":false,"properties":{"documentExposedElements":{"type":"boolean","description":"Specifies whether exposed elements need to be documented. When true, all publicly-exposed types and members require documentation.","default":true},"documentInternalElements":{"type":"boolean","description":"Specifies whether internal elements need to be documented. When true, all internally-exposed types and members require documentation.","default":true},"documentPrivateElements":{"type":"boolean","description":"Specifies whether private elements need to be documented. When true, all types and members except for declared private fields require documentation.","default":false},"documentInterfaces":{"type":"boolean","description":"Specifies whether interface members need to be documented. When true, all interface members require documentation, regardless of accessibility.","default":true},"documentPrivateFields":{"type":"boolean","description":"Specifies whether private fields need to be documented. When true, all fields require documentation, regardless of accessibility.","default":false},"companyName":{"type":"string","description":"The name of the company which appears in file headers.","default":"PlaceholderCompany"},"copyrightText":{"type":"string","description":"The copyright text which should appear in file headers.","default":"Copyright (c) {companyName}. All rights reserved."},"variables":{"type":"object","description":"Replacement variables which may be used in the 'copyrightText' value.","patternProperties":{"^[a-zA-Z0-9]+$":{"type":"string"}},"additionalProperties":false},"xmlHeader":{"type":"boolean","description":"Determines whether the file header should be wrapped in the StyleCop-standard XML structure.","default":true},"headerDecoration":{"type":"string","description":"The text used as decoration for the copyright header comment.","default":""},"fileNamingConvention":{"type":"string","description":"Specifies the preferred naming convention for files. The default value \"stylecop\" uses the naming convention defined by StyleCop Classic, while \"metadata\" uses a file naming convention that matches the metadata names of types.","default":"stylecop","enum":["stylecop","metadata"]},"documentationCulture":{"type":"string","description":"The culture that should be used for documentation comments.","default":"en-US"},"excludeFromPunctuationCheck":{"type":"array","description":"Specifies the top-level tags within XML documentation that will be excluded from punctuation analysis.","default":["seealso"]}}}}}}}
</schema>

[User] Provide a JSON object that satisfies the schema "StyleCop Analyzers Configuration". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

StyleCop Analyzers Configuration

Configuration file for StyleCop Analyzers

The top-level object containing configuration properties for built-in rules.

Indentation configuration

Specifies the indentation size.

Specifies the tab width.

Specifies whether indentation should use hard tabs instead of spaces.

Configuration for spacing rules (SA1000-)

Configuration for readability rules (SA1100-)

When true, diagnostics will not be reported for using aliases of built-in types.

Configuration for ordering rules (SA1200-)

Specifies the traits used for ordering elements within a document, along with their precedence.

kind accessibility constant static readonly

accessibility kind constant static readonly

When true, System using directives should be placed before other using directives.

Specifies the desired placement of using directives.
insideNamespace: Place using directives inside the namespace definition
outsideNamespace: Place using directives outside the namespace definition
preserve: Allow using directives inside or outside the namespace definition

Specifies if using groups should be separated by a blank line.
allow: A blank line is allowed, but not required
require: A blank line is required
omit: A blank line is not allowed

Configuration for naming rules (SA1300-)

Determines whether common Hungarian notation prefixes should be allowed.

Allowed Hungarian notation prefixes.

Allowed namespace components, such as ones beginning with a lowercase letter.

Specifies whether inferred tuple element names will be analyzed as well.

Specifies the casing convention used for tuple element names.

Configuration for ordering rules (SA1400-)

The set of type kinds which should be placed in separate files according to the type name.

Configuration for layout rules (SA1500-)

Specifies the handling for newline characters which appear at the end of a file
allow: Files are allowed to end with a single newline character, but it is not required
require: Files are required to end with a single newline character
omit: Files may not end with a newline character

Specifies if SA1519 will allow consecutive using statements without braces

Specifies if SA1500 will allow the 'while' expression of a 'do'/'while' loop to be on the same line as the closing brace.

Configuration for documentation rules (SA1600-)

Specifies whether exposed elements need to be documented. When true, all publicly-exposed types and members require documentation.

Specifies whether internal elements need to be documented. When true, all internally-exposed types and members require documentation.

Specifies whether private elements need to be documented. When true, all types and members except for declared private fields require documentation.

Specifies whether interface members need to be documented. When true, all interface members require documentation, regardless of accessibility.

Specifies whether private fields need to be documented. When true, all fields require documentation, regardless of accessibility.

The name of the company which appears in file headers.

The copyright text which should appear in file headers.

Copyright (c) {companyName}. All rights reserved.

Replacement variables which may be used in the 'copyrightText' value.

Determines whether the file header should be wrapped in the StyleCop-standard XML structure.

The text used as decoration for the copyright header comment.

Specifies the preferred naming convention for files. The default value "stylecop" uses the naming convention defined by StyleCop Classic, while "metadata" uses a file naming convention that matches the metadata names of types.

The culture that should be used for documentation comments.

Specifies the top-level tags within XML documentation that will be excluded from punctuation analysis.

Provide a JSON object that satisfies the schema "StyleCop Analyzers Configuration". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[User] Provide a JSON object that satisfies the schema "JSON schema for the Stylelint configuration files". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Custom message that will be used in errors and warnings

Message status

em ex px % rem vw vh vm vmin vmax ch in cm mm q pt pc deg grad rad turn ms s Hz kHz dpi dpcm dppx fr

Ignore units in the values of declarations with the specified properties

Specify a blacklist of disallowed at-rules

Require or disallow an empty line before at-rules

all-nested after-same-name inside-block blockless-after-same-name-blockless blockless-after-blockless first-nested

after-comment first-nested inside-block blockless-after-same-name-blockless blockless-after-blockless

Specify lowercase or uppercase for at-rules names

Require a newline after at-rule names

Require a single space after at-rule names

Disallow unknown at-rules

Disallow vendor prefixes for at-rules

Require a newline after the semicolon of at-rules

Require a single space or disallow whitespace before the semicolons of at-rules

Specify a whitelist of allowed at-rules

Require or disallow an empty line before the closing brace of blocks

Require a newline or disallow whitespace after the closing brace of blocks

Require a newline or disallow whitespace before the closing brace of blocks

Require a single space or disallow whitespace after the closing brace of blocks

Require a single space or disallow whitespace before the closing brace of blocks

Disallow empty blocks

Disallow single-line blocks

Require a newline after the opening brace of blocks

Require a newline or disallow whitespace before the opening brace of blocks

Require a single space or disallow whitespace after the opening brace of blocks

Require a single space or disallow whitespace before the opening brace of blocks

Specify lowercase or uppercase for hex colors

Specify short or long notation for hex colors

Require (where possible) or disallow named colors

Disallow hex colors

Disallow invalid hex colors

Require or disallow an empty line before comments

Reverse the primary option for comments that are nested and the first child of their parent node

Don't require an empty line between comments

between-comments after-comment stylelint-command stylelint-commands

Disallow empty comments

Require or disallow whitespace on the inside of comment markers

Specify a blacklist of disallowed words within comments

Specify a pattern for custom media query names

Disallow unknown custom media queries

Require or disallow an empty line before custom properties

Reverse the primary option for custom properties that come after a comment, custom property or first child of their parent node

Ignore custom properties that are preceded by comments or inside single-line blocks

Disallow custom properties outside of `:root` rules

Specify a pattern for custom properties

Disallow unknown custom properties

Require a single space or disallow whitespace after the bang of declarations

Require a single space or disallow whitespace before the bang of declarations

Require a newline or disallow whitespace after the colon of declarations

Require a single space or disallow whitespace after the colon of declarations

Require a single space or disallow whitespace before the colon of declarations

Require or disallow an empty line before declarations

after-comment after-declaration first-nested inside-single-line-block

Disallow `!important` within declarations

Specify a blacklist of disallowed property and unit pairs within declarations

Specify a whitelist of allowed property and unit pairs within declarations

Specify a blacklist of disallowed property and value pairs within declarations

Disallow unknown values for properties within declarations

Specify a whitelist of allowed property and value pairs within declarations

Disallow duplicate properties within declaration blocks

Disallow property values that are ignored due to another property value in the same rule

Disallow longhand properties that can be combined into one shorthand property

Disallow shorthand properties that override related longhand properties

Specify the order of properties within declaration blocks

These options only apply if you've defined your own array of properties

Require a newline or disallow whitespace after the semicolons of declaration blocks

Require a newline or disallow whitespace before the semicolons of declaration blocks

Require a single space or disallow whitespace after the semicolons of declaration blocks

Require a single space or disallow whitespace before the semicolons of declaration blocks

Limit the number of declaration within a single line declaration block

Require or disallow a trailing semicolon within declaration blocks

Specify whether or not quotation marks should be used around font family names

Require numeric or named (where possible) `font-weight` values. Also, when named values are expected, require only valid names

Specify a blacklist of disallowed functions

Disallow an unspaced operator within `calc` functions

Require a newline or disallow whitespace after the commas of functions

Require a newline or disallow whitespace before the commas of functions

Require a single space or disallow whitespace after the commas of functions

Require a single space or disallow whitespace before the commas of functions

Disallow direction values in `linear-gradient()` calls that are not valid according to the standard syntax

Limit the number of adjacent empty lines within functions

Specify lowercase or uppercase for function names

Ignore case of function names

Require a newline or disallow whitespace on the inside of the parentheses of functions

Require a single space or disallow whitespace on the inside of the parentheses of functions

Require or disallow data URIs for urls

Disallow scheme-relative urls

Require or disallow quotes for urls

Specify a whitelist of allowed url schemes

Specify a whitelist of allowed functions

Require or disallow whitespace after functions

Specify indentation

If `true`, the closing brace of a block (rule or at-rule) will be expected at the same indentation level as the block's inner nodes

Do not indent for these things

Ignore the indentation inside parentheses

Specify unix or windows linebreaks

Limit the number of adjacent empty lines

Limit the length of a line

Limit the allowed nesting depth

Disallow browser hacks that are irrelevant to the browsers you are targeting

Disallow selectors of lower specificity from coming after overriding selectors of higher specificity

Disallow duplicate selectors within a stylesheet

Disallow empty first lines

Disallow empty sources

Disallow end-of-line whitespace

Disallow extra semicolons

Disallow colors that are suspiciously close to being identical

An array of color pairs to ignore. Each pair is an array with two items

Disallow double-slash comments `(//...)` which are not supported by CSS and could lead to unexpected results

Disallow missing end-of-source newlines

Disallow animation names that do not correspond to a `@keyframes` declaration

Require or disallow Unicode BOM

Disallow features that are unsupported by the browsers that you are targeting

Disallow !important within keyframe declarations

Disallow units for zero lengths

Specify number or percentage notation for lightness

Require a single space or disallow whitespace after the colon in media features

Require a single space or disallow whitespace before the colon in media features

Specify lowercase or uppercase for media feature names

Disallow unknown media feature names

Disallow unknown values for media features

Disallow vendor prefixes for media feature names

Specify a list of allowed name and unit pairs within media features

Disallow missing punctuation for non-boolean media features

Require a single space or disallow whitespace on the inside of the parentheses within media features

Specify context or prefix notation for media feature ranges

Require a single space or disallow whitespace after the range operator in media features

Require a single space or disallow whitespace before the range operator in media features

Disallow invalid media queries

Require a newline or disallow whitespace after the commas of media query lists

Require a newline or disallow whitespace before the commas of media query lists

Require a single space or disallow whitespace after the commas of media query lists

Require a single space or disallow whitespace before the commas of media query lists

Require or disallow a leading zero for fractional numbers less than 1

Limit the number of decimal places allowed in numbers

Disallow trailing zeros in numbers

Specify a blacklist of disallowed properties

Specify lowercase or uppercase for properties

Disallow unknown properties

If `true`, this rule will check vendor-prefixed properties

Disallow vendor prefixes for properties

Specify a whitelist of allowed properties

Disallow standard properties inside `:root` rules

Require or disallow an empty line before nested rules

Reverse the primary option if the rule is the first in a block

Ignore rules that come after a comment

Require or disallow an empty line before non-nested rules

Ignore rules that come after a comment

Disallow unmatchable An+B selectors

Require a single space or disallow whitespace on the inside of the brackets within attribute selector

Specify a blacklist of disallowed attribute operators

Require a single space or disallow whitespace after operators within attribute selectors

Require a single space or disallow whitespace before operators within attribute selectors

Specify a whitelist of allowed attribute operators

Require or disallow quotes for attribute values

Specify a pattern for class selectors

This option will resolve nested selectors with `&` interpolation

Require a single space or disallow whitespace after the combinators of selectors

Require a single space or disallow whitespace before the combinators of selectors

Disallow non-space characters for descendant combinators of selectors

Specify a pattern for id selectors

Limit the number of compound selectors in a selector

Limit the specificity of selectors

Specify a pattern for the selectors of rules nested within rules

Disallow attribute selectors

Disallow combinators in selectors

Disallow id selectors

Disallow qualifying a selector by type

Disallow type selectors

Disallow the universal selector

Disallow vendor prefixes for selectors

Specify lowercase or uppercase for pseudo-class selectors

Disallow unknown pseudo-class selectors

Require a single space or disallow whitespace on the inside of the parentheses within pseudo-class selectors

Specify a whitelist of allowed pseudo-class selectors

Specify lowercase or uppercase for pseudo-element selectors

Specify single or double colon notation for applicable pseudo-elements

Disallow unknown pseudo-element selectors

Disallow the composition of :root in selectors

Specify lowercase or uppercase for type selectors

Disallow unknown type selectors

Limit the number of adjacent empty lines within selectors

Require a newline or disallow whitespace after the commas of selector lists

Require a newline or disallow whitespace before the commas of selector lists

Require a single space or disallow whitespace after the commas of selector lists

Require a single space or disallow whitespace before the commas of selector lists

Disallow redundant values in shorthand properties

Disallow (unescaped) newlines in strings

Specify single or double quotes around strings

Require a reason comment before or after `stylelint-disable` comments

Disallow `animation` and `transition` less than or equal to 100ms

Specify a blacklist of disallowed units

Specify lowercase or uppercase for units

Disallow unknown units

Specify a whitelist of allowed units

Specify lowercase or uppercase for keywords values

Ignore case of keywords values

Disallow vendor prefixes for values

Require a newline or disallow whitespace after the commas of value lists

Require a newline or disallow whitespace before the commas of value lists

Require a single space or disallow whitespace after the commas of value lists

Require a single space or disallow whitespace before the commas of value lists

Limit the number of adjacent empty lines within value lists

Your configuration can extend an existing configuration(s) (whether your own or a third-party config)

Plugins are rules or sets of rules built by the community that support methodologies, toolsets, non-standard CSS features, or very specific use cases

Specify a custom syntax to use on your code.

Provide rule and behavior overrides for files that match particular glob patterns.

Processors are functions that hook into stylelint's pipeline, modifying code on its way into stylelint and modifying results on their way out

Ignore stylelint-disable (e.g. /* stylelint-disable block-no-empty */) comments.

Provide a glob or array of globs to ignore specific files

The default severity level for all rules that do not have a severity specified in their secondary options

Report stylelint-disable comments without a description.

Report stylelint-disable comments that don't match rules that are specified in the configuration object.

Report stylelint-disable comments that don't actually match any lints that need to be disabled

JSON schema for the Stylelint configuration files

Provide a JSON object that satisfies the schema "JSON schema for the Stylelint configuration files". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

JSON schema for the Stylelint configuration files


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-04/schema#","id":"https://json.schemastore.org/stylua.json","title":"Stylua Config","description":"Configuration files for the Stylua formatter","type":"object","properties":{"syntax":{"description":"Specify a disambiguation for the style of Lua syntax being formatted.","type":"string","default":"All","enum":["All","Lua51","Lua52","Lua53","Lua54","LuaJIT","Luau"]},"column_width":{"description":"Approximate line length for printing.\nUsed as a guide for line wrapping - this is not a hard requirement: lines may fall under or over the limit.","type":"integer","default":120},"line_endings":{"description":"Line endings type.","type":"string","default":"Unix","enum":["Unix","Windows"],"x-taplo":{"docs":{"enumValues":["LF","CRLF"]}}},"indent_type":{"description":"Indent type.","type":"string","default":"Tabs","enum":["Tabs","Spaces"]},"indent_width":{"type":"integer","default":4,"description":"Character size of single indentation.\nIf indent_type is set to Tabs, this option is used as a heuristic to determine column width only."},"quote_style":{"description":"Quote style for string literals.","type":"string","default":"AutoPreferDouble","enum":["AutoPreferDouble","AutoPreferSingle","ForceDouble","ForceSingle"],"x-taplo":{"docs":{"enumValues":["Prefer double, but fallback to single if it has fewer escapes.","Prefer single, but fallback to double if it has fewer escapes.","Force double quotes regardless of escapes.","Force single quotes regardless of escapes."]}}},"call_parentheses":{"description":"Whether parentheses should be applied on function calls with a single string/table argument.","type":"string","default":"Always","enum":["Always","NoSingleString","NoSingleTable","None","Input"],"x-taplo":{"docs":{"enumValues":["Applies parentheses in all cases.","Omits parentheses on calls with a single string argument.","Omits parentheses on calls with a single table argument.","Omits parentheses in both cases.\nNote: parentheses are still kept in situations where removal can lead to obscurity (e.g. foo \"bar\".setup -> foo(\"bar\").setup, since the index is on the call result, not the string).","Removes all automation and preserves parentheses only if they were present in input code: consistency is not enforced."]}}},"space_after_function_names":{"type":"string","description":"Specify whether to add a space between the function name and parentheses.","default":"Never","enum":["Never","Definitions","Calls","Always"]},"collapse_simple_statement":{"default":"Never","description":"Specify whether to collapse simple statements.","type":"string","enum":["Never","FunctionOnly","ConditionalOnly","Always"]},"sort_requires":{"type":"object","description":"StyLua has built-in support for sorting require statements. We group consecutive require statements into a single \"block\", and then requires are sorted only within that block. Blocks of requires do not move around the file.\n\nStyLua only considers requires of the form local NAME = require(EXPR), and sorts lexicographically based on NAME. (StyLua can also sort Roblox services of the form local NAME = game:GetService(EXPR))\n\nRequires sorting is off by default.","properties":{"enabled":{"type":"boolean","default":false}},"x-taplo":{"initKeys":["enabled"]}}}}
</schema>

[User] Provide a JSON object that satisfies the schema "Stylua Config". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Stylua Config

Configuration files for the Stylua formatter

Specify a disambiguation for the style of Lua syntax being formatted.

Approximate line length for printing.
Used as a guide for line wrapping - this is not a hard requirement: lines may fall under or over the limit.

Line endings type.

Indent type.

Character size of single indentation.
If indent_type is set to Tabs, this option is used as a heuristic to determine column width only.

Quote style for string literals.

AutoPreferDouble AutoPreferSingle ForceDouble ForceSingle

Prefer double, but fallback to single if it has fewer escapes.

Prefer single, but fallback to double if it has fewer escapes.

Force double quotes regardless of escapes.

Force single quotes regardless of escapes.

Whether parentheses should be applied on function calls with a single string/table argument.

Always NoSingleString NoSingleTable None Input

Omits parentheses on calls with a single string argument.

Omits parentheses on calls with a single table argument.

Omits parentheses in both cases.
Note: parentheses are still kept in situations where removal can lead to obscurity (e.g. foo "bar".setup -> foo("bar").setup, since the index is on the call result, not the string).

Removes all automation and preserves parentheses only if they were present in input code: consistency is not enforced.

Specify whether to add a space between the function name and parentheses.

Specify whether to collapse simple statements.

Never FunctionOnly ConditionalOnly Always

StyLua has built-in support for sorting require statements. We group consecutive require statements into a single "block", and then requires are sorted only within that block. Blocks of requires do not move around the file.

StyLua only considers requires of the form local NAME = require(EXPR), and sorts lexicographically based on NAME. (StyLua can also sort Roblox services of the form local NAME = game:GetService(EXPR))

Requires sorting is off by default.

Provide a JSON object that satisfies the schema "Stylua Config". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/sublime-syntax.json","$comment":"https://www.sublimetext.com/docs/syntax.html","definitions":{"push":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"},"minItems":1},{"$ref":"#/definitions/patterns"}]},"meta-pattern":{"description":"Meta patterns must be listed first in the context, before any match or include patterns.\nhttps://www.sublimetext.com/docs/syntax.html#meta-patterns","type":"object","properties":{"meta_scope":{"description":"This assigns the given scope to all text within this context, including the patterns that push the context onto the stack and pop it off.","type":"string"},"meta_content_scope":{"description":"This assigns the given scope to all text within this context, including the patterns that push the context onto the stack and pop it off. But does not apply to the text that triggers the context (e.g., in the above string example, the content scope would not get applied to the quote characters).","type":"string"},"meta_include_prototype":{"description":"Used to stop the current context from automatically including the prototype context.","type":"boolean"},"clear_scopes":{"description":"This setting allows removing scope names from the current stack. It can be an integer, or the value true to remove all scope names. It is applied before meta_scope and meta_content_scope. This is typically only used when one syntax is embedding another.","anyOf":[{"type":"integer"},{"type":"boolean"}]},"meta_prepend":{"description":"A boolean, controlling context name conflict resolution during inheritance. If this is specified, the rules in this context will be inserted before any existing rules from a context with the same name in an ancestor syntax definition.","type":"boolean"},"meta_append":{"description":"A boolean, controlling context name conflict resolution during inheritance. If this is specified, the rules in this context will be inserted after to any existing rules from a context with the same name in an ancestor syntax definition.","type":"boolean"}}},"match-pattern":{"description":"The following keys control behavior that is exclusive, and only one can be specified per match pattern: push pop set embed branch fail\nhttps://www.sublimetext.com/docs/syntax.html#match-patterns","type":"object","properties":{"match":{"description":"The regex used to match against the text. YAML allows many strings to be written without quotes, which can help make the regex clearer, but it's important to understand when you need to quote the regex. If your regex includes the characters #, :, -, {, [ or > then you likely need to quote it. Regexes are only ever run against a single line of text at a time.","type":"string"},"scope":{"description":"The scope assigned to the matched text.","pattern":"^[_a-zA-Z][a-zA-Z0-9._ -]*$","type":"string"},"captures":{"description":"A mapping of numbers to scope, assigning scopes to captured portions of the match regex.","type":"object","patternProperties":{"^\\d+$":{"type":"string"}},"minProperties":1},"push":{"$ref":"#/definitions/push","description":"The contexts to push onto the stack. This may be either a single context name, a list of context names, or an inline, anonymous context."},"pop":{"description":"Pops contexts off the stack. The value true will pop a single context. An integer greater than zero will pop the corresponding number of contexts. The pop key can be combined with push, set, embed and branch. When combined, the specified number of contexts will be popped off of the stack before the other action is performed. For push, embed and branch actions, the pop treats the match as if it were a lookahead, which means the match will not receive the meta_scope of the contexts that are popped.","type":"boolean"},"set":{"$ref":"#/definitions/push","description":"Accepts the same arguments as push, but will first pop this context off, and then push the given context(s) onto the stack. Any match will receive the meta_scope of the context being popped and the context being pushed."},"embed":{"description":"Accepts the name of a single context to push into. While similar to push, it pops out of any number of nested contexts as soon as the escape pattern is found. This makes it an ideal tool for embedding one syntax within another.","type":"object","properties":{"escape":{"description":"This key is required if embed is used, and is a regex used to exit from the embedded context. Any backreferences in this pattern will refer to capture groups in the match regex.","type":"string"},"embed_scope":{"description":"A scope assigned to all text matched after the match and before the escape. Similar in concept to meta_content_scope.","type":"string"},"escape_captures":{"description":"A mapping of capture groups to scope names, for the escape pattern. Use capture group 0 to apply a scope to the entire escape match.","type":"object","patternProperties":{"^\\d+$":{"type":"string"}},"minProperties":1},"branch":{"description":"Accepts the names of two or more contexts, which are attempted in order. If a fail action is encountered, the highlighting of the file will be restarted at the character where the branch occurred, and the next context will be attempted.","type":"object","properties":{"branch_point":{"description":"This is the unique identifier for the branch and is specified when a match uses the fail action.","type":"string"}}},"fail":{"description":"Accepts the name of a branch_point to rewind to and retry the next context of. If a fail action specifies a branch_point that was never pushed on the stack, or has already been popped off of the stack, it will have no effect.","type":"string"}}}},"required":["match"]},"include-pattern":{"description":"Frequently it\u2019s convenient to include the contents of one context within another. For example, you may define several different contexts for parsing the C language, and almost all of them can include comments. Rather than copying the relevant match patterns into each of these contexts, you can include them.\nhttps://www.sublimetext.com/docs/syntax.html#include-patterns","type":"object","properties":{"include":{"type":"string"},"apply_prototype":{"type":"boolean"}},"required":["include"]},"prototype-pattern":{"description":"With elements such as comments, it\u2019s so common to include them that it\u2019s simpler to make them included automatically in every context, and just list the exceptions instead. You can do this by creating a context named prototype, it will be included automatically at the top of every other context, unless the context contains the meta_include_prototype key.\nhttps://www.sublimetext.com/docs/syntax.html#prototype-context","type":"object","properties":{"meta_include_prototype":{"type":"boolean"}},"required":["meta_include_prototype"]},"pattern":{"anyOf":[{"$ref":"#/definitions/meta-pattern"},{"$ref":"#/definitions/match-pattern"},{"$ref":"#/definitions/include-pattern"},{"$ref":"#/definitions/prototype-pattern"}]},"patterns":{"type":"array","items":{"$ref":"#/definitions/pattern"},"minItems":1,"uniqueItems":true}},"description":"JSON schema for *.sublime-syntax yaml","properties":{"name":{"description":"This defines the name shown for the syntax in the menu. It\u2019s optional, and will be derived from the file name if not used.","type":"string"},"file_extensions":{"description":"A list of strings, defining file extensions this syntax should be used for. Extensions listed here will be shown in file dialog dropdowns on some operating systems. If a file does not have a basename, e.g. .gitignore, the entirety of the filename including the leading . should be specified.","type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true},"hidden_file_extensions":{"description":"A list of strings, also defining file extensions this syntax should be used for. These extensions are not listed in file dialogs.","type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true},"first_line_match":{"description":"When a file is opened without a recognized extension, the first line of the file contents will be tested against this regex, to see if the syntax should be applied.","type":"string"},"scope":{"description":"The default scope assigned to all text in the file","pattern":"^[_a-zA-Z][a-zA-Z0-9._ -]*$","type":"string"},"version":{"default":2,"type":"integer","enum":[1,2]},"extends":{"description":"A string of a base syntax this syntax should inherit from. The base syntax must be specified using its package path, e.g. Packages/JavaScript/JavaScript.sublime-syntax. See Inheritance for an overview of syntax inheritance.","type":"string"},"hidden":{"description":"Hidden syntax definitions won\u2019t be shown in the menu, but can still be assigned by plugins, or included by other syntax definitions.","type":"boolean"},"contexts":{"description":"https://www.sublimetext.com/docs/syntax.html#contexts","type":"object","patternProperties":{"^[_a-zA-Z][a-zA-Z0-9_-]*$":{"$ref":"#/definitions/patterns"}},"minProperties":1},"variables":{"description":"Variables must be defined at the top level of the .sublime-syntax file, and are referenced within regxes via {{varname}}. Variables may themselves include other variables. Note that any text that doesn\u2019t match {{[A-Za-z0-9_]+}} won\u2019t be considered as a variable, so regexes can still include literal {{ characters, for example.\nhttps://www.sublimetext.com/docs/syntax.html#variables","type":"object","patternProperties":{"^[_a-zA-Z][a-zA-Z0-9_]*$":{"type":"string"}},"minProperties":1}},"required":["scope","contexts"],"title":"sublime-syntax","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "sublime-syntax". Here are the required top‑level fields: scope, contexts. Return only the valid JSON object.

Meta patterns must be listed first in the context, before any match or include patterns.
https://www.sublimetext.com/docs/syntax.html#meta-patterns

This assigns the given scope to all text within this context, including the patterns that push the context onto the stack and pop it off. But does not apply to the text that triggers the context (e.g., in the above string example, the content scope would not get applied to the quote characters).

Used to stop the current context from automatically including the prototype context.

This setting allows removing scope names from the current stack. It can be an integer, or the value true to remove all scope names. It is applied before meta_scope and meta_content_scope. This is typically only used when one syntax is embedding another.

A boolean, controlling context name conflict resolution during inheritance. If this is specified, the rules in this context will be inserted before any existing rules from a context with the same name in an ancestor syntax definition.

A boolean, controlling context name conflict resolution during inheritance. If this is specified, the rules in this context will be inserted after to any existing rules from a context with the same name in an ancestor syntax definition.

The following keys control behavior that is exclusive, and only one can be specified per match pattern: push pop set embed branch fail
https://www.sublimetext.com/docs/syntax.html#match-patterns

The regex used to match against the text. YAML allows many strings to be written without quotes, which can help make the regex clearer, but it's important to understand when you need to quote the regex. If your regex includes the characters #, :, -, {, [ or > then you likely need to quote it. Regexes are only ever run against a single line of text at a time.

The scope assigned to the matched text.

A mapping of numbers to scope, assigning scopes to captured portions of the match regex.

The contexts to push onto the stack. This may be either a single context name, a list of context names, or an inline, anonymous context.

Pops contexts off the stack. The value true will pop a single context. An integer greater than zero will pop the corresponding number of contexts. The pop key can be combined with push, set, embed and branch. When combined, the specified number of contexts will be popped off of the stack before the other action is performed. For push, embed and branch actions, the pop treats the match as if it were a lookahead, which means the match will not receive the meta_scope of the contexts that are popped.

Accepts the same arguments as push, but will first pop this context off, and then push the given context(s) onto the stack. Any match will receive the meta_scope of the context being popped and the context being pushed.

Accepts the name of a single context to push into. While similar to push, it pops out of any number of nested contexts as soon as the escape pattern is found. This makes it an ideal tool for embedding one syntax within another.

This key is required if embed is used, and is a regex used to exit from the embedded context. Any backreferences in this pattern will refer to capture groups in the match regex.

A scope assigned to all text matched after the match and before the escape. Similar in concept to meta_content_scope.

A mapping of capture groups to scope names, for the escape pattern. Use capture group 0 to apply a scope to the entire escape match.

Accepts the names of two or more contexts, which are attempted in order. If a fail action is encountered, the highlighting of the file will be restarted at the character where the branch occurred, and the next context will be attempted.

This is the unique identifier for the branch and is specified when a match uses the fail action.

Accepts the name of a branch_point to rewind to and retry the next context of. If a fail action specifies a branch_point that was never pushed on the stack, or has already been popped off of the stack, it will have no effect.

Frequently it’s convenient to include the contents of one context within another. For example, you may define several different contexts for parsing the C language, and almost all of them can include comments. Rather than copying the relevant match patterns into each of these contexts, you can include them.
https://www.sublimetext.com/docs/syntax.html#include-patterns

With elements such as comments, it’s so common to include them that it’s simpler to make them included automatically in every context, and just list the exceptions instead. You can do this by creating a context named prototype, it will be included automatically at the top of every other context, unless the context contains the meta_include_prototype key.
https://www.sublimetext.com/docs/syntax.html#prototype-context

JSON schema for *.sublime-syntax yaml

This defines the name shown for the syntax in the menu. It’s optional, and will be derived from the file name if not used.

A list of strings, defining file extensions this syntax should be used for. Extensions listed here will be shown in file dialog dropdowns on some operating systems. If a file does not have a basename, e.g. .gitignore, the entirety of the filename including the leading . should be specified.

A list of strings, also defining file extensions this syntax should be used for. These extensions are not listed in file dialogs.

When a file is opened without a recognized extension, the first line of the file contents will be tested against this regex, to see if the syntax should be applied.

The default scope assigned to all text in the file

A string of a base syntax this syntax should inherit from. The base syntax must be specified using its package path, e.g. Packages/JavaScript/JavaScript.sublime-syntax. See Inheritance for an overview of syntax inheritance.

Hidden syntax definitions won’t be shown in the menu, but can still be assigned by plugins, or included by other syntax definitions.

Variables must be defined at the top level of the .sublime-syntax file, and are referenced within regxes via {{varname}}. Variables may themselves include other variables. Note that any text that doesn’t match {{[A-Za-z0-9_]+}} won’t be considered as a variable, so regexes can still include literal {{ characters, for example.
https://www.sublimetext.com/docs/syntax.html#variables

sublime-syntax

Provide a JSON object that satisfies the schema "sublime-syntax". Here are the required top‑level fields: scope, contexts. Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/swa-cli.config.json","properties":{"configurations":{"additionalProperties":{"allOf":[{"properties":{"apiLocation":{"description":"API folder or Azure Functions emulator address","type":"string"},"apiPort":{"description":"API backend port","type":"number"},"apiPrefix":{"enum":["api"],"type":"string"},"appArtifactLocation":{"description":"Location of the build output directory relative to the appLocation","type":"string"},"appLocation":{"description":"Location for the static app source code","type":"string"},"build":{"type":"boolean"},"customUrlScheme":{"type":"string"},"devserverTimeout":{"description":"Time to wait(in ms) for the dev server to start","type":"number"},"host":{"description":"CLI host address","type":"string"},"overridableErrorCode":{"items":{"type":"number"},"type":"array"},"port":{"description":"set the cli port","type":"number"},"run":{"description":"Run a command at startup","type":"string"},"ssl":{"description":"Serve the app and API over HTTPS","type":"boolean"},"sslCert":{"description":"SSL certificate (.crt) to use for serving HTTPS","type":"string"},"sslKey":{"description":"SSL key (.key) to use for serving HTTPS","type":"string"},"swaConfigFilename":{"enum":["staticwebapp.config.json"],"type":"string"},"swaConfigFilenameLegacy":{"enum":["routes.json"],"type":"string"},"swaConfigLocation":{"type":"string"},"verbose":{"type":"string"}},"type":"object"},{"properties":{"context":{"type":"string"}},"type":"object"}]},"type":"object"}},"type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "swa-cli.config". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

API folder or Azure Functions emulator address

API backend port

Location of the build output directory relative to the appLocation

Location for the static app source code

Time to wait(in ms) for the dev server to start

CLI host address

set the cli port

Run a command at startup

Serve the app and API over HTTPS

SSL certificate (.crt) to use for serving HTTPS

SSL key (.key) to use for serving HTTPS

Provide a JSON object that satisfies the schema "swa-cli.config". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.