@isentinel/eslint-config 5.0.0-beta.1 → 5.0.0-beta.10

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.
package/README.md CHANGED
@@ -365,8 +365,8 @@ content:
365
365
  ```yaml
366
366
  # cspell.config.yaml
367
367
  words:
368
- - isentinel
369
- - isverycool
368
+ - isentinel
369
+ - isverycool
370
370
  ```
371
371
 
372
372
  To disable this, you can set the `spellCheck` option to `false`:
package/dist/index.d.mts CHANGED
@@ -46,14 +46,12 @@ interface FlatGitignoreOptions {
46
46
  cwd?: string;
47
47
  }
48
48
  //#endregion
49
- //#region src/configs/prettier.d.ts
50
- type PrettierRuleOptions = Pick<Partial<Options>, "parser"> & Options & Record<string, unknown>;
51
- declare function prettier(options?: OptionsComponentExtensions & OptionsFiles & OptionsOverrides & OptionsTypeScriptParserOptions & {
49
+ //#region src/configs/oxfmt.d.ts
50
+ declare function oxfmt(options?: OptionsComponentExtensions & OptionsFiles & OptionsOverrides & {
52
51
  formatters?: OptionsFormatters | true;
53
- jsFormatter?: FormatterEngine;
52
+ oxfmtConfigOptions?: FormatOptions;
53
+ oxfmtOptions?: FormatOptions;
54
54
  prettierOptions?: Options;
55
- stylistic?: StylisticConfig;
56
- tsFormatter?: FormatterEngine;
57
55
  }): Promise<Array<TypedFlatConfigItem>>;
58
56
  //#endregion
59
57
  //#region src/typegen.d.ts
@@ -833,10 +831,6 @@ interface RuleOptions {
833
831
  * Use stylua to format lua files
834
832
  */
835
833
  'format-lua/stylua'?: Linter.RuleEntry<FormatLuaStylua>;
836
- /**
837
- * @see https://github.com/prettier/eslint-plugin-prettier#options
838
- */
839
- 'format/prettier'?: Linter.RuleEntry<FormatPrettier>;
840
834
  /**
841
835
  * Require or disallow spacing between function identifiers and their invocations
842
836
  * @see https://eslint.org/docs/latest/rules/func-call-spacing
@@ -9731,16 +9725,6 @@ type FormatLuaStylua = [] | [{
9731
9725
  [k: string]: unknown | undefined;
9732
9726
  };
9733
9727
  [k: string]: unknown | undefined;
9734
- }]; // ----- format/prettier -----
9735
- type FormatPrettier = [] | [{
9736
- [k: string]: unknown | undefined;
9737
- }] | [{
9738
- [k: string]: unknown | undefined;
9739
- }, {
9740
- usePrettierrc?: boolean;
9741
- fileInfoOptions?: {
9742
- [k: string]: unknown | undefined;
9743
- };
9744
9728
  }]; // ----- func-call-spacing -----
9745
9729
  type FuncCallSpacing = ([] | ["never"] | [] | ["always"] | ["always", {
9746
9730
  allowNewlines?: boolean;
@@ -17590,10 +17574,13 @@ type Yoda = [] | [("always" | "never")] | [("always" | "never"), {
17590
17574
  exceptRange?: boolean;
17591
17575
  onlyEquality?: boolean;
17592
17576
  }]; // Names of all the configs
17593
- type ConfigNames = 'isentinel/cease-nonsense' | 'isentinel/eslint/comments' | 'isentinel/eslint/comments/src' | 'isentinel/eslint-plugin/setup' | 'isentinel/eslint-plugin/rules' | 'isentinel/flawless/setup' | 'isentinel/flawless/ts/rules-type-aware' | 'isentinel/flawless/tsx/rules-type-aware' | 'isentinel/gitignore' | 'isentinel/ignores' | 'isentinel/imports/rules' | 'isentinel/imports/game' | 'isentinel/javascript/setup' | 'isentinel/javascript/rules' | 'isentinel/jsdoc/setup' | 'isentinel/jsdoc' | 'isentinel/jsonc/setup' | 'isentinel/jsonc/rules' | 'isentinel/markdown/setup' | 'isentinel/markdown/processor' | 'isentinel/markdown/parser' | 'isentinel/markdown/disables' | 'isentinel/node/rules' | 'isentinel/oxfmt/setup' | 'isentinel/oxfmt/javascript' | 'isentinel/oxfmt/typescript' | 'isentinel/package-json/setup' | 'isentinel/package-json' | 'isentinel/perfectionist/setup' | 'isentinel/perfectionist' | 'isentinel/perfectionist/jsx' | 'isentinel/pnpm/setup' | 'isentinel/pnpm/package-json' | 'isentinel/pnpm/pnpm-workspace-yaml' | 'isentinel/prettier/setup' | 'isentinel/prettier/css' | 'isentinel/prettier/scss' | 'isentinel/prettier/less' | 'isentinel/prettier/html' | 'isentinel/prettier/markdown' | 'isentinel/prettier/graphql' | 'isentinel/prettier/json' | 'isentinel/prettier/yaml' | 'isentinel/promise' | 'isentinel/react/setup' | 'isentinel/react/setup/naming' | 'isentinel/react/rules' | 'isentinel/react/type-aware-rules' | 'isentinel/roblox/setup' | 'isentinel/roblox/parser' | 'isentinel/roblox/type-aware-parser' | 'isentinel/roblox' | 'isentinel/roblox/rules-type-aware' | 'isentinel/roblox/format-lua/setup' | 'isentinel/roblox/format-lua' | 'isentinel/sonarjs' | 'isentinel/spelling/setup' | 'isentinel/spelling' | 'isentinel/stylistic/setup' | 'isentinel/stylistic' | 'isentinel/stylistic/ts' | 'isentinel/stylistic/js' | 'isentinel/stylistic/markdown-code' | 'isentinel/test/jest/setup' | 'isentinel/test/jest/rules' | 'isentinel/test/vitest/setup' | 'isentinel/test/vitest/rules' | 'isentinel/toml/setup' | 'isentinel/toml/rules' | 'isentinel/typescript/setup' | 'isentinel/typescript/parser' | 'isentinel/typescript/type-aware-parser' | 'isentinel/typescript/rules' | 'isentinel/typescript/rules-type-aware' | 'isentinel/typescript/erasable-syntax-only' | 'isentinel/unicorn' | 'isentinel/unicorn/root' | 'isentinel/yaml/setup' | 'isentinel/yaml/rules';
17577
+ type ConfigNames = 'isentinel/cease-nonsense' | 'isentinel/eslint/comments' | 'isentinel/eslint/comments/src' | 'isentinel/eslint-plugin/setup' | 'isentinel/eslint-plugin/rules' | 'isentinel/flawless/setup' | 'isentinel/flawless/ts/rules-type-aware' | 'isentinel/flawless/tsx/rules-type-aware' | 'isentinel/gitignore' | 'isentinel/ignores' | 'isentinel/imports/rules' | 'isentinel/imports/game' | 'isentinel/javascript/setup' | 'isentinel/javascript/rules' | 'isentinel/jsdoc/setup' | 'isentinel/jsdoc' | 'isentinel/jsonc/setup' | 'isentinel/jsonc/rules' | 'isentinel/markdown/setup' | 'isentinel/markdown/processor' | 'isentinel/markdown/parser' | 'isentinel/markdown/disables' | 'isentinel/node/rules' | 'isentinel/oxfmt/setup' | 'isentinel/oxfmt/javascript' | 'isentinel/oxfmt/typescript' | 'isentinel/oxfmt/css' | 'isentinel/oxfmt/scss' | 'isentinel/oxfmt/less' | 'isentinel/oxfmt/html' | 'isentinel/oxfmt/markdown' | 'isentinel/oxfmt/graphql' | 'isentinel/oxfmt/json' | 'isentinel/oxfmt/yaml' | 'isentinel/package-json/setup' | 'isentinel/package-json' | 'isentinel/perfectionist/setup' | 'isentinel/perfectionist' | 'isentinel/perfectionist/jsx' | 'isentinel/pnpm/setup' | 'isentinel/pnpm/package-json' | 'isentinel/pnpm/pnpm-workspace-yaml' | 'isentinel/promise' | 'isentinel/react/setup' | 'isentinel/react/setup/naming' | 'isentinel/react/rules' | 'isentinel/react/type-aware-rules' | 'isentinel/roblox/setup' | 'isentinel/roblox/parser' | 'isentinel/roblox/type-aware-parser' | 'isentinel/roblox' | 'isentinel/roblox/rules-type-aware' | 'isentinel/roblox/format-lua/setup' | 'isentinel/roblox/format-lua' | 'isentinel/sonarjs' | 'isentinel/spelling/setup' | 'isentinel/spelling' | 'isentinel/stylistic/setup' | 'isentinel/stylistic' | 'isentinel/stylistic/ts' | 'isentinel/stylistic/js' | 'isentinel/stylistic/markdown-code' | 'isentinel/test/jest/setup' | 'isentinel/test/jest/rules' | 'isentinel/test/vitest/setup' | 'isentinel/test/vitest/rules' | 'isentinel/toml/setup' | 'isentinel/toml/rules' | 'isentinel/typescript/setup' | 'isentinel/typescript/parser' | 'isentinel/typescript/type-aware-parser' | 'isentinel/typescript/rules' | 'isentinel/typescript/rules-type-aware' | 'isentinel/typescript/erasable-syntax-only' | 'isentinel/unicorn' | 'isentinel/unicorn/root' | 'isentinel/yaml/setup' | 'isentinel/yaml/rules';
17594
17578
  //#endregion
17595
17579
  //#region src/utils.d.ts
17596
17580
  type ExtractRuleOptions<T> = T extends Linter.RuleEntry<infer U> ? U : never;
17581
+ declare function isInGitHooksOrLintStaged(): boolean;
17582
+ declare function isInAgentSession(): boolean;
17583
+ declare function isInEditorEnvironment(): boolean;
17597
17584
  //#endregion
17598
17585
  //#region src/types.d.ts
17599
17586
  type Awaitable<T> = Promise<T> | T;
@@ -17652,7 +17639,6 @@ interface OptionsFilesTypeAware extends OptionsFiles {
17652
17639
  */
17653
17640
  ignoresTypeAware?: Array<string>;
17654
17641
  }
17655
- type FormatterEngine = "oxfmt" | "prettier";
17656
17642
  interface OptionsFormatters {
17657
17643
  /**
17658
17644
  * Enable formatting support for CSS, Less, Sass, and SCSS.
@@ -17672,12 +17658,6 @@ interface OptionsFormatters {
17672
17658
  * @default true
17673
17659
  */
17674
17660
  html?: boolean;
17675
- /**
17676
- * Formatter engine for JavaScript files.
17677
- *
17678
- * @default "oxfmt"
17679
- */
17680
- javascript?: FormatterEngine;
17681
17661
  /**
17682
17662
  * Enable formatting support for JSON(C|5).
17683
17663
  *
@@ -17704,15 +17684,10 @@ interface OptionsFormatters {
17704
17684
  /**
17705
17685
  * Custom options for Prettier.
17706
17686
  *
17707
- * By default it's controlled by our own config.
17687
+ * Used for arrow-return-style-x and as a migration source for oxfmt
17688
+ * options.
17708
17689
  */
17709
17690
  prettierOptions?: PrettierOptions;
17710
- /**
17711
- * Formatter engine for TypeScript files.
17712
- *
17713
- * @default "oxfmt"
17714
- */
17715
- typescript?: FormatterEngine;
17716
17691
  /**
17717
17692
  * Enable formatting support for YAML.
17718
17693
  *
@@ -17752,6 +17727,14 @@ interface OptionsJest {
17752
17727
  extended?: boolean;
17753
17728
  }
17754
17729
  interface OptionsVitest {
17730
+ /**
17731
+ * Enable the `eslint-plugin-jest-extended` ruleset.
17732
+ *
17733
+ * Requires `jest-extended` to be installed.
17734
+ *
17735
+ * @default false
17736
+ */
17737
+ extended?: boolean;
17755
17738
  /**
17756
17739
  * Enable typecheck rules for Vitest.
17757
17740
  *
@@ -18130,15 +18113,6 @@ declare function markdown(options?: OptionsComponentExtensions & OptionsFiles &
18130
18113
  //#region src/configs/node.d.ts
18131
18114
  declare function node(): Promise<Array<TypedFlatConfigItem>>;
18132
18115
  //#endregion
18133
- //#region src/configs/oxfmt.d.ts
18134
- declare function oxfmt(options?: OptionsComponentExtensions & OptionsFiles & OptionsOverrides & {
18135
- jsFormatter?: FormatterEngine;
18136
- oxfmtConfigOptions?: FormatOptions;
18137
- oxfmtOptions?: FormatOptions;
18138
- prettierOptions?: PrettierOptions;
18139
- tsFormatter?: FormatterEngine;
18140
- }): Promise<Array<TypedFlatConfigItem>>;
18141
- //#endregion
18142
18116
  //#region src/configs/package-json.d.ts
18143
18117
  declare function packageJson(options?: OptionsHasRoblox & OptionsProjectType & OptionsStylistic): Promise<Array<TypedFlatConfigItem>>;
18144
18118
  //#endregion
@@ -18282,4 +18256,4 @@ declare const GLOB_BUILD_TOOLS: Array<string>;
18282
18256
  declare const GLOB_ALL_SRC: string[];
18283
18257
  declare const GLOB_EXCLUDE: string[];
18284
18258
  //#endregion
18285
- export { Awaitable, type ConfigNames, type FlatConfigComposer, FormatterEngine, GLOB_ALL_JSON, GLOB_ALL_SRC, GLOB_BUILD_TOOLS, GLOB_CSS, GLOB_DTS, GLOB_EXCLUDE, GLOB_GRAPHQL, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LUA, GLOB_MARKDOWN, GLOB_MARKDOWN_BLOCKS, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_ROOT, GLOB_ROOT_SRC, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_XML, GLOB_YAML, GitignoreOptions, JsdocOptions, NamedFlatConfigItem, NamedOptionsConfig, OptionsComponentExtensions, OptionsConfig, OptionsFiles, OptionsFilesTypeAware, OptionsFormatters, OptionsHasRoblox, OptionsHasTypeScript, OptionsIsInEditor, OptionsJest, OptionsOverrides, OptionsOverridesTypeAware, OptionsPnpm, OptionsProjectType, OptionsStylistic, OptionsTestFramework, OptionsTypeScriptErasableOnly, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, OptionsTypescript, OptionsVitest, type OxfmtOptions, PerfectionistConfig, type PrettierOptions, PrettierRuleOptions, ReactConfig, Rules, SpellCheckConfig, StylisticConfig, StylisticConfigDefaults, TypedFlatConfigItem, ceaseNonsense, comments, isentinel as default, isentinel, defaultPluginRenaming, disables, eslintPlugin, flawless, gitignore, ignores, imports, javascript, jsdoc, jsonc, markdown, node, oxfmt, packageJson, perfectionist, pnpm, prettier, promise, react, roblox, sonarjs, sortGithubAction, sortPnpmWorkspace, sortRojoProject, sortTsconfig, spelling, stylistic, test, toml, typescript, unicorn, yaml };
18259
+ export { Awaitable, type ConfigNames, type FlatConfigComposer, GLOB_ALL_JSON, GLOB_ALL_SRC, GLOB_BUILD_TOOLS, GLOB_CSS, GLOB_DTS, GLOB_EXCLUDE, GLOB_GRAPHQL, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LUA, GLOB_MARKDOWN, GLOB_MARKDOWN_BLOCKS, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_ROOT, GLOB_ROOT_SRC, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_XML, GLOB_YAML, GitignoreOptions, JsdocOptions, NamedFlatConfigItem, NamedOptionsConfig, OptionsComponentExtensions, OptionsConfig, OptionsFiles, OptionsFilesTypeAware, OptionsFormatters, OptionsHasRoblox, OptionsHasTypeScript, OptionsIsInEditor, OptionsJest, OptionsOverrides, OptionsOverridesTypeAware, OptionsPnpm, OptionsProjectType, OptionsStylistic, OptionsTestFramework, OptionsTypeScriptErasableOnly, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, OptionsTypescript, OptionsVitest, type OxfmtOptions, PerfectionistConfig, type PrettierOptions, ReactConfig, Rules, SpellCheckConfig, StylisticConfig, StylisticConfigDefaults, TypedFlatConfigItem, ceaseNonsense, comments, isentinel as default, isentinel, defaultPluginRenaming, disables, eslintPlugin, flawless, gitignore, ignores, imports, isInAgentSession, isInEditorEnvironment, isInGitHooksOrLintStaged, javascript, jsdoc, jsonc, markdown, node, oxfmt, packageJson, perfectionist, pnpm, promise, react, roblox, sonarjs, sortGithubAction, sortPnpmWorkspace, sortRojoProject, sortTsconfig, spelling, stylistic, test, toml, typescript, unicorn, yaml };
package/dist/index.mjs CHANGED
@@ -3,7 +3,7 @@ import { isPackageExists } from "local-pkg";
3
3
  import fs from "node:fs";
4
4
  import path, { dirname, join, relative, resolve } from "node:path";
5
5
  import process from "node:process";
6
- import prettier$1 from "prettier";
6
+ import prettier from "prettier";
7
7
  import { findUp, findUpSync } from "find-up-simple";
8
8
  import { convertIgnorePatternToMinimatch } from "@eslint/compat";
9
9
  import fs$1 from "node:fs/promises";
@@ -142,6 +142,7 @@ function isInGitHooksOrLintStaged() {
142
142
  function isInAgentSession() {
143
143
  return [
144
144
  process.env["CLAUDECODE"],
145
+ process.env["CLAUDE_CODE_ENTRYPOINT"],
145
146
  process.env["CODEX_THREAD_ID"],
146
147
  process.env["CURSOR_AGENT"],
147
148
  process.env["GEMINI_CLI"],
@@ -187,13 +188,6 @@ function mergeGlobs(globs, additionalPatterns) {
187
188
  } else result.push(pattern);
188
189
  return result;
189
190
  }
190
- function mergePrettierOptions(options, overrides = {}) {
191
- return {
192
- ...options,
193
- ...overrides,
194
- plugins: [...overrides.plugins ?? [], ...options.plugins ?? []]
195
- };
196
- }
197
191
  /**
198
192
  * Rename plugin prefixes in a rule object. Accepts a map of prefixes to rename.
199
193
  *
@@ -232,7 +226,7 @@ function renameRules(rules, map) {
232
226
  */
233
227
  async function resolvePrettierConfigOptions() {
234
228
  try {
235
- return await prettier$1.resolveConfig("package.json", { editorconfig: true }) ?? {};
229
+ return await prettier.resolveConfig("package.json", { editorconfig: true }) ?? {};
236
230
  } catch {
237
231
  return {};
238
232
  }
@@ -247,8 +241,9 @@ async function resolveOxfmtConfigOptions() {
247
241
  for (const filename of OXFMT_CONFIG_FILES) {
248
242
  const configPath = path.resolve(process.cwd(), filename);
249
243
  try {
250
- const content = fs.readFileSync(configPath, "utf-8");
251
- return JSON.parse(content);
244
+ const content = await fs.promises.readFile(configPath, "utf-8");
245
+ const { $schema: _, ...config } = JSON.parse(content);
246
+ return config;
252
247
  } catch {
253
248
  continue;
254
249
  }
@@ -256,27 +251,17 @@ async function resolveOxfmtConfigOptions() {
256
251
  return {};
257
252
  }
258
253
  /**
259
- * Check if a feature should be enabled based on options. Handles the pattern
260
- * where features can be disabled globally or individually.
261
- *
262
- * @template T - The type of the options object.
263
- * @template K - The key type within the options object.
264
- * @param options - The options object (true | false | undefined | object).
265
- * @param key - The key to check within the options object.
266
- * @param defaultValue - Default value when key is not specified.
267
- * @returns Whether the feature should be enabled.
268
- */
269
- /**
270
254
  * Override the severity of all rules in a rules object, preserving rule
271
255
  * options. Rules set to `"off"` are not affected.
272
256
  *
273
257
  * @param rules - The rules object to override.
274
258
  * @param severity - The target severity level.
259
+ * @param excludeRules - Rules to exclude from the severity override.
275
260
  * @returns A new rules object with overridden severities.
276
261
  */
277
- function overrideRuleSeverity(rules, severity) {
262
+ function overrideRuleSeverity(rules, severity, excludeRules = /* @__PURE__ */ new Set()) {
278
263
  return Object.fromEntries(Object.entries(rules).map(([key, value]) => {
279
- if (value === "off" || value === 0) return [key, value];
264
+ if (value === "off" || value === 0 || excludeRules.has(key)) return [key, value];
280
265
  if (Array.isArray(value)) {
281
266
  const [currentSeverity, ...options] = value;
282
267
  if (currentSeverity === "off" || currentSeverity === 0) return [key, value];
@@ -398,7 +383,7 @@ const GLOB_EXCLUDE = [
398
383
  "**/.cache",
399
384
  "**/.changeset",
400
385
  "**/.agents",
401
- "**/.claude",
386
+ "**/.claude/**/*",
402
387
  "**/.gemini",
403
388
  "**/.kilocode",
404
389
  "**/.opencode",
@@ -462,8 +447,8 @@ async function comments(options = {}) {
462
447
  name: "isentinel/eslint/comments/src",
463
448
  files: [GLOB_SRC],
464
449
  rules: { "comment-length/limit-single-line-comments": ["error", {
465
- maxLength: Number(prettierOptions["jsdocPrintWidth"]) + 2,
466
- tabSize: prettierOptions.tabWidth
450
+ maxLength: (Number(prettierOptions["jsdocPrintWidth"]) || 80) + 2,
451
+ tabSize: prettierOptions.tabWidth ?? 4
467
452
  }] }
468
453
  }] : []];
469
454
  }
@@ -504,7 +489,8 @@ async function disables(options) {
504
489
  files: ["**/bin/**/*", `**/bin.${GLOB_SRC_EXT}`],
505
490
  rules: {
506
491
  "antfu/no-import-dist": "off",
507
- "antfu/no-import-node-modules-by-path": "off"
492
+ "antfu/no-import-node-modules-by-path": "off",
493
+ "antfu/no-top-level-await": "off"
508
494
  }
509
495
  },
510
496
  {
@@ -531,8 +517,10 @@ async function disables(options) {
531
517
  "max-lines-per-function": "off",
532
518
  "no-empty-function": "off",
533
519
  "no-unused-expressions": "off",
520
+ "sonar/no-duplicate-string": "off",
534
521
  "ts/explicit-function-return-type": "off",
535
522
  "ts/no-empty-function": "off",
523
+ "ts/no-extraneous-class": "off",
536
524
  "ts/no-non-null-assertion": "off",
537
525
  "ts/unbound-method": "off",
538
526
  "unicorn/consistent-function-scoping": "off"
@@ -1726,11 +1714,12 @@ const defaultPluginRenaming = {
1726
1714
  "yml": "yaml"
1727
1715
  };
1728
1716
  async function isentinel(options, ...userConfigs) {
1729
- const { autoRenamePlugins = true, componentExts: componentExtensions = [], eslintPlugin: enableEslintPlugin = false, formatters, gitignore: enableGitignore = true, jsdoc: enableJsdoc = true, jsx: enableJsx = true, pnpm: enableCatalogs = findUpSync("pnpm-workspace.yaml") !== void 0, react: enableReact = false, root: customRootGlobs, spellCheck: enableSpellCheck, typescript: enableTypeScript } = options;
1717
+ const { autoRenamePlugins = true, componentExts: componentExtensions = [], eslintPlugin: enableEslintPlugin = false, formatters, gitignore: enableGitignore = true, jsdoc: enableJsdoc = true, jsx: enableJsx = true, pnpm: enableCatalogs = findUpSync("pnpm-workspace.yaml") !== void 0, react: enableReact = false, root: customRootGlobs, spellCheck: enableSpellCheck } = options;
1730
1718
  const rootGlobs = mergeGlobs(GLOB_ROOT, customRootGlobs);
1731
1719
  const enableRoblox = options.roblox !== false;
1720
+ const inAgentSession = isInAgentSession();
1732
1721
  let { defaultSeverity, isInEditor } = options;
1733
- if (defaultSeverity === void 0 && isInAgentSession()) defaultSeverity = "error";
1722
+ if (defaultSeverity === void 0 && inAgentSession) defaultSeverity = "error";
1734
1723
  if (isInEditor === void 0) {
1735
1724
  isInEditor = isInEditorEnvironment();
1736
1725
  if (isInEditor) console.log("[@isentinel/eslint-config] Detected running in editor, some rules are disabled.");
@@ -1747,24 +1736,17 @@ async function isentinel(options, ...userConfigs) {
1747
1736
  })();
1748
1737
  if (stylisticOptions !== false && !("jsx" in stylisticOptions)) stylisticOptions.jsx = enableJsx;
1749
1738
  const formatterOptions = typeof options.formatters === "object" ? options.formatters : {};
1750
- const jsFormatter = formatterOptions.javascript ?? "oxfmt";
1751
- const tsFormatter = formatterOptions.typescript ?? "oxfmt";
1752
- const useOxfmt = options.formatters !== false && (jsFormatter === "oxfmt" || tsFormatter === "oxfmt");
1753
1739
  const prettierOptions = formatterOptions.prettierOptions ?? {};
1754
1740
  const editorConfigOptions = await resolvePrettierConfigOptions();
1755
- const oxfmtConfigOptions = useOxfmt ? await resolveOxfmtConfigOptions() : {};
1741
+ const oxfmtConfigOptions = options.formatters !== false ? await resolveOxfmtConfigOptions() : {};
1756
1742
  const prettierSettings = Object.assign({
1757
1743
  arrowParens: "always",
1758
- jsdocPreferCodeFences: true,
1759
- jsdocPrintWidth: 80,
1760
- plugins: [require$1.resolve("prettier-plugin-jsdoc")],
1761
1744
  printWidth: 100,
1762
1745
  quoteProps: "consistent",
1763
1746
  semi: true,
1764
1747
  singleQuote: false,
1765
1748
  tabWidth: 4,
1766
1749
  trailingComma: "all",
1767
- tsdoc: true,
1768
1750
  useTabs: true
1769
1751
  }, editorConfigOptions, prettierOptions);
1770
1752
  const configs = [];
@@ -1871,26 +1853,20 @@ async function isentinel(options, ...userConfigs) {
1871
1853
  isInEditor
1872
1854
  }));
1873
1855
  configs.push(disables({ root: rootGlobs }));
1874
- if (stylisticOptions !== false) {
1875
- configs.push(prettier({
1876
- ...resolveWithDefaults(enableTypeScript, {}),
1877
- ...getOverrides(options, "typescript"),
1878
- componentExts: componentExtensions,
1879
- formatters: formatters !== false ? formatters : void 0,
1880
- jsFormatter,
1881
- prettierOptions: prettierSettings,
1882
- stylistic: stylisticOptions,
1883
- tsFormatter
1884
- }));
1885
- if (useOxfmt) configs.push(oxfmt({
1886
- componentExts: componentExtensions,
1887
- jsFormatter,
1888
- oxfmtConfigOptions,
1889
- oxfmtOptions: formatterOptions.oxfmtOptions,
1890
- prettierOptions: prettierSettings,
1891
- tsFormatter
1892
- }));
1893
- }
1856
+ if (stylisticOptions !== false) configs.push(oxfmt({
1857
+ componentExts: componentExtensions,
1858
+ formatters: formatters !== false ? formatters : {
1859
+ css: false,
1860
+ graphql: false,
1861
+ html: false,
1862
+ json: false,
1863
+ markdown: false,
1864
+ yaml: false
1865
+ },
1866
+ oxfmtConfigOptions,
1867
+ oxfmtOptions: formatterOptions.oxfmtOptions,
1868
+ prettierOptions: prettierSettings
1869
+ }));
1894
1870
  if ("files" in options) throw new Error("[@isentinel/eslint-config] The first argument should not contain the \"files\" property as the options are supposed to be global. Place it in the second or later config instead.");
1895
1871
  const fusedConfig = flatConfigProps.reduce((accumulator, key) => {
1896
1872
  if (key in options) accumulator[key] = options[key];
@@ -1900,27 +1876,39 @@ async function isentinel(options, ...userConfigs) {
1900
1876
  let composer = new FlatConfigComposer();
1901
1877
  composer = composer.append(...configs, ...userConfigs);
1902
1878
  if (autoRenamePlugins) composer = composer.renamePlugins(defaultPluginRenaming);
1903
- if (isInEditor) {
1904
- const disableAutofixRules = [
1905
- "no-useless-return",
1906
- "prefer-const",
1907
- "unused-imports/no-unused-imports"
1908
- ];
1909
- if (enableRoblox) disableAutofixRules.push("unicorn/no-array-for-each");
1879
+ if (isInEditor || inAgentSession) {
1880
+ const disableAutofixRules = [];
1881
+ if (isInEditor) {
1882
+ disableAutofixRules.push("no-useless-return", "prefer-const", "unused-imports/no-unused-imports");
1883
+ if (enableRoblox) disableAutofixRules.push("unicorn/no-array-for-each");
1884
+ }
1885
+ if (inAgentSession) disableAutofixRules.push("ts/consistent-type-imports");
1910
1886
  composer = composer.disableRulesFix(disableAutofixRules, { builtinRules: async () => {
1911
1887
  return (await import("eslint/use-at-your-own-risk")).builtinRules;
1912
1888
  } });
1913
1889
  }
1914
- if (defaultSeverity) composer = composer.onResolved((item) => {
1915
- for (const config of item) if (config.rules) config.rules = overrideRuleSeverity(config.rules, defaultSeverity);
1916
- });
1890
+ if (defaultSeverity) {
1891
+ const severityExcludeRules = new Set(["sonar/todo-tag"]);
1892
+ composer = composer.onResolved((item) => {
1893
+ for (const config of item) if (config.rules) config.rules = overrideRuleSeverity(config.rules, defaultSeverity, severityExcludeRules);
1894
+ });
1895
+ }
1917
1896
  return composer;
1918
1897
  }
1919
1898
 
1920
1899
  //#endregion
1921
1900
  //#region src/configs/oxfmt.ts
1922
1901
  async function oxfmt(options) {
1923
- const { componentExts: componentExtensions = [], files: oxfmtFiles, jsFormatter = "oxfmt", oxfmtConfigOptions = {}, oxfmtOptions: userOxfmtOptions, prettierOptions = {}, tsFormatter = "oxfmt" } = options ?? {};
1902
+ const { componentExts: componentExtensions = [], files: oxfmtFiles, formatters = {}, oxfmtConfigOptions = {}, oxfmtOptions: userOxfmtOptions, prettierOptions = {} } = options ?? {};
1903
+ const formattingOptions = {
1904
+ css: true,
1905
+ graphql: true,
1906
+ html: true,
1907
+ json: true,
1908
+ markdown: true,
1909
+ yaml: true,
1910
+ ...resolveWithDefaults(formatters, {})
1911
+ };
1924
1912
  const oxfmtOptions = {
1925
1913
  sortImports: {
1926
1914
  customGroups: [{
@@ -1953,6 +1941,7 @@ async function oxfmt(options) {
1953
1941
  ],
1954
1942
  newlinesBetween: true
1955
1943
  },
1944
+ sortPackageJson: false,
1956
1945
  ...migratePrettierOptions(prettierOptions),
1957
1946
  ...oxfmtConfigOptions,
1958
1947
  ...userOxfmtOptions
@@ -1965,45 +1954,90 @@ async function oxfmt(options) {
1965
1954
  name: "isentinel/oxfmt/setup",
1966
1955
  plugins: { oxfmt: pluginOxfmt }
1967
1956
  }];
1968
- if (jsFormatter === "oxfmt") {
1969
- const jsFiles = oxfmtFiles ?? [
1970
- GLOB_JS,
1971
- GLOB_JSX,
1972
- `${GLOB_MARKDOWN}/${GLOB_JS}`,
1973
- `${GLOB_MARKDOWN}/${GLOB_JSX}`
1974
- ];
1975
- configs.push({
1976
- name: "isentinel/oxfmt/javascript",
1977
- files: jsFiles,
1978
- rules: {
1979
- ...rules,
1980
- "arrow-body-style": "off",
1981
- "format/prettier": "off",
1982
- "oxfmt/oxfmt": ["error", oxfmtOptions],
1983
- "prefer-arrow-callback": "off"
1984
- }
1985
- });
1986
- }
1987
- if (tsFormatter === "oxfmt") {
1988
- const tsFiles = oxfmtFiles ?? [
1989
- GLOB_TS,
1990
- GLOB_TSX,
1991
- `${GLOB_MARKDOWN}/${GLOB_TS}`,
1992
- `${GLOB_MARKDOWN}/${GLOB_TSX}`,
1993
- ...componentExtensions.map((extension) => `**/*.${extension}`)
1994
- ];
1995
- configs.push({
1996
- name: "isentinel/oxfmt/typescript",
1997
- files: tsFiles,
1998
- rules: {
1999
- ...rules,
2000
- "arrow-body-style": "off",
2001
- "format/prettier": "off",
2002
- "oxfmt/oxfmt": ["error", oxfmtOptions],
2003
- "prefer-arrow-callback": "off"
2004
- }
2005
- });
2006
- }
1957
+ const jsFiles = oxfmtFiles ?? [
1958
+ GLOB_JS,
1959
+ GLOB_JSX,
1960
+ `${GLOB_MARKDOWN}/${GLOB_JS}`,
1961
+ `${GLOB_MARKDOWN}/${GLOB_JSX}`
1962
+ ];
1963
+ configs.push({
1964
+ name: "isentinel/oxfmt/javascript",
1965
+ files: jsFiles,
1966
+ rules: {
1967
+ ...rules,
1968
+ "arrow-body-style": "off",
1969
+ "oxfmt/oxfmt": ["error", oxfmtOptions],
1970
+ "prefer-arrow-callback": "off"
1971
+ }
1972
+ });
1973
+ const tsFiles = oxfmtFiles ?? [
1974
+ GLOB_TS,
1975
+ GLOB_TSX,
1976
+ `${GLOB_MARKDOWN}/${GLOB_TS}`,
1977
+ `${GLOB_MARKDOWN}/${GLOB_TSX}`,
1978
+ ...componentExtensions.map((extension) => `**/*.${extension}`)
1979
+ ];
1980
+ configs.push({
1981
+ name: "isentinel/oxfmt/typescript",
1982
+ files: tsFiles,
1983
+ rules: {
1984
+ ...rules,
1985
+ "arrow-body-style": "off",
1986
+ "oxfmt/oxfmt": ["error", oxfmtOptions],
1987
+ "prefer-arrow-callback": "off"
1988
+ }
1989
+ });
1990
+ if (formattingOptions.css) configs.push({
1991
+ name: "isentinel/oxfmt/css",
1992
+ files: [GLOB_CSS, GLOB_POSTCSS],
1993
+ languageOptions: { parser: parserPlain },
1994
+ rules: { "oxfmt/oxfmt": ["error", oxfmtOptions] }
1995
+ }, {
1996
+ name: "isentinel/oxfmt/scss",
1997
+ files: [GLOB_SCSS],
1998
+ languageOptions: { parser: parserPlain },
1999
+ rules: { "oxfmt/oxfmt": ["error", oxfmtOptions] }
2000
+ }, {
2001
+ name: "isentinel/oxfmt/less",
2002
+ files: [GLOB_LESS],
2003
+ languageOptions: { parser: parserPlain },
2004
+ rules: { "oxfmt/oxfmt": ["error", oxfmtOptions] }
2005
+ });
2006
+ if (formattingOptions.html) configs.push({
2007
+ name: "isentinel/oxfmt/html",
2008
+ files: ["**/*.html"],
2009
+ languageOptions: { parser: parserPlain },
2010
+ rules: { "oxfmt/oxfmt": ["error", oxfmtOptions] }
2011
+ });
2012
+ if (formattingOptions.markdown) configs.push({
2013
+ name: "isentinel/oxfmt/markdown",
2014
+ files: [GLOB_MARKDOWN],
2015
+ rules: { "oxfmt/oxfmt": ["error", {
2016
+ ...oxfmtOptions,
2017
+ printWidth: Number(prettierOptions["jsdocPrintWidth"]) || 80,
2018
+ proseWrap: "always"
2019
+ }] }
2020
+ });
2021
+ if (formattingOptions.graphql) configs.push({
2022
+ name: "isentinel/oxfmt/graphql",
2023
+ files: ["**/*.graphql"],
2024
+ languageOptions: { parser: parserPlain },
2025
+ rules: { "oxfmt/oxfmt": ["error", oxfmtOptions] }
2026
+ });
2027
+ if (formattingOptions.json) configs.push({
2028
+ name: "isentinel/oxfmt/json",
2029
+ files: [GLOB_ALL_JSON],
2030
+ rules: { "oxfmt/oxfmt": ["error", oxfmtOptions] }
2031
+ });
2032
+ if (formattingOptions.yaml) configs.push({
2033
+ name: "isentinel/oxfmt/yaml",
2034
+ files: [GLOB_YAML],
2035
+ rules: { "oxfmt/oxfmt": ["error", {
2036
+ ...oxfmtOptions,
2037
+ tabWidth: 2,
2038
+ useTabs: false
2039
+ }] }
2040
+ });
2007
2041
  return configs;
2008
2042
  }
2009
2043
  const UNSUPPORTED_PRETTIER_KEYS = new Set([
@@ -2260,119 +2294,6 @@ async function detectCatalogUsage() {
2260
2294
  return yaml.includes("catalog:") || yaml.includes("catalogs:");
2261
2295
  }
2262
2296
 
2263
- //#endregion
2264
- //#region src/configs/prettier.ts
2265
- async function prettier(options) {
2266
- const { componentExts: componentExtensions = [], files: prettierFiles, formatters = {}, jsFormatter = "oxfmt", prettierOptions = {}, tsFormatter = "oxfmt" } = options ?? {};
2267
- const formattingOptions = {
2268
- css: true,
2269
- graphql: true,
2270
- html: true,
2271
- json: true,
2272
- markdown: true,
2273
- yaml: true,
2274
- ...resolveWithDefaults(formatters, {})
2275
- };
2276
- const [configPrettier, pluginPrettier] = await Promise.all([interopDefault(import("eslint-config-prettier/flat")), interopDefault(import("eslint-plugin-prettier"))]);
2277
- const rulesToIgnore = ["curly", "style/quotes"];
2278
- const rules = renameRules(configPrettier.rules, defaultPluginRenaming);
2279
- for (const rule of rulesToIgnore) delete rules[rule];
2280
- const configs = [{
2281
- name: "isentinel/prettier/setup",
2282
- plugins: { format: pluginPrettier }
2283
- }];
2284
- if (jsFormatter === "prettier") {
2285
- const jsFiles = prettierFiles ?? [
2286
- GLOB_JS,
2287
- GLOB_JSX,
2288
- `${GLOB_MARKDOWN}/${GLOB_JS}`,
2289
- `${GLOB_MARKDOWN}/${GLOB_JSX}`
2290
- ];
2291
- configs.push({
2292
- name: "isentinel/prettier/javascript",
2293
- files: jsFiles,
2294
- rules: {
2295
- ...rules,
2296
- "arrow-body-style": "off",
2297
- "format/prettier": ["error", mergePrettierOptions(prettierOptions, {})],
2298
- "prefer-arrow-callback": "off"
2299
- }
2300
- });
2301
- }
2302
- if (tsFormatter === "prettier") {
2303
- const tsFiles = prettierFiles ?? [
2304
- GLOB_TS,
2305
- GLOB_TSX,
2306
- `${GLOB_MARKDOWN}/${GLOB_TS}`,
2307
- `${GLOB_MARKDOWN}/${GLOB_TSX}`,
2308
- ...componentExtensions.map((extension) => `**/*.${extension}`)
2309
- ];
2310
- configs.push({
2311
- name: "isentinel/prettier/typescript",
2312
- files: tsFiles,
2313
- rules: {
2314
- ...rules,
2315
- "arrow-body-style": "off",
2316
- "format/prettier": ["error", mergePrettierOptions(prettierOptions, {})],
2317
- "prefer-arrow-callback": "off"
2318
- }
2319
- });
2320
- }
2321
- if (formattingOptions.css) configs.push({
2322
- name: "isentinel/prettier/css",
2323
- files: [GLOB_CSS, GLOB_POSTCSS],
2324
- languageOptions: { parser: parserPlain },
2325
- rules: { "format/prettier": ["error", mergePrettierOptions(prettierOptions, { parser: "css" })] }
2326
- }, {
2327
- name: "isentinel/prettier/scss",
2328
- files: [GLOB_SCSS],
2329
- languageOptions: { parser: parserPlain },
2330
- rules: { "format/prettier": ["error", mergePrettierOptions(prettierOptions, { parser: "scss" })] }
2331
- }, {
2332
- name: "isentinel/prettier/less",
2333
- files: [GLOB_LESS],
2334
- languageOptions: { parser: parserPlain },
2335
- rules: { "format/prettier": ["error", mergePrettierOptions(prettierOptions, { parser: "less" })] }
2336
- });
2337
- if (formattingOptions.html) configs.push({
2338
- name: "isentinel/prettier/html",
2339
- files: ["**/*.html"],
2340
- languageOptions: { parser: parserPlain },
2341
- rules: { "format/prettier": ["error", mergePrettierOptions(prettierOptions, { parser: "html" })] }
2342
- });
2343
- if (formattingOptions.markdown) configs.push({
2344
- name: "isentinel/prettier/markdown",
2345
- files: [GLOB_MARKDOWN],
2346
- rules: { "format/prettier": ["error", mergePrettierOptions(prettierOptions, {
2347
- embeddedLanguageFormatting: "auto",
2348
- parser: "markdown",
2349
- printWidth: Number(prettierOptions["jsdocPrintWidth"]) || 80,
2350
- proseWrap: "always"
2351
- })] }
2352
- });
2353
- if (formattingOptions.graphql) configs.push({
2354
- name: "isentinel/prettier/graphql",
2355
- files: ["**/*.graphql"],
2356
- languageOptions: { parser: parserPlain },
2357
- rules: { "format/prettier": ["error", mergePrettierOptions(prettierOptions, { parser: "graphql" })] }
2358
- });
2359
- if (formattingOptions.json) configs.push({
2360
- name: "isentinel/prettier/json",
2361
- files: [GLOB_ALL_JSON],
2362
- rules: { "format/prettier": ["error", mergePrettierOptions(prettierOptions, { parser: "json" })] }
2363
- });
2364
- if (formattingOptions.yaml) configs.push({
2365
- name: "isentinel/prettier/yaml",
2366
- files: [GLOB_YAML],
2367
- rules: { "format/prettier": ["error", mergePrettierOptions(prettierOptions, {
2368
- parser: "yaml",
2369
- tabWidth: 2,
2370
- useTabs: false
2371
- })] }
2372
- });
2373
- return configs;
2374
- }
2375
-
2376
2297
  //#endregion
2377
2298
  //#region src/configs/promise.ts
2378
2299
  async function promise() {
@@ -3324,7 +3245,7 @@ async function stylistic(options = {}, prettierOptions = {}) {
3324
3245
  maxObjectProperties: 2,
3325
3246
  namedExportsAlwaysUseExplicitReturn: true,
3326
3247
  objectReturnStyle: "complex-explicit",
3327
- usePrettier: mergePrettierOptions(prettierOptions, {})
3248
+ usePrettier: prettierOptions
3328
3249
  }] };
3329
3250
  }
3330
3251
  return [
@@ -3520,10 +3441,20 @@ async function test(options = {}) {
3520
3441
  if (enableVitest) {
3521
3442
  await ensurePackages(["@vitest/eslint-plugin"]);
3522
3443
  const vitestPlugin = await interopDefault(import("@vitest/eslint-plugin"));
3444
+ const useJestExtended = vitestOptions.extended === true;
3445
+ const jestExtendedPlugin = await (async () => {
3446
+ if (!useJestExtended) return;
3447
+ await ensurePackages(["eslint-plugin-jest-extended"]);
3448
+ return interopDefault(import("eslint-plugin-jest-extended"));
3449
+ })();
3523
3450
  pluginVitest ??= { ...vitestPlugin };
3451
+ pluginJestExtended ??= { ...jestExtendedPlugin };
3524
3452
  configs.push({
3525
3453
  name: "isentinel/test/vitest/setup",
3526
- plugins: { vitest: pluginVitest }
3454
+ plugins: {
3455
+ vitest: pluginVitest,
3456
+ ...useJestExtended ? { "jest-extended": pluginJestExtended } : {}
3457
+ }
3527
3458
  }, {
3528
3459
  name: "isentinel/test/vitest/rules",
3529
3460
  files,
@@ -3561,7 +3492,10 @@ async function test(options = {}) {
3561
3492
  "vitest/no-standalone-expect": "error",
3562
3493
  "vitest/no-test-prefixes": "error",
3563
3494
  "vitest/no-test-return-statement": "error",
3495
+ "vitest/no-unneeded-async-expect-function": "error",
3564
3496
  "vitest/prefer-called-exactly-once-with": "warn",
3497
+ "vitest/prefer-called-once": "error",
3498
+ "vitest/prefer-called-with": "error",
3565
3499
  "vitest/prefer-comparison-matcher": "warn",
3566
3500
  "vitest/prefer-describe-function-title": "warn",
3567
3501
  "vitest/prefer-each": "warn",
@@ -3583,6 +3517,8 @@ async function test(options = {}) {
3583
3517
  "vitest/prefer-to-be": "error",
3584
3518
  "vitest/prefer-to-be-object": "error",
3585
3519
  "vitest/prefer-to-contain": "error",
3520
+ "vitest/prefer-to-have-been-called-times": "error",
3521
+ "vitest/prefer-to-have-length": "error",
3586
3522
  "vitest/prefer-todo": "warn",
3587
3523
  "vitest/prefer-vi-mocked": "error",
3588
3524
  "vitest/require-awaited-expect-poll": "error",
@@ -3597,6 +3533,13 @@ async function test(options = {}) {
3597
3533
  ignoreTypeOfDescribeName: true,
3598
3534
  mustMatch: { it: ["^should", "Test title must start with \"should\""] }
3599
3535
  }],
3536
+ ...useJestExtended ? {
3537
+ "jest-extended/prefer-to-be-array": "error",
3538
+ "jest-extended/prefer-to-be-false": "error",
3539
+ "jest-extended/prefer-to-be-object": "error",
3540
+ "jest-extended/prefer-to-be-true": "error",
3541
+ "jest-extended/prefer-to-have-been-called-once": "error"
3542
+ } : {},
3600
3543
  ...stylistic !== false ? { "vitest/padding-around-all": "warn" } : {},
3601
3544
  ...overrides
3602
3545
  },
@@ -3673,6 +3616,7 @@ async function typescript(options = {}) {
3673
3616
  }],
3674
3617
  "ts/dot-notation": ["error", { allowKeywords: true }],
3675
3618
  "ts/no-confusing-void-expression": "error",
3619
+ "ts/no-deprecated": "error",
3676
3620
  "ts/no-duplicate-type-constituents": "error",
3677
3621
  "ts/no-empty-object-type": "error",
3678
3622
  "ts/no-floating-promises": ["error", { ignoreVoid: true }],
@@ -4004,4 +3948,4 @@ async function yaml(options = {}) {
4004
3948
  }
4005
3949
 
4006
3950
  //#endregion
4007
- export { GLOB_ALL_JSON, GLOB_ALL_SRC, GLOB_BUILD_TOOLS, GLOB_CSS, GLOB_DTS, GLOB_EXCLUDE, GLOB_GRAPHQL, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LUA, GLOB_MARKDOWN, GLOB_MARKDOWN_BLOCKS, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_ROOT, GLOB_ROOT_SRC, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_XML, GLOB_YAML, StylisticConfigDefaults, ceaseNonsense, comments, isentinel as default, isentinel, defaultPluginRenaming, disables, eslintPlugin, flawless, gitignore, ignores, imports, javascript, jsdoc, jsonc, markdown, node, oxfmt, packageJson, perfectionist, pnpm, prettier, promise, react, roblox, sonarjs, sortGithubAction, sortPnpmWorkspace, sortRojoProject, sortTsconfig, spelling, stylistic, test, toml, typescript, unicorn, yaml };
3951
+ export { GLOB_ALL_JSON, GLOB_ALL_SRC, GLOB_BUILD_TOOLS, GLOB_CSS, GLOB_DTS, GLOB_EXCLUDE, GLOB_GRAPHQL, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LUA, GLOB_MARKDOWN, GLOB_MARKDOWN_BLOCKS, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_ROOT, GLOB_ROOT_SRC, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_XML, GLOB_YAML, StylisticConfigDefaults, ceaseNonsense, comments, isentinel as default, isentinel, defaultPluginRenaming, disables, eslintPlugin, flawless, gitignore, ignores, imports, isInAgentSession, isInEditorEnvironment, isInGitHooksOrLintStaged, javascript, jsdoc, jsonc, markdown, node, oxfmt, packageJson, perfectionist, pnpm, promise, react, roblox, sonarjs, sortGithubAction, sortPnpmWorkspace, sortRojoProject, sortTsconfig, spelling, stylistic, test, toml, typescript, unicorn, yaml };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isentinel/eslint-config",
3
- "version": "5.0.0-beta.1",
3
+ "version": "5.0.0-beta.10",
4
4
  "description": "iSentinel's ESLint config",
5
5
  "keywords": [
6
6
  "eslint-config",
@@ -81,7 +81,6 @@
81
81
  "eslint-plugin-package-json": "0.89.1",
82
82
  "eslint-plugin-perfectionist": "5.6.0",
83
83
  "eslint-plugin-pnpm": "1.5.0",
84
- "eslint-plugin-prettier": "5.5.5",
85
84
  "eslint-plugin-promise": "7.2.1",
86
85
  "eslint-plugin-roblox-ts": "1.4.0",
87
86
  "eslint-plugin-sentinel": "0.1.2",
@@ -96,7 +95,6 @@
96
95
  "local-pkg": "1.1.2",
97
96
  "oxfmt": "0.35.0",
98
97
  "prettier": "3.8.1",
99
- "prettier-plugin-jsdoc": "1.8.0",
100
98
  "toml-eslint-parser": "1.0.3",
101
99
  "yaml-eslint-parser": "2.0.0",
102
100
  "yargs": "18.0.0"
@@ -133,7 +131,7 @@
133
131
  "type-fest": "5.4.4",
134
132
  "typescript": "5.9.3",
135
133
  "unplugin-unused": "0.5.7",
136
- "@isentinel/eslint-config": "5.0.0-beta.1"
134
+ "@isentinel/eslint-config": "5.0.0-beta.10"
137
135
  },
138
136
  "peerDependencies": {
139
137
  "@vitest/eslint-plugin": "^1.6.4",