@shibanet0/datamitsu-config 0.0.3-alpha-21 → 0.0.3-alpha-23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/datamitsu.config.js +831 -720
  2. package/dist/apps/knip/index.js +1 -2
  3. package/dist/datamitsu-api/index.d.ts +1 -0
  4. package/dist/datamitsu-api/index.js +2 -0
  5. package/dist/datamitsu-config/__tests__/ignore.test.d.ts +1 -0
  6. package/dist/datamitsu-config/__tests__/project.test.d.ts +1 -0
  7. package/dist/datamitsu-config/__tests__/tools.test.d.ts +1 -0
  8. package/dist/datamitsu-config/agents.md.d.ts +8 -1
  9. package/dist/datamitsu-config/inline-config/commitlint.d.ts +1 -1
  10. package/dist/datamitsu-config/inline-config/cspell.d.ts +1 -1
  11. package/dist/datamitsu-config/inline-config/eslint.d.ts +1 -1
  12. package/dist/datamitsu-config/inline-config/knip.d.ts +1 -1
  13. package/dist/datamitsu-config/inline-config/oxlint_configuration_schema.d.ts +1 -1
  14. package/dist/datamitsu-config/inline-config/prettier.d.ts +1 -1
  15. package/dist/s0/cmd/pulumi/constants.d.ts +1 -1
  16. package/dist/s0/index.js +38 -48
  17. package/dist/type-fest/globals/index.js +1 -0
  18. package/dist/type-fest/index.js +1 -0
  19. package/dist/utils/typeGuards.d.ts +0 -4
  20. package/package.json +6 -2
  21. package/dist/binary/index.js +0 -0
  22. package/dist/clean-package/index.d.ts +0 -27
  23. /package/dist/{binary/index.d.ts → apps/eslint/__tests__/index.test.d.ts} +0 -0
  24. /package/dist/datamitsu-config/{app.commitlint.d.ts → apps/commitlint.d.ts} +0 -0
  25. /package/dist/datamitsu-config/{app.commitlint.deps.d.ts → apps/commitlint.deps.d.ts} +0 -0
  26. /package/dist/datamitsu-config/{app.cspell.d.ts → apps/cspell.d.ts} +0 -0
  27. /package/dist/datamitsu-config/{app.cspell.deps.d.ts → apps/cspell.deps.d.ts} +0 -0
  28. /package/dist/datamitsu-config/{app.eslint.d.ts → apps/eslint.d.ts} +0 -0
  29. /package/dist/datamitsu-config/{app.eslint.deps.d.ts → apps/eslint.deps.d.ts} +0 -0
  30. /package/dist/datamitsu-config/{app.knip.d.ts → apps/knip.d.ts} +0 -0
  31. /package/dist/datamitsu-config/{app.prettier.d.ts → apps/prettier.d.ts} +0 -0
  32. /package/dist/datamitsu-config/{app.prettier.deps.d.ts → apps/prettier.deps.d.ts} +0 -0
@@ -1 +1 @@
1
- export declare const data = "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"title\":\"Oxlintrc\",\"description\":\"Oxlint Configuration File\\n\\nThis configuration is aligned with ESLint v8's configuration schema (`eslintrc.json`).\\n\\nUsage: `oxlint -c oxlintrc.json --import-plugin`\\n\\n::: danger NOTE\\n\\nOnly the `.json` format is supported. You can use comments in configuration files.\\n\\n:::\\n\\nExample\\n\\n`.oxlintrc.json`\\n\\n```json\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"plugins\\\": [\\\"import\\\", \\\"typescript\\\", \\\"unicorn\\\"],\\n\\\"env\\\": {\\n\\\"browser\\\": true\\n},\\n\\\"globals\\\": {\\n\\\"foo\\\": \\\"readonly\\\"\\n},\\n\\\"settings\\\": {\\n},\\n\\\"rules\\\": {\\n\\\"eqeqeq\\\": \\\"warn\\\",\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"react/self-closing-comp\\\": [\\\"error\\\", { \\\"html\\\": false }]\\n},\\n\\\"overrides\\\": [\\n{\\n\\\"files\\\": [\\\"*.test.ts\\\", \\\"*.spec.ts\\\"],\\n\\\"rules\\\": {\\n\\\"@typescript-eslint/no-explicit-any\\\": \\\"off\\\"\\n}\\n}\\n]\\n}\\n```\",\"type\":\"object\",\"properties\":{\"$schema\":{\"description\":\"Schema URI for editor tooling.\",\"type\":[\"string\",\"null\"],\"markdownDescription\":\"Schema URI for editor tooling.\"},\"categories\":{\"default\":{},\"allOf\":[{\"$ref\":\"#/definitions/OxlintCategories\"}]},\"env\":{\"description\":\"Environments enable and disable collections of global variables.\",\"default\":{\"builtin\":true},\"allOf\":[{\"$ref\":\"#/definitions/OxlintEnv\"}],\"markdownDescription\":\"Environments enable and disable collections of global variables.\"},\"extends\":{\"description\":\"Paths of configuration files that this configuration file extends (inherits from). The files\\nare resolved relative to the location of the configuration file that contains the `extends`\\nproperty. The configuration files are merged from the first to the last, with the last file\\noverriding the previous ones.\",\"type\":\"array\",\"items\":{\"type\":\"string\"},\"markdownDescription\":\"Paths of configuration files that this configuration file extends (inherits from). The files\\nare resolved relative to the location of the configuration file that contains the `extends`\\nproperty. The configuration files are merged from the first to the last, with the last file\\noverriding the previous ones.\"},\"globals\":{\"description\":\"Enabled or disabled specific global variables.\",\"default\":{},\"allOf\":[{\"$ref\":\"#/definitions/OxlintGlobals\"}],\"markdownDescription\":\"Enabled or disabled specific global variables.\"},\"ignorePatterns\":{\"description\":\"Globs to ignore during linting. These are resolved from the configuration file path.\",\"default\":[],\"type\":\"array\",\"items\":{\"type\":\"string\"},\"markdownDescription\":\"Globs to ignore during linting. These are resolved from the configuration file path.\"},\"jsPlugins\":{\"description\":\"JS plugins, allows usage of ESLint plugins with Oxlint.\\n\\nRead more about JS plugins in\\n[the docs](https://oxc.rs/docs/guide/usage/linter/js-plugins.html).\\n\\nNote: JS plugins are experimental and not subject to semver.\\nThey are not supported in the language server (and thus editor integrations) at present.\",\"anyOf\":[{\"type\":\"null\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ExternalPluginEntry\"},\"uniqueItems\":true}],\"markdownDescription\":\"JS plugins, allows usage of ESLint plugins with Oxlint.\\n\\nRead more about JS plugins in\\n[the docs](https://oxc.rs/docs/guide/usage/linter/js-plugins.html).\\n\\nNote: JS plugins are experimental and not subject to semver.\\nThey are not supported in the language server (and thus editor integrations) at present.\"},\"overrides\":{\"description\":\"Add, remove, or otherwise reconfigure rules for specific files or groups of files.\",\"allOf\":[{\"$ref\":\"#/definitions/OxlintOverrides\"}],\"markdownDescription\":\"Add, remove, or otherwise reconfigure rules for specific files or groups of files.\"},\"plugins\":{\"description\":\"Enabled built-in plugins for Oxlint.\\nYou can view the list of available plugins on\\n[the website](https://oxc.rs/docs/guide/usage/linter/plugins.html#supported-plugins).\\n\\nNOTE: Setting the `plugins` field will overwrite the base set of plugins.\\nThe `plugins` array should reflect all of the plugins you want to use.\",\"default\":null,\"anyOf\":[{\"$ref\":\"#/definitions/LintPlugins\"},{\"type\":\"null\"}],\"markdownDescription\":\"Enabled built-in plugins for Oxlint.\\nYou can view the list of available plugins on\\n[the website](https://oxc.rs/docs/guide/usage/linter/plugins.html#supported-plugins).\\n\\nNOTE: Setting the `plugins` field will overwrite the base set of plugins.\\nThe `plugins` array should reflect all of the plugins you want to use.\"},\"rules\":{\"description\":\"Example\\n\\n`.oxlintrc.json`\\n\\n```json\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"rules\\\": {\\n\\\"eqeqeq\\\": \\\"warn\\\",\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"prefer-const\\\": [\\\"error\\\", { \\\"ignoreReadBeforeAssign\\\": true }]\\n}\\n}\\n```\\n\\nSee [Oxlint Rules](https://oxc.rs/docs/guide/usage/linter/rules.html) for the list of\\nrules.\",\"default\":{},\"allOf\":[{\"$ref\":\"#/definitions/OxlintRules\"}],\"markdownDescription\":\"Example\\n\\n`.oxlintrc.json`\\n\\n```json\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"rules\\\": {\\n\\\"eqeqeq\\\": \\\"warn\\\",\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"prefer-const\\\": [\\\"error\\\", { \\\"ignoreReadBeforeAssign\\\": true }]\\n}\\n}\\n```\\n\\nSee [Oxlint Rules](https://oxc.rs/docs/guide/usage/linter/rules.html) for the list of\\nrules.\"},\"settings\":{\"default\":{\"jsx-a11y\":{\"polymorphicPropName\":null,\"components\":{},\"attributes\":{}},\"next\":{\"rootDir\":[]},\"react\":{\"formComponents\":[],\"linkComponents\":[],\"version\":null,\"componentWrapperFunctions\":[]},\"jsdoc\":{\"ignorePrivate\":false,\"ignoreInternal\":false,\"ignoreReplacesDocs\":true,\"overrideReplacesDocs\":true,\"augmentsExtendsReplacesDocs\":false,\"implementsReplacesDocs\":false,\"exemptDestructuredRootsFromChecks\":false,\"tagNamePreference\":{}},\"vitest\":{\"typecheck\":false}},\"allOf\":[{\"$ref\":\"#/definitions/OxlintSettings\"}]}},\"additionalProperties\":false,\"allowComments\":true,\"allowTrailingCommas\":true,\"definitions\":{\"AllowWarnDeny\":{\"oneOf\":[{\"description\":\"Oxlint rule.\\n- \\\"allow\\\" or \\\"off\\\": Turn off the rule.\\n- \\\"warn\\\": Turn the rule on as a warning (doesn't affect exit code).\\n- \\\"error\\\" or \\\"deny\\\": Turn the rule on as an error (will exit with a failure code).\",\"type\":\"string\",\"enum\":[\"allow\",\"off\",\"warn\",\"error\",\"deny\"],\"markdownDescription\":\"Oxlint rule.\\n- \\\"allow\\\" or \\\"off\\\": Turn off the rule.\\n- \\\"warn\\\": Turn the rule on as a warning (doesn't affect exit code).\\n- \\\"error\\\" or \\\"deny\\\": Turn the rule on as an error (will exit with a failure code).\"},{\"description\":\"Oxlint rule.\\n \\n- 0: Turn off the rule.\\n- 1: Turn the rule on as a warning (doesn't affect exit code).\\n- 2: Turn the rule on as an error (will exit with a failure code).\",\"type\":\"integer\",\"format\":\"uint32\",\"maximum\":2,\"minimum\":0,\"markdownDescription\":\"Oxlint rule.\\n \\n- 0: Turn off the rule.\\n- 1: Turn the rule on as a warning (doesn't affect exit code).\\n- 2: Turn the rule on as an error (will exit with a failure code).\"}]},\"CustomComponent\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"object\",\"required\":[\"attribute\",\"name\"],\"properties\":{\"attribute\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}}},{\"type\":\"object\",\"required\":[\"attributes\",\"name\"],\"properties\":{\"attributes\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"name\":{\"type\":\"string\"}}}]},\"DummyRule\":{\"anyOf\":[{\"$ref\":\"#/definitions/AllowWarnDeny\"},{\"type\":\"array\",\"items\":true}]},\"DummyRuleMap\":{\"description\":\"See [Oxlint Rules](https://oxc.rs/docs/guide/usage/linter/rules.html)\",\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/DummyRule\"},\"markdownDescription\":\"See [Oxlint Rules](https://oxc.rs/docs/guide/usage/linter/rules.html)\"},\"ExternalPluginEntry\":{\"anyOf\":[{\"description\":\"Path or package name of the plugin\",\"type\":\"string\",\"markdownDescription\":\"Path or package name of the plugin\"},{\"description\":\"Plugin with custom name/alias\",\"type\":\"object\",\"required\":[\"name\",\"specifier\"],\"properties\":{\"name\":{\"description\":\"Custom name/alias for the plugin.\\n\\nNote: The following plugin names are reserved because they are implemented natively in Rust within oxlint and cannot be used for JS plugins:\\n- react (includes react-hooks)\\n- unicorn\\n- typescript (includes @typescript-eslint)\\n- oxc\\n- import (includes import-x)\\n- jsdoc\\n- jest\\n- vitest\\n- jsx-a11y\\n- nextjs\\n- react-perf\\n- promise\\n- node\\n- vue\\n- eslint\\n\\nIf you need to use the JavaScript version of any of these plugins, provide a custom alias to avoid conflicts.\",\"type\":\"string\",\"markdownDescription\":\"Custom name/alias for the plugin.\\n\\nNote: The following plugin names are reserved because they are implemented natively in Rust within oxlint and cannot be used for JS plugins:\\n- react (includes react-hooks)\\n- unicorn\\n- typescript (includes @typescript-eslint)\\n- oxc\\n- import (includes import-x)\\n- jsdoc\\n- jest\\n- vitest\\n- jsx-a11y\\n- nextjs\\n- react-perf\\n- promise\\n- node\\n- vue\\n- eslint\\n\\nIf you need to use the JavaScript version of any of these plugins, provide a custom alias to avoid conflicts.\"},\"specifier\":{\"description\":\"Path or package name of the plugin\",\"type\":\"string\",\"markdownDescription\":\"Path or package name of the plugin\"}},\"additionalProperties\":false,\"markdownDescription\":\"Plugin with custom name/alias\"}]},\"GlobSet\":{\"description\":\"A set of glob patterns.\",\"type\":\"array\",\"items\":{\"type\":\"string\"},\"markdownDescription\":\"A set of glob patterns.\"},\"GlobalValue\":{\"type\":\"string\",\"enum\":[\"readonly\",\"writable\",\"off\"]},\"JSDocPluginSettings\":{\"type\":\"object\",\"properties\":{\"augmentsExtendsReplacesDocs\":{\"description\":\"Only for `require-(yields|returns|description|example|param|throws)` rule\",\"default\":false,\"type\":\"boolean\",\"markdownDescription\":\"Only for `require-(yields|returns|description|example|param|throws)` rule\"},\"exemptDestructuredRootsFromChecks\":{\"description\":\"Only for `require-param-type` and `require-param-description` rule\",\"default\":false,\"type\":\"boolean\",\"markdownDescription\":\"Only for `require-param-type` and `require-param-description` rule\"},\"ignoreInternal\":{\"description\":\"For all rules but NOT apply to `empty-tags` rule\",\"default\":false,\"type\":\"boolean\",\"markdownDescription\":\"For all rules but NOT apply to `empty-tags` rule\"},\"ignorePrivate\":{\"description\":\"For all rules but NOT apply to `check-access` and `empty-tags` rule\",\"default\":false,\"type\":\"boolean\",\"markdownDescription\":\"For all rules but NOT apply to `check-access` and `empty-tags` rule\"},\"ignoreReplacesDocs\":{\"description\":\"Only for `require-(yields|returns|description|example|param|throws)` rule\",\"default\":true,\"type\":\"boolean\",\"markdownDescription\":\"Only for `require-(yields|returns|description|example|param|throws)` rule\"},\"implementsReplacesDocs\":{\"description\":\"Only for `require-(yields|returns|description|example|param|throws)` rule\",\"default\":false,\"type\":\"boolean\",\"markdownDescription\":\"Only for `require-(yields|returns|description|example|param|throws)` rule\"},\"overrideReplacesDocs\":{\"description\":\"Only for `require-(yields|returns|description|example|param|throws)` rule\",\"default\":true,\"type\":\"boolean\",\"markdownDescription\":\"Only for `require-(yields|returns|description|example|param|throws)` rule\"},\"tagNamePreference\":{\"default\":{},\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/TagNamePreference\"}}}},\"JSXA11yPluginSettings\":{\"description\":\"Configure JSX A11y plugin rules.\\n\\nSee\\n[eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#configurations)'s\\nconfiguration for a full reference.\",\"type\":\"object\",\"properties\":{\"attributes\":{\"description\":\"Map of attribute names to their DOM equivalents.\\nThis is useful for non-React frameworks that use different attribute names.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"jsx-a11y\\\": {\\n\\\"attributes\\\": {\\n\\\"for\\\": [\\\"htmlFor\\\", \\\"for\\\"]\\n}\\n}\\n}\\n}\\n```\",\"default\":{},\"type\":\"object\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"markdownDescription\":\"Map of attribute names to their DOM equivalents.\\nThis is useful for non-React frameworks that use different attribute names.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"jsx-a11y\\\": {\\n\\\"attributes\\\": {\\n\\\"for\\\": [\\\"htmlFor\\\", \\\"for\\\"]\\n}\\n}\\n}\\n}\\n```\"},\"components\":{\"description\":\"To have your custom components be checked as DOM elements, you can\\nprovide a mapping of your component names to the DOM element name.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"jsx-a11y\\\": {\\n\\\"components\\\": {\\n\\\"Link\\\": \\\"a\\\",\\n\\\"IconButton\\\": \\\"button\\\"\\n}\\n}\\n}\\n}\\n```\",\"default\":{},\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"},\"markdownDescription\":\"To have your custom components be checked as DOM elements, you can\\nprovide a mapping of your component names to the DOM element name.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"jsx-a11y\\\": {\\n\\\"components\\\": {\\n\\\"Link\\\": \\\"a\\\",\\n\\\"IconButton\\\": \\\"button\\\"\\n}\\n}\\n}\\n}\\n```\"},\"polymorphicPropName\":{\"description\":\"An optional setting that define the prop your code uses to create polymorphic components.\\nThis setting will be used to determine the element type in rules that\\nrequire semantic context.\\n\\nFor example, if you set the `polymorphicPropName` to `as`, then this element:\\n\\n```jsx\\n<Box as=\\\"h3\\\">Hello</Box>\\n```\\n\\nWill be treated as an `h3`. If not set, this component will be treated\\nas a `Box`.\",\"type\":[\"string\",\"null\"],\"markdownDescription\":\"An optional setting that define the prop your code uses to create polymorphic components.\\nThis setting will be used to determine the element type in rules that\\nrequire semantic context.\\n\\nFor example, if you set the `polymorphicPropName` to `as`, then this element:\\n\\n```jsx\\n<Box as=\\\"h3\\\">Hello</Box>\\n```\\n\\nWill be treated as an `h3`. If not set, this component will be treated\\nas a `Box`.\"}},\"markdownDescription\":\"Configure JSX A11y plugin rules.\\n\\nSee\\n[eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#configurations)'s\\nconfiguration for a full reference.\"},\"LintPluginOptionsSchema\":{\"type\":\"string\",\"enum\":[\"eslint\",\"react\",\"unicorn\",\"typescript\",\"oxc\",\"import\",\"jsdoc\",\"jest\",\"vitest\",\"jsx-a11y\",\"nextjs\",\"react-perf\",\"promise\",\"node\",\"vue\"]},\"LintPlugins\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"$ref\":\"#/definitions/LintPluginOptionsSchema\"}]}},\"NextPluginSettings\":{\"description\":\"Configure Next.js plugin rules.\",\"type\":\"object\",\"properties\":{\"rootDir\":{\"description\":\"The root directory of the Next.js project.\\n\\nThis is particularly useful when you have a monorepo and your Next.js\\nproject is in a subfolder.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"next\\\": {\\n\\\"rootDir\\\": \\\"apps/dashboard/\\\"\\n}\\n}\\n}\\n```\",\"default\":[],\"allOf\":[{\"$ref\":\"#/definitions/OneOrMany_for_String\"}],\"markdownDescription\":\"The root directory of the Next.js project.\\n\\nThis is particularly useful when you have a monorepo and your Next.js\\nproject is in a subfolder.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"next\\\": {\\n\\\"rootDir\\\": \\\"apps/dashboard/\\\"\\n}\\n}\\n}\\n```\"}},\"markdownDescription\":\"Configure Next.js plugin rules.\"},\"OneOrMany_for_String\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]},\"OxlintCategories\":{\"title\":\"Rule Categories\",\"description\":\"Configure an entire category of rules all at once.\\n\\nRules enabled or disabled this way will be overwritten by individual rules in the `rules` field.\\n\\nExample\\n```json\\n{\\n \\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n \\\"categories\\\": {\\n \\\"correctness\\\": \\\"warn\\\"\\n },\\n \\\"rules\\\": {\\n \\\"eslint/no-unused-vars\\\": \\\"error\\\"\\n }\\n}\\n```\",\"examples\":[{\"correctness\":\"warn\"}],\"type\":\"object\",\"properties\":{\"correctness\":{\"$ref\":\"#/definitions/AllowWarnDeny\"},\"nursery\":{\"$ref\":\"#/definitions/AllowWarnDeny\"},\"pedantic\":{\"$ref\":\"#/definitions/AllowWarnDeny\"},\"perf\":{\"$ref\":\"#/definitions/AllowWarnDeny\"},\"restriction\":{\"$ref\":\"#/definitions/AllowWarnDeny\"},\"style\":{\"$ref\":\"#/definitions/AllowWarnDeny\"},\"suspicious\":{\"$ref\":\"#/definitions/AllowWarnDeny\"}},\"additionalProperties\":false,\"markdownDescription\":\"Configure an entire category of rules all at once.\\n\\nRules enabled or disabled this way will be overwritten by individual rules in the `rules` field.\\n\\nExample\\n```json\\n{\\n \\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n \\\"categories\\\": {\\n \\\"correctness\\\": \\\"warn\\\"\\n },\\n \\\"rules\\\": {\\n \\\"eslint/no-unused-vars\\\": \\\"error\\\"\\n }\\n}\\n```\"},\"OxlintEnv\":{\"description\":\"Predefine global variables.\\n\\nEnvironments specify what global variables are predefined.\\nSee [ESLint's list of environments](https://eslint.org/docs/v8.x/use/configure/language-options#specifying-environments)\\nfor what environments are available and what each one provides.\",\"type\":\"object\",\"additionalProperties\":{\"type\":\"boolean\"},\"markdownDescription\":\"Predefine global variables.\\n\\nEnvironments specify what global variables are predefined.\\nSee [ESLint's list of environments](https://eslint.org/docs/v8.x/use/configure/language-options#specifying-environments)\\nfor what environments are available and what each one provides.\"},\"OxlintGlobals\":{\"description\":\"Add or remove global variables.\\n\\nFor each global variable, set the corresponding value equal to `\\\"writable\\\"`\\nto allow the variable to be overwritten or `\\\"readonly\\\"` to disallow overwriting.\\n\\nGlobals can be disabled by setting their value to `\\\"off\\\"`. For example, in\\nan environment where most Es2015 globals are available but `Promise` is unavailable,\\nyou might use this config:\\n\\n```json\\n\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"env\\\": {\\n\\\"es6\\\": true\\n},\\n\\\"globals\\\": {\\n\\\"Promise\\\": \\\"off\\\"\\n}\\n}\\n\\n```\\n\\nYou may also use `\\\"readable\\\"` or `false` to represent `\\\"readonly\\\"`, and\\n`\\\"writeable\\\"` or `true` to represent `\\\"writable\\\"`.\",\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/GlobalValue\"},\"markdownDescription\":\"Add or remove global variables.\\n\\nFor each global variable, set the corresponding value equal to `\\\"writable\\\"`\\nto allow the variable to be overwritten or `\\\"readonly\\\"` to disallow overwriting.\\n\\nGlobals can be disabled by setting their value to `\\\"off\\\"`. For example, in\\nan environment where most Es2015 globals are available but `Promise` is unavailable,\\nyou might use this config:\\n\\n```json\\n\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"env\\\": {\\n\\\"es6\\\": true\\n},\\n\\\"globals\\\": {\\n\\\"Promise\\\": \\\"off\\\"\\n}\\n}\\n\\n```\\n\\nYou may also use `\\\"readable\\\"` or `false` to represent `\\\"readonly\\\"`, and\\n`\\\"writeable\\\"` or `true` to represent `\\\"writable\\\"`.\"},\"OxlintOverride\":{\"type\":\"object\",\"required\":[\"files\"],\"properties\":{\"env\":{\"description\":\"Environments enable and disable collections of global variables.\",\"anyOf\":[{\"$ref\":\"#/definitions/OxlintEnv\"},{\"type\":\"null\"}],\"markdownDescription\":\"Environments enable and disable collections of global variables.\"},\"files\":{\"description\":\"A list of glob patterns to override.\\n\\n## Example\\n`[ \\\"*.test.ts\\\", \\\"*.spec.ts\\\" ]`\",\"allOf\":[{\"$ref\":\"#/definitions/GlobSet\"}],\"markdownDescription\":\"A list of glob patterns to override.\\n\\n## Example\\n`[ \\\"*.test.ts\\\", \\\"*.spec.ts\\\" ]`\"},\"globals\":{\"description\":\"Enabled or disabled specific global variables.\",\"anyOf\":[{\"$ref\":\"#/definitions/OxlintGlobals\"},{\"type\":\"null\"}],\"markdownDescription\":\"Enabled or disabled specific global variables.\"},\"jsPlugins\":{\"description\":\"JS plugins for this override, allows usage of ESLint plugins with Oxlint.\\n\\nRead more about JS plugins in\\n[the docs](https://oxc.rs/docs/guide/usage/linter/js-plugins.html).\\n\\nNote: JS plugins are experimental and not subject to semver.\\nThey are not supported in the language server (and thus editor integrations) at present.\",\"anyOf\":[{\"type\":\"null\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ExternalPluginEntry\"},\"uniqueItems\":true}],\"markdownDescription\":\"JS plugins for this override, allows usage of ESLint plugins with Oxlint.\\n\\nRead more about JS plugins in\\n[the docs](https://oxc.rs/docs/guide/usage/linter/js-plugins.html).\\n\\nNote: JS plugins are experimental and not subject to semver.\\nThey are not supported in the language server (and thus editor integrations) at present.\"},\"plugins\":{\"description\":\"Optionally change what plugins are enabled for this override. When\\nomitted, the base config's plugins are used.\",\"default\":null,\"anyOf\":[{\"$ref\":\"#/definitions/LintPlugins\"},{\"type\":\"null\"}],\"markdownDescription\":\"Optionally change what plugins are enabled for this override. When\\nomitted, the base config's plugins are used.\"},\"rules\":{\"default\":{},\"allOf\":[{\"$ref\":\"#/definitions/OxlintRules\"}]}},\"additionalProperties\":false},\"OxlintOverrides\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/OxlintOverride\"}},\"OxlintRules\":{\"$ref\":\"#/definitions/DummyRuleMap\"},\"OxlintSettings\":{\"title\":\"Oxlint Plugin Settings\",\"description\":\"Configure the behavior of linter plugins.\\n\\nHere's an example if you're using Next.js in a monorepo:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"next\\\": {\\n\\\"rootDir\\\": \\\"apps/dashboard/\\\"\\n},\\n\\\"react\\\": {\\n\\\"linkComponents\\\": [\\n{ \\\"name\\\": \\\"Link\\\", \\\"linkAttribute\\\": \\\"to\\\" }\\n]\\n},\\n\\\"jsx-a11y\\\": {\\n\\\"components\\\": {\\n\\\"Link\\\": \\\"a\\\",\\n\\\"Button\\\": \\\"button\\\"\\n}\\n}\\n}\\n}\\n```\",\"type\":\"object\",\"properties\":{\"jsdoc\":{\"default\":{\"ignorePrivate\":false,\"ignoreInternal\":false,\"ignoreReplacesDocs\":true,\"overrideReplacesDocs\":true,\"augmentsExtendsReplacesDocs\":false,\"implementsReplacesDocs\":false,\"exemptDestructuredRootsFromChecks\":false,\"tagNamePreference\":{}},\"allOf\":[{\"$ref\":\"#/definitions/JSDocPluginSettings\"}]},\"jsx-a11y\":{\"default\":{\"polymorphicPropName\":null,\"components\":{},\"attributes\":{}},\"allOf\":[{\"$ref\":\"#/definitions/JSXA11yPluginSettings\"}]},\"next\":{\"default\":{\"rootDir\":[]},\"allOf\":[{\"$ref\":\"#/definitions/NextPluginSettings\"}]},\"react\":{\"default\":{\"formComponents\":[],\"linkComponents\":[],\"version\":null,\"componentWrapperFunctions\":[]},\"allOf\":[{\"$ref\":\"#/definitions/ReactPluginSettings\"}]},\"vitest\":{\"default\":{\"typecheck\":false},\"allOf\":[{\"$ref\":\"#/definitions/VitestPluginSettings\"}]}},\"markdownDescription\":\"Configure the behavior of linter plugins.\\n\\nHere's an example if you're using Next.js in a monorepo:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"next\\\": {\\n\\\"rootDir\\\": \\\"apps/dashboard/\\\"\\n},\\n\\\"react\\\": {\\n\\\"linkComponents\\\": [\\n{ \\\"name\\\": \\\"Link\\\", \\\"linkAttribute\\\": \\\"to\\\" }\\n]\\n},\\n\\\"jsx-a11y\\\": {\\n\\\"components\\\": {\\n\\\"Link\\\": \\\"a\\\",\\n\\\"Button\\\": \\\"button\\\"\\n}\\n}\\n}\\n}\\n```\"},\"ReactPluginSettings\":{\"description\":\"Configure React plugin rules.\\n\\nDerived from [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react#configuration-legacy-eslintrc-)\",\"type\":\"object\",\"properties\":{\"componentWrapperFunctions\":{\"description\":\"Functions that wrap React components and should be treated as HOCs.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"componentWrapperFunctions\\\": [\\\"observer\\\", \\\"withRouter\\\"]\\n}\\n}\\n}\\n```\",\"default\":[],\"type\":\"array\",\"items\":{\"type\":\"string\"},\"markdownDescription\":\"Functions that wrap React components and should be treated as HOCs.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"componentWrapperFunctions\\\": [\\\"observer\\\", \\\"withRouter\\\"]\\n}\\n}\\n}\\n```\"},\"formComponents\":{\"description\":\"Components used as alternatives to `<form>` for forms, such as `<Formik>`.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"formComponents\\\": [\\n\\\"CustomForm\\\",\\n// OtherForm is considered a form component and has an endpoint attribute\\n{ \\\"name\\\": \\\"OtherForm\\\", \\\"formAttribute\\\": \\\"endpoint\\\" },\\n// allows specifying multiple properties if necessary\\n{ \\\"name\\\": \\\"Form\\\", \\\"formAttribute\\\": [\\\"registerEndpoint\\\", \\\"loginEndpoint\\\"] }\\n]\\n}\\n}\\n}\\n```\",\"default\":[],\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/CustomComponent\"},\"markdownDescription\":\"Components used as alternatives to `<form>` for forms, such as `<Formik>`.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"formComponents\\\": [\\n\\\"CustomForm\\\",\\n// OtherForm is considered a form component and has an endpoint attribute\\n{ \\\"name\\\": \\\"OtherForm\\\", \\\"formAttribute\\\": \\\"endpoint\\\" },\\n// allows specifying multiple properties if necessary\\n{ \\\"name\\\": \\\"Form\\\", \\\"formAttribute\\\": [\\\"registerEndpoint\\\", \\\"loginEndpoint\\\"] }\\n]\\n}\\n}\\n}\\n```\"},\"linkComponents\":{\"description\":\"Components used as alternatives to `<a>` for linking, such as `<Link>`.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"linkComponents\\\": [\\n\\\"HyperLink\\\",\\n// Use `linkAttribute` for components that use a different prop name\\n// than `href`.\\n{ \\\"name\\\": \\\"MyLink\\\", \\\"linkAttribute\\\": \\\"to\\\" },\\n// allows specifying multiple properties if necessary\\n{ \\\"name\\\": \\\"Link\\\", \\\"linkAttribute\\\": [\\\"to\\\", \\\"href\\\"] }\\n]\\n}\\n}\\n}\\n```\",\"default\":[],\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/CustomComponent\"},\"markdownDescription\":\"Components used as alternatives to `<a>` for linking, such as `<Link>`.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"linkComponents\\\": [\\n\\\"HyperLink\\\",\\n// Use `linkAttribute` for components that use a different prop name\\n// than `href`.\\n{ \\\"name\\\": \\\"MyLink\\\", \\\"linkAttribute\\\": \\\"to\\\" },\\n// allows specifying multiple properties if necessary\\n{ \\\"name\\\": \\\"Link\\\", \\\"linkAttribute\\\": [\\\"to\\\", \\\"href\\\"] }\\n]\\n}\\n}\\n}\\n```\"},\"version\":{\"description\":\"React version to use for version-specific rules.\\n\\nAccepts semver versions (e.g., \\\"18.2.0\\\", \\\"17.0\\\").\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"version\\\": \\\"18.2.0\\\"\\n}\\n}\\n}\\n```\",\"default\":null,\"type\":[\"string\",\"null\"],\"pattern\":\"^[1-9]\\\\d*(\\\\.(0|[1-9]\\\\d*))?(\\\\.(0|[1-9]\\\\d*))?$\",\"markdownDescription\":\"React version to use for version-specific rules.\\n\\nAccepts semver versions (e.g., \\\"18.2.0\\\", \\\"17.0\\\").\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"version\\\": \\\"18.2.0\\\"\\n}\\n}\\n}\\n```\"}},\"markdownDescription\":\"Configure React plugin rules.\\n\\nDerived from [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react#configuration-legacy-eslintrc-)\"},\"TagNamePreference\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"object\",\"required\":[\"message\",\"replacement\"],\"properties\":{\"message\":{\"type\":\"string\"},\"replacement\":{\"type\":\"string\"}}},{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"message\":{\"type\":\"string\"}}},{\"type\":\"boolean\"}]},\"VitestPluginSettings\":{\"description\":\"Configure Vitest plugin rules.\\n\\nSee [eslint-plugin-vitest](https://github.com/vitest-dev/eslint-plugin-vitest)'s\\nconfiguration for a full reference.\",\"type\":\"object\",\"properties\":{\"typecheck\":{\"description\":\"Whether to enable typecheck mode for Vitest rules.\\nWhen enabled, some rules will skip certain checks for describe blocks\\nto accommodate TypeScript type checking scenarios.\",\"default\":false,\"type\":\"boolean\",\"markdownDescription\":\"Whether to enable typecheck mode for Vitest rules.\\nWhen enabled, some rules will skip certain checks for describe blocks\\nto accommodate TypeScript type checking scenarios.\"}},\"markdownDescription\":\"Configure Vitest plugin rules.\\n\\nSee [eslint-plugin-vitest](https://github.com/vitest-dev/eslint-plugin-vitest)'s\\nconfiguration for a full reference.\"}},\"markdownDescription\":\"Oxlint Configuration File\\n\\nThis configuration is aligned with ESLint v8's configuration schema (`eslintrc.json`).\\n\\nUsage: `oxlint -c oxlintrc.json --import-plugin`\\n\\n::: danger NOTE\\n\\nOnly the `.json` format is supported. You can use comments in configuration files.\\n\\n:::\\n\\nExample\\n\\n`.oxlintrc.json`\\n\\n```json\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"plugins\\\": [\\\"import\\\", \\\"typescript\\\", \\\"unicorn\\\"],\\n\\\"env\\\": {\\n\\\"browser\\\": true\\n},\\n\\\"globals\\\": {\\n\\\"foo\\\": \\\"readonly\\\"\\n},\\n\\\"settings\\\": {\\n},\\n\\\"rules\\\": {\\n\\\"eqeqeq\\\": \\\"warn\\\",\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"react/self-closing-comp\\\": [\\\"error\\\", { \\\"html\\\": false }]\\n},\\n\\\"overrides\\\": [\\n{\\n\\\"files\\\": [\\\"*.test.ts\\\", \\\"*.spec.ts\\\"],\\n\\\"rules\\\": {\\n\\\"@typescript-eslint/no-explicit-any\\\": \\\"off\\\"\\n}\\n}\\n]\\n}\\n```\"}";
1
+ export declare const data = "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Oxlintrc\",\n \"description\": \"Oxlint Configuration File\\n\\nThis configuration is aligned with ESLint v8's configuration schema (`eslintrc.json`).\\n\\nUsage: `oxlint -c oxlintrc.json`\\n\\nExample\\n\\n`.oxlintrc.json`\\n\\n```json\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"plugins\\\": [\\\"import\\\", \\\"typescript\\\", \\\"unicorn\\\"],\\n\\\"env\\\": {\\n\\\"browser\\\": true\\n},\\n\\\"globals\\\": {\\n\\\"foo\\\": \\\"readonly\\\"\\n},\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"version\\\": \\\"18.2.0\\\"\\n},\\n\\\"custom\\\": { \\\"option\\\": true }\\n},\\n\\\"rules\\\": {\\n\\\"eqeqeq\\\": \\\"warn\\\",\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"react/self-closing-comp\\\": [\\\"error\\\", { \\\"html\\\": false }]\\n},\\n\\\"overrides\\\": [\\n{\\n\\\"files\\\": [\\\"*.test.ts\\\", \\\"*.spec.ts\\\"],\\n\\\"rules\\\": {\\n\\\"@typescript-eslint/no-explicit-any\\\": \\\"off\\\"\\n}\\n}\\n]\\n}\\n```\\n\\n`oxlint.config.ts`\\n\\n```ts\\nimport { defineConfig } from \\\"oxlint\\\";\\n\\nexport default defineConfig({\\nplugins: [\\\"import\\\", \\\"typescript\\\", \\\"unicorn\\\"],\\nenv: {\\n\\\"browser\\\": true\\n},\\nglobals: {\\n\\\"foo\\\": \\\"readonly\\\"\\n},\\nsettings: {\\nreact: {\\nversion: \\\"18.2.0\\\"\\n},\\ncustom: { option: true }\\n},\\nrules: {\\n\\\"eqeqeq\\\": \\\"warn\\\",\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"react/self-closing-comp\\\": [\\\"error\\\", { \\\"html\\\": false }]\\n},\\noverrides: [\\n{\\nfiles: [\\\"*.test.ts\\\", \\\"*.spec.ts\\\"],\\nrules: {\\n\\\"@typescript-eslint/no-explicit-any\\\": \\\"off\\\"\\n}\\n}\\n]\\n});\\n```\",\n \"type\": \"object\",\n \"properties\": {\n \"$schema\": {\n \"description\": \"Schema URI for editor tooling.\",\n \"type\": \"string\",\n \"markdownDescription\": \"Schema URI for editor tooling.\"\n },\n \"categories\": {\n \"default\": {},\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/OxlintCategories\"\n }\n ]\n },\n \"env\": {\n \"description\": \"Environments enable and disable collections of global variables.\",\n \"default\": {\n \"builtin\": true\n },\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/OxlintEnv\"\n }\n ],\n \"markdownDescription\": \"Environments enable and disable collections of global variables.\"\n },\n \"extends\": {\n \"description\": \"Paths of configuration files that this configuration file extends (inherits from). The files\\nare resolved relative to the location of the configuration file that contains the `extends`\\nproperty. The configuration files are merged from the first to the last, with the last file\\noverriding the previous ones.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"markdownDescription\": \"Paths of configuration files that this configuration file extends (inherits from). The files\\nare resolved relative to the location of the configuration file that contains the `extends`\\nproperty. The configuration files are merged from the first to the last, with the last file\\noverriding the previous ones.\"\n },\n \"globals\": {\n \"description\": \"Enabled or disabled specific global variables.\",\n \"default\": {},\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/OxlintGlobals\"\n }\n ],\n \"markdownDescription\": \"Enabled or disabled specific global variables.\"\n },\n \"ignorePatterns\": {\n \"description\": \"Globs to ignore during linting. These are resolved from the configuration file path.\",\n \"default\": [],\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"markdownDescription\": \"Globs to ignore during linting. These are resolved from the configuration file path.\"\n },\n \"jsPlugins\": {\n \"description\": \"JS plugins, allows usage of ESLint plugins with Oxlint.\\n\\nRead more about JS plugins in\\n[the docs](https://oxc.rs/docs/guide/usage/linter/js-plugins.html).\\n\\nNote: JS plugins are in alpha and not subject to semver.\\n\\nExamples:\\n\\nBasic usage with a local plugin path.\\n\\n```json\\n{\\n\\\"jsPlugins\\\": [\\\"./custom-plugin.js\\\"],\\n\\\"rules\\\": {\\n\\\"custom/rule-name\\\": \\\"warn\\\"\\n}\\n}\\n```\\n\\nBasic usage with a TypeScript plugin and a local plugin path.\\n\\nTypeScript plugin files are supported in the following environments:\\n- Deno and Bun: TypeScript files are supported natively.\\n- Node.js >=22.18.0 and Node.js ^20.19.0: TypeScript files are supported natively with built-in\\ntype-stripping enabled by default.\\n\\nFor older Node.js versions, TypeScript plugins are not supported. Please use JavaScript plugins or upgrade your Node version.\\n\\n```json\\n{\\n\\\"jsPlugins\\\": [\\\"./custom-plugin.ts\\\"],\\n\\\"rules\\\": {\\n\\\"custom/rule-name\\\": \\\"warn\\\"\\n}\\n}\\n```\\n\\nUsing a built-in Rust plugin alongside a JS plugin with the same name\\nby giving the JS plugin an alias.\\n\\n```json\\n{\\n\\\"plugins\\\": [\\\"import\\\"],\\n\\\"jsPlugins\\\": [\\n{ \\\"name\\\": \\\"import-js\\\", \\\"specifier\\\": \\\"eslint-plugin-import\\\" }\\n],\\n\\\"rules\\\": {\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"import-js/no-unresolved\\\": \\\"warn\\\"\\n}\\n}\\n```\",\n \"anyOf\": [\n {\n \"type\": \"null\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/ExternalPluginEntry\"\n },\n \"uniqueItems\": true\n }\n ],\n \"markdownDescription\": \"JS plugins, allows usage of ESLint plugins with Oxlint.\\n\\nRead more about JS plugins in\\n[the docs](https://oxc.rs/docs/guide/usage/linter/js-plugins.html).\\n\\nNote: JS plugins are in alpha and not subject to semver.\\n\\nExamples:\\n\\nBasic usage with a local plugin path.\\n\\n```json\\n{\\n\\\"jsPlugins\\\": [\\\"./custom-plugin.js\\\"],\\n\\\"rules\\\": {\\n\\\"custom/rule-name\\\": \\\"warn\\\"\\n}\\n}\\n```\\n\\nBasic usage with a TypeScript plugin and a local plugin path.\\n\\nTypeScript plugin files are supported in the following environments:\\n- Deno and Bun: TypeScript files are supported natively.\\n- Node.js >=22.18.0 and Node.js ^20.19.0: TypeScript files are supported natively with built-in\\ntype-stripping enabled by default.\\n\\nFor older Node.js versions, TypeScript plugins are not supported. Please use JavaScript plugins or upgrade your Node version.\\n\\n```json\\n{\\n\\\"jsPlugins\\\": [\\\"./custom-plugin.ts\\\"],\\n\\\"rules\\\": {\\n\\\"custom/rule-name\\\": \\\"warn\\\"\\n}\\n}\\n```\\n\\nUsing a built-in Rust plugin alongside a JS plugin with the same name\\nby giving the JS plugin an alias.\\n\\n```json\\n{\\n\\\"plugins\\\": [\\\"import\\\"],\\n\\\"jsPlugins\\\": [\\n{ \\\"name\\\": \\\"import-js\\\", \\\"specifier\\\": \\\"eslint-plugin-import\\\" }\\n],\\n\\\"rules\\\": {\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"import-js/no-unresolved\\\": \\\"warn\\\"\\n}\\n}\\n```\"\n },\n \"options\": {\n \"description\": \"Oxlint config options.\",\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/OxlintOptions\"\n }\n ],\n \"markdownDescription\": \"Oxlint config options.\"\n },\n \"overrides\": {\n \"description\": \"Add, remove, or otherwise reconfigure rules for specific files or groups of files.\",\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/OxlintOverrides\"\n }\n ],\n \"markdownDescription\": \"Add, remove, or otherwise reconfigure rules for specific files or groups of files.\"\n },\n \"plugins\": {\n \"description\": \"Enabled built-in plugins for Oxlint.\\nYou can view the list of available plugins on\\n[the website](https://oxc.rs/docs/guide/usage/linter/plugins.html#supported-plugins).\\n\\nNOTE: Setting the `plugins` field will overwrite the base set of plugins.\\nThe `plugins` array should reflect all of the plugins you want to use.\",\n \"default\": null,\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/LintPlugins\"\n }\n ],\n \"markdownDescription\": \"Enabled built-in plugins for Oxlint.\\nYou can view the list of available plugins on\\n[the website](https://oxc.rs/docs/guide/usage/linter/plugins.html#supported-plugins).\\n\\nNOTE: Setting the `plugins` field will overwrite the base set of plugins.\\nThe `plugins` array should reflect all of the plugins you want to use.\"\n },\n \"rules\": {\n \"description\": \"Example\\n\\n`.oxlintrc.json`\\n\\n```json\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"rules\\\": {\\n\\\"eqeqeq\\\": \\\"warn\\\",\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"prefer-const\\\": [\\\"error\\\", { \\\"ignoreReadBeforeAssign\\\": true }]\\n}\\n}\\n```\\n\\nSee [Oxlint Rules](https://oxc.rs/docs/guide/usage/linter/rules.html) for the list of\\nrules.\",\n \"default\": {},\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/OxlintRules\"\n }\n ],\n \"markdownDescription\": \"Example\\n\\n`.oxlintrc.json`\\n\\n```json\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"rules\\\": {\\n\\\"eqeqeq\\\": \\\"warn\\\",\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"prefer-const\\\": [\\\"error\\\", { \\\"ignoreReadBeforeAssign\\\": true }]\\n}\\n}\\n```\\n\\nSee [Oxlint Rules](https://oxc.rs/docs/guide/usage/linter/rules.html) for the list of\\nrules.\"\n },\n \"settings\": {\n \"description\": \"Plugin-specific configuration for both built-in and custom plugins.\\nThis includes settings for built-in plugins such as `react` and `jsdoc`\\nas well as configuring settings for JS custom plugins loaded via `jsPlugins`.\",\n \"default\": {\n \"jsx-a11y\": {\n \"polymorphicPropName\": null,\n \"components\": {},\n \"attributes\": {}\n },\n \"next\": {\n \"rootDir\": []\n },\n \"react\": {\n \"formComponents\": [],\n \"linkComponents\": [],\n \"version\": null,\n \"componentWrapperFunctions\": []\n },\n \"jsdoc\": {\n \"ignorePrivate\": false,\n \"ignoreInternal\": false,\n \"ignoreReplacesDocs\": true,\n \"overrideReplacesDocs\": true,\n \"augmentsExtendsReplacesDocs\": false,\n \"implementsReplacesDocs\": false,\n \"exemptDestructuredRootsFromChecks\": false,\n \"tagNamePreference\": {}\n },\n \"vitest\": {\n \"typecheck\": false\n }\n },\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/OxlintSettings\"\n }\n ],\n \"markdownDescription\": \"Plugin-specific configuration for both built-in and custom plugins.\\nThis includes settings for built-in plugins such as `react` and `jsdoc`\\nas well as configuring settings for JS custom plugins loaded via `jsPlugins`.\"\n }\n },\n \"additionalProperties\": false,\n \"allowComments\": true,\n \"allowTrailingCommas\": true,\n \"definitions\": {\n \"AllowWarnDeny\": {\n \"oneOf\": [\n {\n \"description\": \"Oxlint rule.\\n- \\\"allow\\\" or \\\"off\\\": Turn off the rule.\\n- \\\"warn\\\": Turn the rule on as a warning (doesn't affect exit code).\\n- \\\"error\\\" or \\\"deny\\\": Turn the rule on as an error (will exit with a failure code).\",\n \"type\": \"string\",\n \"enum\": [\n \"allow\",\n \"off\",\n \"warn\",\n \"error\",\n \"deny\"\n ],\n \"markdownDescription\": \"Oxlint rule.\\n- \\\"allow\\\" or \\\"off\\\": Turn off the rule.\\n- \\\"warn\\\": Turn the rule on as a warning (doesn't affect exit code).\\n- \\\"error\\\" or \\\"deny\\\": Turn the rule on as an error (will exit with a failure code).\"\n },\n {\n \"description\": \"Oxlint rule.\\n \\n- 0: Turn off the rule.\\n- 1: Turn the rule on as a warning (doesn't affect exit code).\\n- 2: Turn the rule on as an error (will exit with a failure code).\",\n \"type\": \"integer\",\n \"format\": \"uint32\",\n \"maximum\": 2,\n \"minimum\": 0,\n \"markdownDescription\": \"Oxlint rule.\\n \\n- 0: Turn off the rule.\\n- 1: Turn the rule on as a warning (doesn't affect exit code).\\n- 2: Turn the rule on as an error (will exit with a failure code).\"\n }\n ]\n },\n \"CustomComponent\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"attribute\",\n \"name\"\n ],\n \"properties\": {\n \"attribute\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"attributes\",\n \"name\"\n ],\n \"properties\": {\n \"attributes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"name\": {\n \"type\": \"string\"\n }\n }\n }\n ]\n },\n \"DummyRule\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/definitions/AllowWarnDeny\"\n },\n {\n \"type\": \"array\",\n \"items\": [\n {\n \"$ref\": \"#/definitions/AllowWarnDeny\"\n }\n ],\n \"additionalItems\": true,\n \"minItems\": 1\n }\n ]\n },\n \"DummyRuleMap\": {\n \"description\": \"See [Oxlint Rules](https://oxc.rs/docs/guide/usage/linter/rules.html)\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/DummyRule\"\n },\n \"markdownDescription\": \"See [Oxlint Rules](https://oxc.rs/docs/guide/usage/linter/rules.html)\"\n },\n \"ExternalPluginEntry\": {\n \"anyOf\": [\n {\n \"description\": \"Path or package name of the plugin\",\n \"type\": \"string\",\n \"markdownDescription\": \"Path or package name of the plugin\"\n },\n {\n \"description\": \"Plugin with custom name/alias\",\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"specifier\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"Custom name/alias for the plugin.\\n\\nNote: The following plugin names are reserved because they are implemented natively in Rust within oxlint and cannot be used for JS plugins:\\n- react (includes react-hooks)\\n- unicorn\\n- typescript (includes @typescript-eslint)\\n- oxc\\n- import (includes import-x)\\n- jsdoc\\n- jest\\n- vitest\\n- jsx-a11y\\n- nextjs\\n- react-perf\\n- promise\\n- node\\n- vue\\n- eslint\\n\\nIf you need to use the JavaScript version of any of these plugins, provide a custom alias to avoid conflicts.\",\n \"type\": \"string\",\n \"markdownDescription\": \"Custom name/alias for the plugin.\\n\\nNote: The following plugin names are reserved because they are implemented natively in Rust within oxlint and cannot be used for JS plugins:\\n- react (includes react-hooks)\\n- unicorn\\n- typescript (includes @typescript-eslint)\\n- oxc\\n- import (includes import-x)\\n- jsdoc\\n- jest\\n- vitest\\n- jsx-a11y\\n- nextjs\\n- react-perf\\n- promise\\n- node\\n- vue\\n- eslint\\n\\nIf you need to use the JavaScript version of any of these plugins, provide a custom alias to avoid conflicts.\"\n },\n \"specifier\": {\n \"description\": \"Path or package name of the plugin\",\n \"type\": \"string\",\n \"markdownDescription\": \"Path or package name of the plugin\"\n }\n },\n \"additionalProperties\": false,\n \"markdownDescription\": \"Plugin with custom name/alias\"\n }\n ]\n },\n \"GlobSet\": {\n \"description\": \"A set of glob patterns.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"markdownDescription\": \"A set of glob patterns.\"\n },\n \"GlobalValue\": {\n \"type\": \"string\",\n \"enum\": [\n \"readonly\",\n \"writable\",\n \"off\"\n ]\n },\n \"JSDocPluginSettings\": {\n \"type\": \"object\",\n \"properties\": {\n \"augmentsExtendsReplacesDocs\": {\n \"description\": \"Only for `require-(yields|returns|description|example|param|throws)` rule\",\n \"default\": false,\n \"type\": \"boolean\",\n \"markdownDescription\": \"Only for `require-(yields|returns|description|example|param|throws)` rule\"\n },\n \"exemptDestructuredRootsFromChecks\": {\n \"description\": \"Only for `require-param-type` and `require-param-description` rule\",\n \"default\": false,\n \"type\": \"boolean\",\n \"markdownDescription\": \"Only for `require-param-type` and `require-param-description` rule\"\n },\n \"ignoreInternal\": {\n \"description\": \"For all rules but NOT apply to `empty-tags` rule\",\n \"default\": false,\n \"type\": \"boolean\",\n \"markdownDescription\": \"For all rules but NOT apply to `empty-tags` rule\"\n },\n \"ignorePrivate\": {\n \"description\": \"For all rules but NOT apply to `check-access` and `empty-tags` rule\",\n \"default\": false,\n \"type\": \"boolean\",\n \"markdownDescription\": \"For all rules but NOT apply to `check-access` and `empty-tags` rule\"\n },\n \"ignoreReplacesDocs\": {\n \"description\": \"Only for `require-(yields|returns|description|example|param|throws)` rule\",\n \"default\": true,\n \"type\": \"boolean\",\n \"markdownDescription\": \"Only for `require-(yields|returns|description|example|param|throws)` rule\"\n },\n \"implementsReplacesDocs\": {\n \"description\": \"Only for `require-(yields|returns|description|example|param|throws)` rule\",\n \"default\": false,\n \"type\": \"boolean\",\n \"markdownDescription\": \"Only for `require-(yields|returns|description|example|param|throws)` rule\"\n },\n \"overrideReplacesDocs\": {\n \"description\": \"Only for `require-(yields|returns|description|example|param|throws)` rule\",\n \"default\": true,\n \"type\": \"boolean\",\n \"markdownDescription\": \"Only for `require-(yields|returns|description|example|param|throws)` rule\"\n },\n \"tagNamePreference\": {\n \"default\": {},\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/TagNamePreference\"\n }\n }\n }\n },\n \"JSXA11yPluginSettings\": {\n \"description\": \"Configure JSX A11y plugin rules.\\n\\nSee\\n[eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#configurations)'s\\nconfiguration for a full reference.\",\n \"type\": \"object\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Map of attribute names to their DOM equivalents.\\nThis is useful for non-React frameworks that use different attribute names.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"jsx-a11y\\\": {\\n\\\"attributes\\\": {\\n\\\"for\\\": [\\\"htmlFor\\\", \\\"for\\\"]\\n}\\n}\\n}\\n}\\n```\",\n \"default\": {},\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"markdownDescription\": \"Map of attribute names to their DOM equivalents.\\nThis is useful for non-React frameworks that use different attribute names.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"jsx-a11y\\\": {\\n\\\"attributes\\\": {\\n\\\"for\\\": [\\\"htmlFor\\\", \\\"for\\\"]\\n}\\n}\\n}\\n}\\n```\"\n },\n \"components\": {\n \"description\": \"To have your custom components be checked as DOM elements, you can\\nprovide a mapping of your component names to the DOM element name.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"jsx-a11y\\\": {\\n\\\"components\\\": {\\n\\\"Link\\\": \\\"a\\\",\\n\\\"IconButton\\\": \\\"button\\\"\\n}\\n}\\n}\\n}\\n```\",\n \"default\": {},\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"markdownDescription\": \"To have your custom components be checked as DOM elements, you can\\nprovide a mapping of your component names to the DOM element name.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"jsx-a11y\\\": {\\n\\\"components\\\": {\\n\\\"Link\\\": \\\"a\\\",\\n\\\"IconButton\\\": \\\"button\\\"\\n}\\n}\\n}\\n}\\n```\"\n },\n \"polymorphicPropName\": {\n \"description\": \"An optional setting that define the prop your code uses to create polymorphic components.\\nThis setting will be used to determine the element type in rules that\\nrequire semantic context.\\n\\nFor example, if you set the `polymorphicPropName` to `as`, then this element:\\n\\n```jsx\\n<Box as=\\\"h3\\\">Hello</Box>\\n```\\n\\nWill be treated as an `h3`. If not set, this component will be treated\\nas a `Box`.\",\n \"type\": \"string\",\n \"markdownDescription\": \"An optional setting that define the prop your code uses to create polymorphic components.\\nThis setting will be used to determine the element type in rules that\\nrequire semantic context.\\n\\nFor example, if you set the `polymorphicPropName` to `as`, then this element:\\n\\n```jsx\\n<Box as=\\\"h3\\\">Hello</Box>\\n```\\n\\nWill be treated as an `h3`. If not set, this component will be treated\\nas a `Box`.\"\n }\n },\n \"markdownDescription\": \"Configure JSX A11y plugin rules.\\n\\nSee\\n[eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#configurations)'s\\nconfiguration for a full reference.\"\n },\n \"LintPluginOptionsSchema\": {\n \"type\": \"string\",\n \"enum\": [\n \"eslint\",\n \"react\",\n \"unicorn\",\n \"typescript\",\n \"oxc\",\n \"import\",\n \"jsdoc\",\n \"jest\",\n \"vitest\",\n \"jsx-a11y\",\n \"nextjs\",\n \"react-perf\",\n \"promise\",\n \"node\",\n \"vue\"\n ]\n },\n \"LintPlugins\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/definitions/LintPluginOptionsSchema\"\n }\n ]\n }\n },\n \"NextPluginSettings\": {\n \"description\": \"Configure Next.js plugin rules.\",\n \"type\": \"object\",\n \"properties\": {\n \"rootDir\": {\n \"description\": \"The root directory of the Next.js project.\\n\\nThis is particularly useful when you have a monorepo and your Next.js\\nproject is in a subfolder.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"next\\\": {\\n\\\"rootDir\\\": \\\"apps/dashboard/\\\"\\n}\\n}\\n}\\n```\",\n \"default\": [],\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/OneOrMany_for_String\"\n }\n ],\n \"markdownDescription\": \"The root directory of the Next.js project.\\n\\nThis is particularly useful when you have a monorepo and your Next.js\\nproject is in a subfolder.\\n\\nExample:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"next\\\": {\\n\\\"rootDir\\\": \\\"apps/dashboard/\\\"\\n}\\n}\\n}\\n```\"\n }\n },\n \"markdownDescription\": \"Configure Next.js plugin rules.\"\n },\n \"OneOrMany_for_String\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n ]\n },\n \"OxlintCategories\": {\n \"title\": \"Rule Categories\",\n \"description\": \"Configure an entire category of rules all at once.\\n\\nRules enabled or disabled this way will be overwritten by individual rules in the `rules` field.\\n\\nExample\\n```json\\n{\\n \\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n \\\"categories\\\": {\\n \\\"correctness\\\": \\\"warn\\\"\\n },\\n \\\"rules\\\": {\\n \\\"eslint/no-unused-vars\\\": \\\"error\\\"\\n }\\n}\\n```\",\n \"examples\": [\n {\n \"correctness\": \"warn\"\n }\n ],\n \"type\": \"object\",\n \"properties\": {\n \"correctness\": {\n \"$ref\": \"#/definitions/AllowWarnDeny\"\n },\n \"nursery\": {\n \"$ref\": \"#/definitions/AllowWarnDeny\"\n },\n \"pedantic\": {\n \"$ref\": \"#/definitions/AllowWarnDeny\"\n },\n \"perf\": {\n \"$ref\": \"#/definitions/AllowWarnDeny\"\n },\n \"restriction\": {\n \"$ref\": \"#/definitions/AllowWarnDeny\"\n },\n \"style\": {\n \"$ref\": \"#/definitions/AllowWarnDeny\"\n },\n \"suspicious\": {\n \"$ref\": \"#/definitions/AllowWarnDeny\"\n }\n },\n \"additionalProperties\": false,\n \"markdownDescription\": \"Configure an entire category of rules all at once.\\n\\nRules enabled or disabled this way will be overwritten by individual rules in the `rules` field.\\n\\nExample\\n```json\\n{\\n \\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n \\\"categories\\\": {\\n \\\"correctness\\\": \\\"warn\\\"\\n },\\n \\\"rules\\\": {\\n \\\"eslint/no-unused-vars\\\": \\\"error\\\"\\n }\\n}\\n```\"\n },\n \"OxlintEnv\": {\n \"description\": \"Predefine global variables.\\n\\nEnvironments specify what global variables are predefined.\\nSee [ESLint's list of environments](https://eslint.org/docs/v8.x/use/configure/language-options#specifying-environments)\\nfor what environments are available and what each one provides.\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"boolean\"\n },\n \"markdownDescription\": \"Predefine global variables.\\n\\nEnvironments specify what global variables are predefined.\\nSee [ESLint's list of environments](https://eslint.org/docs/v8.x/use/configure/language-options#specifying-environments)\\nfor what environments are available and what each one provides.\"\n },\n \"OxlintGlobals\": {\n \"description\": \"Add or remove global variables.\\n\\nFor each global variable, set the corresponding value equal to `\\\"writable\\\"`\\nto allow the variable to be overwritten or `\\\"readonly\\\"` to disallow overwriting.\\n\\nGlobals can be disabled by setting their value to `\\\"off\\\"`. For example, in\\nan environment where most Es2015 globals are available but `Promise` is unavailable,\\nyou might use this config:\\n\\n```json\\n\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"env\\\": {\\n\\\"es6\\\": true\\n},\\n\\\"globals\\\": {\\n\\\"Promise\\\": \\\"off\\\"\\n}\\n}\\n\\n```\\n\\nYou may also use `\\\"readable\\\"` or `false` to represent `\\\"readonly\\\"`, and\\n`\\\"writeable\\\"` or `true` to represent `\\\"writable\\\"`.\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/GlobalValue\"\n },\n \"markdownDescription\": \"Add or remove global variables.\\n\\nFor each global variable, set the corresponding value equal to `\\\"writable\\\"`\\nto allow the variable to be overwritten or `\\\"readonly\\\"` to disallow overwriting.\\n\\nGlobals can be disabled by setting their value to `\\\"off\\\"`. For example, in\\nan environment where most Es2015 globals are available but `Promise` is unavailable,\\nyou might use this config:\\n\\n```json\\n\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"env\\\": {\\n\\\"es6\\\": true\\n},\\n\\\"globals\\\": {\\n\\\"Promise\\\": \\\"off\\\"\\n}\\n}\\n\\n```\\n\\nYou may also use `\\\"readable\\\"` or `false` to represent `\\\"readonly\\\"`, and\\n`\\\"writeable\\\"` or `true` to represent `\\\"writable\\\"`.\"\n },\n \"OxlintOptions\": {\n \"description\": \"Options for the linter.\",\n \"type\": \"object\",\n \"properties\": {\n \"denyWarnings\": {\n \"description\": \"Ensure warnings produce a non-zero exit code.\\n\\nEquivalent to passing `--deny-warnings` on the CLI.\",\n \"type\": \"boolean\",\n \"markdownDescription\": \"Ensure warnings produce a non-zero exit code.\\n\\nEquivalent to passing `--deny-warnings` on the CLI.\"\n },\n \"maxWarnings\": {\n \"description\": \"Specify a warning threshold. Exits with an error status if warnings exceed this value.\\n\\nEquivalent to passing `--max-warnings` on the CLI.\",\n \"type\": \"integer\",\n \"format\": \"uint\",\n \"minimum\": 0,\n \"markdownDescription\": \"Specify a warning threshold. Exits with an error status if warnings exceed this value.\\n\\nEquivalent to passing `--max-warnings` on the CLI.\"\n },\n \"reportUnusedDisableDirectives\": {\n \"description\": \"Report unused disable directives (e.g. `// oxlint-disable-line` or `// eslint-disable-line`).\\n\\nEquivalent to passing `--report-unused-disable-directives-severity` on the CLI.\\nCLI flags take precedence over this value when both are set.\\nOnly supported in the root configuration file.\",\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/AllowWarnDeny\"\n }\n ],\n \"markdownDescription\": \"Report unused disable directives (e.g. `// oxlint-disable-line` or `// eslint-disable-line`).\\n\\nEquivalent to passing `--report-unused-disable-directives-severity` on the CLI.\\nCLI flags take precedence over this value when both are set.\\nOnly supported in the root configuration file.\"\n },\n \"typeAware\": {\n \"description\": \"Enable rules that require type information.\\n\\nEquivalent to passing `--type-aware` on the CLI.\\n\\nNote that this requires the `oxlint-tsgolint` package to be installed.\",\n \"type\": \"boolean\",\n \"markdownDescription\": \"Enable rules that require type information.\\n\\nEquivalent to passing `--type-aware` on the CLI.\\n\\nNote that this requires the `oxlint-tsgolint` package to be installed.\"\n },\n \"typeCheck\": {\n \"description\": \"Enable experimental type checking (includes TypeScript compiler diagnostics).\\n\\nEquivalent to passing `--type-check` on the CLI.\\n\\nNote that this requires the `oxlint-tsgolint` package to be installed.\",\n \"type\": \"boolean\",\n \"markdownDescription\": \"Enable experimental type checking (includes TypeScript compiler diagnostics).\\n\\nEquivalent to passing `--type-check` on the CLI.\\n\\nNote that this requires the `oxlint-tsgolint` package to be installed.\"\n }\n },\n \"additionalProperties\": false,\n \"markdownDescription\": \"Options for the linter.\"\n },\n \"OxlintOverride\": {\n \"type\": \"object\",\n \"required\": [\n \"files\"\n ],\n \"properties\": {\n \"env\": {\n \"description\": \"Environments enable and disable collections of global variables.\",\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/OxlintEnv\"\n }\n ],\n \"markdownDescription\": \"Environments enable and disable collections of global variables.\"\n },\n \"files\": {\n \"description\": \"A list of glob patterns to override.\\n\\n## Example\\n`[ \\\"*.test.ts\\\", \\\"*.spec.ts\\\" ]`\",\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/GlobSet\"\n }\n ],\n \"markdownDescription\": \"A list of glob patterns to override.\\n\\n## Example\\n`[ \\\"*.test.ts\\\", \\\"*.spec.ts\\\" ]`\"\n },\n \"globals\": {\n \"description\": \"Enabled or disabled specific global variables.\",\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/OxlintGlobals\"\n }\n ],\n \"markdownDescription\": \"Enabled or disabled specific global variables.\"\n },\n \"jsPlugins\": {\n \"description\": \"JS plugins for this override, allows usage of ESLint plugins with Oxlint.\\n\\nRead more about JS plugins in\\n[the docs](https://oxc.rs/docs/guide/usage/linter/js-plugins.html).\\n\\nNote: JS plugins are in alpha and not subject to semver.\",\n \"anyOf\": [\n {\n \"type\": \"null\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/ExternalPluginEntry\"\n },\n \"uniqueItems\": true\n }\n ],\n \"markdownDescription\": \"JS plugins for this override, allows usage of ESLint plugins with Oxlint.\\n\\nRead more about JS plugins in\\n[the docs](https://oxc.rs/docs/guide/usage/linter/js-plugins.html).\\n\\nNote: JS plugins are in alpha and not subject to semver.\"\n },\n \"plugins\": {\n \"description\": \"Optionally change what plugins are enabled for this override. When\\nomitted, the base config's plugins are used.\",\n \"default\": null,\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/LintPlugins\"\n }\n ],\n \"markdownDescription\": \"Optionally change what plugins are enabled for this override. When\\nomitted, the base config's plugins are used.\"\n },\n \"rules\": {\n \"default\": {},\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/OxlintRules\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"OxlintOverrides\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/OxlintOverride\"\n }\n },\n \"OxlintRules\": {\n \"$ref\": \"#/definitions/DummyRuleMap\"\n },\n \"OxlintSettings\": {\n \"title\": \"Oxlint Plugin Settings\",\n \"description\": \"Configure the behavior of linter plugins.\\n\\nHere's an example if you're using Next.js in a monorepo:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"next\\\": {\\n\\\"rootDir\\\": \\\"apps/dashboard/\\\"\\n},\\n\\\"react\\\": {\\n\\\"linkComponents\\\": [\\n{ \\\"name\\\": \\\"Link\\\", \\\"linkAttribute\\\": \\\"to\\\" }\\n]\\n},\\n\\\"jsx-a11y\\\": {\\n\\\"components\\\": {\\n\\\"Link\\\": \\\"a\\\",\\n\\\"Button\\\": \\\"button\\\"\\n}\\n}\\n}\\n}\\n```\",\n \"type\": \"object\",\n \"properties\": {\n \"jsdoc\": {\n \"default\": {\n \"ignorePrivate\": false,\n \"ignoreInternal\": false,\n \"ignoreReplacesDocs\": true,\n \"overrideReplacesDocs\": true,\n \"augmentsExtendsReplacesDocs\": false,\n \"implementsReplacesDocs\": false,\n \"exemptDestructuredRootsFromChecks\": false,\n \"tagNamePreference\": {}\n },\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/JSDocPluginSettings\"\n }\n ]\n },\n \"jsx-a11y\": {\n \"default\": {\n \"polymorphicPropName\": null,\n \"components\": {},\n \"attributes\": {}\n },\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/JSXA11yPluginSettings\"\n }\n ]\n },\n \"next\": {\n \"default\": {\n \"rootDir\": []\n },\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/NextPluginSettings\"\n }\n ]\n },\n \"react\": {\n \"default\": {\n \"formComponents\": [],\n \"linkComponents\": [],\n \"version\": null,\n \"componentWrapperFunctions\": []\n },\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/ReactPluginSettings\"\n }\n ]\n },\n \"vitest\": {\n \"default\": {\n \"typecheck\": false\n },\n \"allOf\": [\n {\n \"$ref\": \"#/definitions/VitestPluginSettings\"\n }\n ]\n }\n },\n \"markdownDescription\": \"Configure the behavior of linter plugins.\\n\\nHere's an example if you're using Next.js in a monorepo:\\n\\n```json\\n{\\n\\\"settings\\\": {\\n\\\"next\\\": {\\n\\\"rootDir\\\": \\\"apps/dashboard/\\\"\\n},\\n\\\"react\\\": {\\n\\\"linkComponents\\\": [\\n{ \\\"name\\\": \\\"Link\\\", \\\"linkAttribute\\\": \\\"to\\\" }\\n]\\n},\\n\\\"jsx-a11y\\\": {\\n\\\"components\\\": {\\n\\\"Link\\\": \\\"a\\\",\\n\\\"Button\\\": \\\"button\\\"\\n}\\n}\\n}\\n}\\n```\"\n },\n \"ReactPluginSettings\": {\n \"description\": \"Configure React plugin rules.\\n\\nDerived from [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react#configuration-legacy-eslintrc-)\",\n \"type\": \"object\",\n \"properties\": {\n \"componentWrapperFunctions\": {\n \"description\": \"Functions that wrap React components and should be treated as HOCs.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"componentWrapperFunctions\\\": [\\\"observer\\\", \\\"withRouter\\\"]\\n}\\n}\\n}\\n```\",\n \"default\": [],\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"markdownDescription\": \"Functions that wrap React components and should be treated as HOCs.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"componentWrapperFunctions\\\": [\\\"observer\\\", \\\"withRouter\\\"]\\n}\\n}\\n}\\n```\"\n },\n \"formComponents\": {\n \"description\": \"Components used as alternatives to `<form>` for forms, such as `<Formik>`.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"formComponents\\\": [\\n\\\"CustomForm\\\",\\n// OtherForm is considered a form component and has an endpoint attribute\\n{ \\\"name\\\": \\\"OtherForm\\\", \\\"formAttribute\\\": \\\"endpoint\\\" },\\n// allows specifying multiple properties if necessary\\n{ \\\"name\\\": \\\"Form\\\", \\\"formAttribute\\\": [\\\"registerEndpoint\\\", \\\"loginEndpoint\\\"] }\\n]\\n}\\n}\\n}\\n```\",\n \"default\": [],\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/CustomComponent\"\n },\n \"markdownDescription\": \"Components used as alternatives to `<form>` for forms, such as `<Formik>`.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"formComponents\\\": [\\n\\\"CustomForm\\\",\\n// OtherForm is considered a form component and has an endpoint attribute\\n{ \\\"name\\\": \\\"OtherForm\\\", \\\"formAttribute\\\": \\\"endpoint\\\" },\\n// allows specifying multiple properties if necessary\\n{ \\\"name\\\": \\\"Form\\\", \\\"formAttribute\\\": [\\\"registerEndpoint\\\", \\\"loginEndpoint\\\"] }\\n]\\n}\\n}\\n}\\n```\"\n },\n \"linkComponents\": {\n \"description\": \"Components used as alternatives to `<a>` for linking, such as `<Link>`.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"linkComponents\\\": [\\n\\\"HyperLink\\\",\\n// Use `linkAttribute` for components that use a different prop name\\n// than `href`.\\n{ \\\"name\\\": \\\"MyLink\\\", \\\"linkAttribute\\\": \\\"to\\\" },\\n// allows specifying multiple properties if necessary\\n{ \\\"name\\\": \\\"Link\\\", \\\"linkAttribute\\\": [\\\"to\\\", \\\"href\\\"] }\\n]\\n}\\n}\\n}\\n```\",\n \"default\": [],\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/CustomComponent\"\n },\n \"markdownDescription\": \"Components used as alternatives to `<a>` for linking, such as `<Link>`.\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"linkComponents\\\": [\\n\\\"HyperLink\\\",\\n// Use `linkAttribute` for components that use a different prop name\\n// than `href`.\\n{ \\\"name\\\": \\\"MyLink\\\", \\\"linkAttribute\\\": \\\"to\\\" },\\n// allows specifying multiple properties if necessary\\n{ \\\"name\\\": \\\"Link\\\", \\\"linkAttribute\\\": [\\\"to\\\", \\\"href\\\"] }\\n]\\n}\\n}\\n}\\n```\"\n },\n \"version\": {\n \"description\": \"React version to use for version-specific rules.\\n\\nAccepts semver versions (e.g., \\\"18.2.0\\\", \\\"17.0\\\").\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"version\\\": \\\"18.2.0\\\"\\n}\\n}\\n}\\n```\",\n \"default\": null,\n \"type\": \"string\",\n \"pattern\": \"^[1-9]\\\\d*(\\\\.(0|[1-9]\\\\d*))?(\\\\.(0|[1-9]\\\\d*))?$\",\n \"markdownDescription\": \"React version to use for version-specific rules.\\n\\nAccepts semver versions (e.g., \\\"18.2.0\\\", \\\"17.0\\\").\\n\\nExample:\\n\\n```jsonc\\n{\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"version\\\": \\\"18.2.0\\\"\\n}\\n}\\n}\\n```\"\n }\n },\n \"markdownDescription\": \"Configure React plugin rules.\\n\\nDerived from [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react#configuration-legacy-eslintrc-)\"\n },\n \"TagNamePreference\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"message\",\n \"replacement\"\n ],\n \"properties\": {\n \"message\": {\n \"type\": \"string\"\n },\n \"replacement\": {\n \"type\": \"string\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"message\"\n ],\n \"properties\": {\n \"message\": {\n \"type\": \"string\"\n }\n }\n },\n {\n \"type\": \"boolean\"\n }\n ]\n },\n \"VitestPluginSettings\": {\n \"description\": \"Configure Vitest plugin rules.\\n\\nSee [eslint-plugin-vitest](https://github.com/vitest-dev/eslint-plugin-vitest)'s\\nconfiguration for a full reference.\",\n \"type\": \"object\",\n \"properties\": {\n \"typecheck\": {\n \"description\": \"Whether to enable typecheck mode for Vitest rules.\\nWhen enabled, some rules will skip certain checks for describe blocks\\nto accommodate TypeScript type checking scenarios.\",\n \"default\": false,\n \"type\": \"boolean\",\n \"markdownDescription\": \"Whether to enable typecheck mode for Vitest rules.\\nWhen enabled, some rules will skip certain checks for describe blocks\\nto accommodate TypeScript type checking scenarios.\"\n }\n },\n \"markdownDescription\": \"Configure Vitest plugin rules.\\n\\nSee [eslint-plugin-vitest](https://github.com/vitest-dev/eslint-plugin-vitest)'s\\nconfiguration for a full reference.\"\n }\n },\n \"markdownDescription\": \"Oxlint Configuration File\\n\\nThis configuration is aligned with ESLint v8's configuration schema (`eslintrc.json`).\\n\\nUsage: `oxlint -c oxlintrc.json`\\n\\nExample\\n\\n`.oxlintrc.json`\\n\\n```json\\n{\\n\\\"$schema\\\": \\\"./node_modules/oxlint/configuration_schema.json\\\",\\n\\\"plugins\\\": [\\\"import\\\", \\\"typescript\\\", \\\"unicorn\\\"],\\n\\\"env\\\": {\\n\\\"browser\\\": true\\n},\\n\\\"globals\\\": {\\n\\\"foo\\\": \\\"readonly\\\"\\n},\\n\\\"settings\\\": {\\n\\\"react\\\": {\\n\\\"version\\\": \\\"18.2.0\\\"\\n},\\n\\\"custom\\\": { \\\"option\\\": true }\\n},\\n\\\"rules\\\": {\\n\\\"eqeqeq\\\": \\\"warn\\\",\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"react/self-closing-comp\\\": [\\\"error\\\", { \\\"html\\\": false }]\\n},\\n\\\"overrides\\\": [\\n{\\n\\\"files\\\": [\\\"*.test.ts\\\", \\\"*.spec.ts\\\"],\\n\\\"rules\\\": {\\n\\\"@typescript-eslint/no-explicit-any\\\": \\\"off\\\"\\n}\\n}\\n]\\n}\\n```\\n\\n`oxlint.config.ts`\\n\\n```ts\\nimport { defineConfig } from \\\"oxlint\\\";\\n\\nexport default defineConfig({\\nplugins: [\\\"import\\\", \\\"typescript\\\", \\\"unicorn\\\"],\\nenv: {\\n\\\"browser\\\": true\\n},\\nglobals: {\\n\\\"foo\\\": \\\"readonly\\\"\\n},\\nsettings: {\\nreact: {\\nversion: \\\"18.2.0\\\"\\n},\\ncustom: { option: true }\\n},\\nrules: {\\n\\\"eqeqeq\\\": \\\"warn\\\",\\n\\\"import/no-cycle\\\": \\\"error\\\",\\n\\\"react/self-closing-comp\\\": [\\\"error\\\", { \\\"html\\\": false }]\\n},\\noverrides: [\\n{\\nfiles: [\\\"*.test.ts\\\", \\\"*.spec.ts\\\"],\\nrules: {\\n\\\"@typescript-eslint/no-explicit-any\\\": \\\"off\\\"\\n}\\n}\\n]\\n});\\n```\"\n}";
@@ -1 +1 @@
1
- export declare const data = "tar.br:G/8LIGZxztjVqJwwGYJwv7CDnqg90MS57maFKTCCAQ9kE43qr+C3aqanB+UEfnuQDdML/KQZYn6tOW/mWoEAmfIcB3jXKimOY1vAJLDZ6uwCMgDj3ouwCcyAMAr8DQEsE2Gh1ex0Puc077N+uUmtt/I2u0zIPUFj1OqwPenosJICx+QPS/pMmh+3vn/SgoRrLBXvd038z5467YIW27EQRJ1Z1U11q6m8XBTFuKFe1BZLg8q59KWDb6SsqwiHQ2+aR4VNRphmbiMuppKnRtZCvuoqDPZKhfcz/X/wH4OSWrGxGwF8JHAm1/R/bey54MxBmWdHBuAEUyoOtvVXGJNs3vHIKG+383NZ3uRJRdi+VT99GjaXp2ax2rWVZ+Fh5StOH3d2wgZqXVbMsJg4P1dvT+sHiRSzNA+iuCu5/7E8oyEQba6kDwKT/2PBTxiJHB5vPNXA";
1
+ export declare const data = "tar.br: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";
@@ -8,7 +8,7 @@ export declare const PULUMI_STATE_PATTERNS: readonly ["**/.pulumi/meta.yaml", "*
8
8
  /** Glob patterns for encrypted Pulumi state files */
9
9
  export declare const PULUMI_ENCRYPTED_STATE_PATTERNS: readonly ["**/.pulumi/meta.yaml.enc", "**/.pulumi/stacks/**/*.{yaml,yml,json}.enc"];
10
10
  /** Patterns to exclude (already encrypted) */
11
- export declare const PULUMI_ENCRYPTED_EXCLUDE_PATTERNS: readonly ["**/*.enc.json", "**/*.enc.yaml", "**/*.enc.yml"];
11
+ export declare const PULUMI_ENCRYPTED_EXCLUDE_PATTERNS: readonly ["**/*.json.enc", "**/*.yaml.enc", "**/*.yml.enc"];
12
12
  /** Concurrent SOPS operations limit (conservative for GPG agent) */
13
13
  export declare const DEFAULT_CONCURRENCY_LIMIT = 5;
14
14
  /** SOPS exit code for unchanged files */
package/dist/s0/index.js CHANGED
@@ -5,8 +5,8 @@ import fs from "node:fs/promises";
5
5
  import path, { join } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import crypto, { randomUUID } from "node:crypto";
8
+ import os from "node:os";
8
9
  import util from "node:util";
9
-
10
10
  //#region src/lib/datamitsu.ts
11
11
  var Datamitsu = class {
12
12
  get binaryPath() {
@@ -33,10 +33,13 @@ var Datamitsu = class {
33
33
  ], options);
34
34
  }
35
35
  };
36
-
37
36
  //#endregion
38
37
  //#region src/utils/typeGuards.ts
39
38
  /**
39
+ * Type guards for safe error handling with unknown types
40
+ * @module utils/typeGuards
41
+ */
42
+ /**
40
43
  * Type guard for objects with message property
41
44
  * Useful for error-like objects that may not be Error instances
42
45
  */
@@ -50,7 +53,6 @@ const hasMessage = (error) => {
50
53
  const isExecaError = (error) => {
51
54
  return typeof error === "object" && error !== null && ("exitCode" in error || "stderr" in error || "stdout" in error);
52
55
  };
53
-
54
56
  //#endregion
55
57
  //#region src/s0/utils/tty.ts
56
58
  async function getGPGTTY() {
@@ -65,7 +67,6 @@ async function getGPGTTY() {
65
67
  return "/dev/tty";
66
68
  }
67
69
  }
68
-
69
70
  //#endregion
70
71
  //#region src/s0/cmd/pulumi/constants.ts
71
72
  /**
@@ -79,12 +80,10 @@ const PULUMI_STATE_PATTERNS = ["**/.pulumi/meta.yaml", "**/.pulumi/stacks/**/*.{
79
80
  const PULUMI_ENCRYPTED_STATE_PATTERNS = ["**/.pulumi/meta.yaml.enc", "**/.pulumi/stacks/**/*.{yaml,yml,json}.enc"];
80
81
  /** Patterns to exclude (already encrypted) */
81
82
  const PULUMI_ENCRYPTED_EXCLUDE_PATTERNS = [
82
- "**/*.enc.json",
83
- "**/*.enc.yaml",
84
- "**/*.enc.yml"
83
+ "**/*.json.enc",
84
+ "**/*.yaml.enc",
85
+ "**/*.yml.enc"
85
86
  ];
86
- /** Concurrent SOPS operations limit (conservative for GPG agent) */
87
- const DEFAULT_CONCURRENCY_LIMIT = 5;
88
87
  /**
89
88
  * Detect file type from path
90
89
  * @param filePath Path to the file
@@ -111,7 +110,6 @@ function getDecryptedPath(filePath) {
111
110
  function getEncryptedPath(filePath) {
112
111
  return `${filePath}${ENCRYPTED_FILE_SUFFIX}`;
113
112
  }
114
-
115
113
  //#endregion
116
114
  //#region src/s0/cmd/pulumi/cleanupState.ts
117
115
  /**
@@ -125,7 +123,7 @@ async function checkGitSafety() {
125
123
  }
126
124
  const { stdout: gitRoot } = await execa("git", ["rev-parse", "--show-toplevel"], { cwd: process.cwd() });
127
125
  const currentDir = process.cwd();
128
- if (gitRoot !== currentDir) throw new Error(`❌ Not at repository root.\n Current: ${currentDir}\n Root: ${gitRoot}\n Please run from repository root.`);
126
+ if (path.resolve(gitRoot) !== path.resolve(currentDir)) throw new Error(`❌ Not at repository root.\n Current: ${currentDir}\n Root: ${gitRoot}\n Please run from repository root.`);
129
127
  const { stdout: status } = await execa("git", ["status", "--porcelain"], { cwd: process.cwd() });
130
128
  if (status.trim()) throw new Error("❌ Uncommitted changes detected. Please commit or stash changes before cleanup.");
131
129
  try {
@@ -174,10 +172,8 @@ const pulumiCleanup = async () => {
174
172
  const filesToRemove = [];
175
173
  for (const encFile of encryptedFiles) {
176
174
  const originalFile = getDecryptedPath(encFile);
177
- const originalExists = await fs.access(originalFile).then(() => true).catch(() => false);
178
- if (!originalExists) continue;
179
- const isValid = await verifyEncryptedFile(encFile, datamitsu, GPG_TTY);
180
- if (isValid) filesToRemove.push(originalFile);
175
+ if (!await fs.access(originalFile).then(() => true).catch(() => false)) continue;
176
+ if (await verifyEncryptedFile(encFile, datamitsu, GPG_TTY)) filesToRemove.push(originalFile);
181
177
  else console.warn(`⚠️ Warning: ${path.relative(process.cwd(), encFile)} failed verification, keeping original`);
182
178
  }
183
179
  if (filesToRemove.length === 0) {
@@ -197,7 +193,6 @@ const pulumiCleanup = async () => {
197
193
  }
198
194
  console.log(`\n✨ Cleanup complete! (${removed}/${filesToRemove.length} removed)\n`);
199
195
  };
200
-
201
196
  //#endregion
202
197
  //#region src/s0/cmd/pulumi/decryptState.ts
203
198
  async function decryptFile(file, datamitsu, GPG_TTY) {
@@ -232,7 +227,7 @@ const pulumiDecrypt = async () => {
232
227
  console.log(`\n🔓 Found ${files.length} encrypted file(s) to decrypt:\n`);
233
228
  const datamitsu = new Datamitsu();
234
229
  const GPG_TTY = await getGPGTTY();
235
- const batchSize = DEFAULT_CONCURRENCY_LIMIT;
230
+ const batchSize = 5;
236
231
  let processed = 0;
237
232
  let errors = 0;
238
233
  for (let i = 0; i < files.length; i += batchSize) {
@@ -249,7 +244,6 @@ const pulumiDecrypt = async () => {
249
244
  console.log(`\n✨ Decryption complete! (${processed - errors}/${processed} succeeded)\n`);
250
245
  if (errors > 0) process.exit(1);
251
246
  };
252
-
253
247
  //#endregion
254
248
  //#region src/s0/utils/encryption.ts
255
249
  var Encryptor = class {
@@ -311,7 +305,6 @@ var Encryptor = class {
311
305
  return this.crypto.randomBytes(this.keyLength);
312
306
  }
313
307
  };
314
-
315
308
  //#endregion
316
309
  //#region src/s0/cmd/pulumi/encryptState.ts
317
310
  const getEditorJS = async (buf) => {
@@ -320,18 +313,17 @@ const getEditorJS = async (buf) => {
320
313
  const encryptionKeyName = randomUUID();
321
314
  const encryptedContentBuf = await encryptor.encrypt(buf, encryptionKey);
322
315
  const editor = async (contentEncryptedBase64, encryptionKeyBase64) => {
323
- const [fs$1, crypto$1, util$1] = await Promise.all([
316
+ const [fsInner, cryptoInner, utilInner] = await Promise.all([
324
317
  import("node:fs/promises"),
325
318
  import("node:crypto"),
326
319
  import("node:util")
327
320
  ]);
328
321
  const contentEncryptedBuffer = Buffer.from(contentEncryptedBase64, "base64");
329
- const encryptionKey$1 = Buffer.from(encryptionKeyBase64, "base64");
330
- const encryptor$1 = new Encryptor(crypto$1, util$1);
331
- const contentBuf = await encryptor$1.decrypt(contentEncryptedBuffer, encryptionKey$1);
332
- const normalizeAndSortJSON = (buf$1) => {
322
+ const decryptionKey = Buffer.from(encryptionKeyBase64, "base64");
323
+ const contentBuf = await new Encryptor(cryptoInner, utilInner).decrypt(contentEncryptedBuffer, decryptionKey);
324
+ const normalizeAndSortJSON = (inputBuf) => {
333
325
  try {
334
- const str = buf$1.toString("utf8");
326
+ const str = inputBuf.toString("utf8");
335
327
  const state = JSON.parse(str);
336
328
  if (Array.isArray(state?.checkpoint?.latest?.resources)) state.checkpoint.latest.resources.sort((a, b) => {
337
329
  const urnA = a?.urn || "";
@@ -348,7 +340,7 @@ const getEditorJS = async (buf) => {
348
340
  });
349
341
  return Buffer.from(JSON.stringify(state, null, 4));
350
342
  } catch {
351
- return buf$1;
343
+ return inputBuf;
352
344
  }
353
345
  };
354
346
  const filePath = process.argv.at(2);
@@ -358,17 +350,16 @@ const getEditorJS = async (buf) => {
358
350
  }
359
351
  const isJSON = filePath.endsWith(".json") || filePath.endsWith(".json.enc");
360
352
  const normalizedContentBuf = isJSON ? normalizeAndSortJSON(contentBuf) : contentBuf;
361
- const unencryptedHash = crypto$1.createHash("sha512").update(normalizedContentBuf).digest("hex");
362
- const sopsEncryptedDataBase64 = await fs$1.readFile(filePath, "base64");
353
+ const unencryptedHash = cryptoInner.createHash("sha512").update(normalizedContentBuf).digest("hex");
354
+ const sopsEncryptedDataBase64 = await fsInner.readFile(filePath, "base64");
363
355
  const sopsEncryptedBuf = Buffer.from(sopsEncryptedDataBase64, "base64");
364
356
  const normalizedSopsEncryptedBuf = isJSON ? normalizeAndSortJSON(sopsEncryptedBuf) : sopsEncryptedBuf;
365
- const sopsEncryptedHash = crypto$1.createHash("sha512").update(normalizedSopsEncryptedBuf).digest("hex");
366
- if (unencryptedHash === sopsEncryptedHash) {
357
+ if (unencryptedHash === cryptoInner.createHash("sha512").update(normalizedSopsEncryptedBuf).digest("hex")) {
367
358
  console.log("File has not changed");
368
359
  process.exit(0);
369
360
  }
370
361
  try {
371
- await fs$1.writeFile(filePath, normalizedContentBuf, "binary");
362
+ await fsInner.writeFile(filePath, normalizedContentBuf, "binary");
372
363
  process.exit(0);
373
364
  } catch (error) {
374
365
  console.error(error);
@@ -393,12 +384,15 @@ async function processFile(file, datamitsu, GPG_TTY) {
393
384
  const relativePath = path.relative(process.cwd(), file);
394
385
  console.log(`📄 Processing: ${relativePath}`);
395
386
  const data = await fs.readFile(file, "base64");
396
- const dir = join(import.meta.dirname, "pulumi-sops", crypto.randomUUID());
387
+ const dir = join(os.tmpdir(), "pulumi-sops", crypto.randomUUID());
397
388
  const editor = join(dir, "editor.mjs");
398
- await fs.mkdir(dir, { recursive: true });
389
+ await fs.mkdir(dir, {
390
+ mode: 448,
391
+ recursive: true
392
+ });
399
393
  try {
400
394
  const editorJS = await getEditorJS(Buffer.from(data, "base64"));
401
- await fs.writeFile(editor, editorJS.scriptContent, { mode: 493 });
395
+ await fs.writeFile(editor, editorJS.scriptContent, { mode: 448 });
402
396
  await datamitsu.exec("sops", [
403
397
  "--input-type",
404
398
  fileType,
@@ -416,11 +410,12 @@ async function processFile(file, datamitsu, GPG_TTY) {
416
410
  });
417
411
  console.log(` ✅ Encrypted: ${relativePath}.enc\n`);
418
412
  } catch (error) {
419
- const isSopsFileUnchanged = isExecaError(error) && error.exitCode === 1 && error.stderr?.includes("exit status 200") && error.stdout?.includes("File has not changed");
420
- if (isSopsFileUnchanged) console.log(` ⏭️ Skipped: ${relativePath} (no changes)\n`);
413
+ if (isExecaError(error) && error.exitCode === 1 && error.stderr?.includes("exit status 200") && error.stdout?.includes("File has not changed")) console.log(` ⏭️ Skipped: ${relativePath} (no changes)\n`);
421
414
  else throw error;
422
415
  } finally {
423
- await fs.rm(dir, { recursive: true });
416
+ try {
417
+ await fs.rm(dir, { recursive: true });
418
+ } catch {}
424
419
  }
425
420
  }
426
421
  const pulumiEncrypt = async () => {
@@ -433,7 +428,7 @@ const pulumiEncrypt = async () => {
433
428
  console.log(`\n🔐 Found ${files.length} Pulumi state file(s) to encrypt:\n`);
434
429
  const datamitsu = new Datamitsu();
435
430
  const GPG_TTY = await getGPGTTY();
436
- const batchSize = DEFAULT_CONCURRENCY_LIMIT;
431
+ const batchSize = 5;
437
432
  let processed = 0;
438
433
  let errors = 0;
439
434
  for (let i = 0; i < files.length; i += batchSize) {
@@ -451,7 +446,6 @@ const pulumiEncrypt = async () => {
451
446
  console.log(`\n✨ Encryption complete! (${processed - errors}/${processed} succeeded)\n`);
452
447
  if (errors > 0) process.exit(1);
453
448
  };
454
-
455
449
  //#endregion
456
450
  //#region src/s0/cmd/pulumi/index.ts
457
451
  const pulumiCommand = new Command("pulumi-sops").addArgument(new Argument("<type>", "Type of operation").choices([
@@ -460,23 +454,19 @@ const pulumiCommand = new Command("pulumi-sops").addArgument(new Argument("<type
460
454
  "cleanup-all-state"
461
455
  ])).action(async (type) => {
462
456
  switch (type) {
463
- case "cleanup-all-state": {
457
+ case "cleanup-all-state":
464
458
  await pulumiCleanup();
465
459
  break;
466
- }
467
- case "decrypt-all-state": {
460
+ case "decrypt-all-state":
468
461
  await pulumiDecrypt();
469
462
  break;
470
- }
471
- case "encrypt-all-state": {
463
+ case "encrypt-all-state":
472
464
  await pulumiEncrypt();
473
465
  break;
474
- }
475
466
  }
476
467
  });
477
-
478
468
  //#endregion
479
469
  //#region src/s0/index.ts
480
470
  program.addCommand(pulumiCommand).parse();
481
-
482
- //#endregion
471
+ //#endregion
472
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -2,10 +2,6 @@
2
2
  * Type guards for safe error handling with unknown types
3
3
  * @module utils/typeGuards
4
4
  */
5
- /**
6
- * Type guard for standard Error instances
7
- */
8
- export declare const isError: (error: unknown) => error is Error;
9
5
  /**
10
6
  * Type guard for objects with message property
11
7
  * Useful for error-like objects that may not be Error instances
package/package.json CHANGED
@@ -1,12 +1,16 @@
1
1
  {
2
2
  "name": "@shibanet0/datamitsu-config",
3
- "version": "0.0.3-alpha-21",
3
+ "version": "0.0.3-alpha-23",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
7
7
  "author": "Alexander Svinarev <shibanet0@gmail.com> (shibanet0.com)",
8
8
  "type": "module",
9
9
  "exports": {
10
+ ".": {
11
+ "types": "./dist/datamitsu-api/index.d.ts",
12
+ "default": "./dist/datamitsu-api/index.js"
13
+ },
10
14
  "./tsconfig/base.json": "./tsconfig/base.json",
11
15
  "./tsconfig/library.json": "./tsconfig/library.json",
12
16
  "./tsconfig/nextjs.json": "./tsconfig/nextjs.json",
@@ -47,7 +51,7 @@
47
51
  },
48
52
  "dependencies": {
49
53
  "@commander-js/extra-typings": "14.0.0",
50
- "@datamitsu/datamitsu": "0.0.3-alpha-20",
54
+ "@datamitsu/datamitsu": "0.0.3-alpha-25",
51
55
  "commander": "14.0.3",
52
56
  "execa": "9.6.1",
53
57
  "fast-glob": "3.3.3",
File without changes
@@ -1,27 +0,0 @@
1
- import type { PackageJson } from "type-fest";
2
- export interface CleanPackageOptions {
3
- /**
4
- * Dry run - don't write changes
5
- * @default false
6
- */
7
- dryRun?: boolean;
8
- /**
9
- * Fields to remove from package.json
10
- * @default ["scripts", "devDependencies", "packageManager"]
11
- */
12
- fieldsToRemove?: (keyof PackageJson)[];
13
- /**
14
- * Path to package.json file
15
- * @default "package.json"
16
- */
17
- packagePath?: string;
18
- }
19
- /**
20
- * Clean package.json by removing specified fields
21
- * Useful for prepack/prepublishOnly hooks
22
- */
23
- export declare const cleanPackage: (options?: CleanPackageOptions) => void;
24
- /**
25
- * CLI entry point
26
- */
27
- export declare const main: () => void;